From 3b9a7c033f683c4e9bf61fadf10dcaedf2b24cc8 Mon Sep 17 00:00:00 2001 From: Ruben van de Ven Date: Fri, 7 Nov 2025 23:57:54 +0100 Subject: [PATCH] Dit begint ergens op te lijken (prep voor U? @ hof) --- EXPERIMENTS/config.json | 2 +- tests/stage_lines.ipynb | 783 ++++++++++++++++++++++++++++++++++++-- tests/track_history.ipynb | 776 +++++++++++++++++++++++++++++++++++++ trap/anomaly.py | 4 +- trap/lidar_tracker.py | 96 +++-- trap/lines.py | 402 ++++++++++++++++--- trap/prediction_server.py | 4 +- trap/process_data.py | 12 + trap/settings.py | 13 +- trap/stage.py | 107 ++++-- trap/utils.py | 6 + 11 files changed, 2058 insertions(+), 147 deletions(-) create mode 100644 tests/track_history.ipynb diff --git a/EXPERIMENTS/config.json b/EXPERIMENTS/config.json index da052d2..3a44a10 100644 --- a/EXPERIMENTS/config.json +++ b/EXPERIMENTS/config.json @@ -2,7 +2,7 @@ "batch_size": 512, "grad_clip": 1.0, "learning_rate_style": "exp", - "learning_rate": 0.0001, + "learning_rate": 0.001, "min_learning_rate": 1e-05, "learning_decay_rate": 0.9999, "prediction_horizon": 60, diff --git a/tests/stage_lines.ipynb b/tests/stage_lines.ipynb index d5788f1..a8af2f8 100644 --- a/tests/stage_lines.ipynb +++ b/tests/stage_lines.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "485919cd", "metadata": {}, "outputs": [], @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "53b68ede", "metadata": {}, "outputs": [ @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "998e73c6", "metadata": {}, "outputs": [ @@ -66,17 +66,11 @@ "name": "stderr", "output_type": "stream", "text": [ - "DEBUG:history:loaded 32 tracks\n", - "DEBUG:history:after filtering left with 23 tracks\n", + "DEBUG:history:loaded 846 tracks\n", + "DEBUG:history:after filtering left with 350 tracks\n", "ERROR:trap.base:WARNING, gap between frames 632 -> 322 is negative?\n", "ERROR:trap.base:WARNING, gap between frames 1003 -> 895 is negative?\n", - "DEBUG:history:interpolated 23 tracks\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "DEBUG:history:interpolated 350 tracks\n", "DEBUG:history:smoothed\n", "DEBUG:history:projected to world space\n", "DEBUG:history:built tree\n" @@ -86,7 +80,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loaded 23 tracks in 0.16869831085205078s\n" + "loaded 350 tracks in 1.5409131050109863s\n" ] } ], @@ -101,17 +95,17 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "cba8c9b0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -122,23 +116,549 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 5, "id": "122e3311", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:matplotlib.pyplot:Loaded backend module://matplotlib_inline.backend_inline version unknown.\n", + "DEBUG:matplotlib.pyplot:Loaded backend module://matplotlib_inline.backend_inline version unknown.\n", + "DEBUG:matplotlib.font_manager:findfont: Matching sans\\-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0.\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 1.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymBol.ttf', name='STIXSizeThreeSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymReg.ttf', name='STIXSizeTwoSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 0.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansDisplay.ttf', name='DejaVu Sans Display', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymReg.ttf', name='STIXSizeFourSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneral.ttf', name='STIXGeneral', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBolIta.ttf', name='STIXNonUnicode', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmtt10.ttf', name='cmtt10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralItalic.ttf', name='STIXGeneral', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniIta.ttf', name='STIXNonUnicode', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymBol.ttf', name='STIXSizeOneSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymBol.ttf', name='STIXSizeFourSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmex10.ttf', name='cmex10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Oblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 1.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBolIta.ttf', name='STIXGeneral', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmss10.ttf', name='cmss10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmb10.ttf', name='cmb10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmr10.ttf', name='cmr10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmsy10.ttf', name='cmsy10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBol.ttf', name='STIXGeneral', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFiveSymReg.ttf', name='STIXSizeFiveSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymReg.ttf', name='STIXSizeThreeSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmmi10.ttf', name='cmmi10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUni.ttf', name='STIXNonUnicode', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-BoldOblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 0.33499999999999996\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBol.ttf', name='STIXNonUnicode', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymReg.ttf', name='STIXSizeOneSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymBol.ttf', name='STIXSizeTwoSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerifDisplay.ttf', name='DejaVu Serif Display', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Bold.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-regular.otf', name='TeX Gyre Adventor', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-MediumItalic.ttf', name='Lato', style='italic', variant='normal', weight=500, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman5-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoslant10-regular.otf', name='Latin Modern Mono Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyredejavu-math.otf', name='TeX Gyre DejaVu Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonocaps10-regular.otf', name='Latin Modern Mono Caps', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansdemicond10-regular.otf', name='Latin Modern Sans Demi Cond', style='normal', variant='normal', weight=600, stretch='condensed', size='scalable')) = 10.44\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-italic.otf', name='TeX Gyre Cursor', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-bolditalic.otf', name='TeX Gyre Pagella', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans9-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-bold.otf', name='TeX Gyre Pagella', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoltcond10-regular.otf', name='Latin Modern Mono Light Cond', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Hairline.ttf', name='Lato', style='normal', variant='normal', weight=100, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant12-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-bolditalic.otf', name='TeX Gyre Bonum', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Bold.ttf', name='Quicksand', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant10-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Medium.ttf', name='Quicksand Medium', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-DemiItalic.otf', name='URW Bookman', style='italic', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-bolditalic.otf', name='TeX Gyre Adventor', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-boldoblique.otf', name='Latin Modern Mono Prop Light', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansdemicond10-oblique.otf', name='Latin Modern Sans Demi Cond', style='oblique', variant='normal', weight=600, stretch='condensed', size='scalable')) = 11.44\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-BoldItalic.ttf', name='Liberation Sans', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-BdIta.otf', name='C059', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-bold.otf', name='TeX Gyre Heros', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf', name='Droid Sans Fallback', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoprop10-oblique.otf', name='Latin Modern Mono Prop', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Light.ttf', name='Quicksand Light', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyrebonum-math.otf', name='TeX Gyre Bonum Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='condensed', size='scalable')) = 11.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Italic.ttf', name='Liberation Sans', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-HairlineItalic.ttf', name='Lato', style='italic', variant='normal', weight=100, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 10.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-LightItalic.otf', name='URW Bookman', style='italic', variant='normal', weight=300, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman6-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-oblique.otf', name='Latin Modern Mono Prop Light', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Oblique.otf', name='Nimbus Sans Narrow', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-regular.otf', name='TeX Gyre Schola', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Regular.otf', name='Nimbus Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans8-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-BoldOblique.otf', name='Nimbus Sans Narrow', style='oblique', variant='normal', weight=700, stretch='condensed', size='scalable')) = 11.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/Z003-MediumItalic.otf', name='Z003', style='italic', variant='normal', weight=500, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-bold.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyretermes-math.otf', name='TeX Gyre Termes Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant8-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-italic.otf', name='TeX Gyre Heros Cn', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 1.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-italic.otf', name='TeX Gyre Termes', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-bold.otf', name='Latin Modern Mono Prop Light', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-BoldItalic.ttf', name='Liberation Mono', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-bold.otf', name='Latin Modern Sans Quotation', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-bold.otf', name='TeX Gyre Termes', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrechorus-mediumitalic.otf', name='TeX Gyre Chorus', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant9-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-BoldItalic.otf', name='Nimbus Sans', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-bold.otf', name='TeX Gyre Adventor', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-BoldItalic.otf', name='Nimbus Mono PS', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Light.ttf', name='Lato', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans12-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-Demi.otf', name='URW Bookman', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Regular.otf', name='Nimbus Mono PS', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/StandardSymbolsPS.otf', name='Standard Symbols PS', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-SemiboldItalic.ttf', name='Lato', style='italic', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Black.ttf', name='Lato', style='normal', variant='normal', weight=900, stretch='normal', size='scalable')) = 10.525\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Roman.otf', name='P052', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Bold.otf', name='Cantarell', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-regular.otf', name='Latin Modern Sans Quotation', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-Light.otf', name='URW Bookman', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-boldoblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonocaps10-oblique.otf', name='Latin Modern Mono Caps', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandemi10-regular.otf', name='Latin Modern Roman Demi', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuMathTeXGyre.ttf', name='DejaVu Math TeX Gyre', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm-math/latinmodern-math.otf', name='Latin Modern Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoSansMono-Bold.ttf', name='Noto Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-bolditalic.otf', name='TeX Gyre Schola', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-ExtraBold.otf', name='Cantarell', style='normal', variant='normal', weight=800, stretch='normal', size='scalable')) = 10.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='condensed', size='scalable')) = 1.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono8-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-bold.otf', name='TeX Gyre Bonum', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-italic.otf', name='TeX Gyre Adventor', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Bold.ttf', name='Lato', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-bolditalic.otf', name='TeX Gyre Termes', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Bold.ttf', name='Liberation Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman6-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Bold.ttf', name='Liberation Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-bold.otf', name='Latin Modern Mono Light', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans12-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-BoldItalic.otf', name='P052', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Roman.otf', name='C059', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Italic.otf', name='P052', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-boldoblique.otf', name='Latin Modern Mono Light', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Bold.otf', name='Nimbus Sans Narrow', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 10.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-ThinItalic.ttf', name='Lato', style='italic', variant='normal', weight=200, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-bold.otf', name='TeX Gyre Heros Cn', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Italic.otf', name='C059', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans9-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-oblique.otf', name='Latin Modern Sans Quotation', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Medium.ttf', name='Lato', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Semibold.ttf', name='Lato', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/ancient-scripts/Symbola_hint.ttf', name='Symbola', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman5-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-HeavyItalic.ttf', name='Lato', style='italic', variant='normal', weight=800, stretch='normal', size='scalable')) = 11.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-bold.otf', name='TeX Gyre Cursor', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-italic.otf', name='TeX Gyre Heros', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono12-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans17-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandemi10-oblique.otf', name='Latin Modern Roman Demi', style='oblique', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Thin.ttf', name='Lato', style='normal', variant='normal', weight=200, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-DemiOblique.otf', name='URW Gothic', style='oblique', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-ExtraLight.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=200, stretch='normal', size='scalable')) = 0.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Italic.ttf', name='Lato', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Italic.otf', name='Nimbus Sans', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-bolditalic.otf', name='TeX Gyre Heros Cn', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Regular.ttf', name='Liberation Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-italic.otf', name='TeX Gyre Bonum', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 0.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Regular.ttf', name='Lato', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/D050000L.otf', name='D050000L', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Bold.ttf', name='Liberation Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-italic.otf', name='TeX Gyre Schola', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf', name='Noto Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Italic.ttf', name='Liberation Mono', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandunh10-regular.otf', name='Latin Modern Roman Dunhill', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-regular.otf', name='TeX Gyre Cursor', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-italic.otf', name='TeX Gyre Pagella', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono9-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandunh10-oblique.otf', name='Latin Modern Roman Dunhill', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Italic.ttf', name='Liberation Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-BoldItalic.otf', name='Nimbus Roman', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-regular.otf', name='Latin Modern Roman Caps', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman17-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-regular.otf', name='Latin Modern Mono Prop Light', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-oblique.otf', name='Latin Modern Mono Light', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono10-italic.otf', name='Latin Modern Mono', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-BoldItalic.ttf', name='Liberation Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Regular.otf', name='Cantarell', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-oblique.otf', name='Latin Modern Roman Caps', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Regular.ttf', name='Quicksand', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanunsl10-regular.otf', name='Latin Modern Roman Unslanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant10-bold.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-BoldItalic.ttf', name='Lato', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-BoldOblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-LightItalic.ttf', name='Lato', style='italic', variant='normal', weight=300, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Oblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Regular.ttf', name='Liberation Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans8-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bolditalic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-regular.otf', name='TeX Gyre Heros', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Bold.otf', name='Nimbus Mono PS', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Light.otf', name='Cantarell', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Heavy.ttf', name='Lato', style='normal', variant='normal', weight=800, stretch='normal', size='scalable')) = 10.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 1.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Bold.otf', name='Nimbus Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Bold.otf', name='C059', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 0.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono10-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf', name='Liberation Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', name='Noto Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-bold.otf', name='TeX Gyre Schola', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-boldoblique.otf', name='Latin Modern Sans Quotation', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Regular.otf', name='Nimbus Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-regular.otf', name='TeX Gyre Bonum', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-Book.otf', name='URW Gothic', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Bold.otf', name='P052', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-Demi.otf', name='URW Gothic', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoltcond10-oblique.otf', name='Latin Modern Mono Light Cond', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant17-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans17-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-BlackItalic.ttf', name='Lato', style='italic', variant='normal', weight=900, stretch='normal', size='scalable')) = 11.525\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-regular.otf', name='TeX Gyre Pagella', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoprop10-regular.otf', name='Latin Modern Mono Prop', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-regular.otf', name='TeX Gyre Termes', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/libreoffice/opens___.ttf', name='OpenSymbol', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Bold.otf', name='Nimbus Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Thin.otf', name='Cantarell', style='normal', variant='normal', weight=100, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 0.5349999999999999\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 0.33499999999999996\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-regular.otf', name='Latin Modern Mono Light', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-bolditalic.otf', name='TeX Gyre Heros', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Regular.otf', name='Nimbus Sans Narrow', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyrepagella-math.otf', name='TeX Gyre Pagella Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-BookOblique.otf', name='URW Gothic', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Italic.otf', name='Nimbus Mono PS', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-regular.otf', name='TeX Gyre Heros Cn', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-bolditalic.otf', name='TeX Gyre Cursor', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Italic.otf', name='Nimbus Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 1.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyreschola-math.otf', name='TeX Gyre Schola Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: Matching sans\\-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0 to DejaVu Sans ('/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf') with score of 0.050000.\n" + ] + }, { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 26, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:matplotlib.font_manager:findfont: Matching sans\\-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0.\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 1.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymBol.ttf', name='STIXSizeThreeSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymReg.ttf', name='STIXSizeTwoSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 0.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansDisplay.ttf', name='DejaVu Sans Display', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymReg.ttf', name='STIXSizeFourSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneral.ttf', name='STIXGeneral', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBolIta.ttf', name='STIXNonUnicode', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmtt10.ttf', name='cmtt10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralItalic.ttf', name='STIXGeneral', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniIta.ttf', name='STIXNonUnicode', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymBol.ttf', name='STIXSizeOneSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymBol.ttf', name='STIXSizeFourSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmex10.ttf', name='cmex10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Oblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 1.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBolIta.ttf', name='STIXGeneral', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmss10.ttf', name='cmss10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmb10.ttf', name='cmb10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmr10.ttf', name='cmr10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmsy10.ttf', name='cmsy10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBol.ttf', name='STIXGeneral', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFiveSymReg.ttf', name='STIXSizeFiveSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymReg.ttf', name='STIXSizeThreeSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmmi10.ttf', name='cmmi10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUni.ttf', name='STIXNonUnicode', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-BoldOblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 0.33499999999999996\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBol.ttf', name='STIXNonUnicode', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymReg.ttf', name='STIXSizeOneSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymBol.ttf', name='STIXSizeTwoSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerifDisplay.ttf', name='DejaVu Serif Display', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Bold.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-regular.otf', name='TeX Gyre Adventor', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-MediumItalic.ttf', name='Lato', style='italic', variant='normal', weight=500, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman5-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoslant10-regular.otf', name='Latin Modern Mono Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyredejavu-math.otf', name='TeX Gyre DejaVu Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonocaps10-regular.otf', name='Latin Modern Mono Caps', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansdemicond10-regular.otf', name='Latin Modern Sans Demi Cond', style='normal', variant='normal', weight=600, stretch='condensed', size='scalable')) = 10.44\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-italic.otf', name='TeX Gyre Cursor', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-bolditalic.otf', name='TeX Gyre Pagella', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans9-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-bold.otf', name='TeX Gyre Pagella', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoltcond10-regular.otf', name='Latin Modern Mono Light Cond', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Hairline.ttf', name='Lato', style='normal', variant='normal', weight=100, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant12-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-bolditalic.otf', name='TeX Gyre Bonum', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Bold.ttf', name='Quicksand', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant10-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Medium.ttf', name='Quicksand Medium', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-DemiItalic.otf', name='URW Bookman', style='italic', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-bolditalic.otf', name='TeX Gyre Adventor', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-boldoblique.otf', name='Latin Modern Mono Prop Light', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansdemicond10-oblique.otf', name='Latin Modern Sans Demi Cond', style='oblique', variant='normal', weight=600, stretch='condensed', size='scalable')) = 11.44\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-BoldItalic.ttf', name='Liberation Sans', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-BdIta.otf', name='C059', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-bold.otf', name='TeX Gyre Heros', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf', name='Droid Sans Fallback', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoprop10-oblique.otf', name='Latin Modern Mono Prop', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Light.ttf', name='Quicksand Light', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyrebonum-math.otf', name='TeX Gyre Bonum Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='condensed', size='scalable')) = 11.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Italic.ttf', name='Liberation Sans', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-HairlineItalic.ttf', name='Lato', style='italic', variant='normal', weight=100, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 10.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-LightItalic.otf', name='URW Bookman', style='italic', variant='normal', weight=300, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman6-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-oblique.otf', name='Latin Modern Mono Prop Light', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Oblique.otf', name='Nimbus Sans Narrow', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-regular.otf', name='TeX Gyre Schola', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Regular.otf', name='Nimbus Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans8-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-BoldOblique.otf', name='Nimbus Sans Narrow', style='oblique', variant='normal', weight=700, stretch='condensed', size='scalable')) = 11.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/Z003-MediumItalic.otf', name='Z003', style='italic', variant='normal', weight=500, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-bold.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyretermes-math.otf', name='TeX Gyre Termes Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant8-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-italic.otf', name='TeX Gyre Heros Cn', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 1.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-italic.otf', name='TeX Gyre Termes', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-bold.otf', name='Latin Modern Mono Prop Light', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-BoldItalic.ttf', name='Liberation Mono', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-bold.otf', name='Latin Modern Sans Quotation', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-bold.otf', name='TeX Gyre Termes', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrechorus-mediumitalic.otf', name='TeX Gyre Chorus', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant9-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-BoldItalic.otf', name='Nimbus Sans', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-bold.otf', name='TeX Gyre Adventor', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-BoldItalic.otf', name='Nimbus Mono PS', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Light.ttf', name='Lato', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans12-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-Demi.otf', name='URW Bookman', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Regular.otf', name='Nimbus Mono PS', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/StandardSymbolsPS.otf', name='Standard Symbols PS', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-SemiboldItalic.ttf', name='Lato', style='italic', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Black.ttf', name='Lato', style='normal', variant='normal', weight=900, stretch='normal', size='scalable')) = 10.525\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Roman.otf', name='P052', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Bold.otf', name='Cantarell', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-regular.otf', name='Latin Modern Sans Quotation', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-Light.otf', name='URW Bookman', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-boldoblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonocaps10-oblique.otf', name='Latin Modern Mono Caps', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandemi10-regular.otf', name='Latin Modern Roman Demi', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuMathTeXGyre.ttf', name='DejaVu Math TeX Gyre', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm-math/latinmodern-math.otf', name='Latin Modern Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoSansMono-Bold.ttf', name='Noto Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-bolditalic.otf', name='TeX Gyre Schola', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-ExtraBold.otf', name='Cantarell', style='normal', variant='normal', weight=800, stretch='normal', size='scalable')) = 10.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='condensed', size='scalable')) = 1.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono8-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-bold.otf', name='TeX Gyre Bonum', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-italic.otf', name='TeX Gyre Adventor', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Bold.ttf', name='Lato', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-bolditalic.otf', name='TeX Gyre Termes', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Bold.ttf', name='Liberation Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman6-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Bold.ttf', name='Liberation Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-bold.otf', name='Latin Modern Mono Light', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans12-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-BoldItalic.otf', name='P052', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Roman.otf', name='C059', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Italic.otf', name='P052', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-boldoblique.otf', name='Latin Modern Mono Light', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Bold.otf', name='Nimbus Sans Narrow', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 10.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-ThinItalic.ttf', name='Lato', style='italic', variant='normal', weight=200, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-bold.otf', name='TeX Gyre Heros Cn', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Italic.otf', name='C059', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans9-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-oblique.otf', name='Latin Modern Sans Quotation', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Medium.ttf', name='Lato', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Semibold.ttf', name='Lato', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/ancient-scripts/Symbola_hint.ttf', name='Symbola', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman5-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-HeavyItalic.ttf', name='Lato', style='italic', variant='normal', weight=800, stretch='normal', size='scalable')) = 11.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-bold.otf', name='TeX Gyre Cursor', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-italic.otf', name='TeX Gyre Heros', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono12-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans17-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandemi10-oblique.otf', name='Latin Modern Roman Demi', style='oblique', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Thin.ttf', name='Lato', style='normal', variant='normal', weight=200, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-DemiOblique.otf', name='URW Gothic', style='oblique', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-ExtraLight.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=200, stretch='normal', size='scalable')) = 0.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Italic.ttf', name='Lato', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Italic.otf', name='Nimbus Sans', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-bolditalic.otf', name='TeX Gyre Heros Cn', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Regular.ttf', name='Liberation Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-italic.otf', name='TeX Gyre Bonum', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 0.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Regular.ttf', name='Lato', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/D050000L.otf', name='D050000L', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Bold.ttf', name='Liberation Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-italic.otf', name='TeX Gyre Schola', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf', name='Noto Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Italic.ttf', name='Liberation Mono', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandunh10-regular.otf', name='Latin Modern Roman Dunhill', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-regular.otf', name='TeX Gyre Cursor', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-italic.otf', name='TeX Gyre Pagella', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono9-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandunh10-oblique.otf', name='Latin Modern Roman Dunhill', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Italic.ttf', name='Liberation Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-BoldItalic.otf', name='Nimbus Roman', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-regular.otf', name='Latin Modern Roman Caps', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman17-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-regular.otf', name='Latin Modern Mono Prop Light', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-oblique.otf', name='Latin Modern Mono Light', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono10-italic.otf', name='Latin Modern Mono', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-BoldItalic.ttf', name='Liberation Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Regular.otf', name='Cantarell', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-oblique.otf', name='Latin Modern Roman Caps', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Regular.ttf', name='Quicksand', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanunsl10-regular.otf', name='Latin Modern Roman Unslanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant10-bold.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-BoldItalic.ttf', name='Lato', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-BoldOblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-LightItalic.ttf', name='Lato', style='italic', variant='normal', weight=300, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Oblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Regular.ttf', name='Liberation Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans8-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bolditalic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-regular.otf', name='TeX Gyre Heros', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Bold.otf', name='Nimbus Mono PS', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Light.otf', name='Cantarell', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Heavy.ttf', name='Lato', style='normal', variant='normal', weight=800, stretch='normal', size='scalable')) = 10.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 1.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Bold.otf', name='Nimbus Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Bold.otf', name='C059', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 0.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono10-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf', name='Liberation Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', name='Noto Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-bold.otf', name='TeX Gyre Schola', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-boldoblique.otf', name='Latin Modern Sans Quotation', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Regular.otf', name='Nimbus Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-regular.otf', name='TeX Gyre Bonum', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-Book.otf', name='URW Gothic', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Bold.otf', name='P052', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-Demi.otf', name='URW Gothic', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoltcond10-oblique.otf', name='Latin Modern Mono Light Cond', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant17-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans17-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-BlackItalic.ttf', name='Lato', style='italic', variant='normal', weight=900, stretch='normal', size='scalable')) = 11.525\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-regular.otf', name='TeX Gyre Pagella', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoprop10-regular.otf', name='Latin Modern Mono Prop', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-regular.otf', name='TeX Gyre Termes', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/libreoffice/opens___.ttf', name='OpenSymbol', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Bold.otf', name='Nimbus Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Thin.otf', name='Cantarell', style='normal', variant='normal', weight=100, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 0.5349999999999999\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 0.33499999999999996\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-regular.otf', name='Latin Modern Mono Light', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-bolditalic.otf', name='TeX Gyre Heros', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Regular.otf', name='Nimbus Sans Narrow', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyrepagella-math.otf', name='TeX Gyre Pagella Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-BookOblique.otf', name='URW Gothic', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Italic.otf', name='Nimbus Mono PS', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-regular.otf', name='TeX Gyre Heros Cn', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-bolditalic.otf', name='TeX Gyre Cursor', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Italic.otf', name='Nimbus Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 1.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyreschola-math.otf', name='TeX Gyre Schola Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: Matching sans\\-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0 to DejaVu Sans ('/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf') with score of 0.050000.\n" + ] + }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -149,9 +669,12 @@ ], "source": [ "track = list(history.state.tracks.values())[3]\n", + "track = list(history.state.tracks.values())[0]\n", + "\n", "trajectory_crop = history.state.track_histories[track.track_id]\n", "trajectory_org = track.get_projected_history(camera=camera)\n", - "target_point = trajectory_org[len(trajectory_org)//2+90]\n", + "track_history_idx = len(trajectory_org)//2\n", + "target_point = trajectory_org[track_history_idx]\n", "\n", "import matplotlib.pyplot as plt # Visualization \n", "\n", @@ -172,7 +695,7 @@ { "data": { "text/plain": [ - "'2446 track points in the set'" + "'16469 track points in the set'" ] }, "execution_count": 6, @@ -184,15 +707,60 @@ "f\"{len(history.state.indexed_track_ids)} track points in the set\"" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5c3b69f", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": 7, + "id": "993477d4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3 14\n", + "4 15\n" + ] + }, + { + "data": { + "image/png": "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3xK5CQYfRETubMYMo0tAlGVsdiEiIiKncljwMWfOHJQtWxb58uVDgwYNsGvXLkddioiIiNyIQ4KP77//HsOHD8e4ceOwb98+hIeHo02bNrh69aojLkdERERuxCHBx4cffohXX30Vffr0QdWqVTFv3jzkz58fX331lSMuR0RERG7E7sFHYmIi9u7di1atWukX8fBAq1atsH379lTHJyQkICYmxupBREREuZfdg4/r168jJSUFJUuWtHq+ZMmSiIyMTHV8REQEAgMD7z9CQ0PtXSQiIiJyIYb3dhk9ejSio6PvPy5cuGB0kYiIiMiB7D7OR7FixeDp6YmoqCir56OiohCUxiA4vr6+8PX1tXcxiIiIyEXZvebDx8cHderUwdq1a+8/ZzabsXbtWjRs2NDelyMiIiI345ARTocPH45evXqhbt26qF+/PmbNmoXY2Fj06dPHEZcjIiIiN+KQ4KNbt264du0axo4di8jISNSsWRN//vlnqiRUIiIiyntMSilldCEsxcTEIDAwENHR0QgICDC6OERERJQJWbl/G97bhYiIiPIWl5vVVquI4WBjRERE7kO7b2emQcXlgo87d+4AAAcbIyIickN37txBYGBghse4XM6H2WzG5cuX4e/vD5PJZHRxDBcTE4PQ0FBcuHCBOTDp4HuUOXyfHozv0YPxPcqcvPg+KaVw584dBAcHw8Mj46wOl6v58PDwQEhIiNHFcDkBAQF55gOcXXyPMofv04PxPXowvkeZk9fepwfVeGiYcEpEREROxeCDiIiInIrBh4vz9fXFuHHjOP9NBvgeZQ7fpwfje/RgfI8yh+9Txlwu4ZSIiIhyN9Z8EBERkVMx+CAiIiKnYvBBRERETsXgg4iIiJyKwYcbKVu2LEwmk9VjypQpRhfLcHPmzEHZsmWRL18+NGjQALt27TK6SC5j/PjxqT4zlStXNrpYhtu0aRPat2+P4OBgmEwm/Pzzz1b7lVIYO3YsSpUqBT8/P7Rq1QonTpwwprAGedB71Lt371SfrbZt2xpTWINERESgXr168Pf3R4kSJfDss8/i2LFjVsfEx8djwIABKFq0KAoWLIjOnTsjKirKoBK7DgYfbub999/HlStX7j8GDRpkdJEM9f3332P48OEYN24c9u3bh/DwcLRp0wZXr141umgu45FHHrH6zGzZssXoIhkuNjYW4eHhmDNn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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "for i, track in enumerate(history.state.tracks.values()):\n", + " track_history = track.get_projected_history(camera=camera)\n", + " distances = np.sqrt(np.sum(np.diff(track_history, axis=0)**2, axis=1))\n", + " # print(trajectory_org)\n", + " # print(distances)\n", + " if any(distances > 3):\n", + " print(i, track.track_id)\n", + " plt.plot(track_history[:,0], track_history[:,1], c='red')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, "id": "d22c1f35", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAFnCAYAAAAGxCvgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABsg0lEQVR4nO3dd5ykVZXw8d99QqXu6pwmz5BzhiEqKgioCIoCroFF14i6iJFVQEyIuC4GXgy7K7gqKipBdHFxJClxhiBxSMPk6e7pVN0Vn3DfP56qp6t6ehJ0dfVUn+986jMVnqq6Harq9Lnnnqu01hohhBBCiGli1HoAQgghhJhdJPgQQgghxLSS4EMIIYQQ00qCDyGEEEJMKwk+hBBCCDGtJPgQQgghxLSS4EMIIYQQ00qCDyGEEEJMK6vWA5jI9302bNhAMplEKVXr4QghhBBiB2itGR0dZe7cuRjGtnMbMy742LBhAwsWLKj1MIQQQgjxCqxdu5b58+dv85gZF3wkk0kgGHxTU1ONRyOEEEKIHZFKpViwYEH4Ob4tMy74KE21NDU1SfAhhBBC7GJ2pGRCCk6FEEIIMa0k+BBCCCHEtJLgQwghhBDTSoIPIYQQQkwrCT6EEEIIMa0k+BBCCCHEtJLgQwghhBDTSoIPIYQQQkwrCT6EEEIIMa1mXIfTGcv3oP9eyG6E+BzoPAEMs9ajEmLG01rLJpFCiAoSfGyH53uY62+BFf8KmXXjNyTmw+HfhQVvr93ghJjBPN9jODeM67t0N3bXejhCiBlEpl22wfVdep//KX13nsXo2Dq0Lrsxsw7ufQes/X3NxifETGYog4JXIONkWJdaR1+6j7HCGJ7v1XpoQogak8zHNjhODv5xKS4w6kNBQZsB4xlkDSsuhHlnyBSMEBMopXA8h6HcEBEzgq99fO3T3dDNnOSc8Li8myftpHF9l8ZIIwk7UcNRCyGmg2Q+tiE+vJyewkZaDHhmw+6c+eNrOOE7N1YelFkb1IIIISqMFcZwfAfHcxjJjaC1xtc+qXwK13fxtc9gdpCB7AA5N4fruwznhnE8p9ZDF0JUmWQ+tiWzHkNBQkF7bIy/vXA0FBroT7XS2TRUcZwQYlzWyZLKpzCUged7xO04LbEWBrIDZN0sBbfAaGEUT3soFAk7Qd7L4/ouWTeLbdq1/hKEEFUkmY9tyfeHZ/fs6GWPrpfAcrj58VMrj9u0bJoHJsTMlXfzDOWGcDyHglegKdZExIzQFm/DVCaZQoZNY5vwtIepTDoSHTTHmmmMNAJI5kOIWUCCj22JdoZnYwpO3e8uMAr8/KG3VR639sZgKa4Qs5zruwxmB/F8j6ybJRlN0hhppDXWSsbJ4PouaSeN4zvErBidDZ1hlsNUQd2Up+W1JES9k+BjWxLzwrOmgvcccQsA96w6hJWblowf547BU1+f7tEJMaP42mcgM4CnPcYKYyQjSWzDZk5jUFy6PrWenJfDMiyiVpS2eBuGGn8LMotF27IaRoj6J8HHtnSeAJG28OJ+3es4fo8HwCpw+R8/XXnsM1dJ9kPMWlprBrODuL5LKp8iGU1iGRZt8TZsw2YoN8RwfhilFR2JjklXtJQCEY3e4jYhRH2R4GNbDBP2/tfwYkzBp0/6IRgFfrX8LTyxbu/xYyX7IWaxscIYBa8AQFu8DcuwaE+0YxomhmEQs2K4XrCUtjnWjNZbBhiK8S6ovvanbexCiOknwcf27P9FMINCOFvBMUue4HV734s2PD7+669XNh6T7IeYpRojjcSsGB2JDrobummPt2MZ44vpElaC1ngrESuCZViTZjeUUmH2Q4IPIeqbBB/bY5iw32fDizEFX3nrVdjRUe55/hhuefyN48dK9kPMUkop2uJtRK0oSqktlsq6votpmGFAMlnmA8anXqTuQ4j6JsHHjijLfsQU7Na5jvcd+wsAvnzbpyX7IcQ2OJ4TbiwXMSNorbda1yErXoSYHST42BFl2Y+ICr5pn3j9T4jFhnh83QHc9sRJ48dK9kOIChkng2mYJOwEpjLD2pDJplZKGRPp9SFEfZPgY0cVsx9KQVxBZ9Mw5x57AwBXL/uXymNXfk+yH0IQBBgZJwNAa6wVpRSu7wKTT63YRhB85L389A1SCDHtJPjYUWXZj4bid+0DJ1wPRp6/rjyBJ9fvNX5sYUD2exGCIOuh0ViGRVO0CRjPeJQyIOViVgxFEKDk3Ny0jlUIMX0k+NgZxeyHVcx+7Na5jtcfeDsAVy/7YOWxa2+qwQCFmDm01qQLaSBYDRO1okDQTKw8I1JOKUVDpAGA4dywFJ4KUack+NgZZdmPpAEKOP+E/wEjzy8fPpPBsabxY5/7Aaz+bW3GKcQMkHNzeNrDUAZxK46hDGzDJmbFKHgFHN+ZNPtR6ozqa5/Nmc0SgAhRhyT42Fn7fxGsJiwFDQpet/f97D7/cbJOnP9Y9qGyA334+zthzY01G6oQtTRWGAOgwW4IV7tErSiGMjCKbz2lzEi50rJdy7DwtCcBiBB1SIKPnWWYsPv7AWg0gj1fPnriT8FO8+07PlK55wvA386Bf1wuBahiVsm7eRzfQTE+jQJBTQeM7+OSc3OTrnoxDTNsVOZpj4HsgAQgQtSRnQ4+7rnnHk4//XTmzp2LUoqbb755q8d+5CMfQSnF1Vdf/SqGOAPNPwMAQ0GzAeceeStH7XUPOd/kAz/7DrlCeYMlDU9+GX7TBCv+FXrvkkBE1L1S1iNhJyo2j4uYEQxlYBpm2O9jstoPGA9ATGWGu+VK51Mh6sNOBx/pdJqDDz6Ya665ZpvH3XTTTTzwwAPMnTv3FQ9uxuo8ARLzAYgbkDDgyrd/jWjjJv6+6jDe+v+uJ5uPVN7HzwRLcJe9Dn7fBU98RYIQUZdc3w2XypZnPUqiZlB4WgpKJpt6KTENk45EB4YycHxHpmCEqBM7HXycdtppfO1rX+Ntb3vbVo9Zv349n/jEJ/jFL36BbdtbPW6XZZhw+HfDiy0G7N+9mp+879NEkxu547mjOfyKP7PsmeMmv39hEJ64DH7bJjUhou6Ush5xK16xv0tJ3I4DwUZyhjLwtLfNZbWlAKSUAdmc2Rz2ChFC7JqmvObD933e+9738tnPfpb9999/qh9+5ljwdjj+N6BMlIJ2E07Z5z5++s+fpLl1Nc+MdHDSNddz1Ddv5bvL3k9/qnXLx3BT8Lez4dHPTf/4hagCz/fIOllg8qwHBJkPhcLHD5uKpfKpbT6uZVh0JDqwDRtPewxlh7a6P4wQYuab8uDjyiuvxLIsPvnJT+7Q8fl8nlQqVXHaZSx8Jxz7KyCo/+g04U17P8Q9nzmTs4/8LUQHebhvARf+/ovM/cKjvPkH1/PAi4dt+TjPXAUv/3qaBy/E1Mu6WTSaiBkhYkYmPUYpFRaelnaydX03DFq2xjRM2uJt4RRM1t328UKImWtKg48VK1bw3e9+l+uuuy5cWrc9V1xxBc3NzeFpwYIFUzmk6lv0jooMSLMJB7SM8F/nXs7yL7yFz5/yPfZetBzXLPCnJ0/imKv+wNk/vpaRdGPl49z3LglAxC6v1LejFFxsTSkrknfzJKwEAKOF0e1mM0zDpDESvHZK0ztCiF3PlAYf9957L319fSxcuBDLsrAsi9WrV/PpT3+axYsXT3qfiy++mJGRkfC0du3aqRzS9CjLgECQBWk04LCOPv7tpJ/y14vO4f8+82becdSNgM+Nj7yVQ7/xfyx/+cCyB9Fw37nwt3OlEFXsskq1GKXplK2JmBEsw0KjK7Ifo4XR7T5Hwk6ELdgna1ImhJj5pjT4eO9738s//vEPHnvssfA0d+5cPvvZz/LnP/950vtEo1GampoqTrukRe+AE34Hdlt4lVLQZEKjgv3nPc/33nchyz59JnObN7JqYBHHf/tmrrnrPLQGX0PGh7FVv2bklwnG7nwbhXW347ny5ip2HaXMxY5kPhvsIPuRcTI0R5uBIJuxvekXQxlhZmV7xwohZqYtS9G3Y2xsjBdeeCG8vGrVKh577DHa2tpYuHAh7e3tFcfbtk1PTw977733qx/tTLfg7TDvDLjv3bBmfAqlyQTXg5yG/ZasYMW/ncR7f3otf3n2BD7+20v4y8sHcNnbLiMay5DX4FOAVTejVt1MwoqT3OdjNBzwb8SjjVudRxdiJiitXtmRfhwJO8FoYRRPB5m+BruBtJNmODdcURcymbgdJ+tmybpZmmmesvELIabHTmc+li9fzqGHHsqhhx4KwEUXXcShhx7KpZdeOuWD2yUZJhz/KzjuRoh2hle3GmADPmA2DPPHj7+Lz51xOSo2yM3PLuW11/yUnz10BqaGiIKoCrqnZtwsvU/+O72/nU//8ovpH90ku32KGavUuXRHlsIqpcLsx2hhlOZYM3ErjkYzlB0i7+a3et+oGbRp97UvUy9C7IKUnmHr1VKpFM3NzYyMjOy6UzAlvgf990JmPbz4X3i9d9LvQUFD2ocmA/764qF88ZbPsbZ/d3Aa2LdjDd95+zc5df+7yfkw6sOYhpwProbmSBxrr48R2e+ztCTaJ+2jIEStjOZHGS2MErfitMYnWV4+ga99esd60Wja4m3ErBiD2UFybg5DGXQkOrb6Oz6cGybjZGiwG2iOSfZDiFrbmc9vCT6m08u/JvO3c3m+AB5BFqTTAO0Z/M+95/PtP32GVC74mk/c6+9c+bavc9SSx8n6kPLB0ZDRwVxZzG5EHf7vNC55F42Rxh1eXSRENRW8ApszmzGUQU9jzw7dJ5VPMVYYwzZsOhs60VozkB2g4BWwDZuORMekv985N8dgdnCnnksIUT078/ktG8tNI2/hO0gd/kOazaDAFA1DPsRtny+d/F88/5Xj+ODxP8cyHO567jiWXvknzvrhj1nTt4ROE2JGsIrGVlBwxvAf/DCjfzmVzc/+EGfDX2SVjKi50t4tOzMd0hhpRKFwfIe8mw93tS3189jaktryqZdtTdEIIWYeCT6m0VBuCH/+6ST2+hhdZlDbETeCLEivB1bDIP/+T5/n0Utfw9sPvRWA3z/2Zvb/yp186H+uopDqorFYCxIxgsyJ3nwfzsMfY/NfTmbsxk7ZM0bUXKlQdEdrkwxlkLCDXh+lQMNQRsUKmMn2cykvSpWGY0LsWiT4mCZjhTEKXiHYz+Kgy7GW/oieaANzTTAJAomcDmo82jrW8P0PfJQ/f+4kXrPfn/E0/Nd9/8Qel97H127+ImauAUUQhCiCH6IGUvkhNj92Ge6NrbJnjKiZV7IMttQ4LO/lw4xJ3I4TNaNo9FazH6WgJetkpd26ELsQqfmYBo4X7Map0cSsWPgXYWesDfvZb6Gf/haOm8bRjJ/K7n/3c0dxxR8/zRMvLQVt0xof4oxD/8jrD/4jx+15H7GIiwl4GigGJE0GNCw+B479RbACR4hporWmN92Lr33a4+1EregO3a9UQBo1o7QngiX7eTfPQHYAhaKnsWfS2o++dB+u79ISawmDESHE9JOC0xmm4BUYzA4SMSM02A0M54aJ23GaosWvz/fgqa8He7y4wV94vg5WxWSLJ63h1sdP5lt//Awvb9yfIMTQxJMbOOXA/+Mjr/kZB897DlSQRYFguW6LlcBcfDb0nASJedB5ggQj9cj3oO8u2PRXyKyB+HyIdkC8pyY/95HcCGknTcyK0RZv2/4dCDal6033AtCR6Ah72pSCi9JqmInGCmOk8ikiZoSORMfUfRFCiJ0iwccMVGq6ZChj610gSx8gz/8Q1t8GfpAh8XSw2iWrwfUM/vrMCdz5+Ju4/clT6BvtBDML0VFet8/dfOm077PfnBeDgtbyLEhpgi3SBnv/K+z/RQlCZrrSUu3sRojP2TKAKN2+9mZ48SfgZbb+WFYS5pwCe3wEuk+c/GdfvjQ81wv5AVAGdJ249ftsheM59Gf6Aehp7MFQOzbDW8p+lAcSpeuSkSTJaHLLYZct1+1MdGKb227tLoSoDgk+6kEpG/L0t8BLA0GvjxE/KFAFiGt4bNVRfO8vH+Lmf5wEsTEwM7xx33v50Gt/xhGLHscuvudHFLQYYJXiHaMBFr1TMiIz1erfwvKPQb5//DorCXNOhuQ+kF4L628Gd/t7oWzBaICFZ0FifnDZboGBB2DTHVt/vNLvS/froTAAkfZgbPmB4PZIG8S6gtuinZCYx+aGfSloj6ZoU1jTsT2e79GX7qvo+1HKbGyrd8hQdoism93h/iJCiKknwUc98b2Kdu1+sSg1XfypGQTLb19ctzf/duu/8adnjoPIGBgei9tX89ZD/shZh/2RPTo2AcE+M0kj2Hemgt0ES94HjbuHHx4SkEyjCQ3p6LvzFT1Mf6qVv790JBtHutm982WOXvwITYn0FA92x2TMJMPz34k17y10LXzrDv8ulRqVmcqkq6GLvJdnMDsY9gGZTCnTolB0NXSFnVaFENNHgo96tPq38OAHwE0BQT3IsAelJtYGkFDw3Lp9+c6yj/K7f7yOguGC8kF5HLbbg7zvqN/ztgPvJGpCsxH0Ddkmuwl2+2eY/zYJRKqllOFa+V0oDL6ih3A9k/975jX8/MGz+N2jb6Lgjhd4xu0sZx5yOxe+/iccteTxHXo8zzfYMNxFW2KYhtgrb+WvdbCE3Afaoklie5y/Q79LWmv60n142iMZSRKzYvRn+rfbTGxzZjMFr7DV6RkhRHVJ8FGvJnxQ6WIx6mjZVAwEHVBz2QZ+/+hb+OUjb+LhtfsBCswCPe2reM/ht3HeEbcyJ5mmqdi0bLukVmTq7GCtRl+qjZ898E5e2ryQ7uRmzj7iVvad82LwEL7irueO4YaHz+Smx05lID2+oeNuHS+zoHUDL/QtZv3I3PD61+39N95/zK858+D/pTE+vgxWa3jgxcP4/WNv4vanT+S5vt3CAKYlPsxxuz/Myfvew6n738nePat26ktNecH2AFEF7aVfm2gHHPn/YOE7t3q/rJNlKDeEImg4NpANpne2VT9Suo90PBWiNiT4qHeTpOhzxamY/CQ/zZc39/CfD72NGx8/mbFcEswcRDIc0LGWI3pe4ui5qzlh/tPs0/MyhrGdXwcjBvPesu3CRbGl8oBj1XXgjEx6WK5g879PvZ7r7juHPz31ely/snhy/zlP093Sy5Mb96RvrL2Y2fJpiQ9x2gHLeNfSmzh2txUYwWIo7n/pcH5893nc8tip4EdBWxjKZa+ul+hMDuJ6Ji9sXkz/6MTpDJ/J2gC1Nwyye+fLtCZGiJgFLLMAsWEwHWxtEtUm3Y3D7NaxjqWLH2H/+U8zUHyL6TLLao4A9vk0HPbtrX7LSnu82IaNr3087W11xQu88iW+QoipIcHHbFM2JeMXA5CCDqZkXF3shAqksxH+59G38LMVb2L10BywM2AWwItAtoW428CBbb0cMn8lhy58ksMX/IOD5j9N1N7KDqWzvWh1stUhMF58WSrITD0Lvcu2GnAMpZPc/Nhp3PL4Kdzx7AlknBgYLhgu+819imP3eJCV/Yu598UjCNYvBRLRMU7e52+cecjtnLjn34nYW9/G/vne+fz8obfxx6fewMaheeBboC3wTdAm8WiaE/e8n9MO+AtLd1vOwva1DOcaeKZ3N+567hj+9uKRPLruQLRrgw7ug2+BmQejmHdTHigdBEQAboTuaI5zj/4N/3Lif7OgcZTmib8ee18Eh//7pGP2fI/+TH8QePgepmHSGGkcX6I+idISX9lsTojpJ8HHbDRJr5CKm3VxM7vi/0/2zue254/ikd6FPDPYxerhOXiFBBSaYHQe5FoAk2RslLMP+wMfe+11HLboqW2PYTZMzZQvh97451e22qTo8TV785273s9vHj2NnGeD6YJy6Wjq47T97+RdR9zMwQueDY/fNNzO3188itFcE7t1rOH4JctpiDoYBAGmV/zZusX/vWIAWvChQNC8zvVh42gbK/t2YzTbgFaazuY+9ul6nljEQxGEN0qNhzml67J5m5c3L2Lt0Dyy+TiOH0G7UXDj2H6EtFEg7ymGMy28PDCfZ/p2J19IgHJJNvZz6et+xoWH34k1MaGyjQCkNJWSdbJh8LGtXh6lzea2VZwqhKgOCT5ms50sYHQ0jHiwJg8P9y3k2b7FvNS7Oy+vP5AXXz6adGou6CD1/9o97+Oik37M6QfdseVqmXJGAvb8l/ooVC3PbmxaBmtvnDS42xGOhrGCwS1PnMSP7juXB1YfHN62uH0Np+53F6ftv4zDFj1JpFiLY6mg/X7pf3RZIEEQWGQJgkqf8QCz/HzpBW6U3eYyHpygy/MpYKjg2FL7/lIL/1IGzdfjGbXSSRXHFCku57aAQsFk2bOv5b/vezfr0gkwfM7c+0G+f9o1tMU84qps1dWCs+G4X076uzKcG2Y0P8pgdpD2RDvzkvO2uotzqVGZQjEnOWdnfjxCiFdJgg+x0x+aroYxD1a7MOgH0za2hmdXHcXN9/0Td/zjzeAFrav36nqB9xz1e96z9Hcs6Vy37XHYrTD/jKA/xMS+EDXqvjmpyaZQtjNdstWH8hWOZ+JrTV5rNucaeXDt/tz6jzfy56dey0iuNB3g8Ya97+Mjx/+Kk/d+gIga/+Aufbbq4hRavnhyCH5WueLJLb56FcH9TAW2GcXofC3KbsDf+L/g5VC6GEwUgxgbsIzgPrYGjCCwUMXmdMVNl4NmdZRdpjIAyWhI++OrriJAovhYTvH2jKO4+u738runXgtehD3jef773C+zZ+c6Go1glZZSgBGH/T4HB1xS8fugtaY/08/G0Y2YhsmebXtutZ5Da83GsY0AzGmcs9UgRQgx9ST4EFvawYyIp2HIg/Vu8H8BiCsYG+rhV38/jxvvfw/Z7Hi77KMXL+ddR93Mu464mc6moVc2tlKA8kprR0pTIb13gfa3rLmAoJGWMzz5+e012JqE5xvc/dzR3PjIW1ix+iBeHpzPWK6BvG/gKx/sHBgTt5RX4Nm0xUY5+4ib+ejxP2dJ14bSLWGGoRRclIINGJ8uyxejAEsFmRETiCmI2HGMJe/FnXMabusRuGg87WFqMAYeQL388+D7403e86OUXbEA00pgzX8blpfG7P0Lytt2pkcXV1wN+ePBUKNR/FqAjcXI5PfPHcK/3/MucplO4ukuvn36f3DmIcvCXjUNYRASg2N/VrEaxvEcXhh8gaybpaexh7nJuWzNhtHge7oznVWFEK+eBB9i63Zw1YWjYcCDPjfoJ5In+AvVLCT462Nv5baHzub+l5aGx5uGwwl7PMQZB/+Zsw79IwvaNr3yMdqtMO/08Q6ckwUTpet673xVUyE7w/VMlj17HDeuOJ1bnzi5bIWID1Zu8oDDt8GN0tMwxGv3vo8zj/g9x+51H5ZZWRzqFwOOrF+5qSBWErP7dUS6jiHijBL1UhgoYrF24n6aqBlBd76GTNtRZLw8nq7cet5QxvhJa9TAA/jp9fi5PnRhEF9rfCsJTipopd5xDHQeOx78+R7W0HKsXB+WM4QV7cByhrFinRiFgYqfhzu2isEXf4brjKIIeskkDFjrFHds9uD+gVa+fef7eXnVUnCaOH2/u/jKm75HV0MGG2gtXxGzsHJjxIHMAKtHVmMbNnt37B3u/VJOMh9C1I4EH2LHlE815Pth7CVY9bOKgCTnw2YvyIKUMiGNRvDB4oz0cMvyd/Cb5Wfy5IZ9Kx76oHlPcfjCJ9i7+0W6kpvpTA7QldxMV3IzPU19xCIOM53vK57rXcJfnn0Ndzz9Gu56/hhSudLvpE9jYz8nH3AHr9nnHvboXE1LYpiI6dBoF2g0PeJKYyqFaebxInlyZa80iyBz4RQDjkzZqiTajiSy6GyiDfOJdp2AaUUwlIFpmETMCDErhqEMXN9lND9K1h3v2WEog5gVI2JGiJrRHer06Wsf13dxfRfP98Lzru+i2frbg6EMbMPGMiwiZgTbtDE1DK37E7m1t8Ka39DgjRIBRov1JRsL8HIB/vv+c/nTfeeBm6A9Pswlp3+LMw/4e7gNQLyUsLCa4Oj/hIXvxNc+KzevJOtm6Up0Mbdp7haZDV/7bBoLAt9tZUeEEFNPgg/xyk1SK6KdMTLFTMiQB/1ekKZvNKDNDP5afXnTbtz66Onc9o9TWLHm4O09CXt0vswh85/m0AVPcPiif3D04kdobpia7IXWsGmkk+f7l/BS3yI2jHTjeDaub+L5JkppDOVjFP8veDaZQpxMIc5gupVNqU56Ux2sG55L1olXjLs52cvJB97Bmw7+X07c6+9E7SDTYBN8YMZVUFtRGseYhjF/vOizQQUZpAKVtRIAVrSdxBH/QWK3d29zusDzPVL5VEXQUdoxOWbFpvSv/YnBSBikTMiwlBjKIGpGKXgFCk4Wc2g5xnM/pHHzMqIEUzH/yAfN8V5YfShf+s03WZvqBFxOPuwPXHrqd1nUlKLJoHJZbjELMpgbYd3oOmzDpruxe4sdc8t3xpXgQ4jpJcGHmDplS3h9Z4wxP5iG6fWCTe4iCtoMaCqmy22gf7iLB184hsfXHMyagQVsTrexeayNzelWBtMteBMaZxWfiD07V3H4oic4ctFjLF3yCPv2PE9rQwqlih/kuQR9ox30pTrYmOpiY6qb3lQHfaMdbB5tp3+snd7RdtYMzp8QNLxytpXjoAWPc8K+d/Gafe/m8IVPhFMmkwUcEIw1U6yDKE2uRBU0FYOOsbKOtMpKEt/tn0gsPItIz+u3Wevi+R5jhTHSznjdRsyKkYwkp30nV601ru/i+A6O54T/l2dK8m6erJvFMixiT1+Fteo/MYF+NwhkG03o9my+cdvnufa+s8FyaG7ewKdP/Q7vOvhOOq0JAYjVROHIH7Kx9ViGskN0NHTQFm8jYSfCQ2S1ixC1I8GHmHpl/S3cDbeTKoyFmRCnWAAZB+xioWGpT4RFEKDEVPABHFOwabibR9YczPI1B/Lo2gN4dM0BFW3Ay9lmgaiVJ+9Gcbwt5/i3MWDmNW9icfs65rT0ErUKmMrDUMHHo9YKHwNfG0QMh0Q0S8LO0poYZm5zL50tvXS2rGNux8sYZfUZWws4IFiVkvGDv+pLLyoTaComMUZLmQ4ribn4HBoXvp3EnJNRprXtr0T7QdBRSIcf7lEzSlO0aUZtH6+1xvEd8m6enJvD8R201uTcHFk3i//0t4m9fD0AmxzIAR0GtFvw+MsHcdGNl/Ni/25gj3Hsvsu4/E3f5fD2AVonfHv6lnyUkb0+hWmYxK14xUZyEnwIUTsSfIjqKk7N5EdfZvC5HzPYez95HQQdEYLAo7QkdCJFUOuQKK5uSBY/yHtHOrh/1eE8uOowlq85iMfWHsBAum2L+0esPO2JITqTA3QnN9PVtJmuxs0Vl3fvfJkl7Wt2uq6ktFdOpri8taS0aV/CmNAenCDwyqkEmTlvxosV9xOJtGDFumn0RzHyg4x6BRyrCWJdGIm5JOecRCKa3O70iK990oU0Y4WxMOiImBGaok2TFlvONL72ybk5cm6OvBsUw7prbsV95DMMOllSfvB9TRrQYoLjWPzHso/w/+46D990iCc38skTr+Mzx/yBjrIAZLMHhd0+hHfAlzANk6gZpT3RHj6n1HwIURsSfIhplXnxFww99Eny+UEcHQQXTcUMSF4HK2UcHRSvurBFCaMBNBjQWPwgihT7T+QKUXpTnWSdGDErT1dyMw2x7LYbnO0kXVzSmi2uNikfW6xYn1Ha/VcXiyYdDXmzkULXiXiL3hOuDlEo4nachJ3AVCbDuWHyXh4AhaIx0khjpPEVBR22YdMUbdpl9yvxtR9Ow+QLGdIPfpjhtX9i1A8KTG0j+J2xFDy1fk8+/euv8cTmRRAd5sjFK/jFWd9iz5agEHrQC35WjXtdQHr/L6LR4Z4v5atdZKmtENNLgg8x7bTnMrbh/xhLvYTu+xts+jNxd5gmo3J6wi2u7hgrboSXnrAjr2J8miahgg+lUvMsi/HOmwZBJ86d5ekgeHAIshuFCQGHRTCtkig22iod42hwrSR60TthzmnQvjQMOKJWlLgVD4s904U0qXwKjUahSNgJktHkdj8IJ5tesQ2bZDS51c3UdkVaa7JOlrXP/ITRRz6H6xWIFIPVuAKtwNJw3d3v58o734tr5Znb1Msd51/Efh0DDHlBsNhkgL/HBYzt/2+YyqSroQulFJvGNuFrn85E54yalhKi3knwIWrG8z1GC6Nk8qMw8CAqu4kGf4zGxJzKvhCZ9bDhD1AYJOuPb72e0+OtvxVBnUipVmRiwqC8MdfE/UhKgvqOYqvxCbeVWo2rYrYmYoBlJnDnnU4h2o2vNURagn4i8R5oX4ph2tiGTcSMhKdSJsPzvYpsR8SM0Bpr3e5y19kSdEyUcTIMpTeTe/rb5FdeS0G7aCBKkC1TwNr1e/GBG75Bf76Rxc29/Plf/pXu5DBpHQSIzQb0Lfkw3oGX0hRtojHSyObMZgpegdZYK3F7agqPhRDbJ8GHqDnHc0jlU+EHsaEMGiONNNgN49MOE5f1rr8FJx8EI9niniWlzdK8Yk2JVZb1KAUapdbf2kxA5wno1sPQkfagk2thCB+NZzbgO8Guv8pOYnppLBSRaCuWNzZpgy2FwjbHAw3bsLcaSGSdLCP5EXzto1A0RZtoiDRs83tUWr2ScTKzKugoN5gdJOfmMDWYD3+U0XW3kvODn3epXdv6zXP5559fxWA2yV7JFL//4EdoSYxhK+iygt+VoSUfQh30Zbobu0nlU2ScDMlIkmQ0WdOvT4jZRIIPMWPk3TypfArHD4o/TWXSFG2a/C/SCfurONk+sp5LzmzEjbRBYQDyQQt3bTfjR9uDLp2RNvxYF7QdiZ4wtaGUQqHCJl0Tpz5K3T9NZYbHmMrELmY4dqQ+Yzg3TM7NAUG2oyXWgmVsfQXLZEFHxIyQjCR32ZqOV8rXPn3pPnzt02A3wNqbST94AdpLk/WDTFgBeLlvIef/8uukCg3s1zTIf5//ceYncsyxgkC03wVnj4+QPPxbGMpgJD9SUYgqhKi+qgYf99xzD1dddRUrVqxg48aN3HTTTZx55pkAOI7Dl770Jf70pz/x0ksv0dzczEknncQ3v/lN5s7dscpzCT7qU8bJMJofDZtT7WwBped7FLwCeS8fduL0tR8GFzAeaJQChtJ5hQqDivIAw1DGq2rI5fouA5kBPO2FBaXb+ktbgo7J5d08A9lgOq411orvOYz87d2w4TayfrH4WMPy9Uv48K++TjrfyL4LnuCnZ3+ZAxsdEkYx++GDceSPad/rn+nP9KNQ9DT2SIt1IabJznx+73QpeDqd5uCDD+aaa67Z4rZMJsMjjzzCJZdcwiOPPMLvf/97Vq5cyVvf+tadfRpRZxJ2gq6GLpqiTSgUju8wkB1gc2YzeTe/3fubhkncjtMSa6Ej0UF3YzdzknPoaeyhu7Gb7sZu2uPt4bx/MpKkLd5GW7yN1nhrOA0St+NEzAimYb6qD6W8m2dzZnOweZsy6Uh0bDXwKNWC9KX7SDtBXUfEjNAeb6cj0TGrAw+AqBWlMdIIwHBuGMuK0vG632Hs/mFiKihMbjTg+Pmr+O+zv0LMKvDM+n354M2f5am0ga+DImEL8Fd8iryTwVAGGh1m3IQQM8urmnZRSlVkPibz8MMPc9RRR7F69WoWLly43ceUzEf987XPaH50i1qHxkjjK2oPXvAKjBXGwqmPElOZNMeap7x+IuNkGM4NA0Hmoi3eNulKFtd3w0xHSdSMkowmd4k+HdNtKDtE1s1iKIOORAdaawYe+ATZF35Ezg+WYQPct+oQ3nv9lRQaNnPEwse44ayrWBILlkwP+2DOOx372OvIubkwGBVCVF9VMx87a2RkBKUULS0tk96ez+dJpVIVJ1HfDGXQHGumq6ErKEAtZkKGckP0pnsZyY1Q8CZuR7+lrJOlP93P5szmMPCwjaBWw1AGnvYYzA4ylB1iqkqbUvlUGHjErTjt8fYtAg/Xd8NMRynwiJpROhIdtCfaJfDYipZYCxEzgq99BjIDGMqgdel3ie7xIXyCJc8+cPxuj3HdP30ZY6yb5S8fxjfvO4v1bpD5UIC3/g/ox74EsENZNSHE9Ktq8JHL5fj85z/Pu971rq1GQVdccQXNzc3hacGCBdUckphBTCPITHQ3dpOMJDGVGTTYctJszmxm09gmhnPDpAtp8m4ex3PIOllS+RS9Y70M5YZwfCfspdHV0EVnQyedDZ10NwSPqVBk3SyD2cFXFYBorRnKDjFWCDa/S0aStMZbK7I0ru8ylB2SoOMVUkrRFm/DMqwwcIyYERqPuIrkHv/CqA+GDnrFvHbv+/nGKT+BTCc/fejt3LN2NzZ7UMpxec9fC098dYeCWCHE9KvatIvjOJx11lmsW7eOu+66a6vBRz6fJ58f/+sklUqxYMECmXaZhbTWFLwCGSdDzs1tczt3CDIoDXYDDZGGrTbwyrv5IPBAYxs2bfG2HdpmfqLSklCFojnWXLGZmeM5jBXGKnaZjVkxGiONEnC8Ap7v0Z/px9d+MK0Va2NzdjODyz+Pseo6YirYM8cA/uk/v89d6/ZmQc8z3HjeZ1gQd6C4DNvXoI76EZ17nS/NxoSYBjWfdnEch7PPPpvVq1dzxx13bHMQ0WiUpqamipOYnZQKuoW2xlvpaeyhPd4e1oFYhoWhjHDr+JZYS5Dd2E7n0KgVLLc0lIHjO/Rn+reoDdme0lJahQp3US21QO9P99Of6Q8Dj5gVozPRSVu8TQKPV8g0zHA6q+AVGMwNkowkaTz0q2S7TkZR7Eyr4JqzL6XV0qzt25Ov/vljDHuQ94O+Lz7AiotwdvLnLYSovikPPkqBx/PPP89f/vIX2ttlnb3YeaVApCnaRFu8ja6GLnoae+hIdISZhx0tTI2YkaDVtmHja5/B7CCbM5vJOll8PbHvaaVSwypf+yTsBAWvEE4JjeRHwmmfuBUPgw75K/vVs027IgBJO2miZpTGpdcwZgTN27I+tDYP8f2zvg75Zv74xBv5wd/OJeUH7fA9DfhpnPvPq+0XI4TYwrb38p7E2NgYL7zwQnh51apVPPbYY7S1tTFnzhze8Y538Mgjj3DbbbfheR6bNgU7TLa1tRGJyF+CojZMI1gOO1oYJV1IU/AKYT2AZViYKlh6W8qiaK0ZLYwykhvB9V2aok1bZFgsw6LBDpbvygZmU68UgAxkB8KfVcxO4Bz8NYxHP0XaB3w4db97uPjkH3PFsg9w7d3n0920idMPvItmI5h6cdbeBKt/C4veUdsvSAgR2umaj7vuuovXve51W1x/3nnn8eUvf5klS5ZMer8777yTE088cbuPL0ttRbV5vkfaKRaxbqUPRKaQIVUIVl4lI0kaIg2YyiRiRohaUaJm9BXVjoidV/AKDGYH8bVPppAhbsfJP34Z5kv/xYAX7IjcbsCnfn8xP19xGmZslCvf9VlOXvQ0DSYkDJgTTcI7h8LW+UKIqSft1YXYQb72cTwHX/vhKefmGMmPhHu0tMZbw8yIqI1SAOJ4DiO5EZpjzVhPfo2h535MTkOjCla6/PPPvsOdzx1Nov0FfvTuT7NfZz89FvSYYCw6B47/Va2/FCHqVs0LToXYVRjKIGpFidtxGiINxKwYru+SsBN0JDrobOjEMiwJPGqs1BHWNm3idpzB7CCF/f+NrgVnYBDsiDyq4Ufv+gIHdK0hk5rHd+99H31eUJzqAqz5dTD9IoSoOQk+hCjSWjOUG0KjiZpRmmPNtR6SKGObNp2JzrBD7GB2kNFDv01npAEFpH1w7ALfPecSSHey/IVj+PvqvelzwCnVFT/4gWADQyFETUnwIUTRcG4Y13cxlUlrvLXWwxGTKBUOdzV0ETEjDBVSZA76OkkFloJhD3q6n+e8w/8E2Q6uv/+fGHBhsBR8uCl46us1/RqEEBJ8CAFAupAOe3W0xltl9coMZiiD9kQ785LziJgRRjtPYKTrZBIqWGKb8eFTb/kmCT/C2g378MeVRzH4PDj3AU8DT14p2Q8hakzeYcWsV/AKjORHAGiONktzsF1ES7yFRc2LsA0bDv46m4hjEwQfdsMwHzruV5Bv4bd3nU7/z2H0v4CvAx/PwBWvrfHohZjdJPgQs5qvfYayQ0CwUVxDpKHGIxI7IxlNslf7XiSijUQP+iKjGkY0pDx4f8dPSDgOvaqNG5NHsbERfAUMAl/6O/zos7UevhCzlgQfYlYbyg7haQ/LsGiJtdR6OOIViFpR9mjbg+7d3oXVfSK+hj4X3DuyvDNyHbhRbrJPYSQKo+VJrS9+B5zxjedmWNcBIeqaBB9i1koX0uS9fLhniyyn3XXZpk13Yze7n/CfYEax10EuDW/3biVijtHvLeSO+AE80w5DMYJAZNQnfct/kC6k2Ti6kY1jG9kwuoFUPlXrL0eIuifBh5iVPN8LP2Saok1Yxk7vNCBmmIZIA42xZnr2eC/xMUjmodkvcJx+ENwot9pvZCQGAzFIR2A0CiNrn2EkP1Kxg/JYYYzh3HDtvhAhZgEJPsSsVOrnETEjUudRR5qjzTTveyFuk4WnoCkPpzl3QqTAI/nXM+p0krOgsQAJBzBXT/o4GScT7icjhJh6EnyIWae0sZxC0RqTfh71xDZtmhNtJI87g5EuaHBgPpvYk6fASXAHJ+MZEHOhJQGx9ofCZbe2UbkbsSfLcYWoGgk+xKzi+m7FdItsDld/2uJtROefinkKKB2scDlGPwjxEW7Xb8I1groP3gdtKkN3+hnmJufS2dBJU3R8P4qtbToohHj1JPgQs8pwbjhsny7TLfUpYkZo6Dqe+EFxnPdDmwkHGA9jWIOs0YtY3rIHz38YNh4StGQ3n/hyeN/GSCMNdvB7IatfhKgeCT7ErDFWGAunW2RZbf1SStEcb8PoOA77AGj6GDS9yeGgBfdC0zpuPfhYsvsEG9GN+cDA/eGGc47nkHEyQLCEVwhRHRJ8iFnB8z1G86MANMeaZbqlzkWtKA27vwdPQdKGxHw4+pCHwMpxz6pDybuQ8iFcXL38YzhOjoHsQJgZi1mxWn4JQtQ1CT7ErFBaThk1oyTsRK2HI6osYkaIdb+WlI4x5kMUOGze0ySiacYybdy9+kA2usFGdFkfRjL99K+9DV/72IYtGwsKUWUSfIi6l3Nz5NwcCkVzrLnWwxHTwDZsRp0MYwvPBiCqoNuG1yxZEfT8ePoEsj5s8uBFBwY9YMPtxKwY7Yl22VhQiCqTV5ioa1prRnLBpnGNkUZpJjZLWKaFUgp7t/eTsGzaDIia8MEj/oRyYzy35lAeXbsXpd5iOQ365V/QYMYk8BBiGsirTNS10cIonvYwlUljpLHWwxHTqDPRyZymecQXn4MJoGH3jl7O2fcBcOPcsOJ0TGCeCS0mKD/HwGOXsjmzmZybq/HohahvEnyIuuV4DmOFMSAoMpW9W2aXuB0nEUnAnJOJmeACWQ1ffeN/YTlxVvfvzl3r9mTMhw4DGhSo56+l4GQZzA7Sn+4n7+Zr/WUIUZck+BB1ayQfTLfErJisXJiFImawha3dfgyxaDOuhoIPLU39nLbXCsg3ccs/Xs86FzZ7EFHQTYbGF69FoXB8h4HsAEPZIen5IcQUk+BD1KXS3hwKRXNUikxnI8uwUCiikQT2gZdjKxj1g8ZiH1r6O3AaefiFY1k70saYhiEfRnxofPFHdCc6wmm6rJsNluBKACLElJHgQ9QdrXXYQj0ZTUpPj1lKKYVt2iilaFxyNvGeExnTMKbhyAUr2b/nefAj/HHFmeF9shr6s4M4vXfSFG2iI9GBoQwKXiGcwhNCvHoSfIi6M1oYxdc+lmGFrbLF7FSaeomYERoP/SZaRRh0g+Zi5xx2Gyifm/9xMjgmNoAGDxh46TeM5EYwMMLHGC2MsmF0Q9isTgjxyknwIeqK67ukC2kg2DhOikxnt1Lg4GmPzsZuIl3HkNJQAE7Z9x5a46Okck389rHTcAhW3o750Lfq17w08DxP9T8VLtUuGS2M4niy6dyuxtc+Ba9AxsmQLqQZK4wxVhgjXUiTLqTJOBlybo68m8fxHDzfk6m2KpKmB6KupPIpaY8tQqXgw/VdGiINJLuOJtN3N0MeNNuat+6/jOvvew/XP/w2PnT0beSBRgW2P0Zq+DH8tsMZK4yR9/IkI0kJZqtEa42vfTQaVWx6r5RCoV7R91xrjeu7FLwCju9Q8Aq4vrvTj6NQWIaFbdrErBhRMyq/A1NEgg9RN/JuPuzPIJ1MBYChDGzDxvEdtNa0N+3GKJDW0GrCBw77P35214dZuXo3Nm3ak/3mPo9HkAFR6cdJ7/5O0k6QSVOoYMdcuwHbtGv5ZVWF1hqNrvhrX6O3OGZHb/O1HwYVpVPp+vBy8Tm3R7H9D/xSULCtxzSViWVYGMrY4vjS/xPH5vgOjh9sOKhQwRJuOxEGtuKV2eng45577uGqq65ixYoVbNy4kZtuuokzzzwzvF1rzWWXXcZPfvIThoeHOe6447j22mvZc889p3LcQlTQWodLa6WTqSgXs2I4BQdXuzR0H49txcj4ObI+LGoe4fAFT7L8hTZufvyN7D/v+fE3xdU/p/mIq4lZMUbyI7i+S97L4/gOcS/4ANqVghCtNZ728HwPT3u4vovnF//XHr72az3EMMjYIrDZgQBl4hRJKVgsnWzT3unutZ7v4fhO+IeNpz0yToaMk8FUJjErRtyOSyDyCuz0O3Q6nebggw/m/e9/P29/+9u3uP1b3/oW3/ve97j++utZsmQJl1xyCaeccgpPP/00sZikwUV1ZJwMru9iKEM6mYoKMSsWdLr1PeKRRmLzTsFdews5DaaGY3Z/mOUvnMB9Lx9SeUdnGPrvJdp9Ip1mJxknw1hhDE97pJ00aSeNbdjhX8IzqS17qb6h4BVwPCcMMHbUxExD+VTDtm4r3V6aMjGUEZ6UmnC5ePvWplcmZmLKp2QqjpskMDGVOSXTI6ZhYhpBkNFMc1gzknWyFb8HlmGRsBMz7vdgJtvp4OO0007jtNNOm/Q2rTVXX301X/rSlzjjjDMA+NnPfkZ3dzc333wz55577qsbrRCT8LXPaCFYgdAUbZIXv6hgm3aYCcs5OeI9r8dZewt5DUrDwfNWAvCPTXtseefMeiD4gG2INNAQaSDv5sPiRMd3cPIOqXyKmBUjYSempS6gfOqidCplMhzf2Wp9g0JhGsHUg6nMivOWYc2oeoZSULIDMy7TppRFaY42k/fyZJ0sOTeH67uk8inGCmM02A00Rhpn1PdyJprS3PSqVavYtGkTJ510Unhdc3MzS5cu5f7775fgQ1TFaH403Ao9YSdqPRwxA8WsWJi1aOw6jrQdI+PkGPFhbssaQLNprBXfVxhG2V/S+f4tHitqRYlaUXztk3WyZJwMju9U7J5smzYRM1LxIV/6i7/E1z6eH0x3lKY9Spcn1iBMrEvYEZZhhR+W5eMQr55SKuycrLUm62YZK4zh+i6jhVHSTppkJEnCTkgQshVTGnxs2rQJgO7u7orru7u7w9smyufz5PPj+yekUqmpHJKoc47nhAWBUmQqtqYUfLi+SzzSSG7umzHX/o6cD9gZMFxcz6LgWsQiZctoI+1bfUxDGWE2xPXdMBtSWmVR8ApV/ZpK0xalwKYUXNiG/YrqG8Qro5QKp1yyTpbRwiiu7zKSHwmDkLgdr/UwZ5yaV+VdccUVXH755bUehthFlYpM45YUfYmts42gMLRYXYDtFfAAG1ifaQHTocHOE7En9O8oDOzQ41uGRVO0iaZo0/gSz7JaC8/3Js1YlLIhE7MjpZqI8nqI0v/lt4mZJW7HiVkxMk4mDEKGckOknTTN0eZdqkC52qY0+Ojp6QGgt7eXOXPmhNf39vZyyCGHTHqfiy++mIsuuii8nEqlWLBgwVQOS9SpdCEd7t/SFG2q9XDEDKaUCj/gHbeA0X83ALaCZ/oWg/KY39JLQUOs/DM92rnTz2UZVlBjMuFzZuKUiQQQ9alUH5SwE2Ejs4JXoD/TT8JOkIzIlg8wxR1OlyxZQk9PD8uWLQuvS6VSPPjggxxzzDGT3icajdLU1FRxEmJ7PN8L929pijbJi1lsVymzwMByPCeFqYKdbJevOwCsDMfstpwt+pYm5k3Z82+x2kMCj7qmlCIZTdLV0EXcCqZdMk6G3nQvg9lB8m5+O49Q33Y68zE2NsYLL7wQXl61ahWPPfYYbW1tLFy4kAsvvJCvfe1r7LnnnuFS27lz51b0AhHi1RrJj6DRQdOniOzfInaMUgoj34tP8JeXCfxj3f5gZTh2r/twymdG7FboPKE2AxV1wzRMWuOtNHgNjOZHyXv5sDjZMixaYi2zcsp4p4OP5cuX87rXvS68XJoyOe+887juuuv43Oc+Rzqd5kMf+hDDw8Mcf/zx3H777dLjQ0yZdCEdripoibXUejhiF6G1DjIOhSFsBYaCdZvnMDDSDcrniEUP45YHH/PPAMmoiSkSMSO0J9rD/aeybhbXdxnIDNASa5l1Rak7HXyceOKJ29xsRynFV77yFb7yla+8qoEJMZnSenqAZDQpnUzFDvO1H0y7RNsA6DLhjnUHgx9hr67nsGNBEWqo56RJH0eIV8MyLJpjzTTpJoZyQ+TcHMO54Yp+NLOBrMUSuwytNYPZwXDjOOlkKnZUqZeGqUysWA8a0BpSoz3g2bQ395P3gz1d/NLfVvGeGo5Y1DulFG3xtqBXCJrh3HCthzStJPgQu4zh3HDYQr013lrr4YhdSKnjZ7CpWHH/EAWj6VbwIjTG0niApxnPfshu6mIaNEebUSgKXoGsk631cKaNBB9ixsu7eTaMbiDrBi/MtnibNFASO6XU8Ms2bVRhMwA+0BZLg7ZIF2L4xevCzEdu8saIQkwl0zBJRpMApPKpbZY11BN5Bxcz3lhhLDzfHG2elZXh4tUpBR9RM4rpDAFBkNGTHATPZjiTxPGD68K9XSdprS5ENTTYDZjKxNPjLQTqnQQfYsYr3+pbltWKV6LUUyFiRlB2UHDqA91Ng+BGSOUayQNKlc22bKO1uhBTSanxlXtpJ1jNV+8k+BAzXmOkkYSdoLuhe/sHCzGB4zlogmW2tmljukFLfh/oTvaDF2ckmwx6fJRnPnawtboQUyFqRWmwgz+uhrJDON4WLe/qigQfYsaL23FaYi3SxVS8InlvPOsBYEaCzIenoaepD3yb0Vwjrh8Um0rmQ9RKU7SJiBlBoxnIDoSF0vVIgg8hRF0r1XuUgg/DHcYAFNDa2B9EG9piUypYQRXW+/XeOe1jFbNbafmtbdj42mdzZnPVd0euFQk+hBB1bWLw4dttWMUOp1g+B897BrTBAy8fXrm6ds1vwPe2eDwhqslQBu2J9jAAGcgMkC6kaz2sKSfBhxCibnm+FxYs20awzawf7yGqgsxHQcNbD/o/0Iplz7wGxy+bdvHScN+7azJuMbsZyqAj0UHciqPRjORHGMgMVBTf7+ok+BBC1C3HD4r2LMMKd5HVbUdhR5oxCIKP847+DVHbYfXmxdz8+BsmZD9+Dat/O+3jFkIpRWu8NWxClvfy9KX76mY3XAk+hBB1q1SwV8p6aK3RhoG9+wcwCApM25sGOPvgP4E2+P497yPvTHhbfPADMv0iaqYh0kBnQyeWYQXTMNn6mIaR4EMIUbe8YtBQWimli3kNtc+FWGYCgBzwz8fcSDKaZmOqi5/8/T2VD+Km4KmvT9uYhZjIMiw6E50k7OB3diQ/UtF8cVckwYcQom6V7+lSwTCJ7PtJAAo+JGN53n3kTaB8/n3ZB0llJjSze+YqyX6Imio1IktGxlux78pTMBJ8CCHq1laDD8Dc73NgNlIATAVvP+R25jb3MpyPc9UdH53wQGPQd1f1ByzEdiSjyfFmZLmhXbYIVYIPIURd0lrj6eK0i9qyQZ1h2nD4t4POpkCzBR847ldgOlx3/9n4vqq8Q+9dVR6xEDumKdoU1oDsqvUfEnwIIepSKfBQqEm74xrKgHmn4zQdAECDAafsdyex6DDrhufx4EuHVt5hF/0LU9QfpVQ4/ZJ20rtk9kOCDyFEXSoVm0425QJBUALg9pwEQMKAeMTh8CWPAD53PPuayjtk1ldtrELsrLgdD7Mfu+JGdBJ8CCHqUqneY3t7AvnFvV4sBRZwwLxnwSzwzKY9Kw9c9zspOhUzSmn1S8bJ1HgkO0+CDyFEXSpvMDaZ0rJbHe0AgjfDiIJ5rRvBLLB6YF7lHaToVMwwcSsOBFsIeLtYYCzBhxCiLpWWIZb2dJnI94N5ctV6GJhxDMBW0BAdA8NlLN+w5Z2k6FTMIKZhEjWjwK6X/ZDgQwhRd1zfxdMeChW+OW+huJhFmRZ0HIuhgqmXiOmC4eJ4k2dMhJhJ4naQ/ZDgQwghaqy0/DBiRsI9XYBwVYBCoXUw7WJgwPy3o3VQ85EtxED5JKKTvJl3nlD1sQuxM+JWHEMZeNoj62RrPZwdJsGHEKKu+NoP/wpsjDRW3BYGHMoIaz4MZcDw4ziAUpDKBksYk4mRLR98kn4hQtSSUipsOjZaGK3xaHacBB9CiLqSyqfQaCJmhKhVOeUS7u1Slg1RWsOaX1HqlDAw2glAd7J/ywfP91VlzEK8Gg2RBgxl4PruLjP9IsGHEKJu5Nxc+ObbFG3a4vbSigBDjb/1mSOPgZPCL3Y67RsLVr/Maerd8gnic6Z2wEJMAUMZYZZvJDcSLjOfyST4EELUBV/7jOSCqZLGSOOkq1zK262XmowZxWxG6e26b7QVgHktE4IPu1VqPsSM1WA3EDEjaDQDmYEZ3/VUgg8hxC5Pa81gdhBPe1iGFbaenqiU+TANc3zqpTAIgK9Ba+gvZj7mTww+5p8B22lYJkStKKVoi7dhKhNPewxlh8Iap5loyoMPz/O45JJLWLJkCfF4nN13352vfvWrM/qbIITYtY3kRyh4BQxl0BZvq6jpKFfKfFiGFWY+lBVkOnwNHpB3o6ANmmIT5s67X1+18QsxFcLffxR5L08qn6r1kLZqyheyX3nllVx77bVcf/317L///ixfvpzzzz+f5uZmPvnJT0710wkhZrlUPhXWebTGWrfa0RTKWq4rE48gEPFLmQ/A1WAbHmhzyz4fhYGpH7wQU8w2bVrjrQxmB0k7aSzDoiEyScO8Gpvy4OO+++7jjDPO4M1vfjMAixcv5oYbbuChhx6a6qcSQsxyo/lRxgpjALTEWrZY3TJR+WZzvhfMiefN4I05ooLMR8QqgG+SntjhNNI+tYMXokpiVoymaBOpfIqR/AiWYW33tTHdpnza5dhjj2XZsmU899xzADz++OP87W9/47TTTpv0+Hw+TyqVqjgJIcT2jBXGwr4GzdHmcJOtrXF9F41GoSpqPvL5IKNhqyDz0RIdA99iKNNc+QC9d079FyFElTRGGsO9X4ZzwzOu9GHKMx9f+MIXSKVS7LPPPpimied5fP3rX+fd7373pMdfccUVXH755VM9DCFEHcs4mXA+OxlJ7lBauTTlUpqWKXU5zZtJIoANjAFN0Qxok6H0hOBj/S3BrrZSdCp2ES2xFvLpfND91M1uN0CfTlOe+fjNb37DL37xC375y1/yyCOPcP311/Ptb3+b66+/ftLjL774YkZGRsLT2rVrp3pIQog6ki6kGc4NA8Ffd8no5CtbJtoi+FCKnJtDR9sxVdDdVGtoio+CVltmPgqD0H/vlH0dQlSbUirs/1HacmCmmPLMx2c/+1m+8IUvcO655wJw4IEHsnr1aq644grOO++8LY6PRqNEozNrLkoIMTONFcbCjEeD3TBpI7GtKV9mC8Hy3NHCKH5yXxIKNEHRqYUGbeD6k7w9Zje+2i9BiGkVt+Kk8ikc30FrvdWVYNNtyjMfmUwGw6h8WNM0w+2rhRDilRjNj4aBR2OkkeZY83buUam8wRgE+2D42sccfTYMPhQwmAmW3nYlN2/5INLhVOxiTMMMf+cLXqHGoxk35ZmP008/na9//essXLiQ/fffn0cffZTvfOc7vP/975/qp3rFPN8Lu78Zygj/EhJCzEwjuRHSTpA2boo2bbFh3I4oz3wUvEK4A2iDN4pS4Oli8JFuA/SWwYd0OBW7qKgVJeNkyLrZGbPqZcqDj+9///tccsklfOxjH6Ovr4+5c+fy4Q9/mEsvvXSqn2qnZZ0sqXwq/AuoRKGImBFs0yZiRoiYkYq9H4QQteFrn6HsEHkvDwSrWl5pz4LS697ACGtG4lacghtkUzRB3cfQWBsoTU/ThOBDOpyKXVTcipNxMmScDIYySEaSNZ9+mfLgI5lMcvXVV3P11VdP9UO/Kr72g+VG5dtoE8z7ajR5Lx++wUGQmi0FJJZhYRu2ZEiEmEYFr8BwbhjXd1EoWmItxO34K3680lLDtJPG9d3gTTiaZMBuRhezHgC9qU5A09M8ob26dDgVu6ioFSUZSTJaCPripAtpYlaMllhLzYKQKQ8+ZiqFQqlgaV1pB8C4Fcc0TBzPwfEdCl6BglfA9d1waVLWzVY8hmVYYUBS7aBEa42nPTzfq/jf1z5a6+D/Yt+C0i9Q2DJaqUnPl4Kv8jXfE6+b7Jjyx1FKYSoznLIylYllWBKciSmhta7o4WEqk7Z4G7Zpv6rH1GiyThZf+xjKoDnaTKqQQjvD+ATBRzYXYzjTBgr27Hqp8kGkw6nYhSWjSSzDYrQwiuu7QVBfw+zH7Ak+ipvuDGWH8LRHKp8ilU+FAUXpg9MyLEwVzAmXPoRLNBrHDwKVbT4XiqgVDTInhr3VD2Zf+1sEFqX/Xd+d8bsSTjRZcFb6ftY6xSd2DTk3x0huJJwiiVtxmmPNr3oaVKNxPIdUPkW33U1jpJGYHQuCD6sZn6D6ft3QPACa4sO0NoxWPoh0OBW7uLgdJ27Hg8+3GjcdmzXBB0DEjNDV0EXWzZJxMmGAsSMBxc7QaHJujpybe9WPVerGaCoz/N9QBoYytprR2Nr58DEnyZKUX97adRodZlx87W8RLG3re1meHSkPSizD2mUCk9LXXso+TXba2ve8pDx7pFDhz9FQRkU2qfQzni3ybp7RwmhYjW8qk6Zo06uaZinn+m5Y51FqPV3q+6EGl+MDJrB2cD4AC1o3bPkgkvkQdSJiRmo9hNkVfEDw5p+wEyTsRDitUZ5lKH1gTPyQKP+/pHSs67vhlM1UBDEKhW3aYdZk4nNPFiQYGMGHniqbPlFlH4JqPEAJp20Y/7As/V+6DajI/JSvD5/4/bCVTdSMhh/KpdVE5ff3tIfneVBZ61vxNZcHWaVdR8vHVv61TxzL9s5Ppvyxy7/+8q+hIrBgev9SmCzwLAVwpet2ZVoHQfpYYSx83SiCpkiNkcYpDUqHc8N42iNiRmiJtYzf4HvQdxd+cZ3ty5sXAbCwbd2WDxLtnLLxCDHbzbrgo5xSCktZ29wFc0fYpr3Vv9BKH1yu71ZMrZSCndLlig96dBjMzChV/OzV6GAeEnerAcpMUMpWlJ9KmYryuqJyE4OcUiAzWZA3MdjZ3vdkW4HJTJ3ucn03rLwvvQ4UioZIA42RxqpkfJoiTWHgUV5szsCDKDeFLn6b/rH2AAAOWfDklg+SmDfl4xJitprVwcd0KH1AbS/AKf21XSp2LS8qDbMyO1AYur0pla2l/SfL8pTfv2TitELpQ3JiEezEy5N90JYyG69UOP1U/Domjqta2QpNsRBYe8HX4FVmZ16N0tdiG/YWWZ/JaoDCjNJWbC04me4CYcdzyHt5sk62IjtoKpOGSAMJO1HVaSbTCIpWS82WQtlNQNDZVANPrtsXgCMWP1p5nPT4EGJKSfAxQxjKwDCNV1XRX0987QfTWJ4TTmdN/PAtD8ymS3kgtS1bW3VUfttkQVx5YDMVdiQ4mRiUlE6vNGuidbH2p7iKLO/mK76eUkF2wk4Qs2Kv6DmmgkZD399QBIHHppE2elPzAI8jFj1eebD0+BBiSknwIWYkQxnErFjFh5PruzieE/zvO+H01dY+qCdOkZQKO7d2Kh1fMrHmZWvXARWZpNLlnVWqQSqfeimvPZmsRmXi/ztre7U4JREzUlEoDFRkuSZOLU5UCjiiZpS4HZ8ZxbS+B5v+HJzV8NDLh4GG3btepjmeqTy256QaDFCI+iXBh9hllD78JjPxw3dicfArUVGoOg2lE6UapFdjshU4E4tnywOcHbWzNUiGMsKl5qWuwTOh/qTid6T/7+AMA8G0y0MvHwwojlj0xJY/bqn3EGJKSfAh6kL59MZstrNLdCcGKKVMhud7YeO9VzIG27DDOhzHd/C0N2m2abpMGvhk14dnNfDImgNB+Ry1+FHM8sOl3kOIKSfBhxCz2I4WRJeUpoZK01+lUymbAkFAk/fyO7RqKVwxVNbjpLwHTDWLYtWmO4tfE6TzEZ7atCfgc8yS5ZVvjFLvIcSUk+BDCLHDtrU8feJ2ANuaAipfweNrP1hOPNnzFXvelLYyKPW/2dkpnLDIt1Sn43sYG24NrgMeWb8f2rfoSPaxsH0jVvnDS72HEFNOgg8hxJTYmb455cuhJ3bMLWVSSv1vJtablAKSUi1J1IzufD1J/72owlB4ccWa/cEscPjCJzEVldMuUu8hxJST4EMIMe1KmxOabH06Y+IUT6kGpbQMuxSQKBQxK0bcjm83EAkLTjPrUapYR6zh7y8dAabD0bs9QlTqPYSoOgk+hBAz0tYyKeXbGZR6iJR2oDaUQYPdsEV79i0Ckk3LgGAzubXDHTzbuweYed6y/7LK4EPqPYSoCgk+hBC7lNKS64SdAIJlwDk3R9bJ4mmP0cIoaSdNY6SRBrthyy69notaeyMQTK/8+ZnXgnLZb96zzG3dTEzqPYSoOgk+hBC7tFLtR1O0iayTZbQwiuu7pPIpsk6Wtnhb5bLep74O7hgQZD6WPXMcmHnesNd9RBQYUu8hRNXNgDaDQggxNeJ2nM5EZ7iBnOM79Gf6xwtWfQ+98rvh8esGeni2d2+w85yy3z2VUy6RNqn3EKJKJPgQQtQVpRQJO0FnohPbsPG1z2B2kKyThYEHoWyVyy2PvQnw2L1nJXNbBiqnXPb+V6n3EKJKJPgQQtQl0zDpSHQQs2JoNKl8ikJ6XcUOOLc8fmpxlUvQWMwuBR9mA+z/xRqMWojZQYIPIUTdUkrRFm8LNygc3nAnbjH62DDUxYrVh4JZ4NjdHyJW/m648J2S9RCiiiT4EELUvdZYK7Yy8Tf9HwN+0FJ92bPHA4pFXS/RmRzGLr+DrHIRoqok+BBC1D2lFG1jz2B4OQoaRn3468rjAc3ePc8AVBabyioXIapKgg8hxKxgDdxPkxFkPUY8xR+eCvp7HLn4cQwY38/FbJRVLkJUmfT5EELMCmrgwaCuQ8N9Lx3KgBOhITHEIQueqNxIru0wqfcQosok8yGEqH++hzH8JABNBjz00mFgFjh6n7uxzQkbyXUeX5sxCjGLSPAhhKh//feivGJXUwWr+/YCYFHPs0CwxDaMP7pfX4MBCjG7VCX4WL9+Pe95z3tob28nHo9z4IEHsnz58mo8lRBCbF9mfRhc+EB6rB1QNDYM4BC8ESpF0N+j+8QaDVKI2WPKaz6GhoY47rjjeN3rXsf//u//0tnZyfPPP09ra+tUP5UQQuyYfH/4l5YGHDcGbgzTLJDT0F66Qfp7CDEtpjz4uPLKK1mwYAE//elPw+uWLFky1U8jhBA7LtoZZj60BtPwwIlT8A0KGlSp7an09xBiWkz5tMutt97KEUccwTvf+U66uro49NBD+clPfjLVTyOEEDsu3hNMqxAkONobh0ArxjLNKMApO04IUX1THny89NJLXHvttey55578+c9/5qMf/Sif/OQnuf766yc9Pp/Pk0qlKk5CCDGl9HhBqQY6GgbB8BhNt2MATinz0XdvbcYnxCwz5cGH7/scdthhfOMb3+DQQw/lQx/6EB/84Af54Q9/OOnxV1xxBc3NzeFpwYIFUz0kIcRsl++rDD4aB0H5pDKtmCrIfPgaeO4H4Hu1G6cQs8SUBx9z5sxhv/32q7hu3333Zc2aNZMef/HFFzMyMhKe1q5dO9VDEkLMdvE5kwYfI5lmIsXrcgCFAeiX7IcQ1TblBafHHXccK1eurLjuueeeY9GiRZMeH41GiUajUz0MIYQY13kCym6B/DAa6EpuBsNjKN1K1AiW3xZKUy+Z9bUbpxCzxJRnPj71qU/xwAMP8I1vfIMXXniBX/7yl/z4xz/mggsumOqnEkKIHWOYqHlvAYIsx9zmXlA+A+k2oqq4/LYUfOT7azVKIWaNKQ8+jjzySG666SZuuOEGDjjgAL761a9y9dVX8+53v3uqn0oIIXZcWfOwhW3rQfkMjbVh+EHwoQFXA5H2Gg1QiNmjKhvLveUtb+Etb3lLNR5aCCFemcIgEPT56G7ajDIKaD/CQLqVaOMQimDqxSoM1HacQswCsreLEGJWUGUZDcPQdCb7QRtsHutAEQQlBcl8CDEtJPgQQswOpcwHwbLaruQAoBgabSOiwFfFug/JfAhRdRJ8CCFmhfLMhwc0RDLgm+QLjRiAp4N+H9puq9UQhZg1JPgQQswOZRkNX8NQphm0RVtiBEMVm4wBrqx2EaLqJPgQQswOZZmPnGewdnguaIN5TUGwUdr7xbVaajA4IWYXCT6EELND311AUPPx6Np9yRYSJKwse3StJrwBcCTzIUTVSfAhhKh/vofa8Ifw4n0vHwbAYfOeJWoEm84ZBH0+XLu1NmMUYhaR4EMIUf/674XCUHjxwZcPBmDp4sdRKngjVKpYdBrtrNEghZg9JPgQQtS/zPqKjeWWrzkIgOP3WIEFmMXrfasJr+1ItNaTP44QYkpI8CGEqH9ldRzrhzvYMDIH8Dh68QpsBWZxfxev5w1gmHjaq9lQhZgNJPgQQtS/sZfCzMcL/UtAw4LWTTQl0ljFaRcHoP1oADxfgg8hqkmCDyFEffM9WPWzMPhYP9wDKHqa+tBAtBh8FHww3REAXN+t0WCFmB0k+BBC1Lf+e8EZCS9uGO4BDXOai8EHwWoXj/HupjLtIkR1SfAhhKhvmfUAYeZjw0g3AHObe9EE9R62Ah9wY8FKF8l8CFFdEnwIIepbvrKD6aaRLgDmtPSiNRgKIgq0mcBvORSQmg8hqk2CDyFEfStrq66AgXQraEV3sh9N8CZoK/DnnIxbbHMq0y5CVJcEH0KI+la2oZwCUrkGUNAUHw2Dj4gCPz4XX/torcP/hRDVIcGHEKK+Tch8jOUbQUNzbCwIPop9PpTVhGEYYb2HZD+EqB4JPoQQ9W1C5mM0H2Q+muMjYeZDazDdURQKX/uA1H0IUU0SfAgh6lvZXi2ua5B3YqArp100YEXaUUqFGQ/JfAhRPRJ8CCHqW7wnPJvKNQVnFDTHg2kXRRB82PFufO2HGQ/JfAhRPRJ8CCHqW1nd6HCmGYB4JI1l+mg9vgTXMgzQoJTC8Zxw+kUIMfUk+BBC1LfcpvDsaDbIfDRG08B4XKIACoPYho2hDAk+hKgyCT6EEPWtbEfbkWyQ+WiKjwLjwYehAGcQwzBQKFzflZoPIapIgg8hRH0bezk825cKik/bEsFeL6XchgFgt2EYBqZh4mpXMh9CVJEEH0KI+uV7sPqX4cV1g3MBmNeyERjPfJgAsU6UVhjKqCg8FUJMPQk+hBD1q//eimmXtYPzAFjQtj68Tmuwom3QeiiKIPhwfReNli6nQlSJBB9CiPqVWV9xce1QMfho3RBepwFjwdvBMPG1jyruf6u1RiPBhxDVUPXg45vf/CZKKS688MJqP5UQQlQqy3oArBsKpl0Wlmc+AKtxMQA+PkopFAqNlroPIaqkqsHHww8/zI9+9CMOOuigaj6NEEJMrmxfF99XrBlcAMCi9rXF/EYx+Ch2QfW0BxoMZQSZD5l2EaIqqhZ8jI2N8e53v5uf/OQntLa2VutphBBi63rvDM++vHk+jhvFMhwWtq+rCD5Mdzjc16WU/ZDMhxDVU7Xg44ILLuDNb34zJ5100jaPy+fzpFKpipMQQrxqvgfrbwkvPtO7J2iD+a0bUIYO3/w0YMQ6MVRwjed7GMoIp16EEFPPqsaD/upXv+KRRx7h4Ycf3u6xV1xxBZdffnk1hiGEmM3674XCYHjxud7dQBssaV8X7ukCwWoXlZgXLrEtz3bItIsQ1THlmY+1a9fyr//6r/ziF78gFott9/iLL76YkZGR8LR27dqpHpIQYjaasNLlub7dAMWSjjXAeI8PbbdgdL4mrPMoBR+qtOmLEGLKTXnmY8WKFfT19XHYYYeF13mexz333MMPfvAD8vk8pmmGt0WjUaLR6FQPQwgx201Y6fJ83xJAsVtH8AdOKfjw570Fy7RQKDzfq1xuK9MuQlTFlAcfb3jDG3jiiScqrjv//PPZZ599+PznP18ReAghRNWUrXQBeLF/MQB7dL4MBGlfD/CLWQ9DGUFjsWLAoVAy7SJElUx58JFMJjnggAMqrmtoaKC9vX2L64UQomoKA+NnHZM1xdbqe3WuqjjMy29GocZXuPjFXh8y7SJE1UiHUyFEfSrLfPSNduBrC4XH/JY+YLzg1LdbxxuLaY3ru+H9ZNpFiOqoymqXie66667peBohhBhXVvMxkG4DoCWewjTAKYspvHwQjJSW2pYHHArJfghRDZL5EELUp/z4tIvrB7VmluVu8abn54PluIZhBFMv0tlUiKqT4EMIUfcipgNAwY2Eb3pGManh6/ECUxjPfGitpe5DiCqR4EMIUZ/slvBsS2IEgNFcw/hESjG54VvJINBAyQoXIaaJBB9CiPrkDIdn2xLBeV9bZHLx4EpVLDp1UkFjsVJUogiX3ErNhxDVIcGHEKI+qfG3t0Q0h2UEUy/DmRYAfIpvgMoId7NVSoUZEcmACFE9EnwIIepT5wnhWaWgKTYKwEimGQBfg6mA9qUVmQ+p8xCi+iT4EELUJ1XZTbkxlgZgNJ8EJmQ+im3VoXLJrQQiQlSHBB9CiPqU21RxMe8Ge0g1WHkgmF0xAPL9QYXHxFUvMu0iRNVI8CGEqE8TNpZLZRuBoNEYBMGH0kBhAF/74RJb0zCDXh9ScCpE1UjwIYSoT2Xt1T3fIOskAGhrSIXXawXYrUHwUcx0mMqsyIQIIaaeBB9CiPpUtrHccCYZnm+Opyrf+JwhfN8Paz5MI6gVkZoPIapHgg8hRH0qy3ykskHwYZsFovZ4i3UNYLcGS22LDGWELdZl2kWI6pDgQwhRn8oyH2P5BgAaIhlgvLU6GnCG8LQX7myrlJLdbIWoMgk+hBD1qSzzkS4GH4lIFmCLzIfvVy6zBdnbRYhqkuBDCFGfyla7jBWCYtO4nQOg1AFEK4LVLvjhsaX9XWS1ixDVI8GHEKI+5Qe2uMpQpQxHcNnXQH5ovMeHUuN7u0jmQ4iqkeBDCFH3LMMFwPUtoCzzEf4fnNNao32p9xCi2iT4EELUp0hbeNY0gtUsnh+EHaXgw9NApIWt1ZfKtIsQ1SHBhxCiPsW6wrN2MfhwS8FHadoFINoBqljrUfxXItMuQlSHBB9CiPpUttTWLE67eLoy8wHgFQbCItPyTqeGIW+PQlSLvLqEEPWpbKltadrF9YKwQymwiv+7ZjOGMsIOp6X/hRDVI8GHEKI+lWU+bLOY+fDHcx5WaeqlMFAxveL6wbGGvD0KUTXy6hJC1KeyzIdlVk67QJD5APDsZmC8wZjnF1utS7mHEFUjwYcQoj6VNRmzS0ttvfHgwy4GF15uMzBeXOr4TnBZog8hqkaCDyFEfcqXF5wWl9rqyaZdhgHCQtNSt1NZ6SJE9UjwIYSoew3RYEO5ghslk48C49MuisoiU88LAhWp+RCieuTVJYSoT2VNxjqTg7TEhwF4euNeQLDSxQSMXB+u76JVkPnwtFe8XTIfQlTLlAcfV1xxBUceeSTJZJKuri7OPPNMVq5cOdVPI4QQ2xbvCc8qBXt1vwTAUxv2Dq+3FJh9d+G5hbDLaWnapXyHWyHE1JryV9fdd9/NBRdcwAMPPMAdd9yB4zi88Y1vJJ1OT/VTCSHE1iXmVVzcp/sFAJ7aWBZ8AIY7gjfwYDj1Uqr9EEJUj7X9Q3bO7bffXnH5uuuuo6urixUrVvCa17xmqp9OCCEm13kC2K3gDAGw75znAXh20+7hIaYK/gIrZDbit1Y2GZNpFyGqp+p5xZGREQDa2tq2c6QQQkwhw4T5Z4QX95/7HADPbNpz/BCCAMQrDOD7QdBR6vMhBadCVE9VX12+73PhhRdy3HHHccABB0x6TD6fJ5VKVZyEEGJKdL8+PHvAnGcBWDWwgIITLLk1CIpOtdWMVrpi1YvUfAhRPVV9dV1wwQU8+eST/OpXv9rqMVdccQXNzc3hacGCBdUckhBiNilrsb64Yx1xO4Pn26zs3QMAQwXFqBSGUSh83x+v/UBqP4SolqoFHx//+Me57bbbuPPOO5k/f/5Wj7v44osZGRkJT2vXrq3WkIQQs01Zi3WlYM+uVUDZctvibUa0FYXC0x4ajdZaOpwKUUVTHnxorfn4xz/OTTfdxF//+leWLFmyzeOj0ShNTU0VJyGEmBJlmQ+AvbtfBCYJPgYeRimF53tBBkT7sreLEFU05cHHBRdcwM9//nN++ctfkkwm2bRpE5s2bSKbzU71UwkhxLZFOysu7tsTLLd9ZlMw7RIGH5tuB+3LVIsQ02TKg49rr72WkZERTjzxRObMmROefv3rX0/1UwkhxLZN6PWx35xgxcvK3mC5bSn4sLwsenPQ60PrysJTIcTUm/I+H9KgRwgxY3SeAFYS3FFgPPh4vm8Jvq9QxZbqBqAHHsZP7I5SSt7HhKgyWUsmhKhfhgk9bwwv7t39AqbhkHUSrB6YR6mPmKkA7QU1Hyqo+ZCCUyGqR4IPIUR96zgmPBuxPZa0Byvqnty4D1DW6yPbBypYYlsKQIQQ1SHBhxCivpVtMAewe+dqAF7qXwgEb4JKgdF/N9r3wk6nEnwIUT0SfAgh6tuEotP2xmCvl6F0CxA0GgMw3BRq+AlpMibENJDgQwhR30obzBW1xYcBGMy0AMGUCxTfDHMDuL4bBh6S/RCiOiT4EELUtwkbzLU3BJmPgUwQkFilolNAu0N42guPlVUvQlSHBB9CiPpXtsFcMj4GwFi2ARjPfCgFymzG8ZxwUznJfAhRHRJ8CCHqX1mbdUOVajoCYeZDA14KV7thxkPqPoSoDgk+hBD1r2KDuVJgEUQdYadFBabVEnY4lU6nQlSPBB9CiPpXlvlQxWyG1kHwYaigzbqhQHkptNZoXwc73ErNhxBVIcGHEKL+lWU+TKO0kmX87c+i2GLdago3fPG1L5kPIapEgg8hRP0ry3wwIfMBQd2HAfjuMIYy8AharUvNhxDVIcGHEKL+baPmA8aLTjGbMJRRUfchhJh6EnwIIepfec1HMfjw/cppFx/wR57CLGZEPC2ZDyGqxdr+IUIIsYsry3yML7Udz3yYCjxAb/gj9ro/Qqwdd8/3oQ+6GKLTPVgh6p9kPoQQ9W9sdXg2XO1SdrMFeBocHZzXhQH8lf+BvqkLHv3ctA5ViNlAgg8hRP177v+FZ5/asDcAy559DZfe+mle6luAocaDD0NBhOCyBnjmKglAhJhiEnwIIepfYWN4dsNwT3j+q3+6iN0vfYBDv3EbX77tk/zj+WPw8zFsIwg8vFJ65JmrwC1M75iFqGMSfAgh6tuqGyounrb/XytvN7M8tnkuN6w4k8tuuoQzvvt7bnn0jTQbECt/h3z2P6o/ViFmCQk+hBD1y/fgoX8JL45mE/x6xVuDC2YO4gMQG+GDJ/wPbzv4drpsj0KuhW//+UIMX1W+Qb7ww2kduhD1TIIPIUT96r8XvEx48ZJbP8cdz74W4oN86W2XcdRuD4JWrHj+WK55+7f41plXghcFz8JD45ZXpToj0z9+IeqULLUVQtSv7MaKi/vMeSE440aY29zPD9/5VQ778t955KUujr3qJjaNdoAT44yj/ooywC2/c2LRtA1biHonwYcQon7F51Rc/PAJP+e+F4/gfx58Bx/7r/+kPPn78trDQXkcNv9prn7T/wODyszHIV+dnjELMQtI8CGEqF+dJ4DVBG4KAKXgv9/3aRSa/3nwrMr+pdrkDx89nzcd8Fe00vR6QeOxgAVzTpvesQtRx6TmQwhRvwwTlv644irL9Lj+/E8x8h/7sPnb+zH47/tgGQ7gs/+clRiGxlTB5raaYvbjuBuCxxJCTAnJfAgh6tuic+ClX8DGP1RcnYyPF6L+/iP/wlGLHqW7eXwPGAtwAHfvT2Etesc0DVaI2UEyH0KI+ve6W6HtiK3efPpBf6kIPCDY6VYdeS3+wV+r9uiEmHUk+BBCzA6nPgx7X7TDh7ec8Bvm7PsREnaiioMSYnaqWvBxzTXXsHjxYmKxGEuXLuWhhx6q1lMJIcSOOfzf4ew8HPrvMOetkFgCKlJ5THw+nPA71OJ31maMQswCVan5+PWvf81FF13ED3/4Q5YuXcrVV1/NKaecwsqVK+nq6qrGUwohxI6xIrDvRcEJgi6o/fcGPUHic4IVMlJcKkRVKa213v5hO2fp0qUceeSR/OAHPwDA930WLFjAJz7xCb7whS9s876pVIrm5mZGRkZoamqa6qEJIYQQogp25vN7yqddCoUCK1as4KSTThp/EsPgpJNO4v7779/i+Hw+TyqVqjgJIYQQon5NefCxefNmPM+ju7u74vru7m42bdq0xfFXXHEFzc3N4WnBggVTPSQhhBBCzCA1X+1y8cUXMzIyEp7Wrl1b6yEJIYQQooqmvOC0o6MD0zTp7e2tuL63t5eenp4tjo9Go0Sj0akehhBCCCFmqCnPfEQiEQ4//HCWLVsWXuf7PsuWLeOYY46Z6qcTQgghxC6mKkttL7roIs477zyOOOIIjjrqKK6++mrS6TTnn39+NZ5OCCGEELuQqgQf55xzDv39/Vx66aVs2rSJQw45hNtvv32LIlQhhBBCzD5V6fPxakifDyGEEGLXszOf3zNuV9tSLCT9PoQQQohdR+lze0dyGjMu+BgdHQWQfh9CCCHELmh0dJTm5uZtHjPjpl1832fDhg0kk0mUUjUbRyqVYsGCBaxdu1amf2pAvv+1Jz+D2pLvf23J93/naa0ZHR1l7ty5GMa2F9POuMyHYRjMnz+/1sMINTU1yS9eDcn3v/bkZ1Bb8v2vLfn+75ztZTxKat7hVAghhBCziwQfQgghhJhWEnxsRTQa5bLLLpPW7zUi3//ak59Bbcn3v7bk+19dM67gVAghhBD1TTIfQgghhJhWEnwIIYQQYlpJ8CGEEEKIaSXBhxBCCCGmlQQfk7jmmmtYvHgxsViMpUuX8tBDD9V6SLPGl7/8ZZRSFad99tmn1sOqW/fccw+nn346c+fORSnFzTffXHG71ppLL72UOXPmEI/HOemkk3j++edrM9g6tb2fwT//8z9v8Zo49dRTazPYOnTFFVdw5JFHkkwm6erq4swzz2TlypUVx+RyOS644ALa29tpbGzkrLPOore3t0Yjrg8SfEzw61//mosuuojLLruMRx55hIMPPphTTjmFvr6+Wg9t1th///3ZuHFjePrb3/5W6yHVrXQ6zcEHH8w111wz6e3f+ta3+N73vscPf/hDHnzwQRoaGjjllFPI5XLTPNL6tb2fAcCpp55a8Zq44YYbpnGE9e3uu+/mggsu4IEHHuCOO+7AcRze+MY3kk6nw2M+9alP8Yc//IEbb7yRu+++mw0bNvD2t7+9hqOuA1pUOOqoo/QFF1wQXvY8T8+dO1dfccUVNRzV7HHZZZfpgw8+uNbDmJUAfdNNN4WXfd/XPT09+qqrrgqvGx4e1tFoVN9www01GGH9m/gz0Frr8847T59xxhk1Gc9s1NfXpwF99913a62D33nbtvWNN94YHvPMM89oQN9///21GuYuTzIfZQqFAitWrOCkk04KrzMMg5NOOon777+/hiObXZ5//nnmzp3Lbrvtxrvf/W7WrFlT6yHNSqtWrWLTpk0Vr4fm5maWLl0qr4dpdtddd9HV1cXee+/NRz/6UQYGBmo9pLo1MjICQFtbGwArVqzAcZyK18E+++zDwoUL5XXwKkjwUWbz5s14nkd3d3fF9d3d3WzatKlGo5pdli5dynXXXcftt9/Otddey6pVqzjhhBMYHR2t9dBmndLvvLweauvUU0/lZz/7GcuWLePKK6/k7rvv5rTTTsPzvFoPre74vs+FF17IcccdxwEHHAAEr4NIJEJLS0vFsfI6eHVm3K62YnY77bTTwvMHHXQQS5cuZdGiRfzmN7/hAx/4QA1HJkRtnHvuueH5Aw88kIMOOojdd9+du+66ize84Q01HFn9ueCCC3jyySelzmwaSOajTEdHB6ZpblHF3NvbS09PT41GNbu1tLSw11578cILL9R6KLNO6XdeXg8zy2677UZHR4e8JqbYxz/+cW677TbuvPNO5s+fH17f09NDoVBgeHi44nh5Hbw6EnyUiUQiHH744Sxbtiy8zvd9li1bxjHHHFPDkc1eY2NjvPjii8yZM6fWQ5l1lixZQk9PT8XrIZVK8eCDD8rroYbWrVvHwMCAvCamiNaaj3/849x000389a9/ZcmSJRW3H3744di2XfE6WLlyJWvWrJHXwasg0y4TXHTRRZx33nkcccQRHHXUUVx99dWk02nOP//8Wg9tVvjMZz7D6aefzqJFi9iwYQOXXXYZpmnyrne9q9ZDq0tjY2MVf0GvWrWKxx57jLa2NhYuXMiFF17I1772Nfbcc0+WLFnCJZdcwty5cznzzDNrN+g6s62fQVtbG5dffjlnnXUWPT09vPjii3zuc59jjz324JRTTqnhqOvHBRdcwC9/+UtuueUWkslkWMfR3NxMPB6nubmZD3zgA1x00UW0tbXR1NTEJz7xCY455hiOPvroGo9+F1br5TYz0fe//329cOFCHYlE9FFHHaUfeOCBWg9p1jjnnHP0nDlzdCQS0fPmzdPnnHOOfuGFF2o9rLp15513amCL03nnnae1DpbbXnLJJbq7u1tHo1H9hje8Qa9cubK2g64z2/oZZDIZ/cY3vlF3dnZq27b1okWL9Ac/+EG9adOmWg+7bkz2vQf0T3/60/CYbDarP/axj+nW1ladSCT02972Nr1x48baDboOKK21nv6QRwghhBCzldR8CCGEEGJaSfAhhBBCiGklwYcQQgghppUEH0IIIYSYVhJ8CCGEEGJaSfAhhBBCiGklwYcQQgghppUEH0IIIYSYVhJ8CCGEEGJaSfAhhBBCiGklwYcQQgghppUEH0IIIYSYVv8fcW26jdBtGVUAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -217,10 +785,177 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "id": "6478440c", "metadata": {}, "outputs": [], + "source": [ + "from trap.lines import *\n", + "\n", + "history_color = SrgbaColor(1.,0.,1.,1.)\n", + "line_history = LineAnimationStack(StaticLine([], history_color))\n", + "line_history.add(AppendableLineAnimator(line_history.tail, draw_decay_speed=120))\n", + "line_history.add(CropLine(line_history.tail, 150))\n", + "line_history.add(SimplifyLine(line_history.tail, 0.003)) # Simplify before effects, so they don't distort\n", + "line_history.add(FadedTailLine(line_history.tail, 10 * 12, 10))\n", + "line_history.add(NoiseLine(line_history.tail, amplitude=0, t_factor=.3))\n", + "line_history.add(FadeOutJitterLine(line_history.tail, frequency=5, t_factor=.5))\n", + "\n", + "prediction_color = SrgbaColor(0,1,0,1)\n", + "line_prediction = LineAnimationStack(StaticLine([], prediction_color))\n", + "line_prediction.add(RotatingLine(line_prediction.tail, decay_speed=16))\n", + "line_prediction.get(RotatingLine).skip = False\n", + "line_prediction.add(SegmentLine(line_prediction.tail, duration=.5))\n", + "line_prediction.get(SegmentLine).skip = True\n", + "line_prediction.add(SimplifyLine(line_prediction.tail, 0.003)) # Simplify before effects, so they don't distort\n", + "line_prediction.add(DashedLine(line_prediction.tail, dash_len=.6, gap_len=0.9, t_factor=2, loop_offset=True))\n", + "line_prediction.get(DashedLine).skip = False\n", + "line_prediction.add(StartFromClosestPoint(line_prediction.tail))\n", + "line_prediction.add(FadeOutLine(line_prediction.tail))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "3cee2e78", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "line_prediction.start()\n", + "line_history.start()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "0a6cde44", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "157\n" + ] + } + ], + "source": [ + "\n", + "print(track_history_idx)\n", + "cut_point = track_history_idx\n", + "cut_point = 10\n", + "line_history.root.points = trajectory_org[cut_point:cut_point+2]\n", + "line_prediction.root.points = trajectory_org[cut_point:cut_point+50]\n", + "line_prediction.get(StartFromClosestPoint).set_point(line_history.root.points[-1])" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "feee0df1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 0.86414 14.03]\n", + " [ 0.9655 13.991]]\n", + "---\n", + "[ 0.9655 13.991]\n", + "[ 0.9655 13.991]\n", + "1 RenderablePoint(position=(1.0603447531038852, 13.959395434695669), color=SrgbaColor(red=0.0, green=1.0, blue=0.0, alpha=1.0))\n" + ] + }, + { + "data": { + "image/png": "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jaKiIjp16kRKSgozZ87kiiuuoHv37hQXF5Obm8uuXbsYNWpU7JjMzExGjhzJ+PHjAcjOzmbmzJn07NmTvn378vrrr/Pggw9y880318NTlCRJTV2dC0tBQQEZGRmx9YkTJwIwduxY5s2bx6ZNm1i4cCHFxcWkpKQwaNAgVq1aRd++fWPHbN26leLi4tj6I488wtSpU/nOd77D3r17SU1N5Vvf+hb33OOsrZIk6STvYQmTljgPiyRJTV0o5mGRJEmqDxYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUehYWSZIUenUuLPn5+WRnZ5OamkokEmHJkiXVtk+fPp0+ffqQmJhIx44dycrKYt26dcc9765du/j6179OSkoK7dq1o3///hQUFNQ1niRJaobqXFjKyspIT08nNzf3qNvPPvtscnJy2LhxI6tXr6ZXr14MGzaMffv21XjOf/zjHwwdOpTWrVvz3HPP8Ze//IWf/vSndOzYsa7xJElSMxSJRqPREz44EiEvL48RI0bUuE9paSnJycksX76czMzMo+4zefJkXnnlFVatWnWiUWKPU1JSQlJS0gmfR5IkNZ7avn836D0shw8f5tFHHyU5OZn09PQa93v22WcZOHAgo0aNokuXLgwYMIDHHnvsmOcuLy+ntLS02iJJkpqnBiksS5cupX379rRt25aHHnqIZcuW0blz5xr3/+tf/8rcuXM566yzeOGFF7j11luZMGECCxcurPGYWbNmkZycHFvS0tIa4qlIkqQQaJCPhMrKynj33XcpLi7mscce48UXX2TdunV06dLlqOdp06YNAwcOZM2aNbGxCRMmsH79el599dWjHlNeXk55eXlsvbS0lLS0ND8SkiSpCQn0I6HExETOPPNMLrroIubPn098fDzz58+vcf/u3btz7rnnVhv7zGc+w44dO2o8JiEhgaSkpGqLJElqnhplHpaqqqpqV0P+3dChQ9m8eXO1sbfeeovTTjutoaNJkqQmoM6F5eDBgxQVFVFUVATAtm3bKCoqYseOHZSVlfG9732PtWvXsn37djZs2MDNN9/Mrl27GDVqVOwcmZmZ5OTkxNbvvPNO1q5dy3333ceWLVtYvHgxjz76KOPGjTv5ZyhJkpq8+LoeUFBQQEZGRmx94sSJAIwdO5Z58+axadMmFi5cSHFxMSkpKQwaNIhVq1bRt2/f2DFbt26luLg4tj5o0CDy8vKYMmUKP/rRj+jduzdz5sxhzJgxJ/PcJElSM3FSN92GifOwSJLU9IRiHhZJkqT6YGGRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhV+fCkp+fT3Z2NqmpqUQiEZYsWVJt+/Tp0+nTpw+JiYl07NiRrKws1q1bV+vz33///UQiEe644466RpMkSc1UnQtLWVkZ6enp5ObmHnX72WefTU5ODhs3bmT16tX06tWLYcOGsW/fvuOee/369fziF7/gvPPOq2ssSZLUjMXX9YDhw4czfPjwGrd/7Wtfq7b+4IMPMn/+fP70pz+RmZlZ43EHDx5kzJgxPPbYY8yYMaOusSRJUjPWoPewHD58mEcffZTk5GTS09OPue+4ceP48pe/TFZWVkNGkiRJTVCdr7DUxtKlS7nuuus4dOgQ3bt3Z9myZXTu3LnG/Z988kkKCwtZv359rR+jvLyc8vLy2HppaelJZZYkSeHVIFdYMjIyKCoqYs2aNVx22WVcc8017N2796j77ty5k9tvv51FixbRtm3bWj/GrFmzSE5Oji1paWn1FV8tRCWV5JHHz/gZ+eQHHUeSdAyRaDQaPeGDIxHy8vIYMWLEMfc766yzuPnmm5kyZcoR25YsWcLIkSOJi4uLjVVWVhKJRGjVqhXl5eXVtn3iaFdY0tLSKCkpISkp6USfklqISioZwQiWspQIEaJE+SE/5B7uCTqaJLUopaWlJCcnH/f9u0E+Evp3VVVV1crFv8rMzGTjxo3Vxm666Sb69OnDpEmTjlpWABISEkhISKj3rGoZ/pf/ZSlLAYjyUWefxjTGMIYzOCPIaJKko6hzYTl48CBbtmyJrW/bto2ioiI6depESkoKM2fO5IorrqB79+4UFxeTm5vLrl27GDVqVOyYzMxMRo4cyfjx4+nQoQP9+vWr9hiJiYmkpKQcMS7Vl21sI444KqmsNv4iL1pYJCmE6lxYCgoKyMjIiK1PnDgRgLFjxzJv3jw2bdrEwoULKS4uJiUlhUGDBrFq1Sr69u0bO2br1q0UFxfXQ3zpxPSn/xFlBeA7fId3eZcpTKE1rQNIJkk6mpO6hyVMavsZmAQffQx0O7fzCI8cdfsABrCABZyHkxhKUkOq7fu3vyWkFilChJ/xM4oo4rf8ljd5k+/zfeL46J6p13mdgQxkBjOooCLgtJIkr7BI/6KAAm7kRv7Mn2NjF3ABC1lIP7ynSpLqm1dYpBMwkIFsYAPf43u0+vgfj0IKuYALmMlMPuTDgBNKUstkYZH+TQIJzGQma1nLuZwLQAUV/IAf0J/+DGIQfenLbdxGGWUBp5WklqFR5mGRmqJBDGIDG/ghP+QBHqCKKjaxKbb9Td7kb/yN3/LbAFNKUsvgFRbpGNrSllnM4lVepROdqm2LEmUpS9nDnoDSSVLLYWGRamEwg7mWa4kQOWLbYQ4HkEiSWhYLi1RLYxhz1PEHeCA2vb8kqWFYWKRaGspQ8sjjHM6hPe1j4znk8AN+EGAySWr+LCxSHXyVr7KJTRzgAAtYEBu/7+M/SVLDsLBIJ2gsY8klN7b+fb7Pz/hZgIkkqfmysEgn4Tt8hwd4ILZ+O7fzOI8HmEiSmicLi3SS7uZupjI1tv5NvsmTPBlgIklqfiwsUj34IT/kTu4EPpqf5Xqud0I5SapHFhapHkSI8FN+yi3cAsCHfMgoRrGc5QEnk6TmwcIi1ZMIEeYyl6/xNQDKKeerfJVXeCXgZJLU9FlYpHoURxwLWMAIRgBwiENczuUUUhhsMElq4iwsUj1rTWue5EmGMQyAUkoZxjD+zJ8DTiZJTZeFRWoACSSQRx6f43MA7Gc/WWSxhS0BJ5OkpsnCIjWQUziFpSxlIAMB2M1uMslkBzsCTiZJTY+FRWpASSTxPM/Tj34A7GAHWWSxm90BJ5OkpsXCIjWwFFJYxjLO4iwA3uZtvsgX2c/+gJNJUtNhYZEaQTe6sZzl9KQnAG/wBpdxGaWUBpxMkpoGC4vUSHrSkxWsoBvdACiggK/wFQ5xKOBkkhR+FhapEZ3JmSxnOSmkALCKVYxkJOWUB5xMksLNwiI1sr705Q/8gSSSAPgDf+BarqWCioCTSVJ4WVikAFzABfye33MKpwDwG37DjdxIJZUBJ5OkcLKwSAEZylCe5VkSSABgMYu5lVuJEg04mSSFj4VFClAmmfwP/0M88QA8xmNMZKKlRZL+jYVFClg22TzBE0SIADCHOUxjWsCpJClcLCxSCFzLtfwX/xVbv5d7eYAHAkwkSeFiYZFC4mZu5mEejq1PYhI/5+cBJpKk8LCwSCEygQncx32x9XGMYyELA0wkSeFgYZFCZsrHf5+4mZsZylC+ztdZycrggklSgOpcWPLz88nOziY1NZVIJMKSJUuqbZ8+fTp9+vQhMTGRjh07kpWVxbp16455zlmzZjFo0CA6dOhAly5dGDFiBJs3b65rNKnZmMlMbuM2AKqoYg1r+BW/4j/4D57juYDTSVLjq3NhKSsrIz09ndzc3KNuP/vss8nJyWHjxo2sXr2aXr16MWzYMPbt21fjOV9++WXGjRvH2rVrWbZsGRUVFQwbNoyysrK6xpOahQgR5jCH9rSPjVVRRZRotY+MJKmliESj0ROe8CESiZCXl8eIESNq3Ke0tJTk5GSWL19OZmZmrc67b98+unTpwssvv8znP//5Wh3zyeOUlJSQlJRUq2OksEshhfd474ixd3mX1rQOKJUk1Z/avn836D0shw8f5tFHHyU5OZn09PRaH1dSUgJAp06datynvLyc0tLSaovU3HyFr9Dq3/4x3c9+hjGMvewNKJUkNb4GKSxLly6lffv2tG3bloceeohly5bRuXPnWh1bVVXFHXfcwdChQ+nXr1+N+82aNYvk5OTYkpaWVl/xpdDIJZev8lUiH/99Ul5WspKBDKSAgoATSlLjaJDCkpGRQVFREWvWrOGyyy7jmmuuYe/e2v3X4Lhx43jjjTd48sknj7nflClTKCkpiS07d+6sj+hSqLSnPc/wDO/zPuWUs4pVdKMbADvZyWf5rF97ltQiNEhhSUxM5Mwzz+Siiy5i/vz5xMfHM3/+/OMeN378eJYuXcpLL71Ejx49jrlvQkICSUlJ1RapuUoggda05hIuYQMbuJiLASinnBu5kdu4jQoqAk4pSQ2nUeZhqaqqory8vMbt0WiU8ePHk5eXx4svvkjv3r0bI5bUJKWSykpW8m2+HRvLIYdMMtnDngCTSVLDqXNhOXjwIEVFRRQVFQGwbds2ioqK2LFjB2VlZXzve99j7dq1bN++nQ0bNnDzzTeza9cuRo0aFTtHZmYmOTk5sfVx48bxxBNPsHjxYjp06MDu3bvZvXs377///sk/Q6kZakMb5jKXx3iMNrQBYBWruJALeY3XAk4nSfWvzoWloKCAAQMGMGDAAAAmTpzIgAEDuOeee4iLi2PTpk1cddVVnH322WRnZ7N//35WrVpF3759Y+fYunUrxcXFsfW5c+dSUlLCpZdeSvfu3WPLU089VQ9PUWq+vsk3ySefVFIB2MUuPsfneJzHA04mSfXrpOZhCRPnYVFLtpvdjGIUq1kdG7uVW5nDHCJEnLNFUmiFYh4WSY2jG91YwQrGMS42Npe5JJNMG9rQjW78nt8HmFCSTo6FRWom2tCGHHJ4nMdJIAGAD/gAgD3sYQQjeJM3g4woSSfMwiI1MzdxEz/hJ0eMf8iHLGd5AIkk6eRZWKRmaAADjhiLEiWRxADSSNLJs7BIzdAQhnAJlxBHHADxxNOTnlzJlQEnk6QTEx90AEn1L554/sAfuJd7+SN/pBe9mMY0TuXUoKNJ0gmxsEjNVCKJ3M/9QceQpHrhR0KSJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn0LCySJCn06lxY8vPzyc7OJjU1lUgkwpIlS6ptnz59On369CExMZGOHTuSlZXFunXrjnve3NxcevXqRdu2bRkyZAivvfZaXaNJkqRmqs6FpaysjPT0dHJzc4+6/eyzzyYnJ4eNGzeyevVqevXqxbBhw9i3b1+N53zqqaeYOHEi06ZNo7CwkPT0dL70pS+xd+/eusaTJEnNUCQajUZP+OBIhLy8PEaMGFHjPqWlpSQnJ7N8+XIyMzOPus+QIUMYNGgQOTk5AFRVVZGWlsZtt93G5MmTa5Xlk8cpKSkhKSmpzs9FkiQ1vtq+fzfoPSyHDx/m0UcfJTk5mfT09Br32bBhA1lZWf8XqlUrsrKyePXVV2s8d3l5OaWlpdUWSZLUPDVIYVm6dCnt27enbdu2PPTQQyxbtozOnTsfdd/i4mIqKyvp2rVrtfGuXbuye/fuGh9j1qxZJCcnx5a0tLR6fQ6SJCk8GqSwZGRkUFRUxJo1a7jsssu45ppr6v1+lClTplBSUhJbdu7cWa/nlyRJ4dEghSUxMZEzzzyTiy66iPnz5xMfH8/8+fOPum/nzp2Ji4tjz5491cb37NlDt27danyMhIQEkpKSqi2SJKl5apR5WKqqqigvLz/qtjZt2nDhhReyYsWKavuvWLGCiy++uDHiSZKkkIuv6wEHDx5ky5YtsfVt27ZRVFREp06dSElJYebMmVxxxRV0796d4uJicnNz2bVrF6NGjYodk5mZyciRIxk/fjwAEydOZOzYsQwcOJDBgwczZ84cysrKuOmmm+rhKUqSpKauzoWloKCAjIyM2PrEiRMBGDt2LPPmzWPTpk0sXLiQ4uJiUlJSGDRoEKtWraJv376xY7Zu3UpxcXFs/dprr2Xfvn3cc8897N69m/PPP5/nn3/+iBtxJUlSy3RS87CEifOwSJLU9IRiHhZJkqT6YGGRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhZ2GRJEmhV+cfP5QkwfM8z8u8TAopfINv0JGOQUeSmjULiyTV0Y/5Mf/JfxJPPFVUkUMOG9hACilBR5OaLT8SkqQ6OMABJjMZgA/5kCqq2MlOfsbPAk4mNW8WFkmqg/3sp4qqamNVVLGFLQElkloGC4sk1cGn+TRd6UqESLXxF3jB0iI1IAuLJNVBa1rzLM/SiU7Vxvezn8/yWTayMaBkUvNmYZGkOhrMYHawg9d5nfWspx/9ANjDHr7AF1jHuoATSs2PhUWSTsApnML5nM9ABvIyLzOYwQD8g3+QSSYv8mLACaXmxcIiSSepE51YznIyyACgjDIu53J+w28CTiY1HxYWSaoHHejA7/k92WQDUE45V3EVi1gUcDKpebCwSFI9aUtbfs2v+RpfA6CSSq7nen7OzwNOJjV9FhZJqketac0v+SXf5tsARIkyjnHcz/0BJ5OaNguLJNWzVrTi5/w8NiMuwBSmMJnJRIkGmExquiwsktQAIkSY9fHfJ2Yzm+/wnSNmypV0fBYWSWpAk5nMz/l5bGbceczjeq6ngoqAk0lNi4VFkhrYrdzKL/klccQBsJjFXMVVfMAHASeTmg4LiyQ1gjGMIY88EkgA4Lf8lsu5nAMcCDiZ1DRYWCSpkWSTzXM8R3vaA/ASL5FFFu/xXsDJpPCzsEhSI8ogg+UspyMdAXiN1/gCX2AlK1nDGkopDTihFE4WFklqZEMYQj75dKMbAG/wBhlkMJSh9KY3r/FawAml8LGwSFIA+tGP1aymE52qjb/He4xghF99lv6NhUWSAnIGZ/AFvnDE+Lu8y372B5BICi8LiyQF6CzOotVR/lV8N3dziEMBJJLCqc6FJT8/n+zsbFJTU4lEIixZsiS2raKigkmTJtG/f38SExNJTU3lhhtu4J133jnmOSsrK5k6dSq9e/emXbt2nHHGGdx7771Eo05hLal5u5u76UlPgNjkcgALWcjFXMzbvB1UNClU6lxYysrKSE9PJzc394hthw4dorCwkKlTp1JYWMgzzzzD5s2bueKKK455ztmzZzN37lxycnJ48803mT17Ng888ACPPPJIXeNJUpPSmc68zuvkkssMZjCd6ZzCKQD8iT9xIRfya34dcEopeJHoSVzGiEQi5OXlMWLEiBr3Wb9+PYMHD2b79u307NnzqPt85StfoWvXrsyfPz82dtVVV9GuXTueeOKJWmUpLS0lOTmZkpISkpKS6vQ8JClM/sJfuJqreZM3Y2N3ciezmU1rWgeYTKp/tX3/bvB7WEpKSohEIpx66qk17nPJJZewYsUK3nrrLQD++Mc/snr1aoYPH17jMeXl5ZSWllZbJKk5OJdzeY3XGM3o2NhDPMSlXMrf+XuAyaTgNGhh+eCDD5g0aRKjR48+ZmuaPHky1113HX369KF169YMGDCAO+64gzFjxtR4zKxZs0hOTo4taWlpDfEUJCkQ7WnPIhbxc35OG9oAsIY1DGAAy1gWcDqp8TVYYamoqOCaa64hGo0yd+7cY+779NNPs2jRIhYvXkxhYSELFy7kJz/5CQsXLqzxmClTplBSUhJbdu7cWd9PQZICFSHCrdzKalZzGqcBUEwxX+JL/IgfOVeLWpT4hjjpJ2Vl+/btvPjii8e9p+Tuu++OXWUB6N+/P9u3b2fWrFmMHTv2qMckJCSQkJBQ79klKWwGMYhCCrmBG/gdvyNKlGlMYw1reIIn6EznoCNKDa7er7B8Ulbefvttli9fTkpKynGPOXToEK1aVY8SFxdHVZX/9SBJAJ3oxLM8y33cF5u35QVeYAADeJVXA04nNbw6F5aDBw9SVFREUVERANu2baOoqIgdO3ZQUVHB1VdfTUFBAYsWLaKyspLdu3eze/duDh8+HDtHZmYmOTk5sfXs7GxmzpzJ7373O/72t7+Rl5fHgw8+yMiRI0/+GUpSM9GKVkxhCstZTle6AvB3/s7n+TwP8zBRnLtKzVedv9a8cuVKMjIyjhgfO3Ys06dPp3fv3kc97qWXXuLSSy8FoFevXtx4441Mnz4dgAMHDjB16lTy8vLYu3cvqampjB49mnvuuYc2bdrUKpdfa5bUkrzLu1zHdeSTHxu7mquZz3yS8N+Bajpq+/59UvOwhImFRVJL8yEf8gN+wGxmx8bO4ix+za/pT/8Ak0m1F5p5WCRJDSOeeO7nfn7Db0gmGYC3eZshDGEhNX/LUmqKLCyS1MRdwRUUUsgFXADA+7zPjdzILdzC+7wfcDqpflhYJKkZOJ3TeYVX+Bbfio39F//FJVzCVrYGmEyqHxYWSWom2tKWeczjv/nv2A8oFlHEBVxAHnkBp5NOjoVFkpqZ67medazjHM4BoJRSruRKvst3qaAi4HTSibGwSFIz1I9+rGc913JtbOyn/JQMMtjFrgCTSSfGwiJJzVQHOvArfsUjPEJrWgPwCq8wgAGsYEXA6aS6sbBIUjMWIcJ4xrOKVfSkJwD72McX+SIzmOEPKKrJsLBIUgswhCEUUshwhgMQJcpUpvJlvsx+9gecTjo+C4sktRAppLCUpcxgRuwHFJ/neQYwgHWsCziddGwWFklqQVrRiu/zff7AH/gUnwJgJzv5HJ/jER7xBxQVWhYWSWqBMsnkdV7ns3wWgAoqmMAEruM6DnAg4HTSkSwsktRCfZpP8yIv8l2+Gxt7mqcZxCDe4A3KKXdqf4WGhUWSWrDWtObH/JhneIYkPvql3M1s5nzOpy1tOYVTOJ3TeYu3Ak6qls7CIkliJCMppJDzOR+ASipj27axjfM5n33sCyidZGGRJH3sDM5gDWtiV1r+1fu8z3/z3wGkkj5iYZEkxbSjHb3pfdRt3oyrIFlYJEnV/IgfHXU8i6xGTiL9HwuLJKmaK7iCx3mcDnQAIIEEHufx2FegpSBEotFos5glqLS0lOTkZEpKSkhKOvLzV0lS3R3gAIkkxmbGlepbbd+/4xsxkySpifnkKosUNCuzJEkKPQuLJEkKPQuLJEkKPQuLJEkKPQuLJEkKPQuLJEkKPQuLJEkKPQuLJEkKPQuLJEkKPQuLJEkKPQuLJEkKPQuLJEkKvToXlvz8fLKzs0lNTSUSibBkyZLYtoqKCiZNmkT//v1JTEwkNTWVG264gXfeeee45921axdf//rXSUlJoV27dvTv35+CgoK6xpMkSc1QnQtLWVkZ6enp5ObmHrHt0KFDFBYWMnXqVAoLC3nmmWfYvHkzV1xxxTHP+Y9//IOhQ4fSunVrnnvuOf7yl7/w05/+lI4dO9Y1niRJaoYi0Wg0esIHRyLk5eUxYsSIGvdZv349gwcPZvv27fTs2fOo+0yePJlXXnmFVatWnWgUSktLSU5OpqSkhKSkpBM+jyRJajy1ff9u8HtYSkpKiEQinHrqqTXu8+yzzzJw4EBGjRpFly5dGDBgAI899tgxz1teXk5paWm1RZIkNU8NWlg++OADJk2axOjRo4/Zmv76178yd+5czjrrLF544QVuvfVWJkyYwMKFC2s8ZtasWSQnJ8eWtLS0hngKkiQpBBrsI6GKigquuuoq/v73v7Ny5cpjFpY2bdowcOBA1qxZExubMGEC69ev59VXXz3qMeXl5ZSXl8fWS0tLSUtL8yMhSZKakEA/EqqoqOCaa65h+/btLFu27LgFonv37px77rnVxj7zmc+wY8eOGo9JSEggKSmp2iJJkpqn+Po+4Sdl5e233+all14iJSXluMcMHTqUzZs3Vxt76623OO200+o7niRJaoLqfIXl4MGDFBUVUVRUBMC2bdsoKipix44dVFRUcPXVV1NQUMCiRYuorKxk9+7d7N69m8OHD8fOkZmZSU5OTmz9zjvvZO3atdx3331s2bKFxYsX8+ijjzJu3LiTf4aSJKnJq/M9LCtXriQjI+OI8bFjxzJ9+nR69+591ONeeuklLr30UgB69erFjTfeyPTp02Pbly5dypQpU3j77bfp3bs3EydO5JZbbql1Lr/WLElS01Pb9++Tuuk2TCwskiQ1PaGZh0WSJOlkWVgkSVLoWVgkSVLoWVgkSQrIO7zDeMYzkpHMYAbllB//oBaq3udhkSRJx1dMMQMZyD728SEfsoQlrGMdz/IsESJBxwsdr7BIkhSARSxiD3v4kA9jY0tZSiGFAaY60gd8wIu8yB/4Awc4EFgOr7BIkhSAAxw46pWULLKYwARO53Se4RmiRBnLWK7iqkbPuIc9XMqlbGITAJ/m06xkJWdyZqNncR4WSZIC8BqvcREXEaV2b8MLWcgN3NDAqT5STDF/5s/czd0UUBDLGEccQxnKy7xcb4/lxHGSJIXcYhbzbb7NAQ7Qgx70ox/LWEYllUfsG0ccgxjEmf/ydwZncCZnkkLKUa/WvMmbrGUtKaQwnOG0pnW17e/xHn8+yt9e9taYuSMdeY/3Tv7Jf8zCIklSExAlyvu8zymcAsAOdpBOOv/kn7U+RzLJR5SY7WznXu6liioA+tOfb/Et3uKtWDHZze46ZY0jjvM4r17vs7GwSJLURE1iEj/mx9U+LmpPew5ysMEfuwtd6PvxX2c68xAPUUIJESIkksgKVjCYwfX2eLV9//amW0mSQuZe7qWUUh7ncaJEuYEbyCWXKqr4K39ly8d/W9ka+9/b2R67mlIbnekcKyb/+teZztX2u5VbeZZn+ZAPuZzL6UnP+n66teIVFkmSQuqTAtKqFrOQHOYw29nOFrbwJm8yiUnVvjINcCVXMp7x9KUvXejSIJnryisskiQ1cbUpKp9oQxvO+vhvOMM5ndO5lms5zGEAvsgX+RW/og1tGipug7KwSJLUDI1gBJvZzGu8Rmc68wW+QBxxQcc6YRYWSZKaqV4f/zUHTs0vSZJCz8IiSZJCz8IiSZJCz8IiSZJCz8IiSZJCz8IiSZJCz8IiSZJCz8IiSZJCz8IiSZJCz8IiSZJCz8IiSZJCr9n8llA0GgU++plqSZLUNHzyvv3J+3hNmk1hOXDgAABpaWkBJ5EkSXV14MABkpOTa9weiR6v0jQRVVVVvPPOO3To0IFIJBJ0HEpLS0lLS2Pnzp0kJSUFHUf4moSVr0v4+JqET3N+TaLRKAcOHCA1NZVWrWq+U6XZXGFp1aoVPXr0CDrGEZKSkprd/7maOl+TcPJ1CR9fk/Bprq/Jsa6sfMKbbiVJUuhZWCRJUuhZWBpIQkIC06ZNIyEhIego+pivSTj5uoSPr0n4+Jo0o5tuJUlS8+UVFkmSFHoWFkmSFHoWFkmSFHoWFkmSFHoWlnqWn59PdnY2qampRCIRlixZEnSkFm/WrFkMGjSIDh060KVLF0aMGMHmzZuDjtWizZ07l/POOy82CdbFF1/Mc889F3Qs/Yv777+fSCTCHXfcEXSUFm369OlEIpFqS58+fYKOFQgLSz0rKysjPT2d3NzcoKPoYy+//DLjxo1j7dq1LFu2jIqKCoYNG0ZZWVnQ0VqsHj16cP/997NhwwYKCgr4j//4D7761a/y5z//OehoAtavX88vfvELzjvvvKCjCOjbty/vvvtubFm9enXQkQLRbKbmD4vhw4czfPjwoGPoXzz//PPV1hcsWECXLl3YsGEDn//85wNK1bJlZ2dXW585cyZz585l7dq19O3bN6BUAjh48CBjxozhscceY8aMGUHHERAfH0+3bt2CjhE4r7CoxSkpKQGgU6dOAScRQGVlJU8++SRlZWVcfPHFQcdp8caNG8eXv/xlsrKygo6ij7399tukpqZy+umnM2bMGHbs2BF0pEB4hUUtSlVVFXfccQdDhw6lX79+Qcdp0TZu3MjFF1/MBx98QPv27cnLy+Pcc88NOlaL9uSTT1JYWMj69euDjqKPDRkyhAULFnDOOefw7rvv8sMf/pDPfe5zvPHGG3To0CHoeI3KwqIWZdy4cbzxxhst9jPgMDnnnHMoKiqipKSE//3f/2Xs2LG8/PLLlpaA7Ny5k9tvv51ly5bRtm3boOPoY/96i8F5553HkCFDOO2003j66af5xje+EWCyxmdhUYsxfvx4li5dSn5+Pj169Ag6TovXpk0bzjzzTAAuvPBC1q9fz8MPP8wvfvGLgJO1TBs2bGDv3r1ccMEFsbHKykry8/PJycmhvLycuLi4ABMK4NRTT+Xss89my5YtQUdpdBYWNXvRaJTbbruNvLw8Vq5cSe/evYOOpKOoqqqivLw86BgtVmZmJhs3bqw2dtNNN9GnTx8mTZpkWQmJgwcPsnXrVq6//vqgozQ6C0s9O3jwYLXmu23bNoqKiujUqRM9e/YMMFnLNW7cOBYvXsxvfvMbOnTowO7duwFITk6mXbt2AadrmaZMmcLw4cPp2bMnBw4cYPHixaxcuZIXXngh6GgtVocOHY64rysxMZGUlBTv9wrQd7/7XbKzsznttNN45513mDZtGnFxcYwePTroaI3OwlLPCgoKyMjIiK1PnDgRgLFjx7JgwYKAUrVsc+fOBeDSSy+tNv7//t//48Ybb2z8QGLv3r3ccMMNvPvuuyQnJ3Peeefxwgsv8MUvfjHoaFKo/P3vf2f06NHs37+fT33qU3z2s59l7dq1fOpTnwo6WqOLRKPRaNAhJEmSjsV5WCRJUuhZWCRJUuhZWCRJUuhZWCRJUuhZWCRJUuhZWCRJUuhZWCRJUuhZWCRJUuhZWCRJUuhZWCRJUuhZWCRJUuhZWCRJUuj9f8hsoUATHsfDAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib.axes import Axes\n", + "from matplotlib.collections import LineCollection\n", + "\n", + "\n", + "def render(line: LineAnimationStack, ax: Axes):\n", + " rl = line.as_renderable_line(1)\n", + " points = np.array([p.position for p in rl.points])\n", + "\n", + " colors = np.array([tuple(p.color.as_array()) for p in rl.points])\n", + "\n", + "\n", + " segments = np.stack([points[:-1], points[1:]], axis=1)\n", + " lc = LineCollection(segments, colors=colors[:-1], linewidth=2)\n", + " \n", + " ax.add_collection(lc)\n", + " ax.scatter(points[:, 0], points[:, 1], c=colors, s=10)\n", + " \n", + " # plt.scatter(closeby[:,0], closeby[:,1], c=colors, alpha=1)\n", + "\n", + "print(line_history.root.points)\n", + "print('---')\n", + "print(line_prediction.get(StartFromClosestPoint).from_point)\n", + "fig, ax = plt.subplots()\n", + "render(line_history, ax)\n", + "render(line_prediction, ax)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3aa9d65f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1.0, 2.0)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from trap.lines import KeyframeAnimator\n", + "from trap.utils import easeInOutQuad\n", + "\n", + "keypoints = [\n", + " (0.0, 0, 0), # \n", + " (0.1, 1.0, 2.0), # \n", + " (0.5, 1, 2.0), # At t=0.7, value=0.5\n", + " (1.0, .5, 100), # At t=1, value=0\n", + " ]\n", + "t=.3\n", + "anim = KeyframeAnimator(keypoints, easeInOutQuad)\n", + "anim.keypoints\n", + "anim.get_value(t)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c248325", + "metadata": {}, + "outputs": [], "source": [] } ], diff --git a/tests/track_history.ipynb b/tests/track_history.ipynb new file mode 100644 index 0000000..290902c --- /dev/null +++ b/tests/track_history.ipynb @@ -0,0 +1,776 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "485919cd", + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "from pathlib import Path\n", + "import time\n", + "from typing import List\n", + "\n", + "import numpy as np\n", + "from trap.base import Camera, Track\n", + "from trap.lines import Coordinate\n", + "from trap.tracker import FinalDisplacementFilter, Smoother, TrackReader\n", + "\n", + "from scipy.spatial import KDTree" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "53b68ede", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1 0 0]\n", + " [ 0 1 0]\n", + " [ 0 0 1]]\n" + ] + } + ], + "source": [ + "from trap.base import UndistortedCamera\n", + "\n", + "\n", + "path = Path(\"../EXPERIMENTS/raw/hof3/\")\n", + "dataset_path = Path(\"../DATASETS/hof3/\")\n", + "\n", + "path = Path(\"../EXPERIMENTS/raw/hof-lidar/\")\n", + "dataset_path = Path(\"../../DATASETS/hof-lidar/\")\n", + "logging.basicConfig(level=logging.DEBUG)\n", + "\n", + "calibration_path = dataset_path / \"calibration.json\"\n", + "homography_path = dataset_path / \"homography.json\"\n", + "camera = Camera.from_paths(calibration_path, homography_path, 12)\n", + "camera = UndistortedCamera()\n", + "\n", + "print(camera.H)\n", + "# device = device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "998e73c6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:history:loaded 32 tracks\n", + "DEBUG:history:after filtering left with 23 tracks\n", + "ERROR:trap.base:WARNING, gap between frames 632 -> 322 is negative?\n", + "ERROR:trap.base:WARNING, gap between frames 1003 -> 895 is negative?\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:history:interpolated 23 tracks\n", + "DEBUG:history:smoothed\n", + "DEBUG:history:projected to world space\n", + "DEBUG:history:built tree\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loaded 23 tracks in 0.16331720352172852s\n" + ] + } + ], + "source": [ + "\n", + "\n", + "from trap.track_history import TrackHistory\n", + "\n", + "\n", + "s = time.time()\n", + "history = TrackHistory(path, camera, None)\n", + "dt = time.time() - s\n", + "print(f'loaded {len(history.state.tracks)} tracks in {dt}s')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "cba8c9b0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "history" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "122e3311", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:matplotlib.pyplot:Loaded backend module://matplotlib_inline.backend_inline version unknown.\n", + "DEBUG:matplotlib.pyplot:Loaded backend module://matplotlib_inline.backend_inline version unknown.\n", + "DEBUG:matplotlib.font_manager:findfont: Matching sans\\-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0.\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 1.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymBol.ttf', name='STIXSizeThreeSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymReg.ttf', name='STIXSizeTwoSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 0.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansDisplay.ttf', name='DejaVu Sans Display', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymReg.ttf', name='STIXSizeFourSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneral.ttf', name='STIXGeneral', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBolIta.ttf', name='STIXNonUnicode', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmtt10.ttf', name='cmtt10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralItalic.ttf', name='STIXGeneral', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniIta.ttf', name='STIXNonUnicode', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymBol.ttf', name='STIXSizeOneSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymBol.ttf', name='STIXSizeFourSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmex10.ttf', name='cmex10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Oblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 1.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBolIta.ttf', name='STIXGeneral', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmss10.ttf', name='cmss10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmb10.ttf', name='cmb10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmr10.ttf', name='cmr10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmsy10.ttf', name='cmsy10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBol.ttf', name='STIXGeneral', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFiveSymReg.ttf', name='STIXSizeFiveSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymReg.ttf', name='STIXSizeThreeSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmmi10.ttf', name='cmmi10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUni.ttf', name='STIXNonUnicode', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-BoldOblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 0.33499999999999996\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBol.ttf', name='STIXNonUnicode', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymReg.ttf', name='STIXSizeOneSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymBol.ttf', name='STIXSizeTwoSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerifDisplay.ttf', name='DejaVu Serif Display', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Bold.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-regular.otf', name='TeX Gyre Adventor', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-MediumItalic.ttf', name='Lato', style='italic', variant='normal', weight=500, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman5-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoslant10-regular.otf', name='Latin Modern Mono Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyredejavu-math.otf', name='TeX Gyre DejaVu Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonocaps10-regular.otf', name='Latin Modern Mono Caps', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansdemicond10-regular.otf', name='Latin Modern Sans Demi Cond', style='normal', variant='normal', weight=600, stretch='condensed', size='scalable')) = 10.44\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-italic.otf', name='TeX Gyre Cursor', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-bolditalic.otf', name='TeX Gyre Pagella', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans9-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-bold.otf', name='TeX Gyre Pagella', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoltcond10-regular.otf', name='Latin Modern Mono Light Cond', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Hairline.ttf', name='Lato', style='normal', variant='normal', weight=100, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant12-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-bolditalic.otf', name='TeX Gyre Bonum', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Bold.ttf', name='Quicksand', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant10-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Medium.ttf', name='Quicksand Medium', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-DemiItalic.otf', name='URW Bookman', style='italic', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-bolditalic.otf', name='TeX Gyre Adventor', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-boldoblique.otf', name='Latin Modern Mono Prop Light', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansdemicond10-oblique.otf', name='Latin Modern Sans Demi Cond', style='oblique', variant='normal', weight=600, stretch='condensed', size='scalable')) = 11.44\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-BoldItalic.ttf', name='Liberation Sans', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-BdIta.otf', name='C059', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-bold.otf', name='TeX Gyre Heros', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf', name='Droid Sans Fallback', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoprop10-oblique.otf', name='Latin Modern Mono Prop', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Light.ttf', name='Quicksand Light', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyrebonum-math.otf', name='TeX Gyre Bonum Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='condensed', size='scalable')) = 11.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Italic.ttf', name='Liberation Sans', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-HairlineItalic.ttf', name='Lato', style='italic', variant='normal', weight=100, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 10.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-LightItalic.otf', name='URW Bookman', style='italic', variant='normal', weight=300, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman6-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-oblique.otf', name='Latin Modern Mono Prop Light', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Oblique.otf', name='Nimbus Sans Narrow', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-regular.otf', name='TeX Gyre Schola', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Regular.otf', name='Nimbus Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans8-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-BoldOblique.otf', name='Nimbus Sans Narrow', style='oblique', variant='normal', weight=700, stretch='condensed', size='scalable')) = 11.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/Z003-MediumItalic.otf', name='Z003', style='italic', variant='normal', weight=500, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-bold.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyretermes-math.otf', name='TeX Gyre Termes Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant8-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-italic.otf', name='TeX Gyre Heros Cn', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 1.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-italic.otf', name='TeX Gyre Termes', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-bold.otf', name='Latin Modern Mono Prop Light', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-BoldItalic.ttf', name='Liberation Mono', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-bold.otf', name='Latin Modern Sans Quotation', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-bold.otf', name='TeX Gyre Termes', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrechorus-mediumitalic.otf', name='TeX Gyre Chorus', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant9-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-BoldItalic.otf', name='Nimbus Sans', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-bold.otf', name='TeX Gyre Adventor', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-BoldItalic.otf', name='Nimbus Mono PS', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Light.ttf', name='Lato', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans12-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-Demi.otf', name='URW Bookman', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Regular.otf', name='Nimbus Mono PS', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/StandardSymbolsPS.otf', name='Standard Symbols PS', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-SemiboldItalic.ttf', name='Lato', style='italic', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Black.ttf', name='Lato', style='normal', variant='normal', weight=900, stretch='normal', size='scalable')) = 10.525\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Roman.otf', name='P052', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Bold.otf', name='Cantarell', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-regular.otf', name='Latin Modern Sans Quotation', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-Light.otf', name='URW Bookman', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-boldoblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonocaps10-oblique.otf', name='Latin Modern Mono Caps', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandemi10-regular.otf', name='Latin Modern Roman Demi', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuMathTeXGyre.ttf', name='DejaVu Math TeX Gyre', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm-math/latinmodern-math.otf', name='Latin Modern Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoSansMono-Bold.ttf', name='Noto Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-bolditalic.otf', name='TeX Gyre Schola', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-ExtraBold.otf', name='Cantarell', style='normal', variant='normal', weight=800, stretch='normal', size='scalable')) = 10.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='condensed', size='scalable')) = 1.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono8-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-bold.otf', name='TeX Gyre Bonum', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-italic.otf', name='TeX Gyre Adventor', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Bold.ttf', name='Lato', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-bolditalic.otf', name='TeX Gyre Termes', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Bold.ttf', name='Liberation Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman6-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Bold.ttf', name='Liberation Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-bold.otf', name='Latin Modern Mono Light', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans12-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-BoldItalic.otf', name='P052', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Roman.otf', name='C059', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Italic.otf', name='P052', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-boldoblique.otf', name='Latin Modern Mono Light', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Bold.otf', name='Nimbus Sans Narrow', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 10.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-ThinItalic.ttf', name='Lato', style='italic', variant='normal', weight=200, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-bold.otf', name='TeX Gyre Heros Cn', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Italic.otf', name='C059', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans9-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-oblique.otf', name='Latin Modern Sans Quotation', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Medium.ttf', name='Lato', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Semibold.ttf', name='Lato', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/ancient-scripts/Symbola_hint.ttf', name='Symbola', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman5-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-HeavyItalic.ttf', name='Lato', style='italic', variant='normal', weight=800, stretch='normal', size='scalable')) = 11.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-bold.otf', name='TeX Gyre Cursor', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-italic.otf', name='TeX Gyre Heros', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono12-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans17-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandemi10-oblique.otf', name='Latin Modern Roman Demi', style='oblique', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Thin.ttf', name='Lato', style='normal', variant='normal', weight=200, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-DemiOblique.otf', name='URW Gothic', style='oblique', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-ExtraLight.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=200, stretch='normal', size='scalable')) = 0.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Italic.ttf', name='Lato', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Italic.otf', name='Nimbus Sans', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-bolditalic.otf', name='TeX Gyre Heros Cn', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Regular.ttf', name='Liberation Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-italic.otf', name='TeX Gyre Bonum', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 0.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Regular.ttf', name='Lato', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/D050000L.otf', name='D050000L', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Bold.ttf', name='Liberation Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-italic.otf', name='TeX Gyre Schola', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf', name='Noto Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Italic.ttf', name='Liberation Mono', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandunh10-regular.otf', name='Latin Modern Roman Dunhill', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-regular.otf', name='TeX Gyre Cursor', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-italic.otf', name='TeX Gyre Pagella', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono9-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandunh10-oblique.otf', name='Latin Modern Roman Dunhill', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Italic.ttf', name='Liberation Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-BoldItalic.otf', name='Nimbus Roman', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-regular.otf', name='Latin Modern Roman Caps', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman17-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-regular.otf', name='Latin Modern Mono Prop Light', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-oblique.otf', name='Latin Modern Mono Light', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono10-italic.otf', name='Latin Modern Mono', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-BoldItalic.ttf', name='Liberation Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Regular.otf', name='Cantarell', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-oblique.otf', name='Latin Modern Roman Caps', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Regular.ttf', name='Quicksand', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanunsl10-regular.otf', name='Latin Modern Roman Unslanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant10-bold.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-BoldItalic.ttf', name='Lato', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-BoldOblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-LightItalic.ttf', name='Lato', style='italic', variant='normal', weight=300, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Oblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Regular.ttf', name='Liberation Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans8-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bolditalic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-regular.otf', name='TeX Gyre Heros', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Bold.otf', name='Nimbus Mono PS', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Light.otf', name='Cantarell', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Heavy.ttf', name='Lato', style='normal', variant='normal', weight=800, stretch='normal', size='scalable')) = 10.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 1.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Bold.otf', name='Nimbus Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Bold.otf', name='C059', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 0.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono10-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf', name='Liberation Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', name='Noto Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-bold.otf', name='TeX Gyre Schola', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-boldoblique.otf', name='Latin Modern Sans Quotation', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Regular.otf', name='Nimbus Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-regular.otf', name='TeX Gyre Bonum', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-Book.otf', name='URW Gothic', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Bold.otf', name='P052', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-Demi.otf', name='URW Gothic', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoltcond10-oblique.otf', name='Latin Modern Mono Light Cond', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant17-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans17-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-BlackItalic.ttf', name='Lato', style='italic', variant='normal', weight=900, stretch='normal', size='scalable')) = 11.525\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-regular.otf', name='TeX Gyre Pagella', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoprop10-regular.otf', name='Latin Modern Mono Prop', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-regular.otf', name='TeX Gyre Termes', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/libreoffice/opens___.ttf', name='OpenSymbol', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Bold.otf', name='Nimbus Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Thin.otf', name='Cantarell', style='normal', variant='normal', weight=100, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 0.5349999999999999\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 0.33499999999999996\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-regular.otf', name='Latin Modern Mono Light', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-bolditalic.otf', name='TeX Gyre Heros', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Regular.otf', name='Nimbus Sans Narrow', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyrepagella-math.otf', name='TeX Gyre Pagella Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-BookOblique.otf', name='URW Gothic', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Italic.otf', name='Nimbus Mono PS', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-regular.otf', name='TeX Gyre Heros Cn', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-bolditalic.otf', name='TeX Gyre Cursor', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Italic.otf', name='Nimbus Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 1.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyreschola-math.otf', name='TeX Gyre Schola Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: Matching sans\\-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0 to DejaVu Sans ('/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf') with score of 0.050000.\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:matplotlib.font_manager:findfont: Matching sans\\-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0.\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 1.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymBol.ttf', name='STIXSizeThreeSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymReg.ttf', name='STIXSizeTwoSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 0.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansDisplay.ttf', name='DejaVu Sans Display', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymReg.ttf', name='STIXSizeFourSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneral.ttf', name='STIXGeneral', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBolIta.ttf', name='STIXNonUnicode', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmtt10.ttf', name='cmtt10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralItalic.ttf', name='STIXGeneral', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniIta.ttf', name='STIXNonUnicode', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymBol.ttf', name='STIXSizeOneSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymBol.ttf', name='STIXSizeFourSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmex10.ttf', name='cmex10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Oblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 1.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBolIta.ttf', name='STIXGeneral', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmss10.ttf', name='cmss10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmb10.ttf', name='cmb10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmr10.ttf', name='cmr10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmsy10.ttf', name='cmsy10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBol.ttf', name='STIXGeneral', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFiveSymReg.ttf', name='STIXSizeFiveSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymReg.ttf', name='STIXSizeThreeSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/cmmi10.ttf', name='cmmi10', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUni.ttf', name='STIXNonUnicode', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-BoldOblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 0.33499999999999996\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBol.ttf', name='STIXNonUnicode', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymReg.ttf', name='STIXSizeOneSym', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymBol.ttf', name='STIXSizeTwoSym', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerifDisplay.ttf', name='DejaVu Serif Display', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Bold.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-regular.otf', name='TeX Gyre Adventor', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-MediumItalic.ttf', name='Lato', style='italic', variant='normal', weight=500, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman5-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoslant10-regular.otf', name='Latin Modern Mono Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyredejavu-math.otf', name='TeX Gyre DejaVu Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonocaps10-regular.otf', name='Latin Modern Mono Caps', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansdemicond10-regular.otf', name='Latin Modern Sans Demi Cond', style='normal', variant='normal', weight=600, stretch='condensed', size='scalable')) = 10.44\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-italic.otf', name='TeX Gyre Cursor', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-bolditalic.otf', name='TeX Gyre Pagella', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans9-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-bold.otf', name='TeX Gyre Pagella', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoltcond10-regular.otf', name='Latin Modern Mono Light Cond', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Hairline.ttf', name='Lato', style='normal', variant='normal', weight=100, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant12-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-bolditalic.otf', name='TeX Gyre Bonum', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Bold.ttf', name='Quicksand', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant10-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Medium.ttf', name='Quicksand Medium', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-DemiItalic.otf', name='URW Bookman', style='italic', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-bolditalic.otf', name='TeX Gyre Adventor', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-boldoblique.otf', name='Latin Modern Mono Prop Light', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansdemicond10-oblique.otf', name='Latin Modern Sans Demi Cond', style='oblique', variant='normal', weight=600, stretch='condensed', size='scalable')) = 11.44\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-BoldItalic.ttf', name='Liberation Sans', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-BdIta.otf', name='C059', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-bold.otf', name='TeX Gyre Heros', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf', name='Droid Sans Fallback', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoprop10-oblique.otf', name='Latin Modern Mono Prop', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Light.ttf', name='Quicksand Light', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyrebonum-math.otf', name='TeX Gyre Bonum Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-BoldItalic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=700, stretch='condensed', size='scalable')) = 11.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Italic.ttf', name='Liberation Sans', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-HairlineItalic.ttf', name='Lato', style='italic', variant='normal', weight=100, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Bold.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 10.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-LightItalic.otf', name='URW Bookman', style='italic', variant='normal', weight=300, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman6-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-oblique.otf', name='Latin Modern Mono Prop Light', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Oblique.otf', name='Nimbus Sans Narrow', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-regular.otf', name='TeX Gyre Schola', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed.ttf', name='DejaVu Serif', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Regular.otf', name='Nimbus Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans8-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-BoldOblique.otf', name='Nimbus Sans Narrow', style='oblique', variant='normal', weight=700, stretch='condensed', size='scalable')) = 11.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/Z003-MediumItalic.otf', name='Z003', style='italic', variant='normal', weight=500, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-bold.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyretermes-math.otf', name='TeX Gyre Termes Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant8-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-italic.otf', name='TeX Gyre Heros Cn', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 1.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-italic.otf', name='TeX Gyre Termes', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-bold.otf', name='Latin Modern Mono Prop Light', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-BoldItalic.ttf', name='Liberation Mono', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-bold.otf', name='Latin Modern Sans Quotation', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-bold.otf', name='TeX Gyre Termes', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrechorus-mediumitalic.otf', name='TeX Gyre Chorus', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant9-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-BoldItalic.otf', name='Nimbus Sans', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-bold.otf', name='TeX Gyre Adventor', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-BoldItalic.otf', name='Nimbus Mono PS', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Light.ttf', name='Lato', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans12-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-Demi.otf', name='URW Bookman', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Regular.otf', name='Nimbus Mono PS', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/StandardSymbolsPS.otf', name='Standard Symbols PS', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-SemiboldItalic.ttf', name='Lato', style='italic', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Black.ttf', name='Lato', style='normal', variant='normal', weight=900, stretch='normal', size='scalable')) = 10.525\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Roman.otf', name='P052', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Bold.otf', name='Cantarell', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-regular.otf', name='Latin Modern Sans Quotation', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWBookman-Light.otf', name='URW Bookman', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-boldoblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonocaps10-oblique.otf', name='Latin Modern Mono Caps', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandemi10-regular.otf', name='Latin Modern Roman Demi', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuMathTeXGyre.ttf', name='DejaVu Math TeX Gyre', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm-math/latinmodern-math.otf', name='Latin Modern Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoSansMono-Bold.ttf', name='Noto Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-bolditalic.otf', name='TeX Gyre Schola', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-ExtraBold.otf', name='Cantarell', style='normal', variant='normal', weight=800, stretch='normal', size='scalable')) = 10.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='condensed', size='scalable')) = 1.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono8-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-bold.otf', name='TeX Gyre Bonum', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreadventor-italic.otf', name='TeX Gyre Adventor', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Bold.ttf', name='Lato', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-bolditalic.otf', name='TeX Gyre Termes', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Bold.ttf', name='Liberation Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman6-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Bold.ttf', name='Liberation Serif', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-bold.otf', name='Latin Modern Mono Light', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans12-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-BoldItalic.otf', name='P052', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Roman.otf', name='C059', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Italic.otf', name='P052', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-boldoblique.otf', name='Latin Modern Mono Light', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Bold.otf', name='Nimbus Sans Narrow', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 10.535\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-ThinItalic.ttf', name='Lato', style='italic', variant='normal', weight=200, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-bold.otf', name='TeX Gyre Heros Cn', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Italic.otf', name='C059', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans9-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-oblique.otf', name='Latin Modern Sans Quotation', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Medium.ttf', name='Lato', style='normal', variant='normal', weight=500, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Semibold.ttf', name='Lato', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/ancient-scripts/Symbola_hint.ttf', name='Symbola', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman5-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-HeavyItalic.ttf', name='Lato', style='italic', variant='normal', weight=800, stretch='normal', size='scalable')) = 11.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-bold.otf', name='TeX Gyre Cursor', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-italic.otf', name='TeX Gyre Heros', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono12-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans17-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandemi10-oblique.otf', name='Latin Modern Roman Demi', style='oblique', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Thin.ttf', name='Lato', style='normal', variant='normal', weight=200, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-DemiOblique.otf', name='URW Gothic', style='oblique', variant='normal', weight=600, stretch='normal', size='scalable')) = 11.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-ExtraLight.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=200, stretch='normal', size='scalable')) = 0.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Italic.ttf', name='Lato', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Italic.otf', name='Nimbus Sans', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-bolditalic.otf', name='TeX Gyre Heros Cn', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Regular.ttf', name='Liberation Serif', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman7-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-italic.otf', name='TeX Gyre Bonum', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 0.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Regular.ttf', name='Lato', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/D050000L.otf', name='D050000L', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Bold.ttf', name='Liberation Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-italic.otf', name='TeX Gyre Schola', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf', name='Noto Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Italic.ttf', name='Liberation Mono', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandunh10-regular.otf', name='Latin Modern Roman Dunhill', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-regular.otf', name='TeX Gyre Cursor', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-italic.otf', name='TeX Gyre Pagella', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono9-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromandunh10-oblique.otf', name='Latin Modern Roman Dunhill', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-Italic.ttf', name='Liberation Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-BoldItalic.otf', name='Nimbus Roman', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-regular.otf', name='Latin Modern Roman Caps', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman17-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-regular.otf', name='Latin Modern Mono Prop Light', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-oblique.otf', name='Latin Modern Mono Light', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono10-italic.otf', name='Latin Modern Mono', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman12-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSerif-BoldItalic.ttf', name='Liberation Serif', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Regular.otf', name='Cantarell', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromancaps10-oblique.otf', name='Latin Modern Roman Caps', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/quicksand/Quicksand-Regular.ttf', name='Quicksand', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-regular.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanunsl10-regular.otf', name='Latin Modern Roman Unslanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSerif-Italic.ttf', name='DejaVu Serif', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant10-bold.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-BoldItalic.ttf', name='Lato', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-BoldOblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-LightItalic.ttf', name='Lato', style='italic', variant='normal', weight=300, stretch='normal', size='scalable')) = 11.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Oblique.ttf', name='DejaVu Sans Mono', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationSans-Regular.ttf', name='Liberation Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans8-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bolditalic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-regular.otf', name='TeX Gyre Heros', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Bold.otf', name='Nimbus Mono PS', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Light.otf', name='Cantarell', style='normal', variant='normal', weight=300, stretch='normal', size='scalable')) = 10.145\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-Heavy.ttf', name='Lato', style='normal', variant='normal', weight=800, stretch='normal', size='scalable')) = 10.43\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 1.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf', name='DejaVu Sans Mono', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Bold.otf', name='Nimbus Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman9-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/C059-Bold.otf', name='C059', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 0.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmono10-regular.otf', name='Latin Modern Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf', name='Liberation Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', name='Noto Mono', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreschola-bold.otf', name='TeX Gyre Schola', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-boldoblique.otf', name='Latin Modern Sans Quotation', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Regular.otf', name='Nimbus Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrebonum-regular.otf', name='TeX Gyre Bonum', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman8-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-Book.otf', name='URW Gothic', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/P052-Bold.otf', name='P052', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-Demi.otf', name='URW Gothic', style='normal', variant='normal', weight=600, stretch='normal', size='scalable')) = 10.24\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoltcond10-oblique.otf', name='Latin Modern Mono Light Cond', style='oblique', variant='normal', weight=400, stretch='condensed', size='scalable')) = 11.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmromanslant17-regular.otf', name='Latin Modern Roman Slanted', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-italic.otf', name='Latin Modern Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans17-regular.otf', name='Latin Modern Sans', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/lato/Lato-BlackItalic.ttf', name='Lato', style='italic', variant='normal', weight=900, stretch='normal', size='scalable')) = 11.525\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-regular.otf', name='TeX Gyre Pagella', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonoprop10-regular.otf', name='Latin Modern Mono Prop', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf', name='Latin Modern Roman', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyretermes-regular.otf', name='TeX Gyre Termes', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/libreoffice/opens___.ttf', name='OpenSymbol', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSans-Bold.otf', name='Nimbus Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/cantarell/Cantarell-Thin.otf', name='Cantarell', style='normal', variant='normal', weight=100, stretch='normal', size='scalable')) = 10.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='condensed', size='scalable')) = 0.5349999999999999\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', name='DejaVu Sans', style='normal', variant='normal', weight=700, stretch='normal', size='scalable')) = 0.33499999999999996\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-regular.otf', name='Latin Modern Mono Light', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheros-bolditalic.otf', name='TeX Gyre Heros', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusSansNarrow-Regular.otf', name='Nimbus Sans Narrow', style='normal', variant='normal', weight=400, stretch='condensed', size='scalable')) = 10.25\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyrepagella-math.otf', name='TeX Gyre Pagella Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/URWGothic-BookOblique.otf', name='URW Gothic', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/lm/lmsans10-oblique.otf', name='Latin Modern Sans', style='oblique', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Italic.otf', name='Nimbus Mono PS', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyreheroscn-regular.otf', name='TeX Gyre Heros Cn', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrecursor-bolditalic.otf', name='TeX Gyre Cursor', style='italic', variant='normal', weight=700, stretch='normal', size='scalable')) = 11.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/opentype/urw-base35/NimbusRoman-Italic.otf', name='Nimbus Roman', style='italic', variant='normal', weight=400, stretch='normal', size='scalable')) = 11.05\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf', name='DejaVu Sans', style='oblique', variant='normal', weight=700, stretch='normal', size='scalable')) = 1.335\n", + "DEBUG:matplotlib.font_manager:findfont: score(FontEntry(fname='/usr/share/texmf/fonts/opentype/public/tex-gyre-math/texgyreschola-math.otf', name='TeX Gyre Schola Math', style='normal', variant='normal', weight=400, stretch='normal', size='scalable')) = 10.05\n", + "DEBUG:matplotlib.font_manager:findfont: Matching sans\\-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0 to DejaVu Sans ('/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf') with score of 0.050000.\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "track = list(history.state.tracks.values())[3]\n", + "trajectory_crop = history.state.track_histories[track.track_id]\n", + "trajectory_org = track.get_projected_history(camera=camera)\n", + "target_point = trajectory_org[len(trajectory_org)//2+90]\n", + "\n", + "import matplotlib.pyplot as plt # Visualization \n", + "\n", + "plt.gca().set_aspect('equal')\n", + "plt.scatter(trajectory_crop[:,0], trajectory_crop[:,1], c='orange')\n", + "plt.plot(trajectory_org[:,0], trajectory_org[:,1], c='blue', alpha=.2)\n", + "plt.scatter(target_point[0], target_point[1], c='red', alpha=1)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bbbf97c9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'2446 track points in the set'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f\"{len(history.state.indexed_track_ids)} track points in the set\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d22c1f35", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "track_set = history.get_nearest_tracks(target_point, 10, max_r=np.inf)\n", + "\n", + "\n", + "\n", + "plt.gca().set_aspect('equal')\n", + "plt.scatter(trajectory_crop[:,0], trajectory_crop[:,1], c='orange')\n", + "plt.plot(trajectory_org[:,0], trajectory_org[:,1], c='blue', alpha=1)\n", + "plt.scatter(target_point[0], target_point[1], c='red', alpha=1)\n", + "for track_id in track_set:\n", + " closeby = history.state.tracks[track_id].get_projected_history(camera=camera)\n", + " plt.plot(closeby[:,0], closeby[:,1], c='green', alpha=.1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6478440c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "trap-py3.10", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/trap/anomaly.py b/trap/anomaly.py index 5664271..02404e5 100644 --- a/trap/anomaly.py +++ b/trap/anomaly.py @@ -168,8 +168,8 @@ def calculate_loitering_scores(track: ProjectedTrack, min_duration_to_linger, li linger_frames +=1 else: # decay if moving faster - linger_duration = max(linger_duration - 3, 0) - linger_frames = max(linger_frames - 3, 0) + linger_duration = max(linger_duration - 1.5, 0) + linger_frames = max(linger_frames - 1.5, 0) # Calculate loitering score if total_frames > 0: diff --git a/trap/lidar_tracker.py b/trap/lidar_tracker.py index c7e512e..fe729e7 100644 --- a/trap/lidar_tracker.py +++ b/trap/lidar_tracker.py @@ -1,7 +1,9 @@ from argparse import ArgumentParser from collections import defaultdict, deque, namedtuple from copy import copy +import json from pathlib import Path +import pickle import select import socket from turtle import update @@ -219,25 +221,27 @@ class Lidar(Node): else: self.sequence_generator = read_live_data(self.config.ip, self.config.port, config) - self.tracker = BYTETracker(frame_rate=10) + self.tracker = BYTETracker(frame_rate=ASSUMED_FPS) self.tracks: DefaultDict[str, Track] = defaultdict(lambda: Track()) - self.room_filter = AdaptiveVoxelFilter( - voxel_size=.5, - nr_of_frames_to_static=120 * ASSUMED_FPS , # (confidence_threshold * update_interval) = nr of frames needed to count as static - nr_of_frames_to_unstatic=10 * ASSUMED_FPS, - update_interval=20, #not every frame needs to impact history - decay_rate=1 - ) - # self.room_filter = VoxelOccupancyFilter( - # voxel_size=.5, - # history_size=80, - # history_interval=20, #not every frame needs to impact history - # ready_for_action_at=25, - # static_threshold=0.3 + # self.room_filter = AdaptiveVoxelFilter( + # voxel_size=.25, + # nr_of_frames_to_static=120 * ASSUMED_FPS , # (confidence_threshold * update_interval) = nr of frames needed to count as static + # nr_of_frames_to_unstatic=120 * ASSUMED_FPS, # 1/3 + # update_interval=20, #not every frame needs to impact history + # grow_rate=4, + # decay_rate=1, # ) + + self.room_filter = VoxelOccupancyFilter( + voxel_size=.4, + history_size=80, + history_interval=20, #not every frame needs to impact history + ready_for_action_at=25, + static_threshold=0.3 + ) self.debug_lines = load_lines_from_svg(self.config.debug_map, 100, '') if self.config.debug_map else [] @@ -442,6 +446,7 @@ class Lidar(Node): # a = time.perf_counter() filtered_pcd, dropped_indexes = self.room_filter.remove_static(current_pcd) + # print(len(filtered_pcd.points), len(dropped_indexes)) if self.config.viz and len(dropped_indexes): @@ -480,13 +485,18 @@ class Lidar(Node): points_2d = project_to_xy(filtered_pcd) + + # with open('/tmp/points.pcl', 'wb') as fp: + # pickle.dump(points_2d, fp) clusters = self.cluster_2d( points_2d, ) + # print(len(clusters)) # boxes, centroids = get_cluster_boxes(points_2d, labels, min_area= 0.3*0.3) boxes, centroids = get_cluster_boxes(clusters, min_area= self.get_setting('lidar.min_box_area', .1)) + # print(centroids) # append confidence and class (placeholders) @@ -558,8 +568,12 @@ class Lidar(Node): for line_set in line_sets: vis.add_geometry(line_set, False) elif self.config.viz: - + print('initializing') + if hasattr(self.room_filter, 'scan_counter'): + print(self.room_filter.scan_counter, self.room_filter.nr_of_frames_to_init) line_sets = [] + filtered_pcd.paint_uniform_color([.5]*3) + dropped_pcds.append(filtered_pcd) live_filtered_pcd.points = o3d.utility.Vector3dVector(np.empty([0,3])) @@ -584,9 +598,9 @@ class Lidar(Node): live_pcd.points = dropped_pcd.points live_pcd.colors = dropped_pcd.colors - color = [0.5, 0.5, 0.7] if self.room_filter.initialised else [0.7, 0.7, 0.7] + color = [0.2, 0.7, 0.2] if self.room_filter.initialised else [0.7, 0.7, 0.7] # live_pcd.paint_uniform_color(color) - live_filtered_pcd.paint_uniform_color([0.2, 0.7, 0.2]) + live_filtered_pcd.paint_uniform_color(color) if not geom_added: vis.add_geometry(live_filtered_pcd, True) @@ -693,7 +707,7 @@ class Lidar(Node): elif method == 'birch': process_subclusters = self.get_setting('lidar.birch_process_subclusters', True) labels = Birch( - max_eps=self.get_setting('lidar.birch_threshold', 1), # "The radius of the subcluster obtained by merging a new sample" + threshold=self.get_setting('lidar.birch_threshold', 1), # "The radius of the subcluster obtained by merging a new sample" branching_factor=self.get_setting('lidar.birch_branching_factor', 50), n_clusters=None if not process_subclusters else DBSCAN( eps=self.get_setting('lidar.eps', .132), @@ -705,9 +719,9 @@ class Lidar(Node): return [] - # db.labels_ clusters = [] - for label in labels: + + for label in np.unique(labels): if label == -1: continue # Skip noise @@ -1019,6 +1033,7 @@ class VoxelOccupancyFilter: filtered_pcd.points = o3d.utility.Vector3dVector(np.array(filtered_points)) return filtered_pcd, dropped_indexes +AdaptiveVoxelFilterCache = namedtuple("AdaptiveVoxelFilterCache", ("scan_counter", "static_map", "initialised")) class AdaptiveVoxelFilter: def __init__( @@ -1027,6 +1042,7 @@ class AdaptiveVoxelFilter: nr_of_frames_to_static=720, nr_of_frames_to_unstatic=720, decay_rate=1, + grow_rate=3, update_interval=10, ): """ @@ -1039,22 +1055,50 @@ class AdaptiveVoxelFilter: decay_rate (int): How much to decrement confidence for unoccupied voxels per scan. update_interval (int): Update static map every N scans. """ + self.nr_of_frames_to_static = nr_of_frames_to_static + self.nr_of_frames_to_unstatic = nr_of_frames_to_unstatic + self.nr_of_frames_to_init = self.nr_of_frames_to_static + self.nr_of_frames_to_unstatic self.confidence_threshold = (nr_of_frames_to_static / update_interval) * decay_rate self.max_occupancy_score = (nr_of_frames_to_unstatic / update_interval) * decay_rate + self.confidence_threshold self.voxel_size = voxel_size # self.confidence_threshold = confidence_threshold # self.max_occupancy_score = max_occupancy_score self.decay_rate = decay_rate + self.grow_rate = grow_rate self.update_interval = update_interval # Static map: {voxel: confidence} - self.static_map: Dict[Tuple[int, int], int] = defaultdict(int) + self.static_map: Dict[Tuple[int, int, int], int] = defaultdict(int) # Counter for update interval self.scan_counter = 0 + self.cache_load_if_exists() + self.initialised = False + + def cache_save(self): + data = AdaptiveVoxelFilterCache(self.scan_counter, self.static_map, self.initialised) + with self.cache_fname().open('wb') as fp: + pickle.dump(data, fp) + logger.info(f"Wrote voxel filter to cache {self.cache_fname()}") + + def cache_load_if_exists(self): + # data = AdaptiveVoxelFilterCache(self.scan_counter, self.static_map) + if self.cache_fname().exists(): + logger.info(f"Load voxel filter from cache {self.cache_fname()}") + with self.cache_fname().open('rb') as fp: + data = pickle.load(fp) + assert type(data) == AdaptiveVoxelFilterCache + self.static_map = data.static_map + self.scan_counter = data.scan_counter + self.initialised = data.initialised + + + def cache_fname(self): + props = f"{self.voxel_size}-{self.nr_of_frames_to_static}-{self.nr_of_frames_to_unstatic}" + return Path(f"/tmp/voxel_filter-{props}.pcl") def remove_static(self, current_pcd): @@ -1086,14 +1130,16 @@ class AdaptiveVoxelFilter: # Update static map and confidence self.scan_counter += 1 - if self.scan_counter % self.update_interval == 0: - if not self.initialised and self.scan_counter > self.confidence_threshold: + if not self.initialised or self.scan_counter % self.update_interval == 0: + if not self.initialised and self.scan_counter > self.nr_of_frames_to_init: self.initialised = True - + logger.info('Initialised static filter') + self.cache_save() + # Add new voxels to static map for voxel in current_voxel_set: if self.static_map[voxel] < self.max_occupancy_score: - self.static_map[voxel] += 1 + self.static_map[voxel] += self.grow_rate # Decay confidence for voxels not in current scan for voxel in list(self.static_map.keys()): diff --git a/trap/lines.py b/trap/lines.py index 40c4bcf..2bcf474 100644 --- a/trap/lines.py +++ b/trap/lines.py @@ -22,7 +22,7 @@ import svgpathtools from noise import snoise2 from trap import renderable_pb2 -from trap.utils import exponentialDecay, exponentialDecayRounded, inv_lerp, relativePointToPolar, relativePolarToPoint +from trap.utils import easeInOutQuad, exponentialDecay, exponentialDecayRounded, inv_lerp, lerp, relativePointToPolar, relativePolarToPoint """ @@ -57,6 +57,9 @@ class SrgbaColor(): def __eq__(self, other): return math.isclose(self.red, other.red) and math.isclose(self.green, other.green) and math.isclose(self.blue, other.blue) and math.isclose(self.alpha, other.alpha) + + def as_array(self): + return [self.red, self.green, self.blue, self.alpha] @dataclass @@ -311,24 +314,43 @@ class AppendableLine(LineGenerator): # create origin self.drawn_points.append(self.target_points[0]) # and drawing head - self.drawn_points.append(self.target_points[0]) + # self.drawn_points.append(self.target_points[0]) + + target_l = shapely.geometry.LineString(self.target_points).length + current_l = shapely.geometry.LineString(self.drawn_points).length if len(self.drawn_points) > 1 else 0 + req_l = exponentialDecayRounded(self.current_l, target_l, self.draw_decay_speed, dt, .05) + + if np.isclose(req_l, target_l): + self.drawn_points = self.target_points + else: + distance_to_do = req_l - current_l + + idx = len(self.drawn_points) - 1 + while distance_to_do: + target = self.target_points[idx] + this_distance = np.array(self.drawn_points[-1] ) - np.array(target) + if this_distance > distance_to_do: + break + distance_to_do - this_distance + + idx+=1 + self.drawn_points.append(target) - idx = len(self.drawn_points) - 1 - target = self.target_points[idx] - if np.isclose(self.drawn_points[-1], target, atol=.05).all(): - # TODO: might want to migrate to np.isclose() - if len(self.drawn_points) == len(self.target_points): - self.ready = True - return # done until a new point is added - - # add new point as drawing head - self.drawn_points.append(self.drawn_points[-1]) - self.ready = False - x = exponentialDecayRounded(self.drawn_points[-1][0], target[0], self.draw_decay_speed, dt, .05) - y = exponentialDecayRounded(self.drawn_points[-1][1], target[1], self.draw_decay_speed, dt, .05) - self.drawn_points[-1] = (float(x), float(y)) + if np.isclose(self.drawn_points[-1], self.target_points[idx], atol=.05).all(): + # TODO: might want to migrate to np.isclose() + if len(self.drawn_points) == len(self.target_points): + self.ready = True + return # done until a new point is added + + # add new point as drawing head + self.drawn_points.append(self.drawn_points[-1]) + self.ready = False + + x = exponentialDecayRounded(self.drawn_points[-1][0], target[0], self.draw_decay_speed, dt, .05) + y = exponentialDecayRounded(self.drawn_points[-1][1], target[1], self.draw_decay_speed, dt, .05) + self.drawn_points[-1] = (float(x), float(y)) class ProceduralChain(LineGenerator): """A line that can be 'dragged' to a target. In which @@ -640,13 +662,21 @@ class CropLine(LineAnimator): Crop the line at a max nr of points (thus not actual lenght!) Keeps the tail, removes the start """ - def __init__(self, target_line = None, max_points = 200): + def __init__(self, target_line = None, max_points: Optional[int] = None, start_offset: Optional[int] = None): super().__init__(target_line) + self.start_offset = start_offset self.max_points = max_points self.ready = True # static filter, always ready def apply(self, target_line: RenderableLine, dt: DeltaT) -> RenderableLine: - target_line.points = target_line.points[-1 * self.max_points:] + if self.start_offset: + if len(target_line) <= self.start_offset: + return RenderableLine([]) + target_line.points = target_line.points[self.start_offset:] + + if self.max_points: + target_line.points = target_line.points[-1 * self.max_points:] + return target_line @@ -834,7 +864,7 @@ class NoiseLine(LineAnimator): # noise_y = noise([x * frequency, (y + dt) * frequency]) * amplitude * normal_y noise = snoise2(i * frequency, t % 1000, octaves=4) - use_amp = amplitude + use_amp = amplitude[i] if hasattr(amplitude, "__getitem__") else amplitude if fade_over_n_points > 0: rev_step = len(drawable_points) - i amp_factor = rev_step / fade_over_n_points @@ -905,6 +935,19 @@ class SegmentLine(LineAnimator): return (ls.length * t, ls.length) else: return (0, ls.length * t) + + @classmethod + def anim_follow_in_front(cls, t: float, ls: shapely.geometry.LineString): + keypoints = [ + (0.0, 0, 0), # + (0.07, 1.0, 2.0), # + (0.3, 1.5, 2.0), # At t=0.7, value=0.5 + (0.6, 1, 1.5), # At t=0.7, value=0.5 + (0.7, 1.2, 1.5), # At t=0.7, value=0.5 + (0.7, 1, 1.8), # At t=0.7, value=0.5 + (1.0, .5, ls.length), # At t=1, value=0 + ] + return KeyframeAnimator(keypoints, easeInOutQuad).get_value(t) def apply(self, target_line: RenderableLine, dt: DeltaT): @@ -925,6 +968,57 @@ class SegmentLine(LineAnimator): return RenderableLine.from_linestring(line, target_line.points[0].color) + + +class KeyframeAnimator: + def __init__( + self, + keypoints: List[Tuple[float, float, float]], + easing_func: Callable[[float], float] = None, + ): + """ + Initialize the animator with keypoints and an optional easing function. + + Args: + keypoints: List of (t_value, value) tuples, where t_value is in [0, 1]. + easing_func: Optional function to apply easing to `t` (e.g., easeInOutQuad). + """ + self.keypoints = sorted(keypoints, key=lambda x: x[0]) + self.easing_func = easing_func + + def get_value(self, t: float) -> float: + """ + Get the interpolated value at time `t` (0 <= t <= 1). + + Args: + t: Normalized time (0 to 1). + + Returns: + Interpolated value at time `t`. + """ + if self.easing_func: + t = self.easing_func(t) + + # Handle edge cases + if t <= self.keypoints[0][0]: + return self.keypoints[0][1], self.keypoints[0][2] + if t >= self.keypoints[-1][0]: + return self.keypoints[-1][1], self.keypoints[-1][2] + + # Find the two keypoints surrounding `t` + for i in range(len(self.keypoints) - 1): + t0, val0, valb0 = self.keypoints[i] + t1, val1, valb1 = self.keypoints[i + 1] + + if t0 <= t <= t1: + # Normalize `t` between t0 and t1 + local_t = inv_lerp(t0, t1, t) + + # Interpolate between val0 and val1 + + return lerp(val0, val1, local_t), lerp(valb0, valb1, local_t) + + return self.keypoints[-1][1], self.keypoints[-1][2] # fallback class DashedLine(LineAnimator): @@ -980,9 +1074,12 @@ class DashedLine(LineAnimator): if len(target_line) < 2: self.ready = True return target_line + + gap_len = gap_len if not callable(self.gap_len) else self.gap_len(dt, self.running_for()) + dash_len = dash_len if not callable(self.dash_len) else self.dash_len(dt, self.running_for()) ls = target_line.as_linestring() - multilinestring = self.dashed_line(ls, self.dash_len, self.gap_len, self.t_factor * self.running_for(), self.loop_offset) + multilinestring = self.dashed_line(ls, dash_len, gap_len, self.t_factor * self.running_for(), self.loop_offset) # when looping, it is always ready, otherwise, only if totally gone @@ -1019,17 +1116,54 @@ class StartFromClosestPoint(LineAnimator): distance = math.inf idx = 0 from_point = np.array(self.from_point) + # print(from_point) for i, point in enumerate(target_line.points): + if i < 2: + continue # skip the first to avoid jitter + to_point = np.array(point.position) new_distance = np.linalg.norm(from_point-to_point) if new_distance < distance: distance = new_distance - idx = i + idx = i+1 else: break - # print(idx, target_line.points[idx]) - return RenderableLine(target_line.points[idx:]) + + if idx >= len(target_line.points): + logger.warning("Empty line") + return RenderableLine([]) + points = [] + if idx > 0: + p = target_line.points[idx] + p.position = self.from_point + + points.append(p) + points.extend(target_line.points[idx:]) + # print(from_point, idx, [p.position for p in target_line.points[max(0,idx-5):idx+5]]) + return RenderableLine(points) + + @classmethod + def find_closest_to_point(cls, point: Tuple[Coordinate], points: List[Coordinate]): + from_point = np.array(point) + # idx = 0 + # distance = math.inf + if len(points) == 0: + return None + + # print(points) + # print(points- from_point) + # print(np.array(points) - from_point) + idx = np.argmin(np.linalg.norm(np.array(points) - from_point, axis=1)) + # for i, to_point in enumerate(points): + # to_point = np.array(to_point) + # new_distance = np.linalg.norm(from_point-to_point) + # if new_distance < distance: + # distance = new_distance + # idx = i+1 + # else: + # break + return idx @@ -1053,11 +1187,19 @@ class RotatingLine(LineAnimator): self.ready = True return target_line - origin = target_line.points[0] - if len(self.drawn_points) < 1: self.drawn_points = target_line.points + # find closest point to start from: + + origin = target_line.points[0] + # closest_idx = StartFromClosestPoint.find_closest_to_point(origin.position, [p.position for p in self.drawn_points]) + # if closest_idx: + # print('cut at', closest_idx) + # self.drawn_points = self.drawn_points[closest_idx:] # hard cutof + + + diff_length = len(target_line) - len(self.drawn_points) if diff_length < 0: # drawn points is larger self.drawn_points = self.drawn_points[:len(target_line)] @@ -1095,56 +1237,218 @@ class RotatingLine(LineAnimator): is_ready.append(np.isclose(drawn_point.position, target_point.position, atol=.05).all()) self.ready = all(is_ready) + return RenderableLine(self.drawn_points) +from scipy.ndimage import gaussian_filter1d +from scipy.signal import find_peaks + class NoodleWiggler(LineAnimator): """When a line is 'noodling' don't draw it as a whole, but sway it animated + + Work in progress """ def __init__(self, target_line = None): super().__init__(target_line) + self.range = 10 + self.threshold = 1.8 + self.smoothing_sigma = 2 + self.t = 0 + self.t_factor = 4 def apply(self, target_line, dt): - return target_line + if len(target_line) < 2: + return target_line + + self.t += dt + + scores = [] + distances = [np.linalg.norm(np.array(a.position)- np.array(b.position)) for a,b in zip(target_line.points, target_line.points[1:])] + + # 1) find points with high distance traveled relative to displacement. This is noodling + for i, point in enumerate(target_line.points): + if i < self.range: + scores.append(0) + if len(target_line.points) < i + self.range: + scores.append(0) + + a = target_line.points[i-self.range] + b = target_line.points[i+self.range] + + net_distance = np.linalg.norm(np.array(a.position)- np.array(b.position)) + gross_distance = sum(distances[i-self.range:i-self.range-1]) + self.scores.append(max(0, gross_distance/net_distance - self.threshold)) + + # 2) smooth the curve + smoothed_scores = gaussian_filter1d(scores, sigma=self.smoothing_sigma) + + # 3) find the peaks ; most intense noodling points + peak_idxs, _ = find_peaks(smoothed_scores, height=0.5) + + # 4) for peaks, find start-peak-end indexes + segments = self.connect_peaks_to_segments(smoothed_scores, peak_idxs) + + points, scores = self.replace_noodling_segments(scores, target_line, segments, 4) + + # 5) apply noise according to score + new_points = NoiseLine.apply_perlin_noise_to_line_normal( + drawable_points=[p.position for p in points], + amplitude=scores, + t = self.t * self.t_factor, + frequency= 2 + ) + + # 6) rebuild as line + points = [] + for point, pos in zip(target_line.points, new_positions): + p = copy.deepcopy(point) + p.position = pos + points.append(p) + + + return RenderableLine(points) + + + @classmethod + def connect_peaks_to_segments(cls, scores, peaks, threshold=0.3, min_segment_length=1) -> List [Tuple[int, int, int]]: + """ + returns a list of tuples: (start_idx, peak_idx, end_idx) + """ + segments = [] + i = 0 + n = len(scores) + + while i < len(peaks): + peak = peaks[i] + start = peak + end = peak + + # Expand left + while start > 0 and scores[start - 1] > threshold: + start -= 1 + + # Expand right + while end < n - 1 and scores[end + 1] > threshold: + end += 1 + + # Merge with next peak if close + if i < len(peaks) - 1 and peaks[i + 1] - end < min_segment_length: + i += 1 + continue + + segments.append((start, peak, end)) + i += 1 + + return segments @classmethod - def detect_noodling_sections(cls, line, segment_length=0.1, ratio_threshold=2.0): + def replace_noodling_segments(cls, scores: List[float], target_line: RenderableLine, segments, num_interpolated_points = 4): """ - Detects noodling sections in a LineString using the ratio of actual length to straight-line distance. + Replace noodling segments in target_line with a fixed number of interpolated points, + while preserving all non-noodling sections. Args: - line (LineString): Input LineString. - segment_length (float): Length of each segment as a fraction of the total line length. - ratio_threshold (float): Threshold for the ratio (actual_length / straight_line_distance). + target_line: Object with a `points` attribute (list of point objects). + segments: List of tuples (start_index, end_index) for noodling segments. + num_interpolated_points: Number of intermediate points to insert between start and end. Returns: - list: List of noodling segments (as LineStrings). + A new list of points with noodling segments replaced. """ - noodling_sections = [] - total_length = line.length - segment_start = 0.0 + new_points = [] + new_scores = [] + i = 0 + n = len(target_line.points) - while segment_start < 1.0: - segment_end = min(segment_start + segment_length, 1.0) - segment = substring(line, segment_start, segment_end, normalized=True) + for start, peak, end in segments: + # Add all points up to the start of the noodling segment + while i < start: + new_points.append(target_line.points[i]) + new_scores.append(scores[i]) + i += 1 - # Calculate straight-line distance between start and end points - start_point = Point(segment.coords[0]) - end_point = Point(segment.coords[-1]) - straight_line_distance = start_point.distance(end_point) + # Skip the noodling segment and add interpolated points + start_point = target_line.points[start] + peak_point = target_line.points[peak] + end_point = target_line.points[end] - # Calculate actual length of the segment - actual_length = segment.length + start_score = scores[start] + peak_score = scores[peak] + end_score = scores[end] - # Check if the ratio exceeds the threshold - if straight_line_distance > 0 and (actual_length / straight_line_distance) > ratio_threshold: - noodling_sections.append(segment) + # Interpolate between start and peak + for j in range(num_interpolated_points + 2): # +2 to include start and peak + t = inv_lerp(0, num_interpolated_points + 1, j) + new_x = lerp(start_point.position[0], peak_point.position[0], t) + new_y = lerp(start_point.position[1], peak_point.position[1], t) + new_score = lerp(start_score, peak_score, t) + new_point = RenderablePoint(position=(new_x, new_y), color=start_point.color) + new_points.append(new_point) + new_scores.append(new_score) - segment_start = segment_end + # Interpolate between peak and end (skip peak to avoid duplication) + for j in range(1, num_interpolated_points + 2): # +2 to include peak and end + t = inv_lerp(0, num_interpolated_points + 1, j) + new_x = lerp(peak_point.position[0], end_point.position[0], t) + new_y = lerp(peak_point.position[1], end_point.position[1], t) + new_score = lerp(peak_score, end_score, t) + new_point = RenderablePoint(position=(new_x, new_y), color=start_point.color) + new_points.append(new_point) + new_scores.append(new_score) - return noodling_sections + i = end + 1 # Skip to the end of the noodling segment + + # Add remaining points after the last noodling segment + while i < n: + new_points.append(target_line.points[i]) + new_scores.append(scores[i]) + i += 1 + + return new_points, scores + + + + + + # @classmethod + # def detect_noodling_sections(cls, line, segment_length=0.1, ratio_threshold=2.0): + # """ + # Detects noodling sections in a LineString using the ratio of actual length to straight-line distance. + + # Args: + # line (LineString): Input LineString. + # segment_length (float): Length of each segment as a fraction of the total line length. + # ratio_threshold (float): Threshold for the ratio (actual_length / straight_line_distance). + + # Returns: + # list: List of noodling segments (as LineStrings). + # """ + # noodling_sections = [] + # total_length = line.length + # segment_start = 0.0 + + # while segment_start < 1.0: + # segment_end = min(segment_start + segment_length, 1.0) + # segment = substring(line, segment_start, segment_end, normalized=True) + + # # Calculate straight-line distance between start and end points + # start_point = Point(segment.coords[0]) + # end_point = Point(segment.coords[-1]) + # straight_line_distance = start_point.distance(end_point) + + # # Calculate actual length of the segment + # actual_length = segment.length + + # # Check if the ratio exceeds the threshold + # if straight_line_distance > 0 and (actual_length / straight_line_distance) > ratio_threshold: + # noodling_sections.append(segment) + + # segment_start = segment_end + + # return noodling_sections # # Example usage: # line = LineString([(0, 0), (0.1, 0.1), (0.2, 0.2), (0.3, 0.1), (0.4, 0.2), (1, 1)]) diff --git a/trap/prediction_server.py b/trap/prediction_server.py index e53580a..4161d95 100644 --- a/trap/prediction_server.py +++ b/trap/prediction_server.py @@ -449,7 +449,9 @@ class PredictionServer(Node): # print('preds', len(predictions[0][0])) if not len(history) or np.isnan(history[-1]).any(): - logger.warning('skip for no history') + logger.warning(f'skip for no history @ {ts_key} [{len(prediction_dict)=}, {len(histories_dict)=}, {len(futures_dict)=}]') + logger.info(f"{preds=}") + continue # response[node.id] = { diff --git a/trap/process_data.py b/trap/process_data.py index eb07b36..b33a271 100644 --- a/trap/process_data.py +++ b/trap/process_data.py @@ -148,6 +148,18 @@ def process_data(src_dir: Path, dst_dir: Path, name: str, smooth_tracks: bool, n tracks = filter.apply(tracks, camera) print(f"Filtered: {len(tracks)} tracks") + skip_idxs = [] + for idx, track in enumerate(tracks): + track_history = track.get_projected_history(camera=camera) + distances = np.sqrt(np.sum(np.diff(track_history, axis=0)**2, axis=1)) + # print(trajectory_org) + # print(distances) + if any(distances > 3): + skip_idxs.append(idx) + for idx in skip_idxs: + tracks.pop(idx) + print(f"Filtered {len(skip_idxs)} tracks which contained leaps") + total = len(tracks) bar = tqdm.tqdm(total=total) diff --git a/trap/settings.py b/trap/settings.py index be0a2db..219865c 100644 --- a/trap/settings.py +++ b/trap/settings.py @@ -30,7 +30,7 @@ class Settings(Node): self.load() dpg.create_context() - dpg.create_viewport(title='Trap settings', width=600, height=200) + dpg.create_viewport(title='Trap settings', width=600, height=1200) dpg.setup_dearpygui() @@ -38,10 +38,11 @@ class Settings(Node): dpg.add_text(f"Settings from {self.config.settings_file}") dpg.add_button(label="Save", callback=self.save) - with dpg.window(label="Stage", pos=(0, 150)): - self.register_setting(f'stage.fps', dpg.add_checkbox(label="FPS cap", default_value=self.get_setting(f'stage.fps', 30), callback=self.on_change)) + with dpg.window(label="Stage", pos=(150, 0)): + self.register_setting(f'stage.fps', dpg.add_slider_int(label="FPS cap", default_value=self.get_setting(f'stage.fps', 30), callback=self.on_change)) + self.register_setting(f'stage.prediction_interval', dpg.add_slider_int(label="prediction interval", default_value=self.get_setting('stage.prediction_interval', 18), callback=self.on_change)) - with dpg.window(label="Lidar", pos=(0, 250)): + with dpg.window(label="Lidar", pos=(0, 100), autosize=True): self.register_setting(f'lidar.crop_map_boundaries', dpg.add_checkbox(label="crop_map_boundaries", default_value=self.get_setting(f'lidar.crop_map_boundaries', True), callback=self.on_change)) self.register_setting(f'lidar.viz_cropping', dpg.add_checkbox(label="viz_cropping", default_value=self.get_setting(f'lidar.viz_cropping', True), callback=self.on_change)) self.register_setting(f'lidar.tracking_enabled', dpg.add_checkbox(label="tracking_enabled", default_value=self.get_setting(f'lidar.tracking_enabled', True), callback=self.on_change)) @@ -60,9 +61,9 @@ class Settings(Node): dpg.add_separator(label="Cluster filter") self.register_setting(f'lidar.min_box_area', dpg.add_slider_float(label="min_box_area", default_value=self.get_setting(f'lidar.min_box_area', .1), min_value=0, max_value=1, callback=self.on_change)) - for lidar in ["192.168.0.16", "192.168.0.10"]: + for i, lidar in enumerate(["192.168.0.16", "192.168.0.10"]): name = lidar.replace(".", "_") - with dpg.window(label=f"Lidar {lidar}", pos=(200, 0),autosize=True): + with dpg.window(label=f"Lidar {lidar}", pos=(i * 300, 450),autosize=True): # dpg.add_text("test") # dpg.add_input_text(label="string", default_value="Quick brown fox") self.register_setting(f'lidar.{name}.enabled', dpg.add_checkbox(label="enabled", default_value=self.get_setting(f'lidar.{name}.enabled', True), callback=self.on_change)) diff --git a/trap/stage.py b/trap/stage.py index ce8b3af..62cf62f 100644 --- a/trap/stage.py +++ b/trap/stage.py @@ -25,6 +25,7 @@ from trap.counter import CounterSender from trap.lines import AppendableLine, AppendableLineAnimator, Coordinate, CoordinateSpace, CropAnimationLine, CropLine, DashedLine, DeltaT, FadeOutJitterLine, FadeOutLine, FadedEndsLine, FadedTailLine, LineAnimationStack, LineAnimator, NoiseLine, RenderableLayers, RenderableLine, RenderableLines, RotatingLine, SegmentLine, SimplifyLine, SimplifyMethod, SrgbaColor, StartFromClosestPoint, StaticLine, layers_to_message, load_lines_from_svg from trap.node import Node from trap.track_history import TrackHistory +from trap.utils import lerp logger = logging.getLogger('trap.stage') @@ -39,13 +40,13 @@ TRACK_ASSUMED_FPS = 12 LOST_FADEOUT = 2 # seconds -PREDICTION_INTERVAL: float|None = 20 # frames +PREDICTION_INTERVAL: int|None = int(TRACK_ASSUMED_FPS * 1.2) # frames PREDICTION_FADE_IN: float = 3 PREDICTION_FADE_SLOPE: float = -10 PREDICTION_FADE_AFTER_DURATION: float = 8 # seconds PREDICTION_END_FADE = 2 #frames # TRACK_MAX_POINTS = 100 -TRACK_FADE_AFTER_DURATION = 15. # seconds +TRACK_FADE_AFTER_DURATION = 9. # seconds TRACK_END_FADE = 30 # points TRACK_FADE_ASSUME_FPS = TRACK_ASSUMED_FPS @@ -70,15 +71,16 @@ class SceneInfo: priority: int description: str = "" takeover_possible: bool = False # whether to allow for other scenarios to steal the stage + takeover_possible_after: float = -1 class ScenarioScene(Enum): DETECTED = SceneInfo(4, "First detection") SUBSTANTIAL = SceneInfo(6, "Multiple detections") FIRST_PREDICTION = SceneInfo(10, "Prediction is ready") CORRECTED_PREDICTION = SceneInfo(11, "Multiple predictions") - LOITERING = SceneInfo(7, "Foundto be loitering", takeover_possible=True) # TODO: create "possible after" - PLAY = SceneInfo(7, description="After many predictions; just fooling around", takeover_possible=True) - LOST = SceneInfo(-1, description="Track lost", takeover_possible=True) + LOITERING = SceneInfo(7, "Foundto be loitering", takeover_possible=True, takeover_possible_after=10) # TODO: create "possible after" + PLAY = SceneInfo(7, description="After many predictions; just fooling around", takeover_possible=True, takeover_possible_after=10) + LOST = SceneInfo(-1, description="Track lost", takeover_possible=True, takeover_possible_after=0) Time = float @@ -131,8 +133,9 @@ class PrioritySlotItem(): class Scenario(PrioritySlotItem): - def __init__(self, track_id): + def __init__(self, track_id, stage: Stage): super().__init__(track_id) + self.stage = stage self.track_id = track_id self.scene: ScenarioScene = ScenarioScene.DETECTED @@ -161,7 +164,10 @@ class Scenario(PrioritySlotItem): return self.scene.value.priority def can_be_taken_over(self): - return self.scene.value.takeover_possible + if self.scene.value.takeover_possible: + if time.perf_counter() - self.state_change_at > self.scene.value.takeover_possible_after: + return True + return False def track_age(self): if not self.track: @@ -291,8 +297,8 @@ class Scenario(PrioritySlotItem): # in case of the unlikely event that prediction was received sooner self.recv_track(track) - - if PREDICTION_INTERVAL is not None and len(self.prediction_tracks) and (track.frame_index - self.prediction_tracks[-1].frame_index) < PREDICTION_INTERVAL: + interval = self.stage.get_setting('stage.prediction_interval', PREDICTION_INTERVAL) + if interval is not None and len(self.prediction_tracks) and (track.frame_index - self.prediction_tracks[-1].frame_index) < interval: # just drop tracks if the predictions come to quick return @@ -317,7 +323,7 @@ def build_line_others(): line_others = LineAnimationStack(StaticLine([], others_color)) # line_others.add(SegmentLine(line_others.tail, duration=3, anim_f=partial(SegmentLine.anim_grow, in_and_out=True, max_len=5))) line_others.add(SimplifyLine(line_others.tail, 0.001)) # Simplify before effects, so they don't distort - line_others.add(CropAnimationLine(line_others.tail, lambda dt: 10 + math.sin(dt/4) * 70, assume_fps=TRACK_ASSUMED_FPS*2)) # speed up + line_others.add(CropAnimationLine(line_others.tail, 70, assume_fps=TRACK_ASSUMED_FPS*2)) # speed up line_others.add(NoiseLine(line_others.tail, amplitude=0, t_factor=.3)) # line_others.add(DashedLine(line_others.tail, t_factor=4, loop_offset=True)) # line_others.get(DashedLine).skip = True @@ -336,8 +342,8 @@ class DrawnScenario(Scenario): MAX_HISTORY = 130 # points of history of trajectory to display (preventing too long lines) CUT_GAP = 5 # when adding a new prediction, keep the existing prediction until that point + this CUT_GAP margin - def __init__(self, track_id): - super().__init__(track_id) + def __init__(self, track_id, stage: Stage): + super().__init__(track_id, stage) self.last_update_t = time.perf_counter() self.active_ptrack: Optional[ProjectedTrack] = None @@ -353,14 +359,25 @@ class DrawnScenario(Scenario): self.prediction_color = SrgbaColor(0,1,0,1) self.line_prediction = LineAnimationStack(StaticLine([], self.prediction_color)) + + self.line_prediction.add(CropLine(self.line_prediction.tail, start_offset=0)) + self.line_prediction.add(StartFromClosestPoint(self.line_prediction.tail)) + self.line_prediction.get(StartFromClosestPoint).skip=True self.line_prediction.add(RotatingLine(self.line_prediction.tail, decay_speed=16)) self.line_prediction.get(RotatingLine).skip = False - self.line_prediction.add(SegmentLine(self.line_prediction.tail, duration=.5)) - self.line_prediction.get(SegmentLine).skip = True + self.line_prediction.add(SegmentLine(self.line_prediction.tail, duration=7, anim_f=SegmentLine.anim_follow_in_front)) + self.line_prediction.get(SegmentLine).skip = False self.line_prediction.add(SimplifyLine(self.line_prediction.tail, 0.003)) # Simplify before effects, so they don't distort - self.line_prediction.add(DashedLine(self.line_prediction.tail, dash_len=.6, gap_len=0.9, t_factor=2, loop_offset=True)) - self.line_prediction.get(DashedLine).skip = False - self.line_prediction.add(StartFromClosestPoint(self.line_prediction.tail)) + GAP_DURATION = 5 + def dash_len(dt, t): + t=min(1, t/GAP_DURATION) + return lerp(.99, .6, t) + def gap_len(dt, t): + t=min(1, t/GAP_DURATION) + return lerp(0.01, .9, t) + + self.line_prediction.add(DashedLine(self.line_prediction.tail, dash_len=dash_len, gap_len=gap_len, t_factor=2, loop_offset=True)) + self.line_prediction.get(DashedLine).skip = True self.line_prediction.add(FadeOutLine(self.line_prediction.tail)) # when rendering tracks from others similar/close to the current one @@ -372,18 +389,24 @@ class DrawnScenario(Scenario): # self.line_prediction_drawn = self.line_prediction_faded - def update(self, stage: Stage): + def update(self): super().update() if self.track: self.line_history.root.points = self.track.projected_history + lf = self.lost_factor() + self.line_history.get(FadeOutJitterLine).set_alpha(1-lf) + self.line_prediction.get(FadeOutLine).set_alpha(1-lf) + self.line_history.get(NoiseLine).amplitude = lf * 1.8 + if len(self.prediction_tracks): - now_p = np.array(self.line_history.root.points[-1]) - prev_p = np.array(self.line_history.root.points[-1 * min(4, len(self.line_history.root.points))]) - diff = now_p - prev_p - self.line_prediction.get(StartFromClosestPoint).set_point(now_p + diff) + # now_p = np.array(self.line_history.root.points[-1]) + # prev_p = np.array(self.line_history.root.points[-1 * min(4, len(self.line_history.root.points))]) + # diff = now_p - prev_p + self.line_prediction.get(StartFromClosestPoint).set_point(self.line_history.root.points[-1]) # print("set origin", self.line_history.root.points[-1]) + # TODO: only when animation is ready for it? or collect lines if not self.active_ptrack: # draw the first prediction @@ -396,8 +419,11 @@ class DrawnScenario(Scenario): # stale prediction # switch only if drawing animation is ready # if self.line_prediction.is_ready(): - self.active_ptrack = self.prediction_tracks[-1] - self.line_prediction.root.points = self.active_ptrack._track.predictions[0] + self.active_ptrack = self.prediction_tracks[-1] + self.line_prediction.root.points = self.active_ptrack._track.predictions[0] + if self.line_prediction.is_ready() and self.line_prediction.get(DashedLine).skip == True: + self.line_prediction.get(SegmentLine).skip = True + self.line_prediction.get(DashedLine).skip = False self.line_prediction.start() # reset positions @@ -421,7 +447,10 @@ class DrawnScenario(Scenario): # self.line_prediction.get(SegmentLine).anim_f = partial(SegmentLine.anim_grow, reverse=True) # self.line_prediction.get(SegmentLine).duration = 2 # self.line_prediction.get(SegmentLine).start() - + + if self.active_ptrack: + # TODO: this should crop by distance/lenght + self.line_prediction.get(CropLine).start_offset = self.track._track.frame_index - self.active_ptrack._track.frame_index @@ -430,9 +459,10 @@ class DrawnScenario(Scenario): # special case: LOITERING - if self.scene is ScenarioScene.LOITERING: # or self.state_change_at: + if False and self.scene is ScenarioScene.LOITERING: # or self.state_change_at: # logger.info('loitering') transition = min(1, (time.perf_counter() - self.state_change_at)/1.4) + # print('loitering factor', transition) # TODO: transition fade, using to_alpha(), so it can fade back in again: @@ -450,21 +480,24 @@ class DrawnScenario(Scenario): self.tracks_to_self_fetched_at = time.perf_counter() # fetch lines nearby - track_ids = stage.history.get_nearest_tracks(current_position, 30) + track_ids = self.stage.history.get_nearest_tracks(current_position, 30) self.track_ids_to_self = iter(track_ids) - self.tracks_to_self = stage.history.ids_as_trajectory(track_ids) + self.tracks_to_self = self.stage.history.ids_as_trajectory(track_ids) - stage.logger.info(f"Fetched similar tracks for {self.track_id}. (Took {time.perf_counter() - self.tracks_to_self_fetched_at}s)") + self.stage.logger.info(f"Fetched similar tracks for {self.track_id}. (Took {time.perf_counter() - self.tracks_to_self_fetched_at}s)") # if self.tracks_to_self and not len(self.line_others.root.points): if self.tracks_to_self and not self.line_others.is_running(): try: current_history = next(self.tracks_to_self) current_history_id = next(self.track_ids_to_self) - self.line_others.get(CropAnimationLine).assume_fps += TRACK_ASSUMED_FPS*1.5 # faster each time + self.line_others.get(CropAnimationLine).assume_fps = min( + self.line_others.get(CropAnimationLine).assume_fps + TRACK_ASSUMED_FPS*1.5 , # faster each time + TRACK_ASSUMED_FPS * 6 # capped at 6x + ) + self.line_others.get(NoiseLine).amplitude = .05 - logger.info(f"play history item: {current_history_id}") self.line_others.get(FadeOutLine).set_alpha(1) @@ -496,9 +529,7 @@ class DrawnScenario(Scenario): # 1) history, fade out when lost # self.line_history.get(StaticLine).color = SrgbaColor(1, 0, 1-self.anomaly_factor(), 1) - self.line_history.get(FadeOutJitterLine).set_alpha(1-self.lost_factor()) - self.line_prediction.get(FadeOutLine).set_alpha(1-self.lost_factor()) - self.line_history.get(NoiseLine).amplitude = self.lost_factor() * 1.5 + # fade out history after max duration, given in frames track_age_in_frames = self.track_age() * TRACK_ASSUMED_FPS @@ -506,8 +537,6 @@ class DrawnScenario(Scenario): t2 = time.perf_counter() - # 2) also fade-out when moving into loitering mode. - # when fading out is done, start drawing historical data history_line = self.line_history.as_renderable_line(dt) t3 = time.perf_counter() @@ -576,7 +605,7 @@ class DatasetDrawer(): line_color = SrgbaColor(0,1,1,1) self.track_line = LineAnimationStack(StaticLine([], line_color)) - self.track_line.add(SimplifyLine(self.track_line.tail, 0.003)) # Simplify before cropping, to get less noodling + self.track_line.add(SimplifyLine(self.track_line.tail, 0.004)) # Simplify before cropping, to get less noodling self.track_line.add(CropAnimationLine(self.track_line.tail, 50, assume_fps=TRACK_ASSUMED_FPS*20)) # speed up # self.track_line.add(DashedLine(self.track_line.tail, t_factor=4, loop_offset=True)) @@ -614,7 +643,7 @@ class Stage(Node): self.active_scenarios: List[DrawnScenario] = [] # List of currently running Scenario instances - self.scenarios: Dict[str, DrawnScenario] = DefaultDictKeyed(lambda key: DrawnScenario(key)) + self.scenarios: Dict[str, DrawnScenario] = DefaultDictKeyed(lambda key: DrawnScenario(key, self)) self.frame_noimg_sock = self.sub(self.config.zmq_frame_noimg_addr) self.trajectory_sock = self.sub(self.config.zmq_trajectory_addr) self.prediction_sock = self.sub(self.config.zmq_prediction_addr) @@ -676,7 +705,7 @@ class Stage(Node): """Update active scenarios and handle pauses/completions.""" # 1) process timestep for all scenarios for s in self.scenarios.values(): - s.update(self) + s.update() # 2) Remove stale tracks and take-overs diff --git a/trap/utils.py b/trap/utils.py index b0d45f0..e8ab587 100644 --- a/trap/utils.py +++ b/trap/utils.py @@ -30,6 +30,12 @@ def inv_lerp(a: float, b: float, v: float) -> float: """ return (v - a) / (b - a) +def easeInOutQuad(t: float) -> float: + """Quadratic easing in/out - smoothing the transition.""" + if t < 0.5: + return 2 * t * t + else: + return 1 - np.power(-2 * t + 2, 2) / 2