From 42fb3be59ad50de62cd0131dafe6d96a4d078e0e Mon Sep 17 00:00:00 2001 From: Akilan Date: Sat, 30 Aug 2025 13:19:09 +0100 Subject: [PATCH] version of Europaper --- docs/EuroSys/Paper/paper.aux | 20 +- docs/EuroSys/Paper/paper.bbl | 203 ----------- docs/EuroSys/Paper/paper.blg | 108 +++--- docs/EuroSys/Paper/paper.fdb_latexmk | 18 +- docs/EuroSys/Paper/paper.log | 447 +++++++++++++------------ docs/EuroSys/Paper/paper.pdf | Bin 2200383 -> 2201332 bytes docs/EuroSys/Paper/paper.tex | 293 ++++++++++------ docs/EuroSys/Paper/paperReferences.bib | 35 +- 8 files changed, 514 insertions(+), 610 deletions(-) diff --git a/docs/EuroSys/Paper/paper.aux b/docs/EuroSys/Paper/paper.aux index f090f2b..73f1b05 100644 --- a/docs/EuroSys/Paper/paper.aux +++ b/docs/EuroSys/Paper/paper.aux @@ -43,8 +43,11 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Encoding Ranges as Bounds to the Pointer}{3}{subsection.3.1}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {4}128 bit compressed bounds}{3}{section.4}\protected@file@percent } \newlabel{sec:128bitCompressedBounds}{{4}{3}{128 bit compressed bounds}{section.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{3}{subsection.4.1}\protected@file@percent } \citation{CheriABI} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{4}{subsection.4.1}\protected@file@percent } +\citation{jemalloc} +\citation{jemalloc} +\citation{evans_scalable_nodate} \@writefile{toc}{\contentsline {section}{\numberline {5}Memory allocator design}{4}{section.5}\protected@file@percent } \newlabel{sec:MemoryAllocator}{{5}{4}{Memory allocator design}{section.5}{}} \@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Malloc implementation}}{4}{algorithm.1}\protected@file@percent } @@ -56,9 +59,6 @@ \@writefile{toc}{\contentsline {section}{\numberline {6}Embedding FAT allocator inside Jemalloc}{4}{section.6}\protected@file@percent } \newlabel{sec:JemallocFATAllocator}{{6}{4}{Embedding FAT allocator inside Jemalloc}{section.6}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Mmap replaced with MALLOC}{4}{subsection.6.1}\protected@file@percent } -\citation{jemalloc} -\citation{jemalloc} -\citation{evans_scalable_nodate} \citation{evans_scalable_nodate} \citation{jemalloc} \citation{cheribsd} @@ -75,6 +75,7 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Experiment setup}{5}{subsection.7.1}\protected@file@percent } \newlabel{sec:Experiment}{{7.1}{5}{Experiment setup}{subsection.7.1}{}} \citation{PerformanceCounter} +\citation{XSBench} \@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Benchmarks}{6}{subsection.7.2}\protected@file@percent } \newlabel{sec:Micro}{{7.2.1}{6}{Micro benchmark}{subsubsection.7.2.1}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Micro benchmark}{6}{subsubsection.7.2.1}\protected@file@percent } @@ -101,7 +102,7 @@ \newlabel{sub@fig:wallclock}{{f}{8}{Wall Clock Time}{figure.caption.5}{}} \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Benchmarks comparing the percentage difference between FAT.}}{8}{figure.caption.5}\protected@file@percent } \newlabel{fig:benchmarks-group}{{2}{8}{Benchmarks comparing the percentage difference between FAT}{figure.caption.5}{}} -\bibstyle{unsrtnat} +\bibstyle{apa} \bibdata{paperReferences} \bibcite{TLBHierarchy}{{1}{2013}{{Lustig et~al.}}{{Lustig, Bhattacharjee, and Martonosi}}} \bibcite{mittal_survey_2017}{{2}{}{{Mittal}}{{}}} @@ -111,12 +112,12 @@ \bibcite{TLBReach}{{6}{2014}{{Pham et~al.}}{{Pham, Bhattacharjee, Eckert, and Loh}}} \bibcite{THP}{{7}{2003}{{Navarro et~al.}}{{Navarro, Iyer, Druschel, and Cox}}} \bibcite{IntelItanium}{{8}{2003}{{Cornea et~al.}}{{Cornea, Harrison, and Tang}}} -\bibcite{Shadow_superpages}{{9}{2001}{{Park and Park}}{{}}} -\bibcite{DirectSegment}{{10}{2013}{{Basu et~al.}}{{Basu, Gandhi, Chang, Hill, and Swift}}} \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Memaccess percentage increase in wallclock run times}}{9}{figure.caption.6}\protected@file@percent } \newlabel{fig:Memaccess}{{3}{9}{Memaccess percentage increase in wallclock run times}{figure.caption.6}{}} \@writefile{toc}{\contentsline {section}{\numberline {8}Conclusion}{9}{section.8}\protected@file@percent } \@writefile{toc}{\contentsline {section}{References}{9}{section*.8}\protected@file@percent } +\bibcite{Shadow_superpages}{{9}{2001}{{Park and Park}}{{}}} +\bibcite{DirectSegment}{{10}{2013}{{Basu et~al.}}{{Basu, Gandhi, Chang, Hill, and Swift}}} \bibcite{karakostas_redundant_2015}{{11}{}{{Karakostas et~al.}}{{Karakostas, Gandhi, Ayar, Cristal, Hill, {McKinley}, Nemirovsky, Swift, and Ünsal}}} \bibcite{chen_flexpointer_2023}{{12}{2023}{{Chen et~al.}}{{Chen, Tong, Yang, Yi, and Cheng}}} \bibcite{CheriABI}{{13}{2019}{{Davis et~al.}}{{Davis, Watson, Richardson, Neumann, Moore, Baldwin, Chisnall, Clarke, Filardo, Gudka, Joannou, Laurie, Markettos, Maste, Mazzinghi, Napierala, Norton, Roe, Sewell, Son, and Woodruff}}} @@ -127,8 +128,9 @@ \bibcite{Morello}{{18}{}{{Mor}}{{}}} \bibcite{BenchmarkABI}{{19}{2023}{{Watson et~al.}}{{Watson, Clarke, Sewell, Woodruff, Moore, Barnes, Grisenthwaite, Stacer, Baranga, and Richardson}}} \bibcite{PerformanceCounter}{{20}{}{{Per}}{{}}} -\bibcite{singh1993}{{21}{1993}{{Singh}}{{}}} -\bibcite{holt1995}{{22}{1995}{{Holt and Singh}}{{}}} +\bibcite{XSBench}{{21}{2014}{{Tramm et~al.}}{{Tramm, Siegel, Islam, and Schulz}}} +\bibcite{singh1993}{{22}{1993}{{Singh}}{{}}} +\bibcite{holt1995}{{23}{1995}{{Singh et~al.}}{{Singh, Hennessy, and Gupta}}} \newlabel{tocindent-1}{0pt} \newlabel{tocindent0}{0pt} \newlabel{tocindent1}{4.185pt} diff --git a/docs/EuroSys/Paper/paper.bbl b/docs/EuroSys/Paper/paper.bbl index 2713fc5..e69de29 100644 --- a/docs/EuroSys/Paper/paper.bbl +++ b/docs/EuroSys/Paper/paper.bbl @@ -1,203 +0,0 @@ -\begin{thebibliography}{22} -\providecommand{\natexlab}[1]{#1} -\providecommand{\url}[1]{\texttt{#1}} -\expandafter\ifx\csname urlstyle\endcsname\relax - \providecommand{\doi}[1]{doi: #1}\else - \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi - -\bibitem[Lustig et~al.(2013)Lustig, Bhattacharjee, and Martonosi]{TLBHierarchy} -Daniel Lustig, Abhishek Bhattacharjee, and Margaret Martonosi. -\newblock Tlb improvements for chip multiprocessors: Inter-core cooperative - prefetchers and shared last-level tlbs. -\newblock \emph{ACM Trans. Archit. Code Optim.}, 10\penalty0 (1), April 2013. -\newblock ISSN 1544-3566. -\newblock \doi{10.1145/2445572.2445574}. -\newblock URL \url{https://doi.org/10.1145/2445572.2445574}. - -\bibitem[Mittal()]{mittal_survey_2017} -Sparsh Mittal. -\newblock A survey of techniques for architecting {TLBs}. -\newblock 29\penalty0 (10):\penalty0 e4061. -\newblock ISSN 1532-0634. -\newblock \doi{10.1002/cpe.4061}. -\newblock URL \url{https://onlinelibrary.wiley.com/doi/abs/10.1002/cpe.4061}. -\newblock \_eprint: https://onlinelibrary.wiley.com/doi/pdf/10.1002/cpe.4061. - -\bibitem[Panwar et~al.()Panwar, Bansal, and Gopinath]{panwar_hawkeye_2019} -Ashish Panwar, Sorav Bansal, and K.~Gopinath. -\newblock {HawkEye}: Efficient fine-grained {OS} support for huge pages. -\newblock In \emph{Proceedings of the Twenty-Fourth International Conference on - Architectural Support for Programming Languages and Operating Systems}, pages - 347--360. {ACM}. -\newblock ISBN 978-1-4503-6240-5. -\newblock \doi{10.1145/3297858.3304064}. -\newblock URL \url{https://dl.acm.org/doi/10.1145/3297858.3304064}. - -\bibitem[Woodruff et~al.({\natexlab{a}})Woodruff, Watson, Chisnall, Moore, - Anderson, Davis, Laurie, Neumann, Norton, and Roe]{woodruff_cheri_2014} -Jonathan Woodruff, Robert~N.M. Watson, David Chisnall, Simon~W. Moore, Jonathan - Anderson, Brooks Davis, Ben Laurie, Peter~G. Neumann, Robert Norton, and - Michael Roe. -\newblock The {CHERI} capability model: revisiting {RISC} in an age of risk. -\newblock 42\penalty0 (3):\penalty0 457--468, {\natexlab{a}}. -\newblock ISSN 0163-5964. -\newblock \doi{10.1145/2678373.2665740}. -\newblock URL \url{https://doi.org/10.1145/2678373.2665740}. - -\bibitem[Woodruff et~al.({\natexlab{b}})Woodruff, Joannou, Xia, Fox, Norton, - Chisnall, Davis, Gudka, Filardo, Markettos, Roe, Neumann, Watson, and - Moore]{woodruff_cheri_2019} -Jonathan Woodruff, Alexandre Joannou, Hongyan Xia, Anthony Fox, Robert~M. - Norton, David Chisnall, Brooks Davis, Khilan Gudka, Nathaniel~W. Filardo, - A.~Theodore Markettos, Michael Roe, Peter~G. Neumann, Robert N.~M. Watson, - and Simon~W. Moore. -\newblock {CHERI} concentrate: Practical compressed capabilities. -\newblock 68\penalty0 (10):\penalty0 1455--1469, {\natexlab{b}}. -\newblock ISSN 0018-9340, 1557-9956, 2326-3814. -\newblock \doi{10.1109/TC.2019.2914037}. -\newblock URL \url{https://ieeexplore.ieee.org/document/8703061/}. - -\bibitem[Pham et~al.(2014)Pham, Bhattacharjee, Eckert, and Loh]{TLBReach} -Binh Pham, Abhishek Bhattacharjee, Yasuko Eckert, and Gabriel~H. Loh. -\newblock Increasing tlb reach by exploiting clustering in page translations. -\newblock In \emph{2014 IEEE 20th International Symposium on High Performance - Computer Architecture (HPCA)}, pages 558--567, 2014. -\newblock \doi{10.1109/HPCA.2014.6835964}. - -\bibitem[Navarro et~al.(2003)Navarro, Iyer, Druschel, and Cox]{THP} -Juan Navarro, Sitararn Iyer, Peter Druschel, and Alan Cox. -\newblock Practical, transparent operating system support for superpages. -\newblock \emph{SIGOPS Oper. Syst. Rev.}, 36\penalty0 (SI):\penalty0 89–104, - December 2003. -\newblock ISSN 0163-5980. -\newblock \doi{10.1145/844128.844138}. -\newblock URL \url{https://doi.org/10.1145/844128.844138}. - -\bibitem[Cornea et~al.(2003)Cornea, Harrison, and Tang]{IntelItanium} -Marius Cornea, John Harrison, and Ping Tak~Peter Tang. -\newblock Intel® itanium® floating-point architecture. -\newblock In \emph{Proceedings of the 2003 Workshop on Computer Architecture - Education: Held in Conjunction with the 30th International Symposium on - Computer Architecture}, WCAE '03, page 3–es, New York, NY, USA, 2003. - Association for Computing Machinery. -\newblock ISBN 9781450347327. -\newblock \doi{10.1145/1275521.1275526}. -\newblock URL \url{https://doi.org/10.1145/1275521.1275526}. - -\bibitem[Park and Park(2001)]{Shadow_superpages} -Cheol~Ho Park and Daeyeon Park. -\newblock Aggressive superpage support with the shadow memory and the - partial-subblock tlb. -\newblock \emph{Microprocessors and Microsystems}, 25\penalty0 (7):\penalty0 - 329--342, 2001. -\newblock ISSN 0141-9331. -\newblock \doi{https://doi.org/10.1016/S0141-9331(01)00125-9}. -\newblock URL - \url{https://www.sciencedirect.com/science/article/pii/S0141933101001259}. - -\bibitem[Basu et~al.(2013)Basu, Gandhi, Chang, Hill, and Swift]{DirectSegment} -Arkaprava Basu, Jayneel Gandhi, Jichuan Chang, Mark~D. Hill, and Michael~M. - Swift. -\newblock Efficient virtual memory for big memory servers. -\newblock \emph{SIGARCH Comput. Archit. News}, 41\penalty0 (3):\penalty0 - 237–248, June 2013. -\newblock ISSN 0163-5964. -\newblock \doi{10.1145/2508148.2485943}. -\newblock URL \url{https://doi.org/10.1145/2508148.2485943}. - -\bibitem[Karakostas et~al.()Karakostas, Gandhi, Ayar, Cristal, Hill, - {McKinley}, Nemirovsky, Swift, and Ünsal]{karakostas_redundant_2015} -Vasileios Karakostas, Jayneel Gandhi, Furkan Ayar, Adrián Cristal, Mark~D. - Hill, Kathryn~S. {McKinley}, Mario Nemirovsky, Michael~M. Swift, and Osman - Ünsal. -\newblock Redundant memory mappings for fast access to large memories. -\newblock In \emph{Proceedings of the 42nd Annual International Symposium on - Computer Architecture}, pages 66--78. {ACM}. -\newblock ISBN 978-1-4503-3402-0. -\newblock \doi{10.1145/2749469.2749471}. -\newblock URL \url{https://dl.acm.org/doi/10.1145/2749469.2749471}. - -\bibitem[Chen et~al.(2023)Chen, Tong, Yang, Yi, and - Cheng]{chen_flexpointer_2023} -Dongwei Chen, Dong Tong, Chun Yang, Jiangfang Yi, and Xu~Cheng. -\newblock Flexpointer: Fast address translation based on range tlb and tagged - pointers. -\newblock \emph{ACM Trans. Archit. Code Optim.}, 20\penalty0 (2), March 2023. -\newblock ISSN 1544-3566. -\newblock \doi{10.1145/3579854}. -\newblock URL \url{https://doi.org/10.1145/3579854}. - -\bibitem[Davis et~al.(2019)Davis, Watson, Richardson, Neumann, Moore, Baldwin, - Chisnall, Clarke, Filardo, Gudka, Joannou, Laurie, Markettos, Maste, - Mazzinghi, Napierala, Norton, Roe, Sewell, Son, and Woodruff]{CheriABI} -Brooks Davis, Robert N.~M. Watson, Alexander Richardson, Peter~G. Neumann, - Simon~W. Moore, John Baldwin, David Chisnall, Jessica Clarke, - Nathaniel~Wesley Filardo, Khilan Gudka, Alexandre Joannou, Ben Laurie, - A.~Theodore Markettos, J.~Edward Maste, Alfredo Mazzinghi, Edward~Tomasz - Napierala, Robert~M. Norton, Michael Roe, Peter Sewell, Stacey Son, and - Jonathan Woodruff. -\newblock Cheriabi: Enforcing valid pointer provenance and minimizing pointer - privilege in the posix c run-time environment. -\newblock In \emph{Proceedings of the Twenty-Fourth International Conference on - Architectural Support for Programming Languages and Operating Systems}, - ASPLOS '19, page 379–393, New York, NY, USA, 2019. Association for - Computing Machinery. -\newblock ISBN 9781450362405. -\newblock \doi{10.1145/3297858.3304042}. -\newblock URL \url{https://doi.org/10.1145/3297858.3304042}. - -\bibitem[Evans(2006)]{jemalloc} -Jason Evans. -\newblock A scalable concurrent malloc (3) implementation for freebsd. -\newblock In \emph{Proc. of the bsdcan conference, ottawa, canada}, 2006. - -\bibitem[Evans()]{evans_scalable_nodate} -Jason Evans. -\newblock A {Scalable} {Concurrent} malloc(3) {Implementation} for {FreeBSD}. - -\bibitem[che()]{cheribsd} -Benchmark {ABI} - {CheriBSD} 23.11 new features tutorial. -\newblock URL - \url{https://www.cheribsd.org/tutorial/23.11/benchmark/index.html}. - -\bibitem[Ben()]{Benchmark} -{CHERI}-allocator/benchmarks/benchmarks/{StressTestMalloc}/glibc-bench.c at - main · akilan1999/{CHERI}-allocator. -\newblock URL - \url{https://github.com/Akilan1999/CHERI-Allocator/blob/main/benchmarks/benchmarks/StressTestMalloc/glibc-bench.c}. - -\bibitem[Mor()]{Morello} -Department of computer science and technology – {CHERI}: The arm morello - board. -\newblock URL - \url{https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/cheri-morello.html}. - -\bibitem[Watson et~al.(2023)Watson, Clarke, Sewell, Woodruff, Moore, Barnes, - Grisenthwaite, Stacer, Baranga, and Richardson]{BenchmarkABI} -Robert N.~M. Watson, Jessica Clarke, Peter Sewell, Jonathan Woodruff, Simon~W. - Moore, Graeme Barnes, Richard Grisenthwaite, Kathryn Stacer, Silviu Baranga, - and Alexander Richardson. -\newblock {Early performance results from the prototype Morello - microarchitecture}. -\newblock Technical Report UCAM-CL-TR-986, University of Cambridge, Computer - Laboratory, 15 JJ Thomson Avenue, Cambridge CB3 0FD, United Kingdom, phone - +44 1223 763500, September 2023. - -\bibitem[Per()]{PerformanceCounter} -Arm architecture reference manual for a-profile architecture. -\newblock URL \url{https://developer.arm.com/documentation/ddi0487/latest}. - -\bibitem[Singh(1993)]{singh1993} -Jaswinder~Pal Singh. -\newblock \emph{Parallel Hierarchical N-body Methods and Their Implications for - Multiprocessors}. -\newblock PhD thesis, Stanford University, February 1993. - -\bibitem[Holt and Singh(1995)]{holt1995} -C.~Holt and Jaswinder~Pal Singh. -\newblock Hierarchical n-body methods on shared address space multiprocessors. -\newblock In \emph{SIAM Conference on Parallel Processing for Scientific - Computing}, February 1995. -\newblock To appear. - -\end{thebibliography} diff --git a/docs/EuroSys/Paper/paper.blg b/docs/EuroSys/Paper/paper.blg index 1c2578d..9b9f305 100644 --- a/docs/EuroSys/Paper/paper.blg +++ b/docs/EuroSys/Paper/paper.blg @@ -1,73 +1,51 @@ This is BibTeX, Version 0.99d (TeX Live 2025) Capacity: max_strings=200000, hash_size=200000, hash_prime=170003 The top-level auxiliary file: paper.aux -The style file: unsrtnat.bst -Database file #1: paperReferences.bib -Warning--entry type for "cheribsd" isn't style-file defined ---line 516 of file paperReferences.bib -Warning--entry type for "Benchmark" isn't style-file defined ---line 545 of file paperReferences.bib -Warning--entry type for "Morello" isn't style-file defined ---line 552 of file paperReferences.bib -Warning--entry type for "PerformanceCounter" isn't style-file defined ---line 559 of file paperReferences.bib -Warning--empty journal in mittal_survey_2017 -Warning--empty year in mittal_survey_2017 -Warning--empty year in mittal_survey_2017 -Warning--empty year in panwar_hawkeye_2019 -Warning--empty year in panwar_hawkeye_2019 -Warning--empty journal in woodruff_cheri_2014 -Warning--empty year in woodruff_cheri_2014 -Warning--empty journal in woodruff_cheri_2019 -Warning--empty year in woodruff_cheri_2019 -Warning--empty year in karakostas_redundant_2015 -Warning--empty year in karakostas_redundant_2015 -Warning--empty journal in evans_scalable_nodate -Warning--empty year in evans_scalable_nodate -Warning--empty year in evans_scalable_nodate -Warning--empty year in cheribsd -Warning--empty year in Benchmark -Warning--empty year in Morello -Warning--empty year in PerformanceCounter -You've used 22 entries, - 2481 wiz_defined-function locations, - 712 strings with 10668 characters, -and the built_in function-call counts, 9955 in all, are: -= -- 808 -> -- 640 -< -- 12 -+ -- 243 -- -- 198 -* -- 864 -:= -- 1602 -add.period$ -- 104 -call.type$ -- 22 -change.case$ -- 43 -chr.to.int$ -- 21 -cite$ -- 44 -duplicate$ -- 465 -empty$ -- 802 -format.name$ -- 220 -if$ -- 2109 -int.to.chr$ -- 2 -int.to.str$ -- 23 -missing$ -- 16 -newline$ -- 152 -num.names$ -- 54 -pop$ -- 193 -preamble$ -- 1 -purify$ -- 22 +I couldn't open style file apa.bst +---line 105 of file paper.aux + : \bibstyle{apa + : } +I'm skipping whatever remains of this command +I found no style file---while reading file paper.aux +You've used 23 entries, + 0 wiz_defined-function locations, + 120 strings with 929 characters, +and the built_in function-call counts, 0 in all, are: += -- 0 +> -- 0 +< -- 0 ++ -- 0 +- -- 0 +* -- 0 +:= -- 0 +add.period$ -- 0 +call.type$ -- 0 +change.case$ -- 0 +chr.to.int$ -- 0 +cite$ -- 0 +duplicate$ -- 0 +empty$ -- 0 +format.name$ -- 0 +if$ -- 0 +int.to.chr$ -- 0 +int.to.str$ -- 0 +missing$ -- 0 +newline$ -- 0 +num.names$ -- 0 +pop$ -- 0 +preamble$ -- 0 +purify$ -- 0 quote$ -- 0 -skip$ -- 295 +skip$ -- 0 stack$ -- 0 -substring$ -- 305 -swap$ -- 111 -text.length$ -- 6 +substring$ -- 0 +swap$ -- 0 +text.length$ -- 0 text.prefix$ -- 0 top$ -- 0 -type$ -- 154 -warning$ -- 18 -while$ -- 54 +type$ -- 0 +warning$ -- 0 +while$ -- 0 width$ -- 0 -write$ -- 352 -(There were 22 warnings) +write$ -- 0 +(There were 2 error messages) diff --git a/docs/EuroSys/Paper/paper.fdb_latexmk b/docs/EuroSys/Paper/paper.fdb_latexmk index c255313..3b1ea6a 100644 --- a/docs/EuroSys/Paper/paper.fdb_latexmk +++ b/docs/EuroSys/Paper/paper.fdb_latexmk @@ -1,13 +1,13 @@ # Fdb version 4 -["bibtex paper"] 1756125835.65327 "paper.aux" "paper.bbl" "paper" 1756392217.53277 0 - "./paperReferences.bib" 1754599671.87956 54714 19039cdfd8414d201259ef3610c2b156 "" - "/usr/local/texlive/2025/texmf-dist/bibtex/bst/natbib/unsrtnat.bst" 1233624470 24550 a41a6405f4de768c43e871d9fbce2bc8 "" - "paper.aux" 1756392217.11279 10393 e972020ff1bf8c79e9b591332321dba9 "pdflatex" +["bibtex paper"] 1756555230.29158 "paper.aux" "paper.bbl" "paper" 1756555230.37795 2 + "./paperReferences.bib" 1756554896.95923 57745 1615779ba96cf9f14b7d5558c821fad2 "" + "apa.bst" 0 -1 0 "" + "paper.aux" 1756555229.9159 10513 c9598118530f27e2e4416a0cf655bb43 "pdflatex" (generated) "paper.bbl" "paper.blg" (rewritten before read) -["pdflatex"] 1756392212.86191 "paper.tex" "paper.pdf" "paper" 1756392217.53292 0 +["pdflatex"] 1756555225.75307 "paper.tex" "paper.pdf" "paper" 1756555230.37805 0 "/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc" 1558214095 7693 0f2dce6d313c82989ec3a67fc24df2a0 "" "/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc" 1490131464 2921 8ca0eb0831f9bc5da080d3697cfe67bf "" "/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_76gpa5.enc" 1490131464 2933 9ad527ce78d7c5fa0a642dead095f172 "" @@ -229,10 +229,10 @@ "diagram/Benchmarks/wall_clock.png" 1756391851.05303 286465 3e5d20a3e0f119787d515a2a034b5fb2 "" "diagram/benchmarks-group/Memaccess_size.png" 1756112512.12369 84925 c98bdfb9f27657e08e7126191f4cf920 "" "diagram/drawing.pdf" 1754599671.86851 28646 0eb4d6c5fd7bfd13117f881769bcc40b "" - "paper.aux" 1756392217.11279 10393 e972020ff1bf8c79e9b591332321dba9 "pdflatex" - "paper.bbl" 1756125835.74686 9667 c839f5ff789de0c36cd440f7e70c5f20 "bibtex paper" - "paper.out" 1756392217.11377 4008 5d099748df22819073f9a7767f18c6a3 "pdflatex" - "paper.tex" 1756392211.05234 114553 2de71d11524fb629943ac4667ebbc4a0 "" + "paper.aux" 1756555229.9159 10513 c9598118530f27e2e4416a0cf655bb43 "pdflatex" + "paper.bbl" 1756555230.37622 0 d41d8cd98f00b204e9800998ecf8427e "bibtex paper" + "paper.out" 1756555229.91678 4008 5d099748df22819073f9a7767f18c6a3 "pdflatex" + "paper.tex" 1756555223.95206 122417 ec27b6b0c27085f77c3ec292a92e217a "" (generated) "paper.aux" "paper.log" diff --git a/docs/EuroSys/Paper/paper.log b/docs/EuroSys/Paper/paper.log index 71314b6..87fe8c8 100644 --- a/docs/EuroSys/Paper/paper.log +++ b/docs/EuroSys/Paper/paper.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 28 AUG 2025 15:43 +This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 30 AUG 2025 13:00 entering extended mode \write18 enabled. %&-line parsing enabled. @@ -879,7 +879,7 @@ Package caption Info: New subtype `subfigure' on input line 238. Package caption Info: New subtype `subtable' on input line 238. \c@subtable=\count357 ) -Package hyperref Info: Option `pdfdisplaydoctitle' set `true' on input line 131 +Package hyperref Info: Option `pdfdisplaydoctitle' set `true' on input line 132 . \c@theorem=\count358 @@ -891,56 +891,56 @@ Excluding comment 'screenonly' Include comment 'printonly' Include comment 'anonsuppress' (./paper.aux) \openout1 = `paper.aux'. -LaTeX Font Info: Checking defaults for OML/nxlmi/m/it on input line 131. +LaTeX Font Info: Checking defaults for OML/nxlmi/m/it on input line 132. LaTeX Font Info: Trying to load font information for OML+nxlmi on input line - 131. + 132. (/usr/local/texlive/2025/texmf-dist/tex/latex/newtx/omlnxlmi.fd File: omlnxlmi.fd 2013/11/19 Fontinst v1.933 font definitions for OML/nxlmi. ) -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 131. -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 131. -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 131. -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 131. -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 131. -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for U/ntxexa/m/n on input line 131. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 132. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 132. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 132. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 132. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 132. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for U/ntxexa/m/n on input line 132. LaTeX Font Info: Trying to load font information for U+ntxexa on input line -131. +132. (/usr/local/texlive/2025/texmf-dist/tex/latex/newtx/untxexa.fd File: untxexa.fd 2012/04/16 Fontinst v1.933 font definitions for U/ntxexa. ) -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 131. -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 131. -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for LMS/ntxsy/m/n on input line 131. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 132. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 132. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for LMS/ntxsy/m/n on input line 132. LaTeX Font Info: Trying to load font information for LMS+ntxsy on input line - 131. + 132. (/usr/local/texlive/2025/texmf-dist/tex/latex/newtx/lmsntxsy.fd File: lmsntxsy.fd 2016/07/02 Fontinst v1.933 font definitions for LMS/ntxsy. ) -LaTeX Font Info: ... okay on input line 131. -LaTeX Font Info: Checking defaults for LMX/ntxexx/m/n on input line 131. +LaTeX Font Info: ... okay on input line 132. +LaTeX Font Info: Checking defaults for LMX/ntxexx/m/n on input line 132. LaTeX Font Info: Trying to load font information for LMX+ntxexx on input lin -e 131. +e 132. (/usr/local/texlive/2025/texmf-dist/tex/latex/newtx/lmxntxexx.fd File: lmxntxexx.fd 2016/07/03 Fontinst v1.933 font definitions for LMX/ntxexx. ) -LaTeX Font Info: ... okay on input line 131. +LaTeX Font Info: ... okay on input line 132. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 7.0pt on input line 131. +(Font) scaled to size 7.0pt on input line 132. LaTeX Font Info: Trying to load font information for OT1+LinuxLibertineT-TLF - on input line 131. + on input line 132. (/usr/local/texlive/2025/texmf-dist/tex/latex/libertine/OT1LinuxLibertineT-TLF. fd @@ -948,85 +948,85 @@ File: OT1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for OT1/ LinuxLibertineT-TLF. ) LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 7.3pt on input line 131. +(Font) scaled to size 7.3pt on input line 132. <> LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 5.5pt on input line 131. +(Font) scaled to size 5.5pt on input line 132. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 7.3pt on input line 131. +(Font) scaled to size 7.3pt on input line 132. <> LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 5.5pt on input line 131. +(Font) scaled to size 5.5pt on input line 132. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 7.3pt on input line 131. +(Font) scaled to size 7.3pt on input line 132. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 5.5pt on input line 131. +(Font) scaled to size 5.5pt on input line 132. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 7.3pt on input line 131. +(Font) scaled to size 7.3pt on input line 132. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 5.5pt on input line 131. -LaTeX Font Info: Trying to load font information for U+msa on input line 131 +(Font) scaled to size 5.5pt on input line 132. +LaTeX Font Info: Trying to load font information for U+msa on input line 132 . (/usr/local/texlive/2025/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) -LaTeX Font Info: Trying to load font information for U+msb on input line 131 +LaTeX Font Info: Trying to load font information for U+msb on input line 132 . (/usr/local/texlive/2025/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) LaTeX Font Info: Trying to load font information for U+ntxmia on input line -131. +132. (/usr/local/texlive/2025/texmf-dist/tex/latex/newtx/untxmia.fd File: untxmia.fd 2024/04/09 Fontinst v1.933 font definitions for U/ntxmia. ) LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 7.3pt on input line 131. +(Font) scaled to size 7.3pt on input line 132. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 5.5pt on input line 131. +(Font) scaled to size 5.5pt on input line 132. LaTeX Font Info: Trying to load font information for U+ntxsym on input line -131. +132. (/usr/local/texlive/2025/texmf-dist/tex/latex/newtx/untxsym.fd File: untxsym.fd 2023/08/16 Fontinst v1.933 font definitions for U/ntxsym. ) LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 7.3pt on input line 131. +(Font) scaled to size 7.3pt on input line 132. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 5.5pt on input line 131. +(Font) scaled to size 5.5pt on input line 132. LaTeX Font Info: Trying to load font information for U+ntxsyc on input line -131. +132. (/usr/local/texlive/2025/texmf-dist/tex/latex/newtx/untxsyc.fd File: untxsyc.fd 2012/04/12 Fontinst v1.933 font definitions for U/ntxsyc. ) LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 7.3pt on input line 131. +(Font) scaled to size 7.3pt on input line 132. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 5.5pt on input line 131. +(Font) scaled to size 5.5pt on input line 132. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 7.3pt on input line 131. +(Font) scaled to size 7.3pt on input line 132. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 5.5pt on input line 131. -LaTeX Info: Command `\dddot' is already robust on input line 131. -LaTeX Info: Command `\ddddot' is already robust on input line 131. -LaTeX Info: Redefining \microtypecontext on input line 131. -Package microtype Info: Applying patch `item' on input line 131. -Package microtype Info: Applying patch `toc' on input line 131. -Package microtype Info: Applying patch `eqnum' on input line 131. -Package microtype Info: Applying patch `footnote' on input line 131. -Package microtype Info: Applying patch `verbatim' on input line 131. -LaTeX Info: Redefining \microtypesetup on input line 131. +(Font) scaled to size 5.5pt on input line 132. +LaTeX Info: Command `\dddot' is already robust on input line 132. +LaTeX Info: Command `\ddddot' is already robust on input line 132. +LaTeX Info: Redefining \microtypecontext on input line 132. +Package microtype Info: Applying patch `item' on input line 132. +Package microtype Info: Applying patch `toc' on input line 132. +Package microtype Info: Applying patch `eqnum' on input line 132. +Package microtype Info: Applying patch `footnote' on input line 132. +Package microtype Info: Applying patch `verbatim' on input line 132. +LaTeX Info: Redefining \microtypesetup on input line 132. Package microtype Info: Generating PDF output. Package microtype Info: Character protrusion enabled (level 2). Package microtype Info: Using default protrusion set `alltext'. Package microtype Info: Automatic font expansion enabled (level 2), (microtype) stretch: 20, shrink: 20, step: 1, non-selected. Package microtype Info: Using default expansion set `alltext-nott'. -LaTeX Info: Redefining \showhyphens on input line 131. +LaTeX Info: Redefining \showhyphens on input line 132. Package microtype Info: No adjustment of tracking. Package microtype Info: No adjustment of interword spacing. Package microtype Info: No adjustment of character kerning. @@ -1034,7 +1034,7 @@ Package microtype Info: Loading generic protrusion settings for font family (microtype) `LinuxLibertineT-TLF' (encoding: T1). (microtype) For optimal results, create family-specific settings. (microtype) See the microtype manual for details. -Package hyperref Info: Link coloring OFF on input line 131. +Package hyperref Info: Link coloring OFF on input line 132. (./paper.out) (./paper.out) \@outlinefile=\write4 @@ -1109,52 +1109,52 @@ Package caption Info: listings package is loaded. Package caption Info: End \AtBeginDocument code. \c@lstlisting=\count367 LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 17.28pt on input line 330. +(Font) scaled to size 17.28pt on input line 341. LaTeX Font Info: Trying to load font information for T1+LinuxBiolinumT-TLF o -n input line 330. +n input line 341. (/usr/local/texlive/2025/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd File: T1LinuxBiolinumT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Lin uxBiolinumT-TLF. ) LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 17.28pt on input line 330. +(Font) scaled to size 17.28pt on input line 341. Package microtype Info: Loading generic protrusion settings for font family (microtype) `LinuxBiolinumT-TLF' (encoding: T1). (microtype) For optimal results, create family-specific settings. (microtype) See the microtype manual for details. LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/b/n' will be -(Font) scaled to size 17.28pt on input line 330. +(Font) scaled to size 17.28pt on input line 341. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. Package microtype Info: Loading generic protrusion settings for font family (microtype) `LinuxLibertineT-TLF' (encoding: OT1). (microtype) For optimal results, create family-specific settings. (microtype) See the microtype manual for details. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.6pt on input line 330. +(Font) scaled to size 6.6pt on input line 341. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 6.6pt on input line 330. +(Font) scaled to size 6.6pt on input line 341. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 6.6pt on input line 330. +(Font) scaled to size 6.6pt on input line 341. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 6.6pt on input line 330. +(Font) scaled to size 6.6pt on input line 341. (/usr/local/texlive/2025/texmf-dist/tex/latex/microtype/mt-msa.cfg File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS) ) @@ -1162,31 +1162,31 @@ File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS) File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS) ) LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 6.6pt on input line 330. +(Font) scaled to size 6.6pt on input line 341. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 6.6pt on input line 330. +(Font) scaled to size 6.6pt on input line 341. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 6.6pt on input line 330. +(Font) scaled to size 6.6pt on input line 341. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 12.0pt on input line 330. +(Font) scaled to size 12.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 6.6pt on input line 330. +(Font) scaled to size 6.6pt on input line 341. LaTeX Font Info: Trying to load font information for TS1+LinuxLibertineT-TLF - on input line 330. + on input line 341. (/usr/local/texlive/2025/texmf-dist/tex/latex/libertine/TS1LinuxLibertineT-TLF. fd @@ -1194,166 +1194,166 @@ File: TS1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for TS1/ LinuxLibertineT-TLF. ) LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 8.8pt on input line 330. +(Font) scaled to size 8.8pt on input line 341. Package microtype Info: Loading generic protrusion settings for font family (microtype) `LinuxLibertineT-TLF' (encoding: TS1). (microtype) For optimal results, create family-specific settings. (microtype) See the microtype manual for details. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be -(Font) scaled to size 10.0pt on input line 330. +(Font) scaled to size 10.0pt on input line 341. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be -(Font) scaled to size 7.0pt on input line 330. +(Font) scaled to size 7.0pt on input line 341. LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 7.0pt on input line 330. +(Font) scaled to size 7.0pt on input line 341. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be -(Font) scaled to size 9.0pt on input line 330. +(Font) scaled to size 9.0pt on input line 341. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be -(Font) scaled to size 10.95pt on input line 330. +(Font) scaled to size 10.95pt on input line 341. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.0pt on input line 330. +(Font) scaled to size 6.0pt on input line 341. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 6.0pt on input line 330. +(Font) scaled to size 6.0pt on input line 341. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 6.0pt on input line 330. +(Font) scaled to size 6.0pt on input line 341. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 6.0pt on input line 330. +(Font) scaled to size 6.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 6.0pt on input line 330. +(Font) scaled to size 6.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 6.0pt on input line 330. +(Font) scaled to size 6.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 6.0pt on input line 330. +(Font) scaled to size 6.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 8.0pt on input line 330. +(Font) scaled to size 8.0pt on input line 341. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 6.0pt on input line 330. +(Font) scaled to size 6.0pt on input line 341. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 9.0pt on input line 396. +(Font) scaled to size 9.0pt on input line 407. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 9.0pt on input line 396. +(Font) scaled to size 9.0pt on input line 407. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 9.0pt on input line 396. +(Font) scaled to size 9.0pt on input line 407. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 9.0pt on input line 396. +(Font) scaled to size 9.0pt on input line 407. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 9.0pt on input line 396. +(Font) scaled to size 9.0pt on input line 407. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 9.0pt on input line 396. +(Font) scaled to size 9.0pt on input line 407. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 9.0pt on input line 396. +(Font) scaled to size 9.0pt on input line 407. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 9.0pt on input line 396. +(Font) scaled to size 9.0pt on input line 407. -Overfull \hbox (1.7376pt too wide) in paragraph at lines 403--406 +Overfull \hbox (1.7376pt too wide) in paragraph at lines 414--417 []\T1/LinuxLibertineT-TLF/b/n/9 (-20) Memory Al-lo-ca-tion Al-go-rithms (FAT al -lo-ca-tor)\T1/LinuxLibertineT-TLF/m/n/9 (-20) : Presents [] -Overfull \hbox (2.8446pt too wide) in paragraph at lines 403--406 +Overfull \hbox (2.8446pt too wide) in paragraph at lines 414--417 \T1/LinuxLibertineT-TLF/m/n/9 (-20) mem-ory , and in-te-grat-ing huge pages wit h CHERI's capability- [] -Underfull \vbox (badness 10000) has occurred while \output is active [] +Underfull \vbox (badness 7486) has occurred while \output is active [] LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.0pt on input line 406. +(Font) scaled to size 6.0pt on input line 420. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 36.135pt on input line 406. -LaTeX Font Info: Calculating math sizes for size <36.135> on input line 406. +(Font) scaled to size 36.135pt on input line 420. +LaTeX Font Info: Calculating math sizes for size <36.135> on input line 420. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 36.135pt on input line 406. +(Font) scaled to size 36.135pt on input line 420. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 26.37839pt on input line 406. +(Font) scaled to size 26.37839pt on input line 420. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 19.87434pt on input line 406. +(Font) scaled to size 19.87434pt on input line 420. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 36.135pt on input line 406. +(Font) scaled to size 36.135pt on input line 420. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 26.37839pt on input line 406. +(Font) scaled to size 26.37839pt on input line 420. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 19.87434pt on input line 406. +(Font) scaled to size 19.87434pt on input line 420. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 36.135pt on input line 406. +(Font) scaled to size 36.135pt on input line 420. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 26.37839pt on input line 406. +(Font) scaled to size 26.37839pt on input line 420. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 19.87434pt on input line 406. +(Font) scaled to size 19.87434pt on input line 420. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 36.135pt on input line 406. +(Font) scaled to size 36.135pt on input line 420. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 26.37839pt on input line 406. +(Font) scaled to size 26.37839pt on input line 420. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 19.87434pt on input line 406. +(Font) scaled to size 19.87434pt on input line 420. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 36.135pt on input line 406. +(Font) scaled to size 36.135pt on input line 420. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 26.37839pt on input line 406. +(Font) scaled to size 26.37839pt on input line 420. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 19.87434pt on input line 406. +(Font) scaled to size 19.87434pt on input line 420. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 36.135pt on input line 406. +(Font) scaled to size 36.135pt on input line 420. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 26.37839pt on input line 406. +(Font) scaled to size 26.37839pt on input line 420. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 19.87434pt on input line 406. +(Font) scaled to size 19.87434pt on input line 420. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 36.135pt on input line 406. +(Font) scaled to size 36.135pt on input line 420. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 26.37839pt on input line 406. +(Font) scaled to size 26.37839pt on input line 420. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 19.87434pt on input line 406. +(Font) scaled to size 19.87434pt on input line 420. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 36.135pt on input line 406. +(Font) scaled to size 36.135pt on input line 420. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 26.37839pt on input line 406. +(Font) scaled to size 26.37839pt on input line 420. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 19.87434pt on input line 406. +(Font) scaled to size 19.87434pt on input line 420. [1.1{/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map}{/usr /local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_76gpa5.enc}{/usr/ local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/l @@ -1363,53 +1363,53 @@ ocal/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_naooyc.enc} /usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc}] LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 9.0pt on input line 488. +(Font) scaled to size 9.0pt on input line 499. Underfull \vbox (badness 1895) has occurred while \output is active [] LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 9.0pt on input line 523. +(Font) scaled to size 9.0pt on input line 534. LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 7.0pt on input line 523. +(Font) scaled to size 7.0pt on input line 534. [2.2] File: diagram/drawing.pdf Graphic file (type pdf) -Package pdftex.def Info: diagram/drawing.pdf used on input line 574. +Package pdftex.def Info: diagram/drawing.pdf used on input line 585. (pdftex.def) Requested size: 192.91872pt x 180.64859pt. -Class acmart Warning: A possible image without description on input line 577. +Class acmart Warning: A possible image without description on input line 588. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be -(Font) scaled to size 9.0pt on input line 637. +(Font) scaled to size 9.0pt on input line 648. -Underfull \vbox (badness 10000) has occurred while \output is active [] +Underfull \vbox (badness 1270) has occurred while \output is active [] [3.3 <./diagram/drawing.pdf>] Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on in -put line 771. +put line 782. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/sc' will be -(Font) scaled to size 9.0pt on input line 774. +(Font) scaled to size 9.0pt on input line 785. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.6pt on input line 775. +(Font) scaled to size 6.6pt on input line 786. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 5.5pt on input line 775. +(Font) scaled to size 5.5pt on input line 786. -LaTeX Font Info: Trying to load font information for T1+zi4 on input line 86 -0. +LaTeX Font Info: Trying to load font information for T1+zi4 on input line 87 +1. (/usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd File: t1zi4.fd 2018/01/14 T1/zi4 (Inconsolata) ) LaTeX Font Info: Font shape `T1/zi4/m/n' will be -(Font) scaled to size 9.0pt on input line 860. +(Font) scaled to size 9.0pt on input line 871. Package microtype Info: Loading generic protrusion settings for font family (microtype) `zi4' (encoding: T1). (microtype) For optimal results, create family-specific settings. @@ -1421,76 +1421,88 @@ nc}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.en c}] -Overfull \hbox (3.10277pt too wide) in paragraph at lines 973--979 +Overfull \hbox (3.10277pt too wide) in paragraph at lines 984--990 []\T1/LinuxLibertineT-TLF/m/n/9 (-20) To com-pre-hen-sively anal-yse the im-ple -mented al-lo-ca-tor, the bench- [] -Overfull \hbox (4.00519pt too wide) in paragraph at lines 1014--1021 +Overfull \hbox (4.00519pt too wide) in paragraph at lines 1025--1032 []\T1/LinuxLibertineT-TLF/m/n/9 (-20) The Bench-mark ABI was specif-i-cally de- signed be-cause the Morello [] -Overfull \hbox (20.98961pt too wide) in paragraph at lines 1014--1021 +Overfull \hbox (20.98961pt too wide) in paragraph at lines 1025--1032 \T1/LinuxLibertineT-TLF/m/n/9 (-20) a capability-based jump in-tro-duces stalls in later PCC-dependent(Program [] -Underfull \vbox (badness 10000) has occurred while \output is active [] - - [5.5{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc }] LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be -(Font) scaled to size 9.0pt on input line 1080. +(Font) scaled to size 9.0pt on input line 1091. +Underfull \vbox (badness 2512) has occurred while \output is active [] + + + + +Overfull \hbox (10.73358pt too wide) in paragraph at lines 1126--1136 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) Monte Carlo code that fo-cuses only on the +most time-consuming + [] [6.6] - + File: diagram/Benchmarks/l1_tlb_rd.png Graphic file (type png) Package pdftex.def Info: diagram/Benchmarks/l1_tlb_rd.png used on input line 1 -167. +192. (pdftex.def) Requested size: 241.14749pt x 137.79964pt. - + File: diagram/Benchmarks/l2_tlb_rd.png Graphic file (type png) Package pdftex.def Info: diagram/Benchmarks/l2_tlb_rd.png used on input line 1 -172. +197. (pdftex.def) Requested size: 241.14749pt x 137.79964pt. - + File: diagram/Benchmarks/dtlb_walk.png Graphic file (type png) Package pdftex.def Info: diagram/Benchmarks/dtlb_walk.png used on input line 1 -180. +205. (pdftex.def) Requested size: 241.14749pt x 137.79964pt. - + File: diagram/Benchmarks/l1_tlb_refill.png Graphic file (type png) Package pdftex.def Info: diagram/Benchmarks/l1_tlb_refill.png used on input li -ne 1185. +ne 1210. (pdftex.def) Requested size: 241.14749pt x 137.79964pt. - + File: diagram/Benchmarks/ll_cache_miss_rd.png Graphic file (type png) Package pdftex.def Info: diagram/Benchmarks/ll_cache_miss_rd.png used on input - line 1193. + line 1218. (pdftex.def) Requested size: 241.14749pt x 137.79964pt. - + File: diagram/Benchmarks/wall_clock.png Graphic file (type png) Package pdftex.def Info: diagram/Benchmarks/wall_clock.png used on input line -1198. +1223. (pdftex.def) Requested size: 241.14749pt x 137.79964pt. -Class acmart Warning: A possible image without description on input line 1206. +Class acmart Warning: A possible image without description on input line 1231. + + +Overfull \hbox (1.58871pt too wide) in paragraph at lines 1260--1267 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) achiev-ing fast mem-ory ac-cess; there-fore +, a re-duc-tion in events + [] @@ -1501,14 +1513,14 @@ Underfull \vbox (badness 10000) has occurred while \output is active [] - + File: diagram/benchmarks-group/Memaccess_size.png Graphic file (type png) Package pdftex.def Info: diagram/benchmarks-group/Memaccess_size.png used on i -nput line 1344. +nput line 1391. (pdftex.def) Requested size: 241.14749pt x 248.93466pt. -Class acmart Warning: A possible image without description on input line 1347. +Class acmart Warning: A possible image without description on input line 1394. Underfull \vbox (badness 10000) has occurred while \output is active [] @@ -1519,17 +1531,14 @@ Underfull \vbox (badness 10000) has occurred while \output is active [] <./diagram/Benchmarks/dtlb_walk.png> <./diagram/Benchmarks/l1_tlb_refill.png> < ./diagram/Benchmarks/ll_cache_miss_rd.png> <./diagram/Benchmarks/wall_clock.png >] -Overfull \hbox (19.8336pt too wide) in paragraph at lines 1444--1474 -\T1/LinuxLibertineT-TLF/m/n/9 (-20) Although per-for-mance gains are less sig-n -if-i-cant for larger or computation- + + +Overfull \hbox (1.72723pt too wide) in paragraph at lines 1560--1565 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) en-vi-ron-ments. More broadly, this work de +mon-strates how capability- [] - - (./paper.bbl -Underfull \vbox (badness 10000) has occurred while \output is active [] - - [9.9 <./diagram/benchmarks-group/Memaccess_size.png>] Underfull \hbox (badness 2443) in paragraph at lines 164--168 @@ -1570,13 +1579,13 @@ Package rerunfilecheck Info: File `paper.out' has not changed. (rerunfilecheck) Checksum: 5D099748DF22819073F9A7767F18C6A3;4008. ) Here is how much of TeX's memory you used: - 24410 strings out of 473190 - 401917 string characters out of 5715801 - 980850 words of memory out of 5000000 - 46501 multiletter control sequences out of 15000+600000 - 781557 words of font info for 491 fonts, out of 8000000 for 9000 + 24420 strings out of 473190 + 402121 string characters out of 5715801 + 982789 words of memory out of 5000000 + 46504 multiletter control sequences out of 15000+600000 + 782201 words of font info for 495 fonts, out of 8000000 for 9000 1302 hyphenation exceptions out of 8191 - 90i,17n,131p,1002b,791s stack positions out of 10000i,1000n,20000p,200000b,200000s + 90i,17n,131p,1002b,789s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on paper.pdf (10 pages, 2200383 bytes). +Output written on paper.pdf (10 pages, 2201332 bytes). PDF statistics: - 404 PDF objects out of 1000 (max. 8388607) - 336 compressed objects within 4 object streams - 69 named destinations out of 1000 (max. 500000) + 408 PDF objects out of 1000 (max. 8388607) + 340 compressed objects within 4 object streams + 70 named destinations out of 1000 (max. 500000) 123633 words of extra memory for PDF output out of 128383 (max. 10000000) diff --git a/docs/EuroSys/Paper/paper.pdf b/docs/EuroSys/Paper/paper.pdf index d0b44aef47befa883842d5ffc99ee86f4efe2422..4b8206c209dbeff750409b6c4b97a865ccb6ad23 100644 GIT binary patch delta 82402 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%0A=B0ET{(cHT|{&E&q+m4dl~`vj8Xp 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 delta 81441 zcmaI+bx>Zxx9Wfa!)h2?&~<_eiOJe+UchI+m|4VwU>!Ro;^F>vF|L*W+&3(5w*i*VlTm z$PO0)jl4F(yCUOH?{fE=1>Q@ecE3W7ju~M2Be5){Wbm-Vt5fX2& zRrJC83$BLniE*FA>&`C!5Aw$MU(QR{X$K@tj5e>Y_)Ydw8HWz14EQa~S~@yWGgd&b z-UNl<#~%hi;JbwQq-wypIs&Uvz(Rm`hr?8q#VtTUzfeo7X;0 ze*2r-zazp~i(Po%65o zfwgV;=UZDuzXxXYIVIkz6jNigwjF-$63e$*ga0bv?wT`|jA|>U)uywUvKtJ1YmMo5 zBaA-gz?(I9E80hvV4ki`)fkZGnK`mjAR={;Q@V{g3jF6e%N0tnSi1pZG|YvC=70bG zw#puqS=y1X;~+ZxE7mCW<9vlxx@Lb z(j_u^RQ#wxn=qeS;%XC^m62Dq7zvwQlwzpE=}JP>ytb?`)Ol(OpG2rDvvKxuLkv-q z4WYv9jgbymB+<*|dc30zF+dF=Zfiv9+?LTJdOI&Uzfc}L?_+k%2cgvDqKdrF{FX>> zdz4wV=M8_8qV5JEwTQbF7q4Ctxl)!m4Qk@O_I&kxbE-NqS@8xSznG&b1ZHWtUi3h9 zYP5{Z#2j3hT=0CAiNv-T884UmZ?g7S1FJG z#~ZKktANSY!~}~dQ;t^6h?0lWzKSW|)aBbW`6+p6 z32_;=aUSAJ<7L)+s?TaQh%}xm_}Qb4Y;u|@a4Z%gUk(uUV760ROwn7<+#CM%*9+i- z@;ISAJF8fq;t_VYSAL!7v9VXP=V2zZ{9X8-N%)dTo@>H*H=%OrJ=~L9q}!ct{V4+u zT~SSCJ~h(0?7{=gQn_x*TJ{zdaMBlWc?gl%u$qVz4a09@)uhSg2Kullf$(lXxh(viw>@BXUh@2u@wz*&dK^GzJxioS?s#OlC!9+%ci~HH46%e4&9{_s zRWLCAlut2QRG*Ls{pW%-Qpu~Eih}67CQ-s#i39W}h8x(>49rxiJ`&b}&(!*-;DFXl z_i%hgwr{k)&v}lEbq;~k)H*jsn|%{+D~1|}Ocks*v0|91wW9W4y1i~0ju9}m03kq_ z|BvXTh>DC2U%uM8@_T50CBP?ocnAik~(bNoCwXitpZpaE9lF9d=61?;a;Vqs=}0)|02T6j#^Rhl7$Xro61g zz+{f{2@aD~7tprDfr#H4a57A4FMtMWN@|4*@bSZ~q?vM~G~C4vpc>Ll<%)EseFrT( z%{ChD+D_O~1zdz%sDxNp_H6d`HTQ}jRb2#|`?guuN8E+cHDOy#3(wB9*hA%L6r0u+ z2X0YSrKe&-8f*r9yBF)867LvUwf^kVPniRYkdUv8TPbT71dF^rQLsfu2?*I4Xt-RA zi$_myIh3zpA{Z3V^#w1Fdkc_8#=lHSQD8IuYny}$V1b-)lMv0JGVBS#nb)8lMC~@P zF;huwpR_14B_N_w7cBA@j-B04m>+M}=7tKEyK{ygqvU|<4wS9sN{$vvPR8k!FK^zX z#EPv7w4xQ%$9SXRB;=(48y+xGaBY52`yp93>c;MZ0==-^xU2UKv@6cd1L*Un63l?{ z1$Q<(atMc>G2$70a;0h%w?6j(tsGK}8;Tq4y_{L~z6siS&2CBk3%ak5Xy235j#T{l zy~)ua_mqbWPE8$LPS-D8n|#%v=794~x7dl_5^>?{LBRr59uRK8q_5BWNz-QbB6P21 zQ4V3FNVAC|bJcKwB>P*&%17t0d{y_&uPu1N9=mO@(MHEks^YPy#_&`C!S~Yl(==Az za4nL!)ig^FwuBU(E88XQ$Jlqo_naZ&tCXNM6LbiKt0ir5cn|d`H!e<(^}mKr;7RTf zxJ~}M&KtcykWjZc^l&e+XG4|I-x{K4*e@Fw#K`IbxY?pydww zWZmJE;KhS_CX5Cmo4M#AhxopeM6B_w&X}#F>#PQ@Q|P4vonn3%+7(PEr~AV)pgfFi zK=qVy1xJzaQ^%wb_6!AKi;Jr##HRL_Mf7&JgVgV6b(9al9z|chAPY{zVe-`G`TKRvK`Cj8Yh@N0(?Vfr!>>&Ngz;e2Vsf{8#)LYzQr71!2eL0vxsFoJn?NMN{<3IveIF#1RpucgG6Hp$727$%v zik8ixSPkue(LkTDauBC3Gt|kv3hKQG?^?=`!M_9Jo^1T)C|gt% zW)G~=4}z96|GY%#T5JR6Z%sm`ZliP$gki@!72V{lcyOI#u|v!YkHBMkHP01NJmT2< zyd|&Gr6kG}U4v((C+mB^CuDa*MiPDibF=~NJ6@>mN3jC>MXK~kwROVhA3=}^+CrSb z1F293Zm~(&le+64t2?WbB!pB7DKg@Z7JEUjiBAMY@f*IJ&yiHJpTi$=s4ylVj7kO2 zsMc!;H}31-W>1}S?VRsGF6Rrn-{l86rIXVhG%hPT$%lig-20qOtQxX;AX+wHBawC~ zzl39luU>X&JDJ>1LwoQ?u>aoPEvMxJps|NYlifl=sPL`ZEGxMgSIr0wES{-QA%7>1 z?0&!_aEBq69{uU+#%Oaj(q0k!`uhonn5H&5J`Q;fp&cpk>%d_wgJFDP(VFtgvmfe3 zi^%z-EBBY^rcqY&Z`88sbI9`sETe2!c;0_pkRA;W!&)<5Cijx=XnLBrfUju)5r2Nj6;c z>E1mobCe7B?UmCJTJk6AvRO+w9iRlng!b#i+G+GO$nu(w~r4^9YBEfxskGi~= z>oD>shr>evmOv5po{xQ)i$Z0~RRU-uI8%~0#QBk8O-9_rslmy zxqisueQd7LZ#L8$Y&{=l#>c;e&S^bhbix{njYsvaHSc>{-jBndQRLGK=(gz#d`?+B zWRKR#g8+9upEv2{!cVHF#{BqBz$ZU>$qr+j1gOZp99N!d5VS+#`#pO~@h=vyJZ&xX ze!=`nbj{*hG48y@7i)hpe-GiWb(NwtAGJCsY_2tCjI zq5`juO}VWyZuR@TYggawlJE36UZg)#dr0}={NrJGV}Nli$c7uS z^>!}=8*BLtdyr?)DqCNiNZLMY3 zL?HX(-r{!lG0ka@$>=<7B0@@5vhg`%Fb*>4$C!}uHE0xNAac(7wX3s@UB_m@ z9rWAl2{sRWKNWZSp6AEb=yWrwsM3wm@TCY5yaY0Nmdr#v1z3s%M*>HAsJp!0*HHWB z%<}hND^F1P)br+>2<{Wl^B%NI_TO?V0&f3yB3khE&kCIZ+DxAIvGneFy)WNYqL|5% zc>)rWoo}BS1dSakdtS-uG6cvKzO#2O1Tq-0q3d5NpQ#fYAqFB=gOl4N&9jfYsClZU zDKz}SbNCEJ!|-pa+2@KqBszf`3zRACzc1+%tLmH^d(8;sk?n*%LK!X&AC!~6apq30 zc%yx%Yy9&DRBL#E4Znjt5?OP)pct1jkuf1M)Js$j@S?*?IP%sx-F?L3p-;orAC}Zb zMiLoN%1!9P1USw1%8`bcW8WV&kEk(Btq%{Y>D(cdCh>H!^tvzou`39V(xY+5t8?#F zk*ySWV8Y=O(^aG3PhHRUiN-$TVOpwBK~4Y)n6}{nYL>=J-*A{9B4;&g%!7qlhuEc5 z9e+%auK64M&>z@s!J4)dRpXz>`nY%~?IOH|!hcHW!^S!g03zLl08^Ci@LDKRp?E8P z7KWrSRQGBw)z7|tHgO5v_zzy%7BkXcZp7(_>s~3rRo|xLOg`wYy@jcC+{yNcc2Cr0 zqe)zWeSeD@@mA8Ws572^0)^W_Vp8e)Hss0s;yS6>H!dB|-eeVf5$Ygo@~T|7APAJ_ zq=vxi?wAvN)p2&g06zlkRs5JFWG$JJ+mR*3M<0mN?B8?s^m%Zno+VMvqN~%$0&+-0 zx3@^_J+AZ#6NL8Veh@k@5Oq5ZJv4u9V{lghCoC62V@3bpQ)Vse;RkD-=N2%iAwB{7 zvEwF-ZlHGIk((J7m{!P3U3@>#<;t5iuLjq-(@BshUqJ*dgS3E6+MF?xb(_L`$!Yns zz0BpXPML~KmHPM)?7#)K(+2m2rY^xg@|KVMhtswS(w4$v>N-Blxw6)gWjht+5bI_f^DYBuPco3~hE~AyCaQ#C* zJ?3{%nlyn5>bFX5e;2CcJO~;Uj`~j9WgOI~>;adF5m)URv@mQBP0|CX_WsP5o!C3> zm-QmGr5`B}_>I;Xv34mmYPc}CigNUTdlJovMJH$0$Y{D{cMT-mGH*N9Il1LxATf%> zRP<@9VcPKz2y{|rb;b7>(}x*+YB=}B&XITp>%rE`yytkA4rANc-e^#;yM0s7(~AxC zUL8%0_h-8vC=iO8)#L#YW82DjLBeVqD0diIsfdz+oOj$IklSlsFLJ}k}Kak5DP6;_QTu$iuX71Da2C2+w zv0HxNt1Eq1Vh}@DuJh}!p5NyHKJyMT(r!Hj+;(;!yJON_pYvb)hbjDSqZD2}jTDHY%$!5Xn%+(jWL;EutJ7b-^L|0>!^1z{4n*(L}61y13hd@!6& zKc0<>h2#<&CJ3yCUL3xO7zyL-IoY+mMqlHrIW^`q#6BrzF0ypTTBJw@h}NWyJSNA4 zEMUw(8#q@n&DMga{ZR#_t9C*Zww+g2PjfhOBn_7c5in1ht86UtmTfC6cusbU?F&k# z%dw=uVI>%FzH*hRXZ)?k*TU{!^4aeBB;FRnGrfgSiSdUb+4wxAC04*2iZmf6<-)&g98e-WiR1&qut&Gw~g4%No^t+?EX8Xe!%?gk@ zk31&MkzAFCM2ZGLvVcQcumz3yGr6u(edbpgl&IprcP3SBBPD? zL_(w4tS4Pw(?fH3TD^hy356{`3l@cqY^c$1pU+b!!Zd7{sQI6#a!Jn5Om5#S()8x` zN0~=fNun;@mXJLGfwQNaxGSFUl2wvLE}VqOgp5voS+EkwTUs^Jps#pf2{X^DgWlnL zlf=BpwP^T`qG6S*-pV!_y>*!UAufNK{^X8}kPurDa+2_FfAGcBPs_yuyf9v}0!|*e zScunL(&Vmr6TV`bB)GN4ky6fa>Zl`jdSY-1)^bJ*0oMQ!-E*hI92hR2s$14OsHto> z#bifb{VN>*CR*QwepxYpPoa2)s}~(r6B$TSAUwk<(-zmI&!10UJ4Dz$;+RY~A$uzy zfZiw07$hLc&t+q0!3E?n0N!g;Va*b7vVTV@)w5{i& zU(!h;A(f0bs}_s&Q~Cwn-uVz4#kf492lx+~6=wp>TQtnn=Zn&Xf0#9|v5Ch&Zy+JG z$iAc12PUP>`+uO*jW$Ik2O(l7<5A(K^*Dd}45SDRr>;sTc>=Jk0Tvx}7F1s${Oead z^z27}CRPjzPcA@8709|J8fQSzEc(4knn}{)C7B);Ck(+N{OPQ%>-R`xet-WbWh{%c z{Fju0FE5zL*rZL~`FM_;Xz8uR@>rL-vBSPZBkzUrN(gS)k@+b->Er*=Z`7%-%-Wy_ ztckFgIfQxG#8wiI8YqHD^3lcVVRA4pbo{SRa*y8aJ<{~7$3pZ1@)5z095<`};* z%RC(Bnk?l)U+nTLHRyEOGC1w^T|{d?39HZeGBGvXMY=lp3}Yg>UTqtNRKdMLzM2NT z4%}S=T?Nx36U>*xx4#JWnOVye@c^OMr|O|pnHbgAT&2aA)91)VAUIm*Jw9GFW;kqu zUHiJm?``g^GPTja>>;<}?yp~&G7uQ!jgTl9!N~GA3CYQqQ)_mUt&B-cV*7m~)Jenq{U9bFn4^)`qmR?TRJd z8HzU?|G$bzNlT!YwU4}cxf^^(&VP3yGP{5y`4#P7A82xil2veq>D0^(hRrhn?ehPC zu9QsE3G~ng1*Qe|!IH1@O<#Gu?TeBALMc!49J*mBx&ZP8mlss&SIGq^Pl`xX9LJkZCW84GN>zw-`pxVZpdr7qj%7u4n5`0CSD`lX=P2X;a( zeU(f_sY}qU;c#)xVso8eyV=#kTP1nk2?I>;y0-5uk>3X~%{tmO6X^*8C{IorFa7c; zrAjRF@Gx3`M2X&sMKf+mp`fm-<@E2HLS%ZpM16e|bZRYmMjaErG;Fm%T{Sui@V9%h z@CAVpV;BiStOl)=j7bg%e5GV7R#4Y@?Ts8&$PhA@a+)^rd;V{2wG+kv6#uU^J}@62Is zGTmlXK*+28g%-n@CdRa->cDC(@bzowEqrj3~}8qWFT+2mnmBOXAN#SvMj+Z5F!> zWc&oLt{d;H8@wRs>hjC${Zbpi!h5h>q8_yVG={R_-LX~5zc1lQUE$ugL0U1ZE|V#W?uhz%!JFWe8bN5 z_sTy%Jk$&1r$XvajSrn-8NF5@Y2H6HsNa}gQ&7KD4cl>BS|kBS`iVM*9&VkdZU$TZ zVTKq5TPy&N)=u69tFweKr(Zl9P`BD4$@P&34=!HMHnX#eUy`cLj*Z!pMsans8f`(C zQBJtGYn`7E&ta6_+HLRKSG@9^oxG|Sgk!}}2nvuBVzA5y7A%Z%8o7IoC#n(IFR|RvdQfw21gKz=cQz27RQ7n_up9QAeov3%&8TFQaEPG z#=y01*Emq3Nw`I$AxI&$-s(`P?s{e=aQ)wA^4=vg8!o|M^5oO*lP0P9OzeS#$NgQtYcVA|GT6Z!j~3w)3q^y_(N2*IKBQ zU*ZVCtt_Ldm$qILDHB8-#7iAeK3dm=pPuF(43D?&J;jd4m@kGDcF=hmVd&CC9+ghH z9SvYPd!C`;8)`P*IK;B%bm;|sW3qhB)DD4O2rarc5M1H>Odzf>an)UQIrO{q_p|M= z>Yj96ZUkb*!bWrA<=0E44qFty`;gj)ktzt`)#;QUym3pY{oAkgVm12w{z>32WgEI8 zaK|N;Fe|;PAL|WaoR}Pm&_{Rk_GwUi;q%;paCiUR@xtP#x{#bx!`4nvp3iKi1}uOQ zwSO6=$1h>};Unrf$#Ry_)AKu#Zf+VykB5NW#p!6AO2}yXe08x&R2_pH=ac;3gAHaH zDH;G!YJy~EtNLPPOC+LkS~`T_^&!3p1mx|)2a{z#l>EE>8Xdupw{JO2Y4o|1p>|WO zK~k1T-GO$?#?Qf$I;r#`l7q+ZFMub=<_4Q{;fq$_-%JpFm)Ac%hK=G!vOW26P%z7; zFX>q%CJv%cQ>P2;(31xD%ZbS(1l&Z^*i*m}KSFiT8lQzjTfvJW9AxP3k^Lq~Iu(yT z!)gc?al=+(wUwsIPhRMy5zmUovUVByn&Vd2_4R84_wq1gtsBA1XlqpTbHIl@RF0f$ zXO7E)=0R#^W_8hR{|hW0iqdO0@*eUoeO*;%CdRLU!k|oRSp)j*U`*JtWGNrd4|^G^ zy>QP^|B&qOS_wl?O`DBxh-(rSsaupg6zM!MG|HNbvj$VP&B-iLERQJ+Ua5=43Wpd% zFbX5D5U)G-gWg@+f?g>`fq+xnipb1f;;%C;OHODcMhZSjbg>8WIQW29_dDmrPY7(S zihDhsWS=(b4c#S*B3Y@q5qMFAV-m8g8#YL@+}AsHywz6Ou5E~`9RqP6gkbKiC*WH% zqDrC8tC-;dYYiQ@oZC^jop^6Fu9cIV451+MrJxBAu{CM-ymWe3CF=o z8LDcsRh3ZpFY<=!JpeUy+>6lG*m78yO6im7X`w&C`N`Xj5|IL3l$zmlbeXf+#AT2H z=)It&+~~-jb1dm+2KacAIUl!FCsq!hcaNI%QyQE4p+J4X90|2IqhT%@&b&71nzj@i z4qcp^k^Q^t{fbq4~_hySjrK)Nps&wf*lH_)6sDy)JVc*gyUJ|P^@M$UNmPiL;1K3lO6^fns_yc~x~MeOeaS%O&dgxjJoirw_A8Yv7A zOUu>qw?f?@IzTOgMliFQ;C%(!b$8X3nParkjA+>mPCux-*EjQOU9AWIwxo zL?J)K!>HufJrF_>Xiid-;4T-RW!g#*cLXwcW2R6=-Jv)oBW9!}zUMiOXM*^Q-En@E z4^c`~!C7r;g>D2|aMS-Fw3vqlv^}OV3ssxhby^wxdlgI!9+VYl42f z9s%&utPrSo5Jtp#Xsg*=#&O@?3?QXbw|Xt-zq1@!XnuTx18w4UtA1sQaDEcU!&t*7 z!SLId7n?+->}RE22gQeQm~is?Bm9O}+@KKyf^Y{EANF-vl^aY-TVYoX?hOjpWVh7n$7%9y;Q^; z0NoOm+{NceT}*LE?Yu`3vzO{herrw>jz&Co{0QyO$Iy`azr=_p&h|N>gRt4}1`*on zP%Wn-B-kF;W*d0B(hG`Ie!|TQ4rY8uSlydN`Yv^t0%etyms!e~X_f=+wGB7-DdK{D zFGwjl6a`Gm}IP_CAS0CCO+<$HCUZJsiOmOT+= z{*f^T9k(2PW2&-X4-NVL`E1WXLm?P)AKGXd^^}r?XDhR+;|c6=S*Z^EMm81G@rA+{ z$5a*95I#=NTSEKcp#&{aaN38Y0{Etz_#tP0Tn4q>Mzq;%#IT4U?p`4X^N3j_tr67_ z_7Ho@>H9FH`U_N@oi85xCs3aTZ+??g^57nAbj;)=FeJbe?A;(B7!AlE+#>KDuz-NMorkNk3Jgn*eSlVi;2if@GE<5 zEaRV*u8uln2VbiB17V&FLmjZ_m%QyvEIZNr)y&k4r}e6?;znoG_`}`Su-Hc$ji16# zL@kD;mlB(@lbcX(ZiJvyQ&?7TyjY(Qw=1u%rb~NdWA)}%HjJl8BYLzarHu!Lv1eEI zm`ic$k7>P%1@PkOH*9%f06wdOCRc#>-YZl&@WF9&!$yKg&=zw+5t&qbYbVU&U7XZ# zh>0hlFgLw54z4{1N^xS3d5%sXXkZVcsQFv#zyA$qw!$MG%bVs*)7B)SUsnQX;>I6{v+4~vGiCzFEWtY?4jn}M%`#8wfH3^8gx=60zmwa{ z$f46u1ZXtQ1Tct1CjGFKN^M%LdCI+giyJwW&sIO{ke31}XkiW#yOci(TJFjeK426^ zZsn3mkRvlr`6Eo|RtGDuIBf+y`iNm0M#8dWFhbiZm`E^zP&22!Gb-rS-<|y*wrQTl z&RkMnf1;q(c+m&z1Amq=8Po$+a4Ou#^C6*>uwC#~OX5^Zx)9$)*jpFs;b_wlQXc}R zZ*RaM%|UD{RNfm>7$$QqPWjUAdkwhU6_51RYTB!l-%86rXs!O1QVISw71r?*KGs&j z<8*IpMI}2D!*3NU&|+y0D`*}IkMSWN`o$7*z{0YwbOu=Q0PGTH(AXQqdqm&a-$>gl zh*=_1wDt&zAE$Pw=L3Z=BOeW;jx=JnTgSe|&s_HNy>$wzDa3v5J;u5vt=!ZzHkaNT zP=w-hoDgW#5wq`hDxrZH-!MhT%j!{DH?3&dhi2dV4L!j0S)tv~M~ZVx5plyw_QRFF zO(cnZ*pIFI2{=-$8#33R{`Kvi5gF3Hq{Iak8Kkt&xskC$LO2E|Tkl+N74}=m8GAxJ zX!+atYyPLx5N~CdpT=&-tLf(2#J}NdzlX>nIngVV`lNAG$^9AReY+JCrn4c758?Df zT_K678l~HZt3JAN)KVl?M4aRRJ{vi`IPS_<=SNq~L7*n$(e zKJDV7MryHbL1BYlXdBRk$+b2vq4C4gh?Q7i*TUp&okqCi-<~5IuqdoUux<%1$gGk7 z7G%`Hjfp_fEcHkCgm1pPC?v#uma-mE9h{%59yF%1L^J&jwJr9@kOl8tOnmXST_v^8 z-?eN1ac&!ohS-p)V?M@p({bNCBR#Lnpi@&VzmnIV8aM0g5(yqVD zV~oWvom9A){$42)H_KP-SDEk!X#MVIpE6>{Os$kEhs{Dfi1)c}2#=#`e_Ld6Qt!Rm zxJ?J^WV|55RqIsKMFy$TTC6x-N6mT#aSn1x9svvfH`ZqCp6$nPMKJKxb30rMR8e$$9!GV&C4YZf3cu zV%(X!1vn;qzF(Kn`w425{tPzRJi9o=R0H3a97&9PtE1`vJz`^$b0q6iomysZGg#se z4FfRi%>2i(Fd)j0u<95=;YVm=_0uPt7{)oa`EIfn zaHWBx>FPT4EM`Gct~)g`F7TbOTppg+izpis>^Sjl)!S%GwiE(18djD8Rz7vGsb%@l zE^b9XrN0&k&O~qxR}L!+mNCT2`c`%Oo&!gO!nu`RrbhYh2PmPPh6{H@GRI+!YF5K5 z2_x5aw>hLo;@dR^$b|~2(_PmuTax|-?0jbs>hnJG;v{uIzPH0(fBr}M@T@$8(uR29 zaHxl=_$fz045=0=iG;!9Kr{32m8MRbrH3bPONgwOgvq#APXrSa^~*|pL&}~R1Yq2T zh+@|k>^Lw;B)G`&?~0p8Fw8@#u8oRPVj-VA7ZBKAGqWz+I{7-h_?MA1W4Pp`u+o(J zGol^)&g#2coKjTNwUsVjZ)h)3v$7?N-J@6I4%gE5(%mQei|6@248Hal&*&WQHsw*q8%MrNC{hBPrs5QG9GyWGCmCN~=PvT(t^oBs6>&7F7Uh zocUt-vktvq76F?vL}V9AGuSLsk5az`#Am{{eoLyqJoEZ~aYPJq&=k4JIR46lFW`h# zA7=pCE;JOkFR;DXb7|YX=evLJ!CsxR@N4_i)V6&dV3Mj@w?z7>)Ujw26HuYx%~W%=ZJNG#k4aq=|>$4e4syDoy#A zPMH%un?4Q1tRQw%Y3>P^h|NNuq2Oqtlbpi2`CSD?ap&Z(1Gr-EIRJuGQ4<1l%CCj^ zG3ARLTa(8F;`Re-SSP@N(TKg|GJ+)0m7l{?ofYOnBF5RyXu42Zr4%A^?M)BELTzbE zsIz*PX<-@$;@8s0{Pv~A49>LTFr$f4P~~ngGFsAOUACJnc277wIc3o2`ZVj9uK_>#=cGpZc_L3)JB zYgvsm@CNHP@j=~RkI)G7eBq#gxZ#(*<$hm)857rOA{f&}{kkQ=xAe>{HPeZ{*}r)k z7chabMaYZ$$H70hx`$*X3*E>R{TuJzG*oFi*Y4OspHG>>yVXwKol`jh%`>#whN6uJ!iS%vZhv*h8T6q{V!?c=N8@%Cg=~E zwV|3F+E>6?^ymr5co#7eQCNz{%j~H)*9B`+~|5f z$YFE&G`<78JNMX*7hxjjbE~)OtU2O|FattDx#S*iS99w>PxcQSXxx6kx>%+S&X&H{ z^dF9w`;#oM559=7uC1*wX~}a0F}|Mj?UW7fMt*d!=5H@;As|!eI_H%muMfs~|xx`kOepvDUqBZ^SKTwi>_#bd*p9D_7ffxIQenop5 z;@`Bh9C#ay-Td3{U*%t6^*_Sv3JyQzy(}unhikXB?(js7^Ps_({)%FZbJ*E7JAOT$ zlQ`;&g0!-JaU>q&E-0S8C64$RH(9?sDPUlAce_?lY;T$rSRftOX*=BAHjkg|dYJ?a zch_?#;fd6Ta~Yd$PB3u)%{MOv^_brT-+(L=Nhpx&$L3Z+>c`E8ojjTRRmnHpU!QiS z#x!WpG-|7O3%sQNef#S+a7KO9nNF4d1&uiPnQA&|nwml(_>&m@oMwOj=MfhR0co1- zlivRaTA0DpKjb6n4_f{MOb0Fhjkoi=D&8Tv`Tu5$nGXI}zL??v@BNPz7Ei$7XnJqU zaw_+L6vmcCeZ|a=y~U*YScCKdj`F9S0QA%Iwhl&Krw%_c$M@xMq(WBHDuewX@d)U7 zF7WgD>_q(jsLA@pN;s($M&DoO*O})bXyS#zH&&$khHM$!18p<3?bSW%bn zc+sScCb!pb5sLxcwx=u>Pq)Ce(+TfVgG26Wc)(&jE7zZnfVVmL=gAEG^=Gfgvt5=4)N?dq5x>Xj^|{epMgxCY z&((*tr{@owZ&zel&wW0g8*b1Z?H`N8nSO(5SMDVDU{-X!BlOUW7`C732XKh4 zkOg1x@JKtjyeTI^L}3dGWGx*o!iibJSl{H%*3=|*qT{>keV$-1AB4X*Ew?6SV5m*X zX(m}4V3(_ki-Nm^?oI(Ztb@`*-@ZUnY5}LT#G|4$WNbI#Zjh$f{ma|U#Ep9e{I&Um zE6sdsxYkr2aRDvttkd0}J9s)=m!~}ud+Z;`8@)9l1V;|4jzI^LZ*WrTOyM^-_3^7J zRA|@5Qj46b!K9{b>u~Z0BHd6I$qheA9g~EFXX*=kY zWl!Efan;<`=rv6Eb5L znPACAdp==aE*ZOnjb&OZOo4*JM}l5yVz-!k_k=>>ZlP#*I$cQ2J6)oh;e4Jl zlX{^|cZSf?R7Hgt*yt>FcPXU|VP>{jppRwje?mGCyx{-i<117Z)U7V)F}I)6c`pw% zaVYc#H$?*3vyHu5xnH`Di^V@LIB^4&6PTK1-!-)+Wc>f!xr}nH1)8#1cgu3v8vAw! zDNm2MqOUn^VQguJzai8)VNVf0PX{&+G;X4M9pVh!{mw#VmN{2xn5th*z2G9O)6Zjo zhDrVu(sZFW_E=#NCrN=ZEfd^%r{1>ezL8!SO9}@l9^Idt{nT)>dyN?$ZS7R5n65%% zi?)FlT+30`j<9{kfVcgfNLR#~|n{34RUf z+8@y?vn>qXm~f7f=*KmrHYP!id7d+|2_q@3i&m{xd0GHe5W~7a`4Xs;gPPf8Zs}Ro0$=rs5@d`%yeVy2Sgc;dMpb>;68Bt8+T? zxsTacQ<`lfA^+M?EA276W+huaJEY%b0mFd+1YglIhy_Tc528x=qQ^2Dx~#h>pcv;1 zJJ``N=0ax7WFyMa+PW-Qm7{&WEy;b1BnN6ixnHQKACQ9-Ppl<_^2e2EV8?Wv3b)AX zI&|OrYuEF=i&8Bi)75aXxqB|cd=24^gq*z$ZYjnw|LoKlNU8RLBY*C-kSrkB$_g|j zNcjugc4fEOF34s0;?6iOGq5=uL-(}6zLu>RuJ&f`r_tZ zd3CgPcooAY2k(?zTR;s4RhN1>q(FdY=}$)5sD0rKt)nCB?!SJ$Sp<3+YllG--cQr< z-a^tMyo2c0OzKKG&9Ft(mvT%K5>v8{ckQE??eGDDnV!4xUjBSixbEx~vv3KGoaZ0V zsxQ{uu%o=2o;3)AwF99qwif6lawX#{;2k3>q$B zzxH}-4DfdoQ)6l)TU%TArR2@itB1kfv1C)l%Xhg$^*->Ic+IcBK18$J#-n%S*`|-4 zqO>hCI?`Skw=(L`QAR4p=d#vkG1R^inU> zrEBVBR4n}NxN-Tk6F>O%Ls3~_uzsrHmO+PjQXKkT1>@ZG(Za;QNz9TP0tRb(8|XfL zcuNI2%Zuho%)l49>$#GicBY=b$xrYSpdWuD2k-l-3qa0+sXgNkN=?GUYA&>Lg z2hLI@ltu5|?kWhM*kb8ZOb~`aBf9kGDC} zD+lt;z(OI?SOuvIkH>+)LW7L)&kuoRLNGA z1RIww;4fEnfC7Sj(Xsw;mFzzwmvhK1 z0DIAT%=V-Zyq!sT(E|S*gae}9XEJoX+-|nGG-=Ih2`{&S{Keyng@w+EQlE{OsQQeF ze>`Mu1zEVa+%P%vuooomB)hWNHp6FU#Yrz)mH z#-556aLVOG7Q^LAPrF)mjYG^ersEF1-|&M1jd~u0d3c?6p@#h;nL2el2|`Ls9}PT2 z6eHkCuutR(;g)k3Nf+?mM_>=IyAC*wHd9Ih5E?inK+Hvx`IOg6h;FbRJ5vsHubS*k zPSvgrxaqlYpW)S;ijn5ta@4E%`0y}rpZcHtc#8^~;oMlBz3{8!H|<%pi<1Rn#1&vm zZhmD~)eWK@mfrS>rat>T!jqyO1~h#__750nqKs?zqWO(}GPDfCy%)Ej1&huRmBNm21u-kKqmx+o zNePPVcoB6po^U|r;lOZadPrDxUT5mW%Tl1+0x6`|0NxxxY)iQ7wZ>@&8B5UX^g5t- zh95PYV3TPdbgSwWVx_92M?(ZeII8R}TXxZyvu6@8k0e;)^{l60OCx+`6+(IYzxaCR z=s==iUpL0Y#>93qv2EM7ZFTHPCbm7v#1l_!+qP}K+cdzc= z)m6WZys@Pw!+QJcc7fk{c&`1okzn)-qC)|#O@V+l#I*6#m;w{JN*7zS+d4cF4n<_| zo1nwyPZvkMJm5`~=6;+9R@~|Wlbvfj*>EI;)LaGKy}#lOHro!vOr1EP{LEKSkdzsy zNPJ$nqL#n6==`VgLw3$<8}6m5Upl>rGhB#0>sZ<}Ul}*WEb1+zCkjFH0XseqGL6P) zD&(2oe|wrnJ^k$OOHckEPy;je6Vj^a`Fiu;IW5hQw6h$+k!z^ZdOy@q_NczmHP<95 zTn--F8Xy-Il_l8U-`5TFzpfGDmBG*g!UZsY(tnHi5%E>1?>=<9b@0+@E1sEAK+O-H$~`$6Aq`{ToPZvWG>c22&fq zn@{OjDRBf-kc|H~f&{;i$*TTHg-SKLE$-Y8#$@hQT7+qp#agNO^#^ux*E?|!K;MBV zEV)KYXoXkArS2n*N#q-Iv8hWKlkQ3Gd<{zG>AH#`-(UESY=%}Ic^r;yRg&p$=0T_* zw59Ys7e*RhWh7DY$3VBveQ{kDEDEY%miw0Sx_J(QucgOR*3(dU|y^nadUz}G5gIj|NA7>8UEvhfNE#EzBJ*-TiH|qM$lTrg;&1Rs!7wi0-8ExiIN#fWoW)63TX1 z^PKK^I{=U$C>m5gHZ-Sd@JQoeZ>du#SKqkCivn?qPt(GyQ7Ehy6a$p3ku5nT*@rL4c}i^RzE4PQ@5E>{keJcf&ZEH-HD zrsz$WSWuUaJ& z(n^mO!P3YYz^zeo>}{sNenhDjFir+>u^ZAIL)x6bU(=oQG+*Br)X^p(6RPE)OEDY% z9c9H-%fiioczFEH7GYA{&$Sd4n?af@e+6gt!I9;XfoA-Gz`58G7^Oi7xL?Zgn3G1m zp7XzmE4{N#&VU{VZ$z*_5@-5doRaidT?;1y(ZPGk&bol$=sgovgZQqCk$87i z6d`5Bg|5Ol@uxU^%A8!)-N}}TD35jmj#i{6-uRN0M-mlZ&TxpJ6@9y!YL%87d0!el zEyOuF;Ce3H+k=xIfJv$UUS2m9CO9wGF`}Yzv-{Uj8My`;h0MK~j>ODk&Y;8ZXSu*N z=%qD)x32e`+u>Fx`iEF5C_gmDzBp@5T8bfnOh9o#N__6#ULWzi!@wZRHL{&8OG?C? zd^aKOT~*|E--$pn!m~A|bP3jJd~7S$H9K1_KlFufeDM7@Q0`x2hMs6UQ5vu#Pv+dP zTfVrd4|nU|({R0L!UfYAI_U`|_7GZ_Lq>8tn{lUz{Vnwxdr`rH*_@J2vZo9;b9g$m zYB-Eq4Vq&$`J_L*uQHugMm=v*Qadmi365Mh8i)UkWc#?`$SLU*9bdKxd`Hpv*Qr< zv_`*WKv+0H#~?sPN5d%~Ybfy6rTpvBmbF^Ig?~uL0BF4tW>3V>WGJ}z#4sW)xQ;n3ca)c8 z`kic^cQZ^rx!@~$L5p;iDviZQK^hG(JbNCW)A1kzkE_!_R4~%+ylZ!mm5;7c`DpSr zlJ!DG!4?6<8LYGZ8^Y_m;;ipH7awG>)eI9L?}S`Jc`N@d^je>*+@%D@!SbcpLjzd3 zta75hR~ZC4WXg`9UzpIasqv#J^t0fsy4c1_|3EdVHwa~Pi;D0d_Jm?RL*K_Z>HUxFoJ8e~oduqwtvKFesa5TnB} z_`?d&f{sc>$n^mS#L`kMQsg;fzq%raVkz^bf@c!FthGm1pF|H1kB5QVjoZUYp!#fBj>(-BkU-?I|vACF!m~=nU1D~Bvt(A~a zKTj3ce5q>830zz`w(<{y_&k#8jo20H5xXeo>>Vx)91IQ&toq*$&HQ&VVvIX4Yl5yH zwFRqvHbq&sPVaTb7r%jmcHhTV;lJJ-|HA9e3Uqfr$`VYJ{&b*TInRmRGZ;7j$tYxZ zt1eX1vsA5TP(LA18*i}xJ}PA~U$ollf6*x3k3pdpuK}n32gz@6{M)#eTAt2YZ~4WJ zYV|B1E_7pE-wwe_Npz!Dsh?*0np6M5F<-@M)%-c|ufhR=({{54;h>;V zG}S)6+uw|`x0Oqw!kFu>?xJ3NJ^%r!=D^@$)9traXT`z0zwRHdGM;A4Xx?g*f4^@V z@sjQD@l-1uY>QXQwAg+xxU8Q=5t!x`+u}Zm*>OaSb86CCa+8SQ9W{3tS z%AFf^0jDD^@)h|N#Tu-ajqdNwfwvXXoV5M29=Dh0P>Wme{7L?xO~4>X=#cdV0~I*{bG_&+D@LZWR-!F$@y#x~bLxY4OBQ^Gx;(yA4YVH}1rH z4_XJN^0s>+3FAfM8;fLY1GWBYJ7U{xjOG5QHIlECzfTYqN;TEU61O$`4Es#DCbJA+ zah}fsp)i}oMQ+6dALY)5Jf;#=apS-|l||#jS=}gmEm+2VJ3&XEry~6Ev{gBJBvIj# zxT1Bak!%8(jVjNK8a$^nYA~axRbc)TFnN0ITDqIEIdI0a)0Jn>$}{_%A2}ucE%!vc zHvd-&%iQV~j>Xq4n=rXCyEB>l_>$_87;|q>s-aa4a1xByP1}wffq|3yyx-b#=U@ff z;#QLwFKV%m%?4j2C(!r!8ZOHwNG^NMs(VYg0zu@uX6z zqf2OP^cG4g?X=qJ^c}A|GTH|2P z?_*0k)Sf#{W+>9>Oezg0zyaBaw@s`Wx7HCVl=OD0w7 zNHva{9HMp!(5xvB>=*xrA*iC_S6ASl?exz!rcw2FBZC8ksM)p}TWTaX#vpFVI|HoU zZZRl&qFhdHqxaFXQ(G2U2MXK_2XfpIz@$26Y2plXRvK={9M)h2)Bu7xK==x63ih!qVsKavU!{x@{L^=lGd(h%t2o7z^{$TZX^P0VM6iFHKJppmk_5X*Sn)J|T>$8g zA#;Mk0i>)DA_f<~gqE-YPYL99-{+TWCP_~2W(TrT;(SI2RM2JEq9M!#W_&97+6o7G zi({(XO@0zQDSHK`V>8sPG=MCq8ZN2>v3J;`uPyr2mGdLW)GPrbsZN1VNsfdptm7C= z`gYs#X$zJVnjtU!E;v3*fkS_GiLRkYHzF7L7MGfx!C5#(Xi|C!6r|N zJXJCE?j#M%^hjMF;({p%(|#;Snv*CUY&SZ8F`oZ;YVH9_F^7pyHo-qdyOIJo{}a&7 zq%Sl8xPer+bV1FHBpA^;zPiOx5_~zz5NpT9)7(0(ACv^w2UM>-gr1>3&A zFlx?O83*8B(P)e>f3p~zb1P6g^jnCh%$vtyaKM5PLLX%)544*RWgae<7$b|sH+>@P2`~Lr2k`kY3R#xw$$amI@kVG%25+7fqEQjOIUE!&?6SCu&K;D zp_V@_8otbpZNHYE)8yS? zpx@3LTr9hIc5)6+iJ*S6rWTqSke0rg>36)_ksK*LAnvHdb&Ao9)yiz~`c-!7kUwcK zvs%eD-Zh$d$KKguqJa4xqfa!;)go10GRohPAOcr+uTpeEaREXs8W|o@V13 zYDDORYIF4YUQPj*sy^AW<@x)VV>*@;wS%w?jqsaR83zBhmqGYfYc?Ipct_mr@v1`g#kOEO{igN&58tyBJri#} z>GO8R>Wj3O&lmGugAi`c{6}RFV@Lh%bde$-v98lM;v&ejNg)E9E!0{MqB1!P4hAqcXFccD+j5dm|n1m?QQkmuv;;-RDGBzoEs2?s?Z*sOO+9qYEV@}foC zK`VCvqY~R_ly0zd3tPTSDd&j=vu~E_?$c_BsJBG1U{n{bI^g-z@_Q;IKL54jD5WdGMOlW}lJ! zXMeguVk(TX$C&XhFJ;uN;%k53ENlDggu2DTtszJcZH?o1K<^tex!7d)kB%c#=LED$ zR$~*-LxQL0)H-?^F=gDriRcE+8OX!%%RR-BCHEkXk|k>$vXHJ9Exr0l@4NdP3O2%! zlx48(x!i7l-1OF7egv!cJ*WJ6gHtiOE;r1s20@aEK9HTgI^T4os}}*IDvqP^y`#N+ zO(O$iUfv%QD~z1_yMkbGWJ(qVNYyNsYvWz}I+)dbpgtJQsa|mKDBckX10eLCZyN#Q z`Qd8=4bt%hwcfg-Ts^}kk~8TsXg<$9;;E1(N~nt2B_+qd+9d2K)c#pL`VyF z6;kJ@G)6ePI^SCI7qXUqKzDE|eI!D;SD)|GyeOg)QH$@U5z2 z%&NJRGiAc5(!Hr%qgahyQMF3lyu(f==2(z(mGAut^*uP` zLHS7F_Y`QN(O@m}(2$;>p_2vsS^En6f48*14@ONaY}CVK5dNK=F`h$NHi6G{l01jI zsa4q)+WcNkk@GT1wg$o+n(ji97Su95f8fBnri_yP)wwE;gogW-;w}MyHo{oso#%M} z*S0kw3AJexBbJkY>7t~>I)!yu-?LAUJBL)lM~|lRU~edSKb5+CxIt3cPOWx66h@9d zGN07zno`_uyYT(U)-$3e8_&s6)EQaOZnAMK$F_QqkfC>XGz?g*XzZ{miOtS081@7e z@FH0&cM&TnjN-ZwMaD+gq{&k$fn;CBq-vxgq=!g}I|^h^Ay9d@(@RtyKfKVncke96 zv_Ln4IuUykf#knz$qJ@}zy;Sw_|uYzLABJ|Qd?)kq6mR1S2~#Ii3(r;84Zi@4^kfEg)NuY&@ysnL+%HZ73d|>L=6L-brZlX{)o+ zi>Z2DUH)qn_aRDcdER}SdY)9;MbjVRcl?ZEt>nxdhJ8!O0N*6W>q^%%1o+!H#yn$ElTjs%bDu?i!okt-K0f8#-+eMhr z3OfCLUD#g?|M}XwkNVaCaO(U;psFGa>Ug3GleNtvS5{V`mTdITHcAyK_&ILI$HEP+ zcB!JG$6RY80z4>@i=3tNb8tMO4*L?Es&NaL3MZf)nawR|mO>Gw6TG*yf+37`d2=#- z88`69EQ6`$cgm^+As}NxTP9*OADZLGLf^C%UJPr?@3}Fy0Uc?WGy+L!(doHxlo~`% zQeUpC!2VTH;cD|;)!4!m{k>5?cD#)%%MlHG*DkBVog0I*O1XPb1x3+qQ#DKlZ02Q3 zOC2DS#$bVkj&@$QIx7YJv8(pfJTxN+oAE5|&uvieFlp(_3(nXzZ}-{f;_%i28cG_T z6Bn7Ni@-nr?aHBh2qSOuoINnG2Q%nU5Ck+GtrCp(dAK5#al`lJ%Dq)!>|CQNJ@a|% z_Fxpp7e|)PQmi&`Hjc^BPha49Kk<3$bQIv2k_z@?y61Ys^w^vc5yqAci9X933tX=y zzJ-xwKk4Ju5@?fzNDBz=UrzxzXOUj=Z8wH9`umV~N+TJ->tg;KKlZTHG);5l=vwXd zuV;B53F4hsv1acr2L*y2Jh8V-DPP^?B!3v9uYBX1Vu`jk&dNS zq{=zyhJK=H>>EiqV4EVc2xT(g%-7B8a?=kE&n+t37gs_2@6?$em>S_Hg#j7l==56K zF;eY;gC?Ofo5xVi+vd^%-lUGt2EraT=bo2Z4D7gwhV>l+nmm?og2V?Hoa)dztRQ{m z@NYuDVls8CWidUv`6@*nz>y<~PKECz&mqhV#V|wNq@C)5ux_1Osw&{b9CMS!=qOo@ zJ=(R}JjyWg!l%+W$eZP$*?>Im9BseAeI4ht1v8bV)sT!3&Knrk?K+U&W$uEAU)Z_W ziwNcsvDnSbMv9`f&p}z@r)fBc8|M_3c=iM=l1&Ue-X|!%DJ$A$7OcoFf>cROdR{et zbZ16+(YB(kLy4+7i-`}(@Wh5#lSD<79#g?NbKuTj>U4?_gDth1;=qQ;Pjtlmo@-d{ zZop9vyPm;x{qOt%?s9_l?ow~C^KHLGVPkDw0W@0%atfUXG);b78$sDoZR>3>ZXsrF z%v8~e2_>3pP+V_a&$eH;bN~SipC=wefXMHKYT^aoj%;-T&LKZR4Pg;vY-{rlj-$hg zkl>m;aZUavuCT#k9U#u78!yK^Qi91xQopEN51BouoR7R4%1`!w(>H5Sb!Mb)n;JjX zLPs{6EoHzJUBoaHV%=^SPf}MXFRArS$I4?6as zEmNcADEN^zn3`dWWHY#WQ(MVHVE5F-kyAxJpObStfldrFCtzw!vI73XkAj%!>(6Ug zV`n3zbre=2>n+|)m6^xL%6z@J~uX8aeiK;?}!oOtB zjz^m%78)nQ6%^#SNTGT+r|z|o&eoTZ&neXXTLLFFY+ut-Si|CIbVih$bK2Pe6#>`E zQx>w30#05<1<+@+iwlyjt}Dhn6}1ZfQI-F=G9em}PKA0rB~&f&H#pFZy*&Ew35W0w zNqz&8oUJxAF3eoO&ySW{aGTQyI6jo3GA6LvCB0lYccvW5nS5UnI9}+AZp+p6d^QxA z;{rBC6GSs#rrf~ILrc`VZFnmW=(&bdXAnFSvR={e*8sRY_I2@(CU&PWbC*-3^B>)^ z-|sfUxanfPa`$_9wP^JbO@3Tmfcc0tv>rBmb3B4$M`~ovS{$4Z>OHqtRw<$xrfbt+ zG8Camo=0D34bz*|@}a2@`x&{Ad@*c=m`W1=K#h952Kk!v{(iGAQ!S*-rAjQ8LN)MG zHgE?j@FfNC&ZR(6fftZEm6kXx4Gzh!Ugj;*+XXYe6SJH=Dr%-)I77V=7WGEvo%~wA z)vCLY*$O9zm0B17Xy8GiV-A7xtw$639*3~Ra`um|n!uW>|5TS8D8jcC5B6E=x1gU7 zCR3((YEDM>P%JreJ;QJ9t53ejbJ1Oi>$d24qpbjyKT{rEv!rvC`L`#=^tb$ooBRCV z6T8C^(%njr4&Wn+$P*>j9atS+PG8Tr`Ta~R4dB!M>0l7Nmk|$_B{VK;iRGV@FI4Fd zrP6hGi0Vp3@MsEA5^-v^Pf*L}-poaXjgL%PKPWOD@cq;J87JuIBq(}U!kYT>w@4=r z1p;@W~Q$H03azT;c=N5c+S(oiKI7^CYsB=2tVZvg$?cFw+!OU)(G0M|ZqUdGd z9eCXnbYy8?IQGON?l#r%LrAHN%!Kdhji~I>BE2LMwZ&sEsM+`LeWX9r%Sf(~;yfjk zS*ccbNThiUbhpFif*jjW-w0LduYxCj(k>u0LRNlZDAu*e+$)|+FT}k$W8iz9XVP$l zXYj>OeNUjX2|BF~)N#ZPY#We82s4vCpQ=K)R`FPIToDQ)T{M zK1h*No-Vg#rFj5Fq%%ZDT%}vIHrRT4;O(*WV&dhjmCUZL_iIrJA$xP}hE>DmNfel! zUu?QFcS#t~YH1lCRZU6`K(Kq{cVV3r|KWdI8 zg(nUT{|YX40maV3`RVy>DbL5+d->uG9j0!W*%yyDGn+}*T#DgK-NX<+vV7MXgxs*w z$bg~rpJ(?p@>us=vQ*9}kyX7Sgc;yE0Lj#VX}^eJz2}9&@V(Sg5)(7qb3k)l1)g!c zBtRgp{I1{Fnq%D%8WW%j{1S?@ zrd%VmT$52u^)f1UG+m2!kq}@>w=9g9IFclQ=olM67-`KPYsqJ487D7E%f(VCAD+5y z{|rd=N-=eU_6?~ga!X+f+4Rq=50H5pF3o$>bjW+Z^&vg+*n`Sx$9Uu*=*03 zyXx)x`}4L|u+WPn<;ckV=^i-oc`vrOWDshKe4gJg)lk^@*Zg*uQdb!Yp>Z;MI=U#( z`MUVH{AjV{uA!^5`Q6{|;Bf-I-Al#L@NGiyIcmvCLU{xW#ynP(-q$c~<31+DGFVp(hAkn#4d^Tn8MpW;I zU0eMzrI9E8qt}m{A6?Hf&fx?tPuMQAgL^(6gDF3Smn!4zG!TxGi$w&)SJNRm=F;XB zcPm=$|8aVLYXOh2rgg|m*As*X=WT;y7l2qMpYH}CyLyKNnA$=c4PL3_TL#+$KGdrl zMSFX(6t(8fYp=b;Go`BIZD6Y^|3w-LNbat?3B^+T(CRG1Ij4$HP1xXjz$qd>uzNX8 z7)1619BS(brm@AyZsa+c3@>(pI4(X^?cz|7AINkEl#B6UiWy__`8aH`#OZa{er#BA zcop9fPr_P&SAQ)+Xj5B zs6TypHxPrrxI&Q&2?VP&1-}I*M3gXRg9+C*P9oz0?u}LgIF&EvgeAIWOq2@d-26Xq zjwmh^i~OE(z}wut3wuqHSh*4EBJ<4XD zqaBambe6*w(<^UlH>R*%Kt{07C*-dMEFmJHIPtj8U1_du+J;eCh zi%dBHi?r3f&)|oJ?izP)3+fII)1JT0!Fx<2a;XM{1yS#x+n(o<@Lp3czukq#7ZvpX zy*w|23o5AA2ip=z>qEr3FZwfEyiwlD5oeM`!?xJAP9A5toL@9_tPTr*j4v4=oT;6rsT zub-3yA@mKSno$rcIM~tVXQ-?6PwrfV%y)6{2d((01%gy}q}{-tgZb7s?MuYNB$qUR z)b!vF%DlsRXAMkplshp<>UC(#TO-_ujMR_MtCQq$WR|r;vYG?dzhmyWdR*gYoq}8< zR%xQ9Y`jccOYYd#T^1{RAFTvS)9Pg^{C_iR)9&em>=K+)pGE^S4*+e|b961s>97`& zF4)^@No4XmR(U<<{vILYMkaYn=$Umv`FppF^^DBT>lbJ6q_{`n>mtIh>pgo^1%FS9Er1sVEx&#!DpHj~x;TAoagv`udWQ37 zJuEO5R=tFvErtUR@!1-0&O2Ahv2c3|SO7l6KQpLUS~{{LR3%1+BImfJMcG^QWjEx2 z^2XOpH7&;IdM$3ftns4Q(%i{2*ZNmQb&s!C)_#+m>%+&(Anb$OxM@n6TRP1Ht(viV!*q*o=E)$l9LP~#xRn3qICG*%mk=)Q)#pY` zZi^LjM8a7UfqaDd+IPFcqiB}EUF(H;G9i-{$*LOprik+qnOW+^OLM91E%n1||(@!Alq4A>4)mMRJfA=ZlwMx)wI@FqkW$&H`Gg&a*X@hcDFJFyXirlw!$yCVT7+hVpN{e zEOnF{rdRwQP=58^S2sY6^1`Ngq0-%wX&y+`j3pYT|A(V0*e?S!U%MdKtm=OQ`0vN| zL1zCm1X;mz-CUCR|BK1~8X8XM@?e)=+z2UNj)=<8heU4wY2uuJ?M_ylS`e;|b*L+4 zEKA{*Dp9Z=+;9Giql7DabwU+U<9uEE|2eIU{AfDR%FLmc_qKHQfOp0Fy$ptV^+3WHX7W;9LL_%^l zT!cE-8waT!I9^LCqr81toohT3$*!@_A@ z;6v{?ZwZ1X^r*7PyVq&jhm%1o%=PLu2zX>9Rm#|ytT+z5y)s51eU@&u5fvFG3^NW2 z4ET3SIjR7d_yq=Ap#5POG+V zyt6M!qEO0Rn>Ca3*0TGJLk{lmbsrU_SUxGr`%f3M?Plj$Mpb*kSVFUYQ|+A&%$=9) zuT1>WP>FFfAbEWr9FyOl+%!0>QF~5rPep0`>Or}Hpa!0Rbl9)PHd^5AC`9T(OQ;hQ zv&(-fKeA_ahR20#cWTnscb!vG ztd(2`UH^fr(&wj3H*RkbGG+Q97+IuH`>n`YLHhy)Kxyyryg%t=h^q^h3wAZXNn`Yh zaD7E@+;h`A%a~1kOm(lh4Sc%Hsc932o%|3qxfe}PkfDX<<6i!xZJxg+FsPHWIGL)C z^c)+iU3Jb(&h~s??Enk8Pouf}rBS9E>X~p2vm|F=H@jR2^9-GVd`%X24dF5W<6ww- z*ijY~aD)v?Pai6v19AR@ykgI!7kCx17Pi2aXdti#TA#L0nt#9Eqc}d&o`)NGHn13W z2d{u6{Bkd{A2wL5fO*H7H&>q89JzOQ)2{e5rT14H?9lb#8hV{^3RYd_)k;2nKl#jM zFExl}6PI~)`S;<;_VDQO)Z9>g{k(jMQ5h-@Kr(-T`?aEXCStUYYq(uo`paA4;}i?u zxSa3r2}x7Pi-V8SMXlP#wjKO3ot^ZOL(=ge2Lm5*7E&i8vH#az43(E}A8!%R(y=Yi zOLKtmS{KEREcCLLyHjn?Sp?#NT@kkNGUAgRU1ls{48ia=my?#BQ>z-mmwf)*(|mA5F9swqu$w4Bgz z^PKPvIXx+J;-%2i-jMpbK@LSxL_oL}D6u}NJ>nKl{Oyh#F!@e*$MLsR84-(t-cyo1 za;SB=Tlw;WdcUcq7-EmR`i2KpAjunrT*ZEYZr%C8LuMj(#tpwTW9oH1V4X=V$&xQC z#oiNvIUd&hF43s|k+(wy7JIo=vi=$m^U%{Z3cjRf*)s}FS2|I$Bno$213P9BsOeP& zHBO)#**AgxHs^W|V2sG2KW^)Zu2fZTfqAexIwK z|H+eup89^qQNMgs+Z&<>-z;05m~y{T!AvX#?r!$f z>rGdp@H!&0c9S=oR2w5|+;O0I`h@D}82|Mi*-;SxK+0S6>$}^TA0^yq@9=hcU+sU~>`b0y^zZQIOmU)x zLhfQV+xE0{aG+)Bt=$CL}RmYqFEfTd}C0hT#uVIhQHEGT-!ztgD>rZ z{*{!fRDAcc?z+GUVJZ;&V_9I!%zms`61U?`wGeYkZ({G5TQh3|IC`)pAI#ZzRA-K_ z;0SSBhu6KCyMqNTlQC<%F}cadDoO1-()d5D+slasdxF6YJs=AQXb4w%J_fO&!(oZ7 z*AHq6KRk7vHV=gltCB$a&7vi0b#aaH$DmxeGkE{%qDq0{Rf+&b(g||IZU!aNURSXS zXOT=$R5jrrGhnR+I_^^PBgKx2cJ07ltV-!X$_C{jiGHS3)Dq0vs7y(Pb;`+aP8Cm0 zfa_$=XWBPFU_f`IMRL1w&WGDjx5IE^p(T&rsJ=&757Qcw! zCGUe?@{N&w>oE(*2%zy8->3y6x@0mB1#8mxZXZ4*JQ^moOyDKir$6xvTq_t_xxyv! zes0sDvd_NA!X~?{?o`Em6x}LedH@np0JBye5szW=6f;%_bXl7nj!`tE5G zG%#lez?>nates~0vlxAJ%jN$tS14U`MSRf;GU7G|#s9e=UT(xAE0ARf(O17EycJi^ zIDx%L?%0~KsRH_n?ulFMqnj?H96ue#p*wU2^(QNQUB1#>RysqR-Q2{t%O1-Z%YT|m zjw-PDN3%n*uHn=)1;SzGJ!aBziEc6i(jJunVAR*}BVI1SpMT=m?sC<5^T`zZ>S>cd zBfw9JzcRM$q2FALAeh=or{v%|?4~Z9+uU+GB{-)r$vQ&OR=|a-&Q;rEd)#-cp|-A5 z==$H@WFX4@s){M*nw&iS$~Dq>!Q+djPamCetu0HV$!KLF*+|hOgNIKp@W&*t+E(;0 zpd3IPF0LB9gSdo1eru*5&odWrL*?=lXA{AL=uKqI`B;16GH1le7%g`<#G>@BKCvf$ zL`zG;6tL+#nKEmcVWUPt)>}Arp?QrNW`(XdjiEk)^0i7-!N+#REj-(gs711q@uXpz z^s%0W!|AW&fu8FMvlF2b{vnPU6^NS)ye9GE)0DhloRLg}&CS^wcxY&o*AiMo!*Xb_ zaDH<-*cQ|>rnDvR#%ebV!6Ea%#FtQqA)`O;svxOy=}XmDNJ;UMXKvOV;wZm4I-py!waeAiN^ z=0%X%O6bN(wr__eSe1NQtWzS;a(ic+RJo1Yvo@}fC(^okthWY?z<&OC(%V0q;`MO< z4sC6;e^w?Z8S}G9ftnE(^r8M2bUaPpT9m&}0K=YBjQ2gY!MTp&li<^`JYAw>al2J+ zaH&q!?K(8STpkN-oNC?{WYA7Dz%sRF!~X}HX<(^iZ|Kj;1x#SLlvA23(^$=7Tb`xIi`zdK~jYLqn@Y1hU{xF^% z{3{+=vziJA7jQaZ0qMoDMJ)!QhCbhr zVD0`Z(7d+x7TxZr@&e9NMlsQF!H};xaUO2$db9i@v`6$Ebe-U%VF^$KwtMIpy5wPqi1)FC(A+WGdn)`5v7Pd=ddm#sBk?|1lxBwqHn3K94 z$gEXFuM>C5l9*?NRo>Pt!WBmjBD#g~q~^*8#sLO0@6+JY;{f4%MID2PQoOr~z{KFj za@6mG5+mVp$AV~()EFOs=Kt>}=qTq*A_NG*(MKNJ`%AB*YDC+94KVM6ds*MPH%@^! zjSp7e3eMI;IG7J@w=18io3+6_z*$75cTvQsrIFb+4D~qljz{|5xFH?6M>Uc9( zbA0X~FfNIA6Qlr{)4E4%^;+-F{!yj~)`=%B`tUR}_a33{fl~&W=-U$&(mp1T{Jmp+ zYs8@GWX5J+EwKAnJ<&Vtk^F#^vk8V)zdR&TiWfFE=2zioFmQws<+I3>0wo|OAaTST zGPRR1Yac79PK@Qh`yz{!buMu=!E%c&oR}VCdvYnJ$lOov${T{uG6}w941EDDZ2Z!K z%0NOJ91vjuJL*#O+reqs>_~0~@DnYr@PBbpNJNUe7WhkCfKJN&B&-extk8bK~`7@IQQ zO24)IrGu<9!eJwe1S zO}%+NK&GW9-J6xyxSx1Atqt!f9jR=GuG?75mIiO}Jy!V2vX2&LDIICHEHC4?Zz1z{ zgr2=~e8gPjn*+07M`bj>0Qn8Vo_QK!WgDeH6gCqXSet08G&6a#asW98M=~q?m}L>!qr))>U;9 zw-(YyLn{1=1qOC4^t-SmLY8^qK_yg{8xokQ z+vC?(9+|7HSLftc=8Sq^@d{=G^V@U!!;DizkPk_(1|_qvBi=xGYbxjdTUXSUC$F#} zz^5o@?*IhM`8?c+^2%Q8b>_aO=z`myDH7%8Db}@?=e6hfR=tZ$mYZc{T@Zw zcy2_6I78`GUyW&5ShI&ZmTYt9q+rDutRbd=0-x(iA%74;npW6`ZS(Qhz=6xM95+mc zA&-`~?K^k6s5J_fA&#X=_v!objdLRvAW2r!_pNgi`E$s$=X`#Aa*|4B;+KUNvMkTyNzlz)fnv`4ALT-uy4M-st?8Fa){kO+XFt{~?5ojd%dpiK8fw*%WPhJq!1xdH`wQm|Y*k7{W@2VP3n^ z@pKC*lgK)Zb>Ym_(f_4Zw=W3uahJq^Up@-@XHkQ(!-qBo(3PxjZq>R{WwGiLwj4*F z#L_tJcNqO#UiVmZo3|Z_9(8T$Xh!GO;@34Dec!HHS)X}-QCw>{+li~l#p2{(iofX+!vzz{=5!Wu*iH`V6*?5$?821!X@l*Ue4IJvQA}C zPTBW1y2&C3XvjO<1|-_~{9xby?ZJ+^U06gM;V^rDE$W?LXpwe=V|5op=PgdaL#oi> zE`DGkddeHO;6?D~mRI}Gt6}2SGW&3vd$Q0iXYgc=td^StHqJjhB8RxpqU;EV+dC{W zCtiGVsNn0eEQ$XT;Qwva6+QjGA%3d+UlQwfQN8&unL-a+aFMzG2sgl;1WTM!7F)~( zSh}P@jFkG|mBnh!Bga=jv!Wt&1O0 zwZMX$O?3s&Q&X=gvB9CV}?9m_)Ht z-qthAg3(xtuW@r-o)%5Tm-|m63yj1nsK7!jB#^oM^`qCyuz*XnkhSjk zfB1R}n971^O&51}cXxMb+#7d?MjLk;*|@vAyEpFc?k){9?oOkRxp(Hik<29jpR82v z)X7QqN$RYs^{v)*ur77wmE9uIU0O(e+mboAP(s1Z!M`A{XQwY9(w_-u2m8U(sZs61 zZk32l8CW!2iw0{Hpm-g(&6brj(ha^vHG5Cu)^grUDl>xHNuhF?jvzZ(iqF#|uw#%n zJ`KWv4g6$~NBv-s#KDB^E|ON>*4_;~mw{M&qyOgL7(2r*Un#^r2E!Bu)ywsYvJyGqvLwIN?Tk&&_WMeF4Utnf)(+|EM_v??4xLUze_Q-9Qi5 zlIs$Zg^@PM%h-bD>Gf|@Usdm#PBTMb!}aDsL3wHS87-g>RvCVpB$Rsj=@@R54fc4~ z$P;zkloJADOWAa5+XH6hXrl`fNOZ`Lww>w|-yeS#4-lk0RpW2~8uv4> zY-a_%rzW?x2c$t}FkB@6>Mi;3eVbAI@J_`;?IX|Dqj&$Fu6p;z zPmkXCsuLio6CX`F?X1z1i1h{n-I~O{yv9*{3fd{HN($QzzSrM_xGuP|axBjEF8Yqg z#l+luqA8|Shko>rB$d|)c?-`#fbZi)zXTqy*<#cjAVH$@&}vj7JrcNU_6Lp;1#B4i z@G;&7bA_0VUyvGwN8g2me)cuYqE@>0Ol2Ol+w|p!3U1U3s?l>#of7H;F^{U?VD2?7 zPxfoufi$cUtwTrXyFaJu<@rn3?$Ks)q_e8xUX{ttjWyWBHtdf*MSP)EnESi*~Sp4H4=D72dyt!rcu#8ocol(6xTG{AtrTq)flL zBu7uu>S_d{^I`1+Qls#5Xon-!)@n|1&(R`5(c}@9OLYqEWU_Wc`&$4GA{Uz6uN^Vx zm9Cn%j{)}Xx8m#eff3cMwQ1|8HMIKIy0Zp7><3DpB(+*_ca#1cWd@n8ZfNPU8fiHs z&kA zWC5lF9XW%;Hn&lzlO{Q;KL`a5tvBjKJ_u%@HIh~AC>yUAc;;vQCdr0h68wk65BHn+ z*JVrj9_mErpGF}TE!Hvcxu$!#pe?=*A|A<(K?j&-+a{7}10ebWG zodwXQALX@*rLxq%&>!{W9o!|g+#?QudLQPa!YTAe1#9EvEMbBD;?E>Kq|{4UoFXB)eoZ8|D59sq*d(F3vpG zu!%r@v*#Rw9dz$@?c|O4gEIMQNNRiTh_FV%PGWZGcgy;LWZ z58SQppH`Nts4IxB!muXI?#IuiTDVl#`l@+}a-(moz+7MDR;wSg`&kQ(spsI*Mqi9A zLW4)__~6-wyZxs~bysjE&Rj9vGW%_O?`$28!@`mpNne$pE(roHy&=+H4jM^sDI_$iQ% zsp@VE0N?w6!>GO4T5@!o&2CIT^vw}O&s*^xlUdJFonFT;PpR{?F42WxM+FZ|^w^$r z>WXUNu1o#LO&*o=PVcJGtt6X#zzhQFLjU!Q)Dw-ISp6y^G|CqNKM(Rfku*}T6m+4t z5YSq^{+%a?kyOZ?N-b!fwul}qza|Q&xBPm!4(QlWrMfnCz$-)MEF}j^%sRF4H(FY# z`C1HG4A>X$61nND^z!tTAu9JC;VPPJlJMKNdx2d;_met-U=bn(35gQ)_w`ob?)^+a zKQNC8G9{wkF3bkQt!*pMjdHps^wBiN%xRx2AmEWXZ8DwzME76|Q@>)k-3w)09V08rnk z@FD0Hd1*zerPI&QsD6zwI(RPEIXiuihrV}BIceGff|-$#Z|O1iV3fy_E^0-EXDEvp%Wq+6U)tl>&A*5SybC& zGyqkM0X^r#!zx-E^!$*}K7twwMDXTW7P*@ks%iO5=sN^QA@rrjF%hSxM^9r+{dR9Z zYrho|_=kD!q02`e?@{D>bjWiTAOy#;${l2cq}n{#DHyS& zGCO>nx>aF)+-NSR(K{UkZc*qb?7z@ac6i{AC_Z;*GMIKuu7z)nbk6tn*&`H)#?G}v z+}$>Tv!9UEfhBvqAfoIbfKgte*{d{F3|btLoYAKsg*l20{ja!xg&+i~ZA@V(8+M@w zStzh^Bx@q>9lT?sEZNZVOTj0yBr09>x|z*=*Svuy) z+uB4l+~TXkiio5!lG6>{9R*ZbCjn2Z_dZr32Q;rDeroBM*+?`2;N&Jj`1b56$@J*T z4-Puyf(IMs^!K$Nr||y7BQ_3f&3iiGXHJbrkt3fW9OTE?70Bl~082wDM{<_RX92Q( zL+#!39?!6RjRIa7H2Pu`YA2GHfE#_H*!BFpmpc+hbM0}x#4er?90?^({-)>AP9~h0$kK26APX~^}LRohl2>2URXI@Q_&v2CeC~5 zHcUAOZa~qcoiLWi+c)`7qE(1Z4 z+G1gTfosg1|GudrQcfX*V41isu*yPD$6~-V0lVo26x=MtxlPwZT#O2ybG6OGnKFiX z=V+z1{)CG;C()x?I;U3**#>`J*9v3b8rtNbEJp=H8N;rBSisVMJ!w1^WEL(*30CGa zv*X>)(%C{~XyN82AyrgL$!VG_qO!?SeU!iLfpT#6E~3ZUuujiFSa1XUxcM z8PsIC{yUel_K(hQ3haR|_`M9Ij(e^`rzae_3JCA9wh-|>)ySB>zcoDI_ z^WWU@Hk54r+x_vwbidSgi9?Z2PGTV^tPVrTs;K1nUecDB0eu|)Q~7sfZ*gIf`i*hKaN!P$=SGB<^H} z*OxMA_`a26Hhz4xZMbJh1*#1EhDq5(u!=o=FagJ(p*SDEsP|96lo(6KvcV(7k0&TP zFw!TM9-hA82#cXk7+$1aul^j)OW7Aj3B;7|;eG~)lzd+QGl9j;mH6!)1B{dNKN46? zdfLu^xe~s5Ehr6!n8>1{DP&OyDhieORE_*TJ3*WYxqz;SP;qQWY8yQ@xTxKc{{aS} zCGkXJ{ywX)2}y=-n4{)-=dHT!{T}Z3If3s;F0Z<{CrPKPHosl7E5qnxb1wt2lz zTD`}Cqt5Xk4Hxcv70SW{CQQ&TgQpM0HJ z#P08P7nej8ONW;t8BPzoH3o!=S1$wXOWdW8Rt%TEKCfGd)79rwff~U@n7%wQ9H%E9 zd%N!}IWHr3tHj85%hZ%TPlnqc)0O`%jRnkSE!-hu`o2*cZeS>=w`r!T%PMmp4s$6e zpGG{|X40)~9K`m1A{Q{=Ej;78K1LmyvJ;JqmeFNvB%2)~s~3;vkTzJ9o#XO(g^cAG zf3D#+68%{>cY-loZWOQ#)v+TH$RCfDXy*{ z^XA~@dNI5AFU>ipMIDG_p}1k^Gfuwqb10}I4%m3&QEJkMN^C% zIb8FjT0J{L4-D2HI_wB8iIS8mkvDw1icQXJVCd|>p#5^cIGYFfiOx(gwLCfQSUjT^eixLPomYYHH6cp9p+2QJ|2X_c8Y~YFr70eeYO&lkIHMJ^b)UW+u+ss z9B$WZgbrrzWLo;fihAI3mI5vVagtWOjo_JfWc_0LmW-;RA1c!V6}jDWWI6YDfy=)h zhK__ku2Xw` zZQge?@1!5x+^IEYMpT9Eo)$%GYc&buBx}92OrK7}*VGzRIoetJ=M|CPKRSO(0TGwj zt_`Qi(sNDJv{2)JMqa@2E1-WVFxpP`zOmOsG&d={@P9Ttuoye5r1f)fWj|bdKo6OTS2wLam zS==-Y$3!v;EzNV2NK9P0>cv0jvUGF&J%l_arkJ_5E#dl*)Aky5r@lfH2>jVFWYXkR zilm_1!iK^1V>NaJoh1Oj{vAIka3?iPy31i>BBHdW=9nEM*&g=_g83FFsR{5Ssnm2P6G zevD)ALqf0Bn4NI~mOn%r>)^*$=PMo4?;aA|P&tFfgz8W(%Pe{}Wwh6VNgV)|GPYbt zjZeXR`^H6?%U>*CMy(4-gYJWEg%%fs5~~PVwn=d6jwb;mL87d?Ev;`&jNb^M%PZw5 zMp%Q|X8Ef&^j}x6UTz+y7b^pF2;XarD$36a>Z2}lM8W3}T04%;dQL(f%8^4c_l{z{ z>3euDC6SRf543S2gysJI?1KT6$YHP))?lDpRj}~_Kd)Uj93u4cuS3V39!$AGfN6Tm2Nh{|4Cl+Ehr=K$Wf_z=x-G4o$B@;t@O0VO z7VkXM{LuW|67*Yne z11WDEnlZB%-8gvWsQN}3crm>ht{3$Z|Ej67yQ0IW?S>M*uZDTJNr^b*L z9Gp%v5jZCZ4g@}WX0zA$;-hw-8yv}o7+8;ggv)shmQWskqf<3^qP)8{mOPR=#s!p= zEX`*DbhARCMIZ5X#vX0ui9&j2cJ=oWG1=?NjAMiAz z31KUIB5+eZNnfZfWkje^EW9C$#j6rAa)rEvy_QA8LNE7$L|R! z3ng?QhdABWe=zcPRQaRSZXxDk`jqvmSMs7i)9J_!FpUbROVC&z1(6F!D3WJ>cB9O$ z-?5`yu&_D{?&LKG+dQ{NZ@Arm^WCx*dBR%^3z$9L0RQ<$H1|nZMXNGj zDsy(xE!dT5`iU>@;%A{CLgzy%4H?9EVFQq)s}G&(1;xb2P%JWHfdG8n*O&5nBaTEa zC`Temht1O8ctM~bYWwRHiW|lGowGr)X-0evq4^_S%!788@lN3$2E<-{B zeBSMa134$hb?J)fHoy-VVSCFbLIumv@(K2xNghBY8YJw<6hVqvb{xIHx`g_CHMdycVP+0$%P6-HU2;a4PN04$+CVFg;v z5IBxho;cB9E3@+b*2~;0C{k99c8089_=wXFR7@2q)u`A{=9rGyHa+$72pv`xAQmVw z-Zw6gF#^jt(!u5!ld5&?vlM=>bh8m|pUpNB1V4=@^Phn16WE|d?G=JFtw%H} zwOqdwrFOq>yzo7P)umRXUi${EfI-zqHPy7YaCb*x~RQ3=uXPhxLo{m>_dnH#C`kW!6 zKh-!KYR-I;?T^O)b+^+-4(&c+vQIbs$-{)I$}LfDLncZV4uO`5VO9SJ83tg+WWlBR zWhrKy{s&?>{_vM#HSq9jNYItcgz@~_l7u!ZQbQ4_;~yM!mvFNtWUn>bKMxi>-7?lH zf|PWKmr|$j=1L5K`8{1M`R@j1>M*FLP9}r$CAE5Mw<$a;9q3`j#THh$a{4RZJ0pCv zwk3FDs2>IDFry=;H5c$!)WHB)w+a@738Mt)TFz5poTzW0b|;(S=t&6vBf+lJ+75#b zzEB$;1ZC+A3^rFj=;??vwGEJSMMxvuJ9<_T=`q4>5NPgf%h^KTd|_@cuc(gvz2*^* zaSY3B>z~~_r-MgwVM#Q;y^Y2EG`FF})0ei7=Sk7C|M&FIne=2AvJf1Y#`oFwOr6J^ zP1I#h7x0g4*4amL{r-Y}(1)eTITS3~YNo+T0hbdVe{ng%Y*AHlU z`M~!P)$LFEbQ(wq3jG227j{$&QWdHynj}sULP|6U@g5TVEy*jQMCYiKR0G|%sJVI5 zd--HKkzmvk2A46CtYQk8yn&ty3fLvT`XP|FrEG3x#$LM)XJZSR=|*y!grCbXN!4O7 z8|~ie9Xho$)H}}9S)T;-jEJ5)xx?(1IQx$60Q-ZA(RIaRUk-3_)@#RbR2#j7i(1L< zJ-={q%l+uRTC}|d0=*ke-t*fC)#0E{{6OH4AdpPTq~W#&hv5$@=Ha8@OV4+3+qPXo z&Ps4lJR3nvTZT!5jvJaHUY?@i1D(^%P)4Rkq-_H$cwz#5;?UpM{(tUzJqOAkqTu*Y z*G^#LRg)iY7L@@VKX=lk^SayLW(^*gj$w(!M9k)Xb7}o>%ah1`ov*FB6P$!G4Sn8} zOHF;Ln)Q!-$32MxpNByj8_F6)6MUrA9!qZUr`5D z7iK5n#Ko}7;WT3!48VTv*L_nXmabHWyQwvL@*QO@^C^W2Wkgm6BNjNRNz!w_XPNcm z(HcCgcJ1MjZQc2XKv9sJN8p)^K`B|?&kuCuE3=&M-ss`FWZwqIG-HZG{iYCA~Ty0tli3_ywn*gN4fqtSWDF5ql8 zhG9nv<+A&C)1(W<-59{S*<_72W+k}xYrc0BHl%z= z_rwD`UI~LD-F&=vPb3R*hX{;`ztm6@Cz3Y@r^yZa`D1`$(wBy| zJ%X#k|S#E>$%wh|pwJ;AHHg@PRcNr#R_u>_elv`lvxAqOM7c57O zz@J8$P0b~|66CtLY0TrIXzHHmqggx26kVEnl^1FKd%dA1wQyR-QC)13Ay+z1$T*4^ z%x^vG>j-lzPd%T<{Y&PtdGe4c_b!-Ku`EH}#WZdm_ZGGign>~=h0ia!C}W#yln(~j zHFc2t$dn#h7wUwC7|a^b_JT^5$HilyQGZIbY>H=?o3G4WnA%qMP2g=-@9j|(2V`># z4Y1Rg3CYM8wj81&4<41SEk3Avt;8-s7M@EJj9pnLDltk(rZW8oVdCiV(pRb)Jg(86 z8VIA=-1OL-JbTe5fa)og{VU%|WhoE9mM(|2nSK${YL+F!Eext($tfac8}v^@61ZfF z8V8=^tX0dL8?FotS2tEE_?eaRZVxz;-ow;j!;vy>X%i46pDN|lmef_lBJ%&edi*S4 z`*;#J+gk4a{E)+*a6lAljX0p)h4_g*48t^}b9WPT?{EkGYfp&&kwssyk0%r`_x3sQ zkxfS$BN&~Lvc`2A5!Xmx3JIz`d_(u+Yi5EvMLyAB!c4{>wN3m>epHw1g)s23SCr0d zdJ{>9A>Z}X4e6v#^%@v5utq*c>!v?W<7GB3y%ezliZT0R&;tS(s$CoZ6T{@%hhfACJhv%<|#ZTJWYdD zIq2!2h_ah1Tu^qQ-9KqfMvDBns6si0>AfGmk=i zHaQPf05V75OBm7ZN;ql#AQ|%MqvuyH4K_PFyDNNAVg^ zKQwp$eg=_ndJ{e|P0}2L)(RP_sLbGHI|trtXo={aj9C;5sV!C2EcoEs1>d~K6r%DN zNJMqlj@DeBJF}Ww6KS=!+U{A4sG%bo%kYPfI-%S>xyWcnL9SB34f$%ATs_!PGDj?< zx9*r%M#Z2c4l{tu#Sr3GKCGAurq>l`Dai&$$X`Ar)4zLtDPsKftOSu1$}{3B34d?7 z#!+sgsyHoR(otN7n{#?ZKm~((*kI$10{dU~3ib-#&@UX+6Qi7Uh{W_@WP~ZHB~IUq zSiS|{E*!RvHP#9P--hIws0XC7E^g5ei{s}RSvRsjf5E6Tvqde*3VB|jy}bWjYy7?A zu0~e8lMun9q&uP5Zi41~m2F!6ggrNb!pZ+YaYuQK>zK#+QiVDQdf+%Qnqa&i;20b< zxu%EV5BW@Gs|l1$Vg%2W!#v`WQF+7qiFthV+@HulHDlH^;?sk zhIGkdml~<|_kWoP$8n0!E}IwTF_Dx$f@40OKlJ%z!lH#^jH>mO;bLcm(pXmb$HapO zSU!<@0;E%~0s6s_F3S|k6V?xWwv%Wr+>^9|n~r3Ph94(Fs{OG`1i~Wv7)Zr=7&t{a zI7N9iFkIN~nAH7W9knBdgMZzyw$|3w=~0r6yB7EdDmu!2RW&O9p&w!CFJ6u)F}8)l z-mO~XTMF4^zD!YM{T?afLZ!@pX9Rk%>g+<_b|GDy4pamw5Gb^nNVJvT%S>{5qgI43 z7_Sxt5HlW|`v{6fQ3lht4_`;zE*q{L=LtK7p5(=Q*1}m)E~w!w>x>%zb>5Y~#^M{{ z#1Cm?_fR8n6?hoGdZQt`PvrR7~KH`l*1`1uIOw|GZbMCGQ!vCjN zgtO7{OJA}RC>GsJw7rd7)M=#1qWED*S|+~B1?_mu0YEVpzAAcBzkuDe62~VK=XtVX znx(lP@8yI@>@EmxN9=B4cQ1~qEIP9;p)R_P1;l|f++A`!lgE}r5kQg zBFY(}{`a_(bs>gfnmx7jWBVVCS(_YxqHhiIaB1^eK6j@1y9GrB`wPobv`3O82YgwTAVu z=(X>C3WsZHy8KrMT8iuvXq^B`E{uZ&HNB@5_nSD0vHGoQ=Ki19t3xdv5Lg96^?5_c z76`speQ+fNzpMU;q7S&T8s@&cN+NJBVz#9bae?D2p+ckg&G?pB2IuFst^W+k>wacrMTO+A>yu0Cv2Wu$of8Qgr^GlZPS*^udi$56+J!V{7mSIEet9L z1Av+?s)f8-Hoi$VU88f5Y~tT$d4f?l0QEVWO*YGkA3zE}RI)^hK4h^(iad1CLi#>O zfH2kfNgul9n8$i#ImwIX95b9%_}@eSVZA(7Y|BYVJm>#COtqY(#B&ZG)+=EBKf>T) zy?ji83~<{$sQ*dBCIkK=nXO;9aZ_h-K(TK>!~2$#bN@NyvObr;5QFsfw3O9I>G&MDKiVJaEDyL)*+G9ygL7-xXQK#!31LK_)Ng*M8w30_1MbwnLIqc#V- zZw85(a*1j0%>U$wgskWNncK?Q;)v>U1Vz_zWt5& z^spKmh(YIJdNZ^=NSuwq;(@Iu!^#WJBy&`W%@6iEFj!eZZ(6zA7ave){udDPm_A-n zn(w2hD}$-5k+baPxD$um`0+^T$sbjEjw#1!!Eth2T>8qMx3OXcZ)WKWWG%y|JX+dunecis4a z91ka?D#D~RW&`Ijr=hw&C$YEYQwO%QISI#hiIaZIE~bE*h)P#B@&=ti;8S^R1SS27 zFX5O=`oEVK;@pr^u97kDrB@-rw%j-x9JlLT*YQRlL9FuE1JMJ;9;hnx z;qsB%yBrBbEO*6EG98J6s*vX_WPNx5rTHSX2G2V;oG2l3U}PwRLUWb{tY5FU?c&TA zgdyKnU%M%i1H@;kz|Kw;-i>ozw9Ep%b=~ER&V-P^67;c~vYb=*Unqq!mXHybj7rmm zImn5-wXD7yI<|O2dG&a$dPDSj-)cX2o8r3_dcG53*vNd)G`KUtX@$&|v9mUCQi?nV zMXZgr$v*1#qiOSyQtSXKXtU@Al)(u5_njGg71zeWY1kDR4rp2zL_;W&GqP%4I2p3~ z)-Z{tpZ}d0X*Ly##qA>~^0Q*ov(AM#YKH51il_dupM?C|S=iOQG;~&#-phx#l=c&K zX?slgt{L=OH(f#r_yTL;ZW8fOv*fxwy)&2KRN;=UdUK zz!7eQ%8fO=a7#JiS3R&vTnwx`4xgJNd3%#|uB0(AkroiDYVvH9 zRhpm4XGgv0q=gD?Z1!R#j`~C%LGxN-Py>a+vq5Aw;>CkRk$J%q0SQ7T6Y+teDbLqS zHj;_?o#6s(^tE$r;{XX1T1|a;&s?3`cjlMLM!~mzk9ud8WP-^Yr#j0MrEQ76*=y8p zX9rLU`h_ zW1lqqE?UQ{{O7BT3oYKCERdQwWXUj}NaPXWE^NC-TdLNj4(!pSs;m!;S%!I+9{=vP zWXO>v0R-_r>OUr4Z}!aqX#PRA-+!-{;Y~G8#I#DSn?OYXRZ-KoLuA5;3V$k%>Uvz<78=wd`+}`tpraE%JyF?BBq8A zfg*^$4Dm(^@kS2uMrrm&<)dl2dxA-z4xOAp z{W98@(OV`bFp@@EY}F9I#&6p(zl`-|?3UYhoSyU+z9LjO>eLP|Tr6--mjB#AWb5gt zX7bE;=Nj&2@`~jyl+0o0ZBnLtPf?`X@OimCO`dxq+b-BPvw9$YZ~lDOEv7T>eKc>x zh9#jOEw9M=RYBoi@1aEz$t?`?EUXofS( zKe~Aq_09d5{Q}d!rOKKe zP501lYy6ed(4eFD(+ME`#W2MBj=pJ4nBn;FE;p+=+%~1He1c)RTDxc&7!IGd+|*bf zTm3E!_Q@=PraSP{OdV}g6rv@rk5SD5o^Z1tqD4AT_eUS&t?&lf6Jx;tf$aHT2|oWb zx99(i|C6WWiN|oqp>=3gHwi5KucW2_CrjxIvgBDed1sV<^aWY^VlzQc2z(W83MIGo zYn17Htb-!<@=ZIfs zUiP@IEPxRGdzWfGJ|^DLPV%H7wLzmM3k(|=v`TnMhFg9RK(<4zI^)t>v8}7wFw$@7 zYqxWyVOsrf(X)A=ncbIq=^cK>#J9eL^tz z*g)p$A1X4vm;aJzC^u^#9C?2+^M7fenEC&%+WzAImj;S!2a16&e@S>k%b-2x5hE&s zJ(JlbW03B5XLf-LRQ)hqq3#o16Ise7D>@z5d{3Ka%M`Y7i}0ISBPFX1&oy^SVeD*( z7!#JKjVgj4iEJ1;FMiVZJr2!CX5FZmiqJrKR}zRZv!a~22eCFrjmrA7Yh`hM1Wi5Z zM!L*yk3Z{x`hI^w{c#9b#V4Xk6{eJS?7cN$saM5mNNTk&Z;dB!XghH!niu+e=7)x; zvm)(%Qbce)6%@0Cpx{UtU8LJkcdbTf`|66KTEMGFXLb>3UdNe{hFpGOE#xJtvelCE z7Ew!qUg2qe`3K0R7N&xtM5j5*B%wx4ai%T;h9e&!oP4HbX<*YLur7I4z@68g2cBDZ(m;fWCWk z-E(5#-$lh%fJ=yak!VqXecCzJGbSyaaKs8rH4u9T4r*}`<$am@}-HjjYKo3jkS zT{KY)&7*m!fo0F7-saBNzAm5)TM;*kQT6X5zpAaSs?v4|L(nBz>MV_4B=~+@z|bas zgsz2S6`jH{L+i%1@xF*S(BO(21VXQ^@TW-X$Sob^gG}M8$x_GGwPUWqmW8zsRE`Lx zNvuJqtt z!%`Qud3FId&xo`Td;6DO-z#Pg4o)K~+^@@`%}XxGKZT#7ZTi2q>KoMK+QOsbY-XhH zIQqfa1RFcWf6%U|wU!fcalW0M#3$=ynZPCayE|Epg!(QFsX@ri-sn7;t+-nNew&D_ z3%^+z%4^mGX3nxzo9Ev1j6a1?unxCfdp9aTq36^M1)=L&(F%D@w)|nWKq|VKpE!6u z-kS5pPl}cOm7>iS-PkqDc?xf|bZ(ZkiMMSkYs3)yU(sRuMD6j5uRtWubOLnw&Ou*7 z9K&%%<;eHdic>N0ZT3Nv*2X}9OTcu4e)JlpQslFSdN~O(-24P>%DJ`=s|8H{21}rM zoq_F-fnf7gs&XXHRDGm}@oICl<7A}l@EbglKY-fhw6toobu800AMUDBE!M#Fv{kWH z2+tdcq(bRPh2v70Q{B~Cd0GLOWZU9`xm`bu|72SqybT-c04Lr|ugC#@ay6HMvWp9W zBZ4x_v*dj&PeLp_mKE37fd86t+Q0%Y`bOx7!7qYAa~B4dyj5^D+K1@f&+GsG4eT&7 z@h>YgA}&4-`*h4X0#O|3QW?T$pT(Gx3bPCnCpWEIN4t&!%23mqnmeW#98WGB45}c{ zt;zWNZ9pLgSETdQa|Av>z_TVE57w8A33E9N2N6pS*>9bhfKR|jh7<0->Tvf$r!b2V z#STf6mI2loRi0&qzu6S}u@`s8G3^{;sKrUG(PyAI?{p3oQfJcGQ=$X8f)}Zqbwi>A z*@;!8b3kA@@FW7_`)o>90^#_WlKpSR zqC?t_7O6_=_F|gaVsZ^(ajRD_vD#?UvOpqMFM@*=IK|Z_Ki(5sulv^OlQ;}$1yqC4 zepI|U=?ctkki!SfXLv(uxK1oKLPJ-yIrl1M)3%piADOA#~mbcm&wOfGcXi|gn9ZRZg9bA29;`&+&~k<_>zaA#i-dtZii#h z<(YuwJnno`&W_-V_Qxh)Ja9|Y{?>rukil`Xi($Kenhx~vs&9Mi8 z8T~hU%b=0c)rSGU_B+*QSC#r(ScUICcy6k_p^q={v@n{bZ5xv>G+ScgPQe0$#MGAT z^oO^gb-;rSMr)Br(mG!Cik~ZR1!hP}$Fg*-=*22&)mTH*EirB2u)DIyksLEmVIXb{DN0|w*EUC(+)Zro02dGhmjkYAS zfI_~M#hio>Pl+i-0P5xdj^3ojY?F$w1d&%^T^dJVccat9j3D(pr{yj4*uCtDNB!lR0c6l`2KZFd+U%UL`YwYZH`GAfX{=ZuAbguN4PL{qhmzl0>C` z^z7XNwR6Nuw>-R4*v6#Q%^eRXQk|uiFjwZ8(q#M6qe}(y0Ub|fg$|~k$`NQL(Lt}BUncFX&i#MS#geg&H#94qP>z4 z8h);XhI1?eqy+d!Vv8Mu1@)g_LXJUQKGnxThqndVRCRvK_Zdi2eMiF=JwjG+ntQ#sfaR0PVKP%aCjIvCVQHcz zM7ksI<;yzi@0*CI+?`H^foC-IX_2%~gF2>{C$c3>=#@4|Vld`M2$H3q48cUj3bDKN z=%oQngG5FYQF2Zh4u_V2-b*8`B#>jhcwuMBA$uj`msa3587s6%;9hf>QLcamE={ze zT1&U=&C8AGIUaYT`yH0JBBAtPs@UuF#p&#*efZ$f)a*eo2U4ec0jFw{+D%(H!hT3P znTh6j2m|t3kCb=rx=nznF30X!HDk}CKzB%m-kk{iDX8w^YA+W^#99c0P}1$Ab}cZu z`1djMt#l&8a^zKPMH5+GJ7>rC`l&>|+yKPl(!UPl6}a);XB`v1&O`QFY=nDPnr%_o zP|quX`{(F0(qU`*J;Sp^FyBN#OQ0?9&L&7cEB3YuLBmr@Lbqs^TI7?x;t^?J`T%uM zKkh8*D$SOF$9^1W`#Qy1D!JFLHO|>G@8lH@RTFlA8H&FCz`>cX7g~oLse8!QgoX5T z$2h;L(}AlNTb=e#pZB{QBj&mOYX7Jr;4|FwGSh{VeR5P71|rXAp1uS zdK~%*kt(orK~IzoF=gD=)zS4Xoeh_Vs|3MdXN~VW@8=5)A3ZJGK15A|a;U-B+7&IM zSdORF;CY3DoY&^=I8#+$xoP+;_{(UZKXQ>?Nfcluj zZnqhiPh274qO?GyG|q`5uVBM1mI1@w(2o+EGu8Q9exYHyYnMom_C5Y`RLfAyh~_21 z1pBW~>pf`opvgAcRAjIJkFRg+&ID+-jcwbuZQHi(Wa8wBlZkCjY}>YNPHa25^WJ;b zy61d3tE+c+?O)KVs(SCebyWiL6HpBfh3<#l@GRo-NSygxtG{?XNn|Ti#cwGAnVxe%x~+r4*tsz_-^O;ZM1AI9%(NG zR+MW+m^SQbKu$=f%+w|jQ_|@WJtmxcYZ7@tkWZd}DRlpWL+haNpBM25r#-o=yE1Kr zc;44U)5K@9KBP3WFi77?vcDuUrK9@fds~2f$5&n&q3QIU`Z%F}D6vRP!t#RY`(iDd zq%w1wUkz+}!NkBeo=)m0=b4`%xv;2~+;QsVV9}>6HmlC{8$5dwy4f#+P2UWj7pe%Z z4Pnw4Cj#Z~vQaH6ZKNn1@0;qWaR9{@K_ckhlC(U(4(Q=%a6(f(-jw~Dx#*b49$P?` zEzN8Dt4?+KiY${&G*w&Lrp*O{MVp2f&am2NV2{jF-#lq;v^c+K=GFbrS2 zmq}R~+Ukghsqjj+j-}Fsy<<`EsX0JBj_2zZfiPx@!mTv9=g~9PEk}k#fG1rjDjRzx zWwi-TzZtE2+S*I!X4=wDy(cF`k3ce}WFGC_#-Up*I9XYTBvvl6brCs_!O2zBA0sBJA;F!OWz}Nr?DFuorI%T>gU_zaNM@&LqoFXRhG6PkpCldN66X;mb$; zHC4XX8dm`F8OQ4z@H(w_m%k_KtL!ua;&^Bd{B^m`@nn>hk+DY6m7yJ7yQQysWyq<1 z6%R78i?&}@Y*l1!& zEU@q{9n!q+->}%0TdbE-cA!Z8AJakg&AoQd=>9zAEX5BHth!D0!BGIKPfQIy(9qF* z1)G9z*h;_D(b{jRK7>VIv7&w#IGv`s@=$JTAs$V}R=Y*5L^2XXonq7)VxlRnpyT3e z?x>=~GnFHe4@IuRJYAMVeQMV_jl*$4{(ppB~H9-ek*Z_DS%XwTjaIf>$qk)3`=rhi*6yLVb+;X&8^I6vzS z8oY_H-mmmr2!wQf(){YU$+ymgfce_tNo>QxU#=k{ZzG_vc5VTe*|GQvMW%U$i@Q+w zOb1bySQWCLe~LPNUe1?k&*domRo|z?P~g1>Q8Vt1Ph1@GTC#t0g6(Rjy=JU%bVVs7V4>mO8{;APcOr-R4sK4{H(n7XjZ zBw36KLhb!NqO%78JqH`c>Bq2X{`Ky?_-MGPY#nobmxYQA!|#&()bgc&{ww||5exKs z0ShI>UHp0tJv)Ra%FBIAU-tg+Jy*?PK26Wv23le8!Pw>Y9bd|uPrT}ZGu-=a6_!V~ zmQ+s}K+gB*S5HiRCOO?*{2GKEM5@hE@Rh>E!J7>nL6k7`qcJ?^_P6 zy}PoMacTF!48|!dRavUs^gt+by&&S5UrmD(He=EFE>#jtN<}y^c}C-(By)zY5ZnZR8L1l3_7!<}$xeLOYZ`N+zRbTs5q^goOJp#mo z!4(XEN`L@Jj?%7rs1qjk1{tqP{&cqHkD|Z1_!f1mM$hMDLSg!vHoPZ9Nr%TBO$TpY zHY0f1U|4d@$DSfe19Z;C=4uG*G9ePq09KK>1=WkEN8{WL#=>p{gZDGBn0L8nR7a_( zMeBiuMyKw`rPJ$l5&~w-65;;}hPGusZjg7SefEGlhsEo%L_rAFAbrmR-=TJ9gE1;l z*NEny{_)DEKo0KQKSOI|3236#t3?F^p#z$}MCjW6&Q2MUtyJq}8oUq3L z2)=8UjVP6++PTmv_o`h|=<#*0OXe1Nxh9#%gVLQ>S7fBT=WqOFXqaR77*zw6A zwJr#(B2AFB#0W7es8EOo7UlN!7r|~HfNz=@LKL&m-c>CUDZ!2pWt})P2pSIK-v~h~ zzqO|1_UNUxmtyFBq}dkJSi*lM>mr}HruFOCD0__SBAoNnhx=RHUYW6TaC`esEU^+~ zNj35`C_H7s2j#peF6%Qr@^GK!-=+ zTCZYqCU_7cEi&vb!9WNSgoNT~*V}K|G6g>ScDmXY1QqqQRmpjl`cDpJn^Z7k;#lrW z{o%s^CGjFBCF+mheJld&p|6x(m+Dmu^y^W~$DOPG&SgbpSXi)(6_dLIG)imp99l?3 z^?ok}xiNQ|bWbvOqxyp!FIl}1IwW?Xk<6mu8#D98q<;n8p&E~GIgQ2wIEQ)pJ^&n;szyki$c=xL5 zM2t(AO`Hwx=(~^rhk6ahkw}CW^jl3rKr9KxOoSzrL_+SD^oeK$6*l1=mV!4Rf0205 zo0FR~#FhZlbgtJ7>>rn*`fh9h}J~QFjtRhO6^e-9yWfD0a6prAOv(LwQDp`0AcooD*X@@ z!6gI)j`F!M0+$*%V=zW8-iQxSYW7(XixU!w^kipykhL1>3m24bsW@$tky5R z{zhM3-mD@TG9XzzH+L3lASB^IY7k&y05z?FoD}(~Fvt2?(7`tAZ$jjF%NZ>MEL{X8 zB;jyw34Ws_Ry2902EAJ$I(Y_9-T_;TQpTj^=JY|8!DkJ_xqup=Hnx&9+cP`5 zqV>tl+@I1|x30&DDhpl0X{DbTG%95%-p3)ApLLm6wcBBbv&0)r&gqA?a&l+#*{)qPGMOaq=guyOJF8hy&xFTz03ruPmTM>G8MM0| zA_QdFdV3mNUFZl<y}yk`R0d6X)^>YflCKuI@564f{-BjNQ1*DHnCcup<;4DF&V}#*gdL2v4!Y&_&?|6 z;yflvF#u8s?m%tkTZQ@_tq8?!Pu5GMagG6pWo8)vg0=^u+VEkycUWGz|HsK0VTZ;$ z>nLWXhM5oGX1XAwtFk_}#QWhsrF>`AP~&(|e$kWlTP?1Fl&Jiql3YvsW6=g^^4NyC zJdOUBE#sF?p8P0dCSwVE22@))QuN-mXJEUG^{PvCGyR=faZ#i=_L=w8cH2npr6d2l zLy^N@hhzu1t5@Une}y^ooJ>~fi&rCQjo(@K!B{r{L^;_hUzgJ!XiyzsdSx7klnh&q z{&eJMuB|9zzKL|II4ID+kfETFe2)BUohWQ| z7E5`6ImnbjY$+kIC}xL1uv1c1Ln2U}2r@``D`JA`)TqQn6*aL5D^*{(2)J}~Qa+5- zePil{l}`+HzJok1On0+kQu(l1Lp;Q?#E7QQ=ymSeA&|vs{+!ianeh$j)2u|ti5geR z^gwg8-+pE(pcYlegxdY@JZc}j=A2#_8+~MeYf8NACU6Nx<47ci1;sT}W0}9ki+)cq zcaVC~EtV5go}}gYg!h|18;9{%8Sc&lNfE%4_$GZ#l+1HGidk#rq(Jx%1+hR%l0apo zKxiG#tc<@*uSa5)oL+n`!^z;lyMUeoG3TVN?76a7SkS@SdVg|(Z{7JX?KgKP7I?@3 zuVi-mn;sDW#PA%!^Qb$!6*&m7MD&PH#0ZkHeMll;>9Gw8(xtt+A2^bemGX`ue4%r} z(TAgP7na-@Ma!r0E^ge~bKneo8c>C-vP)O6q~H97E?6wQ`9O*rO=5pYOqw*2l!Au> z#4-`m+eL57s$_MWii_}p%^VPEkbiXp7WVn1q}35JsnCVy99qPkQph-<3FizPe#t0# zqB-&2)nP4(Y;ezO5Ld|Rk`XTa;p(?&u*)LNR=&3-JV-c}(ml;%n1v7{+2B}UmucC? zf$p~v9gYPS>!|$R9 zgE(y|YGvq=dGT;}ijQ_Vv<^>aTvt1Fga>RF*?cV2?_JL^kAEyMpPi<-J<2TPe__O> zi0Q;iffo4rF3A&Hq83Ub$0Mo(ls~G@=D^@ODq(6!=Cr8F81BFJ&5Gy!H=7CTf*yZY zvwXxWb?|JfS>PHo0f$6-h2!>?V-jW!4|@uf$7Rym$L_jYP=DpTh1qGQGdF+b2{aTm z{Pmc0u%!=iTzv@Vwv_c}gzVO4+;-7)zRiL>FSecOtd%YC93@YBbdi<;ytT-N)eJ!E zhobVXMsGj0weP44lvnzyXi68?B+7iUY4!|%c0cnJ{H78Yv1#3)A48jQ&T%IjICA?w z+e#Z4OcmvB#{HPsL24eef#g0N(Oa+Q|K}{N5x`<(C0*ydZGu30x(S!q_zIsZ$&dJ?ibm3Y>`V?(^0L~7+8Q@sgWi(%5FfT}NiN`^3m*Z2 z2O~R)S%$(2zJ~uqDnuSa-)}xUKjATg=kUCms-%8#Df8r&Eu9kt$nM5pHL$^~@LnzE zLf`i{d365q`MUtv8?QZDfBsc%2AR|m=Z zSlu-J`Z)7#?$G^ah8pgPCmnD7uvXJ7wSa$15V4#fRuT; z%wREcll)a%zA-@BZ+>t({88qfKY!^G=y*hY73{vz+#K;=np%t|MXiXTU5&_LLF5T1 zq~ilkF8;FF_MZ%R4Z%UMo5i(XraSa%$iHS1}+4P?=uAmGIIbp^h9RG)@~Mpo5vJfq*K zTF0WYD$iWK{+;tg;^QhNa_V$QaTcJ4z5UPv`kXqzu8@{vaWHv#AS1iJ5R#IomxM22SJ>A~6m(07<&U9wpzQ;z!Zc zXa~$f$DLJ|?)J$>iMfo{Fo-D(j0&heZo@YmIK`%bwlcZ?lV^v(l@dg-mbmf{`>$2i=GqGaAFK({aKXHH$8qS*qY^0h3<3wixV;*i&GxUDp%7xFE?-%f@oJ?_$5 zjLwpV9fgeB^J&+ovL25qyzdkEen+uAE|P}rg|%Drn%Aea|3!a|;s0;3hX3{70`T9H z|J;ZEm%#SJ0K1k=|47t-?A$#IRhpL))?+Y1O{0w%m6U-H&?K(rubud43IijfKcPNC z^^ToYf76?L=>7hD2+`5ZT9|uvVVwk#`8qC0B|197FbW;eD=rg_9>oz znKxuHMf)NfXPSF*`;EEiFEnXq3Z8p4Q@eddEv_jFkbq-H2B3+*(LGU zkWctY|Lq}jH#}gtq;q0Nyv_U2ZTmp+c+B8^pThS$jumi~%xf>4-I_nSK6UkYZ0CL7 z!uPw574VSE19TS7ZvPh_+F6J?rEL_#`#ym0w;$W%Bx%@I$hb9+d3_4&@hJK~V_Pwg?Yyzke=^2Y`nW()X!FAEf|jP@-5|JbCpC-^Al^2>^rBSZ8{y-he6Py{4* z@4Su#^?HoOq!X@XVR5MZo&`5!lD>o;muLmIfPV@$SbbMEHA(Qa>{!oMdXN!JJI*Da zt|xu=Upz8N`Bk{?+su3h!Ixd@*4_lV+Tox7b~D2F>}vxUyWdg(qH(8)pA*9)I30nA zrPw*)xD~f+&*3-sY-Qb-@w(}SBmrbwTL0$c5#Hms_|+L`&%{_7OG1B}7%qL2!E-tT ziQ|F2gARUqluS`PDmis_KEeddKX zX#PwBqh#dkXvq8`YVqr@$k#OMNl90{A0nAWY-0Bj$p9RR!U_Oxf}u6U zx-S+;A_Q&c$j)6f2UyjF1QmTFK|H0qIFu;bDxfr;eZ=U-mxww^Nvq{WD^^4hj(*ax z*SA2=b-Cr@_{t52?W@8-0U+T_o8~m;Pqk!)(yzd~Z|*YyyAXf*ke^H_ksAIJi%zyB zpIWNDOvE|$!3FW?R!vw@vJ8kB&wR_J5*^h@HXa{_aLX?WT&xGt4yeM0%5&3?_KD*8 zU=Yz*h_jqN zKkZ7}F#35l-;)*g1^m%nlW(7sfE1oq&Qk()ru{Qdt#l<)yQj zwZXQusj-xH;hnMZR92+DfwdmfHF+PQGEgyF@@zsw5z@Lp*R|zfWe6*JEi3*}e!UMa z{I}V&n+{}-D^@Z@zZ77)S4hXnQ<^Z@Ab+89n8W-_eCM)VE2~33$sQ(CJ%vqd1(;q| zv62-rtlz7XnZ2m+JZ@;kJA+_56w2?BstvYyjzz4VyBchVLgWVTF0Ri?e`dy^PVhOA zDz{D=3c{RZAV3j>H<%8z=JJUPCJD(fq!+pILFo%I1FFW?O#(0`?TF=KI16iv8}R-} zwQaZw`Mn@;=>v=LA+zwYtA2zch#-Yj9k0m3gOOCdtC zwztk7>|3R4X%r}>hZlXcq~0#Vb;3LvPjG^#S4`H@Wt)T{jR^t;%|{eyuC*pLd%)t> zIqj*?a0lFH%wQ^J7>h79&V$2e*ET@VIqXye6^|Wn#0E}!Vl8w6=T%Hjy$THqPYFkj zr4WShzSu0u$sDqEH*=s-vEXu@i;diEp&1FXnl%Kv800k^;)x2t5$?CMb#hdOZv9=MLGilHKak z7C(1-Kn+)?-|j%Oi({e<;(>IjyDH|U5lNg2SG9F6^fu2rRU#hgXgSsSxlKsP%4G3$ zS9DSMke2Nq3*s5xTqgM*-CUp@Y*J%W-XQ46>jUPsD^EgL_)*l?iwWj_f&1fz2Iqcb zNdlY!XCM#-J3=G_bi<6w(zp9Q?stedISmV;|8z;_6yBP+8kyQd zQnQCR+%nQPw~Gz{4^nbOR!v1-N-EmNd|oAv5fFdsZ-i<~_hJpWH8e0Dkvu2O-EWH1 z{U}ZGlrpvKB%{_1Q~xRq^*`^$Q2e%H8!C^vNZPzu8e8wPTbBSwc|`63&wvlC~^j&MSI0JdD_fOx%v|7KRg-{JOYY>Odwix}8DEBOrb- zHdsVT*2Z-110tA4en9MDK;p;1dU>{VuioFAY?^FMxq}pu!A&_pi;%${DT)jaWGghz zs~phHdLH*ahbtkQqiDC)R`$98 zY|5x>m~iECnyiq#-f5+eY_$__B{ebHR^^pIt&&o6u7+^=qg7fb)HGI*N$2PIYfQ;= z?nNHcAj~ZzS9LhOT>Zx7Ci&Yd9Z3R^IRcObU8XzRVzVBP^Eys?OD*r^t^hnHUB*Xe zbS96#f!^>mE{Nz6y278GjcJ>Wm^4h5aji$2jp3!PKF{_1KHPjC`{jduN8ja$y>vaN zU$)*HKCPp^b(1aLp-k|!gh&cgnxWKuMjRgA?$YCTA-OS&L1`+K>9`|S`AuQKn=j=p zzb!@auS!D2a2x-blX8W2t^szbr<2Cd^P;~6jLZ84tDFW8M)0_S1DQ5fx{YkOGB>RH zugx-r=^~Ajdu^gV*|j8VxtfH#4?YJ!7}JsnWZ=6l>*u;WbDKF{g4Q4lN1rO|4%VI_SavL}m0YOYEZE~EKVsP)dtBei9zs?6$^ef|Z#%){(k%RS zjWb;m!f7ob{IQc&`u5jMJ`X4A%>3Jwk09z861?nTi`%SIm7UbrLuYKmcZ(qi$M&o5 z51<19#W(oI5pk;!?@5GclsmDHTAa9t+%juRo>{jS&?19T6-ADFYv%Cjk?ZE+R_a&8Q zo8N7-u7Da?!`ZLt!Q@!J=HK_pHsD744bNUYj<~41iZPiBhJ5}4e^HINiW0j6m;!_+ za?Xc2Q}F^sd)AiShYhZYsDo1`j*(DUwOXc){+MQc_E&BHMFdEEzzLg#A;GhP>2=2Z zz@MeV3w9K|{)A9@aMMl8cG+7$4!c7f#fnlhP{cGV$m_uiFJ;tBHr0b}{_V_4XD7<4 zq|AYDXgM{i<|+v(B@hiW9iMLaWZqnxQZ*%)>XlmKZ3#z5K)DN<0ChGb=*!Ky51`&- zy6LWYu*7L`W(08c2Hj&_iv3Z@lHcKYv}2ipVJEIP*JxaNY*GK{YB>WzFx(Vz5fSl> zeiM!<8arL&^{Z=(qzl%|@-{5(B@#HUp?d5o3f?2k?aj?IP@EBzXEJa5Vv#oaWdb>I ziR@K@J4blVa)A-IBnYrx2&~}1$d)-(o5w7P7w^^7 zeDvw8fI(d`5^;~jSl-e}$x<+KT1cg4z50YxRG$-dGOjtjlv~rbH5nQfuI*99e}fYK zDxk5mYcWvYPK)_L5Vc{N0dFQDH$%#HBc!My-aJ$5hP`^VbqM#owe{##h2j>^!WF^r z(ju~&VgrO@lez~%WvK|Z$a7&Hgy$qRx7z@365TI78^;w_MKsW>y;`jjBQdSuoW(c$ zpXu}iT`vg{aZ1Ze16`?`FT<#BLK2#MJ_Yd|m&EawMu}sDII~Uvf>n6x({}kRa`jBT zT-|Xgtpf&rRJE`TwbGB-$+sVNnNJ9+S7Me60R!+VUR@$;F^Hsuk&-Thg8H!5t2o-- zuugX=Y^HpHr1DS=hC#F~O}PZlbI$dXS|Lnc)~(Es9<3V1H$3G_0aH8pkpZ{<9qJLkb$*4ziwj{2SA8{ki!jzjgxuYuSEfJRYy{Tqb&MBgjySgAU=k5Jm#(GiI7MoPSDehDFkp z7ZUI*C5b5ac1UJv=zxev>N6sfu{BCqO*Z+Y^N@7|NhOR7v|{uVSvfi z!$19N2e5V=eX#5*L!EmE#F? zpGtutA%q)H5t@($ij=Fjw9`L0zOV%{1p4X!!gIqGB0afAHt&0pui z@*~KsefE>@@>%%_P<=ho08(q2`N4u}Pybi329nn=!~Uk1n^^#}I)P&YZ(GX%$pNZZ zZ~smh`v^)!?>fo{%i|I2veXG9zT5f!o4 z3CfoN^f;BB4dhPY0E9`)+xM|6o)S&>1E{1b>5W)$w|EW!pgW!)+}6UkeJ^?fRRFN! zaBgo@V4m||SizLOo|fD))-vRFdeeV!alc6S04}qHTfLimH$guQ^SxCMam|9;4}vT| zgAzXtGla}PXSsq@a2+>Z-;OM*Z_XLsBSBL3fFHWgUR0H@PUT`@i5qq3&5X@YZu2ub z<1+*{^#-sEEug7ryX?T9Y|Rf-R*qD6A#xwfNkN8*msBIm_qgU+j8uvhcOgs5J^(%N zmE2Du(A~?qJpI)aFx@2{5Gf@kfE3ZQr{1(a?#WeZs70PU96*8qR5)fBf!as)j(GsW6!{g}1{{3=AW^UYD*S60f!;^; zh3P#@^zk2f`49a3gZx{{0}~J?ny*l;o!a!?IUk7SUL@Rry9YpC#E1UkDdVF->3Cj5 z#+m-oqvLJ2!`|**XVu$3s2Sef`;egff!Iy4{|UO$L@nI@$2NTJ?)khS0D^BO6#fG< zfPojuX(*Qu-Zwu<2Ef%R|0`k6o}J0f5E%h7#Iz13=IYvm6k8c( zwja*>(T1vO+`etbagS?D@~5@i$Kda=N?KKS?ESYtz}MP5eQZRps0SCU#Zxu8t3MY)UlM19ECOJ%*A)u ztW+gk*1~6~(xs?UquXO4n{}GJ*~ZKOkPMR!=4UW83@~cvC_k$Zf3J}gVSzIarzlK( zzDx8I4KTc|<$z4Qg{dYM{A|Qd6Vy$GFV3kz!VQSdlz^GLsUg2T12cmUjMcG=)&YF$ zCV-TR#Mtiu{&u0SDK)qwb1;ENYWyDo7E{!FFkI#N8qs4V^z6U;Ng|?&wbephP{Ut@ zR0KLC-9uc1$b4uSWSblrwMmrTxoZpSCEOY5U_+Om($*+xjVNI(#0%rcz~ovR1?X4! zraL&pJfD8c!?H&-?2I@Hp%?;;lY?9 zrFq%*ekhm-EgI4gIXJW}$V1OJ+H-}J`vPWG9I5G4QK>3vLdl8nd>4P(a0kgZod6hv zCK?OHOSAHE^A);rNlaZLY{eHi#`~%JU?rhdMAxD=8(wO6SyV#UGZN#hy8O87<%y`H z_HT}aC;pB>S-6K`(|KtlHwjm{DE8(AwWLV`4M#Q0Gk1o6gf~u_PD0l^OtOP@?`@q0 zV03dt9V-- zOQ(s~60Or7p!5T}W!hV#Z)>uGhf|c>$}Mvfp$83N|gD z7en=x!v=diWpZ*1fMZ*=;hF_R;}#>Go6S5j!a+0vuUSf1+G?1&H;wop4in@;eWCNBOx_KqxB*5Q z&j3`msK{0y+@lHj*K?LnMa!~UR-BaTj4L?i56a1S4Sieh$17cn0ATd0RUmxc;bb%n zUV}_WMW3c@$wKD>ualNVbtzly{Eu#7GV#jnJcYTh6Y-^M@7Uwrz`odBmS_t8XpS6n7D<~ zWGQ_sGiA}S1rSvZF90@!;BYAu{zphqlABAIg%Ebz<}YAVLvz~sJEdMi_ywK8e#5d% z7eQNGcc%j&aJ9$c-OKF)QrZ{0euMp>55Mf!muBmZRNQzzK#;)j>AiE2>|@Kc3FNu- z0A9Z+OtX(p^K0N{kn*~g%lQe>p7H`stEuYG4wc$-6SO1Y2Vk92z1)`V3hlG0QI^l{ zM`97%gx_d)kjr_8_IuaQAgOH!k9FcWO8CrW1k#o8t^j-J+Ph zRpoDj>A=mO*LW;x{a>@pb#dUPzgX`k1Ez@w;4i;o|0*fQV_C?KF(Fb;JKVO%;%A(Z z-}U`fl(w#P>jlL3JL0(E{Cl+gw0xuE!tBQ!&8~Ziy=gts7?BdR&{P{|YV|#kWe^94 zl{3jBJ0Rzd8+9eeNSNQ{TzaGyX*e<2i&Y&gk*cJ39hjHxj>y9QEkLzJmQ$a$5Zx*Q z{cTuhAGW!O4f|8}coGA0=3D5~>QKqdl3e@8ytP=aZXaNn8^4xNtlz6GDvXG={licN zW}0;xq>Hr^dgBw=)~=iSy@Ee1xg`?M@tF;G7@5=L0YYlI2% z)`UF{=Q<+gj|W~*sBkK;WDzBC~ymgtDSwhTy8h^vh*olsrE&yo7;qYT`zaEVU;*5Et`D<(R5QY3a z;~?@z0(cf055F(i+n6A`@K64*^^~hVh>~Epsu~(C+p^yN(?ENHU?dRko(XxWj|F)P zOU^&c00^kC-F*KJ(V$zOt~uTuJOJ;s+e%0Y)BaxbHN#ag3{=A=qd!P;MuzexYHBd= z_5d`pR5dlp3Dz;;iQLrNv2m}e`W)&^Fo=-Ac?b`j06GS}bl8}Xx9bi11bRIuu@8w! z=(F&CSLZnkPl8RH)v!y@;>>w}(6s&Ta>=?i_cWnS*Ah$jI;YXc9#nPcLmN8hLC9j% z%NHQ^+IP`#@~U~*PZyCSlhCN#rsBHoe+Gyv(cd0aS9brFC4nrgW=A~cL9jGwNXcO7 zpnn2xQyC@ygS5?NGP7ojSbqjG3vyHi+ckMMocfrx^2T0 z6(41E zMYxfSA3vbZbOFI>E;~;W%u8F?LxHP7&1fbZ@WLZTV?V~}J7OJ3hbHU$*s*gz$rr(Q z>Esvf!4YZH{GqzuQCp)uRW_c=Jp@3h^r5|5X6qGvQoy_|?cr1`sN7@fBjZ`cb#av2 zaF8CIxM-AE^yt%u7Bli2`2YcJjWuD9BtM&HH+LdQA3P_e^?gC^8iq8~M zTEHWLtQFUj^HR<=ODjM~+Z95RI7(1eBXJX}X(c0h`LIq_FbIco7r*)%!OMOy+` zO1utr!fgC)M zP51JMh7XP&IR5SUTSGpwbjs0d^WX=*Os3EC1e93tgb{fVWLL!QL95UOw=BUXF?#Xm zP~^H=s<1PRW$SM550PvYT7=^5`qg+}V9=O_7h1vEf47EtAk=! z)$s334hpm{!*Sw~T=|hCP3!AR+XKxAI0b%xvKc+B1n1_Vi2)Epzy%+R<}7kxd^urM zKE5!!tnqRJ^PP6%xC7hywnTF4aiHwfqse#iaXX&gYiwz}%cpTVHdHeRi?CinRgTdF z?Bx?1zgmtLI!caui~IXg>qz`x$SXYcMRqc&SFoMyrs0I%=Ynp&JxTThAAC75W_Jj2 zFZfRAX?8W6o&cms*DAJ>R877lawjLYYxuK~=q#_0g{M{tQ-8(VjzHAi4#|r1iyb8W zdh0cxZA-sJtq!`2=5VRVp>9o1!9D_8%gT5ini%sSAwMve0cWjOFuKI3lCtZ}hRR(~T~WzY`B$1#&j7k#r5|!!!JXnRR-M{*Nh{FC zeKT?#^m{{MR{8A95+hblWlCtkmS}!Gz!sEvHuek5`NAxTcS(b)!n_!8apmnz@9Ooiuoj#>*)O^_O&*{_OUS zb&JrtO#lRkeX~fhB{Bm)K6ggFj`sA54sysyH+7$c^ZiebU$X1Q6V_qCoq?s3PdzQ|X-duW@LA^uqZNSbn z66G{oe7TahDj;|DJg%^qhWbZ^>i7MiHGmLCfFC2trlDA$yE?GC-$XmGu%Cx;>qLKqn$IXc**t|C%9uL^EBS<*lv4dB_f z8r2IjE&8EF2wAWbm5c;^JM`O*aAj@S6}^P-iZE?-pr;^}9d}1tv}!T#$vHz?6PEo6 z7yT6V%10DZ)nU?ghLJond#qOd?P<}2&J``hw2()K8jBF(Zx!_s))tXFMY(=houmtBu&iZ!mE=xq zY7?hy7Sl*A(#7Opc=po}F?7RRc>U8Qvz*!-7YI6a)?57+zA_RG1xzp&O;Ai^YATi( zH!Ps>2rWHkdj8k0nK*2Kb8JP&sgZr^c$-a(0qq%YGfspR!W5FKnIM68Fgbt$dt{$7Hsub; z^#Sp3pMWsb`E7B`E`ZdJJibBIJ1|Lb2tyNDk^VQ#ef1`k4D^YqY;(bq(f*$k(asSG z7QL2&CH6077>==uZg^AHPitX>vB&rb_Z|xW zB)z>HK}$N??fE%HBI8dqIZ2+>`RRKo{B_f#i@%|$vDw7pKc47JF5wH$bicWhtwj=C zeXFf`Cm1>@F#!HSL4j1prKsqSW|ds2%Y8V+g{0LXv0|GjVQ6no`Z{7^jgm+oAvDe2 z<T|YW{eHzivLo-Qx}6H9kWz+1PI(AahO(=Bdyg8EC+k-8hOf6N4-6i4Qr1 zvhC#}G7&JiL(8HgIHslHS5jBj%a_(MW<~%siz6TYDXgMo4G`Dj7~XQe5oWi*w?^iF zyh(HsxpBaJtU<6ExIlY7``wPZzFVN!Ky0eCwnZ??R{razh?1$$P`qG~B+klbq}ERq zH@*jgy{mA^+OO(7$99?uVuaD6^DcFY(fU-r_Y@%C4nodlDa6TLci=@cIbkz99U+~p z*&orNivq#}+$*7$3|`5TtLSf8VIG38g}BoyzFCgM0&rLD1~kJNx+__CZV!SFf^}V% z)ToZbMU0oO5uHP*?z6zkf?~ z#Ot%FmUQoSYbTmeNb58YZMxKLQB{OHG>`ng3<0Dj-&F`~meq=j*-bmp#u5=Hay=JZ zCu!=g*ftQr;*a^1X;5(Dc%?{-a0n(wSLesIwhqR7z>x7a4?GO?_E5!?QeKgpX_)$@c*OGzm81Nxt^=`0vyC!V&A$BLW z2Le!_{7|G>1=d~)i)ftfj@HO>BavN<`>JZSNU7u-BJF=l1+QExCxJREy0lmKvaFK0 zNlhWjqqeLV-U$mldA5u}H5kRne&;@c%!r_h%Kd~*9_c}@XYAMk5=_xQmGx~~M!EHvAg zlMne=7R8tWfeY99yZ%c*&Y3{xCYba-_X+Q! z>>BVF&aXH$-}8&^u1QjOX1@`(gpO`*Rs(9IGj`lZ zF~RE&20wm#JwdXSG-GG{0aY#f1bMajQ7(%zL{9N&&Pba-WrTmEKQ^=}XH6?J@S7b_ zC+wr%lYjmUvYzE`*L1eHX3OpolN!M5aOuU@xwpwCGRefyr>1s3G3f{!>yVj`%n}Qlh@QAejKG5$NSPz$C^~ z+gi4+n$IVtOVM(O7gPUvbr}U*yasq?aPC-5@&aG5q_;ZvYzK5Jg30~{;{5|LA)LEP zE`!}7oCvrmx-W3L*brG*g1E>jS#|;P=K#GMO{A1kbhQa&T|T#CQu)e;7R&t#(*#|F zINW;MdOa+O?jYS)2{KKtVF6bcz4(cOPDW`DwY zL927l5QseKrqj3af<6G?2wBSgv@-cu@j;QZ^HgCkZ0@%XrO$sZAv)>leDl;WOF8KI zgw%b`kB}FcL+YIw5e0E~k&dc)E9|nHUWDR4Xqu3Wy7|%*;B1^`_BobDlRi_XV@s+vOs(=WIq3 z9BgKdJ)Bm4=fSlyPmi#dUz^z*x7Al!fQ(&_{G}{cC{hX>GfbKPHJ=^;CmonO`C#2a z-!lI+Emmb|r2TdT9@2&GIC#N;)_`<lrN zOiq9d)l=il^G6bJ?wC}#^-pq=6c&0aHlAVv27+qy|Qw(WFmCmo|>r(>&o`v2yiHIMUl zRP}hO)>&uoEf6^Br=Wqe7HOxnyED}y@1>2dON6G$V>#*;2R~E!p7`i4BAm&>QaFUK zn{deeIj+SHJ&Pp;i8AJ0#%7~@eH|1jkk1_zZ~Ys;AMUIX7C0*Y86+?7`$H%6(w+Sc zI%Ip1DrS^`6UYDb4R4Lbe>XwB?;7RV%;(r@aUYR^y;LP@xvrVm=3|CPkH}(!sJ$P% z30I#>MgEPbkN4qte23yL+L4Zko(dGp@LSkRrX!E)cH|EfZ`-VU5JS+jg2k%k0%sFZ ztPgEZm(2@X5YQo+tHo?5rsV9?3d>{j^=mA6y4!oC;6Y5vAcq z(KR)U7?Z~o*ze~Z-JWr{cTB)cU4XHEG&~3%T`bIq`~qS#mL+K3O}ybVXj9NVPMOMT zZ)hnbEIkOh8ToHbNg3Dh-8)pY$4>#>%a~pFVtA0<=XpFOqLUkEKV>vB~g14k9stHe<^a;N*YIj{NrmkJGuN673g=uw6Gh zX!LUS5rAkXOlFa%567qw{L?kxQAAv?^*AUd!mO7qOKvYBKLO}?@46s%7wQyl9A|;oK9~6K6U?NC zEC;}uM;5oPPRzI+5muwg$Ee-RQ65ECVzR@m`h<8-RCiPJd&9?{`g$fKsz0sqihwLX zOK6gBGyzr)q)QLuiT5!UPw)RpMRkCdOE8|`+pvC&5zvI7g)fQuD*G96qOne#fZclw zX$X8F*iaF(uFhuht&wXwf#1vtC#@MUDVzFoQ&Nv$lkBqUa@uW9gBaQ42T3E)Am^*OrbxvS5jofPX8x<4yLJb=au!?G2i8&F$PUn4$oj zHs%nH2X1)19{L_4;rjv#2Y`U8g?&wFTVVLP)6HBb9X?L1P)Db~=bX03togg+s3G*w z$Y^K?bYMW$Xn(v$j)ceWgYy_!01SBoI$Kn+V2JEy3X@gQNOD-dN|umKVvkhRMw^Uc zS8SatT1LtlW6L1!QS+YO?6D{QQ-`GM8P7Ie1@LW^*Htd=`Yk#8&rZ=Cl;VS z+q&beJPPJn*Mt*bONx>7M+|zqnM!P%63IuM^k`b-To;Ct{OgQBdRFXNln=J5A+U2|Fds*!8y*|r98MYHdyq34i}tbGH;nJ?>Y_h34sO98%YFx z@6$h(6m0>1f>V-JFsbJSm9?^%SN zKuAx8w)%Xu+)?T6Gk;HWUgxeVBbtJCq&KX_#qz2Ucz<&M*T&Nq^bh5|#X;g`gX18Mmy+-_69FODS%67NAuH2~*FD(wEHhbUlW$ z=OG0sFKZHPG&UmYdC30doxoIAGuF4Gk1dNV5|D7RDU~lf%Dc2;2|S){MQ#J6?^?`v zHL9_ue@7sY-G-FCg%u>v4ZmDFyS`x*hfB*ya*d(;q*W`Yu=0nY$q!jz!eC6*{=lfr zlMIM|gQNQh32M+3+C&D6mX6WG{s;0gW!!CXEF`l3$Kfpjzrg+%mossqToq`k=g= z+BF%4!ti0i72b}p7W%_2VK$jdg;cWs`Dti&VU^MeORSTY9k`0!WiXBA^qq8CLJxz_ z^G;<7LiG;M&yBCw{nbn1O`fxK6U^L5q<+CHARM&S4)WMVhmr ziFGdT&vegelcdI(tiYMDSz!8y;NJ=7T~T3xR?`9Ul3rm!euZZSZa;_4Gn&`=s+A4S zTsR}7T_{)w*fmN)YKv7A~r4y-Z`pV9D9*@(ql;n#a# zjly0_K!R|!(@dZFOi9m=+R(&ii&)H|_4QEP+IX*|^H@bB}tXt2~lJL@GHt{HSZN(XbZBZ7dZ!+eI?7`{o>!N z_|-}y;-)=6A9w!J;($Hhv&*t9)J!$&&JhGp5To(kdKHDIL+E&2dMedacsePGkO#J_K3M91@D`9Dn=+Wzq5#UB-$MreHsBy z=iiYBx~8XO@1wn>GS_$M_wx@CybTeGpD959MB(tR*k9Siw z#6yA*vZf9QP0XIK>q34>Cz#E|;WN=cpm23V&M`RcyRRK`IZEv$cOB#`ZAocPI(0$8 zl>QK0)b;*4OG%7$BJ4zb<1ArW0AfwjAYBB$z83z1^~c;+HOv`aAQj-im+RWiibo9H z*g9(Vq`)zdC%W=yqWkrA_w9>u^r}lcRFF;2qwFy^>;+k*rK0K!!2zJWYW%1Vv7ffj z)Yc?u8zFrC4DJTT(vqFVbEYHO$cPWP$1giz4M+Hz9*n#8y)HYp_+!bI11xw-=m+ED z5*uS?QLxp9w@|a*QGiz#n=-6%#{(xaBjnX7@_iu}!1u7anEx|^d)YF87a{c?9V8ff zPKK$@5e!^lf688Jtll31htx{4jm1;|m(?iwkYqp}Xna2R-)To8oj%O^iHuf-6=c!` z+NU=gm3p-hO{HV(>djVU0D7<|tmo>YPZOxCOwL{?P_Eqg?_px828^?QT(l|nMO2nB zKMHk09iiyFgkQh$Tnyv?ZrPOxzlTdDQK|UHcokW>-8j0Q|00a&{^fzvJ&vp<=i#Yb zf!3mZozSLk#>G!_K{`G}BrD5Os9GF}uu1gANV_M;jo{nW940UL45T?a<{^Tm(P_4$ z`XrzbM&fFc(ymC)wbEkqel)69#{62xg#%j38CTn&U*>p^2Kuh6%iX`PFcfvw?4Dc2 zWupf_{0fq-zoO->f&C{SCf{wFk4JvjaT9_OzF1+ z);WxwiYnJNM$rZv2wX<|M16$}cPDx~=YDA-DX@FS`%~5bFpxfdtWAIAn%h|}Zf5J^6Nvuf)=ZUYOEhmuGRAGK zU?7+mg^#a#OVV~ACBa-`CI2UYjYOpPbcko1uq~<> zVkB8j?uJVzC1+RrIogMQ$vBWfX0bVURG{0kX{eHymsYGGTMTDiG|=i*a~O)&2xt|g z^SUu|6NC~C0OA2Ext6|FxTc3+6AL=B9#rV<)q2Tu_e}(Rj0XH3u<|2xxS*j_<=(QZ z9OL>pw>Vp*T2Xy)KUT84MQINqBHT3;y&Fxot0-nO*qI&-0j@WI9a{Ajl9=ChAk}2l z#}RBz*Z-abJwfpcZv8M=NnlxUI2plP(t0>uu5*`E0fwuHzlL+>H^JZYX*^k_5jgI~ zqzN{XsU`#^ap_hft?U{XWTOu@KlcmL4|hWd^S&Bs=a)=Nj^I5HXT#svvzeIk{Xk$? zAUvJiSax5I6jpFq{^febpFcd!f&feEfQFc7ggzsczjSZuUW^+2~mXm zQtn&i4P2LcWfQOeE@0R3>f%hv)Wg{$QyGycmq1Lr=-XmPmX)sdN-=(-Ut3=zwN#T0v^;191j6SM%hfuyM7Yt3 zb8?<5$11;Kvf1}7iluS)9i1~vo|uh9dvqEr88dI9P8^J#F#5@772aCQop3)CS)!2k zi}vPb5gPi3H8+(R6eQOHds4+%0U6923f%H23{QTjnjPBN?ZU6L=(=X!#trDdNu;r4 zfj3Ha@k!q}+(V|~(_~(@Gz?F5R9uRvjW0C}#4G@BO^GOw6F|y4^Q}}gkark~#kw9l zdA{cu%id18mb1mMUSa%jak;gnPKN-8FSfLl4W$T0kBD@$f7FuUN^5e5wyg9Ho83R2 zG3oBW`1Pjl`RizG7`X7-+eaD2iz^jH;Aq#LD!J{35T^izkDFmvVc7@mfoV>YJMzQ# zDH};;uGEw3PZA`RnHTE1WD%029A|0q92{C%l+X81`rW<^1!Z2&LVND~T4APj$~wu# z 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 V6M%)x#>dCT#)CjbC8;ch@Lx*DyhH#1 diff --git a/docs/EuroSys/Paper/paper.tex b/docs/EuroSys/Paper/paper.tex index 2541c37..2a468c1 100644 --- a/docs/EuroSys/Paper/paper.tex +++ b/docs/EuroSys/Paper/paper.tex @@ -61,6 +61,7 @@ \usepackage{subcaption} \usepackage{caption} \usepackage{graphicx} +\usepackage{natbib} \lstset{basicstyle=\small\ttfamily,columns=fullflexible} @@ -257,17 +258,27 @@ % The FAT allocator when ran independently and embedded inside Jemalloc reduces walking the TLB hierarchy by upto 90\%, which leads to decreasing runtimes % for memory read and write intensive applications. -The widening gap between application memory demands and the limited capacity of hardware Translation Lookaside Buffers (TLBs) -in modern processors leads to frequent TLB misses, incurring significant performance penalties due to additional clock cycles -spent on page table walks. A common mitigation strategy involves the use of physically contiguous memory and huge pages to -reduce TLB pressure. +% The widening gap between application memory demands and the limited capacity of hardware Translation Lookaside Buffers (TLBs) +% in modern processors leads to frequent TLB misses, incurring significant performance penalties due to additional clock cycles +% spent on page table walks. A common mitigation strategy involves the use of physically contiguous memory and huge pages to +% reduce TLB pressure. -This paper introduces a solution that leverages capability-based addressing in the CHERI architecture with huge pages. -We present Fat Address Translations (FAT), a memory allocator that embeds allocation metadata directly within -pointer capabilities and manages memory in block-based allocations within huge pages. By encoding allocation bounds in capabilities, -FAT enables more efficient pointer dereferencing and reduces reliance on smaller page table entry lookups. Our evaluation shows that FAT, -both as a standalone allocator and when integrated into Jemalloc, reduces TLB hierarchy walks by up to 99\% in contrast to standard system allocators and improves runtime performance for memory read intensive applications. -This demonstrates that capability-based addressing can repurposed to mitigate TLB pressure. +% This paper introduces a solution that leverages capability-based addressing in the CHERI architecture with huge pages. +% We present Fat Address Translations (FAT), a memory allocator that embeds allocation metadata directly within +% pointer capabilities and manages memory in block-based allocations within huge pages. By encoding allocation bounds in capabilities, +% FAT enables more efficient pointer dereferencing and reduces reliance on smaller page table entry lookups. Our evaluation shows that FAT, +% both as a standalone allocator and when integrated into Jemalloc, reduces TLB hierarchy walks by up to 99\% in contrast to standard system allocators and improves runtime performance for memory read intensive applications. +% This demonstrates that capability-based addressing can repurposed to mitigate TLB pressure. +Modern processors increasingly suffer from Translation Lookaside Buffer (TLB) pressure, where frequent misses lead to costly page table walks and degraded performance. While huge pages can mitigate some of this overhead, +allocator-level inefficiencies persist. + +We present Fat Address Translations (FAT), a memory allocator for capability-aware architectures such as CHERI. FAT +embeds allocation metadata directly within pointer capabilities and manages memory in block-based allocations inside +huge pages, reducing reliance on page table lookups and enabling more efficient pointer dereferencing. Evaluation shows that +FAT reduces TLB walks by up to 99\% and L2 TLB reads by 98\%. Runtime performance improves by up to 11\% in macro-benchmarks (e.g. XSBench), 1.8–4\% +in Kmeans and Barnes, and 4\% in micro-benchmarks such as Memaccess, while Richards remains near baseline. These results demonstrate +that capability-based addressing can be repurposed to mitigate TLB pressure, offering a scalable and efficient strategy for memory allocation +in future capability-aware systems. \end{abstract} %% @@ -409,7 +420,7 @@ memory allocations by emulating block allocations on physically contiguous memor \end{itemize} Through evaluating micro and macro benchmarks the FAT allocator though the use of CHERI's capabilities and huge pages demonstrates the allocator's ability -to reduce TLB walks by up to 99\% which yields to improvements of wall clock runtimes by upto 6\% for memory-intensive +to reduce TLB walks by up to 99\% which yields to improvements of wall clock runtimes by upto 11\% for memory-intensive applications. While its impact on larger and computation-heavy workloads is less pronounced. The proposed allocator shows strong potential for advancing memory management in scenarios requiring high memory throughput by reducing the address translation overhead. @@ -1078,18 +1089,26 @@ the allocator performs with complex memory allocation demands such as large data \label{sec:Micro} \begin{itemize} - \item \texttt{GLIBC}: The Glibc benchmark evaluates the performance of - \textit{malloc} and \textit{free} functions in single-threaded, multi-threaded, - and emulated multi-threading scenarios using various block sizes - allocation patterns. It simulates real-world memory usage by partially - deallocating blocks in FIFO order and fully deallocating them in LIFO order. - Results are gathered across configurations to analyse performance variations. + % \item \texttt{GLIBC}: The Glibc benchmark evaluates the performance of + % \textit{malloc} and \textit{free} functions in single-threaded, multi-threaded, + % and emulated multi-threading scenarios using various block sizes + % allocation patterns. It simulates real-world memory usage by partially + % deallocating blocks in FIFO order and fully deallocating them in LIFO order. + % Results are gathered across configurations to analyse performance variations. + \item \texttt{MemAccess}: This benchmark evaluates the performance impact of memory access patterns by constructing and traversing a doubly linked list with varying working set sizes. It supports sequential or randomised structures with optional node operations and multithreaded traversal using pthreads. The program dynamically allocates memory and systematically doubles the working set size to analyse memory hierarchy behavior. + + \item \texttt{Richards}: Richards is a task scheduling benchmark that simulates a + multitasking environment with tasks of varying types and priorities which is + communicated through queued packets. The schedule function manages + task execution based on the state, priority and tracks processed packets + which are held tasks for performance evaluation. Configurable iterations and + timing help measure system performance to ensure correctness. \end{itemize} \subsubsection{Macro benchmark} @@ -1103,12 +1122,18 @@ distributed across threads using the pthread library, dynamically assigning tasks to optimise performance. Parameters like data size and clusters are configurable and the program ensures efficient memory management and synchronisation. -\item \texttt{Richards}: Richards is a task scheduling benchmark that simulates a -multitasking environment with tasks of varying types and priorities which is -communicated through queued packets. The schedule function manages -task execution based on the state, priority and tracks processed packets -which are held tasks for performance evaluation. Configurable iterations and -timing help measure system performance to ensure correctness. + +\item \texttt{XSBench}: XSBench~\cite{XSBench} is a simplified version of the OpenMC Monte Carlo code +that focuses only on the most time-consuming part: calculating macroscopic neutron cross sections. +Instead of running a full particle transport simulation it uses a benchmark reactor model, +a large unionised energy grid to reproduce the same types of calculations and memory use patterns +but with far less complexity. The key point is that cross-section lookups involve many random accesses +to large data tables in memory, rather than a small amount of repeated arithmetic. This makes performance +heavily dependent on how quickly data can be read from and written to different levels of the memory +hierarchy (caches, main memory). XSBench is therefore closely tied to studying memory reads and writes, +since it allows researchers to see how modern processors handle the irregular, data-intensive behaviour +that dominates in real Monte Carlo simulations. + \item \texttt{BARNES}: Implements the Barnes-Hut algorithm to efficiently simulate the interactions within an \(N\)-body system. A comprehensive overview of the Barnes-Hut method is provided by Singh in his doctoral dissertation ~\cite{singh1993}. This implementation extends the original method by permitting multiple @@ -1232,28 +1257,40 @@ of its capability to handle memory more efficiently by leveraging huge pages. % FAT allocator embedded inside Jemalloc. These results suggest that FAT allocator embedded inside Jemalloc may arrange memory % in a manner that enhances spatial locality at the page level, particularly for workloads like Memaccess and Glibc. - \item L1 TLB reads (Figure~\ref{fig:l1tlb-reads}): L1 TLB reads are critical for achieving fast memory access; therefore, a + \item L1 DTLB reads (Figure~\ref{fig:l1tlb-reads}): L1 TLB reads are critical for achieving fast memory access; therefore, a reduction in events that could signify misses or lead to further lookups is generally beneficial. In the Kmeans benchmark, the FAT allocator demonstrated 13\% fewer L1 TLB reads than the baseline allocator. - However, when the FAT allocator was embedded within Jemalloc, the L1 TLB reads were the same as the baseline. - For the memaccess benchmark, the embedded FAT allocator resulted in 68\% fewer L1 TLB reads compared to the baseline - allocator. A similar pattern was observed with Glibc, showing 59\% fewer L1 TLB reads. In the Richards benchmark, - there was no difference for either allocator. For the Barnes benchmark, the FAT allocator exhibited 5\% + However, when the FAT allocator was embedded within Jemalloc the L1 TLB reads were the same as the baseline. + For memaccess, XSBench and Richards benchmark the L1 TLB were the same as the baseline for both allocators. + For the Barnes benchmark, the FAT allocator exhibited 5\% fewer L1 TLB reads, and the result was the same for the FAT allocator embedded within Jemalloc. + + % For the memaccess benchmark, the embedded FAT allocator resulted in 68\% fewer L1 TLB reads compared to the baseline + % allocator. A similar pattern was observed with Glibc, showing 59\% fewer L1 TLB reads. In the Richards benchmark, + % there was no difference for either allocator. For the Barnes benchmark, the FAT allocator exhibited 5\% + % fewer L1 TLB reads, and the result was the same for the FAT allocator embedded within Jemalloc. - \item L2 TLB reads (Figure~\ref{fig:l2tlb-reads}): L2 Data TLB reads (or lookups) serve as a secondary cache for address translations. - FAT allocator consistently performed at 98\% lesser L2 TLB reads for this metric across all benchmarks except Barnes - which was 4\% lesser. FAT allocator embedded inside Jemalloc also showed significant change for Kmeans, Memaccess, and Richards. However, for the Glibc benchmark - it achieved a reduction of 60\% in L2 TLB reads. This mirrors its L1D TLB improvement for Glibc and suggests that its - strategy for page locality extends effectively to deeper levels of the TLB hierarchy for this particular benchmark, which is notable given - Glibc's high frequency of malloc calls that stress memory management. A minor reduction of 5 \% was also observed for the Barnes - benchmark with FAT allocator embedded inside Jemalloc. + % \item L2 DTLB reads (Figure~\ref{fig:l2tlb-reads}): L2 Data TLB reads serve as a secondary cache for address translations. + % FAT allocator consistently performed at 98\% lesser L2 TLB reads for this metric across all benchmarks except Barnes + % which was 4\% lesser. FAT allocator embedded inside Jemalloc also showed significant change of more than 86\% reduction of L2 TLB reads for Kmeans, XSBench, Memaccess and Richards. + % This means that most reads are hit at the L1 TLB. + % A minor reduction of 5 \% was also observed for the Barnes benchmark with FAT allocator embedded inside Jemalloc. + % This mirrors its L1D TLB improvement for Glibc and suggests that its + % strategy for page locality extends effectively to deeper levels of the TLB hierarchy for this particular benchmark, which is notable given + % Glibc's high frequency of malloc calls that stress memory management. + + \item L2 DTLB reads (Figure~\ref{fig:l2tlb-reads}): L2 Data TLB reads act as a secondary cache for address translations. + The FAT allocator consistently reduced L2 TLB reads by around 98\% across all benchmarks, with the exception of Barnes, + where the reduction was 4\%. When embedded within Jemalloc, the FAT allocator also achieved substantial improvements, lowering L2 TLB reads by more than 86\% for Kmeans, XSBench, Memaccess, and Richards. + These results indicate that the majority of address translation requests are successfully resolved at the L1 TLB + level, thereby avoiding the need to access deeper levels of the memory hierarchy. + \item DTLB walks (Figure~\ref{fig:dtlb-walk}): which occur when a virtual-to-physical address translation is not found in the DTLB and a page table traversal is necessary, represent a performance cost. thus, fewer walks are preferable. In the observed tests neither FAT allocator nor FAT allocator embedded inside Jemalloc demonstrated significant deviation from the baseline performance of 99\% lesser walks. - This consistent behavior was noted across all benchmarks evaluated: Kmeans, Memaccess, Glibc, Richards, and Barnes. + This consistent behavior was noted across all benchmarks evaluated: Kmeans, Memaccess, XSBench, Richards, and Barnes. This indicates that almost all address translations were resolved directly at the L1 DTLB level without triggering expensive traversals through the page table. More generally, this finding demonstrates that both allocator designs make efficient use of the hardware translation system and @@ -1265,10 +1302,10 @@ of its capability to handle memory more efficiently by leveraging huge pages. % of DTLB misses that necessitate page table walks within these specific workloads. Even for the Memaccess benchmark, % which is designed with random list traversals that can stress TLB pressure, the impact on dTLB walks was negligible according to the provided graphs. - \item L1 TLB refills (Figure~\ref{fig:l1tlb-refill}): L1 Data TLB refills are a direct consequence of L1 TLB misses; therefore, fewer refills - indicate better performance. Interestingly, despite the variations observed in L1 TLB reads for the FAT allocator - embedded within Jemalloc, the L1 TLB refills metric showed a significant reduction of 99\% for both the standalone - FAT allocator and the FAT allocator embedded within Jemalloc. This consistent and substantial improvement over the baseline was observed across all tested benchmarks: Kmeans, Memaccess, Glibc, Richards, and Barnes. + \item L1 DTLB refills (Figure~\ref{fig:l1tlb-refill}): L1 Data DTLB refills are a direct consequence of L1 DTLB misses; therefore, fewer refills + indicate better performance. Interestingly, despite the variations observed in L1 DTLB reads for the FAT allocator + embedded within Jemalloc, the L1 DTLB refills metric showed a significant reduction of 99\% for both the standalone + FAT allocator and the FAT allocator embedded within Jemalloc. This consistent and substantial improvement over the baseline was observed across all tested benchmarks: Kmeans, Memaccess, XSBench, Richards, and Barnes. % L1 Data TLB refills are a direct consequence of L1D TLB misses, with fewer refills indicating better performance. % Interestingly, despite the variations observed in L1D TLB reads for FAT allocator embedded inside Jemalloc, the L1D TLB refills metric @@ -1278,15 +1315,24 @@ of its capability to handle memory more efficiently by leveraging huge pages. % events than solely those leading to refills, or perhaps the absolute number of critical misses resulting in refills was minimal to begin with and thus % not significantly affected by the allocators in these tests. - \item Last-level cache (Figure~\ref{fig:ll-cache-rd}): Cache read misses in the Last-Level Cache (LLC) are critical performance indicators, as they typically lead to - slower data retrievals from main memory. Consequently, a lower number of misses is highly desirable. The performance on this - metric varied considerably across both allocators and benchmarks. The FAT allocator exhibited the highest variance in the - kmeans benchmark, achieving 57\% fewer cache misses compared to the baseline allocator. In contrast, it recorded 18\% more - misses in memaccess, 65\% fewer in glibc, 31\% more in Richards, and 18\% more in barnes. - When the FAT allocator was embedded within Jemalloc, the results shifted notably: kmeans experienced 19\% more misses - relative to the baseline, memaccess saw a substantial 77\% reduction, while glibc incurred a dramatic 370\% increase particularly - significant given its malloc intensive nature. There was no change in LLC misses for Richards, whereas barnes suffered from 68\% - more misses. + % \item Last-level cache (Figure~\ref{fig:ll-cache-rd}): Cache read misses in the Last-Level Cache (LLC) are critical performance indicators, as they typically lead to + % slower data retrievals from main memory. Consequently, a lower number of misses is highly desirable. The performance on this + % metric varied considerably across both allocators and benchmarks. The FAT allocator exhibited the highest variance in the + % kmeans benchmark, achieving 57\% fewer cache misses compared to the baseline allocator. In contrast, it recorded 18\% more + % misses in memaccess, 65\% fewer in glibc, 31\% more in Richards, and 18\% more in barnes. + % When the FAT allocator was embedded within Jemalloc, the results shifted notably: kmeans experienced 19\% more misses + % relative to the baseline, memaccess saw a substantial 77\% reduction, while glibc incurred a dramatic 370\% increase particularly + % significant given its malloc intensive nature. There was no change in LLC misses for Richards, whereas barnes suffered from 68\% + % more misses. + + \item Last-level cache (Figure~\ref{fig:ll-cache-rd}): Cache read misses in the Last-Level Cache (LLC) are important performance + indicators, as each miss typically results in slower data retrieval from main memory. Thus, fewer misses are + generally preferable. The results for this metric show notable variation across both allocators and benchmarks. + With the FAT allocator, kmeans achieved a 57\% reduction in LLC misses, while memaccess showed no meaningful + change. In contrast, XSBench experienced 6\% more misses, Richards 32\% more, and Barnes 19\% more compared to + the baseline. When the FAT allocator was embedded within Jemalloc, the behaviour shifted: kmeans recorded 19\% more misses, + memaccess again showed negligible change, XSBench improved slightly with 3\% fewer misses, Richards had a marginal 1\% + increase, and Barnes exhibited a substantial 69\% increase. % Last-Level Cache read misses are crucial performance indicators, as they often result in slow data fetches @@ -1305,11 +1351,12 @@ of its capability to handle memory more efficiently by leveraging huge pages. % such as the difference between the large data arrays in K-Means versus the linked structures common in Memaccess or Richards. \item Wall clock (Figure~\ref{fig:wallclock}): Wallclock time serves as the definitive metric for evaluating overall execution performance. - When using the FAT allocator, glibc demonstrated the most significant improvement, with a 51\% reduction in wallclock - runtime compared to the baseline allocator. This was followed by memaccess with a 34\% decrease, barnes with a 4\% reduction, + When using the FAT allocator, XSBench demonstrated the most significant improvement, with a 11\% reduction in wallclock + runtime compared to the baseline allocator. This was followed by memaccess, barnes with a 4\% decrease and kmeans with a modest 1.8\% improvement. Richards exhibited a slight increase of 1\% in runtime. - When the FAT allocator was integrated into Jemalloc, the performance impact varied. Glibc experienced a 16.2\% increase + When the FAT allocator was integrated into Jemalloc, the performance impact varied. Memaccess and XSBench demonstrated similar + improvements compared to the FAT allocator. in wallclock time, while barnes showed a 7\% rise. Both Richards and kmeans maintained the same runtime as the baseline allocator. In regards to memaccess (Figure~\ref{fig:Memaccess}) the comparative performance of two allocators FAT allocator embedded inside jemalloc @@ -1346,26 +1393,39 @@ of its capability to handle memory more efficiently by leveraging huge pages. \label{fig:Memaccess} \end{figure} -A particularly striking observation is the significant reduction in data TLB walks, -L2 data TLB reads and TLB refills-consistently which show a 90\% decrease across all -benchmarks compared to Jemalloc. This improvement is due to the modified allocators -use of a single huge page entry at the L1 TLB layer. By enabling most address translations -to be resolved directly at the L1 TLB, the need to walk through the deeper TLB hierarchy is -largely eliminated. This reduction in translation overhead is a key factor in the allocators -performance for certain types of workloads. +Overall, the evaluation shows that the FAT allocator provides consistent improvements in +TLB efficiency, with near elimination of L1 refills and L2 reads across all benchmarks, +thereby reducing pressure on the memory translation subsystem. Its effect on last-level +cache behaviour is more variable, with notable gains in Kmeans but regressions in other +workloads such as Richards and Barnes. Wall-clock performance reflects these mixed results: +while XSBench and Memaccess benefit from measurable reductions in execution time, benchmarks +with irregular access patterns (e.g., Richards) show little to no improvement. A closer comparison +of Memaccess further reveals that the standalone FAT allocator performs best at smaller memory scales, +whereas the Jemalloc-embedded FAT allocator demonstrates superior scalability and stability as memory +sizes increase. These findings suggest that FAT's huge-page-oriented design is particularly effective +for workloads with predictable or structured access patterns, whilst integration with Jemalloc enhances +adaptability for larger or more irregular memory usage. -The micro benchmarks which are crafted to emphasise memory read operations, highlight the -allocators strengths. These tests simulate frequent and intensive memory access patterns, -where the reduction in TLB misses directly translate into measurable performance gains. -On average, the FAT allocator achieves a 50\% reduction in wall clock runtimes for -these workloads underscoring its ability to optimise high-throughput memory operations. +% A particularly striking observation is the significant reduction in data TLB walks, +% L2 data TLB reads and TLB refills-consistently which show a 90\% decrease across all +% benchmarks compared to Jemalloc. This improvement is due to the modified allocators +% use of a single huge page entry at the L1 TLB layer. By enabling most address translations +% to be resolved directly at the L1 TLB, the need to walk through the deeper TLB hierarchy is +% largely eliminated. This reduction in translation overhead is a key factor in the allocators +% performance for certain types of workloads. -On the other hand, macro benchmarks which represent larger and more complex real-world applications, -exhibit minimal differences in wall clock runtimes when using the FAT allocator. -This outcome is expected, as macro benchmarks typically involve a broader range of operations -beyond memory allocation. Additionally, -the benefits of huge pages may be less pronounced for these workloads, as they are often -bottlenecked by factors such as computation or I/O rather than memory translation overhead. +% The micro benchmarks which are crafted to emphasise memory read operations, highlight the +% allocators strengths. These tests simulate frequent and intensive memory access patterns, +% where the reduction in TLB misses directly translate into measurable performance gains. +% On average, the FAT allocator achieves a 50\% reduction in wall clock runtimes for +% these workloads underscoring its ability to optimise high-throughput memory operations. + +% On the other hand, macro benchmarks which represent larger and more complex real-world applications, +% exhibit minimal differences in wall clock runtimes when using the FAT allocator. +% This outcome is expected, as macro benchmarks typically involve a broader range of operations +% beyond memory allocation. Additionally, +% the benefits of huge pages may be less pronounced for these workloads, as they are often +% bottlenecked by factors such as computation or I/O rather than memory translation overhead. % \begin{figure}[htbp] % \centering @@ -1440,33 +1500,69 @@ bottlenecked by factors such as computation or I/O rather than memory translatio % The Bluespec design of the RISC-V processor will be modified to allow certain memory operations to bypass the TLB. This means that when a pointer with encoded offset and bounds is used, the system can directly compute the physical address from the capability information. % This modification reduces the dependency on the TLB, decreasing latency and improving performance, especially for frequent memory operations. -\section{Conclusion} %Title of the Conclusion -This paper has presented FAT, a memory allocator -designed to address the growing mismatch between application memory demands and -the limited reach of TLBs in modern processors. -By leveraging physically contiguous memory through huge pages and embedding -allocation metadata within CHERI's compressed capability based pointers, -FAT significantly reduces the overhead associated with virtual-to-physical -address translation. -\newline -FAT achieves block-based allocation within huge pages, enabling memory tracking -without relying heavily on traditional page table mechanisms. Benchmark evaluations -demonstrate that FAT can reduce TLB walks by up to 99\%, resulting in substantial -performance improvements in memory-intensive workloads. When applied to -microbenchmarks, FAT reduced wall-clock runtime by up to 51\% for Glibc and -34\% for Memaccess, while also achieving up to 68\% fewer L1 TLB reads and 98\% -fewer L2 TLB reads. In contrast, macro benchmarks such as Kmeans and Barnes -showed more modest gains of 1.8\% and 4\% in runtime, respectively, reflecting -the allocator's limited impact in compute-bound scenarios. -\newline -Although performance gains are less significant for larger or computation-heavy applications, -the results underscore the allocator's potential to enhance memory management in -high-throughput environments. More broadly, this work demonstrates how -capability based architectures originally designed to ensure memory safety can -be effectively repurposed to optimise address translation. -FAT thus represents a promising direction for developing more scalable -and efficient memory allocation strategies in systems adopting -capability aware architectures. +% \section{Conclusion} %Title of the Conclusion +% This paper has presented FAT, a memory allocator +% designed to address the growing mismatch between application memory demands and +% the limited reach of TLBs in modern processors. +% By leveraging physically contiguous memory through huge pages and embedding +% allocation metadata within CHERI's compressed capability based pointers, +% FAT significantly reduces the overhead associated with virtual-to-physical +% address translation. +% \newline +% FAT achieves block-based allocation within huge pages, enabling memory tracking +% without relying heavily on traditional page table mechanisms. Benchmark evaluations +% demonstrate that FAT can reduce TLB walks by up to 99\%, resulting in substantial +% performance improvements in memory-intensive workloads. When applied to +% microbenchmarks, FAT reduced wall-clock runtime by up to 11\% for XSBench and +% 4\% for Memaccess, while also achieving up to 98\% +% fewer L2 TLB reads. In contrast, macro benchmarks such as Kmeans and Barnes +% showed more modest gains of 1.8\% and 4\% in runtime, respectively, reflecting +% the allocator's limited impact in compute-bound scenarios. +% \newline +% Although performance gains are less significant for larger or computation-heavy applications, +% the results underscore the allocator's potential to enhance memory management in +% high-throughput environments. More broadly, this work demonstrates how +% capability based architectures originally designed to ensure memory safety can +% be effectively repurposed to optimise address translation. +% FAT thus represents a promising direction for developing more scalable +% and efficient memory allocation strategies in systems adopting +% capability aware architectures. + +\section{Conclusion} %Title of the Conclusion +This paper has presented FAT, a memory allocator designed to +address the growing mismatch between application memory demands and the +limited reach of TLBs in modern processors. By leveraging physically contiguous +memory through huge pages and embedding allocation metadata within CHERI's +compressed capability-based pointers, FAT significantly reduces the overhead +associated with virtual-to-physical address translation. + +FAT achieves block-based allocation within huge pages, enabling memory +tracking without relying heavily on traditional page table mechanisms. +Benchmark evaluations demonstrate that FAT can reduce TLB walks by up to 99\%, +resulting in substantial improvements in memory-intensive workloads. +When applied to micro-benchmarks, FAT reduced wall-clock runtime by up to 4\% +for Memaccess and maintained near-baseline performance for Richards, while +also achieving up to 98\% fewer L2 TLB reads. In contrast, macro-benchmarks +such as XSBench, Kmeans, and Barnes showed runtime improvements of 11\%, 1.8\%, and 4\%, +respectively, reflecting the allocator’s stronger benefits in memory-bound scenarios +compared to compute-heavy ones. + +Overall, the evaluation shows that FAT provides consistent improvements in TLB efficiency, +with near elimination of L1 refills and L2 reads across all benchmarks, thereby reducing +pressure on the memory translation subsystem. Its effect on last-level cache behaviour +is more variable, with notable gains in Kmeans but regressions in workloads such as +Richards and Barnes. Wall-clock performance reflects these mixed outcomes: while XSBench +and Memaccess benefit from measurable reductions in execution time, workloads with irregular +access patterns (e.g., Richards) show little to no improvement. A closer comparison of Memaccess +further reveals that the standalone FAT allocator performs best at smaller memory scales, whereas +the Jemalloc-embedded FAT allocator demonstrates superior scalability and stability as memory sizes increase. + +Although performance gains are less significant for larger or computation-heavy applications, the results +underscore the allocator's potential to enhance memory management in high-throughput environments. More broadly, +this work demonstrates how capability-based architectures, originally designed to ensure memory safety, can be effectively +repurposed to optimise address translation. FAT thus represents a promising direction for developing more scalable and efficient +memory allocation strategies in systems adopting capability-aware architectures. + % This paper addresses the growing disparity between application workloads and the capacity of TLBs. % To mitigate this gap, FAT proposed leveraging physically contiguous memory with CHERI bounds to reduce TLB walks. % FAT is a memory allocator that uses huge pages with the CHERI CC scheme to track allocations within the @@ -2027,7 +2123,8 @@ capability aware architectures. % rhoncus. Maecenas eu arcu ac neque placerat aliquam. Nunc pulvinar % massa et mattis lacinia. -\bibliographystyle{unsrtnat} +% \bibliographystyle{unsrtnat} +\bibliographystyle{apa} \bibliography{paperReferences} \end{document} diff --git a/docs/EuroSys/Paper/paperReferences.bib b/docs/EuroSys/Paper/paperReferences.bib index c020e93..977f58f 100644 --- a/docs/EuroSys/Paper/paperReferences.bib +++ b/docs/EuroSys/Paper/paperReferences.bib @@ -606,13 +606,24 @@ series = {WCAE '03} month = feb, } -@inproceedings{holt1995, - author = {Holt, C. and Singh, Jaswinder Pal}, - title = {Hierarchical N-Body Methods on Shared Address Space Multiprocessors}, - booktitle = {SIAM Conference on Parallel Processing for Scientific Computing}, - year = {1995}, - note = {To appear}, - month = feb +@article{holt1995, +author = {Singh, Jaswinder Pal and Hennessy, John L. and Gupta, Anoop}, +title = {Implications of hierarchical N-body methods for multiprocessor architectures}, +year = {1995}, +issue_date = {May 1995}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +volume = {13}, +number = {2}, +issn = {0734-2071}, +url = {https://doi.org/10.1145/201045.201050}, +doi = {10.1145/201045.201050}, +abstract = {To design effective large-scale multiprocessors, designers need to understand the characteristics of the applications that will use the machines. Application characteristics of particular interest include the amount of communication relative to computation, the structure of the communication, and the local cache and memory requirements, as well as how these characteristics scale with larger problems and machines. One important class of applications is based on hierarchical N-body methods, which are used to solve a wide range of scientific and engineering problems efficiently. Important characteristics of these methods include the nonuniform and dynamically changing nature of the domains to which they are applied, and their use of long-range, irregular communication. This article examines the key architectural implications of representative applications that use the two dominant hierarchical N-body methods: the Barnes-Hut Method and the Fast Multipole Method.We first show that exploiting temporal locality on accesses to communicated data is critical to obtaining good performance on these applications and then argue that coherent caches on shared-address-space machines exploit this locality both automatically and very effectively. Next, we examine the implications of scaling the applications to run on larger machines. We use scaling methods that reflect the concerns of the application scientist and find that this leads to different conclusions about how communication traffic and local cache and memory usage scale than scaling based only on data set size. In particular, we show that under the most realistic form of scaling, both the communication-to-computation ratio as well as the working-set size (and hence the ideal cache size per processor) grow slowly as larger problems are run on larger machines. Finally, we examine the effects of using the two dominant abstractions for interprocessor communication: a shared address space and explicit message passing between private address spaces. We show that the lack of an efficiently supported shared address space will substantially increase the programming complexity and performance overheads for these applications.}, +journal = {ACM Trans. Comput. Syst.}, +month = may, +pages = {141–202}, +numpages = {62}, +keywords = {N-body methods, communication abstractions, locality, message passing, parallel applications, parallel computer architecture, scaling, shared address space, shared memory} } @article{evans_scalable_nodate, @@ -641,4 +652,14 @@ location = {Providence, RI, USA}, series = {ASPLOS '19} } +@inproceedings{XSBench, +author = {Tramm, John R and Siegel, Andrew R and Islam, Tanzima and Schulz, Martin}, +title = {{XSBench} - The Development and Verification of a Performance Abstraction for {M}onte {C}arlo Reactor Analysis}, +booktitle = {{PHYSOR} 2014 - The Role of Reactor Physics toward a Sustainable Future}, +address = {Kyoto}, +year = 2014, +url = "https://www.mcs.anl.gov/papers/P5064-0114.pdf" +} + +