From 9c37a8a946edf5589eabc542a22dfa1931503041 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 4 Feb 2024 16:41:39 +0000 Subject: [PATCH] deploy: 5728170a57d867b6fa23329929872c50e1aa4106 --- 404.html | 4 ++-- .../postcondition-ambiguity/index.html | 4 ++-- .../algorithms-and-correctness/index.html | 4 ++-- .../index.html | 4 ++-- algorithms/category/graphs/index.html | 4 ++-- algorithms/category/hash-tables/index.html | 4 ++-- .../category/paths-in-graphs/index.html | 4 ++-- algorithms/category/recursion/index.html | 4 ++-- .../category/red-black-trees/index.html | 4 ++-- algorithms/graphs/bfs-tree/index.html | 4 ++-- .../graphs/iterative-and-iterators/index.html | 4 ++-- algorithms/hash-tables/breaking/index.html | 4 ++-- .../breaking/mitigations/index.html | 4 ++-- .../hash-tables/breaking/python/index.html | 4 ++-- algorithms/index.html | 6 +++--- algorithms/paths/bf-to-astar/astar/index.html | 4 ++-- algorithms/paths/bf-to-astar/bf/index.html | 4 ++-- .../paths/bf-to-astar/dijkstra/index.html | 4 ++-- algorithms/paths/bf-to-astar/index.html | 4 ++-- algorithms/rb-trees/applications/index.html | 4 ++-- algorithms/rb-trees/rules/index.html | 4 ++-- algorithms/recursion/karel/index.html | 4 ++-- .../recursion/karel/solution/index.html | 4 ++-- .../bottom-up-dp/index.html | 4 ++-- .../pyramid-slide-down/greedy/index.html | 4 ++-- .../recursion/pyramid-slide-down/index.html | 4 ++-- .../pyramid-slide-down/naive/index.html | 4 ++-- .../pyramid-slide-down/top-down-dp/index.html | 4 ++-- algorithms/tags/a-star/index.html | 4 ++-- algorithms/tags/applications/index.html | 4 ++-- algorithms/tags/astar/index.html | 4 ++-- algorithms/tags/backtracking/index.html | 4 ++-- algorithms/tags/balanced-trees/index.html | 4 ++-- algorithms/tags/bellman-ford/index.html | 4 ++-- algorithms/tags/bfs/index.html | 4 ++-- algorithms/tags/bottom-up-dp/index.html | 4 ++-- algorithms/tags/brute-force/index.html | 4 ++-- algorithms/tags/c/index.html | 4 ++-- algorithms/tags/cpp/index.html | 4 ++-- algorithms/tags/csharp/index.html | 4 ++-- algorithms/tags/dijkstra/index.html | 4 ++-- algorithms/tags/dynamic-array/index.html | 4 ++-- .../tags/dynamic-programming/index.html | 4 ++-- algorithms/tags/exponential/index.html | 4 ++-- algorithms/tags/graphs/index.html | 4 ++-- algorithms/tags/greedy/index.html | 4 ++-- algorithms/tags/hash-tables/index.html | 4 ++-- algorithms/tags/index.html | 4 ++-- algorithms/tags/iterative/index.html | 4 ++-- algorithms/tags/iterators/index.html | 4 ++-- algorithms/tags/java/index.html | 4 ++-- algorithms/tags/karel/index.html | 4 ++-- algorithms/tags/postconditions/index.html | 4 ++-- algorithms/tags/python/index.html | 4 ++-- algorithms/tags/recursion/index.html | 4 ++-- algorithms/tags/red-black-trees/index.html | 4 ++-- algorithms/tags/solution/index.html | 4 ++-- algorithms/tags/sorting/index.html | 4 ++-- algorithms/tags/testing/index.html | 4 ++-- algorithms/tags/time-complexity/index.html | 4 ++-- algorithms/tags/top-down-dp/index.html | 4 ++-- algorithms/time-complexity/extend/index.html | 4 ++-- ...5ede8.b272bba2.js => 1535ede8.dddf9863.js} | 2 +- ...b5a8d.a8e28604.js => 182b5a8d.cbc8a774.js} | 2 +- assets/js/4200b1a9.9d505c0f.js | 1 - assets/js/4200b1a9.c79abe7a.js | 1 + ...c7293.8b475e77.js => 595c7293.10827533.js} | 2 +- ...2c0bc.cf9e5f57.js => 7052c0bc.f1d15214.js} | 2 +- ...ef108.083736fa.js => 794ef108.b124efee.js} | 2 +- ...1e0d8.478c5852.js => 84d1e0d8.6d20389a.js} | 2 +- ...88602.9aa1a8e6.js => b1288602.e43df2a2.js} | 2 +- ...e838c.0813f6b5.js => d05e838c.cab4553d.js} | 2 +- assets/js/f71d1f68.85b5bd29.js | 1 + assets/js/f71d1f68.da144fe6.js | 1 - .../js/{main.237fcc8a.js => main.6e9790c2.js} | 4 ++-- ...CENSE.txt => main.6e9790c2.js.LICENSE.txt} | 0 ...n.f2ae61cf.js => runtime~main.2135d25d.js} | 2 +- blog/2023/08/02/copr/index.html | 4 ++-- blog/2024/01/28/rust-opinion/index.html | 6 +++--- blog/aoc-2022/1st-week/index.html | 4 ++-- blog/aoc-2022/2nd-week/index.html | 4 ++-- blog/aoc-2022/3rd-week/index.html | 4 ++-- blog/aoc-2022/4th-week/index.html | 4 ++-- blog/aoc-2022/intro/index.html | 4 ++-- blog/archive/index.html | 4 ++-- blog/atom.xml | 2 +- blog/feed.json | 2 +- blog/index.html | 6 +++--- blog/leetcode/sort-diagonally/index.html | 4 ++-- blog/rss.xml | 2 +- blog/tags/admin/index.html | 4 ++-- blog/tags/advent-of-code-2022/index.html | 4 ++-- blog/tags/advent-of-code/index.html | 4 ++-- blog/tags/copr/index.html | 4 ++-- blog/tags/cpp/index.html | 4 ++-- blog/tags/cult/index.html | 6 +++--- blog/tags/hype/index.html | 6 +++--- blog/tags/index.html | 4 ++-- blog/tags/iterators/index.html | 4 ++-- blog/tags/leetcode/index.html | 4 ++-- blog/tags/memory-safety/index.html | 6 +++--- blog/tags/red-hat/index.html | 4 ++-- blog/tags/rust/index.html | 6 +++--- blog/tags/vps/index.html | 4 ++-- blog/tags/🏭/index.html | 4 ++-- c/bonuses/seminar-03/index.html | 4 ++-- c/bonuses/seminar-04/index.html | 4 ++-- c/bonuses/seminar-05-06/index.html | 6 +++--- c/bonuses/seminar-08/index.html | 6 +++--- c/bonuses/seminar-10/index.html | 6 +++--- c/category/bonuses/index.html | 4 ++-- c/category/practice-exams/index.html | 4 ++-- c/index.html | 6 +++--- c/mr/index.html | 6 +++--- c/pexam/cams/index.html | 4 ++-- c/pexam/garbage_collect/index.html | 4 ++-- contributions/index.html | 4 ++-- cpp/category/exceptions-and-raii/index.html | 4 ++-- cpp/environment/index.html | 4 ++-- .../placeholders/index.html | 4 ++-- cpp/index.html | 6 +++--- .../graphs/iterative-and-iterators.tar.bz2 | Bin 1934 -> 1936 bytes .../graphs/iterative-and-iterators.tar.gz | Bin 1960 -> 1959 bytes files/algorithms/paths/bf-to-astar.tar.bz2 | Bin 3166 -> 3158 bytes files/algorithms/paths/bf-to-astar.tar.gz | Bin 2992 -> 2993 bytes files/algorithms/recursion/karel-1.tar.bz2 | Bin 5871 -> 5903 bytes files/algorithms/recursion/karel-1.tar.gz | Bin 6581 -> 6582 bytes .../recursion/pyramid-slide-down.tar.bz2 | Bin 1547 -> 1548 bytes .../recursion/pyramid-slide-down.tar.gz | Bin 1421 -> 1423 bytes .../algorithms/time-complexity/extend.tar.bz2 | Bin 4079 -> 4078 bytes .../algorithms/time-complexity/extend.tar.gz | Bin 3913 -> 3915 bytes files/c/bonuses/03.tar.bz2 | Bin 2640 -> 2643 bytes files/c/bonuses/03.tar.gz | Bin 2336 -> 2340 bytes files/c/bonuses/04.tar.bz2 | Bin 2527 -> 2544 bytes files/c/bonuses/04.tar.gz | Bin 2500 -> 2501 bytes files/c/bonuses/05-06.tar.bz2 | Bin 3632 -> 3641 bytes files/c/bonuses/05-06.tar.gz | Bin 3487 -> 3487 bytes files/c/bonuses/08.tar.bz2 | Bin 74418 -> 74457 bytes files/c/bonuses/08.tar.gz | Bin 103594 -> 103594 bytes files/c/bonuses/10.tar.bz2 | Bin 234785 -> 234829 bytes files/c/bonuses/10.tar.gz | Bin 230116 -> 230116 bytes index.html | 4 ++-- search/index.html | 4 ++-- talks/index.html | 4 ++-- 144 files changed, 241 insertions(+), 241 deletions(-) rename assets/js/{1535ede8.b272bba2.js => 1535ede8.dddf9863.js} (99%) rename assets/js/{182b5a8d.a8e28604.js => 182b5a8d.cbc8a774.js} (75%) delete mode 100644 assets/js/4200b1a9.9d505c0f.js create mode 100644 assets/js/4200b1a9.c79abe7a.js rename assets/js/{595c7293.8b475e77.js => 595c7293.10827533.js} (99%) rename assets/js/{7052c0bc.cf9e5f57.js => 7052c0bc.f1d15214.js} (95%) rename assets/js/{794ef108.083736fa.js => 794ef108.b124efee.js} (95%) rename assets/js/{84d1e0d8.478c5852.js => 84d1e0d8.6d20389a.js} (97%) rename assets/js/{b1288602.9aa1a8e6.js => b1288602.e43df2a2.js} (99%) rename assets/js/{d05e838c.0813f6b5.js => d05e838c.cab4553d.js} (99%) create mode 100644 assets/js/f71d1f68.85b5bd29.js delete mode 100644 assets/js/f71d1f68.da144fe6.js rename assets/js/{main.237fcc8a.js => main.6e9790c2.js} (98%) rename assets/js/{main.237fcc8a.js.LICENSE.txt => main.6e9790c2.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.f2ae61cf.js => runtime~main.2135d25d.js} (94%) diff --git a/404.html b/404.html index 12b723a..f4fd269 100644 --- a/404.html +++ b/404.html @@ -14,8 +14,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/algorithms/algorithms-correctness/postcondition-ambiguity/index.html b/algorithms/algorithms-correctness/postcondition-ambiguity/index.html index e031fe5..7df5229 100644 --- a/algorithms/algorithms-correctness/postcondition-ambiguity/index.html +++ b/algorithms/algorithms-correctness/postcondition-ambiguity/index.html @@ -16,8 +16,8 @@ - - + +
Skip to main content

Vague postconditions and proving correctness of algorithms

Introduction

diff --git a/algorithms/category/algorithms-and-correctness/index.html b/algorithms/category/algorithms-and-correctness/index.html index 3796859..b69f2ca 100644 --- a/algorithms/category/algorithms-and-correctness/index.html +++ b/algorithms/category/algorithms-and-correctness/index.html @@ -18,8 +18,8 @@ correctness. - - + +

Algorithms and Correctness

Materials related to basic ideas behind algorithms and proofs of their diff --git a/algorithms/category/asymptotic-notation-and-time-complexity/index.html b/algorithms/category/asymptotic-notation-and-time-complexity/index.html index aac9789..d1ee964 100644 --- a/algorithms/category/asymptotic-notation-and-time-complexity/index.html +++ b/algorithms/category/asymptotic-notation-and-time-complexity/index.html @@ -16,8 +16,8 @@ - - + +

Asymptotic Notation and Time Complexity

Materials related to asymptotic notation and time complexity. diff --git a/algorithms/category/graphs/index.html b/algorithms/category/graphs/index.html index b8fbce4..60100ec 100644 --- a/algorithms/category/graphs/index.html +++ b/algorithms/category/graphs/index.html @@ -16,8 +16,8 @@ - - + +

Graphs

Materials related to basic graph algorithms and graph problems. diff --git a/algorithms/category/hash-tables/index.html b/algorithms/category/hash-tables/index.html index d1433c5..7d37f28 100644 --- a/algorithms/category/hash-tables/index.html +++ b/algorithms/category/hash-tables/index.html @@ -16,8 +16,8 @@ - - + +

Hash Tables

Materials related to hash tables. diff --git a/algorithms/category/paths-in-graphs/index.html b/algorithms/category/paths-in-graphs/index.html index 7048a23..9fd7f7c 100644 --- a/algorithms/category/paths-in-graphs/index.html +++ b/algorithms/category/paths-in-graphs/index.html @@ -16,8 +16,8 @@ - - + +

Paths in Graphs

Materials related to finding paths in graphs. diff --git a/algorithms/category/recursion/index.html b/algorithms/category/recursion/index.html index 327883e..4890ddd 100644 --- a/algorithms/category/recursion/index.html +++ b/algorithms/category/recursion/index.html @@ -16,8 +16,8 @@ - - + +

Recursion

Materials related to recursive algorithms and their time complexity. diff --git a/algorithms/category/red-black-trees/index.html b/algorithms/category/red-black-trees/index.html index af70dfa..783834c 100644 --- a/algorithms/category/red-black-trees/index.html +++ b/algorithms/category/red-black-trees/index.html @@ -16,8 +16,8 @@ - - + +

Red-Black Trees

Materials related to red-black trees. diff --git a/algorithms/graphs/bfs-tree/index.html b/algorithms/graphs/bfs-tree/index.html index faa1d31..d59bc97 100644 --- a/algorithms/graphs/bfs-tree/index.html +++ b/algorithms/graphs/bfs-tree/index.html @@ -16,8 +16,8 @@ - - + +

Distance boundaries from BFS tree on undirected graphs

Introduction

diff --git a/algorithms/graphs/iterative-and-iterators/index.html b/algorithms/graphs/iterative-and-iterators/index.html index 361209f..1407375 100644 --- a/algorithms/graphs/iterative-and-iterators/index.html +++ b/algorithms/graphs/iterative-and-iterators/index.html @@ -16,8 +16,8 @@ - - + +

Iterative algorithms via iterators

Introduction

diff --git a/algorithms/hash-tables/breaking/index.html b/algorithms/hash-tables/breaking/index.html index 1072b09..4942965 100644 --- a/algorithms/hash-tables/breaking/index.html +++ b/algorithms/hash-tables/breaking/index.html @@ -16,8 +16,8 @@ - - + +

Breaking Hash Table

We will try to break a hash table and discuss possible ways how to prevent such diff --git a/algorithms/hash-tables/breaking/mitigations/index.html b/algorithms/hash-tables/breaking/mitigations/index.html index 7e92ff5..7f434db 100644 --- a/algorithms/hash-tables/breaking/mitigations/index.html +++ b/algorithms/hash-tables/breaking/mitigations/index.html @@ -16,8 +16,8 @@ - - + +

Possible Mitigations

There are multiple ways the issues created above can be mitigated. Still we can diff --git a/algorithms/hash-tables/breaking/python/index.html b/algorithms/hash-tables/breaking/python/index.html index 495e728..accd1ea 100644 --- a/algorithms/hash-tables/breaking/python/index.html +++ b/algorithms/hash-tables/breaking/python/index.html @@ -16,8 +16,8 @@ - - + +

Breaking the Hash Table in Python

diff --git a/algorithms/index.html b/algorithms/index.html index 0d9e090..d32c596 100644 --- a/algorithms/index.html +++ b/algorithms/index.html @@ -14,8 +14,8 @@ - - + +

Introduction

In this part you can find “random” additional materials I have written over the @@ -23,6 +23,6 @@ course of teaching Algorithms and data structures I.

It is a various mix of stuff that may have been produced as a follow-up on some question asked at the seminar or spontanously.

If you have some ideas for posts, please do not hesitate to submit them as issues -in the linked GitLab.

+in the linked GitLab.

\ No newline at end of file diff --git a/algorithms/paths/bf-to-astar/astar/index.html b/algorithms/paths/bf-to-astar/astar/index.html index d43b6e7..e2ca082 100644 --- a/algorithms/paths/bf-to-astar/astar/index.html +++ b/algorithms/paths/bf-to-astar/astar/index.html @@ -16,8 +16,8 @@ - - + +

A* algorithm

Intro

diff --git a/algorithms/paths/bf-to-astar/bf/index.html b/algorithms/paths/bf-to-astar/bf/index.html index 7c0df27..3911a53 100644 --- a/algorithms/paths/bf-to-astar/bf/index.html +++ b/algorithms/paths/bf-to-astar/bf/index.html @@ -18,8 +18,8 @@ something. - - + +

BF

Basic idea

diff --git a/algorithms/paths/bf-to-astar/dijkstra/index.html b/algorithms/paths/bf-to-astar/dijkstra/index.html index 3ef6965..e4cba43 100644 --- a/algorithms/paths/bf-to-astar/dijkstra/index.html +++ b/algorithms/paths/bf-to-astar/dijkstra/index.html @@ -16,8 +16,8 @@ - - + +

Dijkstra's algorithm

Intro

diff --git a/algorithms/paths/bf-to-astar/index.html b/algorithms/paths/bf-to-astar/index.html index 7726158..b02761a 100644 --- a/algorithms/paths/bf-to-astar/index.html +++ b/algorithms/paths/bf-to-astar/index.html @@ -16,8 +16,8 @@ - - + +

From BF to A*

Intro

diff --git a/algorithms/rb-trees/applications/index.html b/algorithms/rb-trees/applications/index.html index eb24e7e..f615729 100644 --- a/algorithms/rb-trees/applications/index.html +++ b/algorithms/rb-trees/applications/index.html @@ -16,8 +16,8 @@ - - + +

Použití červeno-černých stromů

Použití

diff --git a/algorithms/rb-trees/rules/index.html b/algorithms/rb-trees/rules/index.html index 7d63172..8cd1539 100644 --- a/algorithms/rb-trees/rules/index.html +++ b/algorithms/rb-trees/rules/index.html @@ -16,8 +16,8 @@ - - + +

On the rules of the red-black tree

Introduction

diff --git a/algorithms/recursion/karel/index.html b/algorithms/recursion/karel/index.html index 505d0d0..ff8b7a9 100644 --- a/algorithms/recursion/karel/index.html +++ b/algorithms/recursion/karel/index.html @@ -16,8 +16,8 @@ - - + +

Recursion and backtracking with Robot Karel

    diff --git a/algorithms/recursion/karel/solution/index.html b/algorithms/recursion/karel/solution/index.html index c67be30..e2843b2 100644 --- a/algorithms/recursion/karel/solution/index.html +++ b/algorithms/recursion/karel/solution/index.html @@ -16,8 +16,8 @@ - - + +

    Solving the maze problem

    diff --git a/algorithms/recursion/pyramid-slide-down/bottom-up-dp/index.html b/algorithms/recursion/pyramid-slide-down/bottom-up-dp/index.html index 9a1c4ee..9ec23f4 100644 --- a/algorithms/recursion/pyramid-slide-down/bottom-up-dp/index.html +++ b/algorithms/recursion/pyramid-slide-down/bottom-up-dp/index.html @@ -16,8 +16,8 @@ - - + +

    Bottom-up dynamic programming

    diff --git a/algorithms/recursion/pyramid-slide-down/greedy/index.html b/algorithms/recursion/pyramid-slide-down/greedy/index.html index 6dfd4ab..1eb627a 100644 --- a/algorithms/recursion/pyramid-slide-down/greedy/index.html +++ b/algorithms/recursion/pyramid-slide-down/greedy/index.html @@ -16,8 +16,8 @@ - - + +

    Greedy solution

    We will try to optimize it a bit. Let's start with a relatively simple greedy diff --git a/algorithms/recursion/pyramid-slide-down/index.html b/algorithms/recursion/pyramid-slide-down/index.html index 5ccbe3c..c2dc3ad 100644 --- a/algorithms/recursion/pyramid-slide-down/index.html +++ b/algorithms/recursion/pyramid-slide-down/index.html @@ -16,8 +16,8 @@ - - + +

    Introduction to dynamic programming

    In this series we will try to solve one problem in different ways.

    diff --git a/algorithms/recursion/pyramid-slide-down/naive/index.html b/algorithms/recursion/pyramid-slide-down/naive/index.html index 0b2326b..11754c9 100644 --- a/algorithms/recursion/pyramid-slide-down/naive/index.html +++ b/algorithms/recursion/pyramid-slide-down/naive/index.html @@ -16,8 +16,8 @@ - - + +

    Naïve solution

    Our naïve solution consists of trying out all the possible slides and finding diff --git a/algorithms/recursion/pyramid-slide-down/top-down-dp/index.html b/algorithms/recursion/pyramid-slide-down/top-down-dp/index.html index 5ce0067..c6fde8e 100644 --- a/algorithms/recursion/pyramid-slide-down/top-down-dp/index.html +++ b/algorithms/recursion/pyramid-slide-down/top-down-dp/index.html @@ -16,8 +16,8 @@ - - + +

    Top-down dynamic programming

    diff --git a/algorithms/tags/a-star/index.html b/algorithms/tags/a-star/index.html index 14f2f07..e69fa31 100644 --- a/algorithms/tags/a-star/index.html +++ b/algorithms/tags/a-star/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "a star"

    View All Tags

    From BF to A*

    Figuring out shortest-path problem from the BF to the A* algorithm. diff --git a/algorithms/tags/applications/index.html b/algorithms/tags/applications/index.html index 1a2e5ab..f53119b 100644 --- a/algorithms/tags/applications/index.html +++ b/algorithms/tags/applications/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "applications"

    View All Tags

    Použití červeno-černých stromů

    Ukázka použití červeno-černých stromů v standardních knižnicích známých jazyků. diff --git a/algorithms/tags/astar/index.html b/algorithms/tags/astar/index.html index 1889f83..87c4796 100644 --- a/algorithms/tags/astar/index.html +++ b/algorithms/tags/astar/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "astar"

    View All Tags

    A* algorithm

    Moving from Dijkstra's algorithm into the A* algorithm. diff --git a/algorithms/tags/backtracking/index.html b/algorithms/tags/backtracking/index.html index 119fc89..43d855d 100644 --- a/algorithms/tags/backtracking/index.html +++ b/algorithms/tags/backtracking/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "backtracking"

    View All Tags

    Recursion and backtracking with Robot Karel

    A problem with too many restrictions. diff --git a/algorithms/tags/balanced-trees/index.html b/algorithms/tags/balanced-trees/index.html index 4c78412..e71932b 100644 --- a/algorithms/tags/balanced-trees/index.html +++ b/algorithms/tags/balanced-trees/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "balanced trees"

    View All Tags

    On the rules of the red-black tree

    Shower thoughts on the rules of the red-black tree. diff --git a/algorithms/tags/bellman-ford/index.html b/algorithms/tags/bellman-ford/index.html index 7af733a..b308141 100644 --- a/algorithms/tags/bellman-ford/index.html +++ b/algorithms/tags/bellman-ford/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "bellman ford"

    View All Tags

    BF

    Solving the shortest path problem with a naïve approach that turns into diff --git a/algorithms/tags/bfs/index.html b/algorithms/tags/bfs/index.html index 3b2f9f4..80ca1c9 100644 --- a/algorithms/tags/bfs/index.html +++ b/algorithms/tags/bfs/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "bfs"

    View All Tags

    Distance boundaries from BFS tree on undirected graphs

    Short explanation of distance boundaries deduced from a BFS tree. diff --git a/algorithms/tags/bottom-up-dp/index.html b/algorithms/tags/bottom-up-dp/index.html index 3ebd690..3ff1211 100644 --- a/algorithms/tags/bottom-up-dp/index.html +++ b/algorithms/tags/bottom-up-dp/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "bottom-up-dp"

    View All Tags

    Bottom-up DP solution

    Bottom-up DP solution of the Pyramid Slide Down. diff --git a/algorithms/tags/brute-force/index.html b/algorithms/tags/brute-force/index.html index 3314226..a16d0e2 100644 --- a/algorithms/tags/brute-force/index.html +++ b/algorithms/tags/brute-force/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "brute force"

    View All Tags

    BF

    Solving the shortest path problem with a naïve approach that turns into diff --git a/algorithms/tags/c/index.html b/algorithms/tags/c/index.html index 41f4215..d004763 100644 --- a/algorithms/tags/c/index.html +++ b/algorithms/tags/c/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "c"

    View All Tags

    Time complexity of ‹extend›

    How to make inefficient algorithm unknowingly. diff --git a/algorithms/tags/cpp/index.html b/algorithms/tags/cpp/index.html index bce0d2c..694d309 100644 --- a/algorithms/tags/cpp/index.html +++ b/algorithms/tags/cpp/index.html @@ -14,8 +14,8 @@ - - + +

    7 docs tagged with "cpp"

    View All Tags

    A* algorithm

    Moving from Dijkstra's algorithm into the A* algorithm. diff --git a/algorithms/tags/csharp/index.html b/algorithms/tags/csharp/index.html index 61d7f5b..1bbcb18 100644 --- a/algorithms/tags/csharp/index.html +++ b/algorithms/tags/csharp/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "csharp"

    View All Tags

    Iterative algorithms via iterators

    Iterative DFS using iterators. diff --git a/algorithms/tags/dijkstra/index.html b/algorithms/tags/dijkstra/index.html index 5eca9b4..4bc6d61 100644 --- a/algorithms/tags/dijkstra/index.html +++ b/algorithms/tags/dijkstra/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "dijkstra"

    View All Tags

    Dijkstra's algorithm

    Moving from Bellman-Ford into the Dijsktra's algorithm. diff --git a/algorithms/tags/dynamic-array/index.html b/algorithms/tags/dynamic-array/index.html index d56a761..fafc7a8 100644 --- a/algorithms/tags/dynamic-array/index.html +++ b/algorithms/tags/dynamic-array/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "dynamic array"

    View All Tags

    Time complexity of ‹extend›

    How to make inefficient algorithm unknowingly. diff --git a/algorithms/tags/dynamic-programming/index.html b/algorithms/tags/dynamic-programming/index.html index fb8a48b..edfd443 100644 --- a/algorithms/tags/dynamic-programming/index.html +++ b/algorithms/tags/dynamic-programming/index.html @@ -14,8 +14,8 @@ - - + +

    7 docs tagged with "dynamic programming"

    View All Tags

    A* algorithm

    Moving from Dijkstra's algorithm into the A* algorithm. diff --git a/algorithms/tags/exponential/index.html b/algorithms/tags/exponential/index.html index dcbc9fa..db89b15 100644 --- a/algorithms/tags/exponential/index.html +++ b/algorithms/tags/exponential/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "exponential"

    View All Tags

    Introduction to dynamic programming

    Solving a problem in different ways. diff --git a/algorithms/tags/graphs/index.html b/algorithms/tags/graphs/index.html index eccb604..a964527 100644 --- a/algorithms/tags/graphs/index.html +++ b/algorithms/tags/graphs/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "graphs"

    View All Tags

    Distance boundaries from BFS tree on undirected graphs

    Short explanation of distance boundaries deduced from a BFS tree. diff --git a/algorithms/tags/greedy/index.html b/algorithms/tags/greedy/index.html index 12766df..28b95d6 100644 --- a/algorithms/tags/greedy/index.html +++ b/algorithms/tags/greedy/index.html @@ -14,8 +14,8 @@ - - + +

    4 docs tagged with "greedy"

    View All Tags

    Dijkstra's algorithm

    Moving from Bellman-Ford into the Dijsktra's algorithm. diff --git a/algorithms/tags/hash-tables/index.html b/algorithms/tags/hash-tables/index.html index ad6df9b..cfeaa8a 100644 --- a/algorithms/tags/hash-tables/index.html +++ b/algorithms/tags/hash-tables/index.html @@ -14,8 +14,8 @@ - - + +

    3 docs tagged with "hash-tables"

    View All Tags

    Breaking Hash Table

    How to get the linear time complexity in a hash table. diff --git a/algorithms/tags/index.html b/algorithms/tags/index.html index 4316834..3b3fa28 100644 --- a/algorithms/tags/index.html +++ b/algorithms/tags/index.html @@ -14,8 +14,8 @@ - - + +

    diff --git a/algorithms/tags/iterative/index.html b/algorithms/tags/iterative/index.html index a1c5198..d7716c3 100644 --- a/algorithms/tags/iterative/index.html +++ b/algorithms/tags/iterative/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "iterative"

    View All Tags

    Iterative algorithms via iterators

    Iterative DFS using iterators. diff --git a/algorithms/tags/iterators/index.html b/algorithms/tags/iterators/index.html index a36022a..aed47a1 100644 --- a/algorithms/tags/iterators/index.html +++ b/algorithms/tags/iterators/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "iterators"

    View All Tags

    Iterative algorithms via iterators

    Iterative DFS using iterators. diff --git a/algorithms/tags/java/index.html b/algorithms/tags/java/index.html index 29f53f1..dfbe85a 100644 --- a/algorithms/tags/java/index.html +++ b/algorithms/tags/java/index.html @@ -14,8 +14,8 @@ - - + +

    5 docs tagged with "java"

    View All Tags

    Bottom-up DP solution

    Bottom-up DP solution of the Pyramid Slide Down. diff --git a/algorithms/tags/karel/index.html b/algorithms/tags/karel/index.html index 36b5d7f..0ab8814 100644 --- a/algorithms/tags/karel/index.html +++ b/algorithms/tags/karel/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "karel"

    View All Tags

    Recursion and backtracking with Robot Karel

    A problem with too many restrictions. diff --git a/algorithms/tags/postconditions/index.html b/algorithms/tags/postconditions/index.html index 89f06f3..a1cfa73 100644 --- a/algorithms/tags/postconditions/index.html +++ b/algorithms/tags/postconditions/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "postconditions"

    View All Tags

    Vague postconditions and proving correctness of algorithms

    Debugging and testing with precise postconditions. diff --git a/algorithms/tags/python/index.html b/algorithms/tags/python/index.html index 1a7cbd4..cde481f 100644 --- a/algorithms/tags/python/index.html +++ b/algorithms/tags/python/index.html @@ -14,8 +14,8 @@ - - + +

    7 docs tagged with "python"

    View All Tags

    Breaking Hash Table

    How to get the linear time complexity in a hash table. diff --git a/algorithms/tags/recursion/index.html b/algorithms/tags/recursion/index.html index c3d9f12..6274393 100644 --- a/algorithms/tags/recursion/index.html +++ b/algorithms/tags/recursion/index.html @@ -14,8 +14,8 @@ - - + +

    5 docs tagged with "recursion"

    View All Tags

    Introduction to dynamic programming

    Solving a problem in different ways. diff --git a/algorithms/tags/red-black-trees/index.html b/algorithms/tags/red-black-trees/index.html index 1ea634f..c1f31c1 100644 --- a/algorithms/tags/red-black-trees/index.html +++ b/algorithms/tags/red-black-trees/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "red-black trees"

    View All Tags

    On the rules of the red-black tree

    Shower thoughts on the rules of the red-black tree. diff --git a/algorithms/tags/solution/index.html b/algorithms/tags/solution/index.html index bfebcdf..addc449 100644 --- a/algorithms/tags/solution/index.html +++ b/algorithms/tags/solution/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "solution"

    View All Tags

    Solution to the problem

    Solving the problem introduced in the previous post. diff --git a/algorithms/tags/sorting/index.html b/algorithms/tags/sorting/index.html index ad1f56c..70881a4 100644 --- a/algorithms/tags/sorting/index.html +++ b/algorithms/tags/sorting/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "sorting"

    View All Tags

    Vague postconditions and proving correctness of algorithms

    Debugging and testing with precise postconditions. diff --git a/algorithms/tags/testing/index.html b/algorithms/tags/testing/index.html index 69a4f33..6b47c75 100644 --- a/algorithms/tags/testing/index.html +++ b/algorithms/tags/testing/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "testing"

    View All Tags

    Vague postconditions and proving correctness of algorithms

    Debugging and testing with precise postconditions. diff --git a/algorithms/tags/time-complexity/index.html b/algorithms/tags/time-complexity/index.html index 67d1996..7826d65 100644 --- a/algorithms/tags/time-complexity/index.html +++ b/algorithms/tags/time-complexity/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "time complexity"

    View All Tags

    Time complexity of ‹extend›

    How to make inefficient algorithm unknowingly. diff --git a/algorithms/tags/top-down-dp/index.html b/algorithms/tags/top-down-dp/index.html index d74b3ed..905b929 100644 --- a/algorithms/tags/top-down-dp/index.html +++ b/algorithms/tags/top-down-dp/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "top-down-dp"

    View All Tags

    Introduction to dynamic programming

    Solving a problem in different ways. diff --git a/algorithms/time-complexity/extend/index.html b/algorithms/time-complexity/extend/index.html index 23e4ab2..ced4f04 100644 --- a/algorithms/time-complexity/extend/index.html +++ b/algorithms/time-complexity/extend/index.html @@ -16,8 +16,8 @@ - - + +

    Time complexity of ‹extend›

    Introduction

    diff --git a/assets/js/1535ede8.b272bba2.js b/assets/js/1535ede8.dddf9863.js similarity index 99% rename from assets/js/1535ede8.b272bba2.js rename to assets/js/1535ede8.dddf9863.js index d623174..12d0d78 100644 --- a/assets/js/1535ede8.b272bba2.js +++ b/assets/js/1535ede8.dddf9863.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[5376],{44969:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var s=t(85893),i=t(11151);const r={id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},o=void 0,a={id:"bonuses/seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n",source:"@site/c/bonuses/10.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-10",permalink:"/c/bonuses/seminar-10",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/10.md",tags:[],version:"current",lastUpdatedAt:1707050925,formattedLastUpdatedAt:"Feb 4, 2024",frontMatter:{id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},sidebar:"autogeneratedBar",previous:{title:"8th seminar",permalink:"/c/bonuses/seminar-08"},next:{title:"Practice Exams",permalink:"/c/category/practice-exams"}},c={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Project",id:"project",level:2},{value:"Summary of the gameplay",id:"summary-of-the-gameplay",level:3},{value:"Suggested workflow",id:"suggested-workflow",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Dictionary",id:"dictionary",level:2},{value:"Submitting",id:"submitting",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:(0,s.jsx)(n.a,{href:"pathname:///files/c/bonuses/10.tar.gz",children:"Source"})}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"For this bonus you are given almost finished project - The Hangman Game. Your\ntask is to try the game, in case you find any bugs point them out and cover as\nmuch of the game as possible with tests."}),"\n",(0,s.jsx)(n.p,{children:"For this bonus you can get at maximum 2 K\u20a1."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Item"}),(0,s.jsx)(n.th,{children:"Bonus"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Fixing bugs from failing tests"}),(0,s.jsx)(n.td,{children:"0.25"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"word_guessed"})}),(0,s.jsx)(n.td,{children:"0.50"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Hidden bug"}),(0,s.jsx)(n.td,{children:"0.50"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Extending tests, undetectable bugs or evil bug"}),(0,s.jsx)(n.td,{children:"0.37"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Refactor"}),(0,s.jsx)(n.td,{children:"0.38"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"project",children:"Project"}),"\n",(0,s.jsxs)(n.p,{children:["Project consists of 2 source files - ",(0,s.jsx)(n.code,{children:"hangman.c"})," and ",(0,s.jsx)(n.code,{children:"main.c"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"main.c"})," is quite short and concise, there is nothing for you to do."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"hangman.c"})," contains implementation of the game. In case you feel lost, consult\nthe documentation in ",(0,s.jsx)(n.code,{children:"hangman.h"})," that represents an interface that can be used\nfor implementing the game."]}),"\n",(0,s.jsxs)(n.p,{children:["Apart from those sources this project is a bit more complicated. ",(0,s.jsx)(n.em,{children:"Game loop"})," is\nrealised via single encapsulated function that complicates the testing. Because\nof that, there are 2 kinds of tests:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Unit tests"})," - that are present in ",(0,s.jsx)(n.code,{children:"test_hangman.c"})," and can be run via:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check-unit\n"})}),"\n",(0,s.jsx)(n.p,{children:"They cover majorly functions that can be tested easily via testing framework."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Functional tests"})," - same as in ",(0,s.jsx)(n.code,{children:"seminar-08"})," and are focused on testing the\nprogram as whole. Basic smoke test is already included in ",(0,s.jsx)(n.code,{children:"usage"})," test case."]}),"\n",(0,s.jsx)(n.p,{children:"They can be run via:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check-functional\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When testing ",(0,s.jsx)(n.code,{children:"hangman"})," function (the game loop), it is suggested to create\nfunctional tests."]}),"\n",(0,s.jsx)(n.p,{children:"When submitting the files for review, please leave out functional tests that\nwere given as a part of the assignment, so that it is easier to navigate, I\nwill drag the common files myself. :)"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Whole test suite can be run via:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check\n"})}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"summary-of-the-gameplay",children:"Summary of the gameplay"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Secret word gets chosen from the file that's path is given as an argument."}),"\n",(0,s.jsx)(n.li,{children:"You get 8 guesses."}),"\n",(0,s.jsx)(n.li,{children:"Invalid characters don't count."}),"\n",(0,s.jsx)(n.li,{children:"Already guessed characters don't count, even if not included in the secret."}),"\n",(0,s.jsxs)(n.li,{children:["You can guess the whole word at once","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"If you get it right, you won, game ends."}),"\n",(0,s.jsx)(n.li,{children:"If you don't get it right, you get to see the secret, game ends."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"In case of end of input, game finishes via force."}),"\n",(0,s.jsx)(n.li,{children:"In case of invalid input, no guesses are subtracted, game carries on."}),"\n",(0,s.jsx)(n.li,{children:"Letters and words are not case sensitive."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"suggested-workflow",children:"Suggested workflow"}),"\n",(0,s.jsxs)(n.p,{children:["As we have talked about on the seminar, I suggest you to follow\n",(0,s.jsx)(n.em,{children:"Test-Driven Development"}),"\nin this case."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"TDD workflow",src:t(27420).Z+"",width:"2814",height:"1652"})}),"\n",(0,s.jsx)(n.p,{children:"In our current scenario we are already in the stage of refactoring and fixing the\nbugs. Therefore try to follow this succession of steps:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Try to reproduce the bug."}),"\n",(0,s.jsx)(n.li,{children:"Create a test that proves the presence of the bug."}),"\n",(0,s.jsx)(n.li,{children:"Fix the bug."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["In case you are submitting the bonus via GitLab, it is helpful to commit tests\nbefore commiting the fixes, so that it is apparent that the bug is manifested.\nExample of ",(0,s.jsx)(n.code,{children:"git log"})," (notice that the first line represents latest commit):"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"feat: Implement fizz_buzzer\ntest: Add tests for fizz_buzzer\nfix: Fix NULL-check in print_name\ntest: Add test for NULL in print_name\n"})}),"\n",(0,s.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,s.jsx)(n.p,{children:"As to your tasks, there are multiple things wrong in this project."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:'There are 2 "bugs" that cannot be detected via tests, i.e. they are not bugs\nthat affect functionality of the game.'}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["There is one evil bug in ",(0,s.jsx)(n.code,{children:"get_word"}),". It is not required to be fixed ;) Assign\nit the lowest priority."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"There are some tests failing. Please try to figure it out, so you have green\ntests for the rest :)"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["We have gotten a bug report for ",(0,s.jsx)(n.code,{children:"word_guessed"}),", all we got is"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["doesn't work when there are too many ",(0,s.jsx)(n.code,{children:"a"}),"s"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Please try to replicate the bug and create a tests, so we don't get any\nregression later on."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"One hidden bug :) Closely non-specified, we cannot reproduce it and we were\ndrunk while playing the game, so we don't remember a thing. :/"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Try to cover as much code via the tests as possible. We are not going to look\nat the metrics, but DRY is violated a lot, so as a last task try to remove as\nmuch of the duplicit code as possible."}),"\n",(0,s.jsx)(n.p,{children:"Tests should help you a lot in case there are some regressions."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:["In case you wonder why there are always 3 same words in the file with words, it\nis because of the ",(0,s.jsx)(n.code,{children:"get_word"})," bug. It is not a bug that can be easily fixed, so\nit is a not requirement at all and you can still get all points for the bonus ;)"]}),"\n",(0,s.jsx)(n.h2,{id:"dictionary",children:"Dictionary"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Functional_testing",children:"Functional tests"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Smoke_testing_%28software%29",children:"Smoke test"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself",children:"DRY"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,s.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,s.jsx)(n.hr,{})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},27420:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/tdd_lifecycle-327ad9ee0ed8318ed11e19a28e02b2cc.png"},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>o});var s=t(67294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[5376],{44969:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var s=t(85893),i=t(11151);const r={id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},o=void 0,a={id:"bonuses/seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n",source:"@site/c/bonuses/10.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-10",permalink:"/c/bonuses/seminar-10",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/10.md",tags:[],version:"current",lastUpdatedAt:1707051499,formattedLastUpdatedAt:"Feb 4, 2024",frontMatter:{id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},sidebar:"autogeneratedBar",previous:{title:"8th seminar",permalink:"/c/bonuses/seminar-08"},next:{title:"Practice Exams",permalink:"/c/category/practice-exams"}},c={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Project",id:"project",level:2},{value:"Summary of the gameplay",id:"summary-of-the-gameplay",level:3},{value:"Suggested workflow",id:"suggested-workflow",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Dictionary",id:"dictionary",level:2},{value:"Submitting",id:"submitting",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:(0,s.jsx)(n.a,{href:"pathname:///files/c/bonuses/10.tar.gz",children:"Source"})}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"For this bonus you are given almost finished project - The Hangman Game. Your\ntask is to try the game, in case you find any bugs point them out and cover as\nmuch of the game as possible with tests."}),"\n",(0,s.jsx)(n.p,{children:"For this bonus you can get at maximum 2 K\u20a1."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Item"}),(0,s.jsx)(n.th,{children:"Bonus"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Fixing bugs from failing tests"}),(0,s.jsx)(n.td,{children:"0.25"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"word_guessed"})}),(0,s.jsx)(n.td,{children:"0.50"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Hidden bug"}),(0,s.jsx)(n.td,{children:"0.50"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Extending tests, undetectable bugs or evil bug"}),(0,s.jsx)(n.td,{children:"0.37"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Refactor"}),(0,s.jsx)(n.td,{children:"0.38"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"project",children:"Project"}),"\n",(0,s.jsxs)(n.p,{children:["Project consists of 2 source files - ",(0,s.jsx)(n.code,{children:"hangman.c"})," and ",(0,s.jsx)(n.code,{children:"main.c"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"main.c"})," is quite short and concise, there is nothing for you to do."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"hangman.c"})," contains implementation of the game. In case you feel lost, consult\nthe documentation in ",(0,s.jsx)(n.code,{children:"hangman.h"})," that represents an interface that can be used\nfor implementing the game."]}),"\n",(0,s.jsxs)(n.p,{children:["Apart from those sources this project is a bit more complicated. ",(0,s.jsx)(n.em,{children:"Game loop"})," is\nrealised via single encapsulated function that complicates the testing. Because\nof that, there are 2 kinds of tests:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Unit tests"})," - that are present in ",(0,s.jsx)(n.code,{children:"test_hangman.c"})," and can be run via:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check-unit\n"})}),"\n",(0,s.jsx)(n.p,{children:"They cover majorly functions that can be tested easily via testing framework."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Functional tests"})," - same as in ",(0,s.jsx)(n.code,{children:"seminar-08"})," and are focused on testing the\nprogram as whole. Basic smoke test is already included in ",(0,s.jsx)(n.code,{children:"usage"})," test case."]}),"\n",(0,s.jsx)(n.p,{children:"They can be run via:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check-functional\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When testing ",(0,s.jsx)(n.code,{children:"hangman"})," function (the game loop), it is suggested to create\nfunctional tests."]}),"\n",(0,s.jsx)(n.p,{children:"When submitting the files for review, please leave out functional tests that\nwere given as a part of the assignment, so that it is easier to navigate, I\nwill drag the common files myself. :)"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Whole test suite can be run via:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check\n"})}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"summary-of-the-gameplay",children:"Summary of the gameplay"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Secret word gets chosen from the file that's path is given as an argument."}),"\n",(0,s.jsx)(n.li,{children:"You get 8 guesses."}),"\n",(0,s.jsx)(n.li,{children:"Invalid characters don't count."}),"\n",(0,s.jsx)(n.li,{children:"Already guessed characters don't count, even if not included in the secret."}),"\n",(0,s.jsxs)(n.li,{children:["You can guess the whole word at once","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"If you get it right, you won, game ends."}),"\n",(0,s.jsx)(n.li,{children:"If you don't get it right, you get to see the secret, game ends."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"In case of end of input, game finishes via force."}),"\n",(0,s.jsx)(n.li,{children:"In case of invalid input, no guesses are subtracted, game carries on."}),"\n",(0,s.jsx)(n.li,{children:"Letters and words are not case sensitive."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"suggested-workflow",children:"Suggested workflow"}),"\n",(0,s.jsxs)(n.p,{children:["As we have talked about on the seminar, I suggest you to follow\n",(0,s.jsx)(n.em,{children:"Test-Driven Development"}),"\nin this case."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"TDD workflow",src:t(27420).Z+"",width:"2814",height:"1652"})}),"\n",(0,s.jsx)(n.p,{children:"In our current scenario we are already in the stage of refactoring and fixing the\nbugs. Therefore try to follow this succession of steps:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Try to reproduce the bug."}),"\n",(0,s.jsx)(n.li,{children:"Create a test that proves the presence of the bug."}),"\n",(0,s.jsx)(n.li,{children:"Fix the bug."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["In case you are submitting the bonus via GitLab, it is helpful to commit tests\nbefore commiting the fixes, so that it is apparent that the bug is manifested.\nExample of ",(0,s.jsx)(n.code,{children:"git log"})," (notice that the first line represents latest commit):"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"feat: Implement fizz_buzzer\ntest: Add tests for fizz_buzzer\nfix: Fix NULL-check in print_name\ntest: Add test for NULL in print_name\n"})}),"\n",(0,s.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,s.jsx)(n.p,{children:"As to your tasks, there are multiple things wrong in this project."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:'There are 2 "bugs" that cannot be detected via tests, i.e. they are not bugs\nthat affect functionality of the game.'}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["There is one evil bug in ",(0,s.jsx)(n.code,{children:"get_word"}),". It is not required to be fixed ;) Assign\nit the lowest priority."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"There are some tests failing. Please try to figure it out, so you have green\ntests for the rest :)"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["We have gotten a bug report for ",(0,s.jsx)(n.code,{children:"word_guessed"}),", all we got is"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["doesn't work when there are too many ",(0,s.jsx)(n.code,{children:"a"}),"s"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Please try to replicate the bug and create a tests, so we don't get any\nregression later on."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"One hidden bug :) Closely non-specified, we cannot reproduce it and we were\ndrunk while playing the game, so we don't remember a thing. :/"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Try to cover as much code via the tests as possible. We are not going to look\nat the metrics, but DRY is violated a lot, so as a last task try to remove as\nmuch of the duplicit code as possible."}),"\n",(0,s.jsx)(n.p,{children:"Tests should help you a lot in case there are some regressions."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:["In case you wonder why there are always 3 same words in the file with words, it\nis because of the ",(0,s.jsx)(n.code,{children:"get_word"})," bug. It is not a bug that can be easily fixed, so\nit is a not requirement at all and you can still get all points for the bonus ;)"]}),"\n",(0,s.jsx)(n.h2,{id:"dictionary",children:"Dictionary"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Functional_testing",children:"Functional tests"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Smoke_testing_%28software%29",children:"Smoke test"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself",children:"DRY"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,s.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,s.jsx)(n.hr,{})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},27420:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/tdd_lifecycle-327ad9ee0ed8318ed11e19a28e02b2cc.png"},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>o});var s=t(67294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/182b5a8d.a8e28604.js b/assets/js/182b5a8d.cbc8a774.js similarity index 75% rename from assets/js/182b5a8d.a8e28604.js rename to assets/js/182b5a8d.cbc8a774.js index 95150c4..3f1f683 100644 --- a/assets/js/182b5a8d.a8e28604.js +++ b/assets/js/182b5a8d.cbc8a774.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6048],{32582:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>s,metadata:()=>r,toc:()=>u});var a=n(85893),o=n(11151);const s={title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:new Date("2024-01-28T00:00:00.000Z"),authors:[{key:"mf",title:"a.k.a. passionate language hater"}],tags:["rust","memory safety","cult","hype"],hide_table_of_contents:!1},i=void 0,r={permalink:"/blog/2024/01/28/rust-opinion",editUrl:"https://github.com/mfocko/blog/tree/main/blog/2024-01-28-rust-opinion.md",source:"@site/blog/2024-01-28-rust-opinion.md",title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:"2024-01-28T00:00:00.000Z",formattedDate:"January 28, 2024",tags:[{label:"rust",permalink:"/blog/tags/rust"},{label:"memory safety",permalink:"/blog/tags/memory-safety"},{label:"cult",permalink:"/blog/tags/cult"},{label:"hype",permalink:"/blog/tags/hype"}],readingTime:15.395,hasTruncateMarker:!0,authors:[{name:"Matej Focko",email:"me+blog@mfocko.xyz",title:"a.k.a. passionate language hater",url:"https://gitlab.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mf"}],frontMatter:{title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:"2024-01-28T00:00:00.000Z",authors:[{key:"mf",title:"a.k.a. passionate language hater"}],tags:["rust","memory safety","cult","hype"],hide_table_of_contents:!1},unlisted:!1,nextItem:{title:"How can Copr help with broken dependencies",permalink:"/blog/2023/08/02/copr"}},l={authorsImageUrls:[void 0]},u=[];function c(e){const t={em:"em",p:"p",...(0,o.a)(),...e.components};return(0,a.jsxs)(t.p,{children:["Rust has become a rather popular language these days. I've managed to get my\nhands dirty with it during ",(0,a.jsx)(t.em,{children:"[Advent of Code]"})," \u201822 and partially \u201823. I've also\nused it for few rounds of ",(0,a.jsx)(t.em,{children:"[Codeforces]"})," and I have to try very hard to maintain\nsome variety of languages for LeetCode challenges along with the Rust. I'll\ndisclaim up front that I won't be only positive, since this post is a result of\nmultiple discussions about Rust and I stand behind\n",(0,a.jsx)(t.em,{children:"\u201cAll that glitters is not gold\u201d"}),", so if you can't stand your favorite language\nbeing criticized in any way, don't even proceed. ","\ud83d\ude09"]})}function m(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>i});var a=n(67294);const o={},s=a.createContext(o);function i(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6048],{32582:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>s,metadata:()=>r,toc:()=>u});var a=n(85893),o=n(11151);const s={title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:new Date("2024-01-28T00:00:00.000Z"),authors:[{key:"mf",title:"a.k.a. passionate language hater"}],tags:["rust","memory safety","cult","hype"],hide_table_of_contents:!1},i=void 0,r={permalink:"/blog/2024/01/28/rust-opinion",editUrl:"https://github.com/mfocko/blog/tree/main/blog/2024-01-28-rust-opinion.md",source:"@site/blog/2024-01-28-rust-opinion.md",title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:"2024-01-28T00:00:00.000Z",formattedDate:"January 28, 2024",tags:[{label:"rust",permalink:"/blog/tags/rust"},{label:"memory safety",permalink:"/blog/tags/memory-safety"},{label:"cult",permalink:"/blog/tags/cult"},{label:"hype",permalink:"/blog/tags/hype"}],readingTime:15.395,hasTruncateMarker:!0,authors:[{name:"Matej Focko",email:"me+blog@mfocko.xyz",title:"a.k.a. passionate language hater",url:"https://gitlab.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mf"}],frontMatter:{title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:"2024-01-28T00:00:00.000Z",authors:[{key:"mf",title:"a.k.a. passionate language hater"}],tags:["rust","memory safety","cult","hype"],hide_table_of_contents:!1},unlisted:!1,nextItem:{title:"How can Copr help with broken dependencies",permalink:"/blog/2023/08/02/copr"}},l={authorsImageUrls:[void 0]},u=[];function c(e){const t={em:"em",p:"p",...(0,o.a)(),...e.components};return(0,a.jsxs)(t.p,{children:["Rust has become a rather popular language these days. I've managed to get my\nhands dirty with it during ",(0,a.jsx)(t.em,{children:"[Advent of Code]"})," \u201822 and partially \u201823. I've also\nused it for few rounds of ",(0,a.jsx)(t.em,{children:"[Codeforces]"})," and I have to try very hard to maintain\nsome variety of languages for LeetCode challenges along with the Rust. I'll\ndisclaim up front that I won't be only positive, since this post is a result of\nmultiple discussions about Rust and I stand by\n",(0,a.jsx)(t.em,{children:"\u201cAll that glitters is not gold\u201d"}),", so if you can't stand your favorite language\nbeing criticized in any way, don't even proceed. ","\ud83d\ude09"]})}function m(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>i});var a=n(67294);const o={},s=a.createContext(o);function i(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4200b1a9.9d505c0f.js b/assets/js/4200b1a9.9d505c0f.js deleted file mode 100644 index 3e43a25..0000000 --- a/assets/js/4200b1a9.9d505c0f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[866],{24612:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/01/28/rust-opinion","metadata":{"permalink":"/blog/2024/01/28/rust-opinion","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2024-01-28-rust-opinion.md","source":"@site/blog/2024-01-28-rust-opinion.md","title":"Mixed feelings on Rust","description":"Discussing my mixed feelings about the Rust language.\\n","date":"2024-01-28T00:00:00.000Z","formattedDate":"January 28, 2024","tags":[{"label":"rust","permalink":"/blog/tags/rust"},{"label":"memory safety","permalink":"/blog/tags/memory-safety"},{"label":"cult","permalink":"/blog/tags/cult"},{"label":"hype","permalink":"/blog/tags/hype"}],"readingTime":15.395,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. passionate language hater","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Mixed feelings on Rust","description":"Discussing my mixed feelings about the Rust language.\\n","date":"2024-01-28T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. passionate language hater"}],"tags":["rust","memory safety","cult","hype"],"hide_table_of_contents":false},"unlisted":false,"nextItem":{"title":"How can Copr help with broken dependencies","permalink":"/blog/2023/08/02/copr"}},"content":"Rust has become a rather popular language these days. I\'ve managed to get my\\nhands dirty with it during _[Advent of Code]_ \u201822 and partially \u201823. I\'ve also\\nused it for few rounds of _[Codeforces]_ and I have to try very hard to maintain\\nsome variety of languages for LeetCode challenges along with the Rust. I\'ll\\ndisclaim up front that I won\'t be only positive, since this post is a result of\\nmultiple discussions about Rust and I stand behind\\n_\u201cAll that glitters is not gold\u201d_, so if you can\'t stand your favorite language\\nbeing criticized in any way, don\'t even proceed. :wink:\\n\\n\x3c!--truncate--\x3e\\n\\n## Memory safety\\n\\nI\'ll start by kicking the biggest benefit of the language, the memory safety.\\nLet\'s be honest here, majority of the checks rely on the static analysis, cause\\nyou can\'t do anything else during the compile-time, right? Therefore we can\\nbasically say that we are relying on the compiler to \u201csolve\u201d all of our issues.\\n\\n:::warning\\n\\nI\'m not doubting the fact that compiler can prevent **a lot** of the memory\\nerrors, I\'m just saying it\'s not realistic to cover **everything**.\\n\\n:::\\n\\n### Compiler\\n\\nI guess we can safely[^2] agree on the fact that we 100% rely on the compiler to\\n_have our back_. Is the compiler bug-free? I doubt it. This is not meant in an\\noffensive way to the Rust compiler developers, but we need to be realistic here.\\nIt\'s a compiler, even older and larger projects like _gcc_ or _llvm_ can\'t avoid\\nbugs to appear.\\n\\nWhen I was trying out Rust for some of the LeetCode challenges I\'ve stumbled\\nupon the following warning:\\n![Example of a compiler bug](https://i.imgur.com/NfPLF6o.png)\\n\\n:::danger [Issue](https://github.com/rust-lang/rust/issues/59159)\\n\\nThe issue here comes from the fact that we have 2 simultaneous references to the\\nsame memory (one is mutable and one immutable). If you cannot think of any way\\nthis can break, I\'ll give you a rather simple example from C++ where this could\\ncause an issue.\\n\\nImagine a function that has some complex object and also calls a coroutine which\\nutilizes read-only reference to that object. When the coroutine suspends, the\\ncaller can modify the object. This can break the integrity of data read by the\\ncoroutine.\\n\\n- Yes, this **can** cause a memory error.\\n- Yes, this **hasn\'t** been handled until someone noticed it.\\n\\nFixing this bug is not backwards compatible, cause you\'re covering a case that\\nhasn\'t been covered before.\\n\\n:::\\n\\n### Enforcing the safety\\n\\nOne of the ways Rust enforces the safety is by restricting what you can do, like\\nthe example above. Aforementioned issue _can_ happen, but **doesn\'t have to**.\\nRule of the thumb in the Rust compiler is to _\u201cblock\u201d_ anything that can be an\\nissue, static analysis can\'t do much more, it cannot decide whether it\'s safe to\\ndo it or not.\\n\\nSatisfying the Rust compiler is sometimes a brutal pain in the ass, because you\\ncannot do things like you\'re used to, you need to work around them _somehow_.\\n\\n:::tip\\n\\nKey difference between Rust and C or C++ lies in the fact that Rust chooses to\\n_ban_ all \u201cpotentially offensive\u201d actions, C and C++ _relies_ on **you** to be\\nsure it\'s safe to do.\\n\\n![C++ v. Rust](https://i.imgur.com/0vbkYPp.png)\\n\\n:::\\n\\n### Consequences\\n\\nWhere are we heading with this approach of \u201cif it compiles, it runs\u201d though?\\nIn this aspect I have a rather similar opinion as with regards to the ChatGPT\\nand its derivatives.\\n\\nIf you teach people to 100% depend on the compiler, they will do it, cause it\'s\\n_easy_. All you need to do is make the compiler _shut up_[^3]. Giving up the\\n_intellectual masturbation_ about the memory safety will make you lose your edge\\nover the time. When we get to the point of everyone being in the mindset\\nmentioned above, who\'s going to maintain the compiler? This is the place where\\nyou **need to** think about the memory safety and furthermore in a much more\\ngeneral way than in your own projects, because it is the thing that everyone\\n_blindly believes in_ in the end.\\n\\nI\'m not saying that everyone should give up Rust and think about their memory\\nmanagement and potential memory issues. I\'m just saying that going the easy way\\nwill make people _dull_ and they should think about it anyways, that\'s how the\\nissue above has been discovered. If everyone walked past and didn\'t think about\\nit, no one would discover this issue till it bit them hard.\\n\\n:::tip Standard library\\n\\nEven the standard library is littered with `unsafe` blocks that are prefixed\\nwith comments in style:\\n\\n```rs\\n// SAFETY: \u2026\\n```\\n\\nThe fact that the _casual_ Rust dev doesn\'t have to think much about safety,\\ncause the compiler has their back, doesn\'t mean that the Rust compiler dev\\ndoesn\'t either.\\n\\nI gotta admit that I adopted this concept in other languages (even in Python),\\ncause you can encounter situations where it doesn\'t have to be clear _why_ you\\ncan do _what_ you\'re doing.\\n\\n:::\\n\\n## Development & design\\n\\nDevelopment of Rust is\u2026 very fast. One positive is that they\'re trying to be as\\nbackward compatible as possible at least by verifying against all the published\\ncrates in the process. Of course, you cannot be backward compatible about fixing\\nthe bugs that have been found, but such is life.\\n\\n### Fast development cycle\\n\\nOne of the negatives of the fast development cycle is the fact that they\'re\\nusing the latest features already in the next release of the Rust. Yes, it is\\nsomething that you can use for verifying and testing your own changes, but at\\nthe same time it places a requirement of the latest release to compile the next\\none.\\n\\n:::tip\\n\\nIf you check `gcc` for example, they have a requirement of minimal version of\\ncompiler that you need for the build. Though gcc\'s requirement is not so _needy_\\nas the Rust one.\\n\\n:::\\n\\nOne of the other negatives is the introduction of bugs. If you\'re pushing\\nchanges, somewhat mindlessly, at such a fast pace, it is inevitable to introduce\\na bunch bugs in the process. Checking the GitHub issue tracker with\\n\\n```\\nis:issue is:open label:C-bug label:T-compiler\\n```\\n\\nyields **2,224** open issues at the time of writing this post.\\n\\n### RFCs\\n\\nYou can find **a lot** of RFCs for the Rust. Some of them are more questionable\\nthan the others. Fun thing is that a lot of them make it to the nightly builds,\\nso they can be tested and polished off. Even the questionable ones\u2026 I\'ll leave\\nfew examples for a better understanding.\\n\\nOne of such features is the `do yeet` expression:\\n\\n```rust\\n#![feature(yeet_expr)]\\n\\nfn foo() -> Result {\\n do yeet 4;\\n}\\nassert_eq!(foo(), Err(4));\\n\\nfn bar() -> Option {\\n do yeet;\\n}\\nassert_eq!(bar(), None);\\n```\\n\\nIt allows you to \u201cyeet\u201d the errors out of the functions that return `Result` or\\n`Option`.\\n\\n[One](https://github.com/rust-lang/rfcs/pull/3503) of the more recent ones is\\nthe ability to include Cargo manifests into the sources, so you can do something\\nlike:\\n\\n```rust\\n#!/usr/bin/env cargo\\n---\\n[dependencies]\\nclap = { version = \\"4.2\\", features = [\\"derive\\"] }\\n---\\n\\nuse clap::Parser;\\n\\n#[derive(Parser, Debug)]\\n#[clap(version)]\\nstruct Args {\\n #[clap(short, long, help = \\"Path to config\\")]\\n config: Option,\\n}\\n\\nfn main() {\\n let args = Args::parse();\\n println!(\\"{:?}\\", args);\\n}\\n```\\n\\nI would say you can get almost anything into the language\u2026\\n\\n## Community and hype train\\n\\nRust community is a rather unique thing. A lot of people will hate me for this,\\nbut I can\'t help, but to compare them to _militant vegans_. I\'ll go through some\\nof the things related to it, so I can support my opinion at least.\\n\\n_Rust is the best language._ It is not. There is no best language, each has its\\nown positives and negatives, you need to choose the language that\'s **the most**\\n**suitable for your use case**. There are areas where Rust excels, though I have\\nto admit it\'s very close to being a universal hammer regardless of how suitable\\nit is. There is a very steep learning curve to it, beginnings in Rust are very\\npainful.\\n\\n_Rewrite everything in Rust._ Just no. There are multiple feedbacks on doing\\nrewrites, it is very common to fix _N_ bugs with a rewrite while introducing\\n_N + 1_ other bugs in the process. It doesn\'t solve anything unless there are\\nsome strong reasons to go with it. Majority of such suggested rewrites don\'t\\nhave those reasons though.\\n\\n_Language \u2039x\u203a is bad, though in Rust\u2026_ Cherry-picking one specific pain point of\\none language and reflecting how it is better in other language can go both ways.\\nFor example it is rather easy to pick the limitations imposed by Rust compiler\\nand show how it\'s possible in other languages :man_shrugging:\\n\\nI don\'t mind any of those opinions, you\'re free to have them, as long as you\\ndon\'t rub them in my face which is not the usual case\u2026 This experience makes it\\njust worse for me, part of this post may be also influenced by this fact.\\n\\n### Rust in Linux\\n\\n:::caution\\n\\nAs someone who has seen the way Linux kernel is built in the RHEL ecosystem, how\\ncomplex the whole thing is and how much resources you need to proceed, I have\\nvery strong opinions on this topic.\\n\\n:::\\n\\nIt took years of work to even \u201cincorporate\u201d Rust into the Linux codebase, just\\nto get the \u201cHello World!\u201d. I don\'t have anything against the idea of writing\\ndrivers in the Rust, I bet it can catch a lot of common mistakes, but still\\nintroducing Rust to the kernel is another step to enlarge the monster.\\n\\nI have to admit though that the _Apple GPU_ driver for Linux written in Rust is\\nquite impressive. Apart from that there are not so many benefits, yet\u2026\\n\\n## Packaging\\n\\nI\'ll divide the packaging into the packaging of the language itself and the\\nprograms written in Rust.\\n\\nLet\'s start with the `cargo` itself though. Package managers of the languages\\nusually get a lot of hate (you can take `npm` or `pip` as examples[^1]). If\\nyou\'ve ever tried out Rust, I bet you already know where I\'m going with this.\\nYes, I mean the compilation times, or even Cargo downloading _whole_ index of\\ncrates just so you can update that one dependency (and 3 millions of indirect\\ndeps). When I was doing AoC \u201822 in Rust, I\'ve set up `sccache` right away on the\\nfirst day.\\n\\nLet\'s move to the packaging of the Rust itself, it\'s tedious. Rust has a very\\nfast development cycle and doesn\'t even try to make the builds backward\\ncompatible. If there is a new release of Rust, there is a very high chance that\\nyou cannot build that release with anything other than **the latest** Rust\\nrelease. If you have ever touched the packaging, you know that this is something\\nthat can cause a lot of problems, cause you need the second-to-latest version to\\ncompile the latest version, don\'t forget that this applies inductively\u2026 People\\nrunning _Gentoo_ could tell you a lot about this.\\n\\n:::info\\n\\nCompiling the compilers takes usually more time than compiling the kernel\\nitself\u2026\\n\\n:::\\n\\nI cannot speak about packaging of Rust programs in other than RHEL-based\\ndistros, though I can speak about RHEL ecosystem. Fedora packaging guidelines\\nspecify that you need to build each and every dependency of the program\\nseparately. I wanted to try out _AlmaLinux_ and install Alacritty there and I\\nfailed miserably. The solution that worked, consisted of ignoring the packaging\\nguidelines, running `cargo build` and consuming the binaries afterwards.\\nDependencies of the Rust programs are of a similar nature as JS dependencies.\\n\\n> I\'m tipping my fedora[^2] in the general direction of the maintainers of Rust\\n> packages in RHEL ecosystem. I wouldn\'t be able to do this without losing my\\n> sanity.\\n\\n## Likes\\n\\nIf you\'ve come all the way here and you\'re a Rustacean, I believe I\'ve managed\\nto get your blood boiling, so it\'s time to finish this off by stuff I like about\\nRust. I doubt I will be able to cover everything, but I can try at least. You\\nhave to admit it\'s much easier to remember the bad stuff as opposed to the good.\\n:wink:\\n\\n### Workflow and toolchain\\n\\nI prefered using Rust for the _Advent of Code_ and _Codeforces_ as it provides\\na rather easy way to test the solutions before running them with the challenge\\ninput (or test runner). I can give an example from the _Advent of Code_:\\n\\n```rust\\nuse aoc_2023::*;\\n\\ntype Output1 = i32;\\ntype Output2 = Output1;\\n\\nstruct DayXX {}\\nimpl Solution for DayXX {\\n fn new>(pathname: P) -> Self {\\n let lines: Vec = file_to_lines(pathname);\\n\\n todo!()\\n }\\n\\n fn part_1(&mut self) -> Output1 {\\n todo!()\\n }\\n\\n fn part_2(&mut self) -> Output2 {\\n todo!()\\n }\\n}\\n\\nfn main() -> Result<()> {\\n DayXX::main()\\n}\\n\\ntest_sample!(day_XX, DayXX, 42, 69);\\n```\\n\\nThis was the skeleton I\'ve used and the macro at the end is my own creation that\\nexpands to:\\n\\n```rust\\n#[cfg(test)]\\nmod day_XX {\\n use super::*;\\n\\n #[test]\\n fn part_1() {\\n let path = DayXX::get_sample(1);\\n let mut day = DayXX::new(path);\\n assert_eq!(day.part_1(), 42);\\n }\\n\\n #[test]\\n fn part_2() {\\n let path = DayXX::get_sample(2);\\n let mut day = DayXX::new(path);\\n assert_eq!(day.part_2(), 69);\\n }\\n}\\n```\\n\\nWhen you\'re solving the problem, all you need to do is switch between\\n`cargo test` and `cargo run` to check the answer to either sample or the\\nchallenge input itself.\\n\\nIntroduce [bacon] and it gets even better. Bacon is a CLI tool that wraps around\\nthe `cargo` and allows you to check, run, lint or run tests on each file save.\\nIt\'s a very pleasant thing for a so-called _compiler-assisted_ development.\\n\\nSpeaking of linting from within the bacon, you cannot leave out the [clippy].\\nNot only it can whip your ass because of errors, but it can also produce a lot\\nof helpful suggestions, for example passing slices by borrow instead of\\nborrowing the `Vec` itself when you don\'t need it.\\n\\n### Standard library\\n\\nThere\'s **a lot** included in the standard library. It almost feels like you\\nhave all you need[^4]. I like placeholders (like `todo!()`, `unreachable!()`,\\n`unimplemented!()`) to the extent of\\n[implementing](/cpp/exceptions-and-raii/placeholders) them as exceptions in C++.\\n\\nYou can find almost anything. Though you can also hit some very weird issues\\nwith some of the nuances of the type system.\\n\\n### `unsafe`\\n\\nThis might be something that people like to avoid as much as possible. However I\\nthink that forming a habit of commenting posibly unsafe operations in **any**\\nlanguage is a good habit, as I\'ve mentioned above. You should be able to argue\\nwhy you can do something safely, even if the compiler is not kicking your ass\\nbecause of it.\\n\\nExcerpt of such comment from work:\\n\\n```py\\n# SAFETY: Taking first package instead of specific package should be\\n# safe, since we have put a requirement on \xbbone\xab \u2039upstream_project_url\u203a\\n# per Packit config, i.e. even if we\'re dealing with a monorepo, there\\n# is only \xbbone\xab upstream. If there is one upstream, there is only one\\n# set of GPG keys that can be allowed.\\nreturn self.downstream_config.packages[\\n self.downstream_config._first_package\\n].allowed_gpg_keys\\n```\\n\\n### Traits\\n\\nOne of the other things I like are the traits. They are more restrictive than\\ntemplates or concepts in C++, but they\'re doing their job pretty good. If you\\nare building library and require multiple traits to be satisfied it means a lot\\nof copy-paste, but that\'s soon to be fixed by the [trait aliases].\\n\\n:::tip Comparing to other languages\\n\\nOn Wikipedia I\'ve seen trait being defined as a more restrictive type class as\\nyou may know it from the Haskell for example. C++ isn\'t behind either with its\\n_constraints and concepts_. I would say that we can order them in the following\\norder based on the complexity they can express:\\n\\n```\\nRust\'s trait < Haskell\'s type class < C++\'s concept\\n```\\n\\n:::\\n\\nYou can also hit some issues, like me when trying to support conversions between\\nunderlying numeric types of a 2D vectors or support for using an operator from\\nboth sides (I couldn\'t get `c * u` to work in the same way as `u * c` because\\nthe first one requires you to implement the trait of a built-in type).\\n\\n:::warning Implementation\\n\\nImplementing traits lies in\\n\\n```rust\\nimpl SomeTrait for SomeStruct {\\n // implementation goes here\\n}\\n```\\n\\nOne of the things I **would love to** see is being able to define the helper\\nfunctions within the same block. As of now, the only things allowed are the ones\\nthat are required by the trait, which in the end results in a randomly lying\\nfunctions around (or in a implementation of the structure itself). I don\'t like\\nthis mess at all\u2026\\n\\n:::\\n\\n### Influence of functional paradigm\\n\\nYou can see a big influence of the functional paradigm. Not only in iterators,\\nbut also in the other parts of the language. For example I prefer `Option` or\\n`Result` to `null`s and exceptions. Pattern matching together with\\ncompiler both enforces handling of the errors and rather user-friendly way of\\ndoing it.\\n\\nNot to mention `.and_then()` and such. However spending most of the time with\\nthe AoC you get pretty annoyed of the repetitive `.unwrap()` during parsing,\\nsince you are guaranteed correct input.\\n\\n### Macros\\n\\nMacros are a very strong pro of the Rust. And no, we\'re not going to talk about\\nthe procedural macros\u2026\\n\\nAs I\'ve shown above I\'ve managed to \u201ctame\u201d a lot of copy-paste in the tests for\\nthe AoC by utilizing a macro that generated a very basic template for the tests.\\n\\nAs I have mentioned the traits above, I cannot forget to give props to `derive`\\nmacro that allows you to \u201cdeduce\u201d the default implementation. It is very helpful\\nfor a tedious tasks like implementing `Debug` (for printing out the structures)\\nor comparisons, though with the comparisons you need to be careful about the\\ndefault implementation, it has already bitten me once or twice.\\n\\n## Summary\\n\\nOverall there are many things about the Rust I like and would love to see them\\nimplemented in other languages. However there are also many things I don\'t like.\\nNothing is **exclusively** black and white.\\n\\n[advent of code]: https://adventofcode.com\\n[bacon]: https://dystroy.org/bacon/\\n[clippy]: https://github.com/rust-lang/rust-clippy\\n[codeforces]: https://codeforces.com\\n[trait aliases]: https://github.com/rust-lang/rfcs/blob/master/text/1733-trait-alias.md\\n\\n[^1]:\\n not to even mention multiple different packaging standards Python has, which\\n is borderline https://xkcd.com/927/\\n\\n[^2]: pun intended\\n[^3]: It\'s not that easy with the Rust compiler, but OK\u2026\\n[^4]:\\n unlike Python where there\'s whole universe in the language itself, yet there\\n are essential things not present\u2026"},{"id":"/2023/08/02/copr","metadata":{"permalink":"/blog/2023/08/02/copr","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2023-08-02-copr.md","source":"@site/blog/2023-08-02-copr.md","title":"How can Copr help with broken dependencies","description":"Copr comes to save you when maintainer doesn\'t care.","date":"2023-08-02T00:00:00.000Z","formattedDate":"August 2, 2023","tags":[{"label":"\ud83c\udfed","permalink":"/blog/tags/\ud83c\udfed"},{"label":"red-hat","permalink":"/blog/tags/red-hat"},{"label":"copr","permalink":"/blog/tags/copr"},{"label":"admin","permalink":"/blog/tags/admin"},{"label":"vps","permalink":"/blog/tags/vps"}],"readingTime":3.44,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. your opinionated admin","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"How can Copr help with broken dependencies","description":"Copr comes to save you when maintainer doesn\'t care.","date":"2023-08-02T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. your opinionated admin"}],"tags":["\ud83c\udfed","red-hat","copr","admin","vps"]},"unlisted":false,"prevItem":{"title":"Mixed feelings on Rust","permalink":"/blog/2024/01/28/rust-opinion"},"nextItem":{"title":"4th week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/4th-week"}},"content":"When you decide to run Fedora on your VPS, you might get screwed over by using\\nrandom repositories\u2026\\n\\n\x3c!--truncate--\x3e\\n\\nWhen I \u201creserved\u201d my VPS[^1] back in June \'20, I slapped Fedora on it without\\nthinking. I bet 99% of people would say that I\'m crazy for doing such thing[^2],\\n**BUT** I\'ve been using Fedora on my PCs for some time already and it felt very\\nstable and natural to just use, even for VPS.\\n\\nOne of the first things I\'ve done was setting up a mail server. You may guess\\nwhat\'s the fun part about having a mail server\u2026 Yes, it\'s all the spam you\\nreceive and only then you realize how much \u201ccrap\u201d gets filtered on free mail\\nservices. To battle this problem I chose to use\\n[rspamd](https://github.com/rspamd/rspamd) that had CentOS support, but someone\\nhad a [Copr](https://copr.fedorainfracloud.org/) repository that I used to\\ninstall it.\\n\\n## How does Copr repositories work?\\n\\nIf you have ever used Ubuntu, you might be familiar with the concept since it is\\nvery close to [PPAs](https://help.ubuntu.com/community/PPA).\\n\\ntl;dr of the whole process consists of\\n\\n1. enabling the Copr repository, and\\n2. installing the desired package.\\n\\nSo in shell you would do\\n\\n```\\n# dnf copr enable \u2039copr-repository\u203a\\n# dnf install \u2039package-from-the-repository\u203a\\n```\\n\\nAnd\u2026 that\'s it! Nothing else needed! Simple, right? And literally same process\\nas you would do for the PPA.\\n\\n:::tip AUR\\n\\nOn the other hand, if you are familiar with the archLinux, you definitely know\\nAUR and what it can do for you. Copr repository is pretty similar, but the\\npackages are prebuilt in Copr and Copr repositories can carry the required\\ndependencies for said packages, which simplifies the distribution, and can even\\nhelp with installing singular packages (when you just need the dependency, not\\neverything).\\n\\n:::\\n\\n## My issue\\n\\nNow you might wonder how would I use it on my VPS. It\'s rather simple, once in\\n6 months a new Fedora release comes out. And you need to upgrade to newer\\nrelease\u2026 You don\'t need to do it right away and for such setup it probably isn\'t\\neven recommended.\\n\\n:::tip\\n\\nFedora releases are supported for a year, i.e. they live 6 months till the next\\nrelease and then another 6 months till another release.\\n\\nSome people prefer to run one version \u201cbehind\u201d. If you ever decide to run it on\\nyour home server or in a similar setup, it might be a pretty good idea to\\nfollow. I\'m using the \u201clatest greatest\u201d, cause why not :smile:\\n\\nOne way or another, you still need to bump the release every six months, unless\\nyou\'d bump 2 releases at once every year, which would be a decision, since, at\\nleast I, cannot see any benefits in it\u2026 You don\'t go for \u201cstability\u201d, cause once\\na year you switch to the latest release and then, before you bump, you use one\\nyear old software, so you\'re not even using the latest.\\n\\n:::\\n\\nFast-forward 2 years in the future, new Fedora release came out (October \'22)\\nand I was doing an upgrade. Dependencies of the rspamd have been updated and\\nrspamd builds in Copr have failed and no one fixed it. Cool, so now I can\\nupgrade, but can either ignore the dependencies or uninstall the rspamd\u2026\\n\\n## How can Copr help?\\n\\nI have managed to find\\n[specfile](https://github.com/rspamd/rspamd/blob/master/rpm/rspamd.spec) for the\\nrspamd package that they use for CentOS. There were some files apart from the\\nspecfile, so I had to make an SRPM locally and then\u2026 I just uploaded the SRPM\\nto the Copr to\\n[build](https://copr.fedorainfracloud.org/coprs/mfocko/rspamd/build/5046567/)\\nan RPM.\\n\\nI have switched the previous Copr repository for rspamd with my own and happily\\nproceeded with the upgrade.\\n\\n## Conclusion\\n\\nCopr is heavily used for testing builds on the upstream with\\n[Packit](https://packit.dev). However, as you can see, it is possible to use it\\n**very well** for packaging your own stuff and avoiding issues (such as the one\\nI have described above), if need be.\\n\\n[^1]: [vpsFree.cz](https://vpsfree.cz)\\n[^2]:\\n Even though I\'ve been running archLinux on some Raspberry Pi\'s and also\\n on one of my \u201chome servers\u201d, before getting the VPS. You could say I like\\n to live on the edge\u2026"},{"id":"aoc-2022/4th-week","metadata":{"permalink":"/blog/aoc-2022/4th-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/04-week-4.md","source":"@site/blog/aoc-2022/04-week-4.md","title":"4th week of Advent of Code \'22 in Rust","description":"Surviving fourth week in Rust.","date":"2023-07-07T15:14:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":15.175,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"4th week of Advent of Code \'22 in Rust","description":"Surviving fourth week in Rust.","date":"2023-07-07T15:14","slug":"aoc-2022/4th-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"How can Copr help with broken dependencies","permalink":"/blog/2023/08/02/copr"},"nextItem":{"title":"3rd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/3rd-week"}},"content":"Let\'s go through the fourth week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 22: Monkey Map](https://adventofcode.com/2022/day/22)\\n\\n:::info tl;dr\\n\\nSimulating a movement on a 2D map with given instructions. Map becomes a cube in\\nthe 2nd part\u2026\\n\\n:::\\n\\n:::caution Rant\\n\\nThis was the most obnoxious problem of this year\u2026 and a lot of Rust issues have\\nbeen hit.\\n\\n:::\\n\\n### Solution\\n\\nIt seems like a very simple problem to solve, but with very obnoxious changes in\\nthe 2nd part and also it\'s relatively hard to decompose \xbbproperly\xab.\\n\\n#### Column iterator\\n\\nIn the first part of the problem it was needed to know the boundaries of each\\nrow and column, since I stored them in `Vec>` and padded with spaces\\nto ensure I have a rectangular 2D \u201carray\u201d. However when you wanted to go through\\neach row and column to determine the boundaries, it was very easy to do for the\\nrows (cause each row is a `Vec` element), but not for the columns, since they\\nspan multiple rows.\\n\\nFor this use case I have implemented my own _column iterator_:\\n\\n```rust\\npub struct ColumnIterator<\'a, T> {\\n map: &\'a [Vec],\\n column: usize,\\n\\n i: usize,\\n}\\n\\nimpl<\'a, T> ColumnIterator<\'a, T> {\\n pub fn new(map: &\'a [Vec], column: usize) -> ColumnIterator<\'a, T> {\\n Self { map, column, i: 0 }\\n }\\n}\\n\\nimpl<\'a, T> Iterator for ColumnIterator<\'a, T> {\\n type Item = &\'a T;\\n\\n fn next(&mut self) -> Option {\\n if self.i >= self.map.len() {\\n return None;\\n }\\n\\n self.i += 1;\\n Some(&self.map[self.i - 1][self.column])\\n }\\n}\\n```\\n\\nGiven this piece of an iterator, it is very easy to factor out the common\\nfunctionality between the rows and columns into:\\n\\n```rust\\nlet mut find_boundaries = |constructor: fn(usize) -> Orientation,\\n iterator: &mut dyn Iterator,\\n upper_bound,\\n i| {\\n let mut first_non_empty = iterator.enumerate().skip_while(|&(_, &c)| c == \' \');\\n let start = first_non_empty.next().unwrap().0 as isize;\\n\\n let mut last_non_empty = first_non_empty.skip_while(|&(_, &c)| c != \' \');\\n let end = last_non_empty.next().unwrap_or((upper_bound, &\'_\')).0 as isize;\\n\\n boundaries.insert(constructor(i), start..end);\\n};\\n```\\n\\nAnd then use it as such:\\n\\n```rust\\n// construct all horizontal boundaries\\n(0..map.len()).for_each(|row| {\\n find_boundaries(\\n Orientation::horizontal,\\n &mut map[row].iter(),\\n map[row].len(),\\n row,\\n );\\n});\\n\\n// construct all vertical boundaries\\n(0..map[0].len()).for_each(|col| {\\n find_boundaries(\\n Orientation::vertical,\\n &mut ColumnIterator::new(&map, col),\\n map.len(),\\n col,\\n );\\n});\\n```\\n\\n#### Walking around the map\\n\\nOnce the 2nd part got introduced, you start to think about a way how not to\\ncopy-paste a lot of stuff (I haven\'t avoided it anyways\u2026). In this problem, I\'ve\\nchosen to introduce a trait (i.e. _interface_) for 2D and 3D walker.\\n\\n```rust\\ntrait Wrap: Clone {\\n type State;\\n\\n // simulation\\n fn is_blocked(&self) -> bool;\\n fn step(&mut self, steps: isize);\\n fn turn_left(&mut self);\\n fn turn_right(&mut self);\\n\\n // movement\\n fn next(&self) -> (Self::State, Direction);\\n\\n // final answer\\n fn answer(&self) -> Output;\\n}\\n```\\n\\nEach walker maintains its own state and also provides the functions that are\\nused during the simulation. The \u201cpromised\u201d methods are separated into:\\n\\n- _simulation_-related: that are used during the simulation from the `.fold()`\\n- _movement_-related: just a one method that holds most of the logic differences\\n between 2D and 3D\\n- _final answer_: which extracts the _proof of solution_ from the\\n implementation-specific walker\\n\\nBoth 2D and 3D versions borrow the original input and therefore you must\\nannotate the lifetime of it:\\n\\n```rust\\nstruct Wrap2D<\'a> {\\n input: &\'a Input,\\n position: Position,\\n direction: Direction,\\n}\\nimpl<\'a> Wrap2D<\'a> {\\n fn new(input: &\'a Input) -> Wrap2D<\'a> {\\n// \u2026\\n```\\n\\n#### Problems\\n\\nI have used a lot of closures for this problem and once I introduced a parameter\\nthat was of unknown type (apart from the fact it implements a specific trait), I\\ngot suggested a \u201cfix\u201d for the compilation error that resulted in something that\\nwas not possible to parse, cause it, more than likely, violated the grammar.\\n\\nIn a similar fashion, I have been suggested changes that led to a code that\\ndidn\'t make sense by just looking at it (there was no need to try the changes),\\nfor example one suggested change in the closure parameter caused disapperance of\\nthe parameter name. :smile:\\n\\n#### Clippy\\n\\nI have to admit that Clippy was rather helpful here, I\'ll include two examples\\nof rather smart suggestions.\\n\\nWhen writing the parsing for this problem, the first thing I have spotted on the\\n`char` was the `.is_digit()` function that takes a radix as a parameter. Clippy\\nnoticed that I use `radix = 10` and suggested switching to `.is_ascii_digit()`\\nthat does exactly the same thing:\\n\\n```diff\\n- .take_while(|c| c.is_digit(10))\\n+ .take_while(|c| c.is_ascii_digit())\\n```\\n\\nAnother useful suggestion appeared when working with the iterators and I wanted\\nto get the $n$-th element from it. You know the `.skip()`, you know the\\n`.next()`, just \u201cslap\u201d them together and we\'re done for :grin: Well, I got\\nsuggested to use `.nth()` that does exactly the combination of the two mentioned\\nmethods on iterators:\\n\\n```diff\\n- match it.clone().skip(skip).next().unwrap() {\\n+ match it.clone().nth(skip).unwrap() {\\n```\\n\\n## [Day 23: Unstable Diffusion](https://adventofcode.com/2022/day/23)\\n\\n:::info tl;dr\\n\\nSimulating movement of elves around with a set of specific rules.\\n\\n:::\\n\\n### Solution\\n\\nThere\'s not much to mention since it\'s just a cellular automaton simulation\\n(even though the AoC rules for cellular automatons usually get out of hand\\n:wink:).\\n\\nAlthough I had a need to determine boundaries of the elves\' positions and ended\\nup with a nasty DRY violation. Knowing that you you\'re looking for maximum and\\nminimum that are, of course, exactly the same except for initial values and\\ncomparators, it looks like a rather simple fix, but typing in Rust is something\\nelse, right? In the end I settled for a function that computes both boundaries\\nwithout any duplication while using a closure:\\n\\n```rust\\nfn get_bounds(positions: &Input) -> (Vector2D, Vector2D) {\\n let f = |init, cmp: &dyn Fn(isize, isize) -> isize| {\\n positions\\n .iter()\\n .fold(Vector2D::new(init, init), |acc, elf| {\\n Vector2D::new(cmp(acc.x(), elf.x()), cmp(acc.y(), elf.y()))\\n })\\n };\\n\\n (f(isize::MAX, &min::), f(isize::MIN, &max::))\\n}\\n```\\n\\nThis function returns a pair of 2D vectors that represent opposite points of the\\nbounding rectangle of all elves.\\n\\nYou might ask why would we need a closure and the answer is that `positions`\\ncannot be captured from within the nested function, only via closure. One more\\nfun fact on top of that is the type of the comparator\\n\\n```rust\\n&dyn Fn(isize, isize) -> isize\\n```\\n\\nOnce we remove the `dyn` keyword, compiler yells at us and also includes a way\\nhow to get a more thorough explanation of the error by running\\n\\n $ rustc --explain E0782\\n\\nwhich shows us\\n\\n Trait objects must include the `dyn` keyword.\\n\\n Erroneous code example:\\n\\n ```\\n trait Foo {}\\n fn test(arg: Box) {} // error!\\n ```\\n\\n Trait objects are a way to call methods on types that are not known until\\n runtime but conform to some trait.\\n\\n Trait objects should be formed with `Box`, but in the code above\\n `dyn` is left off.\\n\\n This makes it harder to see that `arg` is a trait object and not a\\n simply a heap allocated type called `Foo`.\\n\\n To fix this issue, add `dyn` before the trait name.\\n\\n ```\\n trait Foo {}\\n fn test(arg: Box) {} // ok!\\n ```\\n\\n This used to be allowed before edition 2021, but is now an error.\\n\\n:::danger Rant\\n\\nNot all of the explanations are helpful though, in some cases they might be even\\nmore confusing than helpful, since they address _very simple_ use cases.\\n\\nAs you can see, even in this case there are two sides to the explanations:\\n\\n- it explains why you need to use `dyn`, but\\n- it still mentions that trait objects need to be heap-allocated via `Box`\\n that, as you can see in my snippet, **does not** apply here :smile: IMO it\'s\\n caused by the fact that we are borrowing it and therefore we don\'t need to\\n care about the size or whereabouts of it.\\n\\n:::\\n\\n:::info C++ parallel\\n\\nIf you dive into the explanation above, you can notice that the `Box`\\npattern is very helpful for using types that are not known during compile-time.\\nYou would use a very similar approach in C++ when parsing some data structure\\nfrom input (let\'s say JSON for example).\\n\\nOn the other hand, in this case, it doesn\'t really make much sense, cause you\\ncan clearly see that the types **are known** during the compile-time, which in\\nC++ could be easily resolved by templating the helper function.\\n\\n:::\\n\\n## [Day 24: Blizzard Basin](https://adventofcode.com/2022/day/24)\\n\\n:::info tl;dr\\n\\nNavigating your way through a basin with series of blizzards that move around\\nyou as you move.\\n\\n:::\\n\\n:::caution\\n\\nIt\'s second to last day and I went \u201c_bonkers_\u201d on the Rust :smile: Proceed to\\nread _Solution_ part on your own risk.\\n\\n:::\\n\\n### Solution\\n\\nYou are given a map with blizzards all over the place and you\'re supposed to\\nfind the minimum time it requires you to walk through the basin without getting\\nin any of the blizzards.\\n\\n#### Breakdown\\n\\nRelatively simple, yet a bit annoying, approach can be taken. It\'s technically\\na shortest-path algorithm implementation with some relaxation restrictions and\\nbeing able to stay on one position for some time, so each _vertex_ of the graph\\nis determined by the position on the map and the _timestamp_. I have chosen to\\nuse `Vector3D`, since `x` and `y` attributes can be used for the position\\nand, well, let\'s use `z` for a timestamp, cause why not, right? :wink:\\n\\n#### Evaluating the blizzards\\n\\n:::caution\\n\\nI think that this is the most perverted abuse of the traits in the whole 4 weeks\\nof AoC in Rust\u2026\\n\\n:::\\n\\nThe blizzards move along their respective directions in time and loop around in\\ntheir respective row/column. Each vertex holds position **and** time, so we can\\n_just_ index the basin with the vertex itself, right? Yes, we can :smiling_imp:\\n\\n:::tip Fun fact\\n\\nWhile writing this part, I\'ve recognized unnecessary verbosity in the code and\\ncleaned it up a bit. The changed version is shown here and the original was just\\nmore verbose.\\n\\n:::\\n\\nI\'ll skip the boring parts of checking bounds and entry/exit of the basin :wink:\\nWe can easily calculate positions of the blizzards using a modular arithmetics:\\n\\n```rust\\nimpl Index for Basin {\\n type Output = char;\\n\\n fn index(&self, index: Position) -> &Self::Output {\\n // \u2039skipped boring parts\u203a\\n\\n // We need to account for the loops of the blizzards\\n let width = self.cols - 2;\\n let height = self.rows - 2;\\n\\n let blizzard_origin = |size, d, t, i| ((i - 1 + size + d * (t % size)) % size + 1) as usize;\\n [\\n (\\n index.y() as usize,\\n blizzard_origin(width, -1, index.z(), index.x()),\\n \'>\',\\n ),\\n (\\n index.y() as usize,\\n blizzard_origin(width, 1, index.z(), index.x()),\\n \'<\',\\n ),\\n (\\n blizzard_origin(height, -1, index.z(), index.y()),\\n index.x() as usize,\\n \'v\',\\n ),\\n (\\n blizzard_origin(height, 1, index.z(), index.y()),\\n index.x() as usize,\\n \'^\',\\n ),\\n ]\\n .iter()\\n .find_map(|&(y, x, direction)| {\\n if self.map[y][x] == direction {\\n Some(&self.map[y][x])\\n } else {\\n None\\n }\\n })\\n .unwrap_or(&\'.\')\\n }\\n}\\n```\\n\\nAs you can see, there is an expression for calculating the original position and\\nit\'s used multiple times, so why not take it out to a lambda, right? :wink:\\n\\nI couldn\'t get the `rustfmt` to format the `for`-loop nicely, so I\'ve just\\ndecided to go with iterating over an elements of a slice. I have used, once\\nagain, a combination of two functions (`find_map` in this case) to do 2 things\\nat once and at the end, if we haven\'t found any blizzard, we just return the\\nempty space.\\n\\nI think it\'s a very _nice_ (and naughty) way how to use the `Index` trait, don\'t\\nyou think?\\n\\n#### Shortest-path algorithm\\n\\nFor the shortest path you can choose and adjust any of the common shortest-path\\nalgorithms, in my case, I have decided to use [_A\\\\*_] instead of Dijkstra\'s\\nalgorithm, since it better reflects the _cost_ function.\\n\\n:::info Comparison of costs\\n\\nWith the Dijkstra\'s algorithm I would proceed with the `time` attribute used as\\na priority for the queue.\\n\\nWhereas with the _A\\\\*_, I have chosen to use both time and Manhattan distance\\nthat promotes vertices closer to the exit **and** with a minimum time taken.\\n\\n:::\\n\\nCost function is, of course, a closure :wink:\\n\\n```rust\\nlet cost = |p: Position| p.z() as usize + exit.y().abs_diff(p.y()) + exit.x().abs_diff(p.x());\\n```\\n\\nAnd also for checking the possible moves from the current vertex, I have\\nimplemented, yet another, closure that yields an iterator with the next moves:\\n\\n```rust\\nlet next_positions = |p| {\\n [(0, 0, 1), (0, -1, 1), (0, 1, 1), (-1, 0, 1), (1, 0, 1)]\\n .iter()\\n .filter_map(move |&(x, y, t)| {\\n let next_p = p + Vector3D::new(x, y, t);\\n\\n if basin[next_p] == \'.\' {\\n Some(next_p)\\n } else {\\n None\\n }\\n })\\n};\\n```\\n\\n#### Min-heap\\n\\nIn this case I had a need to use the priority queue taking the elements with the\\nlowest cost as the prioritized ones. Rust only offers you the [`BinaryHeap`] and\\nthat is a max-heap. One of the ways how to achieve a min-heap is to put the\\nelements in wrapped in a [`Reverse`] (as is even showed in the linked [docs of\\nthe `BinaryHeap`]). However the wrapping affects the type of the heap and also\\npopping the most prioritized elements yields values wrapped in the `Reverse`.\\n\\nFor this purpose I have just taken the max-heap and wrapped it as a whole in a\\nseparate structure providing just the desired methods:\\n\\n```rust\\nuse std::cmp::{Ord, Reverse};\\nuse std::collections::BinaryHeap;\\n\\npub struct MinHeap {\\n heap: BinaryHeap>,\\n}\\n\\nimpl MinHeap {\\n pub fn new() -> MinHeap {\\n MinHeap {\\n heap: BinaryHeap::new(),\\n }\\n }\\n\\n pub fn push(&mut self, item: T) {\\n self.heap.push(Reverse(item))\\n }\\n\\n pub fn pop(&mut self) -> Option {\\n self.heap.pop().map(|Reverse(x)| x)\\n }\\n}\\n\\nimpl Default for MinHeap {\\n fn default() -> Self {\\n Self::new()\\n }\\n}\\n```\\n\\nRest is just the algorithm implementation which is not that interesting.\\n\\n## [Day 25: Full of Hot Air](https://adventofcode.com/2022/day/25)\\n\\n:::info tl;dr\\n\\nPlaying around with a numbers in a _special_ base.\\n\\n:::\\n\\nGetting flashbacks to the _IB111 Foundations of Programming_\u2026 Very nice \u201cproblem\u201d\\nwith a rather easy solution, as the last day always seems to be.\\n\\n### Solution\\n\\nImplementing 2 functions, converting from the _SNAFU base_ and back to the _SNAFU_\\n_base_ representation. Let\'s do a bit more though! I have implemented two functions:\\n\\n- `from_snafu`\\n- `to_snafu`\\n\\nNow it is apparent that all I do is number to string and string to number. Hmm\u2026\\nthat sounds familiar, doesn\'t it? Let\'s introduce a structure for the SNAFU numbers\\nand implement the traits that we need.\\n\\nLet\'s start with a structure:\\n\\n```rust\\n#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]\\nstruct SNAFU {\\n value: i64,\\n}\\n```\\n\\n#### Converting from `&str`\\n\\nWe will start by implementing the `FromStr` trait that will help us parse our input.\\nThis is rather simple, I can just take the `from_snafu` function, copy-paste it\\ninto the `from_str` method and the number I get will be wrapped in `Result` and\\n`SNAFU` structure.\\n\\n#### Converting to `String`\\n\\nThis is more fun. In some cases you need to implement only one trait and others\\nare automatically implemented using that one trait. In our case, if you look in\\nthe documentation, you can see that `ToString` trait is automatically implemented\\nfor any type that implements `Display` trait.\\n\\nLet\'s implement the `Display` trait then. We should be able to use the `to_snafu`\\nfunction and just take the `self.value` from the `SNAFU` structure.\\n\\nAnd for the convenience of tests, we can also implement a rather simple `From`\\ntrait for the `SNAFU`.\\n\\n#### Adjusting the code\\n\\nAfter those changes we need to adjust the code and tests.\\n\\nParsing of the input is very easy, before we have used the lines, now we parse\\neverything:\\n\\n```diff\\n fn parse_input>(pathname: P) -> Input {\\n- file_to_lines(pathname)\\n+ file_to_structs(pathname)\\n }\\n```\\n\\nPart 1 needs to be adjusted a bit too:\\n\\n```diff\\n fn part_1(input: &Input) -> Output {\\n- to_snafu(input.iter().map(|s| from_snafu(s)).sum())\\n+ SNAFU::from(input.iter().map(|s| s.value).sum::()).to_string()\\n }\\n```\\n\\nYou can also see that it simplifies the meaning a bit and it is more explicit than\\nthe previous versions.\\n\\nAnd for the tests:\\n\\n```diff\\n #[test]\\n fn test_from() {\\n- for (n, s) in EXAMPLES.iter() {\\n- assert_eq!(from_snafu(s), *n);\\n+ for (&n, s) in EXAMPLES.iter() {\\n+ assert_eq!(s.parse::().unwrap().value, n);\\n }\\n }\\n\\n #[test]\\n fn test_to() {\\n- for (n, s) in EXAMPLES.iter() {\\n- assert_eq!(to_snafu(*n), s.to_string());\\n+ for (&n, s) in EXAMPLES.iter() {\\n+ assert_eq!(SNAFU::from(n).to_string(), s.to_string());\\n }\\n```\\n\\n## Summary\\n\\nLet\'s wrap the whole thing up! Keeping in mind both AoC and the Rust\u2026\\n\\n![Finished advent calendar :smile:](/img/blog/aoc-2022/04-week-4/calendar.png)\\n\\n### Advent of Code\\n\\nThis year was quite fun, even though most of the solutions and posts came in\\nlater on (_cough_ in \'23 _cough_). Day 22 was the most obnoxious one\u2026 And also\\nit feels like I used priority queues and tree data structures **a lot** :eyes:\\n\\n### with Rust\\n\\nI must admit that a lot of compiler warnings and errors were very useful. Even\\nthough I still found some instances where they didn\'t help at all or cause even\\nworse issues than I had. Compilation times have been addressed with the caching.\\n\\nBuilding my first tree data structure in Rust has been a very \u201cinteresting\u201d\\njourney. Being able to write a more generic BFS algorithm that allows you to not\\nduplicate code while still mantaining the desired functionality contributes to\\na very readable code.\\n\\nI am definitely much more aware of the basic things that bloated Python is\\nmissing, yet Rust has them\u2026\\n\\nUsing explicit types and writing down placeholder functions with `todo!()`\\nmacros is very pleasant, since it allows you to easily navigate the type system\\nduring the development when you don\'t even need to be sure how are you going to\\nput the smaller pieces together.\\n\\nI have used a plethora of traits and also implemented some of them to either be\\nidiomatic, or exploit the syntactic sugar they offer. Deriving the default trait\\nimplementation is also very helpful in a lot of cases, e.g. debugging output,\\ncopying, equality comparison, etc.\\n\\nI confess to touching more \u201ccursed\u201d parts of the Rust, such as macros to\\ndeclutter the copy-paste for tests or writing my own structures that need to\\ncarry a lifetime for their own fields.\\n\\ntl;dr Relatively pleasant language until you hit brick wall :wink:\\n\\n---\\n\\nSee you next year! Maybe in Rust, maybe not :upside_down_face:\\n\\n[_advent of code_]: https://adventofcode.com\\n[_a\\\\*_]: https://en.wikipedia.org/wiki/A*_search_algorithm\\n[`binaryheap`]: https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html\\n[`reverse`]: https://doc.rust-lang.org/std/cmp/struct.Reverse.html\\n[docs of the `binaryheap`]: https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html#min-heap"},{"id":"aoc-2022/3rd-week","metadata":{"permalink":"/blog/aoc-2022/3rd-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/03-week-3.md","source":"@site/blog/aoc-2022/03-week-3.md","title":"3rd week of Advent of Code \'22 in Rust","description":"Surviving third week in Rust.","date":"2023-07-06T21:00:00.000Z","formattedDate":"July 6, 2023","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":11.57,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"3rd week of Advent of Code \'22 in Rust","description":"Surviving third week in Rust.","date":"2023-07-06T21:00","slug":"aoc-2022/3rd-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"4th week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/4th-week"},"nextItem":{"title":"Sort the matrix diagonally","permalink":"/blog/leetcode/sort-diagonally"}},"content":"Let\'s go through the third week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 15: Beacon Exclusion Zone](https://adventofcode.com/2022/day/15)\\n\\n:::info tl;dr\\n\\nTriangulating a distress beacon based on the information from the sensors.\\n\\n:::\\n\\n### Solution\\n\\nRelatively easy thing to implement, no major Rust issues hit.\\n\\n## [Day 16: Proboscidea Volcanium](https://adventofcode.com/2022/day/16)\\n\\n:::info tl;dr\\n\\nFinding a max flow in a graph given some time constraints.\\n\\n:::\\n\\n### Solution\\n\\nI have used some interesting things to implement this and make it easier for me.\\n\\n#### Indexing in graph\\n\\nI have come across a situation where I needed to keep more information regarding\\nthe graph\u2026 In that case you can, of course, create a structure and keep it in,\\nbut once you have multiple members in the structure it gets harder to work with\\nsince you need to address the fields in the structure. When you work with graph,\\nyou frequently need to access the vertices and in this case it felt a lot easier\\nto implement the indexing in a graph, rather than explicitly access the\\nunderlying data structure.\\n\\nHere you can see a rather short snippet from the solution that allows you to\\n\u201cindex\u201d the graph:\\n\\n```rust\\nimpl Index<&str> for Graph {\\n type Output = Vertex;\\n\\n fn index(&self, index: &str) -> &Self::Output {\\n &self.g[index]\\n }\\n}\\n```\\n\\n#### Cartesian product\\n\\nDuring the implementation I had to utilize Floyd-Warshall algorithm for finding\\nthe shortest path between pairs of vertices and utilized the `iproduct!` macro\\nfrom the [`itertools`]. It is a very useful higher-order function that allows\\nyou to keep the nesting of the loops at a minimum level while still maintaining\\nthe same functionality.\\n\\n#### \u201cImplementing\u201d an iterator\\n\\nFor the second part, you get to split the work between 2 actors. That way you\\ncan achieve higher efficiency of the whole process that you\'re planning, but it\\nalso makes it harder to evaluate algorithmically, since you need to check the\\ndifferent ways the work can be split.\\n\\nBeing affected by _functional programming brain damage_:tm:, I have chosen to\\ndo this part by function that returns an iterator over the possible ways:\\n\\n```rust\\nfn pairings(\\n valves: &BTreeSet,\\n) -> impl Iterator, BTreeSet)> + \'_ {\\n let mapping = valves.iter().collect_vec();\\n\\n let max_mask = 1 << (valves.len() - 1);\\n\\n (0..max_mask).map(move |mask| {\\n let mut elephant = BTreeSet::new();\\n let mut human = BTreeSet::new();\\n\\n for (i, &v) in mapping.iter().enumerate() {\\n if (mask & (1 << i)) == 0 {\\n human.insert(v.clone());\\n } else {\\n elephant.insert(v.clone());\\n }\\n }\\n\\n (human, elephant)\\n })\\n}\\n```\\n\\n## [Day 17: Pyroclastic Flow](https://adventofcode.com/2022/day/17)\\n\\n:::info tl;dr\\n\\nSimulating an autonomous Tetris where pieces get affected by a series of jets of\\nhot gas.\\n\\n:::\\n\\n### Solution\\n\\nSimilarly to the previous day I have created some iterators :smile:\\n\\n#### Collision detection\\n\\nOnce you need to check for collisions it is very helpful to be able to just\\niterate through the positions that can actually collide with the wall or other\\npiece.\\n\\nTo get the desired behaviour, you can just compose few smaller functions:\\n\\n```rust\\nfn occupied(shape: &[Vec]) -> impl Iterator + \'_ {\\n shape.iter().enumerate().flat_map(|(y, row)| {\\n row.iter().enumerate().filter_map(move |(x, c)| {\\n if c == &\'#\' {\\n Some(Vector2D::new(x as isize, y as isize))\\n } else {\\n None\\n }\\n })\\n })\\n}\\n```\\n\\nIn the end, we get relative positions which we can adjust later when given the\\nspecific positions from iterator. You can see some interesting parts in this:\\n\\n- `.enumerate()` allows us to get both the indices (coordinates) and the line\\n or, later on, the character itself,\\n- `.flat_map()` flattens the iterator, i.e. when we return another iterator,\\n they just get chained instead of iterating over iterators (which sounds pretty\\n disturbing, doesn\'t it?),\\n- and finally `.filter_map()` which is pretty similar to the \u201cbasic\u201d `.map()`\\n with a one, key, difference that it expects the items of an iterator to be\\n mapped to an `Option` from which it ignores nothing (as in `None` :wink:)\\n and also unwraps the values from `Some(\u2026)`.\\n\\n#### Infinite iterator\\n\\nIn the solution we cycle through both Tetris-like shapes that fall down and the\\njets that move our pieces around. Initially I have implemented my own infinite\\niterator that just yields the indices. It is a very simple, yet powerful, piece\\nof code:\\n\\n```rust\\nstruct InfiniteIndex {\\n size: usize,\\n i: usize,\\n}\\n\\nimpl InfiniteIndex {\\n fn new(size: usize) -> InfiniteIndex {\\n InfiniteIndex { size, i: size - 1 }\\n }\\n}\\n\\nimpl Iterator for InfiniteIndex {\\n type Item = usize;\\n\\n fn next(&mut self) -> Option {\\n self.i = (self.i + 1) % self.size;\\n Some(self.i)\\n }\\n}\\n```\\n\\nHowever when I\'m looking at the code now, it doesn\'t really make much sense\u2026\\nGuess what, we can use a built-in function that is implemented on iterators for\\nthat! The function is called `.cycle()`\\n\\nOn the other hand, I am not going to switch to that function, since it would\\nintroduce an another myriad of issues caused by the fact that I create iterators\\nright away in the constructor of my structure and the iterators would borrow\\nboth the jets and shapes which would introduce a lifetime dependency into the\\nstructure.\\n\\n## [Day 18: Boiling Boulders](https://adventofcode.com/2022/day/18)\\n\\n:::info tl;dr\\n\\nLet\'s compute a surface area of some obsidian approximated via coordinates of\\ncubes.\\n\\n:::\\n\\n### Solution\\n\\nThis day is kinda interesting, because it shows how easily you can complicate the\\nproblem and also how much can you screw yourself over with the optimization and\\n\u201csmart\u201d approach.\\n\\nFor the first part you need to find the surface area of an obsidian that is\\napproximated by cubes. Now, that is a very easy thing to do, just keep the track\\nof already added cubes, and check if the newly added cube touches any face of any\\nother cube. Simple, and with a `BTreeSet` relatively efficient way to do it.\\n\\nHowever the second part lets you on a secret that there may be some surface area\\nfrom the \u201cinside\u201d too and you want to know only the one from the outside of the\\nobsidian. I have seen some solutions later, but if you check your data, you might\\nnotice that the bounding box of all the cubes isn\'t that big at all. Therefore I\\nchose to pre-construct the box beforehand, fill in the cubes and then just run a\\nBFS turning all the lava on the outside into the air. Now you just need to check\\ncubes and count how many of their faces touch the air.\\n\\n## [Day 19: Not Enough Minerals](https://adventofcode.com/2022/day/19)\\n\\n:::info tl;dr\\n\\nFinding out the best strategy for building robots to collect geodes.\\n\\n:::\\n\\n### Solution\\n\\nNot much interesting stuff to mention apart from the suggestion to never believe\\nthat the default implementation given by `derive` macro is what you want, it\\ndoesn\'t have to be. :smile:\\n\\n## [Day 20: Grove Positioning System](https://adventofcode.com/2022/day/20)\\n\\n:::info tl;dr\\n\\nShuffling around the _circular linked list_ to find the coordinates.\\n\\n:::\\n\\nNow, small rant for this day is in place. They\'ve never mentioned that coordinates\\ncan repeat and therefore the values are non-unique. This is something that did\\nnot happen in the given sample, but was present in the user input. It took \xbba lot\xab\\nto realize that this is the issue.\\n\\n### Solution\\n\\nI have tried implementing a circular linked list for this\u2026 and I have failed\\nmiserably. To be fair, I still have no clue why. It was \u201cfun\u201d to play around with\\nthe `Rc>`. In the end I failed on _wrong answer_. I have also encountered\\na rather interesting issue with `.borrow_mut()` method being used on `Rc>`.\\n\\n#### `.borrow_mut()`\\n\\nConsider the following snippet of the code (taken from the documentation):\\n\\n```rust\\nuse std::cell::{RefCell, RefMut};\\nuse std::collections::HashMap;\\nuse std::rc::Rc;\\n// use std::borrow::BorrowMut;\\n\\nfn main() {\\n let shared_map: Rc> = Rc::new(RefCell::new(HashMap::new()));\\n // Create a new block to limit the scope of the dynamic borrow\\n {\\n let mut map: RefMut<_> = shared_map.borrow_mut();\\n map.insert(\\"africa\\", 92388);\\n map.insert(\\"kyoto\\", 11837);\\n map.insert(\\"piccadilly\\", 11826);\\n map.insert(\\"marbles\\", 38);\\n }\\n\\n // Note that if we had not let the previous borrow of the cache fall out\\n // of scope then the subsequent borrow would cause a dynamic thread panic.\\n // This is the major hazard of using `RefCell`.\\n let total: i32 = shared_map.borrow().values().sum();\\n println!(\\"{total}\\");\\n}\\n```\\n\\nWe allocate a hash map on the heap and then in the inner block, we borrow it as\\na mutable reference, so that we can use it.\\n\\n:::note\\n\\nIt is a very primitive example for `Rc>` and mutable borrow.\\n\\n:::\\n\\nIf you uncomment the 4th line with `use std::borrow::BorrowMut;`, you cannot\\ncompile the code anymore, because of\\n\\n```\\n Compiling playground v0.0.1 (/playground)\\nerror[E0308]: mismatched types\\n --\x3e src/main.rs:10:34\\n |\\n10 | let mut map: RefMut<_> = shared_map.borrow_mut();\\n | --------- ^^^^^^^^^^^^^^^^^^^^^^^ expected struct `RefMut`, found mutable reference\\n | |\\n | expected due to this\\n |\\n = note: expected struct `RefMut<\'_, _>`\\n found mutable reference `&mut Rc>>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:11:13\\n |\\n11 | map.insert(\\"africa\\", 92388);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:12:13\\n |\\n12 | map.insert(\\"kyoto\\", 11837);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:13:13\\n |\\n13 | map.insert(\\"piccadilly\\", 11826);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:14:13\\n |\\n14 | map.insert(\\"marbles\\", 38);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nSome errors have detailed explanations: E0308, E0599.\\nFor more information about an error, try `rustc --explain E0308`.\\nerror: could not compile `playground` due to 5 previous errors\\n```\\n\\nIt might seem **a bit** ridiculous. However, I got to a point where the compiler\\nsuggested `use std::borrow::BorrowMut;` and it resulted in breaking parts of the\\ncode that worked previously. I think it may be a good idea to go over what is\\nhappening here.\\n\\n##### `.borrow_mut()` on `Rc>`\\n\\nLet\'s consider a variable `x` of type `Rc>`. What happens when you\\ncall `.borrow_mut()` on it? We can look at the `Rc` type, and\u2026 hang on! There is\\nneither `.borrow_mut()` method or `BorrowMut` trait implemented. How can we do it\\nthen?\\n\\nLet\'s go further and we can see that `RefCell` implements a `.borrow_mut()`\\nmethod. OK, but how can we call it on the `Rc`? Easily! `Rc` implements\\n`Deref` and therefore you can call methods on `Rc` objects as if they were\\n`T` objects. If we read on _`Deref` coercion_, we can see the following:\\n\\n> If `T` implements `Deref`, \u2026:\\n>\\n> - \u2026\\n> - `T` implicitly implements all the (immutable) methods of the type `U`.\\n\\nWhat is the requirement for the `.borrow_mut()` on `RefCell`? Well, it needs\\n`&self`, so the `Deref` implements the `.borrow_mut()` for the `Rc>`.\\n\\n##### `BorrowMut` trait\\n\\nI have not been able to find a lot on this trait. My guess is that it provides a\\nmethod instead of a syntactic sugar (`&mut x`) for the mutable borrow. And also\\nit provides default implementations for the types:\\n\\n```rust\\nimpl BorrowMut for String\\n\\nimpl BorrowMut for &mut T\\nwhere\\n T: ?Sized,\\n\\nimpl BorrowMut for T\\nwhere\\n T: ?Sized,\\n\\nimpl BorrowMut<[T]> for Vec\\nwhere\\n A: Allocator,\\n\\nimpl BorrowMut for Box\\nwhere\\n A: Allocator,\\n T: ?Sized,\\n\\nimpl BorrowMut<[T]> for [T; N]\\n```\\n\\n##### Conflict\\n\\nNow the question is why did it break the code\u2026 My first take was that the type\\n`Rc>` has some _specialized_ implementation of the `.borrow_mut()` and\\nthe `use` overrides it with the default, which is true **in a sense**. However\\nthere is no _specialized_ implementation. Let\'s have a look at the trait and the\\ntype signature on the `RefCell`:\\n\\n```rust\\n// trait\\npub trait BorrowMut: Borrow\\nwhere\\n Borrowed: ?Sized,\\n{\\n fn borrow_mut(&mut self) -> &mut Borrowed;\\n}\\n\\n// \u2039RefCell.borrow_mut()\u203a type signature\\npub fn borrow_mut(&self) -> RefMut<\'_, T>\\n```\\n\\nI think that we can definitely agree on the fact that `RefMut<\'_, T>` is not the\\n`RefCell`.\\n\\n**In my opinion**, `RefCell` implements a **separate** `.borrow_mut()` rather\\nthan implementing the interface, because it **cannot** satisfy the type requirements\\nof the trait.\\n\\n:::caution\\n\\nI wonder how are we expected to deal with this conflict, if and when, we need\\nboth the `.borrow_mut()` of the trait and `.borrow_mut()` of the `RefCell`.\\n\\n:::\\n\\n:::tip Fun fact\\n\\nI was suggested by the compiler to do `use std::borrow::BorrowMut;` and break the\\ncode.\\n\\nSo much for the _almighty_ and _helpful_ compiler\u2026\\n\\n:::\\n\\n## [Day 21: Monkey Math](https://adventofcode.com/2022/day/21)\\n\\n:::info tl;dr\\n\\nComputing an expression tree and then also finding ideal value for a node.\\n\\n:::\\n\\n### Solution\\n\\nRelatively simple, until you get to the 2nd part where you start to practice\\na lot of the copy-paste. I have managed to sneak some perverted stuff in there\\nthough :) Let\'s go through the details.\\n\\n#### `Default` trait\\n\\nFor the first time and twice I had a need to have a default value for my types,\\nenumerations in this case. Rust offers a very nice trait[^1] that is described\\nas:\\n\\n> A trait for giving a type a useful default value.\\n\\nI guess it sums it up nicely. The more interesting part about this is the fact\\nthat you can use the _macro machinery_ to save yourself some typing. If you have\\nenumeration of which the default value doesn\'t bear any parameter, you can just\\ndo[^2]:\\n\\n```rust\\n#[derive(Default)]\\nenum Color {\\n #[default]\\n White,\\n Gray,\\n Black,\\n}\\n```\\n\\n#### Abusing negation\\n\\nIf you want to use a _unary minus_ operator on your own type, you can implement\\na `Neg` trait[^3]. I was dealing with a binary tree and needed a way how to look\\nat the other side, so I have just implemented the negation for flipping between\\nleft and right :smile:\\n\\n[^1]: [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) docs\\n[^2]: Pardon my example from the graph algorithms ;)\\n[^3]: [`Neg`](https://doc.rust-lang.org/std/ops/trait.Neg.html) docs\\n\\n[_advent of code_]: https://adventofcode.com\\n[`itertools`]: https://crates.io/crates/itertools\\n[this reddit post and the comment]: https://www.reddit.com/r/adventofcode/comments/zb98pn/comment/iyq0ono"},{"id":"leetcode/sort-diagonally","metadata":{"permalink":"/blog/leetcode/sort-diagonally","editUrl":"https://github.com/mfocko/blog/tree/main/blog/leetcode/sort-matrix-diagonally.md","source":"@site/blog/leetcode/sort-matrix-diagonally.md","title":"Sort the matrix diagonally","description":"Compiler assisted development.","date":"2023-03-04T23:15:00.000Z","formattedDate":"March 4, 2023","tags":[{"label":"cpp","permalink":"/blog/tags/cpp"},{"label":"leetcode","permalink":"/blog/tags/leetcode"},{"label":"iterators","permalink":"/blog/tags/iterators"}],"readingTime":16.99,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Sort the matrix diagonally","description":"Compiler assisted development.","date":"2023-03-04T23:15","slug":"leetcode/sort-diagonally","authors":"mf","tags":["cpp","leetcode","iterators"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"3rd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/3rd-week"},"nextItem":{"title":"2nd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/2nd-week"}},"content":"Let\'s try to solve one of the LeetCode challenges in easy and hard mode at the\\nsame time.\\n\\n\x3c!--truncate--\x3e\\n\\n- Link to the problem: https://leetcode.com/problems/sort-the-matrix-diagonally/\\n\\n## Problem description\\n\\nA **matrix diagonal** is a diagonal line of cells starting from some cell in\\neither the topmost row or leftmost column and going in the bottom-right direction\\nuntil reaching the matrix\'s end. For example, the **matrix diagonal** starting\\nfrom `mat[2][0]`, where `mat` is a `6 x 3` matrix, includes cells `mat[2][0]`,\\n`mat[3][1]`, and `mat[4][2]`.\\n\\nGiven an `m x n` matrix `mat` of integers, sort each matrix diagonal in ascending\\norder and return the resulting matrix.\\n\\n### Example\\n\\n![Image describing the problem](https://assets.leetcode.com/uploads/2020/01/21/1482_example_1_2.png)\\n\\n## Skeleton and initial adjustments\\n\\nWe are given the following skeleton for the C++ and the given challenge:\\n\\n```cpp\\nclass Solution {\\npublic:\\n vector> diagonalSort(vector>& mat) {\\n\\n }\\n};\\n```\\n\\nThe task is to sort the passed matrix diagonally and then return it. First of all,\\nI don\'t like to solve this in a web browser, so we\'ll need to adjust it accordingly\\nfor running it locally. We\'ll start by including the `vector` header and using\\nfully-qualified namespaces[^1] and also adding few tests:\\n\\n```cpp\\n#include \\n#include \\n\\nusing matrix = std::vector>;\\n\\nclass Solution {\\npublic:\\n matrix diagonalSort(matrix& mat)\\n {\\n }\\n};\\n\\nstatic void test_case_1()\\n{\\n // Input: mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]\\n // Output: [[1,1,1,1],[1,2,2,2],[1,2,3,3]]\\n\\n Solution s;\\n assert((s.diagonalSort(std::vector { std::vector { 3, 3, 1, 1 },\\n std::vector { 2, 2, 1, 2 },\\n std::vector { 1, 1, 1, 2 } })\\n == std::vector { std::vector { 1, 1, 1, 1 },\\n std::vector { 1, 2, 2, 2 },\\n std::vector { 1, 2, 3, 3 } }));\\n}\\n\\nstatic void test_case_2()\\n{\\n // Input: mat =\\n // [[11,25,66,1,69,7],[23,55,17,45,15,52],[75,31,36,44,58,8],[22,27,33,25,68,4],[84,28,14,11,5,50]]\\n // Output:\\n // [[5,17,4,1,52,7],[11,11,25,45,8,69],[14,23,25,44,58,15],[22,27,31,36,50,66],[84,28,75,33,55,68]]\\n\\n Solution s;\\n assert((s.diagonalSort(std::vector { std::vector { 11, 25, 66, 1, 69, 7 },\\n std::vector { 23, 55, 17, 45, 15, 52 },\\n std::vector { 75, 31, 36, 44, 58, 8 },\\n std::vector { 22, 27, 33, 25, 68, 4 },\\n std::vector { 84, 28, 14, 11, 5, 50 } })\\n == std::vector { std::vector { 5, 17, 4, 1, 52, 7 },\\n std::vector { 11, 11, 25, 45, 8, 69 },\\n std::vector { 14, 23, 25, 44, 58, 15 },\\n std::vector { 22, 27, 31, 36, 50, 66 },\\n std::vector { 84, 28, 75, 33, 55, 68 } }));\\n}\\n\\nint main()\\n{\\n test_case_1();\\n test_case_2();\\n\\n return 0;\\n}\\n```\\n\\nWe need to return the matrix, but we\'re given a reference to the input matrix. We\\ncan easily abuse the C++ here and just switch the reference to value, this way\\nthe matrix will be copied when passed to the function, we can sort the copy and\\njust return it back. And we also get yelled by the compiler for the fact that the\\nmethod doesn\'t return anything yet, so to make it \u201cshut up\u201d we will just return\\nthe input for now:\\n\\n```diff\\n- matrix diagonalSort(matrix& mat)\\n+ matrix diagonalSort(matrix mat)\\n {\\n+ return mat;\\n }\\n```\\n\\nNow, we get the copy and we\'re good to go.\\n\\n## Na\xefve solution\\n\\nAs you may know, C++ offers a plethora of functions that can be used to your\\nadvantage, given that you know how to \u201cbend\u201d the data structures accordingly.\\n\\nWhat does that mean for us? Well, we have an `std::sort`, we can use it, right?\\nLet\'s have a look at it:\\n\\n```cpp\\ntemplate< class RandomIt >\\nvoid sort( RandomIt first, RandomIt last );\\n```\\n\\nThis overload is more than we need. What does it do? It just sorts the elements\\nin the range `[first, last)` using `operator<` on them. We can\'t sort the whole\\nmatrix using this, but\u2026 we can sort just \xbbone\xab diagonal without doing much work\\non our end.\\n\\nWhat is the `RandomIt` type though? If we look more into the documentation, we\\ncan easily find the requirements for it and also learn that it\'s a _random access_\\n_iterator_ and allows swapping its values at the same time.\\n\\n:::tip Random access iterator\\n\\nWhat is the _random access iterator_ though? We can find it in a documentation\\nand see the following description:\\n\\n> A **LegacyRandomAccessIterator** is a [LegacyBidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator)\\n> that can be moved to point to any element in constant time.\\n\\nAfter that we can see all the requirements for it being listed. I don\'t feel like\\nreading them right now, so we will just use it and see where the compilation blows\\nup, i.e. \u201c_compiler-assisted development_\u201d[^2] if you will ;)\\n\\n:::\\n\\nNow we know that we can use `std::sort` to sort the diagonal itself, but we also\\nneed to get the diagonals somehow. I\'m rather lazy, so I\'ll just delegate it to\\nsomeone else[^3]. And that way we get\\n\\n```cpp\\nmatrix diagonalSort(matrix mat)\\n{\\n // we iterate over the diagonals\\n for (auto d : diagonals(mat)) {\\n // and we sort each diagonal\\n std::sort(d.begin(), d.end());\\n }\\n\\n // we take the matrix by copy, so we can sort in-situ and return the copy\\n // that we sorted\\n return mat;\\n}\\n```\\n\\nThis solution looks very simple, doesn\'t it? Well, cause it is.\\nLet\'s try compiling it:\\n\\n```\\nmatrix-sort.cpp:11:23: error: use of undeclared identifier \'diagonals\' [clang-diagnostic-error]\\n for (auto d : diagonals(mat)) {\\n ^\\nFound compiler error(s).\\nmake: *** [makefile:14: tidy] Error 1\\n```\\n\\nOK, seems about right. We haven\'t implemented the `diagonals` yet. And based on\\nwhat we\'ve written so far, we need a function or a class `diagonals` that will\\ngive us the diagonals we need.\\n\\n## Implementing the `diagonals`\\n\\nCool, so we need the function that will let us go through each and every diagonal\\nin our matrix. We use the _for-range_ loop, so whatever we get back from the\\n`diagonals` must support `.begin()` and `.end()`. Since I am a masochist, we will\\ndo such functionality for a matrix of any type, not just the `int` from the challenge.\\n\\nAs I said, we need to be able to\\n\\n- construct the object\\n- get the beginning\\n- get the end (the \u201csentinel\u201d)\\n\\n```cpp\\ntemplate \\nclass diagonals {\\n using matrix_t = std::vector>;\\n\\n matrix_t& _matrix;\\n\\npublic:\\n diagonals(matrix_t& m)\\n : _matrix(m)\\n {\\n }\\n diagonals_iter begin()\\n {\\n /* TODO */\\n }\\n diagonals_iter end()\\n {\\n /* TODO */\\n }\\n};\\n```\\n\\nNow we have a `diagonals` that we can use to go through the diagonals. We haven\'t\\nimplemented the core of it yet. Let\'s go through what we have for now.\\n\\nWe have a templated class with templated `T` that is used as a placeholder for any\\ntype we would store in the matrix. Because I\'m lazy, I have defined the `matrix_t`\\ntype that is a \u201cshortcut\u201d for `std::vector>`, so I don\'t have to\\ntype it out all the time. Of course, we need to store the matrix, we are given,\\nas a private attribute. And then just have the constructor and the 2 methods we\\nneed for the _for-range_.\\n\\n### Iterating over diagonals\\n\\nNow that we have an object that will allow us to iterate through the diagonals,\\nwe need to implement the iterating itself. We need to go through all of them, so\\nwe have multiple options how to do so. I have decided to start from the \u201cmain\u201d\\ndiagonal that starts at `(0, 0)` index and then proceed with the diagonals starting\\nin the first row, followed by the rest of the diagonals in the first column.\\n\\nWe need to be able to tell that we\'ve iterated through all of them, and also we\\nneed to know which diagonal is next. For that purpose we will pass the indices\\nof the first cell on the diagonal. That way we can always tell how to move forward.\\n\\nWe will start by updating the `begin` and `end` to reflect our choice accordingly.\\n\\n```cpp\\ndiagonals_iter begin() { return diagonals_iter { _matrix, 0, 0 }; }\\ndiagonals_iter end() { return diagonals_iter { _matrix, 0, _matrix.size() }; }\\n```\\n\\nFor the `begin` we return the first diagonal that starts at `(0, 0)`. And because\\nwe have decided to do the diagonals in the first column at the end, the first\\ndiagonal that is not a valid one is the one at `(0, height)`. Apart from the\\nindices, we also need to pass reference to the matrix itself.\\n\\n:::note\\n\\nYou may have noticed that we also include the diagonals that have length 1,\\nspecifically the ones at `(0, height - 1)` and `(width - 1, 0)`. We are implementing\\nan iterator that **should not** care about the way it\'s being used. Therefore, we\\ndon\'t care about the fact they don\'t need to be sorted.\\n\\n:::\\n\\nCool, let\'s leave the iterator itself to someone else, right?[^4]\\n\\n### Implementing the iterator over diagonals\\n\\nWe can start with a simple skeleton based on the information that we pass from\\nthe `diagonals`. Also to utilize the `matrix_t` and also contain implementation\\ndetails hidden away, we will put this code into the `diagonals` class.\\n\\n```cpp\\nclass diagonals_iter {\\n matrix_t& m;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonals_iter(matrix_t& matrix, std::size_t x, std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n};\\n```\\n\\nIn this case we will be implementing a \u201csimple\u201d forward iterator, so we don\'t\\nneed to implement a lot. Notably it will be:\\n\\n- inequality operator (we need to know when we reach the end and have nothing to\\n iterate over)\\n- preincrementation operator (we need to be able to move around the iterable)\\n- dereference operator (we need to be able to retrieve the objects we iterate\\n over)\\n\\n```cpp\\nclass diagonals_iter {\\n matrix_t& m;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonals_iter(matrix_t& matrix, std::size_t x, std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator!=(const diagonals_iter& rhs) const\\n {\\n // iterators are not equal if they reference different matrices, or\\n // their positions differ\\n return m != rhs.m || x != rhs.x || y != rhs.y;\\n }\\n\\n diagonals_iter& operator++()\\n {\\n if (y != 0) {\\n // iterating through diagonals down the first column\\n y++;\\n return *this;\\n }\\n\\n // iterating the diagonals along the first row\\n x++;\\n if (x == m.front().size()) {\\n // switching to diagonals in the first column\\n x = 0;\\n y++;\\n }\\n\\n return *this;\\n }\\n\\n diagonal operator*() const { return diagonal { m, x, y }; }\\n};\\n```\\n\\nLet\'s go one-by-one. Inequality operator is rather simple, just compare iterator\'s\\nattributes field-by-field. If you think about it, checking inequality of two 2D\\nvectors may be a bit inefficient, therefore, we can swap around and check it as\\na last thing.\\n\\n```diff\\n- return m != rhs.m || x != rhs.x || y != rhs.y;\\n+ return x != rhs.x || y != rhs.y || m != rhs.m;\\n```\\n\\nPreincrementation is where the magic happens. If you have a better look, you can\\nsee two branches of this operation:\\n\\n1. When `y != 0` (we\'re iterating over the diagonals in the first column)\\n In this case, we just bump the row and we\'re done.\\n2. When `y == 0` (we\'re iterating over the diagonals in the first row)\\n In this case, we bump the column and check if we haven\'t gotten out of bounds,\\n i.e. the end of the first row. If we get out of the bounds, we\'re continuing\\n with the second diagonal in the first column.\\n\\nDereferencing the iterator must \u201cyield\u201d something. In our case it will be the\\ndiagonal that we want to sort. For sorting we need just the iterators that can\\nmove around said diagonal. The simplest thing, we can do, is to delegate it to\\nsomething else. In our case it will be a class called `diagonal`.\\n\\n## Implementing the `diagonal` itself\\n\\nAfter implementing the iterator over diagonals, we know that all we need to describe\\na diagonal is the matrix itself and the \u201cstart\u201d of the diagonal (row and column).\\nAnd we also know that the diagonal must provide some iterators for the `std::sort`\\nfunction. We can start with the following skeleton:\\n\\n```cpp\\ntemplate \\nclass diagonal {\\n using matrix_t = std::vector>;\\n\\n matrix_t& matrix;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonal(matrix_t& matrix, std::size_t x, std::size_t y)\\n : matrix(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n diagonal_iter begin() const { return diagonal_iter { matrix, x, y }; }\\n\\n diagonal_iter end() const\\n {\\n auto max_x = matrix[y].size();\\n auto max_y = matrix.size();\\n\\n // we need to find the distance in which we get out of bounds (either in\\n // column or row)\\n auto steps = std::min(max_x - x, max_y - y);\\n\\n return diagonal_iter { matrix, x + steps, y + steps };\\n }\\n};\\n```\\n\\nInitialization is rather simple, we just \u201ckeep\u201d the stuff we get, `begin` is the\\nsimplest, we just delegate.\\n\\nIn case of the `end`, it gets more complicated. We need to know where is the \u201cend\u201d\\nof the diagonal. Since `end` should point to the first element \u201cafter\u201d the iterable,\\nwe know that it\'s the first position of the iterator where either `y` becomes\\n`matrix.size()` or `x` becomes `matrix[y].size()`. Also we are moving along diagonal,\\nduh, therefore we can deduce the first \u201cposition\u201d afterwards by minimal amount of\\nsteps to get out of the any column or row, hence `std::min(max_x - x, max_y - y)`.\\nFinal position is then computed simply by adding the steps to the beginning of\\nthe diagonal.\\n\\nNow we just need to finish the iterator for the diagonal itself and we\'re done.\\n\\n### Implementing `diagonal_iter`\\n\\nThis part is the hardest from all we need to do. It\'s because of the requirements\\nof the `std::sort` that requires us to implement a _random access iterator_. I have\\nbriefly described it above, and \u201cin a nutshell\u201d it means that we need to implement\\nan iterator that can move in constant time along the diagonal in any amount of\\nsteps.\\n\\nLet\'s go through all of the functionality that our iterator needs to support to\\nbe used in `std::sort`. We need the usual operations like:\\n\\n- equality/inequality\\n- incrementation\\n- dereferencing\\n\\nWe will also add all the types that our iterator uses with the category of the\\niterator, i.e. what interface it supports:\\n\\n```cpp\\nclass diagonal_iter {\\n // we need to keep reference to the matrix itself\\n matrix_t& m;\\n\\n // we need to be able to tell our current position\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n using difference_type = std::ptrdiff_t;\\n using value_type = T;\\n using pointer = T*;\\n using reference = T&;\\n using iterator_category = std::random_access_iterator_tag;\\n\\n diagonal_iter(matrix_t& matrix,\\n std::size_t x,\\n std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator==(const diagonal_iter& rhs) const\\n {\\n return x == rhs.x && y == rhs.y && m == rhs.m;\\n }\\n\\n diagonal_iter& operator++()\\n {\\n // we are moving along the diagonal, so we increment both \u2039x\u203a and \u2039y\u203a at\\n // the same time\\n x++;\\n y++;\\n return *this;\\n }\\n\\n reference operator*() const { return m[y][x]; }\\n};\\n```\\n\\nThis is pretty similar to the previous iterator, but now we need to implement the\\nremaining requirements of the _random access iterator_. Let\'s see what those are:\\n\\n- decrementation - cause we need to be able to move backwards too, since _random _\\n _access iterator_ extends the interface of _bidirectional iterator_\\n- moving the iterator in either direction by steps given as an integer\\n- being able to tell the distance between two iterators\\n- define an ordering on the iterators\\n\\nLet\'s fill them in:\\n\\n```cpp\\nclass diagonal_iter {\\n // we need to keep reference to the matrix itself\\n matrix_t& m;\\n\\n // we need to be able to tell our current position\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n using difference_type = std::ptrdiff_t;\\n using value_type = T;\\n using pointer = T*;\\n using reference = T&;\\n using iterator_category = std::random_access_iterator_tag;\\n\\n diagonal_iter(matrix_t& matrix,\\n std::size_t x,\\n std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator==(const diagonal_iter& rhs) const\\n {\\n return x == rhs.x && y == rhs.y && m == rhs.m;\\n }\\n\\n diagonal_iter& operator++()\\n {\\n // we are moving along the diagonal, so we increment both \u2039x\u203a and \u2039y\u203a at\\n // the same time\\n x++;\\n y++;\\n return *this;\\n }\\n\\n reference operator*() const { return m[y][x]; }\\n\\n // exactly opposite to the incrementation\\n diagonal_iter operator--()\\n {\\n x--;\\n y--;\\n return *this;\\n }\\n\\n // moving \u2039n\u203a steps back is same as calling decrementation \u2039n\u203a-times, so we\\n // can just return a new iterator and subtract \u2039n\u203a from both coordinates in\\n // the matrix\\n diagonal_iter operator-(difference_type n) const\\n {\\n return diagonal_iter { m, x - n, y - n };\\n }\\n\\n // here we assume that we are given two iterators on the same diagonal\\n difference_type operator-(const diagonal_iter& rhs) const\\n {\\n assert(m == rhs.m);\\n return x - rhs.x;\\n }\\n\\n // counterpart of moving \u2039n\u203a steps backwards\\n diagonal_iter operator+(difference_type n) const\\n {\\n return diagonal_iter { m, x + n, y + n };\\n }\\n\\n // we compare the coordinates, and also assume that those 2 iterators are\\n // lying on the same diagonal\\n bool operator<(const diagonal_iter& rhs) const\\n {\\n assert(m == rhs.m);\\n return x < rhs.x && y < rhs.y;\\n }\\n};\\n```\\n\\nAt this point we could probably try and compile it, right? If we do so, we will\\nget yelled at by a compiler for the following reasons:\\n\\n```\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n __last = __next;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1817:11: note: in instantiation of function template specialization \'std::__unguarded_linear_insert::diagonal_iter, __gnu_cxx::__ops::_Val_less_iter>\' requested here\\n std::__unguarded_linear_insert(__i,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1849:9: note: in instantiation of function template specialization \'std::__insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__insertion_sort(__first, __first + int(_S_threshold), __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization \'std::__final_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__final_insertion_sort(__first, __last, __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1830:2: error: no matching function for call to \'__unguarded_linear_insert\' [clang-diagnostic-error]\\n std::__unguarded_linear_insert(__i,\\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1850:9: note: in instantiation of function template specialization \'std::__unguarded_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization \'std::__final_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__final_insertion_sort(__first, __last, __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1782:5: note: candidate template ignored: substitution failure [with _RandomAccessIterator = diagonal::diagonal_iter, _Compare = __gnu_cxx::__ops::_Val_less_iter]\\n __unguarded_linear_insert(_RandomAccessIterator __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1923:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n __last = __cut;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1937:9: note: in instantiation of function template specialization \'std::__introsort_loop::diagonal_iter, long, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__introsort_loop(__first, __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n```\\n\\nThat\'s a lot of noise, isn\'t it? Let\'s focus on the important parts:\\n\\n```\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n\u2026\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n```\\n\\nAh! We have a reference in our iterator, and this prevents us from having a copy\\nassignment operator (that is used \u201csomewhere\u201d in the sorting algorithm). Well\u2026\\nLet\'s just wrap it!\\n\\n```diff\\n# we need to keep a different type than reference\\n- matrix_t& m;\\n+ std::reference_wrapper m;\\n\\n# in comparison we need to get the reference out of the wrapper first\\n- return x == rhs.x && y == rhs.y && m == rhs.m;\\n+ return x == rhs.x && y == rhs.y && m.get() == rhs.m.get();\\n\\n# same when we return a reference to the \u201ccell\u201d in the matrix\\n- reference operator*() const { return m[y][x]; }\\n+ reference operator*() const { return m.get()[y][x]; }\\n\\n# and finally in the assertions that we set for the \u201cdistance\u201d and \u201cless than\u201d\\n- assert(m == rhs.m);\\n+ assert(m.get() == rhs.m.get());\\n```\\n\\nWe\'re done now! We have written an iterator over diagonals for a 2D `vector`. You can have a look at the final result [here](pathname:///files/blog/leetcode/sort-matrix-diagonally/matrix-sort.cpp).\\n\\n[^1]: just because I\'m used to it and don\'t care about your opinion ;)\\n[^2]: exercise at your own risk\\n[^3]: me in 5 minutes in fact, but don\'t make me scared\\n[^4]: me in the next section\u2026"},{"id":"aoc-2022/2nd-week","metadata":{"permalink":"/blog/aoc-2022/2nd-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/02-week-2.md","source":"@site/blog/aoc-2022/02-week-2.md","title":"2nd week of Advent of Code \'22 in Rust","description":"Surviving second week in Rust.","date":"2022-12-25T23:15:00.000Z","formattedDate":"December 25, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":20.875,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"2nd week of Advent of Code \'22 in Rust","description":"Surviving second week in Rust.","date":"2022-12-25T23:15","slug":"aoc-2022/2nd-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Sort the matrix diagonally","permalink":"/blog/leetcode/sort-diagonally"},"nextItem":{"title":"1st week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/1st-week"}},"content":"Let\'s go through the second week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 8: Treetop Tree House](https://adventofcode.com/2022/day/8)\\n\\n:::info tl;dr\\n\\nWe get a forest and we want to know how many trees are visible from the outside.\\nApart from that we want to find the best view.\\n\\n:::\\n\\nNothing interesting. We are moving around 2D map though. And indexing can get a\\nbit painful when doing so, let\'s refactor it a bit ;) During the preparation for\\nthe AoC, I have written `Vector2D` and now it\'s time to extend it with indexing\\nof `Vec` of `Vec`s. In my solution I was manipulating with indices in the following\\nway:\\n\\n- swapping them\\n- checking whether they are correct indices for the `Vec>`\\n- indexing `Vec>` with them\\n\\n:::caution\\n\\nI\'m getting familiar with Rust and starting to \u201cabuse\u201d it\u2026 While doing so, I\'m\\nalso uncovering some \u201cfeatures\u201d that I don\'t really like. Therefore I will mark\\nall of my rants with _thicc_ **\xab\u21af\xbb** mark and will try to \u201clock\u201d them into their\\nown \u201cbox of hell\u201d.\\n\\n:::\\n\\n#### Swapping indices\\n\\nRelatively simple implementation, just take the values, swap them and return new\\nvector.\\n\\n```rust\\nimpl Vector2D {\\n pub fn swap(&self) -> Self {\\n Self {\\n x: self.y,\\n y: self.x,\\n }\\n }\\n}\\n```\\n\\nPretty straight-forward implementation, but let\'s talk about the `T: Copy`. We\\nneed to use it, since we are returning a **new** vector, with swapped **values**.\\nIf we had values that cannot be copied, the only thing we could do, would be a\\nvector of references (and it would also introduce a lifetime, to which we\'ll get\\nlater on). This is pretty similar with the operations on sets from the first week.\\n\\n#### Indexing `Vec`\\n\\nI will start with the indexing, cause bound-checking is a bit more\u2026 complicated\\nthan I would like to.\\n\\n```rust\\npub fn index<\'a, T, U>(v: &\'a [Vec], idx: &Vector2D) -> &\'a U\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &v[y][x]\\n}\\n```\\n\\nLet\'s talk about this mess\u2026 Body of the function is probably the most easy part\\nand should not be hard to understand, we just take the `x` and `y` and convert\\nthem both to `usize` type that can be used later on for indexing.\\n\\nThe type signature of the function is where the fun is at :wink: We are trying\\nto convert unknown type to `usize`, so we must bound the `T` as a type that can\\nbe converted to `usize`, that\'s how we got `usize: TryFrom` which basically\\nsays that `usize` must implement `TryFrom` trait and therefore allows us to\\nconvert the indices to actual `usize` indices. Using `.unwrap()` also forces us\\nto bound the error that can occur when converting `T` into `usize`, that\'s how\\nwe get `>::Error: Debug` which loosely means\\n\\n> error during conversion of `T` into `usize` must implement `Debug`,\\n> i.e. can be printed in some way or other\\n\\n`T: Copy` is required by `.try_into()` which takes `T` by-value.\\n\\nAnd now we are left only with the first line of the definition.\\n\\n:::note\\n\\nSkilled Rustaceans might notice that this implementation is rather flaky and can\\nbreak in multiple places at once. I\'ll get back to it\u2026\\n\\n:::\\n\\nLet\'s split it in multiple parts:\\n\\n- `v: &\'a [Vec]` represents the 2D `Vec`, we are indexing, `Vec` implements\\n `Slice` trait and _clippy_ recommends using `&[T]` to `&Vec`, exact details\\n are unknown to me\\n- `idx: &Vector2D` represents the _indices_ which we use, we take them by\\n reference to avoid an unnecessary copy\\n- `-> &\'a U` means that we are returning a _reference_ to some value of type `U`.\\n Now the question is what does the `\'a` mean, we can also see it as a generic\\n type declared along `T` and `U`. And the answer is _relatively_ simple, `\'a`\\n represents a _lifetime_. We take the `v` by a reference and return a reference,\\n borrow checker validates all of the _borrows_ (or references), so we need to\\n specify that our returned value has _the same lifetime_ as the vector we have\\n taken by a reference, i.e. returned reference must live at least as long as the\\n `v`. This way we can \u201cbe sure\u201d that the returned reference is valid.\\n\\n##### Issues\\n\\nFirst issue that our implementation has is the fact that we cannot get a mutable\\nreference out of that function. This could be easily resolved by introducing new\\nfunction, e.g. `index_mut`. Which I have actually done while writing this part:\\n\\n```rust\\npub fn index_mut<\'a, T, U>(v: &\'a mut [Vec], idx: &Vector2D) -> &\'a mut U\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &mut v[y][x]\\n}\\n```\\n\\n:::caution **\xab\u21af\xbb** Why can\'t we use one function?\\n\\nWhen we consider a `Vec`, we don\'t need to consider containers as `T`, Rust\\nimplements indexing as traits `Index` and `IndexMut` that do the dirty work\\nbehind syntactic sugar of `container[idx]`.\\n\\nHowever, implementing of traits is not allowed for _external_ types, i.e. types\\nthat you haven\'t defined yourself. This means that you can implement indexing\\nover containers that you have implemented yourself, but you cannot use your own\\ntypes for indexing \u201cbuilt-in\u201d types.\\n\\nAnother part of this rabbit hole is trait `SliceIndex` that is of a relevance\\nbecause of\\n\\n```rust\\nimpl Index for [T]\\nwhere\\n I: SliceIndex<[T]>\\n\\nimpl Index for Vec\\nwhere\\n I: SliceIndex<[T]>,\\n A: Allocator\\n\\nimpl Index for [T; N]\\nwhere\\n [T]: Index\\n```\\n\\nIn other words, if your type implements `SliceIndex` trait, it can be used\\nfor indexing. As of now, this trait has all of its required methods experimental\\nand is marked as `unsafe`.\\n\\n:::\\n\\nAnother problem is a requirement for indexing either `[Vec]` or `Vec>`.\\nThis requirement could be countered by removing inner type `Vec` and constraining\\nit by a trait `Index` (or `IndexMut` respectively) in a following way\\n\\n```rust\\npub fn index<\'a, C, T>(v: &\'a [C], idx: &Vector2D) -> &\'a C::Output\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n C: Index\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &v[y][x]\\n}\\n```\\n\\nGiven this, we can also give a more meaningful typename for indexing type, such\\nas `I`.\\n\\n#### Checking bounds\\n\\nNow we can get to the boundary checks, it is very similar, but a more\u2026 dirty.\\nFirst approach that came up was to convert the indices in `Vector2D` to `usize`,\\nbut when you add the indices up, e.g. when checking the neighbors, you can end\\nup with negative values which, unlike in C++, causes an error (instead of underflow\\nthat you can use to your advantage; you can easily guess how).\\n\\nSo how can we approach this then? Well\u2026 we will convert the bounds instead of\\nthe indices and that lead us to:\\n\\n```rust\\npub fn in_range(v: &[Vec], idx: &Vector2D) -> bool\\nwhere\\n usize: TryInto,\\n >::Error: Debug,\\n T: PartialOrd + Copy,\\n{\\n idx.y >= 0.try_into().unwrap()\\n && idx.y < v.len().try_into().unwrap()\\n && idx.x >= 0.try_into().unwrap()\\n && idx.x\\n < v[TryInto::::try_into(idx.y).unwrap()]\\n .len()\\n .try_into()\\n .unwrap()\\n}\\n```\\n\\nYou can tell that it\'s definitely a shitty code. Let\'s improve it now! We will\\nget back to the original idea, but do it better. We know that we cannot convert\\nnegative values into `usize`, **but** we also know that conversion like that\\nreturns a `Result` which we can use to our advantage.\\n\\n```rust\\npub fn in_range(v: &[Vec], idx: &Vector2D) -> bool\\nwhere\\n T: Copy,\\n usize: TryFrom,\\n{\\n usize::try_from(idx.y)\\n .and_then(|y| usize::try_from(idx.x).map(|x| y < v.len() && x < v[y].len()))\\n .unwrap_or(false)\\n}\\n```\\n\\n`Result` is a type similar to `Either` in Haskell and it allows us to chain\\nmultiple operations on correct results or propagate the original error without\\ndoing anything. Let\'s dissect it one-by-one.\\n\\n`try_from` is a method implemented in `TryFrom` trait, that allows you to convert\\ntypes and either successfully convert them or fail (with a reasonable error). This\\nmethod returns `Result`.\\n\\nWe call `and_then` on that _result_, let\'s have a look at the type signature of\\n`and_then`, IMO it explains more than enough:\\n\\n```rust\\npub fn and_then(self, op: F) -> Result\\nwhere\\n F: FnOnce(T) -> Result\\n```\\n\\nOK\u2026 So it takes the result and a function and returns another result with\\ndifferent value and different error. However we can see that the function, which\\nrepresents an operation on a result, takes just the value, i.e. it doesn\'t care\\nabout any previous error. To make it short:\\n\\n> `and_then` allows us to run an operation, which can fail, on the correct result\\n\\nWe parsed a `y` index and now we try to convert the `x` index with `try_from`\\nagain, but on that result we use `map` rather than `and_then`, why would that be?\\n\\n```rust\\npub fn map(self, op: F) -> Result\\nwhere\\n F: FnOnce(T) -> U\\n```\\n\\nHuh\u2026 `map` performs an operation that **cannot** fail. And finally we use\\n`unwrap_or` which takes the value from result, or in case of an error returns the\\ndefault that we define.\\n\\nHow does this work then? If `y` is negative, the conversion fails and the error\\npropagates all the way to `unwrap_or`, if `y` can be a correct `usize` value, then\\nwe do the same with `x`. If `x` is negative, we propagate the error as with `y`,\\nand if it\'s not, then we check whether it exceeds the higher bounds or not.\\n\\n### Solution\\n\\nRelatively simple, you just need follow the rules and not get too smart, otherwise\\nit will get back at you.\\n\\n## [Day 9: Rope Bridge](https://adventofcode.com/2022/day/9)\\n\\n:::info tl;dr\\n\\nWe get a rope with knots and we want to track how many different positions are\\nvisited with the rope\'s tail.\\n\\n:::\\n\\nBy this day, I have come to a conclusion that current skeleton for each day\\ngenerates a lot of boilerplate. And even though it can be easily copied, it\'s\\njust a waste of space and unnecessary code. Let\'s \u201csimplify\u201d this (on one end\\nwhile creating monster on the other end). I\'ve gone through what we need in the\\npreparations for the AoC. Let\'s sum up our requirements:\\n\\n- parsing\\n- part 1 & 2\\n- running on sample / input\\n- tests\\n\\nParsing and implementation of both parts is code that changes each day and we\\ncannot do anything about it. However running and testing can be simplified!\\n\\nLet\'s introduce and export a new module `solution` that will take care of all of\\nthis. We will start by introducing a trait for each day.\\n\\n```rust\\npub trait Solution {\\n fn parse_input>(pathname: P) -> Input;\\n\\n fn part_1(input: &Input) -> Output;\\n fn part_2(input: &Input) -> Output;\\n}\\n```\\n\\nThis does a lot of work for us already, we have defined a trait and for each day\\nwe will create a structure representing a specific day. That structure will also\\nimplement the `Solution` trait.\\n\\nNow we need to get rid of the boilerplate, we can\'t get rid of the `main` function,\\nbut we can at least move out the functionality.\\n\\n```rust\\nfn run(type_of_input: &str) -> Result<()>\\nwhere\\n Self: Sized,\\n{\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = Self::parse_input(format!(\\"{}s/{}.txt\\", type_of_input, Self::day()));\\n\\n info!(\\"Part 1: {}\\", Self::part_1(&input));\\n info!(\\"Part 2: {}\\", Self::part_2(&input));\\n\\n Ok(())\\n}\\n\\nfn main() -> Result<()>\\nwhere\\n Self: Sized,\\n{\\n Self::run(\\"input\\")\\n}\\n```\\n\\nThis is all part of the `Solution` trait, which can implement methods while being\\ndependent on what is provided by the implementing types. In this case, we just\\nneed to bound the `Output` type to implement `Display` that is necessary for the\\n`info!` and format string there.\\n\\nNow we can get to first of the nasty things we are going to do\u2026 And it is the\\n`day()` method that you can see being used when constructing path to the input\\nfile. That method will generate a name of the file, e.g. `day01` and we know that\\nwe can _somehow_ deduce it from the structure name, given we name it reasonably.\\n\\n```rust\\nfn day() -> String {\\n let mut day = String::from(type_name::().split(\\"::\\").next().unwrap());\\n day.make_ascii_lowercase();\\n\\n day.to_string()\\n}\\n```\\n\\n:::caution `type_name`\\n\\nThis feature is still experimental and considered to be internal, it is not\\nadvised to use it any production code.\\n\\n:::\\n\\nAnd now we can get to the nastiest stuff :weary: We will **generate** the tests!\\n\\nWe want to be able to generate tests for sample input in a following way:\\n\\n```rust\\ntest_sample!(day_01, Day01, 42, 69);\\n```\\n\\nThere\'s not much we can do, so we will write a macro to generate the tests for us.\\n\\n```rust\\n#[macro_export]\\nmacro_rules! test_sample {\\n ($mod_name:ident, $day_struct:tt, $part_1:expr, $part_2:expr) => {\\n #[cfg(test)]\\n mod $mod_name {\\n use super::*;\\n\\n #[test]\\n fn test_part_1() {\\n let sample =\\n $day_struct::parse_input(&format!(\\"samples/{}.txt\\", $day_struct::day()));\\n assert_eq!($day_struct::part_1(&sample), $part_1);\\n }\\n\\n #[test]\\n fn test_part_2() {\\n let sample =\\n $day_struct::parse_input(&format!(\\"samples/{}.txt\\", $day_struct::day()));\\n assert_eq!($day_struct::part_2(&sample), $part_2);\\n }\\n }\\n };\\n}\\n```\\n\\nWe have used it in a similar way as macros in C/C++, one of the things that we\\ncan use to our advantage is defining \u201ctype\u201d of the parameters for the macro. All\\nparameters have their name prefixed with `$` sign and you can define various \u201cforms\u201d\\nof your macro. Let\'s go through it!\\n\\nWe have following parameters:\\n\\n- `$mod_name` which represents the name for the module with tests, it is typed\\n with `ident` which means that we want a valid identifier to be passed in.\\n- `$day_struct` represents the structure that will be used for tests, it is typed\\n with `tt` which represents a _token tree_, in our case it is a type.\\n- `$part_X` represents the expected output for the `X`th part and is of type `expr`\\n which literally means an _expression_.\\n\\nApart from that we need to use `#[macro_export]` to mark the macro as exported\\nfor usage outside of the module. Now our skeleton looks like:\\n\\n```rust\\nuse aoc_2022::*;\\n\\ntype Input = String;\\ntype Output = String;\\n\\nstruct DayXX;\\nimpl Solution for DayXX {\\n fn parse_input>(pathname: P) -> Input {\\n file_to_string(pathname)\\n }\\n\\n fn part_1(input: &Input) -> Output {\\n todo!()\\n }\\n\\n fn part_2(input: &Input) -> Output {\\n todo!()\\n }\\n}\\n\\nfn main() -> Result<()> {\\n // DayXX::run(\\"sample\\")\\n DayXX::main()\\n}\\n\\n// test_sample!(day_XX, DayXX, , );\\n```\\n\\n### Solution\\n\\nNot much to talk about, it is relatively easy to simulate.\\n\\n## [Day 10: Cathode-Ray Tube](https://adventofcode.com/2022/day/10)\\n\\n:::info tl;dr\\n\\nEmulating basic arithmetic operations on a CPU and drawing on CRT based on the\\nCPU\'s accumulator.\\n\\n:::\\n\\nIn this day I have discovered an issue with my design of the `Solution` trait.\\nAnd the issue is caused by different types of `Output` for the part 1 and part 2.\\n\\nProblem is relatively simple and consists of simulating a CPU, I have approached\\nit in a following way:\\n\\n```rust\\nfn evaluate_instructions(instructions: &[Instruction], mut out: Output) -> Output {\\n instructions\\n .iter()\\n .fold(State::new(), |state, instruction| {\\n state.execute(instruction, &mut out)\\n });\\n\\n out\\n}\\n```\\n\\nWe just take the instructions, we have some state of the CPU and we execute the\\ninstructions one-by-one. Perfect usage of the `fold` (or `reduce` as you may know\\nit from other languages).\\n\\nYou can also see that we have an `Output` type, so the question is how can we fix\\nthat problem. And the answer is very simple and _functional_. Rust allows you to\\nhave an `enumeration` that can _bear_ some other values apart from the type itself.\\n\\n:::tip\\n\\nWe could\'ve seen something like this with the `Result` type that can be\\ndefined as\\n\\n```rust\\nenum Result {\\n Ok(T),\\n Err(E)\\n}\\n```\\n\\n###### What does that mean though?\\n\\nWhen we have an `Ok` value, it has the result itself, and when we get an `Err`\\nvalue, it has the error. This also allows us to handle _results_ in a rather\\npretty way:\\n\\n```rust\\nmatch do_something(x) {\\n Ok(y) => {\\n println!(\\"SUCCESS: {}\\", y);\\n },\\n Err(y) => {\\n eprintln!(\\"ERROR: {}\\", y);\\n }\\n}\\n```\\n\\n:::\\n\\nMy solution has a following outline:\\n\\n```rust\\nfn execute(&self, i: &Instruction, output: &mut Output) -> State {\\n // execute the instruction\\n\\n // collect results if necessary\\n match output {\\n Output::Part1(x) => self.execute_part_1(y, x),\\n Output::Part2(x) => self.execute_part_2(y, x),\\n }\\n\\n // return the obtained state\\n new_state\\n}\\n```\\n\\nYou might think that it\'s a perfectly reasonable thing to do. Yes, **but** notice\\nthat the `match` statement doesn\'t _collect_ the changes in any way and also we\\npass `output` by `&mut`, so it is shared across each _iteration_ of the `fold`.\\n\\nThe dirty and ingenious thing is that `x`s are passed by `&mut` too and therefore\\nthey are directly modified by the helper functions. To sum it up and let it sit\\n\\n> We are **collecting** the result **into** an **enumeration** that is **shared**\\n> across **all** iterations of `fold`.\\n\\n### Solution\\n\\nSimilar to _Day 9_, but there are some technical details that can get you.\\n\\n## [Day 11: Monkey in the Middle](https://adventofcode.com/2022/day/11)\\n\\n:::info tl;dr\\n\\nSimulation of monkeys throwing stuff around and measuring your stress levels\\nwhile your stuff is being passed around.\\n\\n:::\\n\\nI think I decided to use regular expressions here for the first time, cause\\nparsing the input was a pain.\\n\\nAlso I didn\'t expect to implement Euclidean algorithm in Rust\u2026\\n\\n### Solution\\n\\nAgain, we\'re just running a simulation. Though I must admit it was very easy to\\nmake a small technical mistakes that could affect the final results very late.\\n\\n## [Day 12: Hill Climbing Algorithm](https://adventofcode.com/2022/day/12)\\n\\n:::info tl;dr\\n\\nFinding shortest path up the hill and also shortest path down to the ground while\\nalso rolling down the hill\u2026\\n\\n:::\\n\\nAs I have said in the _tl;dr_, we are looking for the shortest path, but the start\\nand goal differ for the part 1 and 2. So I have decided to refactor my solution\\nto a BFS algorithm that takes necessary parameters via functions:\\n\\n```rust\\nfn bfs(\\n graph: &[Vec], start: &Position, has_edge: F, is_target: G\\n) -> Option\\nwhere\\n F: Fn(&[Vec], &Position, &Position) -> bool,\\n G: Fn(&[Vec], &Position) -> bool\\n```\\n\\nWe pass the initial vertex from the caller and everything else is left to the BFS\\nalgorithm, based on the `has_edge` and `is_target` functions.\\n\\nThis was easy! And that is not very usual in Rust once you want to pass around\\nfunctions. :eyes:\\n\\n### Solution\\n\\nLooking for the shortest path\u2026 Must be Dijkstra, right? **Nope!** Half of the\\nReddit got jebaited though. In all fairness, nothing stops you from implementing\\nthe Dijkstra\'s algorithm for finding the shortest path, **but** if you know that\\nall connected vertices are in a unit (actually $d = 1$) distance from each other,\\nthen you know that running Dijkstra is equivalent to running BFS, only with worse\\ntime complexity, because of the priority heap instead of the queue.\\n\\n## [Day 13: Distress Signal](https://adventofcode.com/2022/day/13)\\n\\n:::info tl;dr\\n\\nProcessing packets with structured data from the distress signal.\\n\\n:::\\n\\nYou can implement a lot of traits if you want to. It is _imperative_ to implement\\nordering on the packets. I had a typo, so I also proceeded to implement a `Display`\\ntrait for debugging purposes:\\n\\n```rust\\nimpl Display for Packet {\\n fn fmt(&self, f: &mut std::fmt::Formatter<\'_>) -> std::fmt::Result {\\n match self {\\n Packet::Integer(x) => write!(f, \\"{x}\\"),\\n Packet::List(lst) => write!(f, \\"[{}]\\", lst.iter().map(|p| format!(\\"{p}\\")).join(\\",\\")),\\n }\\n }\\n}\\n```\\n\\n### Solution\\n\\nA lot of technical details\u2026 Parsing is nasty too\u2026\\n\\n## [Day 14: Regolith Reservoir](https://adventofcode.com/2022/day/14)\\n\\n:::info tl;dr\\n\\nLet\'s simulate falling sand grain-by-grain.\\n\\n:::\\n\\nAgain, both parts are relatively similar with minimal changes, so it is a good\\nidea to refactor it a bit. Similar approach to the [BFS above]. Also this is the\\nfirst day where I ran into efficiency issues and had to redo my solution to speed\\nit up just a bit.\\n\\n### Solution\\n\\nTedious.\\n\\n## Post Mortem\\n\\n### Indexing\\n\\nI was asked about the indexing after publishing the blog. And truly it is rather\\ncomplicated topic, especially after releasing `SliceIndex` trait. I couldn\'t\\nleave it be, so I tried to implement the `Index` and `IndexMut` trait.\\n\\n:::note\\n\\nI have also mentioned that the `SliceIndex` trait is `unsafe`, but truth be told,\\nonly _unsafe_ part are the 2 methods that are named `*unchecked*`. Anyways, I will\\nbe implementing the `Index*` traits for now, rather than the `SliceIndex`.\\n\\n:::\\n\\nIt\'s relatively straightforward\u2026\\n\\n```rust\\nimpl Index> for [C]\\nwhere\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: Index,\\n{\\n type Output = C::Output;\\n\\n fn index(&self, index: Vector2D) -> &Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &self[y][x]\\n }\\n}\\n\\nimpl IndexMut> for [C]\\nwhere\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: IndexMut,\\n{\\n fn index_mut(&mut self, index: Vector2D) -> &mut Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &mut self[y][x]\\n }\\n}\\n```\\n\\nWe can see a lot of similarities to the implementation of `index` and `index_mut`\\nfunctions. In the end, they are 1:1, just wrapped in the trait that provides a\\nsyntax sugar for `container[idx]`.\\n\\n:::note\\n\\nI have also switched from using the `TryFrom` to `TryInto` trait, since it better\\nmatches what we are using, the `.try_into` rather than `usize::try_from`.\\n\\nAlso implementing `TryFrom` automatically provides you with a `TryInto` trait,\\nsince it is relatively easy to implement. Just compare the following:\\n\\n```rust\\npub trait TryFrom: Sized {\\n type Error;\\n\\n fn try_from(value: T) -> Result;\\n}\\n\\npub trait TryInto: Sized {\\n type Error;\\n\\n fn try_into(self) -> Result;\\n}\\n```\\n\\n:::\\n\\nOK, so we have our trait implemented, we should be able to use `container[index]`,\\nright? Yes\u2026 but actually no :frowning:\\n\\n```\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:26:18\\n |\\n26 | if trees[pos] > tallest {\\n | ^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:30:28\\n |\\n30 | max(tallest, trees[pos])\\n | ^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:52:28\\n |\\n52 | let max_height = trees[position];\\n | ^^^^^^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n```\\n\\nWhy? We have it implemented for the slices (`[C]`), why doesn\'t it work? Well,\\nthe fun part consists of the fact that in other place, where we were using it,\\nwe were passing the `&[Vec]`, but this is coming from a helper functions that\\ntake `&Vec>` instead. And\u2026 we don\'t implement `Index` and `IndexMut` for\\nthose. Just for the slices. \ud83e\udd2f _What are we going to do about it?_\\n\\nWe can either start copy-pasting or be smarter about it\u2026 I choose to be smarter,\\nso let\'s implement a macro! The only difference across the implementations are\\nthe types of the outer containers. Implementation doesn\'t differ **at all**!\\n\\nImplementing the macro can be done in a following way:\\n\\n```rust\\nmacro_rules! generate_indices {\\n ($container:ty) => {\\n impl Index> for $container\\n where\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: Index,\\n {\\n type Output = C::Output;\\n\\n fn index(&self, index: Vector2D) -> &Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &self[y][x]\\n }\\n }\\n\\n impl IndexMut> for $container\\n where\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: IndexMut,\\n {\\n fn index_mut(&mut self, index: Vector2D) -> &mut Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &mut self[y][x]\\n }\\n }\\n };\\n}\\n```\\n\\nAnd now we can simply do\\n\\n```rust\\ngenerate_indices!(VecDeque);\\ngenerate_indices!([C]);\\ngenerate_indices!(Vec);\\n// generate_indices!([C; N], const N: usize);\\n```\\n\\nThe last type (I took the inspiration from the implementations of the `Index` and\\n`IndexMut` traits) is a bit problematic, because of the `const N: usize` part,\\nwhich I haven\'t managed to be able to parse. And that\'s how I got rid of the error.\\n\\n:::note\\n\\nIf I were to use 2D-indexing over `[C; N]` slices, I\'d probably just go with the\\ncopy-paste, cause the cost of this \u201cmonstrosity\u201d outweighs the benefits of no DRY.\\n\\n:::\\n\\n#### Cause of the problem\\n\\nThis issue is relatively funny. If you don\'t use any type aliases, just the raw\\ntypes, you\'ll get suggested certain changes by the _clippy_. For example if you\\nconsider the following piece of code\\n\\n```rust\\nfn get_sum(nums: &Vec) -> i32 {\\n nums.iter().sum()\\n}\\n\\nfn main() {\\n let nums = vec![1, 2, 3];\\n println!(\\"Sum: {}\\", get_sum(&nums));\\n}\\n```\\n\\nand you run _clippy_ on it, you will get\\n\\n```\\nChecking playground v0.0.1 (/playground)\\nwarning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do\\n --\x3e src/main.rs:1:18\\n |\\n1 | fn get_sum(nums: &Vec) -> i32 {\\n | ^^^^^^^^^ help: change this to: `&[i32]`\\n |\\n = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg\\n = note: `#[warn(clippy::ptr_arg)]` on by default\\n\\nwarning: `playground` (bin \\"playground\\") generated 1 warning\\n Finished dev [unoptimized + debuginfo] target(s) in 0.61s\\n```\\n\\nHowever, if you introduce a type alias, such as\\n\\n```rust\\ntype Numbers = Vec;\\n```\\n\\nThen _clippy_ won\'t say anything, cause there is literally nothing to suggest.\\nHowever the outcome is not the same\u2026\\n\\n[_advent of code_]: https://adventofcode.com\\n[bfs above]: #day-12-hill-climbing-algorithm"},{"id":"aoc-2022/1st-week","metadata":{"permalink":"/blog/aoc-2022/1st-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/01-week-1.md","source":"@site/blog/aoc-2022/01-week-1.md","title":"1st week of Advent of Code \'22 in Rust","description":"Surviving first week in Rust.","date":"2022-12-15T01:15:00.000Z","formattedDate":"December 15, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":12.4,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"1st week of Advent of Code \'22 in Rust","description":"Surviving first week in Rust.","date":"2022-12-15T01:15","slug":"aoc-2022/1st-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"2nd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/2nd-week"},"nextItem":{"title":"Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/intro"}},"content":"Let\'s go through the first week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n:::note\\n\\nIf you wish to have a look at the solutions, you can follow them on my [GitLab].\\nMore specifically in the [`/src/bin/`].\\n\\n:::\\n\\nI will try to summarize my experience with using Rust for the AoC. Trying it out\\nages ago, I believe it will be _pain and suffering_, but we will see. For each\\nday I will also try to give a tl;dr of the problem, so that you can better imagine\\nthe relation to my woes or :+1: moments.\\n\\n## [Day 1: Calorie Counting](https://adventofcode.com/2022/day/1)\\n\\n:::info tl;dr\\n\\nAs the name suggests, we get the calories of the food contained in the elves\\nbackpacks and we want to choose the elf that has the most food ;)\\n\\n:::\\n\\n> Wakey wakey!\\n\\nProgramming in Rust at 6am definitely hits. I\'ve also forgotten to mention how I\\nhandle samples. With each puzzle you usually get a sample input and expected\\noutput. You can use them to verify that your solution works, or usually doesn\'t.\\n\\nAt first I\'ve decided to put asserts into my `main`, something like\\n\\n```rust\\nassert_eq!(part_1(&sample), 24000);\\ninfo!(\\"Part 1: {}\\", part_1(&input));\\n\\nassert_eq!(part_2(&sample), 45000);\\ninfo!(\\"Part 2: {}\\", part_2(&input));\\n```\\n\\nHowever, once you get further, the sample input may take some time to run itself.\\nSo in the end, I have decided to turn them into unit tests:\\n\\n```rust\\n#[cfg(test)]\\nmod tests {\\n use super::*;\\n\\n #[test]\\n fn test_part_1() {\\n let sample = parse_input(\\"samples/day01.txt\\");\\n assert_eq!(part_1(&sample), 24000);\\n }\\n\\n #[test]\\n fn test_part_2() {\\n let sample = parse_input(\\"samples/day01.txt\\");\\n assert_eq!(part_2(&sample), 45000);\\n }\\n}\\n```\\n\\nAnd later on I have noticed, it\'s hard to tell the difference between the days,\\nso I further renamed the `mod` from generic `tests` to reflect the days.\\n\\nAlso after finishing the first day puzzle, I have installed an [`sccache`] to\\ncache the builds, so that the build time is lower, cause it was kinda unbearable.\\n\\n### Solution\\n\\nWell, it\'s a pretty simple problem. You just take the input, sum the calories and\\nfind the biggest one. However, if we try to generalize to more than the biggest\\none, the fun appears. We have few options:\\n\\n- keep all the calories, sort them, take what we need\\n- keep all the calories and use max heap\\n- use min heap and maintain at most N calories that we need\\n\\n## [Day 2: Rock Paper Scissors](https://adventofcode.com/2022/day/2)\\n\\n:::info tl;dr\\n\\nYou want to know what score did you achieve while playing _Rock Paper Scissors_.\\nAnd then you want to be strategic about it.\\n\\n:::\\n\\nApart from the technical details of the puzzle, it went relatively smooth.\\n\\n### Solution\\n\\nI took relatively na\xefve approach and then tried to simplify it.\\n\\n## [Day 3: Rucksack Reorganization](https://adventofcode.com/2022/day/3)\\n\\n:::info tl;dr\\n\\nLet\'s go reorganize elves\' backpacks! Each backpacks has 2 compartments and you\\nwant to find the common item among those compartments. Each of them has priority,\\nyou care only about the sum.\\n\\n:::\\n\\nThis is the day where I started to fight the compiler and neither of us decided\\nto give up. Let\'s dive into it \\\\o/\\n\\n:::tip Fun fact\\n\\nFighting the compiler took me 30 minutes.\\n\\n:::\\n\\nWe need to find a common item among 2 collections, that\'s an easy task, right?\\nWe can construct 2 sets and find an intersection:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3].iter().collect();\\nlet bottom: HashSet = [3, 4, 5].iter().collect();\\n```\\n\\nNow, the first issue that we encounter is caused by the fact that we are using\\na slice (the `[\u2026]`), iterator of that returns **references** to the numbers.\\nAnd we get immediately yelled at by the compiler, because the numbers are discarded\\nafter running the `.collect`. To fix this, we can use `.into_iter`:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5].into_iter().collect();\\n```\\n\\nThis way the numbers will get copied instead of referenced. OK, let\'s find the\\nintersection of those 2 collections:\\n\\n```rust\\nprintln!(\\"Common elements: {:?}\\", top.intersection(&bottom));\\n```\\n\\n```\\nCommon elements: [3]\\n```\\n\\n:::caution\\n\\nNotice that we need to do `&bottom`. It explicitly specifies that `.intersection`\\n**borrows** the `bottom`, i.e. takes an immutable reference to it.\\n\\n:::\\n\\nThat\'s what we want, right? Looks like it! \\\\o/\\n\\nNext part wants us to find the common element among all of the backpacks. OK, so\\nthat should be fairly easy, we have an intersection and we want to find intersection\\nover all of them.\\n\\nLet\'s have a look at the type of the `.intersection`\\n\\n```rust\\npub fn intersection<\'a>(\\n\xa0\xa0\xa0\xa0&\'a self,\\n\xa0\xa0\xa0\xa0other: &\'a HashSet\\n) -> Intersection<\'a, T, S>\\n```\\n\\nOK\u2026 Huh\u2026 But we have an example there!\\n\\n```rust\\nlet intersection: HashSet<_> = a.intersection(&b).collect();\\n```\\n\\nCool, that\'s all we need.\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\n```\\nIntersection: {3, 4}\\n```\\n\\nCool, so let\'s do the intersection with the `top_2`:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).collect();\\nlet intersection: HashSet<_> = intersection.intersection(&top_2).collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\nAnd we get yelled at by the compiler:\\n\\n```\\nerror[E0308]: mismatched types\\n --\x3e src/main.rs:10:58\\n |\\n10 | let intersection: HashSet<_> = intersection.intersection(&top_2).collect();\\n | ------------ ^^^^^^ expected `&i32`, found `i32`\\n | |\\n | arguments to this function are incorrect\\n |\\n = note: expected reference `&HashSet<&i32>`\\n found reference `&HashSet`\\n```\\n\\n/o\\\\ What the hell is going on here? Well, the funny thing is, that this operation\\ndoesn\'t return the elements themselves, but the references to them and when we pass\\nthe third set, it has just the values themselves, without any references.\\n\\n:::tip\\n\\nIt may seem as a very weird decision, but in fact it makes some sense\u2026 It allows\\nyou to do intersection of items that may not be possible to copy. Overall this is\\na \u201ctax\u201d for having a borrow checker ~~drilling your ass~~ having your back and\\nmaking sure you\'re not doing something naughty that may cause an **undefined**\\n**behavior**.\\n\\n:::\\n\\nTo resolve this we need to get an iterator that **clones** the elements:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).cloned().collect();\\nlet intersection: HashSet<_> = intersection.intersection(&top_2).cloned().collect();\\nlet intersection: HashSet<_> = intersection.intersection(&bottom_2).cloned().collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\n```\\nIntersection: {4}\\n```\\n\\n### Solution\\n\\nThe approach is pretty simple, if you omit the _1on1 with the compiler_. You just\\nhave some fun with the set operations :)\\n\\n## [Day 4: Camp Cleanup](https://adventofcode.com/2022/day/4)\\n\\n:::info tl;dr\\n\\nElves are cleaning up the camp and they got overlapping sections to clean up.\\nFind how many overlap and can take the day off.\\n\\n:::\\n\\n[`RangeInclusive`] is your friend not an enemy :)\\n\\n### Solution\\n\\nRelatively easy, you just need to parse the input and know what you want. Rust\'s\\n`RangeInclusive` type helped a lot, cause it took care of all abstractions.\\n\\n## [Day 5: Supply Stacks](https://adventofcode.com/2022/day/5)\\n\\n:::info tl;dr\\n\\nLet\'s play with stacks of crates.\\n\\n:::\\n\\nVery easy problem with very annoying input. You can judge yourself:\\n\\n```\\n [D]\\n[N] [C]\\n[Z] [M] [P]\\n 1 2 3\\n\\nmove 1 from 2 to 1\\nmove 3 from 1 to 3\\nmove 2 from 2 to 1\\nmove 1 from 1 to 2\\n```\\n\\nGood luck transforming that into something reasonable :)\\n\\n:::tip Fun fact\\n\\nTook me 40 minutes to parse this reasonably, including fighting the compiler.\\n\\n:::\\n\\n### Solution\\n\\nFor the initial solution I went with a manual solution (as in _I have done all_\\n_the work_. Later on I have decided to explore the `std` and interface of the\\n`std::vec::Vec` and found [`split_off`] which takes an index and splits (duh)\\nthe vector:\\n\\n```rust\\nlet mut vec = vec![1, 2, 3];\\nlet vec2 = vec.split_off(1);\\nassert_eq!(vec, [1]);\\nassert_eq!(vec2, [2, 3]);\\n```\\n\\nThis helped me simplify my solution a lot and also get rid of some _edge cases_.\\n\\n## [Day 6: Tuning Trouble](https://adventofcode.com/2022/day/6)\\n\\n:::info tl;dr\\n\\nFinding start of the message in a very weird protocol. Start of the message is\\ndenoted by $N$ unique consecutive characters.\\n\\n:::\\n\\n### Solution\\n\\nA lot of different approaches, knowing that we are dealing with input consisting\\nsolely of ASCII letters, I bit the bullet and went with sliding window and\\nconstructing sets from that window, checking if the set is as big as the window.\\n\\nOne possible optimization could consist of keeping a bit-vector (i.e. `usize`\\nvariable) of encountered characters and updating it as we go. However this has\\na different issue and that is removal of the characters from the left side of the\\nwindow. We don\'t know if the same character is not included later on.\\n\\nOther option is to do similar thing, but keeping the frequencies of the letters,\\nand again knowing we have only ASCII letters we can optimize by having a vector\\nof 26 elements that keeps count for each lowercase letter.\\n\\n## [Day 7: No Space Left On Device](https://adventofcode.com/2022/day/7)\\n\\n:::info tl;dr\\n\\nLet\'s simulate [`du`] to get some stats about our file system and then pinpoint\\ndirectories that take a lot of space and should be deleted.\\n\\n:::\\n\\n> I was waiting for this moment, and yet it got me!\\n> _imagine me swearing for hours_\\n\\n### Solution\\n\\nWe need to \u201c_build_\u201d a file system from the input that is given in a following form:\\n\\n```\\n$ cd /\\n$ ls\\ndir a\\n14848514 b.txt\\n8504156 c.dat\\ndir d\\n$ cd a\\n$ ls\\ndir e\\n29116 f\\n2557 g\\n62596 h.lst\\n$ cd e\\n$ ls\\n584 i\\n$ cd ..\\n$ cd ..\\n$ cd d\\n$ ls\\n4060174 j\\n8033020 d.log\\n5626152 d.ext\\n7214296 k\\n```\\n\\nThere are few ways in which you can achieve this and also you can assume some\\npreconditions, but why would we do that, right? :)\\n\\nYou can \u201cslap\u201d this in either [`HashMap`] or [`BTreeMap`] and call it a day.\\nAnd that would be boring\u2026\\n\\n:::tip\\n\\n`BTreeMap` is quite fitting for this, don\'t you think?\\n\\n:::\\n\\nI always wanted to try allocation on heap in Rust, so I chose to implement a tree.\\nI fought with the `Box` for some time and was losing\u2026\\n\\nThen I looked up some implementations of trees or linked lists and decided to try\\n`Rc>`. And I got my _ass whopped_ by the compiler once again. /o\\\\\\n\\n:::tip\\n\\n`Box` represents a dynamically allocated memory on heap. It is a single pointer,\\nyou can imagine this as `std::unique_ptr` in C++.\\n\\n`Rc` represents a dynamically allocated memory on heap. On top of that it is\\n_reference counted_ (that\'s what the `Rc` stands for). You can imagine this as\\n`std::shared_ptr` in C++.\\n\\nNow the fun stuff. Neither of them lets you **mutate** the contents of the memory.\\n\\n`Cell` allows you to mutate the memory. Can be used reasonably with types that\\ncan be copied, because the memory safety is guaranteed by copying the contents\\nwhen there is more than one **mutable** reference to the memory.\\n\\n`RefCell` is similar to the `Cell`, but the borrowing rules (how many mutable\\nreferences are present) are checked dynamically.\\n\\nSo in the end, if you want something like `std::shared_ptr` in Rust, you want\\nto have `Rc>`.\\n\\n:::\\n\\nSo, how are we going to represent the file system then? We will use an enumeration,\\nhehe, which is an algebraic data type that can store some stuff in itself :weary:\\n\\n```rust\\ntype FileHandle = Rc>;\\n\\n#[derive(Debug)]\\nenum AocFile {\\n File(usize),\\n Directory(BTreeMap),\\n}\\n```\\n\\nLet\'s go over it! `FileHandle` represents dynamically allocated `AocFile`, not\\nmuch to discuss. What does the `#[derive(Debug)]` do though? It lets us to print\\nout the value of that enumeration, it\'s derived, so it\'s not as good as if we had\\nimplemented it ourselves, but it\'s good enough for debugging, hence the name.\\n\\nNow to the fun part! `AocFile` value can be represented in two ways:\\n\\n- `File(usize)`, e.g. `AocFile::File(123)` and we can pattern match it, if we\\n need to\\n- `Directory(BTreeMap)` will represent the directory and will\\n contain map matching the name of the files (or directories) within to their\\n respective file handles\\n\\nI will omit the details about constructing this file system, cause there are a lot\\nof technicalities introduced by the nature of the input. However if you are\\ninterested, you can have a look at my solution.\\n\\nWe need to find small enough directories and also find the smallest directory that\\nwill free enough space. Now the question is, how could we do that. And there are\\nmultiple ways I will describe.\\n\\nI have chosen to implement [_tree catamorphism_] :weary:. It is basically a fold\\nover a tree data structure. We descent down into the leaves and propagate computed\\nresults all the way to the root. You can also notice that this approach is very\\nsimilar to _dynamic programming_, we find overlapping sections of the computation\\nand try to minimize the additional work (in this case: we need to know sizes of\\nour descendants, but we have already been there).\\n\\nAnother approach that has been suggested to me few days later is running DFS on\\nthe graph. And, funnily enough, we would still need to combine what we found in\\nthe branches where we descent. So in the end, it would work very similarly to my\\nsolution.\\n\\nOne of the more exotic options would be precomputing the required information at\\nthe same time as parsing. That could be done by adding additional fields to the\\nnodes which would allow storing such information and updating it as we construct\\nthe file system.\\n\\n## Post Mortem\\n\\nThings that have been brought up in the discussion later on.\\n\\n### `Rc` vs `Rc>`\\n\\nIt has been brought up that I have a contradicting statement regarding the\\ndynamically allocated memory. Specifically:\\n\\n- You can imagine `Rc` as an `std::shared_ptr` (in C++)\\n- When you want an equivalent of `std::shared_ptr`, you want to use\\n `Rc>`\\n\\nNow, in Rust it is a bit more complicated, because the type that represents the\\n\u201cshared pointer\u201d is `Rc`. What `RefCell` does is making sure that there is\\nonly one \u201cowner\u201d of a mutable reference at a time (and dynamically, as opposed\\nto the `Cell`).\\n\\nTherefore to be precise and correct about the equivalents of `std::shared_ptr`\\nin Rust, we can say that\\n\\n- `Rc` is an equivalent of a `const std::shared_ptr`,\\n- and `Rc>` is an equivalent of a `std::shared_ptr`.\\n\\nYou can easily see that they only differ in the mutability. (And even that is not\\nas simple as it seems, because there is also `Cell`)\\n\\n[_advent of code_]: https://adventofcode.com\\n[gitlab]: https://gitlab.com/mfocko/advent-of-code-2022\\n[`/src/bin/`]: https://gitlab.com/mfocko/advent-of-code-2022/-/tree/main/src/bin\\n[`sccache`]: https://github.com/mozilla/sccache\\n[`rangeinclusive`]: https://doc.rust-lang.org/std/ops/struct.RangeInclusive.html\\n[`split_off`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.split_off\\n[`du`]: https://www.man7.org/linux/man-pages/man1/du.1.html\\n[`hashmap`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html\\n[`btreemap`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html\\n[_tree catamorphism_]: https://en.wikipedia.org/wiki/Catamorphism#Tree_fold"},{"id":"aoc-2022/intro","metadata":{"permalink":"/blog/aoc-2022/intro","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/00-intro.md","source":"@site/blog/aoc-2022/00-intro.md","title":"Advent of Code \'22 in Rust","description":"Preparing for Advent of Code \'22.","date":"2022-12-14T21:45:00.000Z","formattedDate":"December 14, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":8.665,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Advent of Code \'22 in Rust","description":"Preparing for Advent of Code \'22.","date":"2022-12-14T21:45","slug":"aoc-2022/intro","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"1st week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/1st-week"}},"content":"Let\'s talk about the preparations for this year\'s [_Advent of Code_].\\n\\n\x3c!--truncate--\x3e\\n\\n## Choosing a language\\n\\nWhen choosing a language for AoC, you usually want a language that gives you a\\nquick feedback which allows you to iterate quickly to the solution of the puzzle.\\nOne of the most common choices is Python, many people also use JavaScript or Ruby.\\n\\nGiven the competitive nature of the AoC and popularity among competitive programming,\\nC++ might be also a very good choice. Only if you are familiar with it, I guess\u2026\\n\\nIf you want a challenge, you might also choose to rotate the languages each day.\\nThough I prefer to use only one language.\\n\\nFor this year I have been deciding between _Rust_, _C++_ and _Pascal_ or _Ada_.\\n\\nI have tried Rust last year and have survived with it for 3 days and then gave\\nup and switched to _Kotlin_, which was pretty good given it is \u201cJava undercover\u201d.\\nI pretty much like the ideas behind Rust, I am not sure about the whole cult and\\nimplementation of those ideas though. After some years with C/C++, I would say\\nthat Rust feels _too safe_ for my taste and tries to \u201c_punish me_\u201d even for the\\nmost trivial things.\\n\\nC++ is a very robust, but also comes with a wide variety of options providing you\\nthe ability to shoot yourself in the leg. I have tried to solve few days of previous\\nAdvent of Code events, it was _relatively easy_ to solve the problems in C++, given\\nthat I do not admit writing my own iterator for `enumerate`\u2026\\n\\nPascal or Ada were meme choices :) Ada is heavily inspired by Pascal and has a\\npretty nice standard library that offers enough to be able to quickly solve some\\nproblems in it. However the toolkit is questionable :/\\n\\n## Choosing libraries\\n\\n## Preparations for Rust\\n\\nAll of the sources, later on including solutions, can be found at my\\n[GitLab].\\n\\n### Toolkit\\n\\nSince we are using Rust, we are going to use a [Cargo] and more than likely VSCode\\nwith [`rust-analyzer`]. Because of my choice of libraries, we will also introduce\\na `.envrc` file that can be used by [`direnv`], which allows you to set specific\\nenvironment variables when you enter a directory. In our case, we will use\\n\\n```bash\\n# to show nice backtrace when using the color-eyre\\nexport RUST_BACKTRACE=1\\n\\n# to catch logs generated by tracing\\nexport RUST_LOG=trace\\n```\\n\\nAnd for the one of the most obnoxious things ever, we will use a script to download\\nthe inputs instead of \u201c_clicking, opening and copying to a file_\u201d[^1]. There is\\nno need to be _fancy_, so we will adjust Python script by Martin[^2].\\n\\n```py\\n#!/usr/bin/env python3\\n\\nimport datetime\\nimport yaml\\nimport requests\\nimport sys\\n\\n\\ndef load_config():\\n with open(\\"env.yaml\\", \\"r\\") as f:\\n js = yaml.load(f, Loader=yaml.Loader)\\n return js[\\"session\\"], js[\\"year\\"]\\n\\n\\ndef get_input(session, year, day):\\n return requests.get(\\n f\\"https://adventofcode.com/{year}/day/{day}/input\\",\\n cookies={\\"session\\": session},\\n headers={\\n \\"User-Agent\\": \\"{repo} by {mail}\\".format(\\n repo=\\"gitlab.com/mfocko/advent-of-code-2022\\",\\n mail=\\"me@mfocko.xyz\\",\\n )\\n },\\n ).content.decode(\\"utf-8\\")\\n\\n\\ndef main():\\n day = datetime.datetime.now().day\\n if len(sys.argv) == 2:\\n day = sys.argv[1]\\n\\n session, year = load_config()\\n problem_input = get_input(session, year, day)\\n\\n with open(f\\"./inputs/day{day:>02}.txt\\", \\"w\\") as f:\\n f.write(problem_input)\\n\\n\\nif __name__ == \\"__main__\\":\\n main()\\n```\\n\\nIf the script is called without any arguments, it will deduce the day from the\\nsystem, so we do not need to change the day every morning. It also requires a\\nconfiguration file:\\n\\n```yaml\\n# env.yaml\\nsession: \u2039your session cookie\u203a\\nyear: 2022\\n```\\n\\n### Libraries\\n\\nLooking at the list of the libraries, I have chosen \u201ca lot\u201d of them. Let\'s walk\\nthrough each of them.\\n\\n[`tracing`] and [`tracing-subscriber`] are the crates that can be used for tracing\\nand logging of your Rust programs, there are also other crates that can help you\\nwith providing backtrace to the Sentry in case you have deployed your application\\nsomewhere and you want to watch over it. In our use case we will just utilize the\\nmacros for debugging in the terminal.\\n\\n[`thiserror`], [`anyhow`] and [`color-eyre`] are used for error reporting.\\n`thiserror` is a very good choice for libraries, cause it extends the `Error`\\nfrom the `std` and allows you to create more convenient error types. Next is\\n`anyhow` which kinda builds on top of the `thiserror` and provides you with simpler\\nerror handling in binaries[^3]. And finally we have `color-eyre` which, as I found\\nout later, is a colorful (_wink wink_) extension of `eyre` which is fork of `anyhow`\\nwhile supporting customized reports.\\n\\nIn the end I have decided to remove `thiserror` and `anyhow`, since first one is\\nsuitable for libraries and the latter was basically fully replaced by `{color-,}eyre`.\\n\\n[`regex`] and [`lazy_static`] are a very good and also, I hope, self-explanatory\\ncombination. `lazy_static` allows you to have static variables that must be initialized\\nduring runtime.\\n\\n[`itertools`] provides some nice extensions to the iterators from the `std`.\\n\\n### My own \u201clibrary\u201d\\n\\nWhen creating the crate for this year\'s Advent of Code, I have chosen a library\\ntype. Even though standard library is huge, some things might not be included and\\nalso we can follow _KISS_. I have 2 modules that my \u201clibrary\u201d exports, one for\\nparsing and one for 2D vector (that gets used quite often during Advent of Code).\\n\\nKey part is, of course, processing the input and my library exports following\\nfunctions that get used a lot:\\n\\n```rust\\n/// Reads file to the string.\\npub fn file_to_string>(pathname: P) -> String;\\n\\n/// Reads file and returns it as a vector of characters.\\npub fn file_to_chars>(pathname: P) -> Vec;\\n\\n/// Reads file and returns a vector of parsed structures. Expects each structure\\n/// on its own line in the file. And `T` needs to implement `FromStr` trait.\\npub fn file_to_structs, T: FromStr>(pathname: P) -> Vec\\nwhere\\n ::Err: Debug;\\n\\n/// Converts iterator over strings to a vector of parsed structures. `T` needs\\n/// to implement `FromStr` trait and its error must derive `Debug` trait.\\npub fn strings_to_structs(\\n iter: impl Iterator\\n) -> Vec\\nwhere\\n ::Err: std::fmt::Debug,\\n U: Deref;\\n\\n/// Reads file and returns it as a vector of its lines.\\npub fn file_to_lines>(pathname: P) -> Vec;\\n```\\n\\nAs for the vector, I went with a rather simple implementation that allows only\\naddition of the vectors for now and accessing the elements via functions `x()`\\nand `y()`. Also the vector is generic, so we can use it with any numeric type we\\nneed.\\n\\n### Skeleton\\n\\nWe can also prepare a template to quickly bootstrap each of the days. We know\\nthat each puzzle has 2 parts, which means that we can start with 2 functions that\\nwill solve them.\\n\\n```rust\\nfn part1(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn part2(input: &Input) -> Output {\\n todo!()\\n}\\n```\\n\\nBoth functions take reference to the input and return some output (in majority\\nof puzzles, it is the same type). `todo!()` can be used as a nice placeholder,\\nit also causes a panic when reached and we could also provide some string with\\nan explanation, e.g. `todo!(\\"part 1\\")`. We have not given functions a specific\\ntype and to avoid as much copy-paste as possible, we will introduce type aliases.\\n\\n```rust\\ntype Input = String;\\ntype Output = i32;\\n```\\n\\n:::tip\\n\\nThis allows us to quickly adjust the types only in one place without the need to\\ndo _regex-replace_ or replace them manually.\\n\\n:::\\n\\nFor each day we get a personalized input that is provided as a text file. Almost\\nall the time, we would like to get some structured type out of that input, and\\ntherefore it makes sense to introduce a new function that will provide the parsing\\nof the input.\\n\\n```rust\\nfn parse_input(path: &str) -> Input {\\n todo!()\\n}\\n```\\n\\nThis \u201cparser\u201d will take a path to the file, just in case we would like to run the\\nsample instead of input.\\n\\nOK, so now we can write a `main` function that will take all of the pieces and\\nrun them.\\n\\n```rust\\nfn main() {\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n println!(\\"Part 1: {}\\", part_1(&input));\\n println!(\\"Part 2: {}\\", part_2(&input));\\n}\\n```\\n\\nThis would definitely do :) But we have installed a few libraries and we want to\\nuse them. In this part we are going to utilize _[`tracing`]_ (for tracing, duh\u2026)\\nand _[`color-eyre`]_ (for better error reporting, e.g. from parsing).\\n\\n```rust\\nfn main() -> Result<()> {\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n info!(\\"Part 1: {}\\", part_1(&input));\\n info!(\\"Part 2: {}\\", part_2(&input));\\n\\n Ok(())\\n}\\n```\\n\\nThe first statement will set up tracing and configure it to print out the logs to\\nterminal, based on the environment variable. We also change the formatting a bit,\\nsince we do not need all the _fancy_ features of the logger. Pure initialization\\nwould get us logs like this:\\n\\n```\\n2022-12-11T19:53:19.975343Z INFO day01: Part 1: 0\\n```\\n\\nHowever after running that command, we will get the following:\\n\\n```\\n INFO src/bin/day01.rs:35: Part 1: 0\\n```\\n\\nAnd the `color_eyre::install()?` is quite straightforward. We just initialize the\\nerror reporting by _color eyre_.\\n\\n:::caution\\n\\nNotice that we had to add `Ok(())` to the end of the function and adjust the\\nreturn type of the `main` to `Result<()>`. It is caused by the _color eyre_ that\\ncan be installed only once and therefore it can fail, that is how we got the `?`\\nat the end of the `::install` which _unwraps_ the **\xbbresult\xab** of the installation.\\n\\n:::\\n\\nOverall we will get to a template like this:\\n\\n```rust\\nuse aoc_2022::*;\\n\\nuse color_eyre::eyre::Result;\\nuse tracing::info;\\nuse tracing_subscriber::EnvFilter;\\n\\ntype Input = String;\\ntype Output = i32;\\n\\nfn parse_input(path: &str) -> Input {\\n todo!()\\n}\\n\\nfn part1(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn part2(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn main() -> Result<()> {\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n info!(\\"Part 1: {}\\", part_1(&input));\\n info!(\\"Part 2: {}\\", part_2(&input));\\n\\n Ok(())\\n}\\n```\\n\\n[^1]:\\n Copy-pasting might be a relaxing thing to do, but you can also discover\\n nasty stuff about your PC. See [this Reddit post and the comment].\\n\\n[^2]: [GitHub profile](https://github.com/martinjonas)\\n[^3]:\\n Even though you can use it even for libraries, but handling errors from\\n libraries using `anyhow` is nasty\u2026 You will be the stinky one ;)\\n\\n[_advent of code_]: https://adventofcode.com\\n[gitlab]: https://gitlab.com/mfocko/advent-of-code-2022\\n[cargo]: https://doc.rust-lang.org/cargo/\\n[`rust-analyzer`]: https://rust-analyzer.github.io/\\n[`direnv`]: https://direnv.net/\\n[`tracing`]: https://crates.io/crates/tracing\\n[`tracing-subscriber`]: https://crates.io/crates/tracing-subscriber\\n[`thiserror`]: https://crates.io/crates/thiserror\\n[`anyhow`]: https://crates.io/crates/anyhow\\n[`color-eyre`]: https://crates.io/crates/color-eyre\\n[`regex`]: https://crates.io/crates/regex\\n[`lazy_static`]: https://crates.io/crates/lazy_static\\n[`itertools`]: https://crates.io/crates/itertools\\n[this reddit post and the comment]: https://www.reddit.com/r/adventofcode/comments/zb98pn/comment/iyq0ono"}]}')}}]); \ No newline at end of file diff --git a/assets/js/4200b1a9.c79abe7a.js b/assets/js/4200b1a9.c79abe7a.js new file mode 100644 index 0000000..bb1faa9 --- /dev/null +++ b/assets/js/4200b1a9.c79abe7a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[866],{24612:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/01/28/rust-opinion","metadata":{"permalink":"/blog/2024/01/28/rust-opinion","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2024-01-28-rust-opinion.md","source":"@site/blog/2024-01-28-rust-opinion.md","title":"Mixed feelings on Rust","description":"Discussing my mixed feelings about the Rust language.\\n","date":"2024-01-28T00:00:00.000Z","formattedDate":"January 28, 2024","tags":[{"label":"rust","permalink":"/blog/tags/rust"},{"label":"memory safety","permalink":"/blog/tags/memory-safety"},{"label":"cult","permalink":"/blog/tags/cult"},{"label":"hype","permalink":"/blog/tags/hype"}],"readingTime":15.395,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. passionate language hater","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Mixed feelings on Rust","description":"Discussing my mixed feelings about the Rust language.\\n","date":"2024-01-28T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. passionate language hater"}],"tags":["rust","memory safety","cult","hype"],"hide_table_of_contents":false},"unlisted":false,"nextItem":{"title":"How can Copr help with broken dependencies","permalink":"/blog/2023/08/02/copr"}},"content":"Rust has become a rather popular language these days. I\'ve managed to get my\\nhands dirty with it during _[Advent of Code]_ \u201822 and partially \u201823. I\'ve also\\nused it for few rounds of _[Codeforces]_ and I have to try very hard to maintain\\nsome variety of languages for LeetCode challenges along with the Rust. I\'ll\\ndisclaim up front that I won\'t be only positive, since this post is a result of\\nmultiple discussions about Rust and I stand by\\n_\u201cAll that glitters is not gold\u201d_, so if you can\'t stand your favorite language\\nbeing criticized in any way, don\'t even proceed. :wink:\\n\\n\x3c!--truncate--\x3e\\n\\n## Memory safety\\n\\nI\'ll start by kicking the biggest benefit of the language, the memory safety.\\nLet\'s be honest here, majority of the checks rely on the static analysis, cause\\nyou can\'t do anything else during the compile-time, right? Therefore we can\\nbasically say that we are relying on the compiler to \u201csolve\u201d all of our issues.\\n\\n:::warning\\n\\nI\'m not doubting the fact that compiler can prevent **a lot** of the memory\\nerrors, I\'m just saying it\'s not realistic to cover **everything**.\\n\\n:::\\n\\n### Compiler\\n\\nI guess we can safely[^2] agree on the fact that we 100% rely on the compiler to\\n_have our back_. Is the compiler bug-free? I doubt it. This is not meant in an\\noffensive way to the Rust compiler developers, but we need to be realistic here.\\nIt\'s a compiler, even older and larger projects like _gcc_ or _llvm_ can\'t avoid\\nbugs to appear.\\n\\nWhen I was trying out Rust for some of the LeetCode challenges I\'ve stumbled\\nupon the following warning:\\n![Example of a compiler bug](https://i.imgur.com/NfPLF6o.png)\\n\\n:::danger [Issue](https://github.com/rust-lang/rust/issues/59159)\\n\\nThe issue here comes from the fact that we have 2 simultaneous references to the\\nsame memory (one is mutable and one immutable). If you cannot think of any way\\nthis can break, I\'ll give you a rather simple example from C++ where this could\\ncause an issue.\\n\\nImagine a function that has some complex object and also calls a coroutine which\\nutilizes read-only reference to that object. When the coroutine suspends, the\\ncaller can modify the object. This can break the integrity of data read by the\\ncoroutine.\\n\\n- Yes, this **can** cause a memory error.\\n- Yes, this **hasn\'t** been handled until someone noticed it.\\n\\nFixing this bug is not backwards compatible, cause you\'re covering a case that\\nhasn\'t been covered before.\\n\\n:::\\n\\n### Enforcing the safety\\n\\nOne of the ways Rust enforces the safety is by restricting what you can do, like\\nthe example above. Aforementioned issue _can_ happen, but **doesn\'t have to**.\\nRule of the thumb in the Rust compiler is to _\u201cblock\u201d_ anything that can be an\\nissue, static analysis can\'t do much more, it cannot decide whether it\'s safe to\\ndo it or not.\\n\\nSatisfying the Rust compiler is sometimes a brutal pain in the ass, because you\\ncannot do things like you\'re used to, you need to work around them _somehow_.\\n\\n:::tip\\n\\nKey difference between Rust and C or C++ lies in the fact that Rust chooses to\\n_ban_ all \u201cpotentially offensive\u201d actions, C and C++ _relies_ on **you** to be\\nsure it\'s safe to do.\\n\\n![C++ v. Rust](https://i.imgur.com/0vbkYPp.png)\\n\\n:::\\n\\n### Consequences\\n\\nWhere are we heading with this approach of \u201cif it compiles, it runs\u201d though?\\nIn this aspect I have a rather similar opinion as with regards to the ChatGPT\\nand its derivatives.\\n\\nIf you teach people to 100% depend on the compiler, they will do it, cause it\'s\\n_easy_. All you need to do is make the compiler _shut up_[^3]. Giving up the\\n_intellectual masturbation_ about the memory safety will make you lose your edge\\nover the time. When we get to the point of everyone being in the mindset\\nmentioned above, who\'s going to maintain the compiler? This is the place where\\nyou **need to** think about the memory safety and furthermore in a much more\\ngeneral way than in your own projects, because it is the thing that everyone\\n_blindly believes in_ in the end.\\n\\nI\'m not saying that everyone should give up Rust and think about their memory\\nmanagement and potential memory issues. I\'m just saying that going the easy way\\nwill make people _dull_ and they should think about it anyways, that\'s how the\\nissue above has been discovered. If everyone walked past and didn\'t think about\\nit, no one would discover this issue till it bit them hard.\\n\\n:::tip Standard library\\n\\nEven the standard library is littered with `unsafe` blocks that are prefixed\\nwith comments in style:\\n\\n```rs\\n// SAFETY: \u2026\\n```\\n\\nThe fact that the _casual_ Rust dev doesn\'t have to think much about safety,\\ncause the compiler has their back, doesn\'t mean that the Rust compiler dev\\ndoesn\'t either.\\n\\nI gotta admit that I adopted this concept in other languages (even in Python),\\ncause you can encounter situations where it doesn\'t have to be clear _why_ you\\ncan do _what_ you\'re doing.\\n\\n:::\\n\\n## Development & design\\n\\nDevelopment of Rust is\u2026 very fast. One positive is that they\'re trying to be as\\nbackward compatible as possible at least by verifying against all the published\\ncrates in the process. Of course, you cannot be backward compatible about fixing\\nthe bugs that have been found, but such is life.\\n\\n### Fast development cycle\\n\\nOne of the negatives of the fast development cycle is the fact that they\'re\\nusing the latest features already in the next release of the Rust. Yes, it is\\nsomething that you can use for verifying and testing your own changes, but at\\nthe same time it places a requirement of the latest release to compile the next\\none.\\n\\n:::tip\\n\\nIf you check `gcc` for example, they have a requirement of minimal version of\\ncompiler that you need for the build. Though gcc\'s requirement is not so _needy_\\nas the Rust one.\\n\\n:::\\n\\nOne of the other negatives is the introduction of bugs. If you\'re pushing\\nchanges, somewhat mindlessly, at such a fast pace, it is inevitable to introduce\\na bunch bugs in the process. Checking the GitHub issue tracker with\\n\\n```\\nis:issue is:open label:C-bug label:T-compiler\\n```\\n\\nyields **2,224** open issues at the time of writing this post.\\n\\n### RFCs\\n\\nYou can find **a lot** of RFCs for the Rust. Some of them are more questionable\\nthan the others. Fun thing is that a lot of them make it to the nightly builds,\\nso they can be tested and polished off. Even the questionable ones\u2026 I\'ll leave\\nfew examples for a better understanding.\\n\\nOne of such features is the `do yeet` expression:\\n\\n```rust\\n#![feature(yeet_expr)]\\n\\nfn foo() -> Result {\\n do yeet 4;\\n}\\nassert_eq!(foo(), Err(4));\\n\\nfn bar() -> Option {\\n do yeet;\\n}\\nassert_eq!(bar(), None);\\n```\\n\\nIt allows you to \u201cyeet\u201d the errors out of the functions that return `Result` or\\n`Option`.\\n\\n[One](https://github.com/rust-lang/rfcs/pull/3503) of the more recent ones is\\nthe ability to include Cargo manifests into the sources, so you can do something\\nlike:\\n\\n```rust\\n#!/usr/bin/env cargo\\n---\\n[dependencies]\\nclap = { version = \\"4.2\\", features = [\\"derive\\"] }\\n---\\n\\nuse clap::Parser;\\n\\n#[derive(Parser, Debug)]\\n#[clap(version)]\\nstruct Args {\\n #[clap(short, long, help = \\"Path to config\\")]\\n config: Option,\\n}\\n\\nfn main() {\\n let args = Args::parse();\\n println!(\\"{:?}\\", args);\\n}\\n```\\n\\nI would say you can get almost anything into the language\u2026\\n\\n## Community and hype train\\n\\nRust community is a rather unique thing. A lot of people will hate me for this,\\nbut I can\'t help, but to compare them to _militant vegans_. I\'ll go through some\\nof the things related to it, so I can support my opinion at least.\\n\\n_Rust is the best language._ It is not. There is no best language, each has its\\nown positives and negatives, you need to choose the language that\'s **the most**\\n**suitable for your use case**. There are areas where Rust excels, though I have\\nto admit it\'s very close to being a universal hammer regardless of how suitable\\nit is. There is a very steep learning curve to it, beginnings in Rust are very\\npainful.\\n\\n_Rewrite everything in Rust._ Just no. There are multiple feedbacks on doing\\nrewrites, it is very common to fix _N_ bugs with a rewrite while introducing\\n_N + 1_ other bugs in the process. It doesn\'t solve anything unless there are\\nsome strong reasons to go with it. Majority of such suggested rewrites don\'t\\nhave those reasons though.\\n\\n_Language \u2039x\u203a is bad, though in Rust\u2026_ Cherry-picking one specific pain point of\\none language and reflecting how it is better in other language can go both ways.\\nFor example it is rather easy to pick the limitations imposed by Rust compiler\\nand show how it\'s possible in other languages :man_shrugging:\\n\\nI don\'t mind any of those opinions, you\'re free to have them, as long as you\\ndon\'t rub them in my face which is not the usual case\u2026 This experience makes it\\njust worse for me, part of this post may be also influenced by this fact.\\n\\n### Rust in Linux\\n\\n:::caution\\n\\nAs someone who has seen the way Linux kernel is built in the RHEL ecosystem, how\\ncomplex the whole thing is and how much resources you need to proceed, I have\\nvery strong opinions on this topic.\\n\\n:::\\n\\nIt took years of work to even \u201cincorporate\u201d Rust into the Linux codebase, just\\nto get the \u201cHello World!\u201d. I don\'t have anything against the idea of writing\\ndrivers in the Rust, I bet it can catch a lot of common mistakes, but still\\nintroducing Rust to the kernel is another step to enlarge the monster.\\n\\nI have to admit though that the _Apple GPU_ driver for Linux written in Rust is\\nquite impressive. Apart from that there are not so many benefits, yet\u2026\\n\\n## Packaging\\n\\nI\'ll divide the packaging into the packaging of the language itself and the\\nprograms written in Rust.\\n\\nLet\'s start with the `cargo` itself though. Package managers of the languages\\nusually get a lot of hate (you can take `npm` or `pip` as examples[^1]). If\\nyou\'ve ever tried out Rust, I bet you already know where I\'m going with this.\\nYes, I mean the compilation times, or even Cargo downloading _whole_ index of\\ncrates just so you can update that one dependency (and 3 millions of indirect\\ndeps). When I was doing AoC \u201822 in Rust, I\'ve set up `sccache` right away on the\\nfirst day.\\n\\nLet\'s move to the packaging of the Rust itself, it\'s tedious. Rust has a very\\nfast development cycle and doesn\'t even try to make the builds backward\\ncompatible. If there is a new release of Rust, there is a very high chance that\\nyou cannot build that release with anything other than **the latest** Rust\\nrelease. If you have ever touched the packaging, you know that this is something\\nthat can cause a lot of problems, cause you need the second-to-latest version to\\ncompile the latest version, don\'t forget that this applies inductively\u2026 People\\nrunning _Gentoo_ could tell you a lot about this.\\n\\n:::info\\n\\nCompiling the compilers takes usually more time than compiling the kernel\\nitself\u2026\\n\\n:::\\n\\nI cannot speak about packaging of Rust programs in other than RHEL-based\\ndistros, though I can speak about RHEL ecosystem. Fedora packaging guidelines\\nspecify that you need to build each and every dependency of the program\\nseparately. I wanted to try out _AlmaLinux_ and install Alacritty there and I\\nfailed miserably. The solution that worked, consisted of ignoring the packaging\\nguidelines, running `cargo build` and consuming the binaries afterwards.\\nDependencies of the Rust programs are of a similar nature as JS dependencies.\\n\\n> I\'m tipping my fedora[^2] in the general direction of the maintainers of Rust\\n> packages in RHEL ecosystem. I wouldn\'t be able to do this without losing my\\n> sanity.\\n\\n## Likes\\n\\nIf you\'ve come all the way here and you\'re a Rustacean, I believe I\'ve managed\\nto get your blood boiling, so it\'s time to finish this off by stuff I like about\\nRust. I doubt I will be able to cover everything, but I can try at least. You\\nhave to admit it\'s much easier to remember the bad stuff as opposed to the good.\\n:wink:\\n\\n### Workflow and toolchain\\n\\nI prefered using Rust for the _Advent of Code_ and _Codeforces_ as it provides\\na rather easy way to test the solutions before running them with the challenge\\ninput (or test runner). I can give an example from the _Advent of Code_:\\n\\n```rust\\nuse aoc_2023::*;\\n\\ntype Output1 = i32;\\ntype Output2 = Output1;\\n\\nstruct DayXX {}\\nimpl Solution for DayXX {\\n fn new>(pathname: P) -> Self {\\n let lines: Vec = file_to_lines(pathname);\\n\\n todo!()\\n }\\n\\n fn part_1(&mut self) -> Output1 {\\n todo!()\\n }\\n\\n fn part_2(&mut self) -> Output2 {\\n todo!()\\n }\\n}\\n\\nfn main() -> Result<()> {\\n DayXX::main()\\n}\\n\\ntest_sample!(day_XX, DayXX, 42, 69);\\n```\\n\\nThis was the skeleton I\'ve used and the macro at the end is my own creation that\\nexpands to:\\n\\n```rust\\n#[cfg(test)]\\nmod day_XX {\\n use super::*;\\n\\n #[test]\\n fn part_1() {\\n let path = DayXX::get_sample(1);\\n let mut day = DayXX::new(path);\\n assert_eq!(day.part_1(), 42);\\n }\\n\\n #[test]\\n fn part_2() {\\n let path = DayXX::get_sample(2);\\n let mut day = DayXX::new(path);\\n assert_eq!(day.part_2(), 69);\\n }\\n}\\n```\\n\\nWhen you\'re solving the problem, all you need to do is switch between\\n`cargo test` and `cargo run` to check the answer to either sample or the\\nchallenge input itself.\\n\\nIntroduce [bacon] and it gets even better. Bacon is a CLI tool that wraps around\\nthe `cargo` and allows you to check, run, lint or run tests on each file save.\\nIt\'s a very pleasant thing for a so-called _compiler-assisted_ development.\\n\\nSpeaking of linting from within the bacon, you cannot leave out the [clippy].\\nNot only it can whip your ass because of errors, but it can also produce a lot\\nof helpful suggestions, for example passing slices by borrow instead of\\nborrowing the `Vec` itself when you don\'t need it.\\n\\n### Standard library\\n\\nThere\'s **a lot** included in the standard library. It almost feels like you\\nhave all you need[^4]. I like placeholders (like `todo!()`, `unreachable!()`,\\n`unimplemented!()`) to the extent of\\n[implementing](/cpp/exceptions-and-raii/placeholders) them as exceptions in C++.\\n\\nYou can find almost anything. Though you can also hit some very weird issues\\nwith some of the nuances of the type system.\\n\\n### `unsafe`\\n\\nThis might be something that people like to avoid as much as possible. However I\\nthink that forming a habit of commenting posibly unsafe operations in **any**\\nlanguage is a good habit, as I\'ve mentioned above. You should be able to argue\\nwhy you can do something safely, even if the compiler is not kicking your ass\\nbecause of it.\\n\\nExcerpt of such comment from work:\\n\\n```py\\n# SAFETY: Taking first package instead of specific package should be\\n# safe, since we have put a requirement on \xbbone\xab \u2039upstream_project_url\u203a\\n# per Packit config, i.e. even if we\'re dealing with a monorepo, there\\n# is only \xbbone\xab upstream. If there is one upstream, there is only one\\n# set of GPG keys that can be allowed.\\nreturn self.downstream_config.packages[\\n self.downstream_config._first_package\\n].allowed_gpg_keys\\n```\\n\\n### Traits\\n\\nOne of the other things I like are the traits. They are more restrictive than\\ntemplates or concepts in C++, but they\'re doing their job pretty good. If you\\nare building library and require multiple traits to be satisfied it means a lot\\nof copy-paste, but that\'s soon to be fixed by the [trait aliases].\\n\\n:::tip Comparing to other languages\\n\\nOn Wikipedia I\'ve seen trait being defined as a more restrictive type class as\\nyou may know it from the Haskell for example. C++ isn\'t behind either with its\\n_constraints and concepts_. I would say that we can order them in the following\\norder based on the complexity they can express:\\n\\n```\\nRust\'s trait < Haskell\'s type class < C++\'s concept\\n```\\n\\n:::\\n\\nYou can also hit some issues, like me when trying to support conversions between\\nunderlying numeric types of a 2D vectors or support for using an operator from\\nboth sides (I couldn\'t get `c * u` to work in the same way as `u * c` because\\nthe first one requires you to implement the trait of a built-in type).\\n\\n:::warning Implementation\\n\\nImplementing traits lies in\\n\\n```rust\\nimpl SomeTrait for SomeStruct {\\n // implementation goes here\\n}\\n```\\n\\nOne of the things I **would love to** see is being able to define the helper\\nfunctions within the same block. As of now, the only things allowed are the ones\\nthat are required by the trait, which in the end results in a randomly lying\\nfunctions around (or in a implementation of the structure itself). I don\'t like\\nthis mess at all\u2026\\n\\n:::\\n\\n### Influence of functional paradigm\\n\\nYou can see a big influence of the functional paradigm. Not only in iterators,\\nbut also in the other parts of the language. For example I prefer `Option` or\\n`Result` to `null`s and exceptions. Pattern matching together with\\ncompiler both enforces handling of the errors and rather user-friendly way of\\ndoing it.\\n\\nNot to mention `.and_then()` and such. However spending most of the time with\\nthe AoC you get pretty annoyed of the repetitive `.unwrap()` during parsing,\\nsince you are guaranteed correct input.\\n\\n### Macros\\n\\nMacros are a very strong pro of the Rust. And no, we\'re not going to talk about\\nthe procedural macros\u2026\\n\\nAs I\'ve shown above I\'ve managed to \u201ctame\u201d a lot of copy-paste in the tests for\\nthe AoC by utilizing a macro that generated a very basic template for the tests.\\n\\nAs I have mentioned the traits above, I cannot forget to give props to `derive`\\nmacro that allows you to \u201cdeduce\u201d the default implementation. It is very helpful\\nfor a tedious tasks like implementing `Debug` (for printing out the structures)\\nor comparisons, though with the comparisons you need to be careful about the\\ndefault implementation, it has already bitten me once or twice.\\n\\n## Summary\\n\\nOverall there are many things about the Rust I like and would love to see them\\nimplemented in other languages. However there are also many things I don\'t like.\\nNothing is **exclusively** black and white.\\n\\n[advent of code]: https://adventofcode.com\\n[bacon]: https://dystroy.org/bacon/\\n[clippy]: https://github.com/rust-lang/rust-clippy\\n[codeforces]: https://codeforces.com\\n[trait aliases]: https://github.com/rust-lang/rfcs/blob/master/text/1733-trait-alias.md\\n\\n[^1]:\\n not to even mention multiple different packaging standards Python has, which\\n is borderline https://xkcd.com/927/\\n\\n[^2]: pun intended\\n[^3]: It\'s not that easy with the Rust compiler, but OK\u2026\\n[^4]:\\n unlike Python where there\'s whole universe in the language itself, yet there\\n are essential things not present\u2026"},{"id":"/2023/08/02/copr","metadata":{"permalink":"/blog/2023/08/02/copr","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2023-08-02-copr.md","source":"@site/blog/2023-08-02-copr.md","title":"How can Copr help with broken dependencies","description":"Copr comes to save you when maintainer doesn\'t care.","date":"2023-08-02T00:00:00.000Z","formattedDate":"August 2, 2023","tags":[{"label":"\ud83c\udfed","permalink":"/blog/tags/\ud83c\udfed"},{"label":"red-hat","permalink":"/blog/tags/red-hat"},{"label":"copr","permalink":"/blog/tags/copr"},{"label":"admin","permalink":"/blog/tags/admin"},{"label":"vps","permalink":"/blog/tags/vps"}],"readingTime":3.44,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. your opinionated admin","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"How can Copr help with broken dependencies","description":"Copr comes to save you when maintainer doesn\'t care.","date":"2023-08-02T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. your opinionated admin"}],"tags":["\ud83c\udfed","red-hat","copr","admin","vps"]},"unlisted":false,"prevItem":{"title":"Mixed feelings on Rust","permalink":"/blog/2024/01/28/rust-opinion"},"nextItem":{"title":"4th week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/4th-week"}},"content":"When you decide to run Fedora on your VPS, you might get screwed over by using\\nrandom repositories\u2026\\n\\n\x3c!--truncate--\x3e\\n\\nWhen I \u201creserved\u201d my VPS[^1] back in June \'20, I slapped Fedora on it without\\nthinking. I bet 99% of people would say that I\'m crazy for doing such thing[^2],\\n**BUT** I\'ve been using Fedora on my PCs for some time already and it felt very\\nstable and natural to just use, even for VPS.\\n\\nOne of the first things I\'ve done was setting up a mail server. You may guess\\nwhat\'s the fun part about having a mail server\u2026 Yes, it\'s all the spam you\\nreceive and only then you realize how much \u201ccrap\u201d gets filtered on free mail\\nservices. To battle this problem I chose to use\\n[rspamd](https://github.com/rspamd/rspamd) that had CentOS support, but someone\\nhad a [Copr](https://copr.fedorainfracloud.org/) repository that I used to\\ninstall it.\\n\\n## How does Copr repositories work?\\n\\nIf you have ever used Ubuntu, you might be familiar with the concept since it is\\nvery close to [PPAs](https://help.ubuntu.com/community/PPA).\\n\\ntl;dr of the whole process consists of\\n\\n1. enabling the Copr repository, and\\n2. installing the desired package.\\n\\nSo in shell you would do\\n\\n```\\n# dnf copr enable \u2039copr-repository\u203a\\n# dnf install \u2039package-from-the-repository\u203a\\n```\\n\\nAnd\u2026 that\'s it! Nothing else needed! Simple, right? And literally same process\\nas you would do for the PPA.\\n\\n:::tip AUR\\n\\nOn the other hand, if you are familiar with the archLinux, you definitely know\\nAUR and what it can do for you. Copr repository is pretty similar, but the\\npackages are prebuilt in Copr and Copr repositories can carry the required\\ndependencies for said packages, which simplifies the distribution, and can even\\nhelp with installing singular packages (when you just need the dependency, not\\neverything).\\n\\n:::\\n\\n## My issue\\n\\nNow you might wonder how would I use it on my VPS. It\'s rather simple, once in\\n6 months a new Fedora release comes out. And you need to upgrade to newer\\nrelease\u2026 You don\'t need to do it right away and for such setup it probably isn\'t\\neven recommended.\\n\\n:::tip\\n\\nFedora releases are supported for a year, i.e. they live 6 months till the next\\nrelease and then another 6 months till another release.\\n\\nSome people prefer to run one version \u201cbehind\u201d. If you ever decide to run it on\\nyour home server or in a similar setup, it might be a pretty good idea to\\nfollow. I\'m using the \u201clatest greatest\u201d, cause why not :smile:\\n\\nOne way or another, you still need to bump the release every six months, unless\\nyou\'d bump 2 releases at once every year, which would be a decision, since, at\\nleast I, cannot see any benefits in it\u2026 You don\'t go for \u201cstability\u201d, cause once\\na year you switch to the latest release and then, before you bump, you use one\\nyear old software, so you\'re not even using the latest.\\n\\n:::\\n\\nFast-forward 2 years in the future, new Fedora release came out (October \'22)\\nand I was doing an upgrade. Dependencies of the rspamd have been updated and\\nrspamd builds in Copr have failed and no one fixed it. Cool, so now I can\\nupgrade, but can either ignore the dependencies or uninstall the rspamd\u2026\\n\\n## How can Copr help?\\n\\nI have managed to find\\n[specfile](https://github.com/rspamd/rspamd/blob/master/rpm/rspamd.spec) for the\\nrspamd package that they use for CentOS. There were some files apart from the\\nspecfile, so I had to make an SRPM locally and then\u2026 I just uploaded the SRPM\\nto the Copr to\\n[build](https://copr.fedorainfracloud.org/coprs/mfocko/rspamd/build/5046567/)\\nan RPM.\\n\\nI have switched the previous Copr repository for rspamd with my own and happily\\nproceeded with the upgrade.\\n\\n## Conclusion\\n\\nCopr is heavily used for testing builds on the upstream with\\n[Packit](https://packit.dev). However, as you can see, it is possible to use it\\n**very well** for packaging your own stuff and avoiding issues (such as the one\\nI have described above), if need be.\\n\\n[^1]: [vpsFree.cz](https://vpsfree.cz)\\n[^2]:\\n Even though I\'ve been running archLinux on some Raspberry Pi\'s and also\\n on one of my \u201chome servers\u201d, before getting the VPS. You could say I like\\n to live on the edge\u2026"},{"id":"aoc-2022/4th-week","metadata":{"permalink":"/blog/aoc-2022/4th-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/04-week-4.md","source":"@site/blog/aoc-2022/04-week-4.md","title":"4th week of Advent of Code \'22 in Rust","description":"Surviving fourth week in Rust.","date":"2023-07-07T15:14:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":15.175,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"4th week of Advent of Code \'22 in Rust","description":"Surviving fourth week in Rust.","date":"2023-07-07T15:14","slug":"aoc-2022/4th-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"How can Copr help with broken dependencies","permalink":"/blog/2023/08/02/copr"},"nextItem":{"title":"3rd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/3rd-week"}},"content":"Let\'s go through the fourth week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 22: Monkey Map](https://adventofcode.com/2022/day/22)\\n\\n:::info tl;dr\\n\\nSimulating a movement on a 2D map with given instructions. Map becomes a cube in\\nthe 2nd part\u2026\\n\\n:::\\n\\n:::caution Rant\\n\\nThis was the most obnoxious problem of this year\u2026 and a lot of Rust issues have\\nbeen hit.\\n\\n:::\\n\\n### Solution\\n\\nIt seems like a very simple problem to solve, but with very obnoxious changes in\\nthe 2nd part and also it\'s relatively hard to decompose \xbbproperly\xab.\\n\\n#### Column iterator\\n\\nIn the first part of the problem it was needed to know the boundaries of each\\nrow and column, since I stored them in `Vec>` and padded with spaces\\nto ensure I have a rectangular 2D \u201carray\u201d. However when you wanted to go through\\neach row and column to determine the boundaries, it was very easy to do for the\\nrows (cause each row is a `Vec` element), but not for the columns, since they\\nspan multiple rows.\\n\\nFor this use case I have implemented my own _column iterator_:\\n\\n```rust\\npub struct ColumnIterator<\'a, T> {\\n map: &\'a [Vec],\\n column: usize,\\n\\n i: usize,\\n}\\n\\nimpl<\'a, T> ColumnIterator<\'a, T> {\\n pub fn new(map: &\'a [Vec], column: usize) -> ColumnIterator<\'a, T> {\\n Self { map, column, i: 0 }\\n }\\n}\\n\\nimpl<\'a, T> Iterator for ColumnIterator<\'a, T> {\\n type Item = &\'a T;\\n\\n fn next(&mut self) -> Option {\\n if self.i >= self.map.len() {\\n return None;\\n }\\n\\n self.i += 1;\\n Some(&self.map[self.i - 1][self.column])\\n }\\n}\\n```\\n\\nGiven this piece of an iterator, it is very easy to factor out the common\\nfunctionality between the rows and columns into:\\n\\n```rust\\nlet mut find_boundaries = |constructor: fn(usize) -> Orientation,\\n iterator: &mut dyn Iterator,\\n upper_bound,\\n i| {\\n let mut first_non_empty = iterator.enumerate().skip_while(|&(_, &c)| c == \' \');\\n let start = first_non_empty.next().unwrap().0 as isize;\\n\\n let mut last_non_empty = first_non_empty.skip_while(|&(_, &c)| c != \' \');\\n let end = last_non_empty.next().unwrap_or((upper_bound, &\'_\')).0 as isize;\\n\\n boundaries.insert(constructor(i), start..end);\\n};\\n```\\n\\nAnd then use it as such:\\n\\n```rust\\n// construct all horizontal boundaries\\n(0..map.len()).for_each(|row| {\\n find_boundaries(\\n Orientation::horizontal,\\n &mut map[row].iter(),\\n map[row].len(),\\n row,\\n );\\n});\\n\\n// construct all vertical boundaries\\n(0..map[0].len()).for_each(|col| {\\n find_boundaries(\\n Orientation::vertical,\\n &mut ColumnIterator::new(&map, col),\\n map.len(),\\n col,\\n );\\n});\\n```\\n\\n#### Walking around the map\\n\\nOnce the 2nd part got introduced, you start to think about a way how not to\\ncopy-paste a lot of stuff (I haven\'t avoided it anyways\u2026). In this problem, I\'ve\\nchosen to introduce a trait (i.e. _interface_) for 2D and 3D walker.\\n\\n```rust\\ntrait Wrap: Clone {\\n type State;\\n\\n // simulation\\n fn is_blocked(&self) -> bool;\\n fn step(&mut self, steps: isize);\\n fn turn_left(&mut self);\\n fn turn_right(&mut self);\\n\\n // movement\\n fn next(&self) -> (Self::State, Direction);\\n\\n // final answer\\n fn answer(&self) -> Output;\\n}\\n```\\n\\nEach walker maintains its own state and also provides the functions that are\\nused during the simulation. The \u201cpromised\u201d methods are separated into:\\n\\n- _simulation_-related: that are used during the simulation from the `.fold()`\\n- _movement_-related: just a one method that holds most of the logic differences\\n between 2D and 3D\\n- _final answer_: which extracts the _proof of solution_ from the\\n implementation-specific walker\\n\\nBoth 2D and 3D versions borrow the original input and therefore you must\\nannotate the lifetime of it:\\n\\n```rust\\nstruct Wrap2D<\'a> {\\n input: &\'a Input,\\n position: Position,\\n direction: Direction,\\n}\\nimpl<\'a> Wrap2D<\'a> {\\n fn new(input: &\'a Input) -> Wrap2D<\'a> {\\n// \u2026\\n```\\n\\n#### Problems\\n\\nI have used a lot of closures for this problem and once I introduced a parameter\\nthat was of unknown type (apart from the fact it implements a specific trait), I\\ngot suggested a \u201cfix\u201d for the compilation error that resulted in something that\\nwas not possible to parse, cause it, more than likely, violated the grammar.\\n\\nIn a similar fashion, I have been suggested changes that led to a code that\\ndidn\'t make sense by just looking at it (there was no need to try the changes),\\nfor example one suggested change in the closure parameter caused disapperance of\\nthe parameter name. :smile:\\n\\n#### Clippy\\n\\nI have to admit that Clippy was rather helpful here, I\'ll include two examples\\nof rather smart suggestions.\\n\\nWhen writing the parsing for this problem, the first thing I have spotted on the\\n`char` was the `.is_digit()` function that takes a radix as a parameter. Clippy\\nnoticed that I use `radix = 10` and suggested switching to `.is_ascii_digit()`\\nthat does exactly the same thing:\\n\\n```diff\\n- .take_while(|c| c.is_digit(10))\\n+ .take_while(|c| c.is_ascii_digit())\\n```\\n\\nAnother useful suggestion appeared when working with the iterators and I wanted\\nto get the $n$-th element from it. You know the `.skip()`, you know the\\n`.next()`, just \u201cslap\u201d them together and we\'re done for :grin: Well, I got\\nsuggested to use `.nth()` that does exactly the combination of the two mentioned\\nmethods on iterators:\\n\\n```diff\\n- match it.clone().skip(skip).next().unwrap() {\\n+ match it.clone().nth(skip).unwrap() {\\n```\\n\\n## [Day 23: Unstable Diffusion](https://adventofcode.com/2022/day/23)\\n\\n:::info tl;dr\\n\\nSimulating movement of elves around with a set of specific rules.\\n\\n:::\\n\\n### Solution\\n\\nThere\'s not much to mention since it\'s just a cellular automaton simulation\\n(even though the AoC rules for cellular automatons usually get out of hand\\n:wink:).\\n\\nAlthough I had a need to determine boundaries of the elves\' positions and ended\\nup with a nasty DRY violation. Knowing that you you\'re looking for maximum and\\nminimum that are, of course, exactly the same except for initial values and\\ncomparators, it looks like a rather simple fix, but typing in Rust is something\\nelse, right? In the end I settled for a function that computes both boundaries\\nwithout any duplication while using a closure:\\n\\n```rust\\nfn get_bounds(positions: &Input) -> (Vector2D, Vector2D) {\\n let f = |init, cmp: &dyn Fn(isize, isize) -> isize| {\\n positions\\n .iter()\\n .fold(Vector2D::new(init, init), |acc, elf| {\\n Vector2D::new(cmp(acc.x(), elf.x()), cmp(acc.y(), elf.y()))\\n })\\n };\\n\\n (f(isize::MAX, &min::), f(isize::MIN, &max::))\\n}\\n```\\n\\nThis function returns a pair of 2D vectors that represent opposite points of the\\nbounding rectangle of all elves.\\n\\nYou might ask why would we need a closure and the answer is that `positions`\\ncannot be captured from within the nested function, only via closure. One more\\nfun fact on top of that is the type of the comparator\\n\\n```rust\\n&dyn Fn(isize, isize) -> isize\\n```\\n\\nOnce we remove the `dyn` keyword, compiler yells at us and also includes a way\\nhow to get a more thorough explanation of the error by running\\n\\n $ rustc --explain E0782\\n\\nwhich shows us\\n\\n Trait objects must include the `dyn` keyword.\\n\\n Erroneous code example:\\n\\n ```\\n trait Foo {}\\n fn test(arg: Box) {} // error!\\n ```\\n\\n Trait objects are a way to call methods on types that are not known until\\n runtime but conform to some trait.\\n\\n Trait objects should be formed with `Box`, but in the code above\\n `dyn` is left off.\\n\\n This makes it harder to see that `arg` is a trait object and not a\\n simply a heap allocated type called `Foo`.\\n\\n To fix this issue, add `dyn` before the trait name.\\n\\n ```\\n trait Foo {}\\n fn test(arg: Box) {} // ok!\\n ```\\n\\n This used to be allowed before edition 2021, but is now an error.\\n\\n:::danger Rant\\n\\nNot all of the explanations are helpful though, in some cases they might be even\\nmore confusing than helpful, since they address _very simple_ use cases.\\n\\nAs you can see, even in this case there are two sides to the explanations:\\n\\n- it explains why you need to use `dyn`, but\\n- it still mentions that trait objects need to be heap-allocated via `Box`\\n that, as you can see in my snippet, **does not** apply here :smile: IMO it\'s\\n caused by the fact that we are borrowing it and therefore we don\'t need to\\n care about the size or whereabouts of it.\\n\\n:::\\n\\n:::info C++ parallel\\n\\nIf you dive into the explanation above, you can notice that the `Box`\\npattern is very helpful for using types that are not known during compile-time.\\nYou would use a very similar approach in C++ when parsing some data structure\\nfrom input (let\'s say JSON for example).\\n\\nOn the other hand, in this case, it doesn\'t really make much sense, cause you\\ncan clearly see that the types **are known** during the compile-time, which in\\nC++ could be easily resolved by templating the helper function.\\n\\n:::\\n\\n## [Day 24: Blizzard Basin](https://adventofcode.com/2022/day/24)\\n\\n:::info tl;dr\\n\\nNavigating your way through a basin with series of blizzards that move around\\nyou as you move.\\n\\n:::\\n\\n:::caution\\n\\nIt\'s second to last day and I went \u201c_bonkers_\u201d on the Rust :smile: Proceed to\\nread _Solution_ part on your own risk.\\n\\n:::\\n\\n### Solution\\n\\nYou are given a map with blizzards all over the place and you\'re supposed to\\nfind the minimum time it requires you to walk through the basin without getting\\nin any of the blizzards.\\n\\n#### Breakdown\\n\\nRelatively simple, yet a bit annoying, approach can be taken. It\'s technically\\na shortest-path algorithm implementation with some relaxation restrictions and\\nbeing able to stay on one position for some time, so each _vertex_ of the graph\\nis determined by the position on the map and the _timestamp_. I have chosen to\\nuse `Vector3D`, since `x` and `y` attributes can be used for the position\\nand, well, let\'s use `z` for a timestamp, cause why not, right? :wink:\\n\\n#### Evaluating the blizzards\\n\\n:::caution\\n\\nI think that this is the most perverted abuse of the traits in the whole 4 weeks\\nof AoC in Rust\u2026\\n\\n:::\\n\\nThe blizzards move along their respective directions in time and loop around in\\ntheir respective row/column. Each vertex holds position **and** time, so we can\\n_just_ index the basin with the vertex itself, right? Yes, we can :smiling_imp:\\n\\n:::tip Fun fact\\n\\nWhile writing this part, I\'ve recognized unnecessary verbosity in the code and\\ncleaned it up a bit. The changed version is shown here and the original was just\\nmore verbose.\\n\\n:::\\n\\nI\'ll skip the boring parts of checking bounds and entry/exit of the basin :wink:\\nWe can easily calculate positions of the blizzards using a modular arithmetics:\\n\\n```rust\\nimpl Index for Basin {\\n type Output = char;\\n\\n fn index(&self, index: Position) -> &Self::Output {\\n // \u2039skipped boring parts\u203a\\n\\n // We need to account for the loops of the blizzards\\n let width = self.cols - 2;\\n let height = self.rows - 2;\\n\\n let blizzard_origin = |size, d, t, i| ((i - 1 + size + d * (t % size)) % size + 1) as usize;\\n [\\n (\\n index.y() as usize,\\n blizzard_origin(width, -1, index.z(), index.x()),\\n \'>\',\\n ),\\n (\\n index.y() as usize,\\n blizzard_origin(width, 1, index.z(), index.x()),\\n \'<\',\\n ),\\n (\\n blizzard_origin(height, -1, index.z(), index.y()),\\n index.x() as usize,\\n \'v\',\\n ),\\n (\\n blizzard_origin(height, 1, index.z(), index.y()),\\n index.x() as usize,\\n \'^\',\\n ),\\n ]\\n .iter()\\n .find_map(|&(y, x, direction)| {\\n if self.map[y][x] == direction {\\n Some(&self.map[y][x])\\n } else {\\n None\\n }\\n })\\n .unwrap_or(&\'.\')\\n }\\n}\\n```\\n\\nAs you can see, there is an expression for calculating the original position and\\nit\'s used multiple times, so why not take it out to a lambda, right? :wink:\\n\\nI couldn\'t get the `rustfmt` to format the `for`-loop nicely, so I\'ve just\\ndecided to go with iterating over an elements of a slice. I have used, once\\nagain, a combination of two functions (`find_map` in this case) to do 2 things\\nat once and at the end, if we haven\'t found any blizzard, we just return the\\nempty space.\\n\\nI think it\'s a very _nice_ (and naughty) way how to use the `Index` trait, don\'t\\nyou think?\\n\\n#### Shortest-path algorithm\\n\\nFor the shortest path you can choose and adjust any of the common shortest-path\\nalgorithms, in my case, I have decided to use [_A\\\\*_] instead of Dijkstra\'s\\nalgorithm, since it better reflects the _cost_ function.\\n\\n:::info Comparison of costs\\n\\nWith the Dijkstra\'s algorithm I would proceed with the `time` attribute used as\\na priority for the queue.\\n\\nWhereas with the _A\\\\*_, I have chosen to use both time and Manhattan distance\\nthat promotes vertices closer to the exit **and** with a minimum time taken.\\n\\n:::\\n\\nCost function is, of course, a closure :wink:\\n\\n```rust\\nlet cost = |p: Position| p.z() as usize + exit.y().abs_diff(p.y()) + exit.x().abs_diff(p.x());\\n```\\n\\nAnd also for checking the possible moves from the current vertex, I have\\nimplemented, yet another, closure that yields an iterator with the next moves:\\n\\n```rust\\nlet next_positions = |p| {\\n [(0, 0, 1), (0, -1, 1), (0, 1, 1), (-1, 0, 1), (1, 0, 1)]\\n .iter()\\n .filter_map(move |&(x, y, t)| {\\n let next_p = p + Vector3D::new(x, y, t);\\n\\n if basin[next_p] == \'.\' {\\n Some(next_p)\\n } else {\\n None\\n }\\n })\\n};\\n```\\n\\n#### Min-heap\\n\\nIn this case I had a need to use the priority queue taking the elements with the\\nlowest cost as the prioritized ones. Rust only offers you the [`BinaryHeap`] and\\nthat is a max-heap. One of the ways how to achieve a min-heap is to put the\\nelements in wrapped in a [`Reverse`] (as is even showed in the linked [docs of\\nthe `BinaryHeap`]). However the wrapping affects the type of the heap and also\\npopping the most prioritized elements yields values wrapped in the `Reverse`.\\n\\nFor this purpose I have just taken the max-heap and wrapped it as a whole in a\\nseparate structure providing just the desired methods:\\n\\n```rust\\nuse std::cmp::{Ord, Reverse};\\nuse std::collections::BinaryHeap;\\n\\npub struct MinHeap {\\n heap: BinaryHeap>,\\n}\\n\\nimpl MinHeap {\\n pub fn new() -> MinHeap {\\n MinHeap {\\n heap: BinaryHeap::new(),\\n }\\n }\\n\\n pub fn push(&mut self, item: T) {\\n self.heap.push(Reverse(item))\\n }\\n\\n pub fn pop(&mut self) -> Option {\\n self.heap.pop().map(|Reverse(x)| x)\\n }\\n}\\n\\nimpl Default for MinHeap {\\n fn default() -> Self {\\n Self::new()\\n }\\n}\\n```\\n\\nRest is just the algorithm implementation which is not that interesting.\\n\\n## [Day 25: Full of Hot Air](https://adventofcode.com/2022/day/25)\\n\\n:::info tl;dr\\n\\nPlaying around with a numbers in a _special_ base.\\n\\n:::\\n\\nGetting flashbacks to the _IB111 Foundations of Programming_\u2026 Very nice \u201cproblem\u201d\\nwith a rather easy solution, as the last day always seems to be.\\n\\n### Solution\\n\\nImplementing 2 functions, converting from the _SNAFU base_ and back to the _SNAFU_\\n_base_ representation. Let\'s do a bit more though! I have implemented two functions:\\n\\n- `from_snafu`\\n- `to_snafu`\\n\\nNow it is apparent that all I do is number to string and string to number. Hmm\u2026\\nthat sounds familiar, doesn\'t it? Let\'s introduce a structure for the SNAFU numbers\\nand implement the traits that we need.\\n\\nLet\'s start with a structure:\\n\\n```rust\\n#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]\\nstruct SNAFU {\\n value: i64,\\n}\\n```\\n\\n#### Converting from `&str`\\n\\nWe will start by implementing the `FromStr` trait that will help us parse our input.\\nThis is rather simple, I can just take the `from_snafu` function, copy-paste it\\ninto the `from_str` method and the number I get will be wrapped in `Result` and\\n`SNAFU` structure.\\n\\n#### Converting to `String`\\n\\nThis is more fun. In some cases you need to implement only one trait and others\\nare automatically implemented using that one trait. In our case, if you look in\\nthe documentation, you can see that `ToString` trait is automatically implemented\\nfor any type that implements `Display` trait.\\n\\nLet\'s implement the `Display` trait then. We should be able to use the `to_snafu`\\nfunction and just take the `self.value` from the `SNAFU` structure.\\n\\nAnd for the convenience of tests, we can also implement a rather simple `From`\\ntrait for the `SNAFU`.\\n\\n#### Adjusting the code\\n\\nAfter those changes we need to adjust the code and tests.\\n\\nParsing of the input is very easy, before we have used the lines, now we parse\\neverything:\\n\\n```diff\\n fn parse_input>(pathname: P) -> Input {\\n- file_to_lines(pathname)\\n+ file_to_structs(pathname)\\n }\\n```\\n\\nPart 1 needs to be adjusted a bit too:\\n\\n```diff\\n fn part_1(input: &Input) -> Output {\\n- to_snafu(input.iter().map(|s| from_snafu(s)).sum())\\n+ SNAFU::from(input.iter().map(|s| s.value).sum::()).to_string()\\n }\\n```\\n\\nYou can also see that it simplifies the meaning a bit and it is more explicit than\\nthe previous versions.\\n\\nAnd for the tests:\\n\\n```diff\\n #[test]\\n fn test_from() {\\n- for (n, s) in EXAMPLES.iter() {\\n- assert_eq!(from_snafu(s), *n);\\n+ for (&n, s) in EXAMPLES.iter() {\\n+ assert_eq!(s.parse::().unwrap().value, n);\\n }\\n }\\n\\n #[test]\\n fn test_to() {\\n- for (n, s) in EXAMPLES.iter() {\\n- assert_eq!(to_snafu(*n), s.to_string());\\n+ for (&n, s) in EXAMPLES.iter() {\\n+ assert_eq!(SNAFU::from(n).to_string(), s.to_string());\\n }\\n```\\n\\n## Summary\\n\\nLet\'s wrap the whole thing up! Keeping in mind both AoC and the Rust\u2026\\n\\n![Finished advent calendar :smile:](/img/blog/aoc-2022/04-week-4/calendar.png)\\n\\n### Advent of Code\\n\\nThis year was quite fun, even though most of the solutions and posts came in\\nlater on (_cough_ in \'23 _cough_). Day 22 was the most obnoxious one\u2026 And also\\nit feels like I used priority queues and tree data structures **a lot** :eyes:\\n\\n### with Rust\\n\\nI must admit that a lot of compiler warnings and errors were very useful. Even\\nthough I still found some instances where they didn\'t help at all or cause even\\nworse issues than I had. Compilation times have been addressed with the caching.\\n\\nBuilding my first tree data structure in Rust has been a very \u201cinteresting\u201d\\njourney. Being able to write a more generic BFS algorithm that allows you to not\\nduplicate code while still mantaining the desired functionality contributes to\\na very readable code.\\n\\nI am definitely much more aware of the basic things that bloated Python is\\nmissing, yet Rust has them\u2026\\n\\nUsing explicit types and writing down placeholder functions with `todo!()`\\nmacros is very pleasant, since it allows you to easily navigate the type system\\nduring the development when you don\'t even need to be sure how are you going to\\nput the smaller pieces together.\\n\\nI have used a plethora of traits and also implemented some of them to either be\\nidiomatic, or exploit the syntactic sugar they offer. Deriving the default trait\\nimplementation is also very helpful in a lot of cases, e.g. debugging output,\\ncopying, equality comparison, etc.\\n\\nI confess to touching more \u201ccursed\u201d parts of the Rust, such as macros to\\ndeclutter the copy-paste for tests or writing my own structures that need to\\ncarry a lifetime for their own fields.\\n\\ntl;dr Relatively pleasant language until you hit brick wall :wink:\\n\\n---\\n\\nSee you next year! Maybe in Rust, maybe not :upside_down_face:\\n\\n[_advent of code_]: https://adventofcode.com\\n[_a\\\\*_]: https://en.wikipedia.org/wiki/A*_search_algorithm\\n[`binaryheap`]: https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html\\n[`reverse`]: https://doc.rust-lang.org/std/cmp/struct.Reverse.html\\n[docs of the `binaryheap`]: https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html#min-heap"},{"id":"aoc-2022/3rd-week","metadata":{"permalink":"/blog/aoc-2022/3rd-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/03-week-3.md","source":"@site/blog/aoc-2022/03-week-3.md","title":"3rd week of Advent of Code \'22 in Rust","description":"Surviving third week in Rust.","date":"2023-07-06T21:00:00.000Z","formattedDate":"July 6, 2023","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":11.57,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"3rd week of Advent of Code \'22 in Rust","description":"Surviving third week in Rust.","date":"2023-07-06T21:00","slug":"aoc-2022/3rd-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"4th week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/4th-week"},"nextItem":{"title":"Sort the matrix diagonally","permalink":"/blog/leetcode/sort-diagonally"}},"content":"Let\'s go through the third week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 15: Beacon Exclusion Zone](https://adventofcode.com/2022/day/15)\\n\\n:::info tl;dr\\n\\nTriangulating a distress beacon based on the information from the sensors.\\n\\n:::\\n\\n### Solution\\n\\nRelatively easy thing to implement, no major Rust issues hit.\\n\\n## [Day 16: Proboscidea Volcanium](https://adventofcode.com/2022/day/16)\\n\\n:::info tl;dr\\n\\nFinding a max flow in a graph given some time constraints.\\n\\n:::\\n\\n### Solution\\n\\nI have used some interesting things to implement this and make it easier for me.\\n\\n#### Indexing in graph\\n\\nI have come across a situation where I needed to keep more information regarding\\nthe graph\u2026 In that case you can, of course, create a structure and keep it in,\\nbut once you have multiple members in the structure it gets harder to work with\\nsince you need to address the fields in the structure. When you work with graph,\\nyou frequently need to access the vertices and in this case it felt a lot easier\\nto implement the indexing in a graph, rather than explicitly access the\\nunderlying data structure.\\n\\nHere you can see a rather short snippet from the solution that allows you to\\n\u201cindex\u201d the graph:\\n\\n```rust\\nimpl Index<&str> for Graph {\\n type Output = Vertex;\\n\\n fn index(&self, index: &str) -> &Self::Output {\\n &self.g[index]\\n }\\n}\\n```\\n\\n#### Cartesian product\\n\\nDuring the implementation I had to utilize Floyd-Warshall algorithm for finding\\nthe shortest path between pairs of vertices and utilized the `iproduct!` macro\\nfrom the [`itertools`]. It is a very useful higher-order function that allows\\nyou to keep the nesting of the loops at a minimum level while still maintaining\\nthe same functionality.\\n\\n#### \u201cImplementing\u201d an iterator\\n\\nFor the second part, you get to split the work between 2 actors. That way you\\ncan achieve higher efficiency of the whole process that you\'re planning, but it\\nalso makes it harder to evaluate algorithmically, since you need to check the\\ndifferent ways the work can be split.\\n\\nBeing affected by _functional programming brain damage_:tm:, I have chosen to\\ndo this part by function that returns an iterator over the possible ways:\\n\\n```rust\\nfn pairings(\\n valves: &BTreeSet,\\n) -> impl Iterator, BTreeSet)> + \'_ {\\n let mapping = valves.iter().collect_vec();\\n\\n let max_mask = 1 << (valves.len() - 1);\\n\\n (0..max_mask).map(move |mask| {\\n let mut elephant = BTreeSet::new();\\n let mut human = BTreeSet::new();\\n\\n for (i, &v) in mapping.iter().enumerate() {\\n if (mask & (1 << i)) == 0 {\\n human.insert(v.clone());\\n } else {\\n elephant.insert(v.clone());\\n }\\n }\\n\\n (human, elephant)\\n })\\n}\\n```\\n\\n## [Day 17: Pyroclastic Flow](https://adventofcode.com/2022/day/17)\\n\\n:::info tl;dr\\n\\nSimulating an autonomous Tetris where pieces get affected by a series of jets of\\nhot gas.\\n\\n:::\\n\\n### Solution\\n\\nSimilarly to the previous day I have created some iterators :smile:\\n\\n#### Collision detection\\n\\nOnce you need to check for collisions it is very helpful to be able to just\\niterate through the positions that can actually collide with the wall or other\\npiece.\\n\\nTo get the desired behaviour, you can just compose few smaller functions:\\n\\n```rust\\nfn occupied(shape: &[Vec]) -> impl Iterator + \'_ {\\n shape.iter().enumerate().flat_map(|(y, row)| {\\n row.iter().enumerate().filter_map(move |(x, c)| {\\n if c == &\'#\' {\\n Some(Vector2D::new(x as isize, y as isize))\\n } else {\\n None\\n }\\n })\\n })\\n}\\n```\\n\\nIn the end, we get relative positions which we can adjust later when given the\\nspecific positions from iterator. You can see some interesting parts in this:\\n\\n- `.enumerate()` allows us to get both the indices (coordinates) and the line\\n or, later on, the character itself,\\n- `.flat_map()` flattens the iterator, i.e. when we return another iterator,\\n they just get chained instead of iterating over iterators (which sounds pretty\\n disturbing, doesn\'t it?),\\n- and finally `.filter_map()` which is pretty similar to the \u201cbasic\u201d `.map()`\\n with a one, key, difference that it expects the items of an iterator to be\\n mapped to an `Option` from which it ignores nothing (as in `None` :wink:)\\n and also unwraps the values from `Some(\u2026)`.\\n\\n#### Infinite iterator\\n\\nIn the solution we cycle through both Tetris-like shapes that fall down and the\\njets that move our pieces around. Initially I have implemented my own infinite\\niterator that just yields the indices. It is a very simple, yet powerful, piece\\nof code:\\n\\n```rust\\nstruct InfiniteIndex {\\n size: usize,\\n i: usize,\\n}\\n\\nimpl InfiniteIndex {\\n fn new(size: usize) -> InfiniteIndex {\\n InfiniteIndex { size, i: size - 1 }\\n }\\n}\\n\\nimpl Iterator for InfiniteIndex {\\n type Item = usize;\\n\\n fn next(&mut self) -> Option {\\n self.i = (self.i + 1) % self.size;\\n Some(self.i)\\n }\\n}\\n```\\n\\nHowever when I\'m looking at the code now, it doesn\'t really make much sense\u2026\\nGuess what, we can use a built-in function that is implemented on iterators for\\nthat! The function is called `.cycle()`\\n\\nOn the other hand, I am not going to switch to that function, since it would\\nintroduce an another myriad of issues caused by the fact that I create iterators\\nright away in the constructor of my structure and the iterators would borrow\\nboth the jets and shapes which would introduce a lifetime dependency into the\\nstructure.\\n\\n## [Day 18: Boiling Boulders](https://adventofcode.com/2022/day/18)\\n\\n:::info tl;dr\\n\\nLet\'s compute a surface area of some obsidian approximated via coordinates of\\ncubes.\\n\\n:::\\n\\n### Solution\\n\\nThis day is kinda interesting, because it shows how easily you can complicate the\\nproblem and also how much can you screw yourself over with the optimization and\\n\u201csmart\u201d approach.\\n\\nFor the first part you need to find the surface area of an obsidian that is\\napproximated by cubes. Now, that is a very easy thing to do, just keep the track\\nof already added cubes, and check if the newly added cube touches any face of any\\nother cube. Simple, and with a `BTreeSet` relatively efficient way to do it.\\n\\nHowever the second part lets you on a secret that there may be some surface area\\nfrom the \u201cinside\u201d too and you want to know only the one from the outside of the\\nobsidian. I have seen some solutions later, but if you check your data, you might\\nnotice that the bounding box of all the cubes isn\'t that big at all. Therefore I\\nchose to pre-construct the box beforehand, fill in the cubes and then just run a\\nBFS turning all the lava on the outside into the air. Now you just need to check\\ncubes and count how many of their faces touch the air.\\n\\n## [Day 19: Not Enough Minerals](https://adventofcode.com/2022/day/19)\\n\\n:::info tl;dr\\n\\nFinding out the best strategy for building robots to collect geodes.\\n\\n:::\\n\\n### Solution\\n\\nNot much interesting stuff to mention apart from the suggestion to never believe\\nthat the default implementation given by `derive` macro is what you want, it\\ndoesn\'t have to be. :smile:\\n\\n## [Day 20: Grove Positioning System](https://adventofcode.com/2022/day/20)\\n\\n:::info tl;dr\\n\\nShuffling around the _circular linked list_ to find the coordinates.\\n\\n:::\\n\\nNow, small rant for this day is in place. They\'ve never mentioned that coordinates\\ncan repeat and therefore the values are non-unique. This is something that did\\nnot happen in the given sample, but was present in the user input. It took \xbba lot\xab\\nto realize that this is the issue.\\n\\n### Solution\\n\\nI have tried implementing a circular linked list for this\u2026 and I have failed\\nmiserably. To be fair, I still have no clue why. It was \u201cfun\u201d to play around with\\nthe `Rc>`. In the end I failed on _wrong answer_. I have also encountered\\na rather interesting issue with `.borrow_mut()` method being used on `Rc>`.\\n\\n#### `.borrow_mut()`\\n\\nConsider the following snippet of the code (taken from the documentation):\\n\\n```rust\\nuse std::cell::{RefCell, RefMut};\\nuse std::collections::HashMap;\\nuse std::rc::Rc;\\n// use std::borrow::BorrowMut;\\n\\nfn main() {\\n let shared_map: Rc> = Rc::new(RefCell::new(HashMap::new()));\\n // Create a new block to limit the scope of the dynamic borrow\\n {\\n let mut map: RefMut<_> = shared_map.borrow_mut();\\n map.insert(\\"africa\\", 92388);\\n map.insert(\\"kyoto\\", 11837);\\n map.insert(\\"piccadilly\\", 11826);\\n map.insert(\\"marbles\\", 38);\\n }\\n\\n // Note that if we had not let the previous borrow of the cache fall out\\n // of scope then the subsequent borrow would cause a dynamic thread panic.\\n // This is the major hazard of using `RefCell`.\\n let total: i32 = shared_map.borrow().values().sum();\\n println!(\\"{total}\\");\\n}\\n```\\n\\nWe allocate a hash map on the heap and then in the inner block, we borrow it as\\na mutable reference, so that we can use it.\\n\\n:::note\\n\\nIt is a very primitive example for `Rc>` and mutable borrow.\\n\\n:::\\n\\nIf you uncomment the 4th line with `use std::borrow::BorrowMut;`, you cannot\\ncompile the code anymore, because of\\n\\n```\\n Compiling playground v0.0.1 (/playground)\\nerror[E0308]: mismatched types\\n --\x3e src/main.rs:10:34\\n |\\n10 | let mut map: RefMut<_> = shared_map.borrow_mut();\\n | --------- ^^^^^^^^^^^^^^^^^^^^^^^ expected struct `RefMut`, found mutable reference\\n | |\\n | expected due to this\\n |\\n = note: expected struct `RefMut<\'_, _>`\\n found mutable reference `&mut Rc>>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:11:13\\n |\\n11 | map.insert(\\"africa\\", 92388);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:12:13\\n |\\n12 | map.insert(\\"kyoto\\", 11837);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:13:13\\n |\\n13 | map.insert(\\"piccadilly\\", 11826);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:14:13\\n |\\n14 | map.insert(\\"marbles\\", 38);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nSome errors have detailed explanations: E0308, E0599.\\nFor more information about an error, try `rustc --explain E0308`.\\nerror: could not compile `playground` due to 5 previous errors\\n```\\n\\nIt might seem **a bit** ridiculous. However, I got to a point where the compiler\\nsuggested `use std::borrow::BorrowMut;` and it resulted in breaking parts of the\\ncode that worked previously. I think it may be a good idea to go over what is\\nhappening here.\\n\\n##### `.borrow_mut()` on `Rc>`\\n\\nLet\'s consider a variable `x` of type `Rc>`. What happens when you\\ncall `.borrow_mut()` on it? We can look at the `Rc` type, and\u2026 hang on! There is\\nneither `.borrow_mut()` method or `BorrowMut` trait implemented. How can we do it\\nthen?\\n\\nLet\'s go further and we can see that `RefCell` implements a `.borrow_mut()`\\nmethod. OK, but how can we call it on the `Rc`? Easily! `Rc` implements\\n`Deref` and therefore you can call methods on `Rc` objects as if they were\\n`T` objects. If we read on _`Deref` coercion_, we can see the following:\\n\\n> If `T` implements `Deref`, \u2026:\\n>\\n> - \u2026\\n> - `T` implicitly implements all the (immutable) methods of the type `U`.\\n\\nWhat is the requirement for the `.borrow_mut()` on `RefCell`? Well, it needs\\n`&self`, so the `Deref` implements the `.borrow_mut()` for the `Rc>`.\\n\\n##### `BorrowMut` trait\\n\\nI have not been able to find a lot on this trait. My guess is that it provides a\\nmethod instead of a syntactic sugar (`&mut x`) for the mutable borrow. And also\\nit provides default implementations for the types:\\n\\n```rust\\nimpl BorrowMut for String\\n\\nimpl BorrowMut for &mut T\\nwhere\\n T: ?Sized,\\n\\nimpl BorrowMut for T\\nwhere\\n T: ?Sized,\\n\\nimpl BorrowMut<[T]> for Vec\\nwhere\\n A: Allocator,\\n\\nimpl BorrowMut for Box\\nwhere\\n A: Allocator,\\n T: ?Sized,\\n\\nimpl BorrowMut<[T]> for [T; N]\\n```\\n\\n##### Conflict\\n\\nNow the question is why did it break the code\u2026 My first take was that the type\\n`Rc>` has some _specialized_ implementation of the `.borrow_mut()` and\\nthe `use` overrides it with the default, which is true **in a sense**. However\\nthere is no _specialized_ implementation. Let\'s have a look at the trait and the\\ntype signature on the `RefCell`:\\n\\n```rust\\n// trait\\npub trait BorrowMut: Borrow\\nwhere\\n Borrowed: ?Sized,\\n{\\n fn borrow_mut(&mut self) -> &mut Borrowed;\\n}\\n\\n// \u2039RefCell.borrow_mut()\u203a type signature\\npub fn borrow_mut(&self) -> RefMut<\'_, T>\\n```\\n\\nI think that we can definitely agree on the fact that `RefMut<\'_, T>` is not the\\n`RefCell`.\\n\\n**In my opinion**, `RefCell` implements a **separate** `.borrow_mut()` rather\\nthan implementing the interface, because it **cannot** satisfy the type requirements\\nof the trait.\\n\\n:::caution\\n\\nI wonder how are we expected to deal with this conflict, if and when, we need\\nboth the `.borrow_mut()` of the trait and `.borrow_mut()` of the `RefCell`.\\n\\n:::\\n\\n:::tip Fun fact\\n\\nI was suggested by the compiler to do `use std::borrow::BorrowMut;` and break the\\ncode.\\n\\nSo much for the _almighty_ and _helpful_ compiler\u2026\\n\\n:::\\n\\n## [Day 21: Monkey Math](https://adventofcode.com/2022/day/21)\\n\\n:::info tl;dr\\n\\nComputing an expression tree and then also finding ideal value for a node.\\n\\n:::\\n\\n### Solution\\n\\nRelatively simple, until you get to the 2nd part where you start to practice\\na lot of the copy-paste. I have managed to sneak some perverted stuff in there\\nthough :) Let\'s go through the details.\\n\\n#### `Default` trait\\n\\nFor the first time and twice I had a need to have a default value for my types,\\nenumerations in this case. Rust offers a very nice trait[^1] that is described\\nas:\\n\\n> A trait for giving a type a useful default value.\\n\\nI guess it sums it up nicely. The more interesting part about this is the fact\\nthat you can use the _macro machinery_ to save yourself some typing. If you have\\nenumeration of which the default value doesn\'t bear any parameter, you can just\\ndo[^2]:\\n\\n```rust\\n#[derive(Default)]\\nenum Color {\\n #[default]\\n White,\\n Gray,\\n Black,\\n}\\n```\\n\\n#### Abusing negation\\n\\nIf you want to use a _unary minus_ operator on your own type, you can implement\\na `Neg` trait[^3]. I was dealing with a binary tree and needed a way how to look\\nat the other side, so I have just implemented the negation for flipping between\\nleft and right :smile:\\n\\n[^1]: [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) docs\\n[^2]: Pardon my example from the graph algorithms ;)\\n[^3]: [`Neg`](https://doc.rust-lang.org/std/ops/trait.Neg.html) docs\\n\\n[_advent of code_]: https://adventofcode.com\\n[`itertools`]: https://crates.io/crates/itertools\\n[this reddit post and the comment]: https://www.reddit.com/r/adventofcode/comments/zb98pn/comment/iyq0ono"},{"id":"leetcode/sort-diagonally","metadata":{"permalink":"/blog/leetcode/sort-diagonally","editUrl":"https://github.com/mfocko/blog/tree/main/blog/leetcode/sort-matrix-diagonally.md","source":"@site/blog/leetcode/sort-matrix-diagonally.md","title":"Sort the matrix diagonally","description":"Compiler assisted development.","date":"2023-03-04T23:15:00.000Z","formattedDate":"March 4, 2023","tags":[{"label":"cpp","permalink":"/blog/tags/cpp"},{"label":"leetcode","permalink":"/blog/tags/leetcode"},{"label":"iterators","permalink":"/blog/tags/iterators"}],"readingTime":16.99,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Sort the matrix diagonally","description":"Compiler assisted development.","date":"2023-03-04T23:15","slug":"leetcode/sort-diagonally","authors":"mf","tags":["cpp","leetcode","iterators"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"3rd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/3rd-week"},"nextItem":{"title":"2nd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/2nd-week"}},"content":"Let\'s try to solve one of the LeetCode challenges in easy and hard mode at the\\nsame time.\\n\\n\x3c!--truncate--\x3e\\n\\n- Link to the problem: https://leetcode.com/problems/sort-the-matrix-diagonally/\\n\\n## Problem description\\n\\nA **matrix diagonal** is a diagonal line of cells starting from some cell in\\neither the topmost row or leftmost column and going in the bottom-right direction\\nuntil reaching the matrix\'s end. For example, the **matrix diagonal** starting\\nfrom `mat[2][0]`, where `mat` is a `6 x 3` matrix, includes cells `mat[2][0]`,\\n`mat[3][1]`, and `mat[4][2]`.\\n\\nGiven an `m x n` matrix `mat` of integers, sort each matrix diagonal in ascending\\norder and return the resulting matrix.\\n\\n### Example\\n\\n![Image describing the problem](https://assets.leetcode.com/uploads/2020/01/21/1482_example_1_2.png)\\n\\n## Skeleton and initial adjustments\\n\\nWe are given the following skeleton for the C++ and the given challenge:\\n\\n```cpp\\nclass Solution {\\npublic:\\n vector> diagonalSort(vector>& mat) {\\n\\n }\\n};\\n```\\n\\nThe task is to sort the passed matrix diagonally and then return it. First of all,\\nI don\'t like to solve this in a web browser, so we\'ll need to adjust it accordingly\\nfor running it locally. We\'ll start by including the `vector` header and using\\nfully-qualified namespaces[^1] and also adding few tests:\\n\\n```cpp\\n#include \\n#include \\n\\nusing matrix = std::vector>;\\n\\nclass Solution {\\npublic:\\n matrix diagonalSort(matrix& mat)\\n {\\n }\\n};\\n\\nstatic void test_case_1()\\n{\\n // Input: mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]\\n // Output: [[1,1,1,1],[1,2,2,2],[1,2,3,3]]\\n\\n Solution s;\\n assert((s.diagonalSort(std::vector { std::vector { 3, 3, 1, 1 },\\n std::vector { 2, 2, 1, 2 },\\n std::vector { 1, 1, 1, 2 } })\\n == std::vector { std::vector { 1, 1, 1, 1 },\\n std::vector { 1, 2, 2, 2 },\\n std::vector { 1, 2, 3, 3 } }));\\n}\\n\\nstatic void test_case_2()\\n{\\n // Input: mat =\\n // [[11,25,66,1,69,7],[23,55,17,45,15,52],[75,31,36,44,58,8],[22,27,33,25,68,4],[84,28,14,11,5,50]]\\n // Output:\\n // [[5,17,4,1,52,7],[11,11,25,45,8,69],[14,23,25,44,58,15],[22,27,31,36,50,66],[84,28,75,33,55,68]]\\n\\n Solution s;\\n assert((s.diagonalSort(std::vector { std::vector { 11, 25, 66, 1, 69, 7 },\\n std::vector { 23, 55, 17, 45, 15, 52 },\\n std::vector { 75, 31, 36, 44, 58, 8 },\\n std::vector { 22, 27, 33, 25, 68, 4 },\\n std::vector { 84, 28, 14, 11, 5, 50 } })\\n == std::vector { std::vector { 5, 17, 4, 1, 52, 7 },\\n std::vector { 11, 11, 25, 45, 8, 69 },\\n std::vector { 14, 23, 25, 44, 58, 15 },\\n std::vector { 22, 27, 31, 36, 50, 66 },\\n std::vector { 84, 28, 75, 33, 55, 68 } }));\\n}\\n\\nint main()\\n{\\n test_case_1();\\n test_case_2();\\n\\n return 0;\\n}\\n```\\n\\nWe need to return the matrix, but we\'re given a reference to the input matrix. We\\ncan easily abuse the C++ here and just switch the reference to value, this way\\nthe matrix will be copied when passed to the function, we can sort the copy and\\njust return it back. And we also get yelled by the compiler for the fact that the\\nmethod doesn\'t return anything yet, so to make it \u201cshut up\u201d we will just return\\nthe input for now:\\n\\n```diff\\n- matrix diagonalSort(matrix& mat)\\n+ matrix diagonalSort(matrix mat)\\n {\\n+ return mat;\\n }\\n```\\n\\nNow, we get the copy and we\'re good to go.\\n\\n## Na\xefve solution\\n\\nAs you may know, C++ offers a plethora of functions that can be used to your\\nadvantage, given that you know how to \u201cbend\u201d the data structures accordingly.\\n\\nWhat does that mean for us? Well, we have an `std::sort`, we can use it, right?\\nLet\'s have a look at it:\\n\\n```cpp\\ntemplate< class RandomIt >\\nvoid sort( RandomIt first, RandomIt last );\\n```\\n\\nThis overload is more than we need. What does it do? It just sorts the elements\\nin the range `[first, last)` using `operator<` on them. We can\'t sort the whole\\nmatrix using this, but\u2026 we can sort just \xbbone\xab diagonal without doing much work\\non our end.\\n\\nWhat is the `RandomIt` type though? If we look more into the documentation, we\\ncan easily find the requirements for it and also learn that it\'s a _random access_\\n_iterator_ and allows swapping its values at the same time.\\n\\n:::tip Random access iterator\\n\\nWhat is the _random access iterator_ though? We can find it in a documentation\\nand see the following description:\\n\\n> A **LegacyRandomAccessIterator** is a [LegacyBidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator)\\n> that can be moved to point to any element in constant time.\\n\\nAfter that we can see all the requirements for it being listed. I don\'t feel like\\nreading them right now, so we will just use it and see where the compilation blows\\nup, i.e. \u201c_compiler-assisted development_\u201d[^2] if you will ;)\\n\\n:::\\n\\nNow we know that we can use `std::sort` to sort the diagonal itself, but we also\\nneed to get the diagonals somehow. I\'m rather lazy, so I\'ll just delegate it to\\nsomeone else[^3]. And that way we get\\n\\n```cpp\\nmatrix diagonalSort(matrix mat)\\n{\\n // we iterate over the diagonals\\n for (auto d : diagonals(mat)) {\\n // and we sort each diagonal\\n std::sort(d.begin(), d.end());\\n }\\n\\n // we take the matrix by copy, so we can sort in-situ and return the copy\\n // that we sorted\\n return mat;\\n}\\n```\\n\\nThis solution looks very simple, doesn\'t it? Well, cause it is.\\nLet\'s try compiling it:\\n\\n```\\nmatrix-sort.cpp:11:23: error: use of undeclared identifier \'diagonals\' [clang-diagnostic-error]\\n for (auto d : diagonals(mat)) {\\n ^\\nFound compiler error(s).\\nmake: *** [makefile:14: tidy] Error 1\\n```\\n\\nOK, seems about right. We haven\'t implemented the `diagonals` yet. And based on\\nwhat we\'ve written so far, we need a function or a class `diagonals` that will\\ngive us the diagonals we need.\\n\\n## Implementing the `diagonals`\\n\\nCool, so we need the function that will let us go through each and every diagonal\\nin our matrix. We use the _for-range_ loop, so whatever we get back from the\\n`diagonals` must support `.begin()` and `.end()`. Since I am a masochist, we will\\ndo such functionality for a matrix of any type, not just the `int` from the challenge.\\n\\nAs I said, we need to be able to\\n\\n- construct the object\\n- get the beginning\\n- get the end (the \u201csentinel\u201d)\\n\\n```cpp\\ntemplate \\nclass diagonals {\\n using matrix_t = std::vector>;\\n\\n matrix_t& _matrix;\\n\\npublic:\\n diagonals(matrix_t& m)\\n : _matrix(m)\\n {\\n }\\n diagonals_iter begin()\\n {\\n /* TODO */\\n }\\n diagonals_iter end()\\n {\\n /* TODO */\\n }\\n};\\n```\\n\\nNow we have a `diagonals` that we can use to go through the diagonals. We haven\'t\\nimplemented the core of it yet. Let\'s go through what we have for now.\\n\\nWe have a templated class with templated `T` that is used as a placeholder for any\\ntype we would store in the matrix. Because I\'m lazy, I have defined the `matrix_t`\\ntype that is a \u201cshortcut\u201d for `std::vector>`, so I don\'t have to\\ntype it out all the time. Of course, we need to store the matrix, we are given,\\nas a private attribute. And then just have the constructor and the 2 methods we\\nneed for the _for-range_.\\n\\n### Iterating over diagonals\\n\\nNow that we have an object that will allow us to iterate through the diagonals,\\nwe need to implement the iterating itself. We need to go through all of them, so\\nwe have multiple options how to do so. I have decided to start from the \u201cmain\u201d\\ndiagonal that starts at `(0, 0)` index and then proceed with the diagonals starting\\nin the first row, followed by the rest of the diagonals in the first column.\\n\\nWe need to be able to tell that we\'ve iterated through all of them, and also we\\nneed to know which diagonal is next. For that purpose we will pass the indices\\nof the first cell on the diagonal. That way we can always tell how to move forward.\\n\\nWe will start by updating the `begin` and `end` to reflect our choice accordingly.\\n\\n```cpp\\ndiagonals_iter begin() { return diagonals_iter { _matrix, 0, 0 }; }\\ndiagonals_iter end() { return diagonals_iter { _matrix, 0, _matrix.size() }; }\\n```\\n\\nFor the `begin` we return the first diagonal that starts at `(0, 0)`. And because\\nwe have decided to do the diagonals in the first column at the end, the first\\ndiagonal that is not a valid one is the one at `(0, height)`. Apart from the\\nindices, we also need to pass reference to the matrix itself.\\n\\n:::note\\n\\nYou may have noticed that we also include the diagonals that have length 1,\\nspecifically the ones at `(0, height - 1)` and `(width - 1, 0)`. We are implementing\\nan iterator that **should not** care about the way it\'s being used. Therefore, we\\ndon\'t care about the fact they don\'t need to be sorted.\\n\\n:::\\n\\nCool, let\'s leave the iterator itself to someone else, right?[^4]\\n\\n### Implementing the iterator over diagonals\\n\\nWe can start with a simple skeleton based on the information that we pass from\\nthe `diagonals`. Also to utilize the `matrix_t` and also contain implementation\\ndetails hidden away, we will put this code into the `diagonals` class.\\n\\n```cpp\\nclass diagonals_iter {\\n matrix_t& m;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonals_iter(matrix_t& matrix, std::size_t x, std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n};\\n```\\n\\nIn this case we will be implementing a \u201csimple\u201d forward iterator, so we don\'t\\nneed to implement a lot. Notably it will be:\\n\\n- inequality operator (we need to know when we reach the end and have nothing to\\n iterate over)\\n- preincrementation operator (we need to be able to move around the iterable)\\n- dereference operator (we need to be able to retrieve the objects we iterate\\n over)\\n\\n```cpp\\nclass diagonals_iter {\\n matrix_t& m;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonals_iter(matrix_t& matrix, std::size_t x, std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator!=(const diagonals_iter& rhs) const\\n {\\n // iterators are not equal if they reference different matrices, or\\n // their positions differ\\n return m != rhs.m || x != rhs.x || y != rhs.y;\\n }\\n\\n diagonals_iter& operator++()\\n {\\n if (y != 0) {\\n // iterating through diagonals down the first column\\n y++;\\n return *this;\\n }\\n\\n // iterating the diagonals along the first row\\n x++;\\n if (x == m.front().size()) {\\n // switching to diagonals in the first column\\n x = 0;\\n y++;\\n }\\n\\n return *this;\\n }\\n\\n diagonal operator*() const { return diagonal { m, x, y }; }\\n};\\n```\\n\\nLet\'s go one-by-one. Inequality operator is rather simple, just compare iterator\'s\\nattributes field-by-field. If you think about it, checking inequality of two 2D\\nvectors may be a bit inefficient, therefore, we can swap around and check it as\\na last thing.\\n\\n```diff\\n- return m != rhs.m || x != rhs.x || y != rhs.y;\\n+ return x != rhs.x || y != rhs.y || m != rhs.m;\\n```\\n\\nPreincrementation is where the magic happens. If you have a better look, you can\\nsee two branches of this operation:\\n\\n1. When `y != 0` (we\'re iterating over the diagonals in the first column)\\n In this case, we just bump the row and we\'re done.\\n2. When `y == 0` (we\'re iterating over the diagonals in the first row)\\n In this case, we bump the column and check if we haven\'t gotten out of bounds,\\n i.e. the end of the first row. If we get out of the bounds, we\'re continuing\\n with the second diagonal in the first column.\\n\\nDereferencing the iterator must \u201cyield\u201d something. In our case it will be the\\ndiagonal that we want to sort. For sorting we need just the iterators that can\\nmove around said diagonal. The simplest thing, we can do, is to delegate it to\\nsomething else. In our case it will be a class called `diagonal`.\\n\\n## Implementing the `diagonal` itself\\n\\nAfter implementing the iterator over diagonals, we know that all we need to describe\\na diagonal is the matrix itself and the \u201cstart\u201d of the diagonal (row and column).\\nAnd we also know that the diagonal must provide some iterators for the `std::sort`\\nfunction. We can start with the following skeleton:\\n\\n```cpp\\ntemplate \\nclass diagonal {\\n using matrix_t = std::vector>;\\n\\n matrix_t& matrix;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonal(matrix_t& matrix, std::size_t x, std::size_t y)\\n : matrix(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n diagonal_iter begin() const { return diagonal_iter { matrix, x, y }; }\\n\\n diagonal_iter end() const\\n {\\n auto max_x = matrix[y].size();\\n auto max_y = matrix.size();\\n\\n // we need to find the distance in which we get out of bounds (either in\\n // column or row)\\n auto steps = std::min(max_x - x, max_y - y);\\n\\n return diagonal_iter { matrix, x + steps, y + steps };\\n }\\n};\\n```\\n\\nInitialization is rather simple, we just \u201ckeep\u201d the stuff we get, `begin` is the\\nsimplest, we just delegate.\\n\\nIn case of the `end`, it gets more complicated. We need to know where is the \u201cend\u201d\\nof the diagonal. Since `end` should point to the first element \u201cafter\u201d the iterable,\\nwe know that it\'s the first position of the iterator where either `y` becomes\\n`matrix.size()` or `x` becomes `matrix[y].size()`. Also we are moving along diagonal,\\nduh, therefore we can deduce the first \u201cposition\u201d afterwards by minimal amount of\\nsteps to get out of the any column or row, hence `std::min(max_x - x, max_y - y)`.\\nFinal position is then computed simply by adding the steps to the beginning of\\nthe diagonal.\\n\\nNow we just need to finish the iterator for the diagonal itself and we\'re done.\\n\\n### Implementing `diagonal_iter`\\n\\nThis part is the hardest from all we need to do. It\'s because of the requirements\\nof the `std::sort` that requires us to implement a _random access iterator_. I have\\nbriefly described it above, and \u201cin a nutshell\u201d it means that we need to implement\\nan iterator that can move in constant time along the diagonal in any amount of\\nsteps.\\n\\nLet\'s go through all of the functionality that our iterator needs to support to\\nbe used in `std::sort`. We need the usual operations like:\\n\\n- equality/inequality\\n- incrementation\\n- dereferencing\\n\\nWe will also add all the types that our iterator uses with the category of the\\niterator, i.e. what interface it supports:\\n\\n```cpp\\nclass diagonal_iter {\\n // we need to keep reference to the matrix itself\\n matrix_t& m;\\n\\n // we need to be able to tell our current position\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n using difference_type = std::ptrdiff_t;\\n using value_type = T;\\n using pointer = T*;\\n using reference = T&;\\n using iterator_category = std::random_access_iterator_tag;\\n\\n diagonal_iter(matrix_t& matrix,\\n std::size_t x,\\n std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator==(const diagonal_iter& rhs) const\\n {\\n return x == rhs.x && y == rhs.y && m == rhs.m;\\n }\\n\\n diagonal_iter& operator++()\\n {\\n // we are moving along the diagonal, so we increment both \u2039x\u203a and \u2039y\u203a at\\n // the same time\\n x++;\\n y++;\\n return *this;\\n }\\n\\n reference operator*() const { return m[y][x]; }\\n};\\n```\\n\\nThis is pretty similar to the previous iterator, but now we need to implement the\\nremaining requirements of the _random access iterator_. Let\'s see what those are:\\n\\n- decrementation - cause we need to be able to move backwards too, since _random _\\n _access iterator_ extends the interface of _bidirectional iterator_\\n- moving the iterator in either direction by steps given as an integer\\n- being able to tell the distance between two iterators\\n- define an ordering on the iterators\\n\\nLet\'s fill them in:\\n\\n```cpp\\nclass diagonal_iter {\\n // we need to keep reference to the matrix itself\\n matrix_t& m;\\n\\n // we need to be able to tell our current position\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n using difference_type = std::ptrdiff_t;\\n using value_type = T;\\n using pointer = T*;\\n using reference = T&;\\n using iterator_category = std::random_access_iterator_tag;\\n\\n diagonal_iter(matrix_t& matrix,\\n std::size_t x,\\n std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator==(const diagonal_iter& rhs) const\\n {\\n return x == rhs.x && y == rhs.y && m == rhs.m;\\n }\\n\\n diagonal_iter& operator++()\\n {\\n // we are moving along the diagonal, so we increment both \u2039x\u203a and \u2039y\u203a at\\n // the same time\\n x++;\\n y++;\\n return *this;\\n }\\n\\n reference operator*() const { return m[y][x]; }\\n\\n // exactly opposite to the incrementation\\n diagonal_iter operator--()\\n {\\n x--;\\n y--;\\n return *this;\\n }\\n\\n // moving \u2039n\u203a steps back is same as calling decrementation \u2039n\u203a-times, so we\\n // can just return a new iterator and subtract \u2039n\u203a from both coordinates in\\n // the matrix\\n diagonal_iter operator-(difference_type n) const\\n {\\n return diagonal_iter { m, x - n, y - n };\\n }\\n\\n // here we assume that we are given two iterators on the same diagonal\\n difference_type operator-(const diagonal_iter& rhs) const\\n {\\n assert(m == rhs.m);\\n return x - rhs.x;\\n }\\n\\n // counterpart of moving \u2039n\u203a steps backwards\\n diagonal_iter operator+(difference_type n) const\\n {\\n return diagonal_iter { m, x + n, y + n };\\n }\\n\\n // we compare the coordinates, and also assume that those 2 iterators are\\n // lying on the same diagonal\\n bool operator<(const diagonal_iter& rhs) const\\n {\\n assert(m == rhs.m);\\n return x < rhs.x && y < rhs.y;\\n }\\n};\\n```\\n\\nAt this point we could probably try and compile it, right? If we do so, we will\\nget yelled at by a compiler for the following reasons:\\n\\n```\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n __last = __next;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1817:11: note: in instantiation of function template specialization \'std::__unguarded_linear_insert::diagonal_iter, __gnu_cxx::__ops::_Val_less_iter>\' requested here\\n std::__unguarded_linear_insert(__i,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1849:9: note: in instantiation of function template specialization \'std::__insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__insertion_sort(__first, __first + int(_S_threshold), __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization \'std::__final_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__final_insertion_sort(__first, __last, __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1830:2: error: no matching function for call to \'__unguarded_linear_insert\' [clang-diagnostic-error]\\n std::__unguarded_linear_insert(__i,\\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1850:9: note: in instantiation of function template specialization \'std::__unguarded_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization \'std::__final_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__final_insertion_sort(__first, __last, __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1782:5: note: candidate template ignored: substitution failure [with _RandomAccessIterator = diagonal::diagonal_iter, _Compare = __gnu_cxx::__ops::_Val_less_iter]\\n __unguarded_linear_insert(_RandomAccessIterator __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1923:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n __last = __cut;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1937:9: note: in instantiation of function template specialization \'std::__introsort_loop::diagonal_iter, long, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__introsort_loop(__first, __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n```\\n\\nThat\'s a lot of noise, isn\'t it? Let\'s focus on the important parts:\\n\\n```\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n\u2026\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n```\\n\\nAh! We have a reference in our iterator, and this prevents us from having a copy\\nassignment operator (that is used \u201csomewhere\u201d in the sorting algorithm). Well\u2026\\nLet\'s just wrap it!\\n\\n```diff\\n# we need to keep a different type than reference\\n- matrix_t& m;\\n+ std::reference_wrapper m;\\n\\n# in comparison we need to get the reference out of the wrapper first\\n- return x == rhs.x && y == rhs.y && m == rhs.m;\\n+ return x == rhs.x && y == rhs.y && m.get() == rhs.m.get();\\n\\n# same when we return a reference to the \u201ccell\u201d in the matrix\\n- reference operator*() const { return m[y][x]; }\\n+ reference operator*() const { return m.get()[y][x]; }\\n\\n# and finally in the assertions that we set for the \u201cdistance\u201d and \u201cless than\u201d\\n- assert(m == rhs.m);\\n+ assert(m.get() == rhs.m.get());\\n```\\n\\nWe\'re done now! We have written an iterator over diagonals for a 2D `vector`. You can have a look at the final result [here](pathname:///files/blog/leetcode/sort-matrix-diagonally/matrix-sort.cpp).\\n\\n[^1]: just because I\'m used to it and don\'t care about your opinion ;)\\n[^2]: exercise at your own risk\\n[^3]: me in 5 minutes in fact, but don\'t make me scared\\n[^4]: me in the next section\u2026"},{"id":"aoc-2022/2nd-week","metadata":{"permalink":"/blog/aoc-2022/2nd-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/02-week-2.md","source":"@site/blog/aoc-2022/02-week-2.md","title":"2nd week of Advent of Code \'22 in Rust","description":"Surviving second week in Rust.","date":"2022-12-25T23:15:00.000Z","formattedDate":"December 25, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":20.875,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"2nd week of Advent of Code \'22 in Rust","description":"Surviving second week in Rust.","date":"2022-12-25T23:15","slug":"aoc-2022/2nd-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Sort the matrix diagonally","permalink":"/blog/leetcode/sort-diagonally"},"nextItem":{"title":"1st week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/1st-week"}},"content":"Let\'s go through the second week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 8: Treetop Tree House](https://adventofcode.com/2022/day/8)\\n\\n:::info tl;dr\\n\\nWe get a forest and we want to know how many trees are visible from the outside.\\nApart from that we want to find the best view.\\n\\n:::\\n\\nNothing interesting. We are moving around 2D map though. And indexing can get a\\nbit painful when doing so, let\'s refactor it a bit ;) During the preparation for\\nthe AoC, I have written `Vector2D` and now it\'s time to extend it with indexing\\nof `Vec` of `Vec`s. In my solution I was manipulating with indices in the following\\nway:\\n\\n- swapping them\\n- checking whether they are correct indices for the `Vec>`\\n- indexing `Vec>` with them\\n\\n:::caution\\n\\nI\'m getting familiar with Rust and starting to \u201cabuse\u201d it\u2026 While doing so, I\'m\\nalso uncovering some \u201cfeatures\u201d that I don\'t really like. Therefore I will mark\\nall of my rants with _thicc_ **\xab\u21af\xbb** mark and will try to \u201clock\u201d them into their\\nown \u201cbox of hell\u201d.\\n\\n:::\\n\\n#### Swapping indices\\n\\nRelatively simple implementation, just take the values, swap them and return new\\nvector.\\n\\n```rust\\nimpl Vector2D {\\n pub fn swap(&self) -> Self {\\n Self {\\n x: self.y,\\n y: self.x,\\n }\\n }\\n}\\n```\\n\\nPretty straight-forward implementation, but let\'s talk about the `T: Copy`. We\\nneed to use it, since we are returning a **new** vector, with swapped **values**.\\nIf we had values that cannot be copied, the only thing we could do, would be a\\nvector of references (and it would also introduce a lifetime, to which we\'ll get\\nlater on). This is pretty similar with the operations on sets from the first week.\\n\\n#### Indexing `Vec`\\n\\nI will start with the indexing, cause bound-checking is a bit more\u2026 complicated\\nthan I would like to.\\n\\n```rust\\npub fn index<\'a, T, U>(v: &\'a [Vec], idx: &Vector2D) -> &\'a U\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &v[y][x]\\n}\\n```\\n\\nLet\'s talk about this mess\u2026 Body of the function is probably the most easy part\\nand should not be hard to understand, we just take the `x` and `y` and convert\\nthem both to `usize` type that can be used later on for indexing.\\n\\nThe type signature of the function is where the fun is at :wink: We are trying\\nto convert unknown type to `usize`, so we must bound the `T` as a type that can\\nbe converted to `usize`, that\'s how we got `usize: TryFrom` which basically\\nsays that `usize` must implement `TryFrom` trait and therefore allows us to\\nconvert the indices to actual `usize` indices. Using `.unwrap()` also forces us\\nto bound the error that can occur when converting `T` into `usize`, that\'s how\\nwe get `>::Error: Debug` which loosely means\\n\\n> error during conversion of `T` into `usize` must implement `Debug`,\\n> i.e. can be printed in some way or other\\n\\n`T: Copy` is required by `.try_into()` which takes `T` by-value.\\n\\nAnd now we are left only with the first line of the definition.\\n\\n:::note\\n\\nSkilled Rustaceans might notice that this implementation is rather flaky and can\\nbreak in multiple places at once. I\'ll get back to it\u2026\\n\\n:::\\n\\nLet\'s split it in multiple parts:\\n\\n- `v: &\'a [Vec]` represents the 2D `Vec`, we are indexing, `Vec` implements\\n `Slice` trait and _clippy_ recommends using `&[T]` to `&Vec`, exact details\\n are unknown to me\\n- `idx: &Vector2D` represents the _indices_ which we use, we take them by\\n reference to avoid an unnecessary copy\\n- `-> &\'a U` means that we are returning a _reference_ to some value of type `U`.\\n Now the question is what does the `\'a` mean, we can also see it as a generic\\n type declared along `T` and `U`. And the answer is _relatively_ simple, `\'a`\\n represents a _lifetime_. We take the `v` by a reference and return a reference,\\n borrow checker validates all of the _borrows_ (or references), so we need to\\n specify that our returned value has _the same lifetime_ as the vector we have\\n taken by a reference, i.e. returned reference must live at least as long as the\\n `v`. This way we can \u201cbe sure\u201d that the returned reference is valid.\\n\\n##### Issues\\n\\nFirst issue that our implementation has is the fact that we cannot get a mutable\\nreference out of that function. This could be easily resolved by introducing new\\nfunction, e.g. `index_mut`. Which I have actually done while writing this part:\\n\\n```rust\\npub fn index_mut<\'a, T, U>(v: &\'a mut [Vec], idx: &Vector2D) -> &\'a mut U\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &mut v[y][x]\\n}\\n```\\n\\n:::caution **\xab\u21af\xbb** Why can\'t we use one function?\\n\\nWhen we consider a `Vec`, we don\'t need to consider containers as `T`, Rust\\nimplements indexing as traits `Index` and `IndexMut` that do the dirty work\\nbehind syntactic sugar of `container[idx]`.\\n\\nHowever, implementing of traits is not allowed for _external_ types, i.e. types\\nthat you haven\'t defined yourself. This means that you can implement indexing\\nover containers that you have implemented yourself, but you cannot use your own\\ntypes for indexing \u201cbuilt-in\u201d types.\\n\\nAnother part of this rabbit hole is trait `SliceIndex` that is of a relevance\\nbecause of\\n\\n```rust\\nimpl Index for [T]\\nwhere\\n I: SliceIndex<[T]>\\n\\nimpl Index for Vec\\nwhere\\n I: SliceIndex<[T]>,\\n A: Allocator\\n\\nimpl Index for [T; N]\\nwhere\\n [T]: Index\\n```\\n\\nIn other words, if your type implements `SliceIndex` trait, it can be used\\nfor indexing. As of now, this trait has all of its required methods experimental\\nand is marked as `unsafe`.\\n\\n:::\\n\\nAnother problem is a requirement for indexing either `[Vec]` or `Vec>`.\\nThis requirement could be countered by removing inner type `Vec` and constraining\\nit by a trait `Index` (or `IndexMut` respectively) in a following way\\n\\n```rust\\npub fn index<\'a, C, T>(v: &\'a [C], idx: &Vector2D) -> &\'a C::Output\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n C: Index\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &v[y][x]\\n}\\n```\\n\\nGiven this, we can also give a more meaningful typename for indexing type, such\\nas `I`.\\n\\n#### Checking bounds\\n\\nNow we can get to the boundary checks, it is very similar, but a more\u2026 dirty.\\nFirst approach that came up was to convert the indices in `Vector2D` to `usize`,\\nbut when you add the indices up, e.g. when checking the neighbors, you can end\\nup with negative values which, unlike in C++, causes an error (instead of underflow\\nthat you can use to your advantage; you can easily guess how).\\n\\nSo how can we approach this then? Well\u2026 we will convert the bounds instead of\\nthe indices and that lead us to:\\n\\n```rust\\npub fn in_range(v: &[Vec], idx: &Vector2D) -> bool\\nwhere\\n usize: TryInto,\\n >::Error: Debug,\\n T: PartialOrd + Copy,\\n{\\n idx.y >= 0.try_into().unwrap()\\n && idx.y < v.len().try_into().unwrap()\\n && idx.x >= 0.try_into().unwrap()\\n && idx.x\\n < v[TryInto::::try_into(idx.y).unwrap()]\\n .len()\\n .try_into()\\n .unwrap()\\n}\\n```\\n\\nYou can tell that it\'s definitely a shitty code. Let\'s improve it now! We will\\nget back to the original idea, but do it better. We know that we cannot convert\\nnegative values into `usize`, **but** we also know that conversion like that\\nreturns a `Result` which we can use to our advantage.\\n\\n```rust\\npub fn in_range(v: &[Vec], idx: &Vector2D) -> bool\\nwhere\\n T: Copy,\\n usize: TryFrom,\\n{\\n usize::try_from(idx.y)\\n .and_then(|y| usize::try_from(idx.x).map(|x| y < v.len() && x < v[y].len()))\\n .unwrap_or(false)\\n}\\n```\\n\\n`Result` is a type similar to `Either` in Haskell and it allows us to chain\\nmultiple operations on correct results or propagate the original error without\\ndoing anything. Let\'s dissect it one-by-one.\\n\\n`try_from` is a method implemented in `TryFrom` trait, that allows you to convert\\ntypes and either successfully convert them or fail (with a reasonable error). This\\nmethod returns `Result`.\\n\\nWe call `and_then` on that _result_, let\'s have a look at the type signature of\\n`and_then`, IMO it explains more than enough:\\n\\n```rust\\npub fn and_then(self, op: F) -> Result\\nwhere\\n F: FnOnce(T) -> Result\\n```\\n\\nOK\u2026 So it takes the result and a function and returns another result with\\ndifferent value and different error. However we can see that the function, which\\nrepresents an operation on a result, takes just the value, i.e. it doesn\'t care\\nabout any previous error. To make it short:\\n\\n> `and_then` allows us to run an operation, which can fail, on the correct result\\n\\nWe parsed a `y` index and now we try to convert the `x` index with `try_from`\\nagain, but on that result we use `map` rather than `and_then`, why would that be?\\n\\n```rust\\npub fn map(self, op: F) -> Result\\nwhere\\n F: FnOnce(T) -> U\\n```\\n\\nHuh\u2026 `map` performs an operation that **cannot** fail. And finally we use\\n`unwrap_or` which takes the value from result, or in case of an error returns the\\ndefault that we define.\\n\\nHow does this work then? If `y` is negative, the conversion fails and the error\\npropagates all the way to `unwrap_or`, if `y` can be a correct `usize` value, then\\nwe do the same with `x`. If `x` is negative, we propagate the error as with `y`,\\nand if it\'s not, then we check whether it exceeds the higher bounds or not.\\n\\n### Solution\\n\\nRelatively simple, you just need follow the rules and not get too smart, otherwise\\nit will get back at you.\\n\\n## [Day 9: Rope Bridge](https://adventofcode.com/2022/day/9)\\n\\n:::info tl;dr\\n\\nWe get a rope with knots and we want to track how many different positions are\\nvisited with the rope\'s tail.\\n\\n:::\\n\\nBy this day, I have come to a conclusion that current skeleton for each day\\ngenerates a lot of boilerplate. And even though it can be easily copied, it\'s\\njust a waste of space and unnecessary code. Let\'s \u201csimplify\u201d this (on one end\\nwhile creating monster on the other end). I\'ve gone through what we need in the\\npreparations for the AoC. Let\'s sum up our requirements:\\n\\n- parsing\\n- part 1 & 2\\n- running on sample / input\\n- tests\\n\\nParsing and implementation of both parts is code that changes each day and we\\ncannot do anything about it. However running and testing can be simplified!\\n\\nLet\'s introduce and export a new module `solution` that will take care of all of\\nthis. We will start by introducing a trait for each day.\\n\\n```rust\\npub trait Solution {\\n fn parse_input>(pathname: P) -> Input;\\n\\n fn part_1(input: &Input) -> Output;\\n fn part_2(input: &Input) -> Output;\\n}\\n```\\n\\nThis does a lot of work for us already, we have defined a trait and for each day\\nwe will create a structure representing a specific day. That structure will also\\nimplement the `Solution` trait.\\n\\nNow we need to get rid of the boilerplate, we can\'t get rid of the `main` function,\\nbut we can at least move out the functionality.\\n\\n```rust\\nfn run(type_of_input: &str) -> Result<()>\\nwhere\\n Self: Sized,\\n{\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = Self::parse_input(format!(\\"{}s/{}.txt\\", type_of_input, Self::day()));\\n\\n info!(\\"Part 1: {}\\", Self::part_1(&input));\\n info!(\\"Part 2: {}\\", Self::part_2(&input));\\n\\n Ok(())\\n}\\n\\nfn main() -> Result<()>\\nwhere\\n Self: Sized,\\n{\\n Self::run(\\"input\\")\\n}\\n```\\n\\nThis is all part of the `Solution` trait, which can implement methods while being\\ndependent on what is provided by the implementing types. In this case, we just\\nneed to bound the `Output` type to implement `Display` that is necessary for the\\n`info!` and format string there.\\n\\nNow we can get to first of the nasty things we are going to do\u2026 And it is the\\n`day()` method that you can see being used when constructing path to the input\\nfile. That method will generate a name of the file, e.g. `day01` and we know that\\nwe can _somehow_ deduce it from the structure name, given we name it reasonably.\\n\\n```rust\\nfn day() -> String {\\n let mut day = String::from(type_name::().split(\\"::\\").next().unwrap());\\n day.make_ascii_lowercase();\\n\\n day.to_string()\\n}\\n```\\n\\n:::caution `type_name`\\n\\nThis feature is still experimental and considered to be internal, it is not\\nadvised to use it any production code.\\n\\n:::\\n\\nAnd now we can get to the nastiest stuff :weary: We will **generate** the tests!\\n\\nWe want to be able to generate tests for sample input in a following way:\\n\\n```rust\\ntest_sample!(day_01, Day01, 42, 69);\\n```\\n\\nThere\'s not much we can do, so we will write a macro to generate the tests for us.\\n\\n```rust\\n#[macro_export]\\nmacro_rules! test_sample {\\n ($mod_name:ident, $day_struct:tt, $part_1:expr, $part_2:expr) => {\\n #[cfg(test)]\\n mod $mod_name {\\n use super::*;\\n\\n #[test]\\n fn test_part_1() {\\n let sample =\\n $day_struct::parse_input(&format!(\\"samples/{}.txt\\", $day_struct::day()));\\n assert_eq!($day_struct::part_1(&sample), $part_1);\\n }\\n\\n #[test]\\n fn test_part_2() {\\n let sample =\\n $day_struct::parse_input(&format!(\\"samples/{}.txt\\", $day_struct::day()));\\n assert_eq!($day_struct::part_2(&sample), $part_2);\\n }\\n }\\n };\\n}\\n```\\n\\nWe have used it in a similar way as macros in C/C++, one of the things that we\\ncan use to our advantage is defining \u201ctype\u201d of the parameters for the macro. All\\nparameters have their name prefixed with `$` sign and you can define various \u201cforms\u201d\\nof your macro. Let\'s go through it!\\n\\nWe have following parameters:\\n\\n- `$mod_name` which represents the name for the module with tests, it is typed\\n with `ident` which means that we want a valid identifier to be passed in.\\n- `$day_struct` represents the structure that will be used for tests, it is typed\\n with `tt` which represents a _token tree_, in our case it is a type.\\n- `$part_X` represents the expected output for the `X`th part and is of type `expr`\\n which literally means an _expression_.\\n\\nApart from that we need to use `#[macro_export]` to mark the macro as exported\\nfor usage outside of the module. Now our skeleton looks like:\\n\\n```rust\\nuse aoc_2022::*;\\n\\ntype Input = String;\\ntype Output = String;\\n\\nstruct DayXX;\\nimpl Solution for DayXX {\\n fn parse_input>(pathname: P) -> Input {\\n file_to_string(pathname)\\n }\\n\\n fn part_1(input: &Input) -> Output {\\n todo!()\\n }\\n\\n fn part_2(input: &Input) -> Output {\\n todo!()\\n }\\n}\\n\\nfn main() -> Result<()> {\\n // DayXX::run(\\"sample\\")\\n DayXX::main()\\n}\\n\\n// test_sample!(day_XX, DayXX, , );\\n```\\n\\n### Solution\\n\\nNot much to talk about, it is relatively easy to simulate.\\n\\n## [Day 10: Cathode-Ray Tube](https://adventofcode.com/2022/day/10)\\n\\n:::info tl;dr\\n\\nEmulating basic arithmetic operations on a CPU and drawing on CRT based on the\\nCPU\'s accumulator.\\n\\n:::\\n\\nIn this day I have discovered an issue with my design of the `Solution` trait.\\nAnd the issue is caused by different types of `Output` for the part 1 and part 2.\\n\\nProblem is relatively simple and consists of simulating a CPU, I have approached\\nit in a following way:\\n\\n```rust\\nfn evaluate_instructions(instructions: &[Instruction], mut out: Output) -> Output {\\n instructions\\n .iter()\\n .fold(State::new(), |state, instruction| {\\n state.execute(instruction, &mut out)\\n });\\n\\n out\\n}\\n```\\n\\nWe just take the instructions, we have some state of the CPU and we execute the\\ninstructions one-by-one. Perfect usage of the `fold` (or `reduce` as you may know\\nit from other languages).\\n\\nYou can also see that we have an `Output` type, so the question is how can we fix\\nthat problem. And the answer is very simple and _functional_. Rust allows you to\\nhave an `enumeration` that can _bear_ some other values apart from the type itself.\\n\\n:::tip\\n\\nWe could\'ve seen something like this with the `Result` type that can be\\ndefined as\\n\\n```rust\\nenum Result {\\n Ok(T),\\n Err(E)\\n}\\n```\\n\\n###### What does that mean though?\\n\\nWhen we have an `Ok` value, it has the result itself, and when we get an `Err`\\nvalue, it has the error. This also allows us to handle _results_ in a rather\\npretty way:\\n\\n```rust\\nmatch do_something(x) {\\n Ok(y) => {\\n println!(\\"SUCCESS: {}\\", y);\\n },\\n Err(y) => {\\n eprintln!(\\"ERROR: {}\\", y);\\n }\\n}\\n```\\n\\n:::\\n\\nMy solution has a following outline:\\n\\n```rust\\nfn execute(&self, i: &Instruction, output: &mut Output) -> State {\\n // execute the instruction\\n\\n // collect results if necessary\\n match output {\\n Output::Part1(x) => self.execute_part_1(y, x),\\n Output::Part2(x) => self.execute_part_2(y, x),\\n }\\n\\n // return the obtained state\\n new_state\\n}\\n```\\n\\nYou might think that it\'s a perfectly reasonable thing to do. Yes, **but** notice\\nthat the `match` statement doesn\'t _collect_ the changes in any way and also we\\npass `output` by `&mut`, so it is shared across each _iteration_ of the `fold`.\\n\\nThe dirty and ingenious thing is that `x`s are passed by `&mut` too and therefore\\nthey are directly modified by the helper functions. To sum it up and let it sit\\n\\n> We are **collecting** the result **into** an **enumeration** that is **shared**\\n> across **all** iterations of `fold`.\\n\\n### Solution\\n\\nSimilar to _Day 9_, but there are some technical details that can get you.\\n\\n## [Day 11: Monkey in the Middle](https://adventofcode.com/2022/day/11)\\n\\n:::info tl;dr\\n\\nSimulation of monkeys throwing stuff around and measuring your stress levels\\nwhile your stuff is being passed around.\\n\\n:::\\n\\nI think I decided to use regular expressions here for the first time, cause\\nparsing the input was a pain.\\n\\nAlso I didn\'t expect to implement Euclidean algorithm in Rust\u2026\\n\\n### Solution\\n\\nAgain, we\'re just running a simulation. Though I must admit it was very easy to\\nmake a small technical mistakes that could affect the final results very late.\\n\\n## [Day 12: Hill Climbing Algorithm](https://adventofcode.com/2022/day/12)\\n\\n:::info tl;dr\\n\\nFinding shortest path up the hill and also shortest path down to the ground while\\nalso rolling down the hill\u2026\\n\\n:::\\n\\nAs I have said in the _tl;dr_, we are looking for the shortest path, but the start\\nand goal differ for the part 1 and 2. So I have decided to refactor my solution\\nto a BFS algorithm that takes necessary parameters via functions:\\n\\n```rust\\nfn bfs(\\n graph: &[Vec], start: &Position, has_edge: F, is_target: G\\n) -> Option\\nwhere\\n F: Fn(&[Vec], &Position, &Position) -> bool,\\n G: Fn(&[Vec], &Position) -> bool\\n```\\n\\nWe pass the initial vertex from the caller and everything else is left to the BFS\\nalgorithm, based on the `has_edge` and `is_target` functions.\\n\\nThis was easy! And that is not very usual in Rust once you want to pass around\\nfunctions. :eyes:\\n\\n### Solution\\n\\nLooking for the shortest path\u2026 Must be Dijkstra, right? **Nope!** Half of the\\nReddit got jebaited though. In all fairness, nothing stops you from implementing\\nthe Dijkstra\'s algorithm for finding the shortest path, **but** if you know that\\nall connected vertices are in a unit (actually $d = 1$) distance from each other,\\nthen you know that running Dijkstra is equivalent to running BFS, only with worse\\ntime complexity, because of the priority heap instead of the queue.\\n\\n## [Day 13: Distress Signal](https://adventofcode.com/2022/day/13)\\n\\n:::info tl;dr\\n\\nProcessing packets with structured data from the distress signal.\\n\\n:::\\n\\nYou can implement a lot of traits if you want to. It is _imperative_ to implement\\nordering on the packets. I had a typo, so I also proceeded to implement a `Display`\\ntrait for debugging purposes:\\n\\n```rust\\nimpl Display for Packet {\\n fn fmt(&self, f: &mut std::fmt::Formatter<\'_>) -> std::fmt::Result {\\n match self {\\n Packet::Integer(x) => write!(f, \\"{x}\\"),\\n Packet::List(lst) => write!(f, \\"[{}]\\", lst.iter().map(|p| format!(\\"{p}\\")).join(\\",\\")),\\n }\\n }\\n}\\n```\\n\\n### Solution\\n\\nA lot of technical details\u2026 Parsing is nasty too\u2026\\n\\n## [Day 14: Regolith Reservoir](https://adventofcode.com/2022/day/14)\\n\\n:::info tl;dr\\n\\nLet\'s simulate falling sand grain-by-grain.\\n\\n:::\\n\\nAgain, both parts are relatively similar with minimal changes, so it is a good\\nidea to refactor it a bit. Similar approach to the [BFS above]. Also this is the\\nfirst day where I ran into efficiency issues and had to redo my solution to speed\\nit up just a bit.\\n\\n### Solution\\n\\nTedious.\\n\\n## Post Mortem\\n\\n### Indexing\\n\\nI was asked about the indexing after publishing the blog. And truly it is rather\\ncomplicated topic, especially after releasing `SliceIndex` trait. I couldn\'t\\nleave it be, so I tried to implement the `Index` and `IndexMut` trait.\\n\\n:::note\\n\\nI have also mentioned that the `SliceIndex` trait is `unsafe`, but truth be told,\\nonly _unsafe_ part are the 2 methods that are named `*unchecked*`. Anyways, I will\\nbe implementing the `Index*` traits for now, rather than the `SliceIndex`.\\n\\n:::\\n\\nIt\'s relatively straightforward\u2026\\n\\n```rust\\nimpl Index> for [C]\\nwhere\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: Index,\\n{\\n type Output = C::Output;\\n\\n fn index(&self, index: Vector2D) -> &Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &self[y][x]\\n }\\n}\\n\\nimpl IndexMut> for [C]\\nwhere\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: IndexMut,\\n{\\n fn index_mut(&mut self, index: Vector2D) -> &mut Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &mut self[y][x]\\n }\\n}\\n```\\n\\nWe can see a lot of similarities to the implementation of `index` and `index_mut`\\nfunctions. In the end, they are 1:1, just wrapped in the trait that provides a\\nsyntax sugar for `container[idx]`.\\n\\n:::note\\n\\nI have also switched from using the `TryFrom` to `TryInto` trait, since it better\\nmatches what we are using, the `.try_into` rather than `usize::try_from`.\\n\\nAlso implementing `TryFrom` automatically provides you with a `TryInto` trait,\\nsince it is relatively easy to implement. Just compare the following:\\n\\n```rust\\npub trait TryFrom: Sized {\\n type Error;\\n\\n fn try_from(value: T) -> Result;\\n}\\n\\npub trait TryInto: Sized {\\n type Error;\\n\\n fn try_into(self) -> Result;\\n}\\n```\\n\\n:::\\n\\nOK, so we have our trait implemented, we should be able to use `container[index]`,\\nright? Yes\u2026 but actually no :frowning:\\n\\n```\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:26:18\\n |\\n26 | if trees[pos] > tallest {\\n | ^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:30:28\\n |\\n30 | max(tallest, trees[pos])\\n | ^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:52:28\\n |\\n52 | let max_height = trees[position];\\n | ^^^^^^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n```\\n\\nWhy? We have it implemented for the slices (`[C]`), why doesn\'t it work? Well,\\nthe fun part consists of the fact that in other place, where we were using it,\\nwe were passing the `&[Vec]`, but this is coming from a helper functions that\\ntake `&Vec>` instead. And\u2026 we don\'t implement `Index` and `IndexMut` for\\nthose. Just for the slices. \ud83e\udd2f _What are we going to do about it?_\\n\\nWe can either start copy-pasting or be smarter about it\u2026 I choose to be smarter,\\nso let\'s implement a macro! The only difference across the implementations are\\nthe types of the outer containers. Implementation doesn\'t differ **at all**!\\n\\nImplementing the macro can be done in a following way:\\n\\n```rust\\nmacro_rules! generate_indices {\\n ($container:ty) => {\\n impl Index> for $container\\n where\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: Index,\\n {\\n type Output = C::Output;\\n\\n fn index(&self, index: Vector2D) -> &Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &self[y][x]\\n }\\n }\\n\\n impl IndexMut> for $container\\n where\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: IndexMut,\\n {\\n fn index_mut(&mut self, index: Vector2D) -> &mut Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &mut self[y][x]\\n }\\n }\\n };\\n}\\n```\\n\\nAnd now we can simply do\\n\\n```rust\\ngenerate_indices!(VecDeque);\\ngenerate_indices!([C]);\\ngenerate_indices!(Vec);\\n// generate_indices!([C; N], const N: usize);\\n```\\n\\nThe last type (I took the inspiration from the implementations of the `Index` and\\n`IndexMut` traits) is a bit problematic, because of the `const N: usize` part,\\nwhich I haven\'t managed to be able to parse. And that\'s how I got rid of the error.\\n\\n:::note\\n\\nIf I were to use 2D-indexing over `[C; N]` slices, I\'d probably just go with the\\ncopy-paste, cause the cost of this \u201cmonstrosity\u201d outweighs the benefits of no DRY.\\n\\n:::\\n\\n#### Cause of the problem\\n\\nThis issue is relatively funny. If you don\'t use any type aliases, just the raw\\ntypes, you\'ll get suggested certain changes by the _clippy_. For example if you\\nconsider the following piece of code\\n\\n```rust\\nfn get_sum(nums: &Vec) -> i32 {\\n nums.iter().sum()\\n}\\n\\nfn main() {\\n let nums = vec![1, 2, 3];\\n println!(\\"Sum: {}\\", get_sum(&nums));\\n}\\n```\\n\\nand you run _clippy_ on it, you will get\\n\\n```\\nChecking playground v0.0.1 (/playground)\\nwarning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do\\n --\x3e src/main.rs:1:18\\n |\\n1 | fn get_sum(nums: &Vec) -> i32 {\\n | ^^^^^^^^^ help: change this to: `&[i32]`\\n |\\n = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg\\n = note: `#[warn(clippy::ptr_arg)]` on by default\\n\\nwarning: `playground` (bin \\"playground\\") generated 1 warning\\n Finished dev [unoptimized + debuginfo] target(s) in 0.61s\\n```\\n\\nHowever, if you introduce a type alias, such as\\n\\n```rust\\ntype Numbers = Vec;\\n```\\n\\nThen _clippy_ won\'t say anything, cause there is literally nothing to suggest.\\nHowever the outcome is not the same\u2026\\n\\n[_advent of code_]: https://adventofcode.com\\n[bfs above]: #day-12-hill-climbing-algorithm"},{"id":"aoc-2022/1st-week","metadata":{"permalink":"/blog/aoc-2022/1st-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/01-week-1.md","source":"@site/blog/aoc-2022/01-week-1.md","title":"1st week of Advent of Code \'22 in Rust","description":"Surviving first week in Rust.","date":"2022-12-15T01:15:00.000Z","formattedDate":"December 15, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":12.4,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"1st week of Advent of Code \'22 in Rust","description":"Surviving first week in Rust.","date":"2022-12-15T01:15","slug":"aoc-2022/1st-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"2nd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/2nd-week"},"nextItem":{"title":"Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/intro"}},"content":"Let\'s go through the first week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n:::note\\n\\nIf you wish to have a look at the solutions, you can follow them on my [GitLab].\\nMore specifically in the [`/src/bin/`].\\n\\n:::\\n\\nI will try to summarize my experience with using Rust for the AoC. Trying it out\\nages ago, I believe it will be _pain and suffering_, but we will see. For each\\nday I will also try to give a tl;dr of the problem, so that you can better imagine\\nthe relation to my woes or :+1: moments.\\n\\n## [Day 1: Calorie Counting](https://adventofcode.com/2022/day/1)\\n\\n:::info tl;dr\\n\\nAs the name suggests, we get the calories of the food contained in the elves\\nbackpacks and we want to choose the elf that has the most food ;)\\n\\n:::\\n\\n> Wakey wakey!\\n\\nProgramming in Rust at 6am definitely hits. I\'ve also forgotten to mention how I\\nhandle samples. With each puzzle you usually get a sample input and expected\\noutput. You can use them to verify that your solution works, or usually doesn\'t.\\n\\nAt first I\'ve decided to put asserts into my `main`, something like\\n\\n```rust\\nassert_eq!(part_1(&sample), 24000);\\ninfo!(\\"Part 1: {}\\", part_1(&input));\\n\\nassert_eq!(part_2(&sample), 45000);\\ninfo!(\\"Part 2: {}\\", part_2(&input));\\n```\\n\\nHowever, once you get further, the sample input may take some time to run itself.\\nSo in the end, I have decided to turn them into unit tests:\\n\\n```rust\\n#[cfg(test)]\\nmod tests {\\n use super::*;\\n\\n #[test]\\n fn test_part_1() {\\n let sample = parse_input(\\"samples/day01.txt\\");\\n assert_eq!(part_1(&sample), 24000);\\n }\\n\\n #[test]\\n fn test_part_2() {\\n let sample = parse_input(\\"samples/day01.txt\\");\\n assert_eq!(part_2(&sample), 45000);\\n }\\n}\\n```\\n\\nAnd later on I have noticed, it\'s hard to tell the difference between the days,\\nso I further renamed the `mod` from generic `tests` to reflect the days.\\n\\nAlso after finishing the first day puzzle, I have installed an [`sccache`] to\\ncache the builds, so that the build time is lower, cause it was kinda unbearable.\\n\\n### Solution\\n\\nWell, it\'s a pretty simple problem. You just take the input, sum the calories and\\nfind the biggest one. However, if we try to generalize to more than the biggest\\none, the fun appears. We have few options:\\n\\n- keep all the calories, sort them, take what we need\\n- keep all the calories and use max heap\\n- use min heap and maintain at most N calories that we need\\n\\n## [Day 2: Rock Paper Scissors](https://adventofcode.com/2022/day/2)\\n\\n:::info tl;dr\\n\\nYou want to know what score did you achieve while playing _Rock Paper Scissors_.\\nAnd then you want to be strategic about it.\\n\\n:::\\n\\nApart from the technical details of the puzzle, it went relatively smooth.\\n\\n### Solution\\n\\nI took relatively na\xefve approach and then tried to simplify it.\\n\\n## [Day 3: Rucksack Reorganization](https://adventofcode.com/2022/day/3)\\n\\n:::info tl;dr\\n\\nLet\'s go reorganize elves\' backpacks! Each backpacks has 2 compartments and you\\nwant to find the common item among those compartments. Each of them has priority,\\nyou care only about the sum.\\n\\n:::\\n\\nThis is the day where I started to fight the compiler and neither of us decided\\nto give up. Let\'s dive into it \\\\o/\\n\\n:::tip Fun fact\\n\\nFighting the compiler took me 30 minutes.\\n\\n:::\\n\\nWe need to find a common item among 2 collections, that\'s an easy task, right?\\nWe can construct 2 sets and find an intersection:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3].iter().collect();\\nlet bottom: HashSet = [3, 4, 5].iter().collect();\\n```\\n\\nNow, the first issue that we encounter is caused by the fact that we are using\\na slice (the `[\u2026]`), iterator of that returns **references** to the numbers.\\nAnd we get immediately yelled at by the compiler, because the numbers are discarded\\nafter running the `.collect`. To fix this, we can use `.into_iter`:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5].into_iter().collect();\\n```\\n\\nThis way the numbers will get copied instead of referenced. OK, let\'s find the\\nintersection of those 2 collections:\\n\\n```rust\\nprintln!(\\"Common elements: {:?}\\", top.intersection(&bottom));\\n```\\n\\n```\\nCommon elements: [3]\\n```\\n\\n:::caution\\n\\nNotice that we need to do `&bottom`. It explicitly specifies that `.intersection`\\n**borrows** the `bottom`, i.e. takes an immutable reference to it.\\n\\n:::\\n\\nThat\'s what we want, right? Looks like it! \\\\o/\\n\\nNext part wants us to find the common element among all of the backpacks. OK, so\\nthat should be fairly easy, we have an intersection and we want to find intersection\\nover all of them.\\n\\nLet\'s have a look at the type of the `.intersection`\\n\\n```rust\\npub fn intersection<\'a>(\\n\xa0\xa0\xa0\xa0&\'a self,\\n\xa0\xa0\xa0\xa0other: &\'a HashSet\\n) -> Intersection<\'a, T, S>\\n```\\n\\nOK\u2026 Huh\u2026 But we have an example there!\\n\\n```rust\\nlet intersection: HashSet<_> = a.intersection(&b).collect();\\n```\\n\\nCool, that\'s all we need.\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\n```\\nIntersection: {3, 4}\\n```\\n\\nCool, so let\'s do the intersection with the `top_2`:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).collect();\\nlet intersection: HashSet<_> = intersection.intersection(&top_2).collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\nAnd we get yelled at by the compiler:\\n\\n```\\nerror[E0308]: mismatched types\\n --\x3e src/main.rs:10:58\\n |\\n10 | let intersection: HashSet<_> = intersection.intersection(&top_2).collect();\\n | ------------ ^^^^^^ expected `&i32`, found `i32`\\n | |\\n | arguments to this function are incorrect\\n |\\n = note: expected reference `&HashSet<&i32>`\\n found reference `&HashSet`\\n```\\n\\n/o\\\\ What the hell is going on here? Well, the funny thing is, that this operation\\ndoesn\'t return the elements themselves, but the references to them and when we pass\\nthe third set, it has just the values themselves, without any references.\\n\\n:::tip\\n\\nIt may seem as a very weird decision, but in fact it makes some sense\u2026 It allows\\nyou to do intersection of items that may not be possible to copy. Overall this is\\na \u201ctax\u201d for having a borrow checker ~~drilling your ass~~ having your back and\\nmaking sure you\'re not doing something naughty that may cause an **undefined**\\n**behavior**.\\n\\n:::\\n\\nTo resolve this we need to get an iterator that **clones** the elements:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).cloned().collect();\\nlet intersection: HashSet<_> = intersection.intersection(&top_2).cloned().collect();\\nlet intersection: HashSet<_> = intersection.intersection(&bottom_2).cloned().collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\n```\\nIntersection: {4}\\n```\\n\\n### Solution\\n\\nThe approach is pretty simple, if you omit the _1on1 with the compiler_. You just\\nhave some fun with the set operations :)\\n\\n## [Day 4: Camp Cleanup](https://adventofcode.com/2022/day/4)\\n\\n:::info tl;dr\\n\\nElves are cleaning up the camp and they got overlapping sections to clean up.\\nFind how many overlap and can take the day off.\\n\\n:::\\n\\n[`RangeInclusive`] is your friend not an enemy :)\\n\\n### Solution\\n\\nRelatively easy, you just need to parse the input and know what you want. Rust\'s\\n`RangeInclusive` type helped a lot, cause it took care of all abstractions.\\n\\n## [Day 5: Supply Stacks](https://adventofcode.com/2022/day/5)\\n\\n:::info tl;dr\\n\\nLet\'s play with stacks of crates.\\n\\n:::\\n\\nVery easy problem with very annoying input. You can judge yourself:\\n\\n```\\n [D]\\n[N] [C]\\n[Z] [M] [P]\\n 1 2 3\\n\\nmove 1 from 2 to 1\\nmove 3 from 1 to 3\\nmove 2 from 2 to 1\\nmove 1 from 1 to 2\\n```\\n\\nGood luck transforming that into something reasonable :)\\n\\n:::tip Fun fact\\n\\nTook me 40 minutes to parse this reasonably, including fighting the compiler.\\n\\n:::\\n\\n### Solution\\n\\nFor the initial solution I went with a manual solution (as in _I have done all_\\n_the work_. Later on I have decided to explore the `std` and interface of the\\n`std::vec::Vec` and found [`split_off`] which takes an index and splits (duh)\\nthe vector:\\n\\n```rust\\nlet mut vec = vec![1, 2, 3];\\nlet vec2 = vec.split_off(1);\\nassert_eq!(vec, [1]);\\nassert_eq!(vec2, [2, 3]);\\n```\\n\\nThis helped me simplify my solution a lot and also get rid of some _edge cases_.\\n\\n## [Day 6: Tuning Trouble](https://adventofcode.com/2022/day/6)\\n\\n:::info tl;dr\\n\\nFinding start of the message in a very weird protocol. Start of the message is\\ndenoted by $N$ unique consecutive characters.\\n\\n:::\\n\\n### Solution\\n\\nA lot of different approaches, knowing that we are dealing with input consisting\\nsolely of ASCII letters, I bit the bullet and went with sliding window and\\nconstructing sets from that window, checking if the set is as big as the window.\\n\\nOne possible optimization could consist of keeping a bit-vector (i.e. `usize`\\nvariable) of encountered characters and updating it as we go. However this has\\na different issue and that is removal of the characters from the left side of the\\nwindow. We don\'t know if the same character is not included later on.\\n\\nOther option is to do similar thing, but keeping the frequencies of the letters,\\nand again knowing we have only ASCII letters we can optimize by having a vector\\nof 26 elements that keeps count for each lowercase letter.\\n\\n## [Day 7: No Space Left On Device](https://adventofcode.com/2022/day/7)\\n\\n:::info tl;dr\\n\\nLet\'s simulate [`du`] to get some stats about our file system and then pinpoint\\ndirectories that take a lot of space and should be deleted.\\n\\n:::\\n\\n> I was waiting for this moment, and yet it got me!\\n> _imagine me swearing for hours_\\n\\n### Solution\\n\\nWe need to \u201c_build_\u201d a file system from the input that is given in a following form:\\n\\n```\\n$ cd /\\n$ ls\\ndir a\\n14848514 b.txt\\n8504156 c.dat\\ndir d\\n$ cd a\\n$ ls\\ndir e\\n29116 f\\n2557 g\\n62596 h.lst\\n$ cd e\\n$ ls\\n584 i\\n$ cd ..\\n$ cd ..\\n$ cd d\\n$ ls\\n4060174 j\\n8033020 d.log\\n5626152 d.ext\\n7214296 k\\n```\\n\\nThere are few ways in which you can achieve this and also you can assume some\\npreconditions, but why would we do that, right? :)\\n\\nYou can \u201cslap\u201d this in either [`HashMap`] or [`BTreeMap`] and call it a day.\\nAnd that would be boring\u2026\\n\\n:::tip\\n\\n`BTreeMap` is quite fitting for this, don\'t you think?\\n\\n:::\\n\\nI always wanted to try allocation on heap in Rust, so I chose to implement a tree.\\nI fought with the `Box` for some time and was losing\u2026\\n\\nThen I looked up some implementations of trees or linked lists and decided to try\\n`Rc>`. And I got my _ass whopped_ by the compiler once again. /o\\\\\\n\\n:::tip\\n\\n`Box` represents a dynamically allocated memory on heap. It is a single pointer,\\nyou can imagine this as `std::unique_ptr` in C++.\\n\\n`Rc` represents a dynamically allocated memory on heap. On top of that it is\\n_reference counted_ (that\'s what the `Rc` stands for). You can imagine this as\\n`std::shared_ptr` in C++.\\n\\nNow the fun stuff. Neither of them lets you **mutate** the contents of the memory.\\n\\n`Cell` allows you to mutate the memory. Can be used reasonably with types that\\ncan be copied, because the memory safety is guaranteed by copying the contents\\nwhen there is more than one **mutable** reference to the memory.\\n\\n`RefCell` is similar to the `Cell`, but the borrowing rules (how many mutable\\nreferences are present) are checked dynamically.\\n\\nSo in the end, if you want something like `std::shared_ptr` in Rust, you want\\nto have `Rc>`.\\n\\n:::\\n\\nSo, how are we going to represent the file system then? We will use an enumeration,\\nhehe, which is an algebraic data type that can store some stuff in itself :weary:\\n\\n```rust\\ntype FileHandle = Rc>;\\n\\n#[derive(Debug)]\\nenum AocFile {\\n File(usize),\\n Directory(BTreeMap),\\n}\\n```\\n\\nLet\'s go over it! `FileHandle` represents dynamically allocated `AocFile`, not\\nmuch to discuss. What does the `#[derive(Debug)]` do though? It lets us to print\\nout the value of that enumeration, it\'s derived, so it\'s not as good as if we had\\nimplemented it ourselves, but it\'s good enough for debugging, hence the name.\\n\\nNow to the fun part! `AocFile` value can be represented in two ways:\\n\\n- `File(usize)`, e.g. `AocFile::File(123)` and we can pattern match it, if we\\n need to\\n- `Directory(BTreeMap)` will represent the directory and will\\n contain map matching the name of the files (or directories) within to their\\n respective file handles\\n\\nI will omit the details about constructing this file system, cause there are a lot\\nof technicalities introduced by the nature of the input. However if you are\\ninterested, you can have a look at my solution.\\n\\nWe need to find small enough directories and also find the smallest directory that\\nwill free enough space. Now the question is, how could we do that. And there are\\nmultiple ways I will describe.\\n\\nI have chosen to implement [_tree catamorphism_] :weary:. It is basically a fold\\nover a tree data structure. We descent down into the leaves and propagate computed\\nresults all the way to the root. You can also notice that this approach is very\\nsimilar to _dynamic programming_, we find overlapping sections of the computation\\nand try to minimize the additional work (in this case: we need to know sizes of\\nour descendants, but we have already been there).\\n\\nAnother approach that has been suggested to me few days later is running DFS on\\nthe graph. And, funnily enough, we would still need to combine what we found in\\nthe branches where we descent. So in the end, it would work very similarly to my\\nsolution.\\n\\nOne of the more exotic options would be precomputing the required information at\\nthe same time as parsing. That could be done by adding additional fields to the\\nnodes which would allow storing such information and updating it as we construct\\nthe file system.\\n\\n## Post Mortem\\n\\nThings that have been brought up in the discussion later on.\\n\\n### `Rc` vs `Rc>`\\n\\nIt has been brought up that I have a contradicting statement regarding the\\ndynamically allocated memory. Specifically:\\n\\n- You can imagine `Rc` as an `std::shared_ptr` (in C++)\\n- When you want an equivalent of `std::shared_ptr`, you want to use\\n `Rc>`\\n\\nNow, in Rust it is a bit more complicated, because the type that represents the\\n\u201cshared pointer\u201d is `Rc`. What `RefCell` does is making sure that there is\\nonly one \u201cowner\u201d of a mutable reference at a time (and dynamically, as opposed\\nto the `Cell`).\\n\\nTherefore to be precise and correct about the equivalents of `std::shared_ptr`\\nin Rust, we can say that\\n\\n- `Rc` is an equivalent of a `const std::shared_ptr`,\\n- and `Rc>` is an equivalent of a `std::shared_ptr`.\\n\\nYou can easily see that they only differ in the mutability. (And even that is not\\nas simple as it seems, because there is also `Cell`)\\n\\n[_advent of code_]: https://adventofcode.com\\n[gitlab]: https://gitlab.com/mfocko/advent-of-code-2022\\n[`/src/bin/`]: https://gitlab.com/mfocko/advent-of-code-2022/-/tree/main/src/bin\\n[`sccache`]: https://github.com/mozilla/sccache\\n[`rangeinclusive`]: https://doc.rust-lang.org/std/ops/struct.RangeInclusive.html\\n[`split_off`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.split_off\\n[`du`]: https://www.man7.org/linux/man-pages/man1/du.1.html\\n[`hashmap`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html\\n[`btreemap`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html\\n[_tree catamorphism_]: https://en.wikipedia.org/wiki/Catamorphism#Tree_fold"},{"id":"aoc-2022/intro","metadata":{"permalink":"/blog/aoc-2022/intro","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/00-intro.md","source":"@site/blog/aoc-2022/00-intro.md","title":"Advent of Code \'22 in Rust","description":"Preparing for Advent of Code \'22.","date":"2022-12-14T21:45:00.000Z","formattedDate":"December 14, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":8.665,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Advent of Code \'22 in Rust","description":"Preparing for Advent of Code \'22.","date":"2022-12-14T21:45","slug":"aoc-2022/intro","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"1st week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/1st-week"}},"content":"Let\'s talk about the preparations for this year\'s [_Advent of Code_].\\n\\n\x3c!--truncate--\x3e\\n\\n## Choosing a language\\n\\nWhen choosing a language for AoC, you usually want a language that gives you a\\nquick feedback which allows you to iterate quickly to the solution of the puzzle.\\nOne of the most common choices is Python, many people also use JavaScript or Ruby.\\n\\nGiven the competitive nature of the AoC and popularity among competitive programming,\\nC++ might be also a very good choice. Only if you are familiar with it, I guess\u2026\\n\\nIf you want a challenge, you might also choose to rotate the languages each day.\\nThough I prefer to use only one language.\\n\\nFor this year I have been deciding between _Rust_, _C++_ and _Pascal_ or _Ada_.\\n\\nI have tried Rust last year and have survived with it for 3 days and then gave\\nup and switched to _Kotlin_, which was pretty good given it is \u201cJava undercover\u201d.\\nI pretty much like the ideas behind Rust, I am not sure about the whole cult and\\nimplementation of those ideas though. After some years with C/C++, I would say\\nthat Rust feels _too safe_ for my taste and tries to \u201c_punish me_\u201d even for the\\nmost trivial things.\\n\\nC++ is a very robust, but also comes with a wide variety of options providing you\\nthe ability to shoot yourself in the leg. I have tried to solve few days of previous\\nAdvent of Code events, it was _relatively easy_ to solve the problems in C++, given\\nthat I do not admit writing my own iterator for `enumerate`\u2026\\n\\nPascal or Ada were meme choices :) Ada is heavily inspired by Pascal and has a\\npretty nice standard library that offers enough to be able to quickly solve some\\nproblems in it. However the toolkit is questionable :/\\n\\n## Choosing libraries\\n\\n## Preparations for Rust\\n\\nAll of the sources, later on including solutions, can be found at my\\n[GitLab].\\n\\n### Toolkit\\n\\nSince we are using Rust, we are going to use a [Cargo] and more than likely VSCode\\nwith [`rust-analyzer`]. Because of my choice of libraries, we will also introduce\\na `.envrc` file that can be used by [`direnv`], which allows you to set specific\\nenvironment variables when you enter a directory. In our case, we will use\\n\\n```bash\\n# to show nice backtrace when using the color-eyre\\nexport RUST_BACKTRACE=1\\n\\n# to catch logs generated by tracing\\nexport RUST_LOG=trace\\n```\\n\\nAnd for the one of the most obnoxious things ever, we will use a script to download\\nthe inputs instead of \u201c_clicking, opening and copying to a file_\u201d[^1]. There is\\nno need to be _fancy_, so we will adjust Python script by Martin[^2].\\n\\n```py\\n#!/usr/bin/env python3\\n\\nimport datetime\\nimport yaml\\nimport requests\\nimport sys\\n\\n\\ndef load_config():\\n with open(\\"env.yaml\\", \\"r\\") as f:\\n js = yaml.load(f, Loader=yaml.Loader)\\n return js[\\"session\\"], js[\\"year\\"]\\n\\n\\ndef get_input(session, year, day):\\n return requests.get(\\n f\\"https://adventofcode.com/{year}/day/{day}/input\\",\\n cookies={\\"session\\": session},\\n headers={\\n \\"User-Agent\\": \\"{repo} by {mail}\\".format(\\n repo=\\"gitlab.com/mfocko/advent-of-code-2022\\",\\n mail=\\"me@mfocko.xyz\\",\\n )\\n },\\n ).content.decode(\\"utf-8\\")\\n\\n\\ndef main():\\n day = datetime.datetime.now().day\\n if len(sys.argv) == 2:\\n day = sys.argv[1]\\n\\n session, year = load_config()\\n problem_input = get_input(session, year, day)\\n\\n with open(f\\"./inputs/day{day:>02}.txt\\", \\"w\\") as f:\\n f.write(problem_input)\\n\\n\\nif __name__ == \\"__main__\\":\\n main()\\n```\\n\\nIf the script is called without any arguments, it will deduce the day from the\\nsystem, so we do not need to change the day every morning. It also requires a\\nconfiguration file:\\n\\n```yaml\\n# env.yaml\\nsession: \u2039your session cookie\u203a\\nyear: 2022\\n```\\n\\n### Libraries\\n\\nLooking at the list of the libraries, I have chosen \u201ca lot\u201d of them. Let\'s walk\\nthrough each of them.\\n\\n[`tracing`] and [`tracing-subscriber`] are the crates that can be used for tracing\\nand logging of your Rust programs, there are also other crates that can help you\\nwith providing backtrace to the Sentry in case you have deployed your application\\nsomewhere and you want to watch over it. In our use case we will just utilize the\\nmacros for debugging in the terminal.\\n\\n[`thiserror`], [`anyhow`] and [`color-eyre`] are used for error reporting.\\n`thiserror` is a very good choice for libraries, cause it extends the `Error`\\nfrom the `std` and allows you to create more convenient error types. Next is\\n`anyhow` which kinda builds on top of the `thiserror` and provides you with simpler\\nerror handling in binaries[^3]. And finally we have `color-eyre` which, as I found\\nout later, is a colorful (_wink wink_) extension of `eyre` which is fork of `anyhow`\\nwhile supporting customized reports.\\n\\nIn the end I have decided to remove `thiserror` and `anyhow`, since first one is\\nsuitable for libraries and the latter was basically fully replaced by `{color-,}eyre`.\\n\\n[`regex`] and [`lazy_static`] are a very good and also, I hope, self-explanatory\\ncombination. `lazy_static` allows you to have static variables that must be initialized\\nduring runtime.\\n\\n[`itertools`] provides some nice extensions to the iterators from the `std`.\\n\\n### My own \u201clibrary\u201d\\n\\nWhen creating the crate for this year\'s Advent of Code, I have chosen a library\\ntype. Even though standard library is huge, some things might not be included and\\nalso we can follow _KISS_. I have 2 modules that my \u201clibrary\u201d exports, one for\\nparsing and one for 2D vector (that gets used quite often during Advent of Code).\\n\\nKey part is, of course, processing the input and my library exports following\\nfunctions that get used a lot:\\n\\n```rust\\n/// Reads file to the string.\\npub fn file_to_string>(pathname: P) -> String;\\n\\n/// Reads file and returns it as a vector of characters.\\npub fn file_to_chars>(pathname: P) -> Vec;\\n\\n/// Reads file and returns a vector of parsed structures. Expects each structure\\n/// on its own line in the file. And `T` needs to implement `FromStr` trait.\\npub fn file_to_structs, T: FromStr>(pathname: P) -> Vec\\nwhere\\n ::Err: Debug;\\n\\n/// Converts iterator over strings to a vector of parsed structures. `T` needs\\n/// to implement `FromStr` trait and its error must derive `Debug` trait.\\npub fn strings_to_structs(\\n iter: impl Iterator\\n) -> Vec\\nwhere\\n ::Err: std::fmt::Debug,\\n U: Deref;\\n\\n/// Reads file and returns it as a vector of its lines.\\npub fn file_to_lines>(pathname: P) -> Vec;\\n```\\n\\nAs for the vector, I went with a rather simple implementation that allows only\\naddition of the vectors for now and accessing the elements via functions `x()`\\nand `y()`. Also the vector is generic, so we can use it with any numeric type we\\nneed.\\n\\n### Skeleton\\n\\nWe can also prepare a template to quickly bootstrap each of the days. We know\\nthat each puzzle has 2 parts, which means that we can start with 2 functions that\\nwill solve them.\\n\\n```rust\\nfn part1(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn part2(input: &Input) -> Output {\\n todo!()\\n}\\n```\\n\\nBoth functions take reference to the input and return some output (in majority\\nof puzzles, it is the same type). `todo!()` can be used as a nice placeholder,\\nit also causes a panic when reached and we could also provide some string with\\nan explanation, e.g. `todo!(\\"part 1\\")`. We have not given functions a specific\\ntype and to avoid as much copy-paste as possible, we will introduce type aliases.\\n\\n```rust\\ntype Input = String;\\ntype Output = i32;\\n```\\n\\n:::tip\\n\\nThis allows us to quickly adjust the types only in one place without the need to\\ndo _regex-replace_ or replace them manually.\\n\\n:::\\n\\nFor each day we get a personalized input that is provided as a text file. Almost\\nall the time, we would like to get some structured type out of that input, and\\ntherefore it makes sense to introduce a new function that will provide the parsing\\nof the input.\\n\\n```rust\\nfn parse_input(path: &str) -> Input {\\n todo!()\\n}\\n```\\n\\nThis \u201cparser\u201d will take a path to the file, just in case we would like to run the\\nsample instead of input.\\n\\nOK, so now we can write a `main` function that will take all of the pieces and\\nrun them.\\n\\n```rust\\nfn main() {\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n println!(\\"Part 1: {}\\", part_1(&input));\\n println!(\\"Part 2: {}\\", part_2(&input));\\n}\\n```\\n\\nThis would definitely do :) But we have installed a few libraries and we want to\\nuse them. In this part we are going to utilize _[`tracing`]_ (for tracing, duh\u2026)\\nand _[`color-eyre`]_ (for better error reporting, e.g. from parsing).\\n\\n```rust\\nfn main() -> Result<()> {\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n info!(\\"Part 1: {}\\", part_1(&input));\\n info!(\\"Part 2: {}\\", part_2(&input));\\n\\n Ok(())\\n}\\n```\\n\\nThe first statement will set up tracing and configure it to print out the logs to\\nterminal, based on the environment variable. We also change the formatting a bit,\\nsince we do not need all the _fancy_ features of the logger. Pure initialization\\nwould get us logs like this:\\n\\n```\\n2022-12-11T19:53:19.975343Z INFO day01: Part 1: 0\\n```\\n\\nHowever after running that command, we will get the following:\\n\\n```\\n INFO src/bin/day01.rs:35: Part 1: 0\\n```\\n\\nAnd the `color_eyre::install()?` is quite straightforward. We just initialize the\\nerror reporting by _color eyre_.\\n\\n:::caution\\n\\nNotice that we had to add `Ok(())` to the end of the function and adjust the\\nreturn type of the `main` to `Result<()>`. It is caused by the _color eyre_ that\\ncan be installed only once and therefore it can fail, that is how we got the `?`\\nat the end of the `::install` which _unwraps_ the **\xbbresult\xab** of the installation.\\n\\n:::\\n\\nOverall we will get to a template like this:\\n\\n```rust\\nuse aoc_2022::*;\\n\\nuse color_eyre::eyre::Result;\\nuse tracing::info;\\nuse tracing_subscriber::EnvFilter;\\n\\ntype Input = String;\\ntype Output = i32;\\n\\nfn parse_input(path: &str) -> Input {\\n todo!()\\n}\\n\\nfn part1(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn part2(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn main() -> Result<()> {\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n info!(\\"Part 1: {}\\", part_1(&input));\\n info!(\\"Part 2: {}\\", part_2(&input));\\n\\n Ok(())\\n}\\n```\\n\\n[^1]:\\n Copy-pasting might be a relaxing thing to do, but you can also discover\\n nasty stuff about your PC. See [this Reddit post and the comment].\\n\\n[^2]: [GitHub profile](https://github.com/martinjonas)\\n[^3]:\\n Even though you can use it even for libraries, but handling errors from\\n libraries using `anyhow` is nasty\u2026 You will be the stinky one ;)\\n\\n[_advent of code_]: https://adventofcode.com\\n[gitlab]: https://gitlab.com/mfocko/advent-of-code-2022\\n[cargo]: https://doc.rust-lang.org/cargo/\\n[`rust-analyzer`]: https://rust-analyzer.github.io/\\n[`direnv`]: https://direnv.net/\\n[`tracing`]: https://crates.io/crates/tracing\\n[`tracing-subscriber`]: https://crates.io/crates/tracing-subscriber\\n[`thiserror`]: https://crates.io/crates/thiserror\\n[`anyhow`]: https://crates.io/crates/anyhow\\n[`color-eyre`]: https://crates.io/crates/color-eyre\\n[`regex`]: https://crates.io/crates/regex\\n[`lazy_static`]: https://crates.io/crates/lazy_static\\n[`itertools`]: https://crates.io/crates/itertools\\n[this reddit post and the comment]: https://www.reddit.com/r/adventofcode/comments/zb98pn/comment/iyq0ono"}]}')}}]); \ No newline at end of file diff --git a/assets/js/595c7293.8b475e77.js b/assets/js/595c7293.10827533.js similarity index 99% rename from assets/js/595c7293.8b475e77.js rename to assets/js/595c7293.10827533.js index 51805ea..29da751 100644 --- a/assets/js/595c7293.8b475e77.js +++ b/assets/js/595c7293.10827533.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[5634],{58396:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var i=t(85893),s=t(11151);const r={id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},o="8th seminar bonus assignment",c={id:"bonuses/seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n",source:"@site/c/bonuses/08.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-08",permalink:"/c/bonuses/seminar-08",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/08.md",tags:[],version:"current",lastUpdatedAt:1707050925,formattedLastUpdatedAt:"Feb 4, 2024",frontMatter:{id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},sidebar:"autogeneratedBar",previous:{title:"5th and 6th seminar",permalink:"/c/bonuses/seminar-05-06"},next:{title:"10th seminar",permalink:"/c/bonuses/seminar-10"}},a={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Warning",id:"warning",level:2},{value:"Testing",id:"testing",level:2},{value:"Task no. 1: Counting (0.75 K\u20a1)",id:"task-no-1-counting-075-k",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Bonus part (0.75 K\u20a1)",id:"bonus-part-075-k",level:3},{value:"Task no. 2: Weird trees (1 K\u20a1)",id:"task-no-2-weird-trees-1-k",level:2},{value:"Submitting",id:"submitting",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"8th-seminar-bonus-assignment",children:"8th seminar bonus assignment"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"pathname:///files/c/bonuses/08.tar.gz",children:"Source"})}),"\n",(0,i.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(n.p,{children:"In this bonus you can implement two tasks, one of them has a bonus part with generic\nsolution."}),"\n",(0,i.jsx)(n.p,{children:"One is focused on counting ananas or in case of generic version any substring in\nthe file, but with a restriction on the function you use."}),"\n",(0,i.jsx)(n.p,{children:"Other one has a more algorithmic spirit."}),"\n",(0,i.jsx)(n.p,{children:"For this bonus you can get at maximum 2.5 K\u20a1."}),"\n",(0,i.jsx)(n.h2,{id:"warning",children:"Warning"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"DO NOT COMMIT test data"})," to your own git repository, since the tests include\nfiles that exceed 10MB by themselves. Even if they are on separate branch, they\ntake up the space."]}),"\n",(0,i.jsx)(n.h2,{id:"testing",children:"Testing"}),"\n",(0,i.jsxs)(n.p,{children:["For testing you are provided with python script (requires ",(0,i.jsx)(n.code,{children:"click"})," to be installed:\n",(0,i.jsx)(n.code,{children:"pip3 install --user click"}),") and ",(0,i.jsx)(n.code,{children:"Makefile"})," that provides following targets:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check-counting"})," - runs the ",(0,i.jsx)(n.code,{children:"counting"})," tests"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check-counting-bonus"})," - runs the ",(0,i.jsx)(n.code,{children:"counting"})," tests with bonus implemented"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check"})," - runs both ",(0,i.jsx)(n.code,{children:"counting"})," and ",(0,i.jsx)(n.code,{children:"counting-bonus"})," tests"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"clean"})," - removes output files from the test runs"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"task-no-1-counting-075-k",children:"Task no. 1: Counting (0.75 K\u20a1)"}),"\n",(0,i.jsx)(n.p,{children:"Your first task is to make smallish program that counts occurences of specific\n(or given) word from file and writes the number to other file."}),"\n",(0,i.jsx)(n.p,{children:"Usage of the program is:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"Usage: ./counting [string-to-be-counted]\n"})}),"\n",(0,i.jsx)(n.p,{children:"Arguments that are passed to the program represent:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:""})," - path to the file where we count the words"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:""})," - path to the file where we output the count"]}),"\n",(0,i.jsxs)(n.li,{children:["(optional argument) ",(0,i.jsx)(n.code,{children:"[string-to-be-counted]"})," - in case you implement bonus,\notherwise we default to word ",(0,i.jsx)(n.code,{children:"ananas"})," ;)"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In skeleton you are given 3 empty, but documented, functions to implement."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"count_anything"})," - function accepts input file and substring to be counted in\nthe file, returns the count."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"count_ananas"})," - same as ",(0,i.jsx)(n.code,{children:"count_anything"}),", but specialized for ananases, the\ndefault implementation from the skeleton expects you to implement ",(0,i.jsx)(n.code,{children:"count_anything"}),"\nand therefore it just calls the other function."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"write_number"})," - function that writes the number to the file, why would you\nneed the function is explained later :)"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(n.p,{children:["For manipulation with the files you are only allowed to use ",(0,i.jsx)(n.code,{children:"fopen"}),", ",(0,i.jsx)(n.code,{children:"fclose"}),",\n",(0,i.jsx)(n.code,{children:"fgetc"})," and ",(0,i.jsx)(n.code,{children:"fputc"}),". Functions like ",(0,i.jsx)(n.code,{children:"fprintf"})," (except for ",(0,i.jsx)(n.code,{children:"stderr"})," or logging) and\n",(0,i.jsx)(n.code,{children:"fscanf"})," are ",(0,i.jsx)(n.strong,{children:"forbidden"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"In case you struggle and want to use one of those functions, the solution will be\npenalized by 50% of points."}),"\n",(0,i.jsx)(n.h3,{id:"bonus-part-075-k",children:"Bonus part (0.75 K\u20a1)"}),"\n",(0,i.jsxs)(n.p,{children:["Bonus part of this assignment is to implement ",(0,i.jsx)(n.code,{children:"count_anything"})," rather than ",(0,i.jsx)(n.code,{children:"count_ananas"}),"."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Smaller hint: This task does not need dynamic allocation :) You just need one\ngood helper function and the right idea ;)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"task-no-2-weird-trees-1-k",children:"Task no. 2: Weird trees (1 K\u20a1)"}),"\n",(0,i.jsxs)(n.p,{children:["In this task we are crossing our paths with ",(0,i.jsx)(n.em,{children:"algorithms and data structures"}),".\nYour task is to write a program that constructs tree from the file that is given\nas an argument and pretty-prints it."]}),"\n",(0,i.jsxs)(n.p,{children:["Input file consists of lines, that include ",(0,i.jsx)(n.code,{children:"key"})," and ",(0,i.jsx)(n.code,{children:"rank"})," in form ",(0,i.jsx)(n.code,{children:"key;rank"}),"\nor ",(0,i.jsx)(n.code,{children:"nil"}),". Why would we have ",(0,i.jsx)(n.code,{children:"nil"})," in a file? The file represents pre-order iteration\nthrough the tree. Leaves never have rank different than 0, so you can safely assume\n2 non-existing ",(0,i.jsx)(n.code,{children:"nil"}),"s in the input after you read such node ;)"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Example input file"}),(0,i.jsx)("th",{children:"Tree it represents"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"8;4\n5;3\n3;2\n2;1\n1;0\nnil\n4;0\n7;1\n6;0\nnil\n11;2\n10;1\n9;0\nnil\n12;0\n"})})}),(0,i.jsx)("td",{children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"tree",src:t(30073).Z+"",width:"633",height:"684"})})})]})]}),"\n",(0,i.jsxs)(n.p,{children:["In this task you are only provided with different trees in the ",(0,i.jsx)(n.code,{children:"test-trees"})," directory.\nImplementation and format of the pretty-print is totally up to you. :)"]}),"\n",(0,i.jsx)(n.p,{children:"Example of mine for the tree above:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"8 (rank = 4)\n+-- 5 (rank = 3)\n| +-- 3 (rank = 2)\n| | +-- 2 (rank = 1)\n| | | +-- 1 (rank = 0)\n| | +-- 4 (rank = 0)\n| +-- 7 (rank = 1)\n| +-- 6 (rank = 0)\n+-- 11 (rank = 2)\n +-- 10 (rank = 1)\n | +-- 9 (rank = 0)\n +-- 12 (rank = 0)\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Can you find out what are those trees? :)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,i.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,i.jsx)(n.hr,{})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},30073:(e,n,t)=>{t.d(n,{Z:()=>i});const i=t.p+"assets/images/tree-c9e37f87f9095c00fad33ea034485ce6.png"},11151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>o});var i=t(67294);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[5634],{58396:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var i=t(85893),s=t(11151);const r={id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},o="8th seminar bonus assignment",c={id:"bonuses/seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n",source:"@site/c/bonuses/08.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-08",permalink:"/c/bonuses/seminar-08",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/08.md",tags:[],version:"current",lastUpdatedAt:1707051499,formattedLastUpdatedAt:"Feb 4, 2024",frontMatter:{id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},sidebar:"autogeneratedBar",previous:{title:"5th and 6th seminar",permalink:"/c/bonuses/seminar-05-06"},next:{title:"10th seminar",permalink:"/c/bonuses/seminar-10"}},a={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Warning",id:"warning",level:2},{value:"Testing",id:"testing",level:2},{value:"Task no. 1: Counting (0.75 K\u20a1)",id:"task-no-1-counting-075-k",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Bonus part (0.75 K\u20a1)",id:"bonus-part-075-k",level:3},{value:"Task no. 2: Weird trees (1 K\u20a1)",id:"task-no-2-weird-trees-1-k",level:2},{value:"Submitting",id:"submitting",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"8th-seminar-bonus-assignment",children:"8th seminar bonus assignment"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"pathname:///files/c/bonuses/08.tar.gz",children:"Source"})}),"\n",(0,i.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(n.p,{children:"In this bonus you can implement two tasks, one of them has a bonus part with generic\nsolution."}),"\n",(0,i.jsx)(n.p,{children:"One is focused on counting ananas or in case of generic version any substring in\nthe file, but with a restriction on the function you use."}),"\n",(0,i.jsx)(n.p,{children:"Other one has a more algorithmic spirit."}),"\n",(0,i.jsx)(n.p,{children:"For this bonus you can get at maximum 2.5 K\u20a1."}),"\n",(0,i.jsx)(n.h2,{id:"warning",children:"Warning"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"DO NOT COMMIT test data"})," to your own git repository, since the tests include\nfiles that exceed 10MB by themselves. Even if they are on separate branch, they\ntake up the space."]}),"\n",(0,i.jsx)(n.h2,{id:"testing",children:"Testing"}),"\n",(0,i.jsxs)(n.p,{children:["For testing you are provided with python script (requires ",(0,i.jsx)(n.code,{children:"click"})," to be installed:\n",(0,i.jsx)(n.code,{children:"pip3 install --user click"}),") and ",(0,i.jsx)(n.code,{children:"Makefile"})," that provides following targets:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check-counting"})," - runs the ",(0,i.jsx)(n.code,{children:"counting"})," tests"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check-counting-bonus"})," - runs the ",(0,i.jsx)(n.code,{children:"counting"})," tests with bonus implemented"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check"})," - runs both ",(0,i.jsx)(n.code,{children:"counting"})," and ",(0,i.jsx)(n.code,{children:"counting-bonus"})," tests"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"clean"})," - removes output files from the test runs"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"task-no-1-counting-075-k",children:"Task no. 1: Counting (0.75 K\u20a1)"}),"\n",(0,i.jsx)(n.p,{children:"Your first task is to make smallish program that counts occurences of specific\n(or given) word from file and writes the number to other file."}),"\n",(0,i.jsx)(n.p,{children:"Usage of the program is:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"Usage: ./counting [string-to-be-counted]\n"})}),"\n",(0,i.jsx)(n.p,{children:"Arguments that are passed to the program represent:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:""})," - path to the file where we count the words"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:""})," - path to the file where we output the count"]}),"\n",(0,i.jsxs)(n.li,{children:["(optional argument) ",(0,i.jsx)(n.code,{children:"[string-to-be-counted]"})," - in case you implement bonus,\notherwise we default to word ",(0,i.jsx)(n.code,{children:"ananas"})," ;)"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In skeleton you are given 3 empty, but documented, functions to implement."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"count_anything"})," - function accepts input file and substring to be counted in\nthe file, returns the count."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"count_ananas"})," - same as ",(0,i.jsx)(n.code,{children:"count_anything"}),", but specialized for ananases, the\ndefault implementation from the skeleton expects you to implement ",(0,i.jsx)(n.code,{children:"count_anything"}),"\nand therefore it just calls the other function."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"write_number"})," - function that writes the number to the file, why would you\nneed the function is explained later :)"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(n.p,{children:["For manipulation with the files you are only allowed to use ",(0,i.jsx)(n.code,{children:"fopen"}),", ",(0,i.jsx)(n.code,{children:"fclose"}),",\n",(0,i.jsx)(n.code,{children:"fgetc"})," and ",(0,i.jsx)(n.code,{children:"fputc"}),". Functions like ",(0,i.jsx)(n.code,{children:"fprintf"})," (except for ",(0,i.jsx)(n.code,{children:"stderr"})," or logging) and\n",(0,i.jsx)(n.code,{children:"fscanf"})," are ",(0,i.jsx)(n.strong,{children:"forbidden"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"In case you struggle and want to use one of those functions, the solution will be\npenalized by 50% of points."}),"\n",(0,i.jsx)(n.h3,{id:"bonus-part-075-k",children:"Bonus part (0.75 K\u20a1)"}),"\n",(0,i.jsxs)(n.p,{children:["Bonus part of this assignment is to implement ",(0,i.jsx)(n.code,{children:"count_anything"})," rather than ",(0,i.jsx)(n.code,{children:"count_ananas"}),"."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Smaller hint: This task does not need dynamic allocation :) You just need one\ngood helper function and the right idea ;)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"task-no-2-weird-trees-1-k",children:"Task no. 2: Weird trees (1 K\u20a1)"}),"\n",(0,i.jsxs)(n.p,{children:["In this task we are crossing our paths with ",(0,i.jsx)(n.em,{children:"algorithms and data structures"}),".\nYour task is to write a program that constructs tree from the file that is given\nas an argument and pretty-prints it."]}),"\n",(0,i.jsxs)(n.p,{children:["Input file consists of lines, that include ",(0,i.jsx)(n.code,{children:"key"})," and ",(0,i.jsx)(n.code,{children:"rank"})," in form ",(0,i.jsx)(n.code,{children:"key;rank"}),"\nor ",(0,i.jsx)(n.code,{children:"nil"}),". Why would we have ",(0,i.jsx)(n.code,{children:"nil"})," in a file? The file represents pre-order iteration\nthrough the tree. Leaves never have rank different than 0, so you can safely assume\n2 non-existing ",(0,i.jsx)(n.code,{children:"nil"}),"s in the input after you read such node ;)"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Example input file"}),(0,i.jsx)("th",{children:"Tree it represents"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"8;4\n5;3\n3;2\n2;1\n1;0\nnil\n4;0\n7;1\n6;0\nnil\n11;2\n10;1\n9;0\nnil\n12;0\n"})})}),(0,i.jsx)("td",{children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"tree",src:t(30073).Z+"",width:"633",height:"684"})})})]})]}),"\n",(0,i.jsxs)(n.p,{children:["In this task you are only provided with different trees in the ",(0,i.jsx)(n.code,{children:"test-trees"})," directory.\nImplementation and format of the pretty-print is totally up to you. :)"]}),"\n",(0,i.jsx)(n.p,{children:"Example of mine for the tree above:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"8 (rank = 4)\n+-- 5 (rank = 3)\n| +-- 3 (rank = 2)\n| | +-- 2 (rank = 1)\n| | | +-- 1 (rank = 0)\n| | +-- 4 (rank = 0)\n| +-- 7 (rank = 1)\n| +-- 6 (rank = 0)\n+-- 11 (rank = 2)\n +-- 10 (rank = 1)\n | +-- 9 (rank = 0)\n +-- 12 (rank = 0)\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Can you find out what are those trees? :)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,i.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,i.jsx)(n.hr,{})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},30073:(e,n,t)=>{t.d(n,{Z:()=>i});const i=t.p+"assets/images/tree-c9e37f87f9095c00fad33ea034485ce6.png"},11151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>o});var i=t(67294);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7052c0bc.cf9e5f57.js b/assets/js/7052c0bc.f1d15214.js similarity index 95% rename from assets/js/7052c0bc.cf9e5f57.js rename to assets/js/7052c0bc.f1d15214.js index fccebf4..3843d52 100644 --- a/assets/js/7052c0bc.cf9e5f57.js +++ b/assets/js/7052c0bc.f1d15214.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[9731],{42286:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var o=n(85893),r=n(11151);const i={id:"cpp-intro",title:"Introduction",slug:"/"},c=void 0,s={id:"cpp-intro",title:"Introduction",description:"",source:"@site/cpp/00-intro.md",sourceDirName:".",slug:"/",permalink:"/cpp/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/cpp/00-intro.md",tags:[],version:"current",lastUpdatedAt:1707050925,formattedLastUpdatedAt:"Feb 4, 2024",sidebarPosition:0,frontMatter:{id:"cpp-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Exceptions and RAII",permalink:"/cpp/category/exceptions-and-raii"}},a={},p=[];function u(t){return(0,o.jsx)(o.Fragment,{})}function d(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>s,a:()=>c});var o=n(67294);const r={},i=o.createContext(r);function c(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:c(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[9731],{42286:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var o=n(85893),r=n(11151);const i={id:"cpp-intro",title:"Introduction",slug:"/"},c=void 0,s={id:"cpp-intro",title:"Introduction",description:"",source:"@site/cpp/00-intro.md",sourceDirName:".",slug:"/",permalink:"/cpp/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/cpp/00-intro.md",tags:[],version:"current",lastUpdatedAt:1707051499,formattedLastUpdatedAt:"Feb 4, 2024",sidebarPosition:0,frontMatter:{id:"cpp-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Exceptions and RAII",permalink:"/cpp/category/exceptions-and-raii"}},a={},p=[];function u(t){return(0,o.jsx)(o.Fragment,{})}function d(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>s,a:()=>c});var o=n(67294);const r={},i=o.createContext(r);function c(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:c(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/794ef108.083736fa.js b/assets/js/794ef108.b124efee.js similarity index 95% rename from assets/js/794ef108.083736fa.js rename to assets/js/794ef108.b124efee.js index 15a8672..9e11cb0 100644 --- a/assets/js/794ef108.083736fa.js +++ b/assets/js/794ef108.b124efee.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[3803],{86427:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var o=n(85893),r=n(11151);const i={id:"c-intro",title:"Introduction",slug:"/"},s=void 0,c={id:"c-intro",title:"Introduction",description:"",source:"@site/c/00-intro.md",sourceDirName:".",slug:"/",permalink:"/c/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/00-intro.md",tags:[],version:"current",lastUpdatedAt:1707050925,formattedLastUpdatedAt:"Feb 4, 2024",sidebarPosition:0,frontMatter:{id:"c-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Bonuses",permalink:"/c/category/bonuses"}},a={},u=[];function d(t){return(0,o.jsx)(o.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d()}},11151:(t,e,n)=>{n.d(e,{Z:()=>c,a:()=>s});var o=n(67294);const r={},i=o.createContext(r);function s(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[3803],{86427:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var o=n(85893),r=n(11151);const i={id:"c-intro",title:"Introduction",slug:"/"},s=void 0,c={id:"c-intro",title:"Introduction",description:"",source:"@site/c/00-intro.md",sourceDirName:".",slug:"/",permalink:"/c/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/00-intro.md",tags:[],version:"current",lastUpdatedAt:1707051499,formattedLastUpdatedAt:"Feb 4, 2024",sidebarPosition:0,frontMatter:{id:"c-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Bonuses",permalink:"/c/category/bonuses"}},a={},u=[];function d(t){return(0,o.jsx)(o.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d()}},11151:(t,e,n)=>{n.d(e,{Z:()=>c,a:()=>s});var o=n(67294);const r={},i=o.createContext(r);function s(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/84d1e0d8.478c5852.js b/assets/js/84d1e0d8.6d20389a.js similarity index 97% rename from assets/js/84d1e0d8.478c5852.js rename to assets/js/84d1e0d8.6d20389a.js index a96a510..25ea305 100644 --- a/assets/js/84d1e0d8.478c5852.js +++ b/assets/js/84d1e0d8.6d20389a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[1885],{49713:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var o=n(85893),s=n(11151);const r={id:"algorithms-intro",title:"Introduction",slug:"/"},i=void 0,a={id:"algorithms-intro",title:"Introduction",description:"In this part you can find \u201crandom\u201d additional materials I have written over the",source:"@site/algorithms/00-intro.md",sourceDirName:".",slug:"/",permalink:"/algorithms/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/algorithms/00-intro.md",tags:[],version:"current",lastUpdatedAt:1707050925,formattedLastUpdatedAt:"Feb 4, 2024",sidebarPosition:0,frontMatter:{id:"algorithms-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Algorithms and Correctness",permalink:"/algorithms/category/algorithms-and-correctness"}},c={},d=[];function l(t){const e={a:"a",em:"em",p:"p",...(0,s.a)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(e.p,{children:["In this part you can find \u201crandom\u201d additional materials I have written over the\ncourse of teaching ",(0,o.jsx)(e.em,{children:"Algorithms and data structures I"}),"."]}),"\n",(0,o.jsx)(e.p,{children:"It is a various mix of stuff that may have been produced as a follow-up on some\nquestion asked at the seminar or spontanously."}),"\n",(0,o.jsxs)(e.p,{children:["If you have some ideas for posts, please do not hesitate to submit them as issues\nin the linked ",(0,o.jsx)(e.a,{href:"https://gitlab.fi.muni.cz/xfocko/kb/issues",children:"GitLab"}),"."]})]})}function u(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(l,{...t})}):l(t)}},11151:(t,e,n)=>{n.d(e,{Z:()=>a,a:()=>i});var o=n(67294);const s={},r=o.createContext(s);function i(t){const e=o.useContext(r);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),o.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[1885],{49713:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var o=n(85893),s=n(11151);const r={id:"algorithms-intro",title:"Introduction",slug:"/"},i=void 0,a={id:"algorithms-intro",title:"Introduction",description:"In this part you can find \u201crandom\u201d additional materials I have written over the",source:"@site/algorithms/00-intro.md",sourceDirName:".",slug:"/",permalink:"/algorithms/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/algorithms/00-intro.md",tags:[],version:"current",lastUpdatedAt:1707051499,formattedLastUpdatedAt:"Feb 4, 2024",sidebarPosition:0,frontMatter:{id:"algorithms-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Algorithms and Correctness",permalink:"/algorithms/category/algorithms-and-correctness"}},c={},d=[];function l(t){const e={a:"a",em:"em",p:"p",...(0,s.a)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(e.p,{children:["In this part you can find \u201crandom\u201d additional materials I have written over the\ncourse of teaching ",(0,o.jsx)(e.em,{children:"Algorithms and data structures I"}),"."]}),"\n",(0,o.jsx)(e.p,{children:"It is a various mix of stuff that may have been produced as a follow-up on some\nquestion asked at the seminar or spontanously."}),"\n",(0,o.jsxs)(e.p,{children:["If you have some ideas for posts, please do not hesitate to submit them as issues\nin the linked ",(0,o.jsx)(e.a,{href:"https://gitlab.fi.muni.cz/xfocko/kb/issues",children:"GitLab"}),"."]})]})}function u(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(l,{...t})}):l(t)}},11151:(t,e,n)=>{n.d(e,{Z:()=>a,a:()=>i});var o=n(67294);const s={},r=o.createContext(s);function i(t){const e=o.useContext(r);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),o.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/b1288602.9aa1a8e6.js b/assets/js/b1288602.e43df2a2.js similarity index 99% rename from assets/js/b1288602.9aa1a8e6.js rename to assets/js/b1288602.e43df2a2.js index c967676..b7bc352 100644 --- a/assets/js/b1288602.9aa1a8e6.js +++ b/assets/js/b1288602.e43df2a2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[59],{51456:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>a,toc:()=>h});var r=t(85893),s=t(11151);const o={title:"Submitting merge requests"},i="Submitting merge requests for review",a={id:"mr",title:"Submitting merge requests",description:"This tutorial aims to show you how to follow basic git workflow and submit changes",source:"@site/c/mr.md",sourceDirName:".",slug:"/mr",permalink:"/c/mr",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/mr.md",tags:[],version:"current",lastUpdatedAt:1707050925,formattedLastUpdatedAt:"Feb 4, 2024",frontMatter:{title:"Submitting merge requests"},sidebar:"autogeneratedBar",previous:{title:"Practice exam C",permalink:"/c/pexam/cams"}},c={},h=[{value:"Tutorial",id:"tutorial",level:2},{value:"Step #1 - Starting from the clean repository",id:"step-1---starting-from-the-clean-repository",level:3},{value:"Step #2 - Create new branch",id:"step-2---create-new-branch",level:3},{value:"Step #3 - Do the assignment",id:"step-3---do-the-assignment",level:3},{value:"Step #4 - Commit and upload the changes to GitLab",id:"step-4---commit-and-upload-the-changes-to-gitlab",level:3},{value:"Step #5 - Creating a merge request manually",id:"step-5---creating-a-merge-request-manually",level:3},{value:"Step #6 - Set assignees",id:"step-6---set-assignees",level:3},{value:"Step #7 - Return to default branch",id:"step-7---return-to-default-branch",level:3}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"submitting-merge-requests-for-review",children:"Submitting merge requests for review"}),"\n",(0,r.jsxs)(n.p,{children:["This tutorial aims to show you how to follow basic git workflow and submit changes\nthrough ",(0,r.jsx)(n.em,{children:"Merge Requests"})," for review."]}),"\n",(0,r.jsxs)(n.p,{children:["The rudimentary idea behind aims for changes to be present on a separate branch\nthat is supposedly ",(0,r.jsx)(n.em,{children:"merged"})," into the default branch. Till then changes can be reviewed\non ",(0,r.jsx)(n.em,{children:"Merge Request"})," and additional changes may be made based on the reviews. Once\nthe changes satisfy requirements, the merge request is merged."]}),"\n",(0,r.jsx)(n.h2,{id:"tutorial",children:"Tutorial"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["Use this tutorial only for bonus assignments ",(0,r.jsx)(n.strong,{children:"made by your tutors"})," or in case\nyou need to make up for the absence."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-1---starting-from-the-clean-repository",children:"Step #1 - Starting from the clean repository"}),"\n",(0,r.jsxs)(n.p,{children:["In your repository (either locally or on aisa) type ",(0,r.jsx)(n.code,{children:"git status"})," and check if your\nrepository is clean and you are present on the main branch (",(0,r.jsx)(n.code,{children:"master"}),", ",(0,r.jsx)(n.code,{children:"main"})," or\n",(0,r.jsx)(n.code,{children:"trunk"}),"). If you do not know what your default branch is, it is probably ",(0,r.jsx)(n.code,{children:"master"}),"\nand you should not be on any other branch."]}),"\n",(0,r.jsx)(n.p,{children:"Output of the command should look like this:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git status\nOn branch master # Or main or trunk.\nYour branch is up to date with 'origin/master'.\n\nnothing to commit, working tree clean\n"})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["In case you are on different branch or there are uncommitted changes,\n",(0,r.jsx)(n.strong,{children:"do not continue!!!"})," Clean your repository (commit the changes or discard\nthem), before you continue."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-2---create-new-branch",children:"Step #2 - Create new branch"}),"\n",(0,r.jsx)(n.p,{children:"In your repository write command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git checkout -b BRANCH\nSwitched to a new branch 'BRANCH'\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Instead of ",(0,r.jsx)(n.code,{children:"BRANCH"})," use some reasonable name for the branch. For example if you\nare working on the seminar from 3rd week, name the branch ",(0,r.jsx)(n.code,{children:"seminar-03"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"step-3---do-the-assignment",children:"Step #3 - Do the assignment"}),"\n",(0,r.jsx)(n.p,{children:"Download the skeleton for the seminar assignment, extract and program. For example\nif you are working on 3rd seminar, you can do so by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-03/pb071-seminar-03.zip\naisa$ unzip pb071-seminar-03.zip\n# Now you should have directory 'seminar-03'.\naisa$ rm pb071-seminar-03.zip\naisa$ cd seminar-03\n# You can work on the assignment.\n"})}),"\n",(0,r.jsx)(n.h3,{id:"step-4---commit-and-upload-the-changes-to-gitlab",children:"Step #4 - Commit and upload the changes to GitLab"}),"\n",(0,r.jsxs)(n.p,{children:["The same way you ",(0,r.jsx)(n.em,{children:"add"})," and ",(0,r.jsx)(n.em,{children:"commit"})," files for the homework assignments, you do for\nthe seminar."]}),"\n",(0,r.jsxs)(n.p,{children:["Now you can upload the changes to GitLab. ",(0,r.jsx)(n.code,{children:"git push"})," is not enough, since repository\non GitLab does not know your new branch. You can solve this by adding arguments:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git push origin BRANCH\n...\nremote: To create a merge request for BRANCH, visit:\nremote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH\n...\n"})}),"\n",(0,r.jsx)(n.p,{children:"In the output you should have a link for creating a merge request. If you see this\nlink, open it and skip next step."}),"\n",(0,r.jsx)(n.h3,{id:"step-5---creating-a-merge-request-manually",children:"Step #5 - Creating a merge request manually"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Open your repository on GitLab."}),"\n",(0,r.jsxs)(n.li,{children:["On the left panel click on ",(0,r.jsx)(n.em,{children:"Merge Requests"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Click on ",(0,r.jsx)(n.em,{children:"New Merge Request"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["In ",(0,r.jsx)(n.em,{children:"Source branch"})," select ",(0,r.jsx)(n.code,{children:"login/pb071"})," and ",(0,r.jsx)(n.code,{children:"BRANCH"}),", which you created."]}),"\n",(0,r.jsxs)(n.li,{children:["In ",(0,r.jsx)(n.em,{children:"Target branch"})," select ",(0,r.jsx)(n.code,{children:"login/pb071"})," and your default branch you have seen\nin the output of the first command. (most likely ",(0,r.jsx)(n.code,{children:"master"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Click on ",(0,r.jsx)(n.em,{children:"Compare branches and continue"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-6---set-assignees",children:"Step #6 - Set assignees"}),"\n",(0,r.jsxs)(n.p,{children:["On the page that is opened, please check at the top that you are creating merge\nrequest ",(0,r.jsx)(n.strong,{children:"from"})," your new branch ",(0,r.jsx)(n.strong,{children:"to"})," your default branch (one of ",(0,r.jsx)(n.code,{children:"master"}),", ",(0,r.jsx)(n.code,{children:"main"}),"\nor ",(0,r.jsx)(n.code,{children:"trunk"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Then in the field ",(0,r.jsx)(n.em,{children:"Assignees"})," set your tutors based on the seminar group. You can\nuse login for a quick look up."]}),"\n",(0,r.jsxs)(n.p,{children:["In the end click on ",(0,r.jsx)(n.em,{children:"Submit merge request"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"step-7---return-to-default-branch",children:"Step #7 - Return to default branch"}),"\n",(0,r.jsx)(n.p,{children:"Homework assignments can be submitted only from branches specified in the rules\nfor the course. Because of that, before you do anything else, you should switch\nback to your default branch."}),"\n",(0,r.jsxs)(n.p,{children:["First of all, same as in step #1, check that your repository is clean with ",(0,r.jsx)(n.code,{children:"git status"}),".\nFor the sake of safety, do not continue without clean repository. Then with command\n",(0,r.jsx)(n.code,{children:"git checkout BRANCH"})," switch to your default branch ",(0,r.jsx)(n.code,{children:"BRANCH"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["If you do not know which branch is your default, try ",(0,r.jsx)(n.code,{children:"git branch"})," that outputs all branches in your repository. Default branch is typically ",(0,r.jsx)(n.code,{children:"master"}),", but can\nbe ",(0,r.jsx)(n.code,{children:"main"})," or ",(0,r.jsx)(n.code,{children:"trunk"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git status\n# Check if repository is clean\n\n# If you know, what is your default branch, you can skip next command.\naisa$ git branch\n# Find the default branch in the list; should be one of the `master`, `main` or\n# `trunk` and you should not have more than one of those.\n# In case the list clears the terminal and you cannot see shell prompt, you can\n# press `q` to quit the pager.\n\naisa$ git checkout master\n"})}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["Adapted from: ",(0,r.jsx)(n.a,{href:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html",children:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html"})]})]})}function d(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>i});var r=t(67294);const s={},o=r.createContext(s);function i(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[59],{51456:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>a,toc:()=>h});var r=t(85893),s=t(11151);const o={title:"Submitting merge requests"},i="Submitting merge requests for review",a={id:"mr",title:"Submitting merge requests",description:"This tutorial aims to show you how to follow basic git workflow and submit changes",source:"@site/c/mr.md",sourceDirName:".",slug:"/mr",permalink:"/c/mr",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/mr.md",tags:[],version:"current",lastUpdatedAt:1707051499,formattedLastUpdatedAt:"Feb 4, 2024",frontMatter:{title:"Submitting merge requests"},sidebar:"autogeneratedBar",previous:{title:"Practice exam C",permalink:"/c/pexam/cams"}},c={},h=[{value:"Tutorial",id:"tutorial",level:2},{value:"Step #1 - Starting from the clean repository",id:"step-1---starting-from-the-clean-repository",level:3},{value:"Step #2 - Create new branch",id:"step-2---create-new-branch",level:3},{value:"Step #3 - Do the assignment",id:"step-3---do-the-assignment",level:3},{value:"Step #4 - Commit and upload the changes to GitLab",id:"step-4---commit-and-upload-the-changes-to-gitlab",level:3},{value:"Step #5 - Creating a merge request manually",id:"step-5---creating-a-merge-request-manually",level:3},{value:"Step #6 - Set assignees",id:"step-6---set-assignees",level:3},{value:"Step #7 - Return to default branch",id:"step-7---return-to-default-branch",level:3}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"submitting-merge-requests-for-review",children:"Submitting merge requests for review"}),"\n",(0,r.jsxs)(n.p,{children:["This tutorial aims to show you how to follow basic git workflow and submit changes\nthrough ",(0,r.jsx)(n.em,{children:"Merge Requests"})," for review."]}),"\n",(0,r.jsxs)(n.p,{children:["The rudimentary idea behind aims for changes to be present on a separate branch\nthat is supposedly ",(0,r.jsx)(n.em,{children:"merged"})," into the default branch. Till then changes can be reviewed\non ",(0,r.jsx)(n.em,{children:"Merge Request"})," and additional changes may be made based on the reviews. Once\nthe changes satisfy requirements, the merge request is merged."]}),"\n",(0,r.jsx)(n.h2,{id:"tutorial",children:"Tutorial"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["Use this tutorial only for bonus assignments ",(0,r.jsx)(n.strong,{children:"made by your tutors"})," or in case\nyou need to make up for the absence."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-1---starting-from-the-clean-repository",children:"Step #1 - Starting from the clean repository"}),"\n",(0,r.jsxs)(n.p,{children:["In your repository (either locally or on aisa) type ",(0,r.jsx)(n.code,{children:"git status"})," and check if your\nrepository is clean and you are present on the main branch (",(0,r.jsx)(n.code,{children:"master"}),", ",(0,r.jsx)(n.code,{children:"main"})," or\n",(0,r.jsx)(n.code,{children:"trunk"}),"). If you do not know what your default branch is, it is probably ",(0,r.jsx)(n.code,{children:"master"}),"\nand you should not be on any other branch."]}),"\n",(0,r.jsx)(n.p,{children:"Output of the command should look like this:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git status\nOn branch master # Or main or trunk.\nYour branch is up to date with 'origin/master'.\n\nnothing to commit, working tree clean\n"})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["In case you are on different branch or there are uncommitted changes,\n",(0,r.jsx)(n.strong,{children:"do not continue!!!"})," Clean your repository (commit the changes or discard\nthem), before you continue."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-2---create-new-branch",children:"Step #2 - Create new branch"}),"\n",(0,r.jsx)(n.p,{children:"In your repository write command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git checkout -b BRANCH\nSwitched to a new branch 'BRANCH'\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Instead of ",(0,r.jsx)(n.code,{children:"BRANCH"})," use some reasonable name for the branch. For example if you\nare working on the seminar from 3rd week, name the branch ",(0,r.jsx)(n.code,{children:"seminar-03"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"step-3---do-the-assignment",children:"Step #3 - Do the assignment"}),"\n",(0,r.jsx)(n.p,{children:"Download the skeleton for the seminar assignment, extract and program. For example\nif you are working on 3rd seminar, you can do so by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-03/pb071-seminar-03.zip\naisa$ unzip pb071-seminar-03.zip\n# Now you should have directory 'seminar-03'.\naisa$ rm pb071-seminar-03.zip\naisa$ cd seminar-03\n# You can work on the assignment.\n"})}),"\n",(0,r.jsx)(n.h3,{id:"step-4---commit-and-upload-the-changes-to-gitlab",children:"Step #4 - Commit and upload the changes to GitLab"}),"\n",(0,r.jsxs)(n.p,{children:["The same way you ",(0,r.jsx)(n.em,{children:"add"})," and ",(0,r.jsx)(n.em,{children:"commit"})," files for the homework assignments, you do for\nthe seminar."]}),"\n",(0,r.jsxs)(n.p,{children:["Now you can upload the changes to GitLab. ",(0,r.jsx)(n.code,{children:"git push"})," is not enough, since repository\non GitLab does not know your new branch. You can solve this by adding arguments:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git push origin BRANCH\n...\nremote: To create a merge request for BRANCH, visit:\nremote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH\n...\n"})}),"\n",(0,r.jsx)(n.p,{children:"In the output you should have a link for creating a merge request. If you see this\nlink, open it and skip next step."}),"\n",(0,r.jsx)(n.h3,{id:"step-5---creating-a-merge-request-manually",children:"Step #5 - Creating a merge request manually"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Open your repository on GitLab."}),"\n",(0,r.jsxs)(n.li,{children:["On the left panel click on ",(0,r.jsx)(n.em,{children:"Merge Requests"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Click on ",(0,r.jsx)(n.em,{children:"New Merge Request"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["In ",(0,r.jsx)(n.em,{children:"Source branch"})," select ",(0,r.jsx)(n.code,{children:"login/pb071"})," and ",(0,r.jsx)(n.code,{children:"BRANCH"}),", which you created."]}),"\n",(0,r.jsxs)(n.li,{children:["In ",(0,r.jsx)(n.em,{children:"Target branch"})," select ",(0,r.jsx)(n.code,{children:"login/pb071"})," and your default branch you have seen\nin the output of the first command. (most likely ",(0,r.jsx)(n.code,{children:"master"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Click on ",(0,r.jsx)(n.em,{children:"Compare branches and continue"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-6---set-assignees",children:"Step #6 - Set assignees"}),"\n",(0,r.jsxs)(n.p,{children:["On the page that is opened, please check at the top that you are creating merge\nrequest ",(0,r.jsx)(n.strong,{children:"from"})," your new branch ",(0,r.jsx)(n.strong,{children:"to"})," your default branch (one of ",(0,r.jsx)(n.code,{children:"master"}),", ",(0,r.jsx)(n.code,{children:"main"}),"\nor ",(0,r.jsx)(n.code,{children:"trunk"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Then in the field ",(0,r.jsx)(n.em,{children:"Assignees"})," set your tutors based on the seminar group. You can\nuse login for a quick look up."]}),"\n",(0,r.jsxs)(n.p,{children:["In the end click on ",(0,r.jsx)(n.em,{children:"Submit merge request"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"step-7---return-to-default-branch",children:"Step #7 - Return to default branch"}),"\n",(0,r.jsx)(n.p,{children:"Homework assignments can be submitted only from branches specified in the rules\nfor the course. Because of that, before you do anything else, you should switch\nback to your default branch."}),"\n",(0,r.jsxs)(n.p,{children:["First of all, same as in step #1, check that your repository is clean with ",(0,r.jsx)(n.code,{children:"git status"}),".\nFor the sake of safety, do not continue without clean repository. Then with command\n",(0,r.jsx)(n.code,{children:"git checkout BRANCH"})," switch to your default branch ",(0,r.jsx)(n.code,{children:"BRANCH"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["If you do not know which branch is your default, try ",(0,r.jsx)(n.code,{children:"git branch"})," that outputs all branches in your repository. Default branch is typically ",(0,r.jsx)(n.code,{children:"master"}),", but can\nbe ",(0,r.jsx)(n.code,{children:"main"})," or ",(0,r.jsx)(n.code,{children:"trunk"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git status\n# Check if repository is clean\n\n# If you know, what is your default branch, you can skip next command.\naisa$ git branch\n# Find the default branch in the list; should be one of the `master`, `main` or\n# `trunk` and you should not have more than one of those.\n# In case the list clears the terminal and you cannot see shell prompt, you can\n# press `q` to quit the pager.\n\naisa$ git checkout master\n"})}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["Adapted from: ",(0,r.jsx)(n.a,{href:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html",children:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html"})]})]})}function d(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>i});var r=t(67294);const s={},o=r.createContext(s);function i(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d05e838c.0813f6b5.js b/assets/js/d05e838c.cab4553d.js similarity index 99% rename from assets/js/d05e838c.0813f6b5.js rename to assets/js/d05e838c.cab4553d.js index 3427969..c05bb2d 100644 --- a/assets/js/d05e838c.0813f6b5.js +++ b/assets/js/d05e838c.cab4553d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6544],{63004:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>o,toc:()=>l});var s=r(85893),t=r(11151);const i={id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},c=void 0,o={id:"bonuses/seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n",source:"@site/c/bonuses/05-06.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-05-06",permalink:"/c/bonuses/seminar-05-06",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/05-06.md",tags:[],version:"current",lastUpdatedAt:1707050925,formattedLastUpdatedAt:"Feb 4, 2024",frontMatter:{id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},sidebar:"autogeneratedBar",previous:{title:"4th seminar",permalink:"/c/bonuses/seminar-04"},next:{title:"8th seminar",permalink:"/c/bonuses/seminar-08"}},d={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Task no. 1: Reverse (0.5 K\u20a1)",id:"task-no-1-reverse-05-k",level:3},{value:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)",id:"task-no-2-vigen\xe8re-05-k",level:3},{value:"Bonus part (0.5 K\u20a1)",id:"bonus-part-05-k",level:4},{value:"Task no. 3: Bit madness (0.5 K\u20a1)",id:"task-no-3-bit-madness-05-k",level:3},{value:"Task no. 4: All combined to BMP (0.5 K\u20a1)",id:"task-no-4-all-combined-to-bmp-05-k",level:3},{value:"Submitting",id:"submitting",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"For this bonus you can get at maximum 2.5 K\u20a1."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.a,{href:"pathname:///files/c/bonuses/05-06.tar.gz",children:"Source"})}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"In this bonus you will implement few functions that will be used together for\nimplementing a very special cipher."}),"\n",(0,s.jsx)(n.h3,{id:"task-no-1-reverse-05-k",children:"Task no. 1: Reverse (0.5 K\u20a1)"}),"\n",(0,s.jsxs)(n.p,{children:["Write a function ",(0,s.jsx)(n.code,{children:"char* reverse(const char* text)"})," that returns copy of the input\nstring in reversed order (also uppercase)."]}),"\n",(0,s.jsxs)(n.p,{children:["In case you are given ",(0,s.jsx)(n.code,{children:"NULL"}),", return ",(0,s.jsx)(n.code,{children:"NULL"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Example (more in tests):"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'char* reversed = reverse("Hello world!");\n\nprintf("%s\\n", reversed);\n// "!DLROW OLLEH"\n\nif (reversed != NULL) {\n free(reversed);\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"task-no-2-vigen\xe8re-05-k",children:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"Vigen\xe8re cipher is similar to the Caesar cipher, but you also have a key that is\nused for encrypting (or decrypting)."}),"\n",(0,s.jsx)(n.p,{children:"Your task is to write two functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"char* vigenere_encrypt(const char* key, const char* text)"})," for encrypting"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"char* vigenere_decrypt(const char* key, const char* text)"})," for decrypting"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In both of those you should return uppercase characters."}),"\n",(0,s.jsx)(n.p,{children:"Meaning of the parameters you are given:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"key"})," - String that represents key that is used for *crypting. It consists of\none word and can have only characters of the alphabet. Does not matter if they\nare uppercase or lowercase."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"text"})," - String that is to be *crypted."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Function returns address of the encrypted (or decrypted) string. Or ",(0,s.jsx)(n.code,{children:"NULL"})," in case\nerror occurs."]}),"\n",(0,s.jsx)(n.p,{children:"Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'char *encrypted = vigenere_encrypt("CoMPuTeR", "Hello world!");\n\nprintf("%s\\n", encrypted);\n// "JSXAI PSINR!"\n\nif (encrypted != NULL) {\n free(encrypted)\n}\n'})}),"\n",(0,s.jsx)(n.h4,{id:"bonus-part-05-k",children:"Bonus part (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"If you can utilize helper function that would do both encrypting and decrypting,\nyou can gain 0.5 K\u20a1."}),"\n",(0,s.jsxs)(n.p,{children:["Usage of ",(0,s.jsx)(n.code,{children:"true"}),"/",(0,s.jsx)(n.code,{children:"false"})," to decide path in code is prohibited. It leads to merging\nof both functions into one. Point of this part is to discover a way to do this\ngenerically in such way that there are no separate paths for one or the other. One\nfunction with no branching for both of them, parametrization is your friend :)"]}),"\n",(0,s.jsx)(n.h3,{id:"task-no-3-bit-madness-05-k",children:"Task no. 3: Bit madness (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"This is a state of the art crypto. Please do not share :)"}),"\n",(0,s.jsx)(n.p,{children:"For encrypting:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Split the character that is to be encrypted in halves (4 and 4 bits each)."}),"\n",(0,s.jsx)(n.li,{children:"Bits in 1st half are to be split into pairs. Swap bits in those pairs."}),"\n",(0,s.jsxs)(n.li,{children:["Then use the 4 bits that you created in the 2nd step for ",(0,s.jsx)(n.code,{children:"XOR"})," with the other\n4 bits."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["This simple and ingenious principle will be illustrated on the following example.\nString we want to encrypt is ",(0,s.jsx)(n.code,{children:"Hello world!"}),". We need to encrypt each letter separately,\nso we will demonstrate on letter ",(0,s.jsx)(n.code,{children:"H"}),":"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Letter ",(0,s.jsx)(n.code,{children:"H"})," is represented in ASCII as ",(0,s.jsx)(n.code,{children:"72"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"72"})," represented in binary is: ",(0,s.jsx)(n.code,{children:"01001000"}),". So first 4 bits are: ",(0,s.jsx)(n.code,{children:"0100"})," and last\n4 bits are ",(0,s.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["First half of bits (",(0,s.jsx)(n.code,{children:"0100"}),") consists of 2 pairs (",(0,s.jsx)(n.code,{children:"01"})," and ",(0,s.jsx)(n.code,{children:"00"}),") which we swap\n(",(0,s.jsx)(n.code,{children:"01 ~> 10"})," and ",(0,s.jsx)(n.code,{children:"00 ~> 00"}),"). That way we get ",(0,s.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"That half is used for xor with the other 4 bits:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:" 1000 // second half\nXOR 1000 // first half after 2nd step\n--------\n 0000\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Now we combine both halves (first one is ",(0,s.jsx)(n.code,{children:"1000"}),", which we got from the 2nd step\nand second one is ",(0,s.jsx)(n.code,{children:"0000"}),", which we got from the 3rd step) and get ",(0,s.jsx)(n.code,{children:"10000000"}),",\nwhich is encrypted character ",(0,s.jsx)(n.code,{children:"H"})," using this method."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In case of decryption, reverse those steps."}),"\n",(0,s.jsx)(n.p,{children:"Your task is to implement functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"unsigned char* bit_encrypt(const char* text)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"char* bit_decrypt(const unsigned char* text)"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'unsigned char* encrypted = bit_encrypt("Hello world!");\n\nfor (int i = 0; i < 12;i++) {\n printf("%x ", encrypted[i]);\n //80 9c 95 95 96 11 bc 96 b9 95 9d 10\n}\n\nif (encrypted != NULL) {\n free(encrypted);\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"task-no-4-all-combined-to-bmp-05-k",children:"Task no. 4: All combined to BMP (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"Authors of the BMP cipher are non-disclosed :)"}),"\n",(0,s.jsx)(n.p,{children:"Create pair of functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"unsigned char* bmp_encrypt(const char* key, const char* text)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"char* bmp_decrypt(const char* key, const unsigned char* text)"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"BMP cipher consists of following steps for encrypting:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Reverse the input string"}),"\n",(0,s.jsx)(n.li,{children:"Use Vigenere on the string you got from step #1"}),"\n",(0,s.jsx)(n.li,{children:"Use bit madness on the string you got from step #2"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"For decrypting, reverse the steps."}),"\n",(0,s.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,s.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,s.jsx)(n.hr,{})]})}function a(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},11151:(e,n,r)=>{r.d(n,{Z:()=>o,a:()=>c});var s=r(67294);const t={},i=s.createContext(t);function c(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6544],{63004:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>o,toc:()=>l});var s=r(85893),t=r(11151);const i={id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},c=void 0,o={id:"bonuses/seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n",source:"@site/c/bonuses/05-06.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-05-06",permalink:"/c/bonuses/seminar-05-06",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/05-06.md",tags:[],version:"current",lastUpdatedAt:1707051499,formattedLastUpdatedAt:"Feb 4, 2024",frontMatter:{id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},sidebar:"autogeneratedBar",previous:{title:"4th seminar",permalink:"/c/bonuses/seminar-04"},next:{title:"8th seminar",permalink:"/c/bonuses/seminar-08"}},d={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Task no. 1: Reverse (0.5 K\u20a1)",id:"task-no-1-reverse-05-k",level:3},{value:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)",id:"task-no-2-vigen\xe8re-05-k",level:3},{value:"Bonus part (0.5 K\u20a1)",id:"bonus-part-05-k",level:4},{value:"Task no. 3: Bit madness (0.5 K\u20a1)",id:"task-no-3-bit-madness-05-k",level:3},{value:"Task no. 4: All combined to BMP (0.5 K\u20a1)",id:"task-no-4-all-combined-to-bmp-05-k",level:3},{value:"Submitting",id:"submitting",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"For this bonus you can get at maximum 2.5 K\u20a1."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.a,{href:"pathname:///files/c/bonuses/05-06.tar.gz",children:"Source"})}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"In this bonus you will implement few functions that will be used together for\nimplementing a very special cipher."}),"\n",(0,s.jsx)(n.h3,{id:"task-no-1-reverse-05-k",children:"Task no. 1: Reverse (0.5 K\u20a1)"}),"\n",(0,s.jsxs)(n.p,{children:["Write a function ",(0,s.jsx)(n.code,{children:"char* reverse(const char* text)"})," that returns copy of the input\nstring in reversed order (also uppercase)."]}),"\n",(0,s.jsxs)(n.p,{children:["In case you are given ",(0,s.jsx)(n.code,{children:"NULL"}),", return ",(0,s.jsx)(n.code,{children:"NULL"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Example (more in tests):"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'char* reversed = reverse("Hello world!");\n\nprintf("%s\\n", reversed);\n// "!DLROW OLLEH"\n\nif (reversed != NULL) {\n free(reversed);\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"task-no-2-vigen\xe8re-05-k",children:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"Vigen\xe8re cipher is similar to the Caesar cipher, but you also have a key that is\nused for encrypting (or decrypting)."}),"\n",(0,s.jsx)(n.p,{children:"Your task is to write two functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"char* vigenere_encrypt(const char* key, const char* text)"})," for encrypting"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"char* vigenere_decrypt(const char* key, const char* text)"})," for decrypting"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In both of those you should return uppercase characters."}),"\n",(0,s.jsx)(n.p,{children:"Meaning of the parameters you are given:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"key"})," - String that represents key that is used for *crypting. It consists of\none word and can have only characters of the alphabet. Does not matter if they\nare uppercase or lowercase."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"text"})," - String that is to be *crypted."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Function returns address of the encrypted (or decrypted) string. Or ",(0,s.jsx)(n.code,{children:"NULL"})," in case\nerror occurs."]}),"\n",(0,s.jsx)(n.p,{children:"Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'char *encrypted = vigenere_encrypt("CoMPuTeR", "Hello world!");\n\nprintf("%s\\n", encrypted);\n// "JSXAI PSINR!"\n\nif (encrypted != NULL) {\n free(encrypted)\n}\n'})}),"\n",(0,s.jsx)(n.h4,{id:"bonus-part-05-k",children:"Bonus part (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"If you can utilize helper function that would do both encrypting and decrypting,\nyou can gain 0.5 K\u20a1."}),"\n",(0,s.jsxs)(n.p,{children:["Usage of ",(0,s.jsx)(n.code,{children:"true"}),"/",(0,s.jsx)(n.code,{children:"false"})," to decide path in code is prohibited. It leads to merging\nof both functions into one. Point of this part is to discover a way to do this\ngenerically in such way that there are no separate paths for one or the other. One\nfunction with no branching for both of them, parametrization is your friend :)"]}),"\n",(0,s.jsx)(n.h3,{id:"task-no-3-bit-madness-05-k",children:"Task no. 3: Bit madness (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"This is a state of the art crypto. Please do not share :)"}),"\n",(0,s.jsx)(n.p,{children:"For encrypting:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Split the character that is to be encrypted in halves (4 and 4 bits each)."}),"\n",(0,s.jsx)(n.li,{children:"Bits in 1st half are to be split into pairs. Swap bits in those pairs."}),"\n",(0,s.jsxs)(n.li,{children:["Then use the 4 bits that you created in the 2nd step for ",(0,s.jsx)(n.code,{children:"XOR"})," with the other\n4 bits."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["This simple and ingenious principle will be illustrated on the following example.\nString we want to encrypt is ",(0,s.jsx)(n.code,{children:"Hello world!"}),". We need to encrypt each letter separately,\nso we will demonstrate on letter ",(0,s.jsx)(n.code,{children:"H"}),":"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Letter ",(0,s.jsx)(n.code,{children:"H"})," is represented in ASCII as ",(0,s.jsx)(n.code,{children:"72"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"72"})," represented in binary is: ",(0,s.jsx)(n.code,{children:"01001000"}),". So first 4 bits are: ",(0,s.jsx)(n.code,{children:"0100"})," and last\n4 bits are ",(0,s.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["First half of bits (",(0,s.jsx)(n.code,{children:"0100"}),") consists of 2 pairs (",(0,s.jsx)(n.code,{children:"01"})," and ",(0,s.jsx)(n.code,{children:"00"}),") which we swap\n(",(0,s.jsx)(n.code,{children:"01 ~> 10"})," and ",(0,s.jsx)(n.code,{children:"00 ~> 00"}),"). That way we get ",(0,s.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"That half is used for xor with the other 4 bits:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:" 1000 // second half\nXOR 1000 // first half after 2nd step\n--------\n 0000\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Now we combine both halves (first one is ",(0,s.jsx)(n.code,{children:"1000"}),", which we got from the 2nd step\nand second one is ",(0,s.jsx)(n.code,{children:"0000"}),", which we got from the 3rd step) and get ",(0,s.jsx)(n.code,{children:"10000000"}),",\nwhich is encrypted character ",(0,s.jsx)(n.code,{children:"H"})," using this method."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In case of decryption, reverse those steps."}),"\n",(0,s.jsx)(n.p,{children:"Your task is to implement functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"unsigned char* bit_encrypt(const char* text)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"char* bit_decrypt(const unsigned char* text)"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'unsigned char* encrypted = bit_encrypt("Hello world!");\n\nfor (int i = 0; i < 12;i++) {\n printf("%x ", encrypted[i]);\n //80 9c 95 95 96 11 bc 96 b9 95 9d 10\n}\n\nif (encrypted != NULL) {\n free(encrypted);\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"task-no-4-all-combined-to-bmp-05-k",children:"Task no. 4: All combined to BMP (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"Authors of the BMP cipher are non-disclosed :)"}),"\n",(0,s.jsx)(n.p,{children:"Create pair of functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"unsigned char* bmp_encrypt(const char* key, const char* text)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"char* bmp_decrypt(const char* key, const unsigned char* text)"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"BMP cipher consists of following steps for encrypting:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Reverse the input string"}),"\n",(0,s.jsx)(n.li,{children:"Use Vigenere on the string you got from step #1"}),"\n",(0,s.jsx)(n.li,{children:"Use bit madness on the string you got from step #2"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"For decrypting, reverse the steps."}),"\n",(0,s.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,s.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,s.jsx)(n.hr,{})]})}function a(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},11151:(e,n,r)=>{r.d(n,{Z:()=>o,a:()=>c});var s=r(67294);const t={},i=s.createContext(t);function c(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f71d1f68.85b5bd29.js b/assets/js/f71d1f68.85b5bd29.js new file mode 100644 index 0000000..dfb193c --- /dev/null +++ b/assets/js/f71d1f68.85b5bd29.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6069],{13068:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var s=t(85893),o=t(11151);const i={title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:new Date("2024-01-28T00:00:00.000Z"),authors:[{key:"mf",title:"a.k.a. passionate language hater"}],tags:["rust","memory safety","cult","hype"],hide_table_of_contents:!1},a=void 0,r={permalink:"/blog/2024/01/28/rust-opinion",editUrl:"https://github.com/mfocko/blog/tree/main/blog/2024-01-28-rust-opinion.md",source:"@site/blog/2024-01-28-rust-opinion.md",title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:"2024-01-28T00:00:00.000Z",formattedDate:"January 28, 2024",tags:[{label:"rust",permalink:"/blog/tags/rust"},{label:"memory safety",permalink:"/blog/tags/memory-safety"},{label:"cult",permalink:"/blog/tags/cult"},{label:"hype",permalink:"/blog/tags/hype"}],readingTime:15.395,hasTruncateMarker:!0,authors:[{name:"Matej Focko",email:"me+blog@mfocko.xyz",title:"a.k.a. passionate language hater",url:"https://gitlab.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mf"}],frontMatter:{title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:"2024-01-28T00:00:00.000Z",authors:[{key:"mf",title:"a.k.a. passionate language hater"}],tags:["rust","memory safety","cult","hype"],hide_table_of_contents:!1},unlisted:!1,nextItem:{title:"How can Copr help with broken dependencies",permalink:"/blog/2023/08/02/copr"}},l={authorsImageUrls:[void 0]},h=[{value:"Memory safety",id:"memory-safety",level:2},{value:"Compiler",id:"compiler",level:3},{value:"Enforcing the safety",id:"enforcing-the-safety",level:3},{value:"Consequences",id:"consequences",level:3},{value:"Development & design",id:"development--design",level:2},{value:"Fast development cycle",id:"fast-development-cycle",level:3},{value:"RFCs",id:"rfcs",level:3},{value:"Community and hype train",id:"community-and-hype-train",level:2},{value:"Rust in Linux",id:"rust-in-linux",level:3},{value:"Packaging",id:"packaging",level:2},{value:"Likes",id:"likes",level:2},{value:"Workflow and toolchain",id:"workflow-and-toolchain",level:3},{value:"Standard library",id:"standard-library",level:3},{value:"unsafe",id:"unsafe",level:3},{value:"Traits",id:"traits",level:3},{value:"Influence of functional paradigm",id:"influence-of-functional-paradigm",level:3},{value:"Macros",id:"macros",level:3},{value:"Summary",id:"summary",level:2}];function c(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",ol:"ol",p:"p",pre:"pre",section:"section",strong:"strong",sup:"sup",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Rust has become a rather popular language these days. I've managed to get my\nhands dirty with it during ",(0,s.jsx)(n.em,{children:(0,s.jsx)(n.a,{href:"https://adventofcode.com",children:"Advent of Code"})})," \u201822 and partially \u201823. I've also\nused it for few rounds of ",(0,s.jsx)(n.em,{children:(0,s.jsx)(n.a,{href:"https://codeforces.com",children:"Codeforces"})})," and I have to try very hard to maintain\nsome variety of languages for LeetCode challenges along with the Rust. I'll\ndisclaim up front that I won't be only positive, since this post is a result of\nmultiple discussions about Rust and I stand by\n",(0,s.jsx)(n.em,{children:"\u201cAll that glitters is not gold\u201d"}),", so if you can't stand your favorite language\nbeing criticized in any way, don't even proceed. ","\ud83d\ude09"]}),"\n",(0,s.jsx)(n.h2,{id:"memory-safety",children:"Memory safety"}),"\n",(0,s.jsx)(n.p,{children:"I'll start by kicking the biggest benefit of the language, the memory safety.\nLet's be honest here, majority of the checks rely on the static analysis, cause\nyou can't do anything else during the compile-time, right? Therefore we can\nbasically say that we are relying on the compiler to \u201csolve\u201d all of our issues."}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:["I'm not doubting the fact that compiler can prevent ",(0,s.jsx)(n.strong,{children:"a lot"})," of the memory\nerrors, I'm just saying it's not realistic to cover ",(0,s.jsx)(n.strong,{children:"everything"}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"compiler",children:"Compiler"}),"\n",(0,s.jsxs)(n.p,{children:["I guess we can safely",(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-2-e21849",id:"user-content-fnref-2-e21849","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})})," agree on the fact that we 100% rely on the compiler to\n",(0,s.jsx)(n.em,{children:"have our back"}),". Is the compiler bug-free? I doubt it. This is not meant in an\noffensive way to the Rust compiler developers, but we need to be realistic here.\nIt's a compiler, even older and larger projects like ",(0,s.jsx)(n.em,{children:"gcc"})," or ",(0,s.jsx)(n.em,{children:"llvm"})," can't avoid\nbugs to appear."]}),"\n",(0,s.jsxs)(n.p,{children:["When I was trying out Rust for some of the LeetCode challenges I've stumbled\nupon the following warning:\n",(0,s.jsx)(n.img,{src:"https://i.imgur.com/NfPLF6o.png",alt:"Example of a compiler bug"})]}),"\n",(0,s.jsxs)(n.admonition,{type:"danger",children:[(0,s.jsx)(n.mdxAdmonitionTitle,{children:(0,s.jsx)(n.a,{href:"https://github.com/rust-lang/rust/issues/59159",children:"Issue"})}),(0,s.jsx)(n.p,{children:"The issue here comes from the fact that we have 2 simultaneous references to the\nsame memory (one is mutable and one immutable). If you cannot think of any way\nthis can break, I'll give you a rather simple example from C++ where this could\ncause an issue."}),(0,s.jsx)(n.p,{children:"Imagine a function that has some complex object and also calls a coroutine which\nutilizes read-only reference to that object. When the coroutine suspends, the\ncaller can modify the object. This can break the integrity of data read by the\ncoroutine."}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Yes, this ",(0,s.jsx)(n.strong,{children:"can"})," cause a memory error."]}),"\n",(0,s.jsxs)(n.li,{children:["Yes, this ",(0,s.jsx)(n.strong,{children:"hasn't"})," been handled until someone noticed it."]}),"\n"]}),(0,s.jsx)(n.p,{children:"Fixing this bug is not backwards compatible, cause you're covering a case that\nhasn't been covered before."})]}),"\n",(0,s.jsx)(n.h3,{id:"enforcing-the-safety",children:"Enforcing the safety"}),"\n",(0,s.jsxs)(n.p,{children:["One of the ways Rust enforces the safety is by restricting what you can do, like\nthe example above. Aforementioned issue ",(0,s.jsx)(n.em,{children:"can"})," happen, but ",(0,s.jsx)(n.strong,{children:"doesn't have to"}),".\nRule of the thumb in the Rust compiler is to ",(0,s.jsx)(n.em,{children:"\u201cblock\u201d"})," anything that can be an\nissue, static analysis can't do much more, it cannot decide whether it's safe to\ndo it or not."]}),"\n",(0,s.jsxs)(n.p,{children:["Satisfying the Rust compiler is sometimes a brutal pain in the ass, because you\ncannot do things like you're used to, you need to work around them ",(0,s.jsx)(n.em,{children:"somehow"}),"."]}),"\n",(0,s.jsxs)(n.admonition,{type:"tip",children:[(0,s.jsxs)(n.p,{children:["Key difference between Rust and C or C++ lies in the fact that Rust chooses to\n",(0,s.jsx)(n.em,{children:"ban"})," all \u201cpotentially offensive\u201d actions, C and C++ ",(0,s.jsx)(n.em,{children:"relies"})," on ",(0,s.jsx)(n.strong,{children:"you"})," to be\nsure it's safe to do."]}),(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:"https://i.imgur.com/0vbkYPp.png",alt:"C++ v. Rust"})})]}),"\n",(0,s.jsx)(n.h3,{id:"consequences",children:"Consequences"}),"\n",(0,s.jsx)(n.p,{children:"Where are we heading with this approach of \u201cif it compiles, it runs\u201d though?\nIn this aspect I have a rather similar opinion as with regards to the ChatGPT\nand its derivatives."}),"\n",(0,s.jsxs)(n.p,{children:["If you teach people to 100% depend on the compiler, they will do it, cause it's\n",(0,s.jsx)(n.em,{children:"easy"}),". All you need to do is make the compiler ",(0,s.jsx)(n.em,{children:"shut up"}),(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-3-e21849",id:"user-content-fnref-3-e21849","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"2"})}),". Giving up the\n",(0,s.jsx)(n.em,{children:"intellectual masturbation"})," about the memory safety will make you lose your edge\nover the time. When we get to the point of everyone being in the mindset\nmentioned above, who's going to maintain the compiler? This is the place where\nyou ",(0,s.jsx)(n.strong,{children:"need to"})," think about the memory safety and furthermore in a much more\ngeneral way than in your own projects, because it is the thing that everyone\n",(0,s.jsx)(n.em,{children:"blindly believes in"})," in the end."]}),"\n",(0,s.jsxs)(n.p,{children:["I'm not saying that everyone should give up Rust and think about their memory\nmanagement and potential memory issues. I'm just saying that going the easy way\nwill make people ",(0,s.jsx)(n.em,{children:"dull"})," and they should think about it anyways, that's how the\nissue above has been discovered. If everyone walked past and didn't think about\nit, no one would discover this issue till it bit them hard."]}),"\n",(0,s.jsxs)(n.admonition,{title:"Standard library",type:"tip",children:[(0,s.jsxs)(n.p,{children:["Even the standard library is littered with ",(0,s.jsx)(n.code,{children:"unsafe"})," blocks that are prefixed\nwith comments in style:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rs",children:"// SAFETY: \u2026\n"})}),(0,s.jsxs)(n.p,{children:["The fact that the ",(0,s.jsx)(n.em,{children:"casual"})," Rust dev doesn't have to think much about safety,\ncause the compiler has their back, doesn't mean that the Rust compiler dev\ndoesn't either."]}),(0,s.jsxs)(n.p,{children:["I gotta admit that I adopted this concept in other languages (even in Python),\ncause you can encounter situations where it doesn't have to be clear ",(0,s.jsx)(n.em,{children:"why"})," you\ncan do ",(0,s.jsx)(n.em,{children:"what"})," you're doing."]})]}),"\n",(0,s.jsx)(n.h2,{id:"development--design",children:"Development & design"}),"\n",(0,s.jsx)(n.p,{children:"Development of Rust is\u2026 very fast. One positive is that they're trying to be as\nbackward compatible as possible at least by verifying against all the published\ncrates in the process. Of course, you cannot be backward compatible about fixing\nthe bugs that have been found, but such is life."}),"\n",(0,s.jsx)(n.h3,{id:"fast-development-cycle",children:"Fast development cycle"}),"\n",(0,s.jsx)(n.p,{children:"One of the negatives of the fast development cycle is the fact that they're\nusing the latest features already in the next release of the Rust. Yes, it is\nsomething that you can use for verifying and testing your own changes, but at\nthe same time it places a requirement of the latest release to compile the next\none."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["If you check ",(0,s.jsx)(n.code,{children:"gcc"})," for example, they have a requirement of minimal version of\ncompiler that you need for the build. Though gcc's requirement is not so ",(0,s.jsx)(n.em,{children:"needy"}),"\nas the Rust one."]})}),"\n",(0,s.jsx)(n.p,{children:"One of the other negatives is the introduction of bugs. If you're pushing\nchanges, somewhat mindlessly, at such a fast pace, it is inevitable to introduce\na bunch bugs in the process. Checking the GitHub issue tracker with"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"is:issue is:open label:C-bug label:T-compiler\n"})}),"\n",(0,s.jsxs)(n.p,{children:["yields ",(0,s.jsx)(n.strong,{children:"2,224"})," open issues at the time of writing this post."]}),"\n",(0,s.jsx)(n.h3,{id:"rfcs",children:"RFCs"}),"\n",(0,s.jsxs)(n.p,{children:["You can find ",(0,s.jsx)(n.strong,{children:"a lot"})," of RFCs for the Rust. Some of them are more questionable\nthan the others. Fun thing is that a lot of them make it to the nightly builds,\nso they can be tested and polished off. Even the questionable ones\u2026 I'll leave\nfew examples for a better understanding."]}),"\n",(0,s.jsxs)(n.p,{children:["One of such features is the ",(0,s.jsx)(n.code,{children:"do yeet"})," expression:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:"#![feature(yeet_expr)]\n\nfn foo() -> Result {\n do yeet 4;\n}\nassert_eq!(foo(), Err(4));\n\nfn bar() -> Option {\n do yeet;\n}\nassert_eq!(bar(), None);\n"})}),"\n",(0,s.jsxs)(n.p,{children:["It allows you to \u201cyeet\u201d the errors out of the functions that return ",(0,s.jsx)(n.code,{children:"Result"})," or\n",(0,s.jsx)(n.code,{children:"Option"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/rust-lang/rfcs/pull/3503",children:"One"})," of the more recent ones is\nthe ability to include Cargo manifests into the sources, so you can do something\nlike:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:'#!/usr/bin/env cargo\n---\n[dependencies]\nclap = { version = "4.2", features = ["derive"] }\n---\n\nuse clap::Parser;\n\n#[derive(Parser, Debug)]\n#[clap(version)]\nstruct Args {\n #[clap(short, long, help = "Path to config")]\n config: Option,\n}\n\nfn main() {\n let args = Args::parse();\n println!("{:?}", args);\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"I would say you can get almost anything into the language\u2026"}),"\n",(0,s.jsx)(n.h2,{id:"community-and-hype-train",children:"Community and hype train"}),"\n",(0,s.jsxs)(n.p,{children:["Rust community is a rather unique thing. A lot of people will hate me for this,\nbut I can't help, but to compare them to ",(0,s.jsx)(n.em,{children:"militant vegans"}),". I'll go through some\nof the things related to it, so I can support my opinion at least."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Rust is the best language."})," It is not. There is no best language, each has its\nown positives and negatives, you need to choose the language that's ",(0,s.jsx)(n.strong,{children:"the most"}),"\n",(0,s.jsx)(n.strong,{children:"suitable for your use case"}),". There are areas where Rust excels, though I have\nto admit it's very close to being a universal hammer regardless of how suitable\nit is. There is a very steep learning curve to it, beginnings in Rust are very\npainful."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Rewrite everything in Rust."})," Just no. There are multiple feedbacks on doing\nrewrites, it is very common to fix ",(0,s.jsx)(n.em,{children:"N"})," bugs with a rewrite while introducing\n",(0,s.jsx)(n.em,{children:"N + 1"})," other bugs in the process. It doesn't solve anything unless there are\nsome strong reasons to go with it. Majority of such suggested rewrites don't\nhave those reasons though."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Language \u2039x\u203a is bad, though in Rust\u2026"})," Cherry-picking one specific pain point of\none language and reflecting how it is better in other language can go both ways.\nFor example it is rather easy to pick the limitations imposed by Rust compiler\nand show how it's possible in other languages ","\ud83e\udd37\u200d\u2642\ufe0f"]}),"\n",(0,s.jsx)(n.p,{children:"I don't mind any of those opinions, you're free to have them, as long as you\ndon't rub them in my face which is not the usual case\u2026 This experience makes it\njust worse for me, part of this post may be also influenced by this fact."}),"\n",(0,s.jsx)(n.h3,{id:"rust-in-linux",children:"Rust in Linux"}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsx)(n.p,{children:"As someone who has seen the way Linux kernel is built in the RHEL ecosystem, how\ncomplex the whole thing is and how much resources you need to proceed, I have\nvery strong opinions on this topic."})}),"\n",(0,s.jsx)(n.p,{children:"It took years of work to even \u201cincorporate\u201d Rust into the Linux codebase, just\nto get the \u201cHello World!\u201d. I don't have anything against the idea of writing\ndrivers in the Rust, I bet it can catch a lot of common mistakes, but still\nintroducing Rust to the kernel is another step to enlarge the monster."}),"\n",(0,s.jsxs)(n.p,{children:["I have to admit though that the ",(0,s.jsx)(n.em,{children:"Apple GPU"})," driver for Linux written in Rust is\nquite impressive. Apart from that there are not so many benefits, yet\u2026"]}),"\n",(0,s.jsx)(n.h2,{id:"packaging",children:"Packaging"}),"\n",(0,s.jsx)(n.p,{children:"I'll divide the packaging into the packaging of the language itself and the\nprograms written in Rust."}),"\n",(0,s.jsxs)(n.p,{children:["Let's start with the ",(0,s.jsx)(n.code,{children:"cargo"})," itself though. Package managers of the languages\nusually get a lot of hate (you can take ",(0,s.jsx)(n.code,{children:"npm"})," or ",(0,s.jsx)(n.code,{children:"pip"})," as examples",(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-1-e21849",id:"user-content-fnref-1-e21849","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"3"})}),"). If\nyou've ever tried out Rust, I bet you already know where I'm going with this.\nYes, I mean the compilation times, or even Cargo downloading ",(0,s.jsx)(n.em,{children:"whole"})," index of\ncrates just so you can update that one dependency (and 3 millions of indirect\ndeps). When I was doing AoC \u201822 in Rust, I've set up ",(0,s.jsx)(n.code,{children:"sccache"})," right away on the\nfirst day."]}),"\n",(0,s.jsxs)(n.p,{children:["Let's move to the packaging of the Rust itself, it's tedious. Rust has a very\nfast development cycle and doesn't even try to make the builds backward\ncompatible. If there is a new release of Rust, there is a very high chance that\nyou cannot build that release with anything other than ",(0,s.jsx)(n.strong,{children:"the latest"})," Rust\nrelease. If you have ever touched the packaging, you know that this is something\nthat can cause a lot of problems, cause you need the second-to-latest version to\ncompile the latest version, don't forget that this applies inductively\u2026 People\nrunning ",(0,s.jsx)(n.em,{children:"Gentoo"})," could tell you a lot about this."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Compiling the compilers takes usually more time than compiling the kernel\nitself\u2026"})}),"\n",(0,s.jsxs)(n.p,{children:["I cannot speak about packaging of Rust programs in other than RHEL-based\ndistros, though I can speak about RHEL ecosystem. Fedora packaging guidelines\nspecify that you need to build each and every dependency of the program\nseparately. I wanted to try out ",(0,s.jsx)(n.em,{children:"AlmaLinux"})," and install Alacritty there and I\nfailed miserably. The solution that worked, consisted of ignoring the packaging\nguidelines, running ",(0,s.jsx)(n.code,{children:"cargo build"})," and consuming the binaries afterwards.\nDependencies of the Rust programs are of a similar nature as JS dependencies."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["I'm tipping my fedora",(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-2-e21849",id:"user-content-fnref-2-e21849-2","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})})," in the general direction of the maintainers of Rust\npackages in RHEL ecosystem. I wouldn't be able to do this without losing my\nsanity."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"likes",children:"Likes"}),"\n",(0,s.jsxs)(n.p,{children:["If you've come all the way here and you're a Rustacean, I believe I've managed\nto get your blood boiling, so it's time to finish this off by stuff I like about\nRust. I doubt I will be able to cover everything, but I can try at least. You\nhave to admit it's much easier to remember the bad stuff as opposed to the good.\n","\ud83d\ude09"]}),"\n",(0,s.jsx)(n.h3,{id:"workflow-and-toolchain",children:"Workflow and toolchain"}),"\n",(0,s.jsxs)(n.p,{children:["I prefered using Rust for the ",(0,s.jsx)(n.em,{children:"Advent of Code"})," and ",(0,s.jsx)(n.em,{children:"Codeforces"})," as it provides\na rather easy way to test the solutions before running them with the challenge\ninput (or test runner). I can give an example from the ",(0,s.jsx)(n.em,{children:"Advent of Code"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:"use aoc_2023::*;\n\ntype Output1 = i32;\ntype Output2 = Output1;\n\nstruct DayXX {}\nimpl Solution for DayXX {\n fn new>(pathname: P) -> Self {\n let lines: Vec = file_to_lines(pathname);\n\n todo!()\n }\n\n fn part_1(&mut self) -> Output1 {\n todo!()\n }\n\n fn part_2(&mut self) -> Output2 {\n todo!()\n }\n}\n\nfn main() -> Result<()> {\n DayXX::main()\n}\n\ntest_sample!(day_XX, DayXX, 42, 69);\n"})}),"\n",(0,s.jsx)(n.p,{children:"This was the skeleton I've used and the macro at the end is my own creation that\nexpands to:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:"#[cfg(test)]\nmod day_XX {\n use super::*;\n\n #[test]\n fn part_1() {\n let path = DayXX::get_sample(1);\n let mut day = DayXX::new(path);\n assert_eq!(day.part_1(), 42);\n }\n\n #[test]\n fn part_2() {\n let path = DayXX::get_sample(2);\n let mut day = DayXX::new(path);\n assert_eq!(day.part_2(), 69);\n }\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When you're solving the problem, all you need to do is switch between\n",(0,s.jsx)(n.code,{children:"cargo test"})," and ",(0,s.jsx)(n.code,{children:"cargo run"})," to check the answer to either sample or the\nchallenge input itself."]}),"\n",(0,s.jsxs)(n.p,{children:["Introduce ",(0,s.jsx)(n.a,{href:"https://dystroy.org/bacon/",children:"bacon"})," and it gets even better. Bacon is a CLI tool that wraps around\nthe ",(0,s.jsx)(n.code,{children:"cargo"})," and allows you to check, run, lint or run tests on each file save.\nIt's a very pleasant thing for a so-called ",(0,s.jsx)(n.em,{children:"compiler-assisted"})," development."]}),"\n",(0,s.jsxs)(n.p,{children:["Speaking of linting from within the bacon, you cannot leave out the ",(0,s.jsx)(n.a,{href:"https://github.com/rust-lang/rust-clippy",children:"clippy"}),".\nNot only it can whip your ass because of errors, but it can also produce a lot\nof helpful suggestions, for example passing slices by borrow instead of\nborrowing the ",(0,s.jsx)(n.code,{children:"Vec"})," itself when you don't need it."]}),"\n",(0,s.jsx)(n.h3,{id:"standard-library",children:"Standard library"}),"\n",(0,s.jsxs)(n.p,{children:["There's ",(0,s.jsx)(n.strong,{children:"a lot"})," included in the standard library. It almost feels like you\nhave all you need",(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-4-e21849",id:"user-content-fnref-4-e21849","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"4"})}),". I like placeholders (like ",(0,s.jsx)(n.code,{children:"todo!()"}),", ",(0,s.jsx)(n.code,{children:"unreachable!()"}),",\n",(0,s.jsx)(n.code,{children:"unimplemented!()"}),") to the extent of\n",(0,s.jsx)(n.a,{href:"/cpp/exceptions-and-raii/placeholders",children:"implementing"})," them as exceptions in C++."]}),"\n",(0,s.jsx)(n.p,{children:"You can find almost anything. Though you can also hit some very weird issues\nwith some of the nuances of the type system."}),"\n",(0,s.jsx)(n.h3,{id:"unsafe",children:(0,s.jsx)(n.code,{children:"unsafe"})}),"\n",(0,s.jsxs)(n.p,{children:["This might be something that people like to avoid as much as possible. However I\nthink that forming a habit of commenting posibly unsafe operations in ",(0,s.jsx)(n.strong,{children:"any"}),"\nlanguage is a good habit, as I've mentioned above. You should be able to argue\nwhy you can do something safely, even if the compiler is not kicking your ass\nbecause of it."]}),"\n",(0,s.jsx)(n.p,{children:"Excerpt of such comment from work:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-py",children:"# SAFETY: Taking first package instead of specific package should be\n# safe, since we have put a requirement on \xbbone\xab \u2039upstream_project_url\u203a\n# per Packit config, i.e. even if we're dealing with a monorepo, there\n# is only \xbbone\xab upstream. If there is one upstream, there is only one\n# set of GPG keys that can be allowed.\nreturn self.downstream_config.packages[\n self.downstream_config._first_package\n].allowed_gpg_keys\n"})}),"\n",(0,s.jsx)(n.h3,{id:"traits",children:"Traits"}),"\n",(0,s.jsxs)(n.p,{children:["One of the other things I like are the traits. They are more restrictive than\ntemplates or concepts in C++, but they're doing their job pretty good. If you\nare building library and require multiple traits to be satisfied it means a lot\nof copy-paste, but that's soon to be fixed by the ",(0,s.jsx)(n.a,{href:"https://github.com/rust-lang/rfcs/blob/master/text/1733-trait-alias.md",children:"trait aliases"}),"."]}),"\n",(0,s.jsxs)(n.admonition,{title:"Comparing to other languages",type:"tip",children:[(0,s.jsxs)(n.p,{children:["On Wikipedia I've seen trait being defined as a more restrictive type class as\nyou may know it from the Haskell for example. C++ isn't behind either with its\n",(0,s.jsx)(n.em,{children:"constraints and concepts"}),". I would say that we can order them in the following\norder based on the complexity they can express:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"Rust's trait < Haskell's type class < C++'s concept\n"})})]}),"\n",(0,s.jsxs)(n.p,{children:["You can also hit some issues, like me when trying to support conversions between\nunderlying numeric types of a 2D vectors or support for using an operator from\nboth sides (I couldn't get ",(0,s.jsx)(n.code,{children:"c * u"})," to work in the same way as ",(0,s.jsx)(n.code,{children:"u * c"})," because\nthe first one requires you to implement the trait of a built-in type)."]}),"\n",(0,s.jsxs)(n.admonition,{title:"Implementation",type:"warning",children:[(0,s.jsx)(n.p,{children:"Implementing traits lies in"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:"impl SomeTrait for SomeStruct {\n // implementation goes here\n}\n"})}),(0,s.jsxs)(n.p,{children:["One of the things I ",(0,s.jsx)(n.strong,{children:"would love to"})," see is being able to define the helper\nfunctions within the same block. As of now, the only things allowed are the ones\nthat are required by the trait, which in the end results in a randomly lying\nfunctions around (or in a implementation of the structure itself). I don't like\nthis mess at all\u2026"]})]}),"\n",(0,s.jsx)(n.h3,{id:"influence-of-functional-paradigm",children:"Influence of functional paradigm"}),"\n",(0,s.jsxs)(n.p,{children:["You can see a big influence of the functional paradigm. Not only in iterators,\nbut also in the other parts of the language. For example I prefer ",(0,s.jsx)(n.code,{children:"Option"})," or\n",(0,s.jsx)(n.code,{children:"Result"})," to ",(0,s.jsx)(n.code,{children:"null"}),"s and exceptions. Pattern matching together with\ncompiler both enforces handling of the errors and rather user-friendly way of\ndoing it."]}),"\n",(0,s.jsxs)(n.p,{children:["Not to mention ",(0,s.jsx)(n.code,{children:".and_then()"})," and such. However spending most of the time with\nthe AoC you get pretty annoyed of the repetitive ",(0,s.jsx)(n.code,{children:".unwrap()"})," during parsing,\nsince you are guaranteed correct input."]}),"\n",(0,s.jsx)(n.h3,{id:"macros",children:"Macros"}),"\n",(0,s.jsx)(n.p,{children:"Macros are a very strong pro of the Rust. And no, we're not going to talk about\nthe procedural macros\u2026"}),"\n",(0,s.jsx)(n.p,{children:"As I've shown above I've managed to \u201ctame\u201d a lot of copy-paste in the tests for\nthe AoC by utilizing a macro that generated a very basic template for the tests."}),"\n",(0,s.jsxs)(n.p,{children:["As I have mentioned the traits above, I cannot forget to give props to ",(0,s.jsx)(n.code,{children:"derive"}),"\nmacro that allows you to \u201cdeduce\u201d the default implementation. It is very helpful\nfor a tedious tasks like implementing ",(0,s.jsx)(n.code,{children:"Debug"})," (for printing out the structures)\nor comparisons, though with the comparisons you need to be careful about the\ndefault implementation, it has already bitten me once or twice."]}),"\n",(0,s.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,s.jsxs)(n.p,{children:["Overall there are many things about the Rust I like and would love to see them\nimplemented in other languages. However there are also many things I don't like.\nNothing is ",(0,s.jsx)(n.strong,{children:"exclusively"})," black and white."]}),"\n",(0,s.jsxs)(n.section,{"data-footnotes":!0,className:"footnotes",children:[(0,s.jsx)(n.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{id:"user-content-fn-2-e21849",children:["\n",(0,s.jsxs)(n.p,{children:["pun intended ",(0,s.jsx)(n.a,{href:"#user-content-fnref-2-e21849","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})," ",(0,s.jsxs)(n.a,{href:"#user-content-fnref-2-e21849-2","data-footnote-backref":"","aria-label":"Back to reference 1-2",className:"data-footnote-backref",children:["\u21a9",(0,s.jsx)(n.sup,{children:"2"})]})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{id:"user-content-fn-3-e21849",children:["\n",(0,s.jsxs)(n.p,{children:["It's not that easy with the Rust compiler, but OK\u2026 ",(0,s.jsx)(n.a,{href:"#user-content-fnref-3-e21849","data-footnote-backref":"","aria-label":"Back to reference 2",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{id:"user-content-fn-1-e21849",children:["\n",(0,s.jsxs)(n.p,{children:["not to even mention multiple different packaging standards Python has, which\nis borderline ",(0,s.jsx)(n.a,{href:"https://xkcd.com/927/",children:"https://xkcd.com/927/"})," ",(0,s.jsx)(n.a,{href:"#user-content-fnref-1-e21849","data-footnote-backref":"","aria-label":"Back to reference 3",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{id:"user-content-fn-4-e21849",children:["\n",(0,s.jsxs)(n.p,{children:["unlike Python where there's whole universe in the language itself, yet there\nare essential things not present\u2026 ",(0,s.jsx)(n.a,{href:"#user-content-fnref-4-e21849","data-footnote-backref":"","aria-label":"Back to reference 4",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>r,a:()=>a});var s=t(67294);const o={},i=s.createContext(o);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f71d1f68.da144fe6.js b/assets/js/f71d1f68.da144fe6.js deleted file mode 100644 index 926abe0..0000000 --- a/assets/js/f71d1f68.da144fe6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6069],{13068:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>r,toc:()=>h});var s=t(85893),o=t(11151);const i={title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:new Date("2024-01-28T00:00:00.000Z"),authors:[{key:"mf",title:"a.k.a. passionate language hater"}],tags:["rust","memory safety","cult","hype"],hide_table_of_contents:!1},a=void 0,r={permalink:"/blog/2024/01/28/rust-opinion",editUrl:"https://github.com/mfocko/blog/tree/main/blog/2024-01-28-rust-opinion.md",source:"@site/blog/2024-01-28-rust-opinion.md",title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:"2024-01-28T00:00:00.000Z",formattedDate:"January 28, 2024",tags:[{label:"rust",permalink:"/blog/tags/rust"},{label:"memory safety",permalink:"/blog/tags/memory-safety"},{label:"cult",permalink:"/blog/tags/cult"},{label:"hype",permalink:"/blog/tags/hype"}],readingTime:15.395,hasTruncateMarker:!0,authors:[{name:"Matej Focko",email:"me+blog@mfocko.xyz",title:"a.k.a. passionate language hater",url:"https://gitlab.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mf"}],frontMatter:{title:"Mixed feelings on Rust",description:"Discussing my mixed feelings about the Rust language.\n",date:"2024-01-28T00:00:00.000Z",authors:[{key:"mf",title:"a.k.a. passionate language hater"}],tags:["rust","memory safety","cult","hype"],hide_table_of_contents:!1},unlisted:!1,nextItem:{title:"How can Copr help with broken dependencies",permalink:"/blog/2023/08/02/copr"}},l={authorsImageUrls:[void 0]},h=[{value:"Memory safety",id:"memory-safety",level:2},{value:"Compiler",id:"compiler",level:3},{value:"Enforcing the safety",id:"enforcing-the-safety",level:3},{value:"Consequences",id:"consequences",level:3},{value:"Development & design",id:"development--design",level:2},{value:"Fast development cycle",id:"fast-development-cycle",level:3},{value:"RFCs",id:"rfcs",level:3},{value:"Community and hype train",id:"community-and-hype-train",level:2},{value:"Rust in Linux",id:"rust-in-linux",level:3},{value:"Packaging",id:"packaging",level:2},{value:"Likes",id:"likes",level:2},{value:"Workflow and toolchain",id:"workflow-and-toolchain",level:3},{value:"Standard library",id:"standard-library",level:3},{value:"unsafe",id:"unsafe",level:3},{value:"Traits",id:"traits",level:3},{value:"Influence of functional paradigm",id:"influence-of-functional-paradigm",level:3},{value:"Macros",id:"macros",level:3},{value:"Summary",id:"summary",level:2}];function c(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",ol:"ol",p:"p",pre:"pre",section:"section",strong:"strong",sup:"sup",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Rust has become a rather popular language these days. I've managed to get my\nhands dirty with it during ",(0,s.jsx)(n.em,{children:(0,s.jsx)(n.a,{href:"https://adventofcode.com",children:"Advent of Code"})})," \u201822 and partially \u201823. I've also\nused it for few rounds of ",(0,s.jsx)(n.em,{children:(0,s.jsx)(n.a,{href:"https://codeforces.com",children:"Codeforces"})})," and I have to try very hard to maintain\nsome variety of languages for LeetCode challenges along with the Rust. I'll\ndisclaim up front that I won't be only positive, since this post is a result of\nmultiple discussions about Rust and I stand behind\n",(0,s.jsx)(n.em,{children:"\u201cAll that glitters is not gold\u201d"}),", so if you can't stand your favorite language\nbeing criticized in any way, don't even proceed. ","\ud83d\ude09"]}),"\n",(0,s.jsx)(n.h2,{id:"memory-safety",children:"Memory safety"}),"\n",(0,s.jsx)(n.p,{children:"I'll start by kicking the biggest benefit of the language, the memory safety.\nLet's be honest here, majority of the checks rely on the static analysis, cause\nyou can't do anything else during the compile-time, right? Therefore we can\nbasically say that we are relying on the compiler to \u201csolve\u201d all of our issues."}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:["I'm not doubting the fact that compiler can prevent ",(0,s.jsx)(n.strong,{children:"a lot"})," of the memory\nerrors, I'm just saying it's not realistic to cover ",(0,s.jsx)(n.strong,{children:"everything"}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"compiler",children:"Compiler"}),"\n",(0,s.jsxs)(n.p,{children:["I guess we can safely",(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-2-e21849",id:"user-content-fnref-2-e21849","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})})," agree on the fact that we 100% rely on the compiler to\n",(0,s.jsx)(n.em,{children:"have our back"}),". Is the compiler bug-free? I doubt it. This is not meant in an\noffensive way to the Rust compiler developers, but we need to be realistic here.\nIt's a compiler, even older and larger projects like ",(0,s.jsx)(n.em,{children:"gcc"})," or ",(0,s.jsx)(n.em,{children:"llvm"})," can't avoid\nbugs to appear."]}),"\n",(0,s.jsxs)(n.p,{children:["When I was trying out Rust for some of the LeetCode challenges I've stumbled\nupon the following warning:\n",(0,s.jsx)(n.img,{src:"https://i.imgur.com/NfPLF6o.png",alt:"Example of a compiler bug"})]}),"\n",(0,s.jsxs)(n.admonition,{type:"danger",children:[(0,s.jsx)(n.mdxAdmonitionTitle,{children:(0,s.jsx)(n.a,{href:"https://github.com/rust-lang/rust/issues/59159",children:"Issue"})}),(0,s.jsx)(n.p,{children:"The issue here comes from the fact that we have 2 simultaneous references to the\nsame memory (one is mutable and one immutable). If you cannot think of any way\nthis can break, I'll give you a rather simple example from C++ where this could\ncause an issue."}),(0,s.jsx)(n.p,{children:"Imagine a function that has some complex object and also calls a coroutine which\nutilizes read-only reference to that object. When the coroutine suspends, the\ncaller can modify the object. This can break the integrity of data read by the\ncoroutine."}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Yes, this ",(0,s.jsx)(n.strong,{children:"can"})," cause a memory error."]}),"\n",(0,s.jsxs)(n.li,{children:["Yes, this ",(0,s.jsx)(n.strong,{children:"hasn't"})," been handled until someone noticed it."]}),"\n"]}),(0,s.jsx)(n.p,{children:"Fixing this bug is not backwards compatible, cause you're covering a case that\nhasn't been covered before."})]}),"\n",(0,s.jsx)(n.h3,{id:"enforcing-the-safety",children:"Enforcing the safety"}),"\n",(0,s.jsxs)(n.p,{children:["One of the ways Rust enforces the safety is by restricting what you can do, like\nthe example above. Aforementioned issue ",(0,s.jsx)(n.em,{children:"can"})," happen, but ",(0,s.jsx)(n.strong,{children:"doesn't have to"}),".\nRule of the thumb in the Rust compiler is to ",(0,s.jsx)(n.em,{children:"\u201cblock\u201d"})," anything that can be an\nissue, static analysis can't do much more, it cannot decide whether it's safe to\ndo it or not."]}),"\n",(0,s.jsxs)(n.p,{children:["Satisfying the Rust compiler is sometimes a brutal pain in the ass, because you\ncannot do things like you're used to, you need to work around them ",(0,s.jsx)(n.em,{children:"somehow"}),"."]}),"\n",(0,s.jsxs)(n.admonition,{type:"tip",children:[(0,s.jsxs)(n.p,{children:["Key difference between Rust and C or C++ lies in the fact that Rust chooses to\n",(0,s.jsx)(n.em,{children:"ban"})," all \u201cpotentially offensive\u201d actions, C and C++ ",(0,s.jsx)(n.em,{children:"relies"})," on ",(0,s.jsx)(n.strong,{children:"you"})," to be\nsure it's safe to do."]}),(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:"https://i.imgur.com/0vbkYPp.png",alt:"C++ v. Rust"})})]}),"\n",(0,s.jsx)(n.h3,{id:"consequences",children:"Consequences"}),"\n",(0,s.jsx)(n.p,{children:"Where are we heading with this approach of \u201cif it compiles, it runs\u201d though?\nIn this aspect I have a rather similar opinion as with regards to the ChatGPT\nand its derivatives."}),"\n",(0,s.jsxs)(n.p,{children:["If you teach people to 100% depend on the compiler, they will do it, cause it's\n",(0,s.jsx)(n.em,{children:"easy"}),". All you need to do is make the compiler ",(0,s.jsx)(n.em,{children:"shut up"}),(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-3-e21849",id:"user-content-fnref-3-e21849","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"2"})}),". Giving up the\n",(0,s.jsx)(n.em,{children:"intellectual masturbation"})," about the memory safety will make you lose your edge\nover the time. When we get to the point of everyone being in the mindset\nmentioned above, who's going to maintain the compiler? This is the place where\nyou ",(0,s.jsx)(n.strong,{children:"need to"})," think about the memory safety and furthermore in a much more\ngeneral way than in your own projects, because it is the thing that everyone\n",(0,s.jsx)(n.em,{children:"blindly believes in"})," in the end."]}),"\n",(0,s.jsxs)(n.p,{children:["I'm not saying that everyone should give up Rust and think about their memory\nmanagement and potential memory issues. I'm just saying that going the easy way\nwill make people ",(0,s.jsx)(n.em,{children:"dull"})," and they should think about it anyways, that's how the\nissue above has been discovered. If everyone walked past and didn't think about\nit, no one would discover this issue till it bit them hard."]}),"\n",(0,s.jsxs)(n.admonition,{title:"Standard library",type:"tip",children:[(0,s.jsxs)(n.p,{children:["Even the standard library is littered with ",(0,s.jsx)(n.code,{children:"unsafe"})," blocks that are prefixed\nwith comments in style:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rs",children:"// SAFETY: \u2026\n"})}),(0,s.jsxs)(n.p,{children:["The fact that the ",(0,s.jsx)(n.em,{children:"casual"})," Rust dev doesn't have to think much about safety,\ncause the compiler has their back, doesn't mean that the Rust compiler dev\ndoesn't either."]}),(0,s.jsxs)(n.p,{children:["I gotta admit that I adopted this concept in other languages (even in Python),\ncause you can encounter situations where it doesn't have to be clear ",(0,s.jsx)(n.em,{children:"why"})," you\ncan do ",(0,s.jsx)(n.em,{children:"what"})," you're doing."]})]}),"\n",(0,s.jsx)(n.h2,{id:"development--design",children:"Development & design"}),"\n",(0,s.jsx)(n.p,{children:"Development of Rust is\u2026 very fast. One positive is that they're trying to be as\nbackward compatible as possible at least by verifying against all the published\ncrates in the process. Of course, you cannot be backward compatible about fixing\nthe bugs that have been found, but such is life."}),"\n",(0,s.jsx)(n.h3,{id:"fast-development-cycle",children:"Fast development cycle"}),"\n",(0,s.jsx)(n.p,{children:"One of the negatives of the fast development cycle is the fact that they're\nusing the latest features already in the next release of the Rust. Yes, it is\nsomething that you can use for verifying and testing your own changes, but at\nthe same time it places a requirement of the latest release to compile the next\none."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["If you check ",(0,s.jsx)(n.code,{children:"gcc"})," for example, they have a requirement of minimal version of\ncompiler that you need for the build. Though gcc's requirement is not so ",(0,s.jsx)(n.em,{children:"needy"}),"\nas the Rust one."]})}),"\n",(0,s.jsx)(n.p,{children:"One of the other negatives is the introduction of bugs. If you're pushing\nchanges, somewhat mindlessly, at such a fast pace, it is inevitable to introduce\na bunch bugs in the process. Checking the GitHub issue tracker with"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"is:issue is:open label:C-bug label:T-compiler\n"})}),"\n",(0,s.jsxs)(n.p,{children:["yields ",(0,s.jsx)(n.strong,{children:"2,224"})," open issues at the time of writing this post."]}),"\n",(0,s.jsx)(n.h3,{id:"rfcs",children:"RFCs"}),"\n",(0,s.jsxs)(n.p,{children:["You can find ",(0,s.jsx)(n.strong,{children:"a lot"})," of RFCs for the Rust. Some of them are more questionable\nthan the others. Fun thing is that a lot of them make it to the nightly builds,\nso they can be tested and polished off. Even the questionable ones\u2026 I'll leave\nfew examples for a better understanding."]}),"\n",(0,s.jsxs)(n.p,{children:["One of such features is the ",(0,s.jsx)(n.code,{children:"do yeet"})," expression:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:"#![feature(yeet_expr)]\n\nfn foo() -> Result {\n do yeet 4;\n}\nassert_eq!(foo(), Err(4));\n\nfn bar() -> Option {\n do yeet;\n}\nassert_eq!(bar(), None);\n"})}),"\n",(0,s.jsxs)(n.p,{children:["It allows you to \u201cyeet\u201d the errors out of the functions that return ",(0,s.jsx)(n.code,{children:"Result"})," or\n",(0,s.jsx)(n.code,{children:"Option"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/rust-lang/rfcs/pull/3503",children:"One"})," of the more recent ones is\nthe ability to include Cargo manifests into the sources, so you can do something\nlike:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:'#!/usr/bin/env cargo\n---\n[dependencies]\nclap = { version = "4.2", features = ["derive"] }\n---\n\nuse clap::Parser;\n\n#[derive(Parser, Debug)]\n#[clap(version)]\nstruct Args {\n #[clap(short, long, help = "Path to config")]\n config: Option,\n}\n\nfn main() {\n let args = Args::parse();\n println!("{:?}", args);\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"I would say you can get almost anything into the language\u2026"}),"\n",(0,s.jsx)(n.h2,{id:"community-and-hype-train",children:"Community and hype train"}),"\n",(0,s.jsxs)(n.p,{children:["Rust community is a rather unique thing. A lot of people will hate me for this,\nbut I can't help, but to compare them to ",(0,s.jsx)(n.em,{children:"militant vegans"}),". I'll go through some\nof the things related to it, so I can support my opinion at least."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Rust is the best language."})," It is not. There is no best language, each has its\nown positives and negatives, you need to choose the language that's ",(0,s.jsx)(n.strong,{children:"the most"}),"\n",(0,s.jsx)(n.strong,{children:"suitable for your use case"}),". There are areas where Rust excels, though I have\nto admit it's very close to being a universal hammer regardless of how suitable\nit is. There is a very steep learning curve to it, beginnings in Rust are very\npainful."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Rewrite everything in Rust."})," Just no. There are multiple feedbacks on doing\nrewrites, it is very common to fix ",(0,s.jsx)(n.em,{children:"N"})," bugs with a rewrite while introducing\n",(0,s.jsx)(n.em,{children:"N + 1"})," other bugs in the process. It doesn't solve anything unless there are\nsome strong reasons to go with it. Majority of such suggested rewrites don't\nhave those reasons though."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Language \u2039x\u203a is bad, though in Rust\u2026"})," Cherry-picking one specific pain point of\none language and reflecting how it is better in other language can go both ways.\nFor example it is rather easy to pick the limitations imposed by Rust compiler\nand show how it's possible in other languages ","\ud83e\udd37\u200d\u2642\ufe0f"]}),"\n",(0,s.jsx)(n.p,{children:"I don't mind any of those opinions, you're free to have them, as long as you\ndon't rub them in my face which is not the usual case\u2026 This experience makes it\njust worse for me, part of this post may be also influenced by this fact."}),"\n",(0,s.jsx)(n.h3,{id:"rust-in-linux",children:"Rust in Linux"}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsx)(n.p,{children:"As someone who has seen the way Linux kernel is built in the RHEL ecosystem, how\ncomplex the whole thing is and how much resources you need to proceed, I have\nvery strong opinions on this topic."})}),"\n",(0,s.jsx)(n.p,{children:"It took years of work to even \u201cincorporate\u201d Rust into the Linux codebase, just\nto get the \u201cHello World!\u201d. I don't have anything against the idea of writing\ndrivers in the Rust, I bet it can catch a lot of common mistakes, but still\nintroducing Rust to the kernel is another step to enlarge the monster."}),"\n",(0,s.jsxs)(n.p,{children:["I have to admit though that the ",(0,s.jsx)(n.em,{children:"Apple GPU"})," driver for Linux written in Rust is\nquite impressive. Apart from that there are not so many benefits, yet\u2026"]}),"\n",(0,s.jsx)(n.h2,{id:"packaging",children:"Packaging"}),"\n",(0,s.jsx)(n.p,{children:"I'll divide the packaging into the packaging of the language itself and the\nprograms written in Rust."}),"\n",(0,s.jsxs)(n.p,{children:["Let's start with the ",(0,s.jsx)(n.code,{children:"cargo"})," itself though. Package managers of the languages\nusually get a lot of hate (you can take ",(0,s.jsx)(n.code,{children:"npm"})," or ",(0,s.jsx)(n.code,{children:"pip"})," as examples",(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-1-e21849",id:"user-content-fnref-1-e21849","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"3"})}),"). If\nyou've ever tried out Rust, I bet you already know where I'm going with this.\nYes, I mean the compilation times, or even Cargo downloading ",(0,s.jsx)(n.em,{children:"whole"})," index of\ncrates just so you can update that one dependency (and 3 millions of indirect\ndeps). When I was doing AoC \u201822 in Rust, I've set up ",(0,s.jsx)(n.code,{children:"sccache"})," right away on the\nfirst day."]}),"\n",(0,s.jsxs)(n.p,{children:["Let's move to the packaging of the Rust itself, it's tedious. Rust has a very\nfast development cycle and doesn't even try to make the builds backward\ncompatible. If there is a new release of Rust, there is a very high chance that\nyou cannot build that release with anything other than ",(0,s.jsx)(n.strong,{children:"the latest"})," Rust\nrelease. If you have ever touched the packaging, you know that this is something\nthat can cause a lot of problems, cause you need the second-to-latest version to\ncompile the latest version, don't forget that this applies inductively\u2026 People\nrunning ",(0,s.jsx)(n.em,{children:"Gentoo"})," could tell you a lot about this."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"Compiling the compilers takes usually more time than compiling the kernel\nitself\u2026"})}),"\n",(0,s.jsxs)(n.p,{children:["I cannot speak about packaging of Rust programs in other than RHEL-based\ndistros, though I can speak about RHEL ecosystem. Fedora packaging guidelines\nspecify that you need to build each and every dependency of the program\nseparately. I wanted to try out ",(0,s.jsx)(n.em,{children:"AlmaLinux"})," and install Alacritty there and I\nfailed miserably. The solution that worked, consisted of ignoring the packaging\nguidelines, running ",(0,s.jsx)(n.code,{children:"cargo build"})," and consuming the binaries afterwards.\nDependencies of the Rust programs are of a similar nature as JS dependencies."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["I'm tipping my fedora",(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-2-e21849",id:"user-content-fnref-2-e21849-2","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})})," in the general direction of the maintainers of Rust\npackages in RHEL ecosystem. I wouldn't be able to do this without losing my\nsanity."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"likes",children:"Likes"}),"\n",(0,s.jsxs)(n.p,{children:["If you've come all the way here and you're a Rustacean, I believe I've managed\nto get your blood boiling, so it's time to finish this off by stuff I like about\nRust. I doubt I will be able to cover everything, but I can try at least. You\nhave to admit it's much easier to remember the bad stuff as opposed to the good.\n","\ud83d\ude09"]}),"\n",(0,s.jsx)(n.h3,{id:"workflow-and-toolchain",children:"Workflow and toolchain"}),"\n",(0,s.jsxs)(n.p,{children:["I prefered using Rust for the ",(0,s.jsx)(n.em,{children:"Advent of Code"})," and ",(0,s.jsx)(n.em,{children:"Codeforces"})," as it provides\na rather easy way to test the solutions before running them with the challenge\ninput (or test runner). I can give an example from the ",(0,s.jsx)(n.em,{children:"Advent of Code"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:"use aoc_2023::*;\n\ntype Output1 = i32;\ntype Output2 = Output1;\n\nstruct DayXX {}\nimpl Solution for DayXX {\n fn new>(pathname: P) -> Self {\n let lines: Vec = file_to_lines(pathname);\n\n todo!()\n }\n\n fn part_1(&mut self) -> Output1 {\n todo!()\n }\n\n fn part_2(&mut self) -> Output2 {\n todo!()\n }\n}\n\nfn main() -> Result<()> {\n DayXX::main()\n}\n\ntest_sample!(day_XX, DayXX, 42, 69);\n"})}),"\n",(0,s.jsx)(n.p,{children:"This was the skeleton I've used and the macro at the end is my own creation that\nexpands to:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:"#[cfg(test)]\nmod day_XX {\n use super::*;\n\n #[test]\n fn part_1() {\n let path = DayXX::get_sample(1);\n let mut day = DayXX::new(path);\n assert_eq!(day.part_1(), 42);\n }\n\n #[test]\n fn part_2() {\n let path = DayXX::get_sample(2);\n let mut day = DayXX::new(path);\n assert_eq!(day.part_2(), 69);\n }\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When you're solving the problem, all you need to do is switch between\n",(0,s.jsx)(n.code,{children:"cargo test"})," and ",(0,s.jsx)(n.code,{children:"cargo run"})," to check the answer to either sample or the\nchallenge input itself."]}),"\n",(0,s.jsxs)(n.p,{children:["Introduce ",(0,s.jsx)(n.a,{href:"https://dystroy.org/bacon/",children:"bacon"})," and it gets even better. Bacon is a CLI tool that wraps around\nthe ",(0,s.jsx)(n.code,{children:"cargo"})," and allows you to check, run, lint or run tests on each file save.\nIt's a very pleasant thing for a so-called ",(0,s.jsx)(n.em,{children:"compiler-assisted"})," development."]}),"\n",(0,s.jsxs)(n.p,{children:["Speaking of linting from within the bacon, you cannot leave out the ",(0,s.jsx)(n.a,{href:"https://github.com/rust-lang/rust-clippy",children:"clippy"}),".\nNot only it can whip your ass because of errors, but it can also produce a lot\nof helpful suggestions, for example passing slices by borrow instead of\nborrowing the ",(0,s.jsx)(n.code,{children:"Vec"})," itself when you don't need it."]}),"\n",(0,s.jsx)(n.h3,{id:"standard-library",children:"Standard library"}),"\n",(0,s.jsxs)(n.p,{children:["There's ",(0,s.jsx)(n.strong,{children:"a lot"})," included in the standard library. It almost feels like you\nhave all you need",(0,s.jsx)(n.sup,{children:(0,s.jsx)(n.a,{href:"#user-content-fn-4-e21849",id:"user-content-fnref-4-e21849","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"4"})}),". I like placeholders (like ",(0,s.jsx)(n.code,{children:"todo!()"}),", ",(0,s.jsx)(n.code,{children:"unreachable!()"}),",\n",(0,s.jsx)(n.code,{children:"unimplemented!()"}),") to the extent of\n",(0,s.jsx)(n.a,{href:"/cpp/exceptions-and-raii/placeholders",children:"implementing"})," them as exceptions in C++."]}),"\n",(0,s.jsx)(n.p,{children:"You can find almost anything. Though you can also hit some very weird issues\nwith some of the nuances of the type system."}),"\n",(0,s.jsx)(n.h3,{id:"unsafe",children:(0,s.jsx)(n.code,{children:"unsafe"})}),"\n",(0,s.jsxs)(n.p,{children:["This might be something that people like to avoid as much as possible. However I\nthink that forming a habit of commenting posibly unsafe operations in ",(0,s.jsx)(n.strong,{children:"any"}),"\nlanguage is a good habit, as I've mentioned above. You should be able to argue\nwhy you can do something safely, even if the compiler is not kicking your ass\nbecause of it."]}),"\n",(0,s.jsx)(n.p,{children:"Excerpt of such comment from work:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-py",children:"# SAFETY: Taking first package instead of specific package should be\n# safe, since we have put a requirement on \xbbone\xab \u2039upstream_project_url\u203a\n# per Packit config, i.e. even if we're dealing with a monorepo, there\n# is only \xbbone\xab upstream. If there is one upstream, there is only one\n# set of GPG keys that can be allowed.\nreturn self.downstream_config.packages[\n self.downstream_config._first_package\n].allowed_gpg_keys\n"})}),"\n",(0,s.jsx)(n.h3,{id:"traits",children:"Traits"}),"\n",(0,s.jsxs)(n.p,{children:["One of the other things I like are the traits. They are more restrictive than\ntemplates or concepts in C++, but they're doing their job pretty good. If you\nare building library and require multiple traits to be satisfied it means a lot\nof copy-paste, but that's soon to be fixed by the ",(0,s.jsx)(n.a,{href:"https://github.com/rust-lang/rfcs/blob/master/text/1733-trait-alias.md",children:"trait aliases"}),"."]}),"\n",(0,s.jsxs)(n.admonition,{title:"Comparing to other languages",type:"tip",children:[(0,s.jsxs)(n.p,{children:["On Wikipedia I've seen trait being defined as a more restrictive type class as\nyou may know it from the Haskell for example. C++ isn't behind either with its\n",(0,s.jsx)(n.em,{children:"constraints and concepts"}),". I would say that we can order them in the following\norder based on the complexity they can express:"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"Rust's trait < Haskell's type class < C++'s concept\n"})})]}),"\n",(0,s.jsxs)(n.p,{children:["You can also hit some issues, like me when trying to support conversions between\nunderlying numeric types of a 2D vectors or support for using an operator from\nboth sides (I couldn't get ",(0,s.jsx)(n.code,{children:"c * u"})," to work in the same way as ",(0,s.jsx)(n.code,{children:"u * c"})," because\nthe first one requires you to implement the trait of a built-in type)."]}),"\n",(0,s.jsxs)(n.admonition,{title:"Implementation",type:"warning",children:[(0,s.jsx)(n.p,{children:"Implementing traits lies in"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-rust",children:"impl SomeTrait for SomeStruct {\n // implementation goes here\n}\n"})}),(0,s.jsxs)(n.p,{children:["One of the things I ",(0,s.jsx)(n.strong,{children:"would love to"})," see is being able to define the helper\nfunctions within the same block. As of now, the only things allowed are the ones\nthat are required by the trait, which in the end results in a randomly lying\nfunctions around (or in a implementation of the structure itself). I don't like\nthis mess at all\u2026"]})]}),"\n",(0,s.jsx)(n.h3,{id:"influence-of-functional-paradigm",children:"Influence of functional paradigm"}),"\n",(0,s.jsxs)(n.p,{children:["You can see a big influence of the functional paradigm. Not only in iterators,\nbut also in the other parts of the language. For example I prefer ",(0,s.jsx)(n.code,{children:"Option"})," or\n",(0,s.jsx)(n.code,{children:"Result"})," to ",(0,s.jsx)(n.code,{children:"null"}),"s and exceptions. Pattern matching together with\ncompiler both enforces handling of the errors and rather user-friendly way of\ndoing it."]}),"\n",(0,s.jsxs)(n.p,{children:["Not to mention ",(0,s.jsx)(n.code,{children:".and_then()"})," and such. However spending most of the time with\nthe AoC you get pretty annoyed of the repetitive ",(0,s.jsx)(n.code,{children:".unwrap()"})," during parsing,\nsince you are guaranteed correct input."]}),"\n",(0,s.jsx)(n.h3,{id:"macros",children:"Macros"}),"\n",(0,s.jsx)(n.p,{children:"Macros are a very strong pro of the Rust. And no, we're not going to talk about\nthe procedural macros\u2026"}),"\n",(0,s.jsx)(n.p,{children:"As I've shown above I've managed to \u201ctame\u201d a lot of copy-paste in the tests for\nthe AoC by utilizing a macro that generated a very basic template for the tests."}),"\n",(0,s.jsxs)(n.p,{children:["As I have mentioned the traits above, I cannot forget to give props to ",(0,s.jsx)(n.code,{children:"derive"}),"\nmacro that allows you to \u201cdeduce\u201d the default implementation. It is very helpful\nfor a tedious tasks like implementing ",(0,s.jsx)(n.code,{children:"Debug"})," (for printing out the structures)\nor comparisons, though with the comparisons you need to be careful about the\ndefault implementation, it has already bitten me once or twice."]}),"\n",(0,s.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,s.jsxs)(n.p,{children:["Overall there are many things about the Rust I like and would love to see them\nimplemented in other languages. However there are also many things I don't like.\nNothing is ",(0,s.jsx)(n.strong,{children:"exclusively"})," black and white."]}),"\n",(0,s.jsxs)(n.section,{"data-footnotes":!0,className:"footnotes",children:[(0,s.jsx)(n.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{id:"user-content-fn-2-e21849",children:["\n",(0,s.jsxs)(n.p,{children:["pun intended ",(0,s.jsx)(n.a,{href:"#user-content-fnref-2-e21849","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})," ",(0,s.jsxs)(n.a,{href:"#user-content-fnref-2-e21849-2","data-footnote-backref":"","aria-label":"Back to reference 1-2",className:"data-footnote-backref",children:["\u21a9",(0,s.jsx)(n.sup,{children:"2"})]})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{id:"user-content-fn-3-e21849",children:["\n",(0,s.jsxs)(n.p,{children:["It's not that easy with the Rust compiler, but OK\u2026 ",(0,s.jsx)(n.a,{href:"#user-content-fnref-3-e21849","data-footnote-backref":"","aria-label":"Back to reference 2",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{id:"user-content-fn-1-e21849",children:["\n",(0,s.jsxs)(n.p,{children:["not to even mention multiple different packaging standards Python has, which\nis borderline ",(0,s.jsx)(n.a,{href:"https://xkcd.com/927/",children:"https://xkcd.com/927/"})," ",(0,s.jsx)(n.a,{href:"#user-content-fnref-1-e21849","data-footnote-backref":"","aria-label":"Back to reference 3",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{id:"user-content-fn-4-e21849",children:["\n",(0,s.jsxs)(n.p,{children:["unlike Python where there's whole universe in the language itself, yet there\nare essential things not present\u2026 ",(0,s.jsx)(n.a,{href:"#user-content-fnref-4-e21849","data-footnote-backref":"","aria-label":"Back to reference 4",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>r,a:()=>a});var s=t(67294);const o={},i=s.createContext(o);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.237fcc8a.js b/assets/js/main.6e9790c2.js similarity index 98% rename from assets/js/main.237fcc8a.js rename to assets/js/main.6e9790c2.js index e2f4022..29fc2e6 100644 --- a/assets/js/main.237fcc8a.js +++ b/assets/js/main.6e9790c2.js @@ -1,2 +1,2 @@ -/*! For license information please see main.237fcc8a.js.LICENSE.txt */ -(self.webpackChunkfi=self.webpackChunkfi||[]).push([[179],{20830:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(67294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(67294);var r=n(68356),a=n.n(r),o=n(16887);const i={"0123bc76":[()=>n.e(3734).then(n.t.bind(n,76554,19)),"~docs/algorithms/tag-algorithms-tags-c-e22.json",76554],"0178f9ad":[()=>n.e(9898).then(n.bind(n,35610)),"@site/algorithms/08-rb-trees/2022-04-05-applications.md",35610],"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,24524)),"@theme/BlogTagsListPage",24524],"0220f5fc":[()=>n.e(1378).then(n.t.bind(n,85804,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-blog/blog/plugin-route-context-module-100.json",85804],"0608d96f":[()=>n.e(7568).then(n.t.bind(n,77158,19)),"~blog/blog/blog-tags-vps-843-list.json",77158],"06c4a8fc":[()=>n.e(2125).then(n.t.bind(n,4697,19)),"~docs/algorithms/tag-algorithms-tags-testing-0c4.json",4697],"0816068a":[()=>n.e(2948).then(n.t.bind(n,17702,19)),"~blog/blog/blog-tags-hype-1ee.json",17702],"087808f1":[()=>n.e(3731).then(n.bind(n,48157)),"@site/algorithms/12-hash-tables/2023-11-28-breaking/index.md",48157],"08dfa3a2":[()=>n.e(2606).then(n.t.bind(n,32412,19)),"~docs/algorithms/tag-algorithms-tags-astar-f6e.json",32412],"0bfe45d5":[()=>n.e(4269).then(n.t.bind(n,13847,19)),"~blog/blog/blog-tags-rust-0c9-list.json",13847],"0fcbc6ca":[()=>Promise.all([n.e(532),n.e(1851)]).then(n.bind(n,39900)),"@site/src/pages/talks.tsx",39900],"146d9b84":[()=>n.e(9300).then(n.t.bind(n,96671,19)),"~blog/blog/blog-tags-admin-b05-list.json",96671],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,34228)),"@theme/DocCategoryGeneratedIndexPage",34228],"1535ede8":[()=>n.e(5376).then(n.bind(n,44969)),"@site/c/bonuses/10.md",44969],15966941:[()=>n.e(8326).then(n.bind(n,16721)),"@site/algorithms/12-hash-tables/2023-11-28-breaking/02-mitigations.md",16721],"16cbc838":[()=>n.e(1494).then(n.t.bind(n,98252,19)),"~docs/algorithms/tag-algorithms-tags-iterative-d5b.json",98252],17896441:[()=>Promise.all([n.e(532),n.e(9365),n.e(7918)]).then(n.bind(n,15154)),"@theme/DocItem",15154],"182b5a8d":[()=>n.e(6048).then(n.bind(n,32582)),"@site/blog/2024-01-28-rust-opinion.md?truncated=true",32582],"19d7c045":[()=>n.e(4637).then(n.t.bind(n,67772,19)),"~blog/blog/blog-tags-advent-of-code-49f.json",67772],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,48852)),"@theme/SearchPage",48852],"1a606400":[()=>n.e(494).then(n.t.bind(n,82400,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-docs/algorithms/plugin-route-context-module-100.json",82400],"1acf65cc":[()=>n.e(8529).then(n.bind(n,34568)),"@site/c/pexam/b-garbage_collect.md",34568],"1cd58e77":[()=>n.e(1547).then(n.bind(n,32090)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/04-bottom-up-dp.md",32090],"22a175ec":[()=>Promise.all([n.e(532),n.e(6890)]).then(n.bind(n,40707)),"@site/src/pages/contributions.tsx",40707],"24fecc0a":[()=>n.e(3707).then(n.bind(n,69383)),"@site/algorithms/03-time-complexity/2021-03-31-extend.md",69383],"257fa000":[()=>n.e(9595).then(n.t.bind(n,35455,19)),"~blog/blog/blog-tags-cult-e97-list.json",35455],"28d80ff8":[()=>n.e(6435).then(n.t.bind(n,7465,19)),"~docs/algorithms/tag-algorithms-tags-sorting-d73.json",7465],29694455:[()=>n.e(3388).then(n.t.bind(n,39828,19)),"~blog/blog/blog-tags-iterators-977-list.json",39828],"2af5d0a7":[()=>n.e(3979).then(n.t.bind(n,53703,19)),"~docs/algorithms/tag-algorithms-tags-a-star-775.json",53703],"2b89902a":[()=>n.e(6342).then(n.t.bind(n,45443,19)),"~docs/algorithms/tag-algorithms-tags-recursion-1bd.json",45443],"2ca64e35":[()=>n.e(281).then(n.bind(n,99544)),"@site/algorithms/04-recursion/2022-11-29-karel/index.md",99544],"2fcf0558":[()=>n.e(4638).then(n.t.bind(n,69470,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-hash-tables-062.json",69470],"3011a4c0":[()=>n.e(7926).then(n.t.bind(n,31670,19)),"~blog/blog/blog-tags-copr-70b-list.json",31670],30814625:[()=>n.e(115).then(n.bind(n,78416)),"@site/algorithms/04-recursion/2022-11-29-karel/2023-12-24-solution.md",78416],"34ab65f4":[()=>n.e(3220).then(n.t.bind(n,28865,19)),"~docs/algorithms/tag-algorithms-tags-postconditions-1f3.json",28865],"354a7b72":[()=>n.e(9414).then(n.bind(n,46617)),"@site/algorithms/10-graphs/2022-04-30-bfs-tree.md",46617],"3720c009":[()=>Promise.all([n.e(532),n.e(3751)]).then(n.bind(n,10727)),"@theme/DocTagsListPage",10727],"377f3aa1":[()=>n.e(1011).then(n.bind(n,7582)),"@site/blog/aoc-2022/02-week-2.md",7582],"3adcbc3a":[()=>n.e(5701).then(n.bind(n,62535)),"@site/algorithms/11-paths/2024-01-01-bf-to-astar/01-bf.md",62535],"3d92ba6e":[()=>n.e(8236).then(n.t.bind(n,77778,19)),"~docs/algorithms/tag-algorithms-tags-dijkstra-48e.json",77778],"3da4b779":[()=>n.e(2177).then(n.bind(n,28737)),"@site/blog/aoc-2022/04-week-4.md",28737],"4200b1a9":[()=>n.e(866).then(n.t.bind(n,24612,19)),"~blog/blog/blog-archive-80c.json",24612],"45c9e308":[()=>n.e(7084).then(n.bind(n,53181)),"@site/cpp/07-exceptions-and-raii/2023-11-24-placeholders.md",53181],"4621632b":[()=>n.e(3519).then(n.t.bind(n,29760,19)),"~blog/blog/blog-tags-cpp-7c7-list.json",29760],"48b268a6":[()=>n.e(1648).then(n.t.bind(n,35067,19)),"~docs/c/category-c-autogeneratedbar-category-bonuses-216.json",35067],"493c0536":[()=>n.e(7292).then(n.bind(n,45594)),"@site/algorithms/11-paths/2024-01-01-bf-to-astar/03-astar.md",45594],"4e546705":[()=>n.e(4327).then(n.t.bind(n,61795,19)),"~docs/c/version-current-metadata-prop-751.json",61795],"4edd2021":[()=>n.e(5975).then(n.t.bind(n,21705,19)),"~blog/blog/blog-tags-cpp-7c7.json",21705],"4f96b16e":[()=>n.e(6306).then(n.bind(n,24693)),"@site/c/pexam/c-cams.md",24693],51624505:[()=>n.e(4394).then(n.bind(n,32609)),"@site/blog/aoc-2022/00-intro.md",32609],"520f8175":[()=>n.e(8058).then(n.t.bind(n,24353,19)),"~docs/algorithms/tag-algorithms-tags-cpp-0d2.json",24353],"52f2a5bf":[()=>n.e(5430).then(n.t.bind(n,61387,19)),"~blog/blog/blog-tags-red-hat-df4.json",61387],"534d4833":[()=>n.e(9771).then(n.bind(n,93019)),"@site/algorithms/02-algorithms-correctness/2021-03-18-postcondition-ambiguity.md",93019],"595c7293":[()=>n.e(5634).then(n.bind(n,58396)),"@site/c/bonuses/08.md",58396],"5c15401e":[()=>n.e(9579).then(n.t.bind(n,43761,19)),"~docs/algorithms/tag-algorithms-tags-bellman-ford-731.json",43761],"5ca803d2":[()=>n.e(9173).then(n.t.bind(n,24890,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-docs/c/plugin-route-context-module-100.json",24890],"5e95c892":[()=>n.e(9661).then(n.bind(n,41892)),"@theme/DocsRoot",41892],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,36809)),"@generated/docusaurus.config",36809],"62d847b3":[()=>n.e(8520).then(n.t.bind(n,91901,19)),"~blog/blog/blog-tags-advent-of-code-2022-3db-list.json",91901],"66d5ef6c":[()=>n.e(9228).then(n.t.bind(n,4087,19)),"~blog/blog/blog-tags-tags-4c2.json",4087],"686a7a89":[()=>n.e(728).then(n.t.bind(n,77507,19)),"~docs/algorithms/tag-algorithms-tags-graphs-31d.json",77507],"6875c492":[()=>Promise.all([n.e(532),n.e(9365),n.e(130),n.e(8610)]).then(n.bind(n,41714)),"@theme/BlogTagsPostsPage",41714],"698e2076":[()=>n.e(3713).then(n.bind(n,38961)),"@site/algorithms/11-paths/2024-01-01-bf-to-astar/02-dijkstra.md",38961],"6bc697d0":[()=>n.e(5287).then(n.t.bind(n,68529,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-docs/cpp/plugin-route-context-module-100.json",68529],"6e3cbca1":[()=>n.e(3276).then(n.t.bind(n,29538,19)),"~docs/algorithms/version-current-metadata-prop-751.json",29538],"7052c0bc":[()=>n.e(9731).then(n.bind(n,42286)),"@site/cpp/00-intro.md",42286],"70a4540f":[()=>n.e(9249).then(n.bind(n,44493)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/01-naive.md",44493],"75cccf44":[()=>n.e(4256).then(n.bind(n,98215)),"@site/blog/leetcode/sort-matrix-diagonally.md?truncated=true",98215],"765ea78b":[()=>n.e(3039).then(n.t.bind(n,83010,19)),"~blog/blog/blog-tags-\ud83c\udfed-551.json",83010],"794ef108":[()=>n.e(3803).then(n.bind(n,86427)),"@site/c/00-intro.md",86427],"7a5bb070":[()=>n.e(4582).then(n.t.bind(n,64863,19)),"~blog/blog/blog-tags-memory-safety-1ae.json",64863],"7ce7faac":[()=>n.e(6064).then(n.t.bind(n,12884,19)),"~docs/algorithms/tag-algorithms-tags-solution-61b.json",12884],"7e6d325b":[()=>n.e(3184).then(n.t.bind(n,26139,19)),"~docs/cpp/version-current-metadata-prop-751.json",26139],"84d1e0d8":[()=>n.e(1885).then(n.bind(n,49713)),"@site/algorithms/00-intro.md",49713],"86cd1460":[()=>n.e(1235).then(n.t.bind(n,38968,19)),"~blog/blog/blog-tags-leetcode-042.json",38968],"8a25f659":[()=>n.e(7728).then(n.bind(n,73212)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/03-top-down-dp.md",73212],"8b1802c5":[()=>n.e(8480).then(n.t.bind(n,60832,19)),"~blog/blog/blog-tags-advent-of-code-49f-list.json",60832],"8c0e532b":[()=>n.e(822).then(n.t.bind(n,73968,19)),"~blog/blog/blog-tags-vps-843.json",73968],"8d31a880":[()=>n.e(9066).then(n.t.bind(n,72232,19)),"~docs/algorithms/tag-algorithms-tags-python-48f.json",72232],"8e6bb954":[()=>n.e(5775).then(n.t.bind(n,76206,19)),"~docs/algorithms/tag-algorithms-tags-exponential-60a.json",76206],"9287eafd":[()=>n.e(5521).then(n.t.bind(n,90716,19)),"~blog/blog/blog-tags-rust-0c9.json",90716],"933b95b3":[()=>n.e(3887).then(n.t.bind(n,7405,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-recursion-257.json",7405],"947341b7":[()=>n.e(1145).then(n.t.bind(n,2897,19)),"~docs/algorithms/tag-algorithms-tags-bfs-69f.json",2897],"95b96bb9":[()=>n.e(3561).then(n.t.bind(n,24577,19)),"~blog/blog/blog-post-list-prop-blog.json",24577],"95f41f0b":[()=>n.e(9385).then(n.bind(n,93195)),"@site/blog/aoc-2022/01-week-1.md?truncated=true",93195],"962da50c":[()=>n.e(2264).then(n.t.bind(n,9705,19)),"~docs/c/category-c-autogeneratedbar-category-practice-exams-e97.json",9705],"976c4f3b":[()=>n.e(4562).then(n.t.bind(n,69019,19)),"~docs/algorithms/tag-algorithms-tags-java-6c3.json",69019],"97a42631":[()=>n.e(1464).then(n.t.bind(n,77343,19)),"~docs/algorithms/tags-list-current-prop-15a.json",77343],"9a3dc578":[()=>n.e(655).then(n.t.bind(n,9916,19)),"~docs/algorithms/tag-algorithms-tags-dynamic-array-5d3.json",9916],"9b91a88c":[()=>n.e(2545).then(n.bind(n,19466)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/index.md",19466],"9df0e937":[()=>n.e(2210).then(n.t.bind(n,55256,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-graphs-2e2.json",55256],"9e4087bc":[()=>n.e(3608).then(n.bind(n,63169)),"@theme/BlogArchivePage",63169],a082abd3:[()=>n.e(8786).then(n.t.bind(n,73276,19)),"~blog/blog/blog-tags-admin-b05.json",73276],a2ba8888:[()=>n.e(8289).then(n.t.bind(n,55941,19)),"~docs/algorithms/tag-algorithms-tags-brute-force-3cb.json",55941],a4c10cf4:[()=>n.e(4382).then(n.t.bind(n,30685,19)),"~docs/algorithms/tag-algorithms-tags-time-complexity-c50.json",30685],a6a48ea2:[()=>n.e(3618).then(n.bind(n,1176)),"@site/blog/aoc-2022/02-week-2.md?truncated=true",1176],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(9365),n.e(130),n.e(3089)]).then(n.bind(n,80046)),"@theme/BlogListPage",80046],a7098721:[()=>n.e(1050).then(n.t.bind(n,26615,19)),"~blog/blog/blog-c06.json",26615],a7bd4aaa:[()=>n.e(8518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a80747a0:[()=>n.e(5824).then(n.t.bind(n,4464,19)),"~blog/blog/blog-tags-advent-of-code-2022-3db.json",4464],a94703ab:[()=>Promise.all([n.e(532),n.e(4368)]).then(n.bind(n,12674)),"@theme/DocRoot",12674],aa24fd5d:[()=>n.e(7257).then(n.bind(n,90251)),"@site/algorithms/12-hash-tables/2023-11-28-breaking/01-python.md",90251],ab2721d4:[()=>n.e(7755).then(n.bind(n,53037)),"@site/blog/aoc-2022/04-week-4.md?truncated=true",53037],af8b72a7:[()=>n.e(5658).then(n.bind(n,10507)),"@site/blog/2023-08-02-copr.md?truncated=true",10507],b0291f37:[()=>n.e(6097).then(n.t.bind(n,7085,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],b1288602:[()=>n.e(59).then(n.bind(n,51456)),"@site/c/mr.md",51456],b25fbc58:[()=>n.e(9197).then(n.t.bind(n,75617,19)),"~blog/blog/blog-tags-\ud83c\udfed-551-list.json",75617],b45dccf0:[()=>n.e(9679).then(n.t.bind(n,58296,19)),"~blog/blog/blog-tags-copr-70b.json",58296],b5a32f14:[()=>n.e(2433).then(n.bind(n,31976)),"@site/blog/2023-08-02-copr.md",31976],b8cbf382:[()=>n.e(7438).then(n.t.bind(n,74632,19)),"~docs/algorithms/tag-algorithms-tags-greedy-02f.json",74632],b9f7f5c4:[()=>n.e(9179).then(n.bind(n,76699)),"@site/cpp/environment.md",76699],bb882650:[()=>n.e(8091).then(n.bind(n,66765)),"@site/blog/aoc-2022/03-week-3.md?truncated=true",66765],bb984793:[()=>n.e(6864).then(n.t.bind(n,82505,19)),"~docs/algorithms/tag-algorithms-tags-karel-df7.json",82505],bc0c9d90:[()=>n.e(354).then(n.bind(n,50476)),"@site/c/bonuses/04.md",50476],bc2d22bc:[()=>n.e(6519).then(n.t.bind(n,70428,19)),"~docs/algorithms/tag-algorithms-tags-bottom-up-dp-4f9.json",70428],c4c4056e:[()=>n.e(635).then(n.bind(n,61381)),"@site/algorithms/11-paths/2024-01-01-bf-to-astar/index.md",61381],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,53261)),"@site/src/pages/index.js",53261],c580b66a:[()=>n.e(6573).then(n.t.bind(n,45021,19)),"~docs/algorithms/tag-algorithms-tags-top-down-dp-c2f.json",45021],c90b7ff3:[()=>n.e(3602).then(n.t.bind(n,44960,19)),"~blog/blog/blog-tags-hype-1ee-list.json",44960],ccc49370:[()=>Promise.all([n.e(532),n.e(9365),n.e(130),n.e(6103)]).then(n.bind(n,65203)),"@theme/BlogPostPage",65203],cfa2b263:[()=>n.e(3086).then(n.bind(n,34437)),"@site/blog/leetcode/sort-matrix-diagonally.md",34437],d05e838c:[()=>n.e(6544).then(n.bind(n,63004)),"@site/c/bonuses/05-06.md",63004],d255bd7f:[()=>n.e(6292).then(n.t.bind(n,60341,19)),"~docs/algorithms/tag-algorithms-tags-red-black-trees-c61.json",60341],d309b5b1:[()=>n.e(8908).then(n.t.bind(n,26102,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-algorithms-and-correctness-d51.json",26102],d4b1e057:[()=>n.e(1492).then(n.t.bind(n,12842,19)),"~docs/algorithms/tag-algorithms-tags-balanced-trees-b3e.json",12842],d57b4369:[()=>n.e(6179).then(n.t.bind(n,52715,19)),"~docs/algorithms/tag-algorithms-tags-csharp-d1d.json",52715],d675395f:[()=>n.e(2741).then(n.t.bind(n,15745,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",15745],d79dd549:[()=>n.e(5169).then(n.t.bind(n,29261,19)),"~blog/blog/blog-tags-red-hat-df4-list.json",29261],d7f7fb17:[()=>n.e(1171).then(n.bind(n,3455)),"@site/blog/aoc-2022/00-intro.md?truncated=true",3455],d8f4410e:[()=>n.e(2997).then(n.t.bind(n,41941,19)),"~docs/algorithms/tag-algorithms-tags-hash-tables-b36.json",41941],dd841e73:[()=>n.e(2482).then(n.t.bind(n,40155,19)),"~docs/algorithms/tag-algorithms-tags-dynamic-programming-3e6.json",40155],ddc7679f:[()=>n.e(569).then(n.bind(n,64322)),"@site/algorithms/10-graphs/2021-05-18-iterative-and-iterators.md",64322],dead8108:[()=>n.e(8807).then(n.bind(n,21431)),"@site/c/bonuses/03.md",21431],decbf9d1:[()=>n.e(2445).then(n.t.bind(n,88876,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-asymptotic-notation-and-time-complexity-e0d.json",88876],df078f58:[()=>n.e(7743).then(n.t.bind(n,88298,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-paths-in-graphs-202.json",88298],df0885f0:[()=>n.e(4343).then(n.t.bind(n,34175,19)),"~docs/algorithms/tag-algorithms-tags-iterators-13a.json",34175],df203c0f:[()=>Promise.all([n.e(532),n.e(9924)]).then(n.bind(n,40491)),"@theme/DocTagDocListPage",40491],dff2ebad:[()=>n.e(146).then(n.bind(n,42492)),"@site/blog/aoc-2022/01-week-1.md",42492],e1d2ae23:[()=>n.e(1475).then(n.t.bind(n,36302,19)),"~docs/algorithms/tag-algorithms-tags-applications-020.json",36302],e31003e9:[()=>n.e(1960).then(n.t.bind(n,81695,19)),"~docs/cpp/category-cpp-autogeneratedbar-category-exceptions-and-raii-6e9.json",81695],e89da83e:[()=>n.e(8757).then(n.t.bind(n,97416,19)),"~blog/blog/blog-tags-leetcode-042-list.json",97416],eba2374c:[()=>n.e(8387).then(n.t.bind(n,47662,19)),"~docs/algorithms/tag-algorithms-tags-backtracking-bb2.json",47662],f44abc07:[()=>n.e(2204).then(n.t.bind(n,39006,19)),"~blog/blog/blog-tags-cult-e97.json",39006],f48be158:[()=>n.e(4064).then(n.bind(n,12326)),"@site/blog/aoc-2022/03-week-3.md",12326],f71d1f68:[()=>n.e(6069).then(n.bind(n,13068)),"@site/blog/2024-01-28-rust-opinion.md",13068],f75910c4:[()=>n.e(5934).then(n.bind(n,1910)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/02-greedy.md",1910],f7d29e9b:[()=>n.e(7959).then(n.t.bind(n,89266,19)),"~blog/blog/blog-tags-memory-safety-1ae-list.json",89266],fb4361d3:[()=>n.e(6327).then(n.t.bind(n,9631,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-red-black-trees-d8a.json",9631],ff472cd9:[()=>n.e(8643).then(n.t.bind(n,7122,19)),"~blog/blog/blog-tags-iterators-977.json",7122],ff82dde7:[()=>Promise.all([n.e(532),n.e(8472)]).then(n.bind(n,63935)),"@site/algorithms/08-rb-trees/2023-06-10-rules.md",63935]};var s=n(85893);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(99670),u=n(30226);function d(e,t){if("*"===e)return a()({loading:l,loader:()=>n.e(1772).then(n.bind(n,51772)),modules:["@theme/NotFound"],webpack:()=>[51772],render(e,t){const n=e.default;return(0,s.jsx)(u.z,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],g=(0,c.Z)(r);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,s.jsx)(u.z,{value:i,children:(0,s.jsx)(o,{...a,...n})})}})}const p=[{path:"/blog/",component:d("/blog/","892"),exact:!0},{path:"/blog/2023/08/02/copr/",component:d("/blog/2023/08/02/copr/","69d"),exact:!0},{path:"/blog/2024/01/28/rust-opinion/",component:d("/blog/2024/01/28/rust-opinion/","98d"),exact:!0},{path:"/blog/aoc-2022/1st-week/",component:d("/blog/aoc-2022/1st-week/","df4"),exact:!0},{path:"/blog/aoc-2022/2nd-week/",component:d("/blog/aoc-2022/2nd-week/","783"),exact:!0},{path:"/blog/aoc-2022/3rd-week/",component:d("/blog/aoc-2022/3rd-week/","7c5"),exact:!0},{path:"/blog/aoc-2022/4th-week/",component:d("/blog/aoc-2022/4th-week/","1ac"),exact:!0},{path:"/blog/aoc-2022/intro/",component:d("/blog/aoc-2022/intro/","ada"),exact:!0},{path:"/blog/archive/",component:d("/blog/archive/","22d"),exact:!0},{path:"/blog/leetcode/sort-diagonally/",component:d("/blog/leetcode/sort-diagonally/","d97"),exact:!0},{path:"/blog/tags/",component:d("/blog/tags/","f23"),exact:!0},{path:"/blog/tags/\ud83c\udfed/",component:d("/blog/tags/\ud83c\udfed/","ffd"),exact:!0},{path:"/blog/tags/admin/",component:d("/blog/tags/admin/","d3a"),exact:!0},{path:"/blog/tags/advent-of-code-2022/",component:d("/blog/tags/advent-of-code-2022/","7bd"),exact:!0},{path:"/blog/tags/advent-of-code/",component:d("/blog/tags/advent-of-code/","313"),exact:!0},{path:"/blog/tags/copr/",component:d("/blog/tags/copr/","959"),exact:!0},{path:"/blog/tags/cpp/",component:d("/blog/tags/cpp/","770"),exact:!0},{path:"/blog/tags/cult/",component:d("/blog/tags/cult/","73d"),exact:!0},{path:"/blog/tags/hype/",component:d("/blog/tags/hype/","d35"),exact:!0},{path:"/blog/tags/iterators/",component:d("/blog/tags/iterators/","2eb"),exact:!0},{path:"/blog/tags/leetcode/",component:d("/blog/tags/leetcode/","e31"),exact:!0},{path:"/blog/tags/memory-safety/",component:d("/blog/tags/memory-safety/","d15"),exact:!0},{path:"/blog/tags/red-hat/",component:d("/blog/tags/red-hat/","a58"),exact:!0},{path:"/blog/tags/rust/",component:d("/blog/tags/rust/","bfd"),exact:!0},{path:"/blog/tags/vps/",component:d("/blog/tags/vps/","1b8"),exact:!0},{path:"/contributions/",component:d("/contributions/","541"),exact:!0},{path:"/search/",component:d("/search/","c7b"),exact:!0},{path:"/talks/",component:d("/talks/","819"),exact:!0},{path:"/algorithms/",component:d("/algorithms/","c61"),routes:[{path:"/algorithms/",component:d("/algorithms/","b39"),routes:[{path:"/algorithms/tags/",component:d("/algorithms/tags/","bb8"),exact:!0},{path:"/algorithms/tags/a-star/",component:d("/algorithms/tags/a-star/","83e"),exact:!0},{path:"/algorithms/tags/applications/",component:d("/algorithms/tags/applications/","b32"),exact:!0},{path:"/algorithms/tags/astar/",component:d("/algorithms/tags/astar/","08b"),exact:!0},{path:"/algorithms/tags/backtracking/",component:d("/algorithms/tags/backtracking/","e2d"),exact:!0},{path:"/algorithms/tags/balanced-trees/",component:d("/algorithms/tags/balanced-trees/","591"),exact:!0},{path:"/algorithms/tags/bellman-ford/",component:d("/algorithms/tags/bellman-ford/","2bc"),exact:!0},{path:"/algorithms/tags/bfs/",component:d("/algorithms/tags/bfs/","334"),exact:!0},{path:"/algorithms/tags/bottom-up-dp/",component:d("/algorithms/tags/bottom-up-dp/","9e5"),exact:!0},{path:"/algorithms/tags/brute-force/",component:d("/algorithms/tags/brute-force/","99b"),exact:!0},{path:"/algorithms/tags/c/",component:d("/algorithms/tags/c/","cc5"),exact:!0},{path:"/algorithms/tags/cpp/",component:d("/algorithms/tags/cpp/","f5b"),exact:!0},{path:"/algorithms/tags/csharp/",component:d("/algorithms/tags/csharp/","7a9"),exact:!0},{path:"/algorithms/tags/dijkstra/",component:d("/algorithms/tags/dijkstra/","aa8"),exact:!0},{path:"/algorithms/tags/dynamic-array/",component:d("/algorithms/tags/dynamic-array/","00e"),exact:!0},{path:"/algorithms/tags/dynamic-programming/",component:d("/algorithms/tags/dynamic-programming/","f82"),exact:!0},{path:"/algorithms/tags/exponential/",component:d("/algorithms/tags/exponential/","a74"),exact:!0},{path:"/algorithms/tags/graphs/",component:d("/algorithms/tags/graphs/","d5b"),exact:!0},{path:"/algorithms/tags/greedy/",component:d("/algorithms/tags/greedy/","079"),exact:!0},{path:"/algorithms/tags/hash-tables/",component:d("/algorithms/tags/hash-tables/","ae4"),exact:!0},{path:"/algorithms/tags/iterative/",component:d("/algorithms/tags/iterative/","783"),exact:!0},{path:"/algorithms/tags/iterators/",component:d("/algorithms/tags/iterators/","1bc"),exact:!0},{path:"/algorithms/tags/java/",component:d("/algorithms/tags/java/","2b4"),exact:!0},{path:"/algorithms/tags/karel/",component:d("/algorithms/tags/karel/","79f"),exact:!0},{path:"/algorithms/tags/postconditions/",component:d("/algorithms/tags/postconditions/","a27"),exact:!0},{path:"/algorithms/tags/python/",component:d("/algorithms/tags/python/","eb2"),exact:!0},{path:"/algorithms/tags/recursion/",component:d("/algorithms/tags/recursion/","2b0"),exact:!0},{path:"/algorithms/tags/red-black-trees/",component:d("/algorithms/tags/red-black-trees/","9ca"),exact:!0},{path:"/algorithms/tags/solution/",component:d("/algorithms/tags/solution/","fa0"),exact:!0},{path:"/algorithms/tags/sorting/",component:d("/algorithms/tags/sorting/","7ca"),exact:!0},{path:"/algorithms/tags/testing/",component:d("/algorithms/tags/testing/","2af"),exact:!0},{path:"/algorithms/tags/time-complexity/",component:d("/algorithms/tags/time-complexity/","2d3"),exact:!0},{path:"/algorithms/tags/top-down-dp/",component:d("/algorithms/tags/top-down-dp/","779"),exact:!0},{path:"/algorithms/",component:d("/algorithms/","b7c"),routes:[{path:"/algorithms/",component:d("/algorithms/","9b0"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/algorithms-correctness/postcondition-ambiguity/",component:d("/algorithms/algorithms-correctness/postcondition-ambiguity/","c18"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/algorithms-and-correctness/",component:d("/algorithms/category/algorithms-and-correctness/","ea2"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/asymptotic-notation-and-time-complexity/",component:d("/algorithms/category/asymptotic-notation-and-time-complexity/","fba"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/graphs/",component:d("/algorithms/category/graphs/","a92"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/hash-tables/",component:d("/algorithms/category/hash-tables/","ddd"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/paths-in-graphs/",component:d("/algorithms/category/paths-in-graphs/","7c7"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/recursion/",component:d("/algorithms/category/recursion/","61f"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/red-black-trees/",component:d("/algorithms/category/red-black-trees/","0c0"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/graphs/bfs-tree/",component:d("/algorithms/graphs/bfs-tree/","2fb"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/graphs/iterative-and-iterators/",component:d("/algorithms/graphs/iterative-and-iterators/","bfd"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/hash-tables/breaking/",component:d("/algorithms/hash-tables/breaking/","319"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/hash-tables/breaking/mitigations/",component:d("/algorithms/hash-tables/breaking/mitigations/","4c2"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/hash-tables/breaking/python/",component:d("/algorithms/hash-tables/breaking/python/","3d1"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/paths/bf-to-astar/",component:d("/algorithms/paths/bf-to-astar/","050"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/paths/bf-to-astar/astar/",component:d("/algorithms/paths/bf-to-astar/astar/","b4d"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/paths/bf-to-astar/bf/",component:d("/algorithms/paths/bf-to-astar/bf/","e9c"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/paths/bf-to-astar/dijkstra/",component:d("/algorithms/paths/bf-to-astar/dijkstra/","fe4"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/rb-trees/applications/",component:d("/algorithms/rb-trees/applications/","46a"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/rb-trees/rules/",component:d("/algorithms/rb-trees/rules/","21a"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/karel/",component:d("/algorithms/recursion/karel/","4cf"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/karel/solution/",component:d("/algorithms/recursion/karel/solution/","115"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/",component:d("/algorithms/recursion/pyramid-slide-down/","236"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/bottom-up-dp/",component:d("/algorithms/recursion/pyramid-slide-down/bottom-up-dp/","00d"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/greedy/",component:d("/algorithms/recursion/pyramid-slide-down/greedy/","4bf"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/naive/",component:d("/algorithms/recursion/pyramid-slide-down/naive/","c1b"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/top-down-dp/",component:d("/algorithms/recursion/pyramid-slide-down/top-down-dp/","fe9"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/time-complexity/extend/",component:d("/algorithms/time-complexity/extend/","250"),exact:!0,sidebar:"autogeneratedBar"}]}]}]},{path:"/c/",component:d("/c/","dae"),routes:[{path:"/c/",component:d("/c/","fc8"),routes:[{path:"/c/",component:d("/c/","1c4"),routes:[{path:"/c/",component:d("/c/","a0f"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-03/",component:d("/c/bonuses/seminar-03/","aaa"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-04/",component:d("/c/bonuses/seminar-04/","ffe"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-05-06/",component:d("/c/bonuses/seminar-05-06/","4cd"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-08/",component:d("/c/bonuses/seminar-08/","09a"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-10/",component:d("/c/bonuses/seminar-10/","b9e"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/category/bonuses/",component:d("/c/category/bonuses/","17e"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/category/practice-exams/",component:d("/c/category/practice-exams/","009"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/mr/",component:d("/c/mr/","4c5"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/pexam/cams/",component:d("/c/pexam/cams/","a10"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/pexam/garbage_collect/",component:d("/c/pexam/garbage_collect/","44e"),exact:!0,sidebar:"autogeneratedBar"}]}]}]},{path:"/cpp/",component:d("/cpp/","269"),routes:[{path:"/cpp/",component:d("/cpp/","187"),routes:[{path:"/cpp/",component:d("/cpp/","102"),routes:[{path:"/cpp/",component:d("/cpp/","fcd"),exact:!0,sidebar:"autogeneratedBar"},{path:"/cpp/category/exceptions-and-raii/",component:d("/cpp/category/exceptions-and-raii/","cfa"),exact:!0,sidebar:"autogeneratedBar"},{path:"/cpp/environment/",component:d("/cpp/environment/","e0b"),exact:!0,sidebar:"autogeneratedBar"},{path:"/cpp/exceptions-and-raii/placeholders/",component:d("/cpp/exceptions-and-raii/placeholders/","9b3"),exact:!0,sidebar:"autogeneratedBar"}]}]}]},{path:"/",component:d("/","dfb"),exact:!0},{path:"*",component:d("*")}]},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(67294),a=n(85893);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},97221:(e,t,n)=>{"use strict";var r=n(67294),a=n(20745),o=n(73727),i=n(70405),s=n(10412);const l=[n(32497),n(3310),n(18320),n(7439),n(57800)];var c=n(723),u=n(16550),d=n(18790),p=n(85893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var g=n(35742),h=n(52263),m=n(44996),b=n(86668),y=n(10833),v=n(94711),w=n(19727),k=n(43320),x=n(18780),S=n(90197);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(g.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,u.TH)();return e+(0,x.applyTrailingSlash)((0,m.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(y.d,{image:n}),(0,p.jsx)(E,{}),(0,p.jsx)(_,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(g.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var j=n(98934),N=n(58940),L=n(20469);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const I=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(I,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.AW,{location:t,render:()=>e})})}}const F=O,M="__docusaurus-base-url-issue-banner-container",D="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container";function z(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
    \n

    Your Docusaurus site did not load properly.

    \n

    A very common reason is a wrong site baseUrl configuration.

    \n

    Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

    \n

    We suggest trying baseUrl =

    \n
    \n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Y=n(99670);const Q=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?K(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),R(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(o.VK,{children:(0,p.jsx)(G,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};R(window.location.pathname).then(s)}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"cpp":{"path":"/cpp","versions":[{"name":"current","label":"Next","isLast":true,"path":"/cpp","mainDocId":"cpp-intro","docs":[{"id":"cpp-intro","path":"/cpp/","sidebar":"autogeneratedBar"},{"id":"environment","path":"/cpp/environment","sidebar":"autogeneratedBar"},{"id":"exceptions-and-raii/2023-11-24-placeholders","path":"/cpp/exceptions-and-raii/placeholders","sidebar":"autogeneratedBar"},{"id":"/category/exceptions-and-raii","path":"/cpp/category/exceptions-and-raii","sidebar":"autogeneratedBar"}],"draftIds":[],"sidebars":{"autogeneratedBar":{"link":{"path":"/cpp/","label":"cpp-intro"}}}}],"breadcrumbs":true},"c":{"path":"/c","versions":[{"name":"current","label":"Next","isLast":true,"path":"/c","mainDocId":"c-intro","docs":[{"id":"bonuses/seminar-03","path":"/c/bonuses/seminar-03","sidebar":"autogeneratedBar"},{"id":"bonuses/seminar-04","path":"/c/bonuses/seminar-04","sidebar":"autogeneratedBar"},{"id":"bonuses/seminar-05-06","path":"/c/bonuses/seminar-05-06","sidebar":"autogeneratedBar"},{"id":"bonuses/seminar-08","path":"/c/bonuses/seminar-08","sidebar":"autogeneratedBar"},{"id":"bonuses/seminar-10","path":"/c/bonuses/seminar-10","sidebar":"autogeneratedBar"},{"id":"c-intro","path":"/c/","sidebar":"autogeneratedBar"},{"id":"mr","path":"/c/mr","sidebar":"autogeneratedBar"},{"id":"pexam/b-garbage_collect","path":"/c/pexam/garbage_collect","sidebar":"autogeneratedBar"},{"id":"pexam/c-cams","path":"/c/pexam/cams","sidebar":"autogeneratedBar"},{"id":"/category/bonuses","path":"/c/category/bonuses","sidebar":"autogeneratedBar"},{"id":"/category/practice-exams","path":"/c/category/practice-exams","sidebar":"autogeneratedBar"}],"draftIds":[],"sidebars":{"autogeneratedBar":{"link":{"path":"/c/","label":"c-intro"}}}}],"breadcrumbs":true},"algorithms":{"path":"/algorithms","versions":[{"name":"current","label":"Next","isLast":true,"path":"/algorithms","mainDocId":"algorithms-intro","docs":[{"id":"algorithms-correctness/postcondition-ambiguity","path":"/algorithms/algorithms-correctness/postcondition-ambiguity","sidebar":"autogeneratedBar"},{"id":"algorithms-intro","path":"/algorithms/","sidebar":"autogeneratedBar"},{"id":"graphs/bfs-tree","path":"/algorithms/graphs/bfs-tree","sidebar":"autogeneratedBar"},{"id":"graphs/iterative-and-iterators","path":"/algorithms/graphs/iterative-and-iterators","sidebar":"autogeneratedBar"},{"id":"hash-tables/2023-11-28-breaking/breaking","path":"/algorithms/hash-tables/breaking","sidebar":"autogeneratedBar"},{"id":"hash-tables/2023-11-28-breaking/mitigations","path":"/algorithms/hash-tables/breaking/mitigations","sidebar":"autogeneratedBar"},{"id":"hash-tables/2023-11-28-breaking/python","path":"/algorithms/hash-tables/breaking/python","sidebar":"autogeneratedBar"},{"id":"paths/2024-01-01-bf-to-astar/astar","path":"/algorithms/paths/bf-to-astar/astar","sidebar":"autogeneratedBar"},{"id":"paths/2024-01-01-bf-to-astar/bf","path":"/algorithms/paths/bf-to-astar/bf","sidebar":"autogeneratedBar"},{"id":"paths/2024-01-01-bf-to-astar/dijkstra","path":"/algorithms/paths/bf-to-astar/dijkstra","sidebar":"autogeneratedBar"},{"id":"paths/2024-01-01-bf-to-astar/index","path":"/algorithms/paths/bf-to-astar","sidebar":"autogeneratedBar"},{"id":"rb-trees/applications","path":"/algorithms/rb-trees/applications","sidebar":"autogeneratedBar"},{"id":"rb-trees/rules","path":"/algorithms/rb-trees/rules","sidebar":"autogeneratedBar"},{"id":"recursion/2022-11-29-karel/karel","path":"/algorithms/recursion/karel","sidebar":"autogeneratedBar"},{"id":"recursion/2022-11-29-karel/solution","path":"/algorithms/recursion/karel/solution","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/bottom-up-dp","path":"/algorithms/recursion/pyramid-slide-down/bottom-up-dp","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/greedy","path":"/algorithms/recursion/pyramid-slide-down/greedy","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/naive","path":"/algorithms/recursion/pyramid-slide-down/naive","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/pyramid-slide-down","path":"/algorithms/recursion/pyramid-slide-down","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/top-down-dp","path":"/algorithms/recursion/pyramid-slide-down/top-down-dp","sidebar":"autogeneratedBar"},{"id":"time-complexity/extend","path":"/algorithms/time-complexity/extend","sidebar":"autogeneratedBar"},{"id":"/category/algorithms-and-correctness","path":"/algorithms/category/algorithms-and-correctness","sidebar":"autogeneratedBar"},{"id":"/category/asymptotic-notation-and-time-complexity","path":"/algorithms/category/asymptotic-notation-and-time-complexity","sidebar":"autogeneratedBar"},{"id":"/category/recursion","path":"/algorithms/category/recursion","sidebar":"autogeneratedBar"},{"id":"/category/red-black-trees","path":"/algorithms/category/red-black-trees","sidebar":"autogeneratedBar"},{"id":"/category/graphs","path":"/algorithms/category/graphs","sidebar":"autogeneratedBar"},{"id":"/category/paths-in-graphs","path":"/algorithms/category/paths-in-graphs","sidebar":"autogeneratedBar"},{"id":"/category/hash-tables","path":"/algorithms/category/hash-tables","sidebar":"autogeneratedBar"}],"draftIds":[],"sidebars":{"autogeneratedBar":{"link":{"path":"/algorithms/","label":"algorithms-intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(57529);const l=JSON.parse('{"docusaurusVersion":"3.1.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.1.1"},"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.1.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.5"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.1.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.1.1"}}}');var c=n(85893);const u={siteConfig:a.default,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},44763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),s=n(80647),l=n(85893);function c(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(u,{error:t})]})}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(c,{error:t,tryAgain:n}),children:[(0,l.jsx)(o.Z,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.Z,{children:(0,l.jsx)(c,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);var r=n(70405),a=n(85893);function o(e){return(0,a.jsx)(r.ql,{...e})}},33692:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(73727),o=n(18780),i=n(52263),s=n(13919),l=n(10412),c=n(28138),u=n(44996),d=n(85893);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:g,isActive:h,"data-noBrokenLinkCheck":m,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,u.C)(),x=(0,c.Z)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const _=p||f;const E=(0,s.Z)(_),C=_?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&E&&(T=(0,o.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const j=(0,r.useRef)(!1),N=n?a.OL:a.rU,L=l.Z.canUseIntersectionObserver,P=(0,r.useRef)(),I=()=>{j.current||null==T||(window.docusaurus.preload(T),j.current=!0)};(0,r.useEffect)((()=>(!L&&E&&null!=T&&window.docusaurus.prefetch(T),()=>{L&&P.current&&P.current.disconnect()})),[P,T,L,E]);const R=T?.startsWith("#")??!1,O=!y.target||"_self"===y.target,F=!T||!E||!O||R;return m||!R&&F||x.collectLink(T),y.id&&x.collectAnchor(y.id),F?(0,d.jsx)("a",{ref:S,href:T,..._&&!E&&{target:"_blank",rel:"noopener noreferrer"},...y}):(0,d.jsx)(N,{...y,onMouseEnter:I,onTouchStart:I,innerRef:e=>{S.current=e,L&&e&&E&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T,...n&&{isActive:h,activeClassName:g}})}const f=r.forwardRef(p)},95999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c,I:()=>l});var r=n(67294),a=n(85893);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(57529);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return o(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},44996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},28138:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(67294);n(85893);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},52263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},72389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},20469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(67294);const a=n(10412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const s=a?`${a}.${o}`:o;r(i)?e(i,s):t[s]=i}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(67294),a=n(85893);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:s,children:t})}},80143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>b,gA:()=>f,WS:()=>g,_r:()=>d,Jo:()=>y,zh:()=>p,yW:()=>m,gB:()=>h});var r=n(16550),a=n(52263),o=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=l(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,p=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function g(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:l(t.pluginData,n)}}function h(e){return p(e).versions}function m(e){const t=p(e);return s(t)}function b(e){const t=p(e),{pathname:n}=(0,r.TH)();return c(t,n)}function y(e){const t=p(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(14965),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(96854),n(30218)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},92503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(67294);var r=n(36905),a=n(95999),o=n(86668),i=n(33692),s=n(28138);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(85893);function u(e){let{as:t,id:n,...u}=e;const d=(0,s.Z)(),{navbar:{hideOnScroll:p}}=(0,o.L)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.Z)("anchor",p?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(85893);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},80647:(e,t,n)=>{"use strict";n.d(t,{Z:()=>At});var r=n(67294),a=n(36905),o=n(44763),i=n(10833),s=n(16550),l=n(95999),c=n(85936),u=n(85893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const g=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??g,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":g,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var m=n(35281),b=n(19727);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(h,{className:y.skipToContent})}var w=n(86668),k=n(59689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:a,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function _(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,a.Z)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,u.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,u.jsx)("div",{className:T.announcementBarPlaceholder}),(0,u.jsx)(C,{className:T.announcementBarContent}),o&&(0,u.jsx)(_,{onClick:n,className:T.announcementBarClose})]})}var j=n(93163),N=n(12466);var L=n(902),P=n(13102);const I=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,j.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,u.jsx)(I.Provider,{value:n,children:t})}function O(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function F(){const e=(0,r.useContext)(I);if(!e)throw new L.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:O(o)})),[a,o,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=F();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var D=n(92949),B=n(72389);function z(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function Z(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,B.Z)(),s=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,a.Z)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(z,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(Z),V={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function W(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,D.I)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?V.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var G=n(21327);function q(){return(0,u.jsx)(G.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.e)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(q,{}),(0,u.jsx)(W,{className:"margin-right--md"}),(0,u.jsx)(K,{})]})}var Q=n(33692),X=n(44996),J=n(13919),ee=n(98022),te=n(39471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(a,{forcePrependBaseUrl:!0}),g=o&&a&&!(0,J.Z)(a),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,g&&(0,u.jsx)(te.Z,{...s&&{width:12,height:12}})]})};return a?(0,u.jsx)(Q.Z,{href:l?f:a,...c,...h}):(0,u.jsx)(Q.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(p)},...c,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,u.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,u.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(86043),se=n(48596),le=n(52263);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(He,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:g}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&g(!d)}),[c,d,g]),(0,u.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,a.Z)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(He,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var ge=n(94711);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const me="iconLanguage_nlXk";var be=n(73935);function ye(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var ve=n(20830),we=["translations"];function ke(){return ke=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var Ee="Ctrl";var Ce=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=_e(e,we),i=a.buttonText,s=void 0===i?"Search":i,l=a.buttonAriaLabel,c=void 0===l?"Search":l,u=xe((0,r.useState)(null),2),d=u[0],p=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?p("\u2318"):p(Ee))}),[]),r.createElement("button",ke({type:"button",className:"DocSearch DocSearch-Button","aria-label":c},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(ve.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Ee?r.createElement(ye,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Te=n(35742),Ae=n(66177),je=n(239),Ne=n(43320);const Le={button:{buttonText:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,l.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Pe=null;function Ie(e){let{hit:t,children:n}=e;return(0,u.jsx)(Q.Z,{to:t.url,children:n})}function Re(e){let{state:t,onClose:n}=e;const r=(0,Ae.M)();return(0,u.jsx)(Q.Z,{to:r(t.query),onClick:n,children:(0,u.jsx)(l.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Oe(e){let{contextualSearch:t,externalUrlRegex:a,...o}=e;const{siteMetadata:i}=(0,le.Z)(),l=(0,je.l)(),c=function(){const{locale:e,tags:t}=(0,Ne._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),d=o.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(c,d):d,f={...o.searchParameters,facetFilters:p},g=(0,s.k6)(),h=(0,r.useRef)(null),m=(0,r.useRef)(null),[b,y]=(0,r.useState)(!1),[v,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>Pe?Promise.resolve():Promise.all([n.e(1426).then(n.bind(n,61426)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,46945)),Promise.all([n.e(532),n.e(8894)]).then(n.bind(n,18894))]).then((e=>{let[{DocSearchModal:t}]=e;Pe=t}))),[]),x=(0,r.useCallback)((()=>{k().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),y(!0)}))}),[k,y]),S=(0,r.useCallback)((()=>{y(!1),h.current?.remove()}),[y]),_=(0,r.useCallback)((e=>{k().then((()=>{y(!0),w(e.key)}))}),[k,y,w]),E=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(a,t)?window.location.href=t:g.push(t)}}).current,C=(0,r.useRef)((e=>o.transformItems?o.transformItems(e):e.map((e=>({...e,url:l(e.url)}))))).current,T=(0,r.useMemo)((()=>e=>(0,u.jsx)(Re,{...e,onClose:S})),[S]),A=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:b,onOpen:x,onClose:S,onInput:_,searchButtonRef:m}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Te.Z,{children:(0,u.jsx)("link",{rel:"preconnect",href:`https://${o.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,u.jsx)(Ce,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:x,ref:m,translations:Le.button}),b&&Pe&&h.current&&(0,be.createPortal)((0,u.jsx)(Pe,{onClose:S,initialScrollY:window.scrollY,initialQuery:v,navigator:E,transformItems:C,hitComponent:Ie,transformSearchClient:A,...o.searchPagePath&&{resultsFooterComponent:T},...o,searchParameters:f,placeholder:Le.placeholder,translations:Le.modal}),h.current)]})}function Fe(){const{siteConfig:e}=(0,le.Z)();return(0,u.jsx)(Oe,{...e.themeConfig.algolia})}const Me={navbarSearchContainer:"navbarSearchContainer_Bca1"};function De(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,a.Z)(n,Me.navbarSearchContainer),children:t})}var Be=n(80143),ze=n(53438);var $e=n(60373);const Ue=e=>e.docs.find((t=>t.id===e.mainDocId));const Ze={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.Z)(),p=(0,ge.l)(),{search:f,hash:g}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${g}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],m=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...o,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(he,{className:me}),m]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(De,{className:n,children:(0,u.jsx)(Fe,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,u.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,Be.Iw)(r),i=(0,ze.vY)(t,r),s=o?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>s||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,Be.Iw)(r),i=(0,ze.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ze.lO)(r)[0],i=t??o.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,u.jsx)(oe,{...a,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:c,hash:d}=(0,s.TH)(),p=(0,Be.Iw)(n),f=(0,Be.gB)(n),{savePreferredVersionName:g}=(0,$e.J)(n),h=[...a,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Ue(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>g(e.name)}})),...o],m=(0,ze.lO)(n)[0],b=t&&h.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,y=t&&h.length>1?void 0:Ue(m).path;return h.length<=1?(0,u.jsx)(oe,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:b,to:y,items:h,isActive:r?()=>!1:void 0})}};function He(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ze[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(a,{...n})}function Ve(){const e=(0,j.e)(),t=(0,w.L)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(He,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function We(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ge(){const e=0===(0,w.L)().navbar.items.length,t=F();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(We,{onClick:()=>t.hide()}),t.content]})}function qe(){const e=(0,j.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(M,{header:(0,u.jsx)(Y,{}),primaryMenu:(0,u.jsx)(Ve,{}),secondaryMenu:(0,u.jsx)(Ge,{})}):null}const Ke={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ye(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function Qe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,j.e)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,N.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ke.navbarHideable,!d&&Ke.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Ye,{onClick:i.toggle}),(0,u.jsx)(qe,{})]})}var Xe=n(69690);const Je="right";function et(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function tt(){const{toggle:e,shown:t}=(0,j.e)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(et,{})})}const nt={colorModeToggle:"colorModeToggle_DEke"};function rt(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(Xe.QW,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(He,{...e})},t)))})}function at(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function ot(){const e=(0,j.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Je)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,u.jsx)(at,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(tt,{}),(0,u.jsx)(q,{}),(0,u.jsx)(rt,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(rt,{items:r}),(0,u.jsx)(W,{className:nt.colorModeToggle}),!a&&(0,u.jsx)(De,{children:(0,u.jsx)(Fe,{})})]})})}function it(){return(0,u.jsx)(Qe,{children:(0,u.jsx)(ot,{})})}function st(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,s=(0,X.Z)(n),l=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Q.Z,{className:"footer__link-item",...r?{href:o?l:r}:{to:s},...i,children:[a,r&&!(0,J.Z)(r)&&(0,u.jsx)(te.Z,{})]})}function lt(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(st,{item:t})},t.href??t.to)}function ct(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(lt,{item:e},t)))})]})}function ut(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(ct,{column:e},t)))})}function dt(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function pt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(st,{item:t})}function ft(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(pt,{item:e}),t.length!==n+1&&(0,u.jsx)(dt,{})]},n)))})})}function gt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(ut,{columns:t}):(0,u.jsx)(ft,{links:t})}var ht=n(19965);const mt={footerLogoLink:"footerLogoLink_BH7S"};function bt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(ht.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function yt(e){let{logo:t}=e;return t.href?(0,u.jsx)(Q.Z,{href:t.href,className:mt.footerLogoLink,target:t.target,children:(0,u.jsx)(bt,{logo:t})}):(0,u.jsx)(bt,{logo:t})}function vt(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function wt(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,u.jsx)("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function kt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,u.jsx)(wt,{style:a,links:n&&n.length>0&&(0,u.jsx)(gt,{links:n}),logo:r&&(0,u.jsx)(yt,{logo:r}),copyright:t&&(0,u.jsx)(vt,{copyright:t})})}const xt=r.memo(kt),St=(0,L.Qc)([D.S,k.pl,N.OC,$e.L5,i.VC,function(e){let{children:t}=e;return(0,u.jsx)(P.n2,{children:(0,u.jsx)(j.M,{children:(0,u.jsx)(R,{children:t})})})}]);function _t(e){let{children:t}=e;return(0,u.jsx)(St,{children:t})}var Et=n(92503);function Ct(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(Et.Z,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(Xe.Cw,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Xe.aG,{error:t})})]})})})}const Tt={mainWrapper:"mainWrapper_z2l0"};function At(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.t)(),(0,u.jsxs)(_t,{children:[(0,u.jsx)(i.d,{title:s,description:l}),(0,u.jsx)(v,{}),(0,u.jsx)(A,{}),(0,u.jsx)(it,{}),(0,u.jsx)("div",{id:d,className:(0,a.Z)(m.k.wrapper.main,Tt.mainWrapper,r),children:(0,u.jsx)(o.Z,{fallback:e=>(0,u.jsx)(Ct,{...e}),children:t})}),!n&&(0,u.jsx)(xt,{})]})}},21327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(67294);var r=n(33692),a=n(44996),o=n(52263),i=n(86668),s=n(19965),l=n(85893);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Z)(t.src),dark:(0,a.Z)(t.srcDark||t.src)},i=(0,l.jsx)(s.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,o.Z)(),{navbar:{title:n,logo:s}}=(0,i.L)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,a.Z)(s?.href||"/"),g=n?"":t,h=s?.alt??g;return(0,l.jsxs)(r.Z,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:h,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);var r=n(35742),a=n(85893);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},19965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(67294),a=n(788),o=n(72389),i=n(92949);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(85893);function c(e){let{className:t,children:n}=e;const c=(0,o.Z)(),{colorMode:u}=(0,i.I)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:o},e)}))})}function u(e){const{sources:t,className:n,alt:r,...a}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},86043:(e,t,n)=>{"use strict";n.d(t,{u:()=>c,z:()=>b});var r=n(67294),a=n(10412),o=n(20469),i=n(91442),s=n(85893);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function g(e){if(!a.Z.canUseDOM)return e?u:d}function h(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),(0,s.jsx)(t,{ref:u,style:c?void 0:g(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:a})}function m(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&c(t)}),[a,t]),a?(0,s.jsx)(h,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?m:h;return(0,s.jsx)(r,{...n})}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>g});var r=n(67294),a=n(72389),o=n(50012),i=n(902),s=n(86668),l=n(85893);const c=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function g(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>b,S:()=>m});var r=n(67294),a=n(10412),o=n(902),i=n(50012),s=n(86668),l=n(85893);const c=r.createContext(void 0),u="theme",d=(0,i.WA)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,g=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[a,o]=(0,r.useState)(g(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>b,Oh:()=>w});var r=n(67294),a=n(80143),o=n(29935),i=n(86668),s=n(53438),l=n(902),c=n(50012),u=n(85893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const g=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=h();return(0,u.jsx)(g.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return s.cE?(0,u.jsx)(m,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function y(){const e=(0,r.useContext)(g);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=y(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,a._r)(),[t]=y();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,b:()=>l});var r=n(67294),a=n(902),o=n(85893);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>s});var r=n(67294),a=n(902),o=n(85893);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(67294),a=n(13102),o=n(87524),i=n(91980),s=n(86668),l=n(902),c=n(85893);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[l,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(l)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:l})),[e,n,u,l])}function p(e){let{children:t}=e;const n=d();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>c,n2:()=>s});var r=n(67294),a=n(902),o=n(85893);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,s]=o,l=(0,a.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},66177:(e,t,n)=>{"use strict";n.d(t,{K:()=>s,M:()=>l});var r=n(67294),a=n(52263),o=n(91980);const i="q";function s(){return(0,o.Nc)(i)}function l(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.Z)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,s]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){s(function(e){if(!a.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},53438:(e,t,n)=>{"use strict";n.d(t,{LM:()=>g,MN:()=>T,SN:()=>C,_F:()=>y,cE:()=>p,f:()=>w,jA:()=>h,lO:()=>S,oz:()=>_,s1:()=>x,vY:()=>E,xz:()=>f});var r=n(67294),a=n(16550),o=n(18790),i=n(80143),s=n(60373),l=n(74477),c=n(1116),u=n(67392),d=n(48596);const p=!!i._r;function f(e){const t=(0,l.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function g(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=g(t);if(e)return e}}(e):void 0:e.href}function h(){const{pathname:e}=(0,a.TH)(),t=(0,c.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=k({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const m=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||b(e.items,t))}function v(e,t){switch(e.type){case"category":return y(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||y(e,t);default:return!0}}function w(e,t){return(0,r.useMemo)((()=>e.filter((e=>v(e,t)))),[e,t])}function k(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,c.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?k({sidebarItems:e.items,pathname:t}):null}function S(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,u.j)([t,n,a].filter(Boolean))),[t,n,a])}function _(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,u.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function C(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,a.LX)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,o.H)(i),sidebarName:c,sidebarItems:u}}function T(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!g(e)))}},69690:(e,t,n)=>{"use strict";n.d(t,{aG:()=>u,Ac:()=>c,Cw:()=>l,QW:()=>d});var r=n(67294),a=n(95999),o=n(18780);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var s=n(85893);function l(e){return(0,s.jsx)("button",{type:"button",...e,children:(0,s.jsx)(a.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function c(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,s.jsx)("p",{children:t.message}),(0,s.jsx)(l,{onClick:n})]})}function u(e){let{error:t}=e;const n=(0,o.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{className:i.errorBoundaryError,children:n})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},82128:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(52263);function a(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},91980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>l,Rb:()=>i,_X:()=>s});var r=n(67294),a=n(16550),o=n(902);function i(e){!function(e){const t=(0,a.k6)(),n=(0,o.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function l(e){const t=s(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(r?.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},67392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},10833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>g});var r=n(67294),a=n(788),o=n(35742),i=n(30226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(44996),c=n(82128),u=n(85893);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const s=(0,c.p)(t),{withBaseUrl:d}=(0,l.C)(),p=a?d(a,{absolute:!0}):void 0;return(0,u.jsxs)(o.Z,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,a.Z)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(o.Z,{children:(0,u.jsx)("html",{className:s})}),n]})}function g(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,a.Z)(r,o),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>s,Qc:()=>u,Ql:()=>c,i6:()=>l,zX:()=>i});var r=n(67294),a=n(20469),o=n(85893);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},98022:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(67294),a=n(723),o=n(52263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>h,OC:()=>u,RF:()=>f,o5:()=>g});var r=n(67294),a=n(10412),o=n(72389),i=n(20469),s=n(902),l=n(85893);const c=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(c);if(null==e)throw new s.i6("ScrollControllerProvider");return e}const p=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(p()),o=(0,s.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function g(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.Z)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function h(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>l,os:()=>s});var r=n(80143),a=n(52263),o=n(60373);const i="default";function s(e,t){return`docs-${e}-${t}`}function l(){const{i18n:e}=(0,a.Z)(),t=(0,r._r)(),n=(0,r.WS)(),l=(0,o.Oh)();const c=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=l[e],o=t[e].versions.find((e=>e.isLast));return s(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:c}}},50012:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>u,WA:()=>c});var r=n(67294);const a="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=i(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function u(e,t){const n=(0,r.useRef)((()=>null===e?l:c(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(52263),a=n(16550),o=n(18780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.Z)(),{pathname:l}=(0,a.TH)(),c=(0,o.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},6278:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},239:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(67294),a=n(98022),o=n(44996),i=n(6278);function s(){const{withBaseUrl:e}=(0,o.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.F)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},18780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},99318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var g=i.join("/");return n&&"/"!==g.substr(-1)&&(g+="/"),g};var s=n(38776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,g=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(g){var a=f(n);a&&a!==g&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),h=l(n),m=0;m{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},7439:(e,t,n)=>{"use strict";n.r(t)},32497:(e,t,n)=>{"use strict";n.r(t)},57800:(e,t,n)=>{"use strict";n.r(t)},74865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
    '};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){l(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},85795:()=>{Prism.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],attribute:{pattern:/\b'\w+/,alias:"attr-name"},keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:false|true)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:\w)*\b/i}},57874:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i{!function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,(function(e,n){return"(?:"+t[+n]+")"}))}function n(e,n,r){return RegExp(t(e,n),r||"")}function r(e,t){for(var n=0;n>/g,(function(){return"(?:"+e+")"}));return e.replace(/<>/g,"[^\\s\\S]")}var a="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",o="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",s="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var c=l(o),u=RegExp(l(a+" "+o+" "+i+" "+s)),d=l(o+" "+i+" "+s),p=l(a+" "+o+" "+s),f=r(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),g=r(/\((?:[^()]|<>)*\)/.source,2),h=/@?\b[A-Za-z_]\w*\b/.source,m=t(/<<0>>(?:\s*<<1>>)?/.source,[h,f]),b=t(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[d,m]),y=/\[\s*(?:,\s*)*\]/.source,v=t(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[b,y]),w=t(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[f,g,y]),k=t(/\(<<0>>+(?:,<<0>>+)+\)/.source,[w]),x=t(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[k,b,y]),S={keyword:u,punctuation:/[<>()?,.:[\]]/},_=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,E=/"(?:\\.|[^\\"\r\n])*"/.source,C=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:n(/(^|[^$\\])<<0>>/.source,[C]),lookbehind:!0,greedy:!0},{pattern:n(/(^|[^@$\\])<<0>>/.source,[E]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:n(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[b]),lookbehind:!0,inside:S},{pattern:n(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[h,x]),lookbehind:!0,inside:S},{pattern:n(/(\busing\s+)<<0>>(?=\s*=)/.source,[h]),lookbehind:!0},{pattern:n(/(\b<<0>>\s+)<<1>>/.source,[c,m]),lookbehind:!0,inside:S},{pattern:n(/(\bcatch\s*\(\s*)<<0>>/.source,[b]),lookbehind:!0,inside:S},{pattern:n(/(\bwhere\s+)<<0>>/.source,[h]),lookbehind:!0},{pattern:n(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[v]),lookbehind:!0,inside:S},{pattern:n(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[x,p,h]),inside:S}],keyword:u,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:n(/([(,]\s*)<<0>>(?=\s*:)/.source,[h]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:n(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:n(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[g]),lookbehind:!0,alias:"class-name",inside:S},"return-type":{pattern:n(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[x,b]),inside:S,alias:"class-name"},"constructor-invocation":{pattern:n(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[x]),lookbehind:!0,inside:S,alias:"class-name"},"generic-method":{pattern:n(/<<0>>\s*<<1>>(?=\s*\()/.source,[h,f]),inside:{function:n(/^<<0>>/.source,[h]),generic:{pattern:RegExp(f),alias:"class-name",inside:S}}},"type-list":{pattern:n(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[c,m,h,x,u.source,g,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:n(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[m,g]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:u,"class-name":{pattern:RegExp(x),greedy:!0,inside:S},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var T=E+"|"+_,A=t(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[T]),j=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[A]),2),N=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,L=t(/<<0>>(?:\s*\(<<1>>*\))?/.source,[b,j]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:n(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[N,L]),lookbehind:!0,greedy:!0,inside:{target:{pattern:n(/^<<0>>(?=\s*:)/.source,[N]),alias:"keyword"},"attribute-arguments":{pattern:n(/\(<<0>>*\)/.source,[j]),inside:e.languages.csharp},"class-name":{pattern:RegExp(b),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var P=/:[^}\r\n]+/.source,I=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[A]),2),R=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[I,P]),O=r(t(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[T]),2),F=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[O,P]);function M(t,r){return{interpolation:{pattern:n(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[t]),lookbehind:!0,inside:{"format-string":{pattern:n(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[r,P]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:n(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[R]),lookbehind:!0,greedy:!0,inside:M(R,I)},{pattern:n(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[F]),lookbehind:!0,greedy:!0,inside:M(F,O)}],char:{pattern:RegExp(_),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism)},60397:()=>{!function(e){var t="(?:"+[/[a-zA-Z_\x80-\uFFFF][\w\x80-\uFFFF]*/.source,/-?(?:\.\d+|\d+(?:\.\d*)?)/.source,/"[^"\\]*(?:\\[\s\S][^"\\]*)*"/.source,/<(?:[^<>]|(?!)*>/.source].join("|")+")",n={markup:{pattern:/(^<)[\s\S]+(?=>$)/,lookbehind:!0,alias:["language-markup","language-html","language-xml"],inside:e.languages.markup}};function r(e,n){return RegExp(e.replace(//g,(function(){return t})),n)}e.languages.dot={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\/|^#.*/m,greedy:!0},"graph-name":{pattern:r(/(\b(?:digraph|graph|subgraph)[ \t\r\n]+)/.source,"i"),lookbehind:!0,greedy:!0,alias:"class-name",inside:n},"attr-value":{pattern:r(/(=[ \t\r\n]*)/.source),lookbehind:!0,greedy:!0,inside:n},"attr-name":{pattern:r(/([\[;, \t\r\n])(?=[ \t\r\n]*=)/.source),lookbehind:!0,greedy:!0,inside:n},keyword:/\b(?:digraph|edge|graph|node|strict|subgraph)\b/i,"compass-point":{pattern:/(:[ \t\r\n]*)(?:[ewc_]|[ns][ew]?)(?![\w\x80-\uFFFF])/,lookbehind:!0,alias:"builtin"},node:{pattern:r(/(^|[^-.\w\x80-\uFFFF\\])/.source),lookbehind:!0,greedy:!0,inside:n},operator:/[=:]|-[->]/,punctuation:/[\[\]{};,]/},e.languages.gv=e.languages.dot}(Prism)},81295:()=>{Prism.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\/].*|$)|\{-[\s\S]*?-\})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|ACK|BEL|BS|CAN|CR|DC1|DC2|DC3|DC4|DEL|DLE|EM|ENQ|EOT|ESC|ETB|ETX|FF|FS|GS|HT|LF|NAK|NUL|RS|SI|SO|SOH|SP|STX|SUB|SYN|US|VT|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:"string"},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^[\t ]*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|hiding|import|qualified)\b/,punctuation:/\./}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:[{pattern:/`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,greedy:!0},{pattern:/(\s)\.(?=\s)/,lookbehind:!0},/[-!#$%*+=?&@|~:<>^\\\/][-!#$%*+=?&@|~.:<>^\\\/]*|\.[-!#$%*+=?&@|~.:<>^\\\/]+/],hvariable:{pattern:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*/,inside:{punctuation:/\./}},constant:{pattern:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:]/},Prism.languages.hs=Prism.languages.haskell},52503:()=>{!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,r={pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[r,{pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:r.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+n+/[A-Z]\w*\b/.source),lookbehind:!0,inside:r.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":r,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+n+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:r.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+n+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:r.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g,(function(){return t.source}))),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism)},96854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=o.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),g=p.indexOf(f);if(g>-1){++a;var h=p.substring(0,g),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(g+f.length),y=[];h&&y.push.apply(y,i([h])),y.push(m),b&&y.push.apply(y,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},58704:()=>{Prism.languages.nix={comment:{pattern:/\/\*[\s\S]*?\*\/|#.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/,greedy:!0,inside:{interpolation:{pattern:/(^|(?:^|(?!'').)[^\\])\$\{(?:[^{}]|\{[^}]*\})*\}/,lookbehind:!0,inside:null}}},url:[/\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/,{pattern:/([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/,lookbehind:!0}],antiquotation:{pattern:/\$(?=\{)/,alias:"important"},number:/\b\d+\b/,keyword:/\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/,function:/\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/,boolean:/\b(?:false|true)\b/,operator:/[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/,punctuation:/[{}()[\].,:;]/},Prism.languages.nix.string.inside.interpolation.inside=Prism.languages.nix},13210:()=>{Prism.languages.pascal={directive:{pattern:/\{\$[\s\S]*?\}/,greedy:!0,alias:["marco","property"]},comment:{pattern:/\(\*[\s\S]*?\*\)|\{[\s\S]*?\}|\/\/.*/,greedy:!0},string:{pattern:/(?:'(?:''|[^'\r\n])*'(?!')|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},asm:{pattern:/(\basm\b)[\s\S]+?(?=\bend\s*[;[])/i,lookbehind:!0,greedy:!0,inside:null},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/(?:[&%]\d+|\$[a-f\d]+)/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/},Prism.languages.pascal.asm.inside=Prism.languages.extend("pascal",{asm:void 0,keyword:void 0,operator:void 0}),Prism.languages.objectpascal=Prism.languages.pascal},80366:()=>{Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python},59385:()=>{!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var t={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var n="(?:"+[/([^a-zA-Z0-9\s{(\[<=])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S]|\((?:[^()\\]|\\[\s\S])*\))*\)/.source,/\{(?:[^{}\\]|\\[\s\S]|\{(?:[^{}\\]|\\[\s\S])*\})*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S]|\[(?:[^\[\]\\]|\\[\s\S])*\])*\]/.source,/<(?:[^<>\\]|\\[\s\S]|<(?:[^<>\\]|\\[\s\S])*>)*>/.source].join("|")+")",r=/(?:"(?:\\.|[^"\\\r\n])*"|(?:\b[a-zA-Z_]\w*|[^\s\0-\x7F]+)[?!]?|\$.)/.source;e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp(/%r/.source+n+/[egimnosux]{0,6}/.source),greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp(/(^|[^:]):/.source+r),lookbehind:!0,greedy:!0},{pattern:RegExp(/([\r\n{(,][ \t]*)/.source+r+/(?=:(?!:))/.source),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp(/%[qQiIwWs]?/.source+n),greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp(/%x/.source+n),greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism)},70767:()=>{!function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism)},30218:(e,t,n)=>{var r={"./prism-ada":85795,"./prism-bash":57874,"./prism-csharp":79016,"./prism-dot":60397,"./prism-haskell":81295,"./prism-java":52503,"./prism-nix":58704,"./prism-pascal":13210,"./prism-python":80366,"./prism-ruby":59385,"./prism-rust":70767};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=30218},92703:(e,t,n)=>{"use strict";var r=n(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(63840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n

Submitting

In case you have any questions, feel free to reach out to me.

-
+
\ No newline at end of file diff --git a/c/category/bonuses/index.html b/c/category/bonuses/index.html index cea465e..329e529 100644 --- a/c/category/bonuses/index.html +++ b/c/category/bonuses/index.html @@ -16,8 +16,8 @@ - - + +

Bonuses

Bonus assignments for Kontr Coins. diff --git a/c/category/practice-exams/index.html b/c/category/practice-exams/index.html index a2febeb..0854973 100644 --- a/c/category/practice-exams/index.html +++ b/c/category/practice-exams/index.html @@ -16,8 +16,8 @@ - - + +

Practice Exams

Practice exams for training for the final exam. diff --git a/c/index.html b/c/index.html index c52b363..deeed9b 100644 --- a/c/index.html +++ b/c/index.html @@ -14,10 +14,10 @@ - - + + -

+ \ No newline at end of file diff --git a/c/mr/index.html b/c/mr/index.html index 2e53f51..a0843e8 100644 --- a/c/mr/index.html +++ b/c/mr/index.html @@ -14,8 +14,8 @@ - - + +

Submitting merge requests for review

@@ -87,6 +87,6 @@ For the sake of safety, do not continue without clean repository. Then with comm be main or trunk.

aisa$ git status
# Check if repository is clean

# If you know, what is your default branch, you can skip next command.
aisa$ git branch
# Find the default branch in the list; should be one of the `master`, `main` or
# `trunk` and you should not have more than one of those.
# In case the list clears the terminal and you cannot see shell prompt, you can
# press `q` to quit the pager.

aisa$ git checkout master

-

Adapted from: https://www.fi.muni.cz/~xlacko1/pb071/mr.html

+

Adapted from: https://www.fi.muni.cz/~xlacko1/pb071/mr.html

\ No newline at end of file diff --git a/c/pexam/cams/index.html b/c/pexam/cams/index.html index 5828ddb..0916212 100644 --- a/c/pexam/cams/index.html +++ b/c/pexam/cams/index.html @@ -16,8 +16,8 @@ - - + +

Watching Cams

diff --git a/c/pexam/garbage_collect/index.html b/c/pexam/garbage_collect/index.html index 3fb4cbd..e85bfc2 100644 --- a/c/pexam/garbage_collect/index.html +++ b/c/pexam/garbage_collect/index.html @@ -16,8 +16,8 @@ - - + +

Garbage Collection

diff --git a/contributions/index.html b/contributions/index.html index ba5eebb..3d029a8 100644 --- a/contributions/index.html +++ b/contributions/index.html @@ -14,8 +14,8 @@ - - + +

Contributions

Many of my contributions to open-source projects.

tmt

Description

The tmt tool provides a user-friendly way to work with tests. You can comfortably create new tests, safely and easily run tests across different environments, review test results, debug test code and enable tests in the CI using a consistent and concise config.

Contribution

Just a smallish contribution to the docs related to the changes implemented on the Packit side.

Fedora Infrastructure Ansible

Description

Collection of Ansible playbooks that powers the Fedora Infrastructure.

Contribution

I have adjusted the groups in the Bodhi playbooks after Packit has been granted the privileges to propose updates without restrictions.

Bodhi

Description

Bodhi is a web-system that facilitates the process of publishing updates for a Fedora-based software distribution.

Contribution

I have adjusted the client, so that it doesn't show secrets in terminal when you log in to the Bodhi via browser.

Gluetool Modules Collection

Description

Modules for gluetool — a command line centric framework usable for glueing modules into a pipeline.

Contribution
  • I have proposed a possible implementation of git merging that was later on extended.
  • I have tried to help out with Copr module after they deprecated older version of their API.

Pagure

Description

Pagure is a git-centered forge, python based using pygit2.

Contribution

I have added an API endpoint for reopening pull requests.

Copr

Description

RPM build system - upstream for Copr.

Contribution
  • Supporting external repositories for custom SRPM build method.
  • Allowing admins of Copr repositories to build without the need to ask for explicit builder permissions.

python-gitlab

Description

A python wrapper for the GitLab API.

Contribution

I have contributed support for the merge_ref on merge requests that hasn't been supported, yet it was present in the GitLab API.

PatternFly React

Description

A set of React components for the PatternFly project.

Contribution

When working on Packit Dashboard, I have spotted smaller bugs that were present in this project and fixed them upstream to provide better experience for our users.

Fira Code

Description

Free monospaced font with programming ligatures.

Contribution

I have set up a GitHub Action for building the font on each push to the default branch allowing users to install bleeding edge version of the font.

nixpkgs

Description

Nixpkgs is a collection of over 80,000 software packages that can be installed with the Nix package manager. It also implements NixOS, a purely-functional Linux distribution.

Contribution

When I was trying out the nixpkgs, I have tried to bump .NET Core to the latest version. My changes haven't been accepted as they required bumping of multiple more packages that depended upon the .NET Core.

Darcula

Description

A theme for Visual Studio Code based on Darcula theme from Jetbrains IDEs.

Contribution

I have contributed support for diff files, though the project doesn't seem to be live anymore, so it hasn't been accepted as of now.

Packit

Description

An open source project aiming to ease the integration of your project with Fedora Linux, CentOS Stream and other distributions.

Contribution

Have a look at my pull requests.

Snitch

Description

Language agnostic tool that collects TODOs in the source code and reports them as Issues.

Contribution
  • Environment variable support for self-hosted GitLab instances
  • GitLab support

Karel the Robot

Description

Karel the robot is in general an educational programming language for beginners, created by Richard E. Pattis. This is implementation of Karel the Robot for C programming language.

This project is used for educational purposes at TUKE.

Contribution

I have contributed some refactoring tips to the author of the library.

diff --git a/cpp/category/exceptions-and-raii/index.html b/cpp/category/exceptions-and-raii/index.html index 018e553..5b640b7 100644 --- a/cpp/category/exceptions-and-raii/index.html +++ b/cpp/category/exceptions-and-raii/index.html @@ -16,8 +16,8 @@ - - + +

Exceptions and RAII

Materials related to the exceptions or RAII in C++. diff --git a/cpp/environment/index.html b/cpp/environment/index.html index 7f48d71..5642214 100644 --- a/cpp/environment/index.html +++ b/cpp/environment/index.html @@ -16,8 +16,8 @@ - - + +

Environment

Required tools per OS

diff --git a/cpp/exceptions-and-raii/placeholders/index.html b/cpp/exceptions-and-raii/placeholders/index.html index 1de41ad..f5bd1cc 100644 --- a/cpp/exceptions-and-raii/placeholders/index.html +++ b/cpp/exceptions-and-raii/placeholders/index.html @@ -16,8 +16,8 @@ - - + +

Placeholders

Here we will try to implement some placeholders that you can find in other diff --git a/cpp/index.html b/cpp/index.html index 8df880c..71fd5bc 100644 --- a/cpp/index.html +++ b/cpp/index.html @@ -14,10 +14,10 @@ - - + + -

+ \ No newline at end of file diff --git a/files/algorithms/graphs/iterative-and-iterators.tar.bz2 b/files/algorithms/graphs/iterative-and-iterators.tar.bz2 index 02e2b6875af57670a566d3f8a1156894d625a8de..beaec8e472fe692536f1810da090dbba7f37a54a 100644 GIT binary patch delta 1922 zcmV-|2YvXC50DQILRx4!F+o`-Q&|q+xSEj;C4VH2$iM?d0)XfM0)dp$ki^hosLe(R zfJTf6#KbTY08AqjK+{t|qataMlSYjI(?DndGynhq$N=ETG-v}Rn1-4RgAl?7fYFJF z&;S6G^(4rqO%p@X8V9Hi007aT00xaT$)c zXn#*l0t_jM>7;02ro}O-h-CE)nq<>J)A|Ye{mg)Q+isL%GL|pH3|sn5GG*+>)qf2$ zu2i9sE>Zjj%?rYWB?=9=D^p(Stlq{nJGd073lt$!3pFTHG}sxmz;VO96s#-k8l@{H z&e@53XdD#B04|X2l(no@=~SHqDiovxWJ+}dN+=-$PaAb^R;v}bZz;j=D|SdY#>rg@ zw8ev5SK_{fja<331r;@>QH4-gM1K|^6FPt#vxYn@Y((9PkZ0Owdi)5uoqc&G?VzAx z19ax1(w-VP@@62E!iy1*S`%!zxdmo22plDRptx8_xH+{#GD^W}1%ueqwaO47Xgn#f zXxK|4WM@Y)tTT!WMXh>?prBb$vUz|+%4E|(HSLXe!Vz2yPAb0(s0Rlv9DnL-3dd_w zhSG+>;HM6Br-w=iNcKa_&mm<=FA?vhu1*XPQO`1ym5ug*MEl`oD7T8SVK{+ zrC$h!={vzsp^fE+3VC0atw`FJU~i#n1|$O#Mv_YFK7E@2X3`8I(tM5am)+M@RaGsK z!g4)Efe1DW#DjQulS6^AWVs=7jq5|XMy4KJHY7r|$2qfRWpHqWsa8YSdzGztMk$*N z=N^Ebu4WoW!b(8>u9#)28^iXO61`+$wHGi+T>OitUgXTWrIL@Pp z*~39LjYG9prCtmuL@OZM7MMqrTbaUE)G5fFN-g3ym`I|IGB!$wdWs`ZCQY6$Hjj!O zK1Jps1CH7c$M^=IIr8Ka&L<{H!VrS*j|ki&@4$p4NHK(jIF2r8up|?3%qkq#nRf?x zY(a5HnG1`Nx_^o1DwOF{@g1)cuz8Md*mFJo2fz_309$ytW#A*7)y}HjKES z_X?{JlAu*6$_^uBupW(IS&1yj7=2-g1|XO332^f5S9snq0MJVfHwmI;a-l$j8t{!S zp1q=VZ->UmBEO<7MbHw4!_i}tcZq}~2^J9w2aL=tFO&>8heC$L@tv{W+GrQ!orh<% z#O^3RA%F8DohX68dsBl~c82YDJ+}nZrr<>hlNCJ3M7N|qLIR1TJ@z>P-$ z zZ)=CVk6Ym>ib_`x(cP+=z*BM<9zp9RL6W9S2rD5$r1T9DU@jVtfO0s6*Z9%G2XtLY zMyXY*Ko3&@qGFt)^2LXc@D1OKL{glgUx6LKJ5(qXdsYf{`-|B9e_9F86@U1PFvnVq!D^03uL8k)b^_8k1zoVqqE>OeDspA(PZHX_HM2H2$J~ z-*fgvGw0pY0|MBgN-;*62npKh#+dbX?c1g_62fAag7D#%U0B>I37GRSSgeT@N+kdo zkWfF-f5{%<2?-e%5ZY@6uT*0_GD*3^srA{Gy$U4fe{Oy6$8iM42g)$vNw+ys6a)>SaiC+< zXdsd(!i1yD%!$Pj5}fF^&TA9FD^xVjxl)EixkvCDG%pGelqfdhtxbF8vx6AW?O;-* zEKr3^EYzV)(_m)P0mlxArD0!`YLu*-J0>OVpm9?i0J=l6Qr59srBi8zbd+s`c5oQnhkXif+2{f}BvUg<4|4t}F3hLdKq4+5(E2vnax-EFudJjh!G4 zX~iBUHX?4tNHgs-yM6>*PPVj@cG*B=1=h4nRb)JIX4WE=D{d~6VNsz40xvnzA_ADw z6b17*2tMd8uXr{vX+_UXl!^jc!XcIQe{T8E6{li;$GKQUYbU-eCH)#aM>?9qvD(z3w4ty#smH9Y17WW=au zO&Oq;6Bi5bAxgLjNTzqCElO6RUI~DbOvj_ccbM%u;B~~{I`=+%Cqy4`&Pi6ZtvlLK zLPx_75f?rm%*iT}r*-4f1paK881z7%Aj^HEKrGy90#_P%$7F zk~ET6RrGCG12%|Z7L(#{%)Z{rs;a4MjuVmUGzdYkUL+gCp)@#~7E6*Be<c=Oi_;k2ZUf~f1qnt0r`g-2BY*uvM?$e*9etE%oPLc6OcBI_am&J1Q_$Q zGZ(i(s00{C??l$V)2#x@0uPk?gylNULuVZX+BFWvUZr@jp%AQtY+7L+ac*Y`TTrJe zbf~w8-eDq&ILO*69r`GZK$$jpIa)plb$Hit2pqQ1elNf^0n?W-f1Y7EvQ`j;7le4m z;U9VgAtFJHBq7LhZi@mzH;lrey3;Rkcm~856n7zUayQXD#ZsM0ej~NyRu1ELWH&v{ z2f7g|09$~#W!)p4)y}H;@z6N~lsI`xB2q9Qg%kP#QT)KNb%9vI49FrM2W$h0*RCF3 z5$%}`!-w+W9pv*Re{FFv1jKiTl`x>x48FBPeh)~`*_sAxg>nHIK+Y)pZ>usoqoQ0LprV1y`CB^sCR78V7xf_1iRKI>zIszKq? zcrF|MM0Ev2Dll>rcH&P0bkv27ze}9X8V3-TeF%y8%FTjspqPrLd z(g_B0mq5fZb|i*W3KQ%D{qc{^YgU8*7a=%9-ABInk4fi~|9+=m<>{zR6KU|A+n8=< z=cA^n3wbD7l?wGJ=m#^1U4NAvAa;e+lxme)qyY6W3MMJeFFaUy&gk9vbVVu775CBJ i1F=GZ8b`5Ur+?aB$L;%2PME9z#oUoj6eJ52*)72B(mbgE diff --git a/files/algorithms/graphs/iterative-and-iterators.tar.gz b/files/algorithms/graphs/iterative-and-iterators.tar.gz index b47661c79bdc37ee1a754661eb87b6a6a3f1d349..1d9ccbf0205d0d60e3ea645c26f5700950c29f20 100644 GIT binary patch delta 1900 zcmV-y2b1`y52p{18Uc}!8zz5>4}lb?QXIR%9w?JoEEf9)))uGC@TuH; zQhHJ%1kq-c@x?3V`m-K>f{*WfKJ)otF{8cHJKEiky$2WrlU-AO#>^?bb=ghNp}bwI zclXoZVsfoKh4LJlK6&OfVb~0&Bq5;hW~qPxWB74(8oLN zcBcOWr2PL75cWuWR}6pT!4K~LdHVn5>>Lun_G@g2|Dg0{TK}DPQ^)`N0N=BmYjVEu zIGxr`T-$~~YPpVAdqqJU*6^rQav(^1Gjm9ZEDFe15vqr_>3IZfq&w)5+X-cq49Iih zxZHt|9Uvjhm^C*!C9iNcA`3D=IE~P^#M&lXbO%*pIlKp-Ks|pBEPYHIdaJ-NDn}dW z3|{oedy`RzD~Z7HW*Q(Em-Waw#~~FJiGYM6O8%8?4N*Wwa_5zpY!LXw@@irPNC&bB z$CfI3Na+vXG17#_E~DmfLX0_B^c=Dzy#pCZlC?{Cw}#Y9PeQQ9#1K1pH#X$F3OPQO zo2q@7KvYo8LI8g@&X_w5XC18}ElbI_#4DrRXO0j+u`P?W1_WJ}r&$up`6z}yk&t1Pu zmQ9HvF;83{Y_&(~Dxu?|J}f9v`&1H5(?bAjkd_bz_0WI1z_t15=$d*$nttVIg;9Is z&golv$AMs$#)WMGsnwhlpP|4M93Y@+!FumlKM| zWA)~LB2P&pds<)xVv?V+H-w~e=L!!%SStKt?UUS?A8qUx+Z^5;ZRJ2gG=oip^OH*w zS4H=tN-lqUMl6tt4`ghc*It!e5FcJc^S?B0pH@;vi!uK~8S@cP^@3Jyz!tEuAYlMe z*XP2FaIm6Mb+9cQPj6p=7UwW8j6k|r>3`rt81cdEdI^yj;dm7{UytVnNn`LLundTl zN&<3JOpgM`Ivt^462@F5rNB}Aq@zem%hGa3XPtk%`VY=k5HO}&*MJ-9zh=ADSv&t9 z9P0Y-KH#6f{*IS`N2P5G!oX-^UL6DrrIv#A(bD`&zg2CJ4J z#l8mj3`wlvBb2>zm6Si@gX3d?4~CC9K5p@GhmSA#@XN{QqDb&zU52YCcCeOnGpet7 zPThYc)A7sE=u)7otEg1SU(LZ3Zpi)4%c(gjBq0y42-0m4B)$PDkbD88yA4PSsm**O zR%AIQ^_`D2FCv25BEq~YLMbrBe55Z$z^bHmvMeS4+Fg?VhLD&4 zg<5xT1GFjsHxASHf1OrG-~ZnWY)6(6Vo+>Hj#L#AsuWpTQv z9u2P=E|h1zXjpKWK0z;Y_`7mloBV%jdf$}4Acw}-gbc$WS9%IwRoQoJ+FtIt^tV%R z8yR=eWD>VC3U%*(L%8CKg>)iTZz{mQf<${do$-Y*rffowC?Wn}keC1a_tXD5Xx3Y6 z{hx!D&j0rT+aCA(JM9191s%7hbUkgWJ3~R`zC~|HPzr1NE$D2~AL{S8Kh%HE?hm1C zWxwNLwT-GWM}DL3QD50Ts>TtlsmlX8lcQ%!mg}e1)*RB zW!3&8E#&OYh|D|aL{$?FE)X;^o<2od)mR%OB|_xB_TKjiY2?g^^n0t)np#N3W^if<6>`<}+Ostd2Xg9@eBBHR`TkKOY>qtseSV=@f zX)4ihrLuExz1LQiV)XK{HL{|MtE^U5fRWYALOQXFEhUw3Jd4JIX=F}m_)qWv{{L(J z|NolpX0yFV8u!864_^O2fc~#S|D9%|vqAs6VovM-d*A;n^nci@w>Id1SIlYsfA9Mr mW&Ce7Ht2s>%>Cf{*Puaz29tgV84bh#2mS@aXqL|aPyhg1q_lPb delta 1901 zcmV-z2a@=w52z228Udk^8zz5BBn48ON^$H4d!S5Wu~_UISlgU3i`z5$%yNg%Z1LtX zfB%|U)3I+3{3-MP+}jRn0EY($_*-wc>f*iLZi`=pX8mxle$Z;Q+qHv66YyZL-q<6x zE!QmsfzK^Q$Q}z^m$GcUp*Oh68-JwGc@O%f15VC|H^=2S_JDc5H{yTh+ta=YpUT}Q zr6(mq5N%2spTA;WFzw2|)s|eKt$MSswHqz;L$?cdjO8VqE zaXs!r$PSSZrp%sMoRU{K8<7PWAe=_%*SqOi?#u@V_(X692q(v$DmUv~92h0@$D7Iy>R-d5D@-$0AIUmK)ClWCa zlAkA;iY#h{SxX{FTUiYc>BtHkZuH~IML;Qk4rmZr#P9ewFlwa4AaKl6SNs~1_Y|qy zvF%V|NX!#209);nno8)nXaEaJ)E<>Y)ASI)8l)veK|O!6E^uvrI=rU7kY-RhT4I=Q zycvBG?5(zviKAhn!x5-=2)f&&CJEm-dz>xE(zYO0c1HECYO%nd>6d6uW+I4t!o zW-Q-=Pvj}7XHN^QKuiiU_J)vD?o8nU2n&T@tbLLj3sxKZ#jyrAM_V~i7|meQ;QZv0 z#8uI`sFHunt`Q4l;sY5u*0oIGbw5e`;Vst&h>Oa1pf2qOWQT{j^TBO0&b=4h*Wd9H@TjzHK^PiM%&WuTBa0xPGoarkCs3+zdU|I~rVbTDYvoK-#bDJE zrr6iuo)L*Pe1x)Ju9EU+d~kfs@xkyh!^bT??(p#iA3-@8T@(pEs>^Wo#17VSZbtPr z%c+06WIBF199{}^brqEg`O7(&!VS6KSvfT)g(T$R7eTr$g2Xo`>X@HzP!XUT+oKY*H-(cw!Tx!%FY}JKNg1snGr2^G8 z|2WFei1)td_OuOQK$PNsY=j47MYBT9%r806*u-u?7{4jQ%Q zTK}in()s^BVB6z0+Egs$efN}>n9Rrk^OxTt6s~{AN zpsd>eN((uAGgjsucA~0@1{VmL7*C%ft!k_dk`f_uZ@v%wv0;RpRy2TQL#mR|k`g2~ zcBBl51^hBprXLKzV0_3T$fbYefzlgglL{sE(`rJj0hMJslAbqB*C|WMMeh7@#nV!F zu}=yKio=P@3JC@COqhF&<*@%%)bvqYF6>aU0Zgou%4j#mZDK`XxwqJ-V%CwAsIZb1 z4W+59hAWkwd+WWnsuZJ_kFAlly12?}WrY}7%`Bu7yVz1viN>>NJeW&HmWKZX58(g5 z*8l&n(Q4G&d!&9J%>Cf?{{!g%D)irO)ax7czbodn{=fJAze4|qjdp8;{&&Tk*8lgu n|53*OMstJycg5Tfu78t(2N@BA1`QfC{D0tIA15uM08jt`g^#ur diff --git a/files/algorithms/paths/bf-to-astar.tar.bz2 b/files/algorithms/paths/bf-to-astar.tar.bz2 index b619adac94bc9581715364a539734e9b718ba2d6..04be529d91c82018aecf5676c3b4f0ddc006f6b3 100644 GIT binary patch delta 3152 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 delta 3160 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 VE?8JX#E<_MatK8@P>|Jxa(?`5s6qe$ delta 1414 zcmV;11$p|642uj7LRx4!F+o`-Q(04PP#2L7hJQ66000Jopa1{>01W^D6(k@+0%?fE zrpUfo&8n)PRzykF;_mU>vDh|bp_t|*qD6}$ zA2N5v6-6pjbMd7ptKLP6mKL#8t5mfuVxibzrLM&BTFF-}j8#>au@)$jiX-`c>dm37 zk$)SCi3!Y7B1R-hA8+C652StL{-&x=mWGLITk)kh&T8b6+-LYXqxyYMTiGgLq@v{# zbd)Gx6;!G$T%!ev7^3A6QAALpNktM-M2aY)gi%372}Kb_5{e}rp~mFyu0CD=cj2Zv z^XTyXBPoom-=oNWgPp!{Jap${qO#rm>3?eCJ?$pH%(VHr=~B|U?Jy~)>+quOjy>w9~G!oq~+^R3i882M3$ver^ZR%=5HnO#wRK9TA494yk)=<)FJI)D6h z-?yiBFI}51%hYVsO!QVn=*wJdZwEXlr=0S0>gB-)6vMddE^?MTPSVG4xkqu4gSfGS zLnAVb%}om#6j7n%G&L+NSjfoC$k@4qGeMa}jLaICH5V)_T-3ptv5{iM%}Ok0V3b(Q zxv^sf%}q>=1&kDIT){@BrpCsFjeksvG$_o}Tw685CIFZ+~32>jlaj z)F$Gw!x3_giyMWD8_ng-jpp%2g&K?(H4^0?twdnZ$k4&K!C|_4aFH7jg5_s4S$UdO%2Azg^i5CV^YP9jExK#lt|3Xu>HO9=knXn=d@m; zch#TlwW|E~FOK{-?=_xZb^l1I?4r`I9}$oW5)`sz1Gt2!NU|h(Oxm_UA_zbVgqG|E z1PNh`(8T^Sw7=A^v)z%)J`bo&A7Fm5tkZW3WxM`oz5lbnpYJUv9e*N%q432oQZMvY z3%!1`_FJa@_=~SiRcrdPncCs&&qAtG?VeNSo}b=7aOgSoX3Zpbm^}xK<}5KWBjlS+ zC&%U=jETBE)#S)}OP-ZZsvY#bS$L{i(dgf}uvCP5pK@vpm}D@z zbjcS(!@&8QJraC{LSbqdME;!6`_FLk{W+YHP@Ot9F9#_d+z&mKk?WN09R!F(uz^rjT+8Z4~yat@BEh zsIR%w9ugmkCmB+H$64Tck2tB<;+5^H-XAYIyZ^>UH#Ci6lz(sU`LQ?3m05Z1BGvi_ zDYDn1u~lOq=#o4$JI*e{`@NHUn6)ZaXPE5|NO8FpPFYKTM@3bNt=Jd+^O4AUy?iQr zj){pbGlTUU4r-kI-fN4G4A;ACy?PdD=TiY^;lx U77(!`|Ha%1kxmpO6x);qz^5~|00000 diff --git a/files/algorithms/recursion/pyramid-slide-down.tar.gz b/files/algorithms/recursion/pyramid-slide-down.tar.gz index a336fde993b7a554e69c74aa39c6340a718aa7a1..15b0e02c8f57d7d9bc77be83f2f2b750f4b0f0e3 100644 GIT binary patch delta 1093 zcmV-L1iJf;3y%ws8-Idr*eq1rZB?z>>{d;-FA=J|Fd=TiwrrCGW%J*A=3?V3BoUi- zrSl2o!E^32W4^H+tz&QL&rXtsKVv7e@HY7V$1qL9<)^6kw|C;XE$>G%23aBV~U zHe6R65q;gX4vfBSyRPN9mVTfcj_tSypzp)^F07K&ivbSeReun$xLs}*PXF1~|Bb?5 zMq!)+AL`yJ^%uRjaqO*=)5F7P^?Bh>VY={=1hP2+_lJN`eOS5_4}OrsA`Ip%NzeH- z`Uz)I2Txv3E+-Jl3D#Ab99dVA2`4aufZd7?CEr`HV4hy17>1H5ZWJnFa012zjmY48 z(=b|pyy_^KCVyEix0zv!uxfV;kz9o_@DyQ!;jcg6{(tuA=X$tU155*sM{wq)*S)28 z*Ae+@SrXl{&O^DZ#o+jqLUSAWf^5vvRU8z>^$C8Ytdc7)lbg_=!P4`C&UqU9!5k-n z7tfR8Af2z1lr4MVD(yuml6Harz-jIrXkcqF)VSGAwYo4Gfob88A4PZ-VY4F~!lNtCUtqI1pWE^__n)_G zH)k-!_??#24PF)e4$PK*Oy5HN0m>M9OZjwBzkw-DIW1urSVKd@qG=c@TE$OGPy=*| z##}V!a%r@Q2ghwmZ^(U$5KL5b&yVB>7hcIl`wRs|3zb~UTdBk{bi05pyF+>|SwvCpW@VE>^`sHb6#o+_! z@v&{Vt~-BuEN4@ zXMZT?4KJ-_w3HOZc=iM3)e=ih4BkLm8d@?~;X%$cvot<(EgHJpZ(WT-?C|06zosOF z7erL&|G&hH&DMKk|2z4=)i?Dj|2Hk0`2S0w#Pa3HKbzxgLJA3!Y)r#NiS=JWN08nI z!faHTs$y3e2}ZriCEA-bQZa5BI|VTvkAI3vTZ!qHFEvr&1ICT#MdPt?qHwKRd6kq^ zO;l(bxqQA^-so=OqEFqjsesy@|9$ZM8@5OK_Z##2k3~tZS$kyI)?ad zxUM)NY~8dD4BK&BSGP?I<&3`5Hx5AGhx1)nC8-w!9K@?2V1IGD+$@~_v#tLdg};o# zI0Zh`y;bTjdT-;{TPLT7htcZu!k@x);Ux)Va{}%U0ipV^bSWPEAcaL3%vqA2^J(-G z&Y}*UyqsK4Ad(ZTt28;Xt|SvqU<3iX6&*^xw_w3My+$z%B~#oeRK(x}j0qZ%!S|+N zwElS2Q8G=kT7Pac!xmxH?iM1s3S;0Y!WzBSRLoO6KOTX83MVJ)V(NMN5Qn#|0k0<- zY}yU(OCj8W@N@@nxKSm23dhHHRnN*htb!SfQL9kTH5_B6mv>n1CXF=w!=GQLsB^~! z(N#@XIj*T!@k5haaoDN)8r}yfo3prg_Wr|Pf4=?g(|^zPaIprM1{{yz%uBC(OYg2D z^3}2=x@Db*a#@SP@hOGoHu448n5C;YD2nS7{76|PS6(JJp+AGA=LenhH1>lzP698U zC&fWJUnePB_QF-#i%=x(99`g|g71via8wApDz*qZwe^>+C%(|?v)~>qc&IOedvGvE>SDwGXW^q2ZY-Inx*+@}b^M8!UO!LN%!4O^13F@FsHHBrvN?*OgaC_m7pp4BpggdVzZ zO)ev|wRqc=K8HMnVY9Bo6XE){jMn54-iJGGq+gpQU6CTgJd+arj(EKc>s`;JG&25u?$Uiw0E&DC&p-LbJLG3%mP6 zIe%|>X)U9rq$tL-A1JSuSZZSM2GY{dlEDfOa;BN3@sVrM&|SNAH43rAhr|Dxk`P`H zQJw$)5;Hbi?~VQMQ(-4nlADGmq3Z-%aMOJ$Jc}u5+>Q0hKmyGzk-e+y$yuf zs4`W>t}+sgdXr1EH)*6|+%k3wVmclbm4CJp(=T6YqQVD^8_$czW8*~OTD9^jDXW^O z&^B`Ue6zgK-NHqmx@A)VwL8cE9DSQZBELj_iTo1zCGz|KLIeN%;Q2RfkM!?3{7-jG z;(srJ68{q;|CQ`j$zcE|J%AnvqJ<#0SLZs JsVx9d006GpE;;}J diff --git a/files/algorithms/time-complexity/extend.tar.bz2 b/files/algorithms/time-complexity/extend.tar.bz2 index e3660b8a318968af8bfd2a3673bab45e561cbdd1..5fe539d79776bbf7adc0d02707a991f28e5049e1 100644 GIT binary patch literal 4078 zcmV&IG|NsB@->U!b-~IqV00ICAU>ANK z`#^?fy~D0;YpgmnF@1GF0000004vSsYT1-3L`H)FD2k$zh#|&?ful@~G-;3+m>>We z13+nz7!x3BdWuc?sY#FnKmY(9pa1{>000qF_N4#-000000000000AlbsY$d-8Vxcu z14Bk3pa1~K4H*pqkO-0>fJTE-dTFMq`4V{;lTXwUnuABAX{L>+!8U{nk`N|>X`uw# zrT~)yZ8oI!Jx@r}(jG~p)C`(wrk|&+K7;<}^#6MAq{}3g6lP$He+TO7v`)nRNoNDI z3c$FT1Inn85TK$(e7}^QPgJ0zpry2`8jQRdHsDKzs-q?ZA%A78T8jxUDm5V?)+`pp ziTKF}6UEvmwxRcH?OUw7>xJL%#gel#GIeAC1IyoIE=kgk^y>)^TvS9hkWbs~dWkth zb_VbTf8PQL-R7fTdm&lB@vywAA6blAIF*MdvH71e=e+lyGvIkX7HVwSvk9|i&6_Z> zkv(yP$?Z?h`QF)WpHqu<+aYC_U8hBhxjC+E`9E^!2R6%#n>Ae)QL2utl)~$-;-!}u zQY^BWuFXlJhE3O8$%buMMv50*g6O3g7FjIGOD2ZQE@ZJ|)#880x^(;RD9Pt0Jp~ZI zO3@EA>cc`WhVBt-5Eb&#?H+zJP4XLeq`L`LRXzGE;}`b_OxH_fCu zZw>{VDvnKjGmTD9a&JdRX7l+tKO?J$N_AOni6rCi{gQa3PneDz$}Y3>bThPcx`pVW z!-|0fDhY{)6a)~6V8Mf2E%ytB%WBoDmj1dR003=OajeYMW@mv;NdiC#00{t)0zib2 z-D@n<5{#0J3`050vyq8LNfI(h!bol)E5OLyJ9h2ad*1i8t!v)*z3>452#AREvdqqO zvoky^xXEKx*EL@ii(2iJwd)qO*ksV6mRV&fMIFjZD9K{QCZ(u|svt-xNU0#Q42&Rd zIE|tn5&&GnLO=-#03;-mNhFeX7^3L+r_b?k=fzdo09Zi*4xg+i^Lz&&pOh!gNi0b^ z5>I%Nb`{VH>QGk!f=>nP+q<^L7)ghh31Y6D;z3uUH}uR{#KQ0(EU2w2rLc%$TvFGu zhpLCu^inH{=N^ zDM(TZLWqkjrII1`E{1YM!8)PgNi-rypP=rYT@^5eN^D+>H;~?OoDOmu#d(M;&IgkZ zBU0y~vTVsLm|>~2RW)G2g@a|rYEed_>#$PhOR16?63o#?!jz>Y3@%u*iy0Ouv2~QW zODRj2SxH5V7ciGKT9vAlrD~iJsc)63Vp*$cB&3pCT(aG6l1U__l1U`BZkDaor71~g z8f0i}XqGN1MVb_9Y}ra|8IU9rRNw$$8Gr!*W&i|X2@MDU7zSVfR<%{FYbw{8EMUmc zxprh=XxLql*luJR`?M5)?>BKFxf{^ujZZ323xg+|^ENEV9ce-A%?x zic79?Qp>J%OX4r{uy?R%qrc^7Q@<*%LsX{)Daopsc|JpOE+e0a&xWiYf|bXfs>BO zp_xiHF3Czn$!y$ImSm$5k{iX%hD$8qv5_5LsXSET|38(%<-yZd?j_qYT}v*yc_~eN z9ZF#{YpU)FQ^}JHsfCIi?{Q{t2Nj#?RjGDPOB<;o?hRTqY{JS?ic*whvdgk$!d)q= zWU`eV?rqM+7H7=5sh0j*we+bobgqyIJ9QySk2s7W^a`|CPx<)Dc5$)7)nmAt0k6Qbtz1U-6(go zIi_sXrj7;|He_9!HO!P@*&hwkWi)U$VNBA_$=Ofd%97dSAw>^QE%lz1G|LEO!gRui~J z#89zGOxrFqSmNaFU6P_qFiLeWW6m_aRWMJ#y_}p8#hXaEg$ypiw`A<6e+1hOZiA;| zhgzyI=HlR-&h;#$nXc@^lLeHeDN0i%mR*x03#oRc^s3Q@Yo;*Jy5%c(6M>r}X~Hm_ zLS2!RYMLyD)fdA;%pFvvC8H)1>@Mn^%5!q-hVBNcWz^h~b79=-vYIkoh8A->j5#!Q zT#n(?*$QZ~=K~2slu@H(-3oP1cM_#4+)nw(}N~}03bri`?t(S31UEJtq z&2^SEV@j%Q4+Ra>oZQsOz`}^53L38NPUSvEy`bWXg|v6T7y$7n=MrSvQppqYJ&sR7=z7?FZ)1~3o9{j62MLoj5KiQ?63iGg zF)Ynh%e-CEN}4G}C8;${6qJ&jl8PxQB&9wPX$VL;zSn&=2Dhp12<;NTBtQ zLLVvALV_B@Gc{V0Tjk{2ty092SfwmdQkEp7rHWGBs??H|KSGzK)}KJ0){+wB$V>@J ze`3$5D}h2c5x`VEMal*!F;`+WnWbu$L-4*A^)8Zqu8V~vl(~U2QXG(O3=x3L0c=RJ(Q&))i55>Kg@!ukFp%6w`pp|k#9 ztdenrllQi!*}d0!oB5PhCSb4LS%yUz7X@?l7c2s_xq`7@Imjuj2P}bKsEQh2c)9o& zK?;WzFlzpl++VdLcknfJW-%wh_Qa3qJ_`D3QPkM?DWEI+7?~d#V#SJSrp=|TYN`f- zpll7TYO1wWt!rBZUeq~Lu@9sb_d#0o0U8+2tp9C4~$itVIwb_`5S>=LrJHo6}TuEra+ElxcJxMS}C%3^@CIQYBnIm zFd&m6GoR41=&008h@JiGyNa8sN>b`(=VYcH>h`L=@4?l;l79|;=#>-!=;>T{aj?Km zi6_;gLP@*$N2gqQ+U{-VzgAOnWX1mrmuxrID?5hItgR(QLR z`HY0fSiGbSY08=8wkwZFQ9L+a+zl?so#UD3_5!=Ru@uSQa95P#9RO_vQ^b2S`n`Xq zttj-P#>G`d~aCq-MjkYdHJLJ6tWbI0S5=qgN@M}3ap%=61Y9e}3>GE-W zw1jYyV5;Ut0N+L+uHX^6N6(izVz?|s1M^=(tB@nSHJI(-3iF&|Ba{33%%U@Tz4A}k zcuo^Ufk$q~d3OqqDSX9w5EA0Yn8&M;q)Y%FuvP-Q2H>sJBP1XrMs;RHfwTe06}aHh z77~N#jcvxjumLmNm=yPX6^gmQ(&&siI1*0y9WIGrl!-|xBrZuY%bQ|JN!(owro)() zT3S_vlF4PJV&w#Qj^#+Cl4y8EkvvGSK_DvtPEZY6*P%nx;*v=K65=N)utkn9Q4>o= zY?2&bjFNiAb-A5@D^Gzn6kA7ND{pLWX7|BeV6(Mut()wU%^zDc#XH{dB=sZeNo1dd zOQQ{>BHrlJTH-~nF1kdyB=r(bWRnRwq3e&KODp5i@pd>SP?j<1&q-T(u!3=OpgWuaxulPqDI z($SkRCoqi=M<7?mc4#7G>jiQ$INvWG(C(u)6cFwOcb;1n34^563c+rBhBd?qGgE~t zq{EbcuZAunXkS?ixJrDAX8F#}p-e>CM*&Vzy`&*FQ;nZED|_{X7cvmyDR2c~s^8n47$w-nvpPwnj>l+X-Aq) zNdnW{Wja+*M{-&dRA%(Td8J3X>u98$VLWH^i_Li)FTj^>!6dWXPdZ2DPhw;;PV^$2 z)slE7Lv{%z-^uqbWJx3K)!!w0qvKROH)Z97D4&IG|NsB@->U!b-~IqV00ICAU>ANo z`#^?wbKV-}(bo={3}0VffB*mjfB+TqeC;&L?8+p4p1LH7RZ&GH5|BwHPxVtk^q!&W z4FELtG}90oXwjepK*Rt5H8fIt%_>ZQ8Vvvd57htxpa1{>2B!5YnG8&Zm=hoaMvXMc z$ix}|001-zPt{2pB^d#spbZ%S00000000C@5I_?kl=hgD(w>HfNPd*i#2Gy&q|-yx zXvwl_1xW}KK{5y?)iP}am?Ilesp@{DX^?tN9*}KKG!Jj7KC}Jj_IhijCRrq?qca3v zuFQKa*qy0>9j9&Zz{pI&=2S?CP*EbjPh_6|qEJ!NQrcAwMqUh?uqDFPQIi4?zpmCT zMU0#pW{A4hV$9ky{)L;}j=h(WnP0a{?zXb*u2*Nr7D~*_$>qoZ2ZP4TE=kgk$<`7d z1XM&ekWbz2dWkthrUw88f5$-t?()&Ey^yTo_}E@m5AtIcjpbpkv(yP$?i|g`X1?Rp7$2(wnED;yH1N2a&uhS^M3`-4sDkgHfp*o zqg5SQDTUWv#Y-+Qq*-M%U7C|c44baGlMLFhjTA1s1<^_}EV5aWmQ4+qT*+d`tHl3r zgz5L5QIpQ5J@SZOz_df+op@+P?7M_o#07kmeq+nXX}-``sa}?C1$@U*uNNfw&6#Q- z5Dqnu3xCTsLTm8*0=hS|o#yA$tSuWG4}K5c1-N^~%pmXc0y*$uYXIEB4*namc9o=0 zz0xVK8iZ!;O6?`p>DukyjojxpS>M(;35k&)%~mufCPad(dowjE%+4Jh!0b7&@xuTR zq(jt_OgARQCTo$nrh-aiJmU13eAL%lW#i$`Sn3gX4;K6Iw-1S3IAqqjo!NT%AdSqm zeFk8y^qJbWaGOYS-W>&;Dvmn(GmTA$OR5IriK+G)Pcg`8-3~&E&KEc{7*hlhOgM1DV1gnPC{Ux7#^rLlEn2m7U&n|500#9}I?T;hW^}2- zK#&4J0zf1HkRc>CwU%j#MoC5nA)Q89!HGsmQZh)wNNyl2&}42MyLRlo?|a(TweNf0 z_&^{55fL4XvoonI%+A*BjFvTBb5-$JwXWGqUa@OkhD{17WtLKuQQV}mjFv1?YFdbj zqyj-gMM(vaWMKnwyxJkyKm(>oNC6=r1cZqsl1V#EQFMHB>iIZx;;QU`EFge~gXsW$ zr)X>delQ2l3eYRK74U+*L0tf@r3G*pB#(xSG-%D6 zHjLO|bjg~T=T%izn>8s#*H8l$y-QMAy}j4EvPo}pxyZW;Qwmw4?O0)>R!Jsl?s(A? z_9RaGq)#{F2`MQ^QVK$di!6l-A?Yk3ilcCO1UX>20x8wd9n-JBQwUV1#pttn4hJF7 zbCBRG%t2moIoNp`mpu)WW=Ukj4NaPbNb$gxF>tfk6XN?f|iN-SWxgt=0I>L$oz{~)Fm;o^GXK)x9fDvk|TGmys zG+4orp>piVz|pX~BDxcoffZZg2hB>PFhuhHicu1jM0A?OMsdO_&WGI*HfE*X#h&Rr z;)tG4%CZt+JqL+8@mJ>{>OABuSODtENhH5rTdzDY!wfLQl74fm4Ial8mr~2HvhRr9 zWtJz9qJ z$jLp9PeBb-Sz^hVlEcu$CmS3Y95rOP&D_b!OOi~PA;8s!$AnVN*_#}k>w8+%x`^Op zP%_F3FP# zbjr1J1Wu*ri7OD>|6rOny5SxQ+zg(%Wb#i1KU*ubb34s^S*gzzTGNY0ZiS59#g=CI(+2I-r*{Ud7)nm(a>-?vT}o3T zI3*6P4oRCeDWjC!$%BJ3?HVp*qYlXu>xxp8r896fVN8W`s5|&vZl9Co(Vp7WnvUs>mq7L4+6t5h1|3 zmrIICGG@&%@KTpN1q?9Vo4LiwDb>O^8y*>_4e~e}sY*M{+qkJ?GgTazVC2GCN@!-G zXBeXkwp`yN&8rGg&YUA*N>eqLSqa{qlX`txM zlU5VBM#NCDNle==Gg#u}+qs5ni85qLWz@*a&NaPNFi*Y4%^VTMn#I&E(SvUE?^Cw~ z+YWAnr+LGzRTy(|a874sEToyP?_tS;%2Jf2DU!=B$&rQByHfg9Xu~zq?F%wAi%r~4 z28w7j;hMIXCNu?gpx5)ZCJCVbRrPG-SIBEar7E zaDCElP16dY9`}lb3ZWu;8WCQzbgKUBxMP zbD^6x)>zSvDygtM6gN_Hb5kb+3L=asYP-2Rl=+(Vf7)I2{@<#{*GGZ!{`*>do_s5# zbanyCPci6i9$??GJ68r5VZmjfC&JC09ZdrAHpR*7#}Zy zP<$j1hs<@5poX%{%~qtB8F$v!sbWbiQkE$xOA=C2#VKv7)RKyRbuUY;K9N1mBqhm^ zm=cu!rJnFt0)%cOfT(&4lnhW}uEc9Ig4HaC;Co-8bd&3JTqz`_%n6c_G=#w^5{X$7 zU2;i+C5eQxC5d8KmL-W|Se7n&vsq-kg$ji#DSN%^LM`6=UsGa9?`7?MA0cHvRTfa$ z{_ogHIKoNxwx-#>7h^N|6jml+uijaPMHm+abMqH00<^h;v0o{~Q&5b#G`|^h z@GgQC98|%p`WJD2Sh*X9cz#hM?#9Q)wJo;q67#$9i7|+ zpaVeI8(P&>YO7k-wg|o?Ia9R{uod`0TKIujhVuZ2e1stb;9fyMim&|=PBLWXNj)## z;W&~^IWy*WG>p=A31Uh2$tG=;k{ct&(8OD3M46VdP9BjiC-xeN2n6ETs1(8#MS3NR zR6+crM!u)QNj!v{ayO9Z=E>21f@1Lpd+@(wo1s(Gr726P#!HW6o^nY)I{g*)qMzT% z$o=*$5;(GQDsobkrPTchtlJ40eBWWX72;_$^@6tr0~E*+%$FY;{@P_kc1%&OFjG~B&sFF zuq*JWItYmP@1YWsh^auMC~=>Y1-QK#;hmLLm*T_n-NXUIW&&|It#b-^_990wUaawV zA@msukg<748q<|C$!u39kfL^BdvqFIkvqpT&+7$ucVa1%!r-qdymSGy5l_x~^ZR{X z-C9xhBgVy5MdR9F%6)uN4$HjL{r8cDj0&7B%8H(quu27#L_qO za`ZGv8fFkbM()jmj{mX*xO>{leCwhjGgqS@+6%ZPX@D-nh|?GrlKdM9-k){ z&qzj@CJL@(P!1Gg3hn_LqZSUbYP7&-vj z14T5-0a{BfGZ!c$#CIx1B$GqJEQ#VtDF~uTLOcV0GJ51a|0PvbP(}n!QDBQ4UZN(J zirFMMzY!$$g>|`|pes*OYACjj&{p2)+|B6)b%Q5;ZmpZ_lFc8jnc|(F5hV2^-jc~b z0GCD^NJYXt)_sq$dCScj#p*1Eac?YOsb{v$DU1&VdwJhhbG}}lvH84pm_!G{N`4iZg43n}E zPHM?K6Ct|ZadW`%rchO}IYcW+P8a5NtOTRR<( zU;p+R{rayr2rGCz{^4i9^Kh1?moLWSo0}WuMpL5reEf#l9e$&j-JvrhsiN%H0prLhwx(tGA$E6c{A&BEL^1~F?AJIdK;J*>f3IY%+yqgZkxuEA(byRS|+PGkZwHCX|sOz>C z0=O3Yx|#W@x7ZO;iJ~8lz$_>_nm23<8kCsTMv06y_>NOBb%^~pa>B_hicf|YzUv0C z44gQ@`Vid$@7OdHK>Rcc)6vwq@B`@l_SAtBaD4}zGJfB``}Poh`wuUD6+3>Ipr4{J zVm)u8#Jm3JuAum9eNp$d&2(SulJ1-B*cWwQ+f4VhF6qA2ihU~TKHW_BX_s{0 zF4!NR=PuUSQWuNVxL9ZHT`ZfU#-t#%tctM;b!?JKLm*<+^+JZHGa*~ngUh&`Z-vQ% z^Sqvkqyh7q-WlfGc~+P%u#wjrGjDX~1>sBVfLShX)7wuOqX^_bXB1Sw5X*RCL$nXN}x$>Mb|+2Y{g=dr;5!5Usmo? zBv*Hk7KGVs0SK{S0c@&@LGr^S(6kgxS<_T(8zwtuv)<666wZ1FnBU4*&zL70nbX2m z?*Q}0T60>}H)cRdGjm!|zXs+Mu#wqPe416kpb`)=uWMA%NM0wZVzxD+8n%>t4&BP< z!+9N-Mg+PhxVF1wK2NKs>n=5)w8nh8?ae3E7YdTsGX>E#QfY`(&CDk?yQ4(y;yr2! ztXmtIPil9^e71}BbajD_yxx>~opk5qm&AIK1+3~DGniU4^I1{9Cgu~&rESl>Q4Rb} zofh6GW%kJ`yiv+b>vrBK)v;n3g}+I4ThXk-8>O(UMGIfGOxytHq*LDL>*{G^*^=rt zmK3)#qUzy@DFu9J2GbNORPq6}k+W&$Qlt+qL|k`0QlK8o+CpozMSgBGMZv1AP|R%* zrKdKi0N~aD0TE;x;8`4wz_mAQWMmN(B?>WHDv6;fDp)wpX3h)D$|i?%gvmi&_~g2R zbtIDUl?n+F8D>Te%t$MknIwY~`{ek-#1L!qu|`+}#qJ8$$Xcus8EbkotdR||Mhu0T zbF8tuC!zt^bj1b2Q6>~o(HiC%;{7ytOAcBWf^l+#++4yIoj?z2j_;2 zS2)s$sfx8?u-Pk>YMsFxt-B^GutR0cnKhV`pWE;%)HeC?W|$-3q1%LGjuL)5#w;CG zpl;-#g9dF0I%3$|(WMZtQkJ#rPhGVXazFO$c-1TaA;9X#ac1g3}jY!qJ<^*lM+}A8Dw@dkQp0- z4B}7bI^{S6Q=(dP%f`L~&~nSB8MzC$g=Nzq3bBp3_0qt4=|+J$uygForp)Sfnn05E21$xZN_ls%`?BoYGgB=J`2prfo z;UaLLW)V10bNj%7nquHU4KZ+_h8Q@MD9fm`DyXabm4np^b-J3HGhWH=LUc>46@!gX zr)%Ab9IUmdvnr^o`&wIma5L2Dsu()3``Jb4pyMKR(DC-6gHFWIK__D9pkpy~C{dPC zXID^H_kFP44s~X3&Ul4m&Cpb_Rtz>mouPIoc35(SErG|bpsw!QKl#B8QO9n3?E-Zg zxbS3tBd6<{Lh$@bPB*e^AX&@1^rl;A%9=RQiG|MM5h|H%zm*Ry}l0(ceug|dH|{wP(J z%l;<(H2o#2%<=x__%u!HkvZPqw4SEF4U{ zGROOyqSN$uS`x>5oRxFGi8zwn9&aK}OE+h4b8lKYIeVLK)0qsLT%bG7u*qkwJGDoh zTXVnZG|PS9$C*yEotM0S88qAZ$orQx)0sRO!6C$riVKGqDG`%Q|G-RZ}i6w@-O z+S@#smLb*NroMD0+eI{jyUTW2Z4MuIp38ltwnzef6sau_oXsLA!j7_8Rx3g0@>rz( zJ)S(42TolPfwh~|l{Im97n4>hH#(0gY2|_QR78O7CQoGzz`B^BBHxfastlC}PD&AP z4|kN5vKnEXOh=LT_^8rR9ykL~Fq|4GM0m;U~f29oIWKklP^?T3@#3Uqxq zhrnz&7!y+_ zLD?fmi{43e6{gUwihT}PDL=iHy4fC}i+vmoJ}>3R^_a5Xu41V@7x@!8CtodpZW?>u zg6iO?7+5ZY&zneM&hxV}Urw_l^h4MCRKq>GyUWJW%M)QY%Y{4@4#a%h)mL&nIYj=!!F=K65}5>^6Mq?ZMRqE_)Ss&C z%NHn8{5Sg&YpjX?D8;xM|B*iayN}X1(i<$d9l6z*%s`0G7O(Hz=4Cdn)Khwg3qc>) zjU(B|d<#*d?*uTKl$}fk{pzI&e-1@c_zcej4|#!i;ei!$LKpq%#gUh=xx8yHzD;M$ zf%JmR`K$9u{bIe6>&ln;HD4J-+4e8FN6#<8yqGPit4;_xvPt~}MOP`C^$c*FiE+Gr zWZYC%Q$J49g~X<1tZgQ%8Yz^PsF6h&%?SW#vB##nWa!GKUM`RIp>|Ut1kRV1fw;mB zMX=T-u1Mf}*G&pm=P(6TUe7gz+_6{EFMw{Q-i|B9;XIC!M3998>C8zPd-;=-=+cK! z1PCK}{gvT*VTIYsLcAW_9xjQ>*?dx9zLP+13BE3(Yp|6iKmkrK)(Mx>+|2yRtP03N z%rT$6-i9^`k}7-tfjei({F=j0XW}6z+18wp%WoA6*&Z`jPkOaMIJ1;Z5$`z^YMI+M z+N$t<%7T^5_^vse9IA|d#Rk_0KSzDc(wDyUr7wNyOJDlZm%j9+FMa7tU;5IQzVxLp Zed$YI`qG!a^kv`6{{dq8giipV0060$zSIB! literal 3913 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 diff --git a/files/c/bonuses/03.tar.bz2 b/files/c/bonuses/03.tar.bz2 index 63b9a4480c7f1c2ebb4d4157240e79c2795a4fbd..d937d9f567f37928b2ec4409a27aad800321b811 100644 GIT binary patch literal 2643 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 B1tb6f delta 2626 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 diff --git a/files/c/bonuses/03.tar.gz b/files/c/bonuses/03.tar.gz index 360ccf2a21ca4a218e6c9b4f0d550debdebc5633..d213730d0495d322286aae18944c8500f50704e0 100644 GIT binary patch delta 1339 zcmV-B1;qNG5~LCxABzY80000000ZqC{Zrexl3y=>#lCR8OM(MV!;u{|e{PH{>aE)= zPX{K#_U0ykHg>ie;=8f4BcAxS-Q0e@(%9VE+SzGt?=;O7v(ebu-d+Lo31vzkVxbiP ztOSwgkzg^N{{>O!EisW2=)S z1Um~kWkZgSC(3H7x>b{E1eSk1$G=VdE5A+nU}P{&+0~3O1&O51Vj|1uh-Sbh_8YKm zz>WdG8Suj36U;G1azw5pb{)~{h+jv7I#Se;r2ayTlO>X3Q2(O4&p>myfJX~L6 z5~iE}$}7iCw7?y+`ke7g-LXL~XTM)b6pbzl8>$t>;E`e88qd4=AM$_pBEGZORWc?h z$s*H6GUDZ>p++H(c$HtTykD_dEs;ca?T|mq$I!(#a;L_J&f`$OdU^CTVrEyKv{rr| z`TgbN=OTkh##zn|+igryMZg&IXz#46@n?=>i=vFYt77YL=rUif@a$c}Vpy%k_tr-tgCP2QJ#sK0WVbnn?$uHn7v6Q(hKK zj<|476G_6rC0-_y?CCC#E zeVn_jMjls!QZC;~^vG{{o{yg-lbkw)*#RAgm~a}v%O>blEOL`$bk6&pF)?e6DwZ#!jjd); z|Nk6tZ~cG&yD9ZQb#Y&>(~BE5dD|#n<(1<%UYP%s#c`pPnTzG3%KbG~x#v`xKau&q zP|5h)Di19$(JZ$_5{L9sOB#`6D_7|MSzVE1?6*{;%av8u)^Y_E)ligDic(5ZN-0Vy zUrQ^N)q9F3U-VziE|KmX9|2LRox#a1_Se}3Xn@!C5v-$sX{$B!${Qon+(NSw) z+ohvde;vMVx9XVPx9k@$pnhq&F8*RN9$5St1h~%Ymt*4KW=`!=i3f_^(oa8Ej*hB; zzk)#(A delta 1335 zcmV-71<3lO5}*aE$& zo(@ce?afX8Z0u|`#CKz7M?CRuyScsbtg*SZwX?cRy^_GgTmdTa@Dwr4J-+G0`o?_+KUY_)k^~qH+KLBLtx}>)^9Sx@E0ZMz zI}1ByLynIp%4({*6_aZOmVa#E-zNT*-zI!8GMJ|9YQ~s?MABw4k>v)W8L)}{25cL! zW590)yfF9#b4-yOk?V+ENAx=4*O8!(6m=x2zYybOiKH0$Kj;s_E888K(%CQqIaL24ZXZ%ukY>>;@?^hBi$RLt&mb1fl8&gyfFvdLEJ8NqEnd8`^C?oHx*cu$V%$F-Xdm2lV{F&Gz&O}=9 zQFl|A=5*U9e;?z*dw;5c6pKA4B&A2q`+^dTFfA9Yh>h>!B(Yb`hAg>}-xIjRo~=bL zrGRYwD*s7b*N00#aGigZ(-=`6QvJ(v{h_5d{B_)ci#D`R&pVlB(t)TA>@?_`zg<0r`^rw(CuK*u2_oCff+2|5*v+~gRY^SK0V}PVUG52J}s~p@Ug4>p5uXxxK`!~WJ!S@&WKAiPeVPa zp@%cF7fj90Ozney>w#-0bMaB)_U2_?kz9`crZ7ppH;btDV$pF@HJYF2k=8j|Q1r z-udpkm+Mo#BWpy=IP*DvH*;#2N<2{PmVWxVa&%M${1ptU zApbK7)P33Mim}0tzUgfC36Apnw7jD4>7>3Mim}0t)!t@IU$USG538002c(m|g$? diff --git a/files/c/bonuses/04.tar.bz2 b/files/c/bonuses/04.tar.bz2 index 9cef7aa1633920006c804bf5b67ec61ae3638619..1a42d8a3f078b5fe877ce19d827f359f883c410e 100644 GIT binary patch literal 2544 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 GKF2@@B%c5P literal 2527 zcmV<52_W`DT4*^jL0KkKSpai9!vF^0f1LbQQ9)h*|DS*F|L_0*|N1}x0ssI~00>|T z{`=)@K84HN?pxl@x}bIL%JdqQH&|0Ztw13-El zF&b&0&<21200x5~(?HMxqd*vjfJqZgMKwK7MxmqAQ!<`YOn?B|L7)Ht000092_-c> zOqw1@0j7-sqfAYrGz|uT0001J0ThHrg!N3*L}|2`o})pdAOHX~&;S4c27*L{XcIu1 zF$Ba-r8Yq^GJ2RAh9J;r+D1(_NCR`=pD!Px4OFPWR+5njF>pa?zc_l?HS_|csVE}O z=c?;q3TMx+XI&*_>o4R%;*7hec&evtUsu}!!c zjRq4c#E5eSaH?+L6t$8`L_;kg5f<_Q2GRLGtszD8L46!HH$~sM9-Gnu{IG_#%mMY; zv$p@Y&%3|n?Tho4(e<3=1CRQEZm4J>>6146ndIocdK}j&u z<6yE{()ulmA>S5xoYj_931dm{{+ULWW++T8A$(E8NO1?7kxga`hkrdBOwNkeEBWs%olmv^S zO>CZ`xOa$GokT&dEWF{YHCmTN2;@7G*d1d03t)(k<&8? z_3gQXA9Z#F%mWyj8ZtJ{giyO<22v{$iJ#=ta2(VLoF#|yB1c}p9AaSgc?Y` zo_h@dppB%&T+IfGQIXp&S)<;dK*b`L9F4V;PajXe*7sLDWAPyTq3$Dx1KSBWVri3C zSzG*~aS<_F$+fl2W+f656GvCa5BxC7A@EWOWIx3PH%inxYQADGwL(4t6ohAUsChNc)|FaagYh$y$*E$-803QR z!Lq_KqN>?a!CViO`Y&+(YHtRgbF*i~xP{RQRaMWYEo1smIN!~HS`~pct%sw+r*{zg z0Tvb$Ht>xIt|Aw`_-*#k&8o-mop=TeSdFD9mn_RHEle)KLyQppiE<#C;;kb#x7@#4 zvhcg0^rLp1QKXD@2XEEbW{m>xgE3y7q{<_$@(Ug^PgedZ*LFUoTQl1f5I)&22+0_0&5)CUX#my~GoqC9(JD9|Akh$*N-{P7+ zri{u5DmOT%l4?pG9#^AiNRre_5}R#moh83bDpUAKz-yMZ~nkn1(|@W{-RVj26!bkp)T^nqZzG{7V(fB}s3!1{E0robgy>glO60Fjl{~QR>Lq zy)tP1gYuJ~8N8Zulo3ay7fIow8BnB`$Sw9ME?mX}su{>5?DKm-)uQ_R@GWCKIOisZ zsod5;k$UG^Rz?Ss)KN|iM#^R#;Yg~&T=P&y&?E2AUvM&YF<<4Gv1eb<^k-j@6RVym z%t6Pizd--Q!d?Psz^scOs6CeuB})iF6SdT3NE?Xoy{u*g0)-X& z3*_?Z6@vqor)u5WuPC7F(qeefSvPksy$=q_MsEv4l(RCkI3gl5_e?6l^T<<5&a@T| zYHtf|@OW#gs7J90m_h}h=SMJY5*X6uln!E>Z3jZtf#CH;hd)_}<$4RpfpZ|~z(~kM zm4_Q76hja@JJ_A(8GCU+KW0s;4_TsKay&}<+TJWFy^Y#R3RU)o25ZWO7NJ)hr}0xr znu$7GdrkS+A&mt7!byl@`cMNnkGgl zV*?tc%5x)_3{pnVWL!Rhs+J{)(BEMCWz{8`1$w}hm7t`N)Qq5==(N0=;4DBYw6L)B zC>Jf_Jk1+28MzzAfcS)sq3)e|_3BZ$7Hbm*^zr<5IsD!k*9=zD%}C)qq(m?d80ADn z3KDX06(C5(lp=(PIE4!mThqz|uY(dXH><+rOuK6A$jG&I-Nn-?gN_eF6lAbPqjCT5rxMGpx9@2yS`uJnOCs>PhR*3vc!C6$ohAs9bqfa= z3>s-MHpVHU!r@|U%4A#8FyLuPr$*MQqY#+kmU&IhISNrQ>&>`WH&W9Lg=O^3HX{L9 zxSGWa@X33|V~ZZ2CvU!meEIE$gmZ9@P<`(9jbIZ-_Tm6I8{rZyOuOA-!P;ZlvXlx^ p>ZPDIi=H8YcNT9d1fo2$d{Tnd&^lw5K#+gM+>uTcBmf-GFu*DalpFv6 diff --git a/files/c/bonuses/04.tar.gz b/files/c/bonuses/04.tar.gz index b0729ff216ab8d2626ceb808076b56e3b30d3f89..fddbac7b1349e6f830b91036fc6fd11a4e00e1cd 100644 GIT binary patch delta 2500 zcmV;#2|M=06U7sd8-I{wrX`u9#BG@*kO!pgo4(>Pwg6phnUidi^i96|Tgf&UV{A&3 z++Ck{CdHPtyV{@Hm0PLpH7~Urd_lOw%g&wi;_;yZa8#>_-|F#URlZk`kL9m;tR3yY zsMZb-kB<+Ijt?p?D%FG9!Tt+Wd4j#HfXf|?A@qW|lw!7ioqu8LH%asVr=VM4eAOb9 zSgxfq{2!MvY!p5z-CnEHMhE3eF_(LZu9*FAtUE}z>4=P7ra8o>xv4i=;1~#KtWw(@ z+SKK{mi8SNa~wN`Ugx^oRC-8^lqcSg?oBCQl;(B6@$N!F-g;o8++p2yw4sS}nqjDT z{#p=A&_Dk4>3=-{3Za5hWSN7xqej=lB=DY32{ho<^hLoSlr<$LX6RO9l+ZEHkr661 zFB|8I+EkmJ%d6If(p6h$=(5poegtuvrbfr8(*-Uu%N|g#-&KCQZd{-b?dxI=p_j_MiC;pE>D0s?Et{ba&8A%1bC^xX<~`!>cz+C=#>N{&u@DdKe#VU143-HE z2CUy-G(PlDez6xh@PKx?W1NhsTde}3W|{*1&S4tbonk|y4$Yp*rLbVwWeU5LMKXDYr1QiGNYd{V9WsVaH_@Ro>@IZb*3(5Xf%2JYhES7v^L2sl%brw*t z0fXHVjs>f|9QZ9%a7Y*k-4bU)s48{D3x80ggOvIN{CdZy93B!}mPcS?K~CS>LH*8I zM=*GZTC;~?=lf@XYBK{0eyFGe&HLsJYsu24%hmzRSY66`EUZwe8EqO~c1sLrfKRZ z8l%byCgX{NK6*dv)!l_Zu-p(-B{qbOsBW8{24mJFhKx{&Kwm4AP;c2omBAuN{%F9c z!+RC9hwlopcJXvDe+^q{t&yZ#On)IOdM#(VN62>rdT%|!L%f{?93}ZtA%6)B-uyxH z#kX>J1g&IYu~&2g1)6-Q`}p$h_3I+?$V733x+RWysCzq*FUu$b!cyrjV;HK$6ZB6I z@T*|B<2%@Ef&J}mZV6ZPoO7I$c^-(e5WvA&`UDl`>WN#VYaF9jgI8}>W`CrvTt{rP z@T&dFS5p**3~M*5Qy$q_8rj}fWKYw`DqE4Qr;+{qgJd688QIh!)WyqdAC^rV@C$q+ z#B@P%zNtTGuq$seG6A$Pbu9#KxGEx9Mu%qJJV|JUf?2%!jZVAMR(`c!C#e4?Pst;> z{@<@29In>?hgtpq9I#Z^n}1{|i}+}u`B5SKza*dDcdpxK>bdfJ__g0v8oleTzoc{B zS3B?3cVepN4Yk_uTkTd~Q7<~3t5WXaZM2xVVzM}v_qU?>_sX@Q?F45(aiSIGCH&1x zf$uoBv~2pv%zVH{kfg&H^CW@J=1+?~K=n7$bRsTpMg0jx@`G9ZG=Kki71iF;)(tEA z{(v1}W+ctLq!px%L@_=AnMIP_M(Ztc(W;s8S`XT+DE5XHK+w2};UOLqDz5Cy=y%(N zYFT zCK?CDU{IX6D;FJ!A%BQk8g-$oz4sjL8P3wTztlnbivpbgp$}tE#3S+iukP2XE8l-B z`$yUN{~Qo^|0lnaVbp{Z{Ibz%FE0A>@=Gc#315E5W?p5OyQWhJr4BzCY?V7oXeB@4 zyD1>z`NxNq1zw&!@e-Nbfowzr{@+Sr-agZLrVYMUT3qqC&o3&c}9N2<6M=e6h4LSy>%|-f?ws zf1{!0YHg|KS{3OA-=|1({ut5>eo`7JMNFjneXjMTFj zsSh?9T4Te&Pk*^>VO0bIltwG=>M%`sz3NWWG>{_Y4{G3eL%aW!2EvjW_AN~}@*3!a z2(V>oBvdV-eR$r0r(>(kyGhuR@44W+Uy=bXnN~|FJ`OBRJWAtuzMiGvSUoI>i=zaV zfp3j$)3k57I?tv&>S2DCOx(_Cxjaj9phWLFUpqM{mw)SVzE_RO9I+`hCQM_7k_|#_ zh`oCi?4o&}%f)0!6QLq|p+q>j^7YffEFZcjO}NTEjJd^)qC{?T57*q{M$uqT9-4Tl zqndn(N0Z`23=6Q?8W-IGrWsIwY!Mnvi^lq?|mo6;%6&}AO zFFyRK>3`TX6o%#d+Qr*LYACCChNxB0F5RY|oX@L*xZ2{0Rj|p~`pkZ?X_fqlTG-&+eQqtp$zLXbZ!tkGzauw6&B zN5Pj>%~72RR_FJ0sb$d*_7a;`)tmJaane46?7_Tge!VF*c=1 z?yk=}lVVHSUF}cp%B|E6nwQ26z97OCW%rx=?BSsT@VZu$zt!WTs(P;;AFE&aSbKf= ztXexdIzFz{4qw5#>Z{se?HQ^(!d}+E6RyD#dd59UG2gt-Vt?jM()|A^m<||UcL*hp z=ja^&+anxXg-=?y*Xp#Z1kHSL7b*-&@t+CflJJ?d(`W9wSQhWF3^Yebuov~bL0si zj5r>9Hn^L@FQLYCYGa=kx3BkLysPQ$ zj((hs>i^S<#*v z+<$P;h;ZRT{b6tyv5_JLH4ZZkD46C%!^>?0R=-y`P&0BY1fUo$A_7qcKfWv$JfxDE zGJ&q<^0;hefu9lus+-Khr!Mz!{XjkXIuL>UfEJSdtCFRp_E;>XC2Al zK5ES#hMgat0V?Ab6#P(82b!OoH>@Scn66p}Fk^M8>anmwm1c}-c-bwn+zI-u{snT3 zV#L{PKsmBl&U8F?>bYoUaH1;bThN{FZ*mrl4&`MS#{?~I#(`PSp&_(|`sH~j2Y>aD zQdSHAdn+x~tYj@ALB3<%^`%<8?ZM8LFTipen=B)YKz(Y0MGV-p?+<>=h_L<>wHl+! z2`1x-i$3~4o7LTgKd{^oR3$frt*CCBz6N8~B!-MsiA3KhlvHooM^(WhN&aZS=)*f5 zw1>YHV(sGVVDTEZ(ncdGx0pg!^nY8L?ILBOw) z;ojWAUP|mg-sV zFXn2B!jNO*W_`*hJ4++m+llOH8d+^8vh_5wpMQ|-{W>E?T|zy)y7qq6!~ws+H$qI8 z6c?NNod&z|CnFO;8&l6g(1z%7rvciP&o*6RfI|Ku@wB-j6k z)mKMr_5bVRtp0xrSgGr6GJjM>d^FJJQ6c@mq@Lb)uG?q&x%ON5wcphmz3c9LN$0w+ zci!vo z?>M%!Y|f9F#lRdvkq%=lk_0+iJT3PC)!)c4iM+U#^(PR?4`%h#{C~q$R0oe+H>~OV z19qjEkuvj&R**50#rOndmPvLOt+(Vwt6|4$J!rF{*jrivLE|Qehj>h=ys|H&-dpOl#u%`&U?TBr#?T?cSYGQ30<0!QdO2h=ZRVd^p zh5*H2P@KFgmmP^EiGMl<^`NW0^BwI8&eFHP)Is@+0-XP$4`YwSBk}yN9@eUB-+wEI zmF)a~3W&S^Q(wt2YQhPA*=V(w7kzp4B^8#0FF#Z>uX8Ls+bx7r$2=MAlsigjEkEIJ zQ$WOvj}L1L{5*N$Co;7I)rbcC|0sod&zUYVm896{^|WrkFn_0WvgD|mkG|IH7lwu) zX0U_a^*c2vrp7H5I-|M^?UV30_P;$Yd(;&b74rRZKDPTpC|@q;i>0;6%K8xWj_ZSm zTMeyNYb!n1x=1(pE=8L2hmdCQlhQybnj%PG8=X+yA(myQS*cu35G>Jzu~OG!q@Kk{ z{c5YB4K@t?RDUoB>oO3aG+J|4mmAXSb#I!cffOl!Py@$X+Wn_A5SG+pw=~_z8=wy& zz?PMfP_={(;du+5F4MVxldvP-bIJFxqyk(qt(H=J99Y_Tl*aLVGfT;_dQ_4ZM+qzg z-x@L7X179LWK$9Kuz8kD+|FsaJWFz*MDIG^I5{Yn>wj^+SB=RWu_-hrOk;+U4MG{j z-klD1G5pWvax$ceP?5bhSmGp<=cH~DC>BJsq|cnF((?=+vc{@gyR}Y;(3gu^(((B|o4Rwm5g6S_?6`#H)%cD7TjlWu!tJ(QiKgqWxMVsiVHD5pG^cEc^h zQ9K!|rEQaZOqz`uir3Pw^;JKE3^K?dgA6jrAcG7t$RL9ZGRPo<3^K?dgA6jrAcMau N{0G+*5pn=f004Og>ofoW diff --git a/files/c/bonuses/05-06.tar.bz2 b/files/c/bonuses/05-06.tar.bz2 index bfcc657c0a9c4798f940bc8e39c2e5d9b1e50eee..da34f7c1a9c9c7287909eedd8b25626373fa6008 100644 GIT binary patch literal 3641 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 LrwS4T3bP|b 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 Cpu@ue diff --git a/files/c/bonuses/05-06.tar.gz b/files/c/bonuses/05-06.tar.gz index c6da8f7a622b8e8debb3942d89b525da9f5999c6..38a772b840ad713aa4e1d7999e10069cb23fba69 100644 GIT binary patch delta 3342 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 YDyX1>3M#0eg1#O4KM@KZQvi4X0Miqog8%>k diff --git a/files/c/bonuses/08.tar.bz2 b/files/c/bonuses/08.tar.bz2 index 7a9fc03ea941740db113e8633473076416c7bca3..e8347e3ce04479aaa764c48570a367fb46b39dd6 100644 GIT binary patch literal 74457 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 z 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≷W*Rm{t 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 Ez*!c`SpWb4 diff --git a/files/c/bonuses/08.tar.gz b/files/c/bonuses/08.tar.gz index 790a5cb8de9c8568e8efcd825fcccd84c761b0a3..975c2569c26b26cd9eaec0f6ec1ddc792f883d2e 100644 GIT binary patch literal 103594 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

l~|GCW}Q$urC#ZE_;EY4+FIDzKd3QK(fD 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 Wf8j6ug}?Cs75q1o46g$K_(A~%qrox& diff --git a/files/c/bonuses/10.tar.bz2 b/files/c/bonuses/10.tar.bz2 index dc6a4710eabedc14b05b5981cc549955749237f8..06b77af28f8390e4a08f10f5a46803557fef505a 100644 GIT binary patch literal 234829 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ˈ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

ZTzp;iR-2YTm;avj(Y?0Nq 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

#XdjQjB-8(3X8)>EJPPXt`=s&`CIgw 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 literal 234785 zcmagFbx<5W&@gXa|o#O6Loa1nc6qgovE5+UJfa0#j-Tm;xO5fl2e9yf9 zzB`jmGP9e_CY$Ue*~pqWit@=AGwT{#&JooB9Nqu@KVk24$P?gyK3@l8|d$1-d=Gzd^Nsa=>F1nh(|1=6d@I6ube|>>hfAG#^7QFAG3jKmC9+B$%(tmzS{IK7w{L z;AOy}W<50&2)P7qjK)Z!*p{*Hxz1MaK%)8#B4eIx}n*X!2?i5N0;|T)*5VnDrEuRvvUVF48kb>Md zB$^?QqU+IB5>jba`4E50US3li$pXt5?f3@%^0MEF; zUab{`Z*|vuEj?^rJiywQx9;-Kn_xXLKoHFD85-zkDBK0PS$YLYf?&X_LV+2Z<>k$K zt8IU?T7k1`^Gz4fe`6*FAL5mNj zll4F-wLB~zYVFhw2L4%xTpzbl;B?OblfAn^d0>gPcFRjx_v+P4fJf)xFUZQs2<2m`~ce$I-dS-9`Ag%E}np( za}YS#!)m5`+xYs?W)`%0dGWm2Om!^b`!E5aUIqubclo((2j49uhxHb_nY>pV$W76dbQFTsU2wgO?>P&!L?b_B=K-jgKB~W}E(X4`9eyz09ApP1hsc z&8sJr83{wyNg(j5)+2l?_$X)Fzguz$D(Juc2?Vn6(UgQH1zf$JgRXjRtNydIZ5oAq z58^Fwodgv0@Hhlt0EJ9kU1EQ1=X!|Q?2`2FhC)U@Ol-S(pZX)ey1wo_JeHn^OP-rm zm4h696eT@FV5O%($gAnqYx{C3&}es2hs~+#M?3hcrfuC`!maBb)&v>}s%=vRcGj2) zwtLip?O>4C5fiiKAecmRF+Sjb*YHh1^ecMg))$IoAunB`)fFYOd zes}Bs{@sQ~oST<6ABBH45W}3S%!ltV&q3?0dmFQ}FS`y72AwnBz^;q?iwTE%33sU5 zA`g#yGH?~R1*6f2LjIE&w3=(A=?!fk?|RM82Z2F$Q`?|+v$~hHjXyQ5Td;b+g}U?h z?hTbfVAm^X^{^cbHTCe9I4?NvcG=7~HwU)^U1}@Mz;3^;4E?*Je|htC1l_nT2d@}r z!+;m9XAiqBmlK7+#rxY|HSKMeKp_~52jq3RZ5;}M*4MXsK>W9ZN&1i7B%5svL0#aU zysafzv?0hpIpTO-NVDz^*aBHqYidaoDE_&0yrT-dU3JIds7HQO}LmxLHvCAY18 z`;RjyZJg(luN}AT|Kf|UTfkBW`cg)m`AZ4}tcy=kwG{d|2`Aa(c7_*3Q>*xtT0IKllSB zAy-=+P=DQepv$uAe~a{Wt7fbFYD&VVJa*}@6)qN8Nx&sGqLSVqnE6^j@9H`rD zZcEuJ)O-mEx-xp&Jn|JDHW=9a;9UDCtK~TMF~~7zV^&51un^gEP;CVT|9>L2|NIZLTA1~Jb#lR3vdR6%)M#D)Lp;cW-|63GEr0Dx1`|7rvHPb|D80FVVByapit zwiXhqpBZpe>Q7!izw1XgS$U7iWi4wqirwY(c%OAuqVuM;<324H_tExYLhPIjACmoh zYGSuGyjlYXV~8wIde)u*kB(>*srZO-1e%VoP#!m}jH_h;td$ti_!O{HikUGH0qwLI zdaRA`v>k{|JNSM5DX7wj@MR6OS5>sdDF6y2*(2!`_`W{Q3Yj>7S}ZB827ptGo{lrj zUXIvk0NEj)F-3+p4ULWt*&g${8dpGo5uRU%g*L2$s4Je+*_xDz8PN&tj#h>MSspGD zFgYp2YY&grKu?>2fNVMMNNd@jolQ&pc{BnwoLoU|)D*kQR;DwlKeloa9;Z*LC>$Vk z1P71HEFA_Pp^Uk6ndsKSf!MVvUVx-RpU|QgUv_}vV|=t_%8DARXbab{tHp62uu!in z{3lwHh|S`63w%ocWKeUP{#SG#)ucTv1&Q88@iU`uK*!;STjgvVy`TGsUs(Bc9zP$lZ3@5U0#JVm#i|jR zV#Iu&I)%eY(F{&Xt5>tePf#JH5M^{=)Q@Y^KHC1wv$p!r>)-L$Q|zTuG8wa=fG=Mv zZU`_+V*YIYz_A>_R6BDFyJi89$SauPOlDSwdeS9As9!q%t0Ezl>04L!*WiF9tpywpIV?r6UdssV}R8{Wx5P zdqiXyG4eu|ntFNUZXAR84^>&SQ;zbXa`+(v)VobR06NOj$$L=(KbZila!!OYvNZZw z3K~Dl0)UrS9#vm09MG5w&mz@=2hg&YM-_ArBPWd(M84RBzLfi_ewUtLbCZW}yt|A5 zSNd3LU|um_*nPH*&%N(bcF3?(51(5rA|Yqmq~EfYCXQ9=Wvxsj130T0QOX!(I2Xz2 z>dDoI!-cRj+Ru$NjQ2{n`KDTV3l7jXRE@qHds0EX0&#BhW^uw(5`5*pzau7ewG$TI z;W%#ejzS4>F57+VsPDLR^!G=pX~!uCZ(>X7V?Hbhp(r!?RJ8uyOW`ya(TmsV@;SjW zwi4Uz#R=$r{OwSRzYc$C+QA9lMMIS(HWwy7D;{M&Ttt+cuB`Gr7iM%ZLXe&27;S0ty;TsR#GkEg zLORkPmDpk&w7b}wsKnTs1p8y|g6Sv9XYx0Fa-I0KQ}lnZpA|&(4@Cc<8Gee#}>X2xV$~c;+5HepWR5 zRL9SGigTuh`&OSeBOl>R^k`TWiBgnoo_1z+LNsQa90KVBP$@oIF_~gSzxtPwpnq zkAEZfR8zhgM|)`=h|uoOK5hCan7$f2lC`*ypeiei_>B+&-HcAFaZjV$-sGD-FsxR| zz?dMild{wYW9SAKot7+Ii!a+@(psG;@YiU$<0YNgRbqmnD)1x44XptIJ@V>wC^WNjk=_}W@JNT$jtPZGN&mb zSScD8 zd)^rME!pwG_G?|8K%r60=~<9~XP_LOpe-TWBq_&SEO%f>m`WJHpzVZHxq8BQW5U|{Kzfc!NQ@ys=$ViLd82X`oo9`VXn z9$BrAo*7aGPfM*+H=Ya0B;<7VO1rgIz-9-v5uOYdWu?Jb8{V^kwO#E(E}D=>^v z=Pgd+DjU8ywnEML!0z!vroO?1^b!Ar1B*pX^2D5z5|t^Y`uA<2&IwaOA{==YU9kVG z6G%nj<@lE&+SlTPW9k&%KQ#@(i}2Mr0_U&1$2z2YO+P#pD8hXf}8N4 z$1lC4iQKT&Y1K)8k-wOD^T1M>SEJ#b#`Z;JYzw%~*Ob`Hi80SNm9?^S--oCi(Ug=f zDEwdoG60Miru6|Kn{e~rR&m=Yk$;%DN~%@4t7me`$~5TNcHh;`Qb7Z}eGHJxO>;lX9sMngPogGPZJE{3EziTY+ z*=UYn{rzPg+`>q@YJNoDrHW}4??_MQjwnwWfjEVVD9`m36~k3QjW>h$iPD za~?DG=y)DM$bH3N+LAJV+==dl`KUof&u9@x2 zaQo-^3gLTB>XrdUzS*VV z&JP8_J*6w0dHk!)_%-MeJ!YNQ2EVnMJEAk@@NS|3nJn$g9DK5s^fndc2^j4aK1?l( z2umn3xZ>tWxhww%D-p#wLJ+<9-+P^@oIjt2(9KiAI8oSwr9U-JaMPDiMbML56j@mp z88T)|k{=Cj$c&ZckfPUw>At?{zoxu2Q_Pe8^+wCvriG*UDo21|eHP=*YtDl_;{_h%lp_^PDz2=BW@b+b0D*$^DPG?p^rrRKDc z$!3?Ivc9FYHrJCf(a{Vsr0SGh(Vx`BnjG*tVLmv*9sE9mBWf5{Ps1GeLqs-;NTS=; zWp0McmvnpZtROpF1_nhGiA&Ad{=^V9!$VQ=k*hH>0;Kbu1J$TP;4BHHJi-@RD*A=| z{c4m@o{w8?vgzcd)r%t2gQG7u&YjPXshBg0av+^g>_%Pe=&x(?e|53*yNy^TSbD$B ziT@%MfIC3?Ikh9~VhGiCPp*zbAR+xQh)STq3uNmVPs2#H{dL+R#)Nru zrC=a_N%BX=2G26A>@I!RA+oMC$7L1{)XLU$Gx19~!}B!#lQXSR*2yLgmfGGk-uRDH zyK|@OgPRzXWW&rEjzXF`)+*1mnd)%|YW(eTWjd3h6(vGGfXE4QD=kf~JqoZIS0Ar9 zdJ(_aO%p#hr5%!@j+H{g(@&CU^fb2>+DzfV^^1cbOWzDdfcS4(db%D&aoHJRRQ0d< z=m80|(+`ZRi4EgS>A$^?kcxIU*VO3eyRr@q*_HdOQtTZtu-HD7JtC*07g_ehogaj; zu@K+vdyt+B(Ds=o|L#VPotCm3Vp}K0MoUK>q2hTAYLApd^+={kH>RT=2$G3oCNI!=d&V49D zApO;TEj_2xj|2l%x95X`Id`CR6qB@QcFX5!bl}?`UHV-xCNj~d0uFJh@&Ip=x1KYV z*Z@uqdboFU(~#e_X2!JBTTw!PN?xh~Pld@*VTNudG?OZ?-8CipSd%O%j<-%J=ZdnY z)n)K5F!_j?4vxJp-5tYJcRoQo@YAue9#@MWCVGqAPFWWtIxm0YpSDwCKS7srkQvh) zqQECqY#t(A@hIWB&RTma5oA7e4kYP6cz4mAo}X zOSvvQkvHTkj+KThf$F&+()R+jsd2W?G6_1PfD332BtM9&84zOP^BZTf%A4X)zpKdI z_e0KVm5g;Z-dVeeB6`YKF1<8w=a}!dza3YpSuYgnWm*D1nOL{Kvy#a+JHJ(v@eSA$ zp)0IZI~%Eq@M=^Tm>tmOzS3#0nh_8>+A@~AQZmMrhU&Du7d?h5VXtL~<*|L|9VH>% z$3%%l+>oW6uFi3ew@68dV0ThvC*ys&iEL^eA(*HKdsi7SaGWcvSBNOMQNMJ+tV3UUTCfP`)Jvq)>$Wkj_l05%Z@q z=~hYI&E%q#SFJ>omtRS!mwsRhtXOskndn0b%lDAO4MO-<*C@;`Y|%0)N%pZ=)2L59 zI&09=DK**rc_QZrIl@o4$=ut0LL$N6bldYvp6Hr1m*Van(u(a5fGJ`fm|hA|!Sy_K z$wIMxBT6(wek?3>N3^!epXf)KDSU?S;Dtro;D*iNN?WAGkLo;XTT09T!SBHyA*5Cg z-0`S1ak-XBUn3J_uX|~X&tr%=0XJlyf!FsJd~dS6wvBeSA6dg%pn$;LwLa_f!JR#! zdK)dE2n`Pfx$u?9hh;+(nmTKS>@b(nX3xSqev+gGVMy)cofw(gO+OsXkQ~YuRqF08 z38P>834}n1xmbCb{ZyX4SC~Gy^yg3c@eZE+s;`Rp7G^!Q#=#ZYrR)H`-Nb<5y;Lhw zJ4S@(@*qh_;n;6oB|>aoQ}j+NB}5#8o}u4r&pUM0L&&s}x!(*z7{L9{n|wH@g7{rG z?DVjAV=~FRcDd;q?jk*D=rnKw%r$J5tl63l?>XAU*L6%Uk-QkpMewZUd%$n()X(U+1szr zQYJcriby(G7FW`(-{ghV9V(BKTsa&SUIVuB^V)db%Y1NgzxP~P1l^z5(~Gj6N=wgd zlZRXc)8JV5Nmatyj<8N(3fod^C|?W@3u`PG^tt*WI5XXp&)fta+;M@qXBFQ*i#%P> z{K4f&yA!#O)vVzl|D~C-NgG6In0ra?=Os*aohSNOD!${>0-}#JN-ANY1 zlcW+X1$@AxO?UKL3}HPNwJIf3u8HI#|Mxm_6RA?aE=WQ@(2JBOR05hmK`?Wj?Cxd5 zhk}Ax8(q5<;H;*C3OJ@u7+2aR@+yejHz;G-UUuPq!)?t#xf%PIp^x^v-^+X+(Y+@Y z&(Hh)UZgPhX>1ts-_uz+Q|70v=LFi@Q#$_3G_mx<76);gFRDd!SW>t4Bg{xgvrQLR z(+Ynhyd|`U>qXp*XCp^NSK%W?jxVc6cEZv6yla$N-Xqt7S-}VY#yZg5)Nkye#cQok z)|S8v+XdDV4qil~`4#^I$$hm*kQJXXLZ$B3*LyGcmlOb+PZkcSLAN9E01+!LUogg~ zYp}$YDs&Dz$}o**Z7Un$3QmR30j%43HvX6Pqd+rKQI9_e&}sHiqkLasvNu7?aiW;+F36WiE8DI17& z#{Xipu?Ozk1KqNW|GNhMAcse^p-0zlnuTUZocpbgibCQ(sx(7%gW-}RWIi-F{kHIgE}oOVaW+D)qXt+hreWMXc^ZRwjP zd4$mYo@`wgLK;l?7JAO2r#s5@cAGgIF0GEAq&C}uOWM5Vc}v!yBr**}z&7_c8t2K} zOa8$@kv7jaRRb6p>mN z#w&&o|JbfVy19`XzlemZ{v(5{B%So@gkf|q;?8s=^WeMET4IQyy6veD736RM+zxqn z6_J0;KT^St5F4Yd;zf-NaXp%CG$X7Ka)>Keq^?<3$-P3ui{_MZRsfJgcT9T+Rv#K} zydU~S&jFYOFnVGN6cy#F%o6KnFkcrOTSvGLyen$X+{|s)dA3LCj!L+hNd3DinbOq|6U^8emH+nq|~O@@DEPHd%1`cQrF zRQ|vlv?8sPnN}=B#7=C67U589R&7VFsGLJF;g#NJ$zqeX0q}(9LSH-$(R@0)v~gz5 zm8@j{i~Jgc{S-ae{@VaCb!*+x4cwm3B8|;!XUET&{Mg{08QM~xn4?(olG(0k4d&J2lCr7S3 z8@ejVnpnrEWKD|0mm%M8aSFa(cME9v;dlySsZ}`X#Zdsn$wI6jKGjldrxAh*!%8&Fm8l9Rwc? z;~ut!|CQ3ue&~MgP$3FOKz>c&kYv3=p0ED+l>k>vZxZcjRNNUMTuwX<ISD z>Kx4@xeCRHG0XJ_sh;qU=PXPpS02KDmCVmOq|)(@hi&6!Kg z)r)d)!@b{iJc3q~zNb&lSS_j#%c~^)-LMvBF89W)gVmN@nBuZ>$%V!E)1L;uRm-@X zp-R+Be7x4f)7^7hro4sBFiYm*=|0}Cz>`r%BNOP|y`}A#S@OK-2Fw`#)5rcx?^RbP z*eJG6@XExJ#p^yyPG9r`8W` zN7CtOcd(b3RXh6zmBO4z`^(N0(AfnKsRePFT5^ODeC_cA{4B`v#>W~`&#an@9q-Ha#DAN-zayh_hb`h6C9xHKUYj%%PIVWg>0bb}D;qlf^HVUhS>$_O z6D*FY_hX7?KuV`$$*`p1iSV+qp}gql0Pi5aJ5TZYy#WV`U@=5JiKwbg%`MZg>7^7; zahv+xB1uSIMA<;e5%#QSersS1bi}%1EB@OvA{jpMsVjum?i0aM+5;Rj-!*^m%Q$^U znGkTbmivH*7dKl@he|baWg{a@j^6axw5bAtAm&XP&xK`Mo$2`Uq^9k`vF$zc$jRK! z<8f;3w$=2y#1C&G(u%R^_cyn*yUe7%%Pj1vd<^bB9HLB%8DR4#`eG){ zce7&aSW^ifG1jF);lH7uEM(GU8C^S8!ms%+R;=TMKdP^__6CfV=RyYHLUz}mpB|p_ z=42T!xYbF>m`QgQ-R3H$kS=?a;gqLS1x0ur_9Gbu*pRSBNa{Z}HnD>)PcpewM7;hj z0OnBxP$@PpFBwTc3TsrZPYfEkw8k9fBMQDB=Ac~ALT@j#_=j`e_5)VA2L?+f8(6cfLG7YMsCd*3Pa}c_2_viJ)dZSnR zsAL^0rIq;l>5&niEONdf47*WlZ*2dmA9*0;F8ic1Bgq#x7`!r}{y4+dF?(+=4$ndn z-~peo3$;HjsIf8k`zP_KUE0ujIWIhPcS#;XaUswtu?Fec^libgHRXzRsfl#WXQSQ&EUDQFfdHr>i$t^V{Z zk?qLVm!rrXtDN^>*G1xq6u;)5&m|rZn~!{C{~7*rgCWWFDbUDv9lW%8;k=L1D)1a( z=GEWN>viz2)|*!AS5ah!JuYB=e#7J`z2ttY%q4~F9$C@WEHyjRWfD$9$kg?i0AK4^ zJ;*O&Bye^5qN%t#07v4#kRDx46MJ zo$f$NK?wxWlAx9_c0$$Y@L!k$rR%WtrAd0AWAA4w|NE~Q+Q=*wg_lmZqG8>&KYPub z!jX)Lm619dL-?1a!@~DCmzuU*DRWI!j%k*=>e%2CW1KU0F)80RNvr>L$m`c2!%^>* zJbWxm>B{?Xhow-}5O=aJsJ0q_nSvPWj`@K%4L2GXY}?8?q{)9Z9yT2#&0+i@Rb#9+ za>Wro*Y@I#EcAt`?+{j4QBbB4uWAc%hXB$Hnbp4uj<|I46|u(mxv=i26x{ga3Nr}Y zZ@q%%!ox`SygFevg9;hASYbpWiYr}mI*LRkj@^}xazvvqf6=G&!}~{FbMl+^3~P99 zNVd8ieZ{!mzown}O0WxL^&R5u1@&$oyI_N@KH~^`)BnrJq17&&IrkI>QNr{T8h_;t zJ0YS1(CYc&_Q#)%FNw(>52aq0J2om&JHA2PM5x$F)Zm(hIT&^|Et)&@|KUK^#raZc zEs?)FuhQsNGz;fMlVu*Oa$FCQ@MaqZTJEGl2`&MR%TvExTF z$mlz~_}C`kNU;#DlW5y5LdLLI43CT8AC;3u!US7`IP zdcOZ)emJ2h8AIp)!r3ZbMA>){8@eBf_2tI=6Dt+p_iW9+?M47`Z($9mB1mbi+Rvs0 zeP|hIy+cbm>#4P5C>P^5TRg^U-^A`yfUmd=`u)q%Yt&Yoa(5QN%S ze^J^l>!SfF5gL310MNeq_mtr~_>TAL8?L`B&tToHN&FDJ$rR?G2$wF=bLtKAR4-}2 zU_%A~;_$!S%CYIsn|BGkyi(xD@ao`(%Bkq{p69x^t_ls1hY>^2fkA#Vw#wU!%cm`o z2p*11XRc1{!yOumQX*#nieX=r?3!vkoES_1JqvU%c@<a$WES0E$B&`!HXJgAk5O8l#R1)Zm~E3 zS$a(S!OyWS@sTWEn{|{%pYQ&0?X&(rMfByDHJ13UjgV{kmq70E#ma!O+m3AW6qq1=Y2!=d$a)imSRVH9;H0znNE4?bBRUjqQL4U12e|%y zJt2yLx~7V$Awq78iPh~JkeS(y5_G`MCGCx07Uh2O=BpH)DC0JBVf*_@e(mscAqelH z?=nyH{-gcBTJ&71`aAvW2YP8Y;b0t$i^EY#arwT;VM`*jy?UrnQ<1pEm_pGU zM%=^2Y_1w;5X;?j!45O4ksK^5U`IgsZ+W{jqy&DcJBDzJVh= zImr|=FC>J6zH!|B-NOzK z_k?cEZ_y~BGa)Oghd;xg(nFGjr9%~})mx1UH~Q5r-&@Unnb5eyUDEaQS%d#gS~LmT zXGZb(ow=%Ye?Ptg#4F8E1kY}a<2An6n)zmoMQLT4nI9Fi_Li6zO0?}XGvfTBM50<8 zZ-p^(J~QYHtLo?N*LYv^@gMS&Ux+(M6TS7~?U4MSakVt7+Bh@FTg-C{-JC?!7`bRo zwara4%kg?^#m+zE+fiqiqWzo4NzM1J6!N3_4Bo2$9!cvuK&?8_JIog%->yCEGz1A4 z+8VCictI#Q!U{y2Yu(-}ru>2@Lt;2P>>JAVfj;z;V7sIaOO z$-!xX;RA?CJ$U?r!j!+b-lT}P7Zv)xz<+LReUSze?M@LnpI8i;pcN6qbjC|UI4UHF zxaO})7=RPBHcbML@P#{5JH*^?^05*J`9jnhf(=s*4{1}yBj8I1J{=5(pufCFb05|1 zkPd#3Vg00$g|@zF4 zRv6c2kkKi-h2}V``Ilznv3Ryt`HqlH57tylY!_U_vyH5)Rv3W^J0{K!1f93fZcs(P z(Gp2J|4-zjoyc$uU=Tqo-nc<4OvES2{D$4ubyEBJ?zyRndz<^z5yV*r6BMyBu_OlG$oM_{-FNfai&|>|=?@URf03Nd+3#0aD`Z zHQay%)7)Y8vT<7vWEuNH7k#Ci+g&x_e{VuAim>4i+U zUVgf+N#kNpG)~*f{ssCB)To~gJ8ieNjxEd*;hoA}3BNzZsF24&^UY2h8qR)S&spL{ zPPQuL0xbJ$yjYLQ*Ccbo)=p0e>gq{bXB7=lG=Fcoes>h!%kLhrF8U`^dT)?^x<&S_ zK#_N+?a8ft3o5ldxm8`}kw?dTY8c;yRH>v&Q?5zI(A4&V37EtEmrFlHC+VBd)^WU7 zmJgfqd92uYjjdxY?@HrPrVnB8837vK87;?BM`>QNqt|I-Omf5T#4&Q`lTm(IF&^yj z?@JV8U9+JVw6d~N`0WIKXy*|Go_s#+*HSghVpy09KfqQbIe}l2j=APtaf_U_?1aQ( zk8%w-xKR*WkwOCn;{kd^e&xHJSTdjKGqjMf#-C>wklXj=Ifn!@^WB(`;ar|%ijZ+J zC;R`486(lsnhh;GH*8u{%vJ8H@OPjBpWQZR^)j1-LpzLpZ*p8KLuKf*s-&)inR*gp zlZ}~2j@?Kv>c5x(@EJFhEl8St@MyxvFM*~QKG>jPI(H=s*Hz3o%=>Us+wa8g`>Nac zI)+`K7Nz|P<~9!SvegBDGk#I4NTxNM`J<>dUUMSTl{XXh##ioC}>bhL4W$eqHu&%0RUP# zi5M&O+=dA0NIn0L4Pj{^w0oI~4i?Y7e4wyFd29Bn?^Any^f3-Q{avBo`A`--Ki{oe z@e{NKe*W16_-2PU^PrRAV)NI_N0*Co@IFTam9d)tBscICg$SpkD4T=^F*DKG11pb6_`e6TyWM^D5I+U{gjMw|wtR<;R~+evO?j_Vs6*|HQfy-N8yPbGCRI-|$q{-Qj8{#(PZ4!X z5sHz=20z!74>HUdV${wrl{sXxBySZqf)u*!E^hWEQ!k-GlOYwVzmO^FZL9MA$#(=@00#x^`SicrT@Ay-R^Z6fE&ofiJY z3BXp5_wp~bkKun=ykIrG1E=uTjY|bRPkChOiEuqsybth)!}3>XM9Ezi=uZJ1@CVSV zy$=yg!q%kYv9d4H6dpSQ)b3oG)m-U#ESvO2A`)B*i$kPR^Mp_eibs6tTV$I86CnPA zO?7m!;Y$Cw3~_;MgNjfB{NrLdJg9aLfxqD|j;HpGFcx0Wx%S}%I@l|;D#R^QJYm(F zZovA}Ns9K%d>>O;7QI>nue@(cr9fM+Z+E9SZa`M&QS+bNjvaALH>3K*`H$G1yjD=0 zb(c~;n@soHi6#%iDH^I7Q;Nae<7=GY3%fAt$m@M2*l?}C`E7PQhaxGGxRw{EhUi-U z8Gwj&G@$X1odQ&9DQ+H02EUvqnoO2_KRBIASQ=3)vz|dErNa7^trrZlVOi#J^0{fvppx!$ix6=3ao~YFXSxf(_XRc!zMMtJJoG;&jtD)*niXA`0wXQq#jiY zvW7Y%ebW_{bxIi3L=1=~f06bD{n?4M*KVnpE$rrBz0&^H8du=v?2XhONP^ zn6a&pUp`%+*Ts$Hp^KARVE0isOFOxRUBRGFgCJ(s5@LvGs zQ#6CEc?Fr*NZ%Vb>VtZJQGX%-1))*2!9L3T(FB;P2oQRpLT%KuTsx1`I7EK;hMZK2 zGgB~)`J>z2>SPzAm!fsE3$vy6qvDs#PL* zP7k$jsw=vxMc@iV&@yd5x(t_`=ekwjN)kvtiUu>uDYuPVJfkzH7 zN=PHAqQQ`arP|^x?BbNxILO-O#_ERkG7Jy7ak7#Jv!kobQY3`4q%U^zh?W|Ol>~x| z545aM9AYQe*_Pj&e0&PO_b7jDz)#i0Avngbto6zT)6;q_U%Nb>VkeWQo@wOkD?kZ1 zu;AgYHm*%^jw_}v823@pY>!y1o{3VW&rv@h6^q~hWJLp9qwhZLu4XeEbJ^SRs3^JV z=^H##AC>Rmev&l#mj0LSDM+Mq@SNEU{D`P^MEP<>aJF}&f2P-6>|yA7UGyufIa{X< zmy-?px++tO@zfX#w@{o!)HWkE@|*eokLTM6*Q)ADYc&CqY>2b=Fy>X)GfX7PC*|`& zFw=upDV~tL_uqpH&B$kr5lKl;zb=)=jZKkinw>lvwoXLG;#F2=SyGsgMfskr1^M2X z_;@lk<-c~E(Mnw{BQ$xhYO|M&out*jqERKj6o2fL>d(~T?&zEG`9GLgx(R7_zi(S1*&_O&_3HY^HS!TZonp#Hv7gka-A+*`*i7F`p4svKrYC4XvMjjiql$wzoy-r%vmp_UF+_1 z;4aac1fn-)yM(GMYPa(6rlbRL>-Cz}pqxH_++-^$nH>5KzmxPf^dzcB$qgbtBJFTD zhOTN>mrFfIgIR~PSoc41Ptk8%^V+TxFGY%Du;=c*@!zX@`~4|VnRJ^Gre0GklG_MI z&fxt_yyPjz%n~kPz|nx8C#CaqbefLu7Xy`}6zA_1vh<$YuncL{PJ%WhlasWofYeSY z#i=GV_#M8QC7kSU-XLTtjhP)kK_g^4MY zU@~bz+Ue4i zfub5pkVfIqoeO8SDddP`Cr`Fclb$P37vHQBF$&*eUj(j z4pMs8f`zYkgmCX6FRl{8yjtO1Ih=$v=X39zdRy&9&uYb^}h>&&Js!?&^b2d+fOyUnbiZVCJ-=`c#R<#gEwMEMF*9 z^5A)r#e&5t3}xgtu+GRCQ$7;u#oqrP04+e$zlg-MK=m64gN*$Hx|IeU3YS~55*U00 zOen+f2Stvp(3{0+Nco(5xU0Fvf1%Hc_@}Ef?UEllzz_GHE`3QIUYvBF@WTO0exy{v z#t6JLl*GdObv+NCmdRH-fb@XV!tm&{<-<}`WG+HN+AH`nZ{c~gT;a_!yd?zgtr}V@ z{@^#~Pz>&}g~W;0X>b{PqNKd*szR^;VZY7?2bEYqXYQWd@_$#nVSNwisw^$$L~pUX z3#hg+6qhQCthTemx=e{ushea#N<;0fMop8|ByQn+Puo%u`FNOVf2u{K^P(dor zIp3dBbKqGwzho)Z`?)o}s#Z=GS+cIvQ|xiKznVTOh5!Y^2gV_`C{EK%ARyr5Ki;n0 z1R!)5S+>SS@{h3{`uK|v6ph9aZODtnX?GVayv?NWeO2R*8`sfH^Yd+cx9IK9ZO4G5 zygquWe4=Lrw)m5|tGjwxEalM7#MbUa#{x##@yrv7LB>GO{6BGyyo>Xe6L99KYt0>l zOGW5+QGV;m`P+cdXqjb5-x668D;UffUsrsoa(zQ27Y=Ns}D z()6e7T*ps*9bS6o#5ZKLD0QfIMR%$ojAkJ%ctXW}e)>LwWjF z)R5;mz-!a3E%kI>%rX#C&=SEKHD;!Gzys>S0RoFohQBm45ot2pftibVATX zLV;a&DgsD0onbbeuIy+X!r??yqZA;6Xm#p;NVNH(fh+8gpOT4vxn4+jAK$78cx~+q zf%#Taai6u?kZ6uw{+b4E)342U4$po^fj9@|%%mfPn{8VSP|L<8@3^x*!@uY^e;)Q#kH4f{iYWt5Y zW@zD|2E!#I^QxnPuBMlTyXC{-CEqsvC)&3O4h{8?z#_ty(NBGB?6q*aFD3KL}R)7Vpb0n&m6i(w|ETZmIlaq zet4Nn-&?Y012E(T{R8}I-3o5u%OP_c#=%xIUiNhK@4k{MAU%M^WJsaqRXejo?y@e2*7w4 z;S4JvGnv7jk5U^9%zFoTb6oe{{vz$Au=`gO28&}2caq6sQcV7~Vv4Lkoy=Wxc@cI6 zSWHheV=R zt^$Qjexwc^z!wIk-`_<_{vO|eznoUpWit=p<>VXUC&Lg-1SiRnk3y>B8lmC-7NQa0 zaEodjNd+sOy^bPM>)XH=A**Dm=jm)4itCsM)E#{Hv|3-%j=HlL;~ygL=%d4`&kz~} z8_;G>JQ*RljYw32Qp2gJam9T(q&>UX@7A$)9rF(Pw%`E}*%KX5u)_Kn`NXC)8JGB< zJnlE1Lgng2SjpGrWuhb_d2=#ppJ@$HuqH1crQhd_8)na#4NcKQ zOz~I_zL6n5W7c9Q{|YpFM=6mZvU$S)Bz%Dz;qxc++&Oq0=M-|70^m+en| zt1M-I&Ei+x%xYQGbB|z&5tEW~4M7}IRm`uk+*nev}<>N25SxQS^|D(+VnOKb0C7uj}ci zt`;+p$=!;T0#OH3rPELQERcK?vVZFcFW0Bn{K|B-%{-U8H-f6D$f-J#+!*WiY;~QS zD6wi0ynq1*W906&NxFKb=M#lw3a?;`HSOZO{-8^BQs~5dvaku-s!i2KfXGwK1r0L;rHSuXR}A6DhjC!Gj&fE9nC?EztXV$2uDJ$fjZ_LR)KeVfiX4;_vN*>HL;q zX^|Q+smZXjeu7#-X(8~A`YD>!m3oEW&2jTR4i$8CYEVPfZ>SSpLbmK-y?o@xpj-23 z6#3WyLm%VBEz@{bFH9He4yAML2r9cVMVJYR@00nG`Nx_fP4{E~3jmpd000)t#_I!K zxlr~0b+%vXUKZ&!1Bzeij*Nezw&BV1EP-=ppRNy*kj|K667k0|%pIj)DyD!W2C4L# zaa$@{2gGwa%#q-qd}q=L=og`Tikp_Elp(5b7QM3F9;g_iVrb79Ks60$5Van_vCEb( zK-K5Ti70Ce(UH@a%7kbZP(Ab8=xzoI0t_@uik;}WPOR%t5h-a>8wg4ncoi8~;!yBv zG*txri`4(%1)mnN-&<;12rPOtlRbc_rR$FFTG_$d5Hl9hN0gXjcdyRz5cAfpfC1qM z>fEo2r}?QE0TJRBG=N;#Aft{No!{|}KlM|sMh#X@+uo}5|6TX;sehJVetX$3y3gq? z;%XTH3SHeEPPRWRp$Q`?yh|>^g;g>wvEnZX;g}m;@+z!4*+WuZ@O7GYztykn)IYjI zrEdu0ou2SxIIixE5FNv{)rd#~Ls5xnt~|oP&4@9M(q;d=RsNrq#qAkucz3Bz>d#L+ zdTsOJMS1YIAV68Y&!PV5mXXJ+48;8i1VD9Koi?zG1$~5Ffz>*f-kL+ZsuZkFF!iSZ z_SuDXWt%eeS<}enF@JzV3JR}PLVR5i3xo<2L5a%}}EH`)Df*hDv`AtnD z+tl1VzOy4j2q3`(0}hwIpI)*7$VD3rin6{u>Gu}pbfL01}l4jW+;39;xF z%MaBb)3UyPNnw;Q2=VtC-n-q(x0_@CX}#S%h0@0!<4kU*lRwmbg{}6br(gig2LvJX z2_*mlknb?#_<=!!vk1dl8g+GQG!FK|VS$Y+P+CajttDPKc)X`=)d-Q4QmCwWS_n8{ z@Tyyr3%VNXE$^VWs`U)VSP&)W>J{|{Wa-%~>brmHO4z5s4#gACME`1y$jDuwhc^ZR zK>#n8_jq=t_5OzUR*UcBBm;fNowENL1t8yHu~Yi;U)IEO3>PHQ@;=_Kv#i(fjZ3uS zE6+P47M|+5JdZmn$05UN8@xw$F)jAXYK$F8h)7A;Oamk^`U+JVO5|kDGqBDlIX`xv zL+CK1ebp!7-{LlUBIQCAGzJrsi>|C*1$D%`rbe_b?Q>GT`3pcro4+e*hFbmcLsS3- zapa;sq^jgp0O~dMn*IHPJr$$y=Ez>hQyY(lx?;t1&0~c+Lx@u342CzRi?CP8r|^Eb zpQd5z?G%BMwaG+5H zed4C2&D@I24(nD^$}o8$E?iV92s9;LrtL7mYS}YT3|D-~&7sdcf6m1z3in82PTQ6; zsWq1_lZ_C3AU=mWLqy|QmE$JtkMvT}Nc)X|$LmER&3MQDS)M43f*c~TZ!LMR*8m>3 zd(}-m%a{E8QOlmq_e!h5`kq}tPoWQlwm5&sVk(_s=eX04F~_bYchmYUo(DOUTsPCR zY;}f0m&XXJm`El|-O7A+fMLa{l%-|vZx-!06Y~!@NF5Q<3x7ju+qpel8?TO$$vB{) z6%42ROSY0E&~<-o6pdUREq}yW2A!w6N(X*ZMYSBF%Iz6{4xfYaSz1JMIwP`kymKDR zlZjALqSv3`*@%9nbzAXj`El;v^vFU)ospIJQpM=DkAR>1g^Q%R>CG`%*=B5Z*DbJ( z^Oin=RgFdoZ>x-5Kjjw2&II_Tw2cfk%x@72z0Na1x!Jjq5&0`Vy-vR(hfBbFw|7qm zcRdc<9}BZs^sUl3I)XZC-YUVupTS*_wy!z+l?%icFdAmQw|;5f^?XxAvO#nKUqGdC z>d4c#!zz~m-co-;J_U~}ydvCX`9+f)lpL#saDTyL^zH))rlPZT!&&?BuaXPP{e`1Wr?OJ>JZQUB1n!>*~vx?rfZ*HMfzzpov?wrCX9ii>2!z z-Y6z0B2q7hTVatfXukH9;SO3TTRINgIOnUo-pi)3x-`rCwhdNUWrE~pK-XOXaxw}7 z{(^|sod;+3xT@`XT%LNPPT{*i5b67MGQ6b@RAbIPBN=O+ttz!0*3l`fAy~7qb`VRk zSS0|+&|m}#@JS!hkYo9&iIL(#nDh|St8k^;T`ZT2JJJn-%i?8-9_+R6i}?T+I_C8j zos&@4s&>+hc|AyF44*4x?FRNj%;%xFtKv=yBm#oG{%^8}1S$|NgU2yCg@I7Z2gH2$}Q*u7DEyDT9IYS(GBewvd!MlAQAWW`7W^))$V7PwM-Xu!V|P$cD>7o1Ha zg`J%m1hH_=+9N3=A8wUTbU&<^e&-AGMKK&olEVc>%Tryihc&V>r*8sZJYlMk{pnr;=aK1B3K>)M6sm< zoyjczZFyQrHw_+lJ`AipXPb`a*F~{&3^)e7&&=xH&8+GFQ(JE0i@sr~<#??XBIfc5 zAe(BUW0%r5essk$G3hLEHq270twytbM&ciB+BW7(rzZX?F$=7y1E*elor)1-sWhHm znmKhVvR9xl2_Md_QKQbQ`2mvlZNeMO~FIZC1G#Ulq9_c-*Z%YCNXBB=Xo> zoF*yuvhZsN?@hB`Q6{H6Ve+BX%6h%{-kt6#o_0;`0WMz#JPe+TyKbuQ=*P*>kqRc& zDmqc<k?H)D<99!Cu(0ET}ydTvh8*zgNb z$5j@o0cJ=80-|$Zl4!@#l<3lnw4J0x_No*kIVu(wtILW23u!v0Rq+clPnb1Cd&8vl zfC77ipFKhx-07OL$=9u#rjNa)_c}WNJQ=W#IB1@<+Z6b(wxLG`J3jU zo%_OmxF6FhxT97T>i+wjggI2i^smJpVLUde{Y>J%CzdnE{fUqC;y;P{ch}|iNXkP= zz>LO~39-f^X4Pgwzklv-aDtNn7fe^46P%@FgjB=!Y|L;s+ym-U9*fahdvA#7!<0V0 zZE(C@kw`lR8(CqVo*B>!N&HiCd>q6g9ZC-N^A;zS?QkNtnuof|)Eb}mZxD~+0F@#wTy9T_ zU$qn6@}uc7A}Y?rT4})YBOb%!+$VpgtwzWp|8K1LbqO*aV|oro?($TBNmQ%^4n*3_ zhlG`+|EN|J9HaE;r~xw$Y(BB)WUmt+vqN&GgFQAeLrpNa>~M82CT#hxnkzAhu;$(* zLyPWJOkh08YSSixd-KA|-fl4NT>-k+j|Ra);e@l@Uv;iKetl^D%BD&RB1509tov)` zvU?qBi0d19O07nX7SNOD>y++U#j)hw%3Jp)aL4SC1DeuJmb2xSzFmTUS(KtT$-;&L z!4iu-I5gG;A(sZdnM-iAPpKl={m5CriG%Cp{SRk3_ll?RPAT8Et=zicHp~PX>$J9~ zm8Q-QDUNxQ(oyj+6wb{t{0@!>YoC}j>{ z;AjvJuswCMJU*rENW&a^dPycyZ9sqqH|c`dgo5;2z3<1;z^YsdHcp(dBCbEHb-QK2Oga!RZIShPOX^~H=Dl^Gs7 z76=CAZzNkNf1aQ$zUOGL;*|7-?)yeYHu1>CdDVMJX5{vC%2FMb5|otba%eb(t20#is^@r4q( zh717L)=rJGpL$e<$0$tUw;?O`OFL9#xkLj()hqpw{||W`@C?_731UUK$IGh?p@)Ly zI)6-r1WR%sc@dAAY|tBqhr3gxIkCp@VrN^OunJ#O#V`^vu3|WW_t5o;0#I-t86AVeS z5{pQ7e~pA!XG!>5IO%^(CF$)lpgcKk7L`g7{hTe-ux{Dxme;ORE+pf6S`62X_h4M6 z(laL*sZ?A}Pt0jCYeA_L^~}0QaY|J3R=3=)qA}5xKuEo(U2-}XG6*4aN6}!TO4T!o z!$HNQyj%cOu-GH92ce^Pg2jHjUJ1X=3g3D`)W9osnt0Rb&Y4DTWP*|QjjNfp3T3k2V7d6C`O!LQImNb)K7heR<=qx%9adcs4ffau#au6E(;e%^nK4M@v zJWUak06{?U?Mo3(lK1?wq0L^lt`&J-r05aciYt+Id!h0uL-Z-8^7s6?*c}QDrozo9 zhpC2(L7LN~N(wQjtldQ(Z4p3EUmt)9W_y2~!{Wa*S}i9Izw(F;S*>NFfFOtiaD^A8Wh>|y0fPnw|Hc)bVwcg*Rb`EQRyPwjFn~ky(3AZod4Ns2ZryYgmmdX7rE!9(n5#SiU0*hzKx#T?zc zNFCv}v&J*MT_9YY(|TxU6DbF z#8I}I&ni`>aN`SjW48Hk;>@Jb7WB7LhnK3L6RToX@fTtVQhG z7576?aacdKiaK36e4{NNKd|;iy#z)GfG`g`)AlGQ!nLK@x$!|?ZH$yP&5m+yG}TZg zDX0N+GaS%yCSQf%mI$~XmS-5k0u!(5*F57_E`zVUSq0nJx1`5@S_@Y2sa&=-THT8j zwJnTNOJ}ciuzmW=jV&C=U;yEE6K0h}q)YcV*(;=B$k#1Ccc(8g zqs^6U_H3%K&%+|@aJi>7d?oG%T&X0SLSeKB&!J;RVu+KfJK4H@ByZg@Q<%gz!lV!?owsMY@*yLZ# z{P(1176DlIG;d&1LUe(V*!3NTc>8i&hK!7(ij6#-l`0@bKtR5jCQcf0Vm=#`b|X?t z)jg!%azNVlP^|)!HpFhunCgX@Pm^EDjks&-HExCteh?Z$1qy;b?9y}yeMoWf15R}L zE&d0Q<6nb)sJP%UQ5z>dm&5xX0w($~Hks>mw0Kb3Ykk6b1i25}5t$ga~_-9Q0*ul7=ISlnyYsU)ayipFyBG z!P76ySz=6la_roI2qsBkCaT;j9P4L`F~?L!s*=pZ(#^$OQmxt+xX+ZytDjg?;zj)B z?9Pp-#~FwL%l`z7e%4LNOjIBoO6YyrKI8>MU?%@##Cm{!%_f3!#q2uII<5xL_g)DY z?hLrkMP26KGH1)fn#S*dlu`2%o#0ifZ6%=_8(KEr$LSVvsfMz3wtC7+Vdnm!43v)u zjYz>;JQo*N>+gOeD=k^RL(di7v_U`i{B26z339#X!G3Q`ShG%Wx9IQ_H0BOn=PW#| zXEpUTR!n!ICDO35x2cD~?;Y#?k<+ts6U+D@#y~tnCHvZPq>osE;yE*u1AOc`Tp9mg zeCXdz7mq{jSP{Kf2pK4ctltxzm(o3$) z0m?0SF844?C4IcaE^I+#EI7=P0F4hGK%LWdQ_7vOp0(`Nd#bA*X zoIN{2Fcxh_`u6tHO>l`s((HdoGS zuRTz}Am2IPWx^vXA`h314XenQeq$(o;VD89|1s6PcCJ60R;C3xxuBG>dcghaECzr; zB{;5Gch3Zq_ecO~G+M7giFJEfk3(-y)kD`v+jmtqEULajtLKx^oiVrVe#$ps;F3=c z)AUl2g%j=1{-+|aW~>)=ce$W_5p>4~0uZ+e4^A_TG>38=7d9{(`SnGOFUf0?$=V;G zONLg^{ozFv-MtK7fSl-+Y7!z}D37yaR_SgJwEu10>}8>d0Q2xPBvnJ$bsJ2r zSgt4z2D!;%(5sMql@i2 zVTkn;?jbWhG0zTtARptWh;rw~u6HX9c$CwP1`^d&&~aFQR&k+|&%cvIkW{h9Vizs% z(xcgN#h?AdZ89C{d6;R$VPu`9)ffHV_hbgM64`{$AYCgp-4zO}f6%A+wX;Vh!C2xb zr > z{*676jYr>I^=V-GG!89efzO%c-@udB?*hJb4^GMsL(pPS-+K*Z*=fHXP$ z7OxS%Y|@S{?RAD;+j&LqKy)qiVdJmu+Jk4GMEHdATJiJBHqg4piRnUK+jecT_~YGX z7=a%-#T0Iqg_t8kuo4ygtFrXk6tU+C0(YCLwKwI*m@4`E3VYj}&=vp*zueh0+J#Dr zbqz@$CJD*a^ZA{PJThiH1`kJ7d&o}^7@l()(N$Xx=BAh5=R9_5Q``>-Kve>XgkZky zj*-Tcq1@&L;m?aG$-^7Xec;t>(t6A#rx&Qa#iTszm-vwJei^TKIyxsgtr&#|R{!!g z`Jubl*S+*MTD#1!@?BX%^K)c_??uNNec}`$BxW zK|eWkf37+#((E6RAxsw^9B`eQws~Q?FN2Ee+5ByRfUZM=YSkNgb74uHtseH%)jsDZ zV5QdJ@?4Hqa24o3eyNn?IV`W~WMq!0lsKwmOLjqg)gy^p|A+i(L~pA4wyLV2031>2 ziYK?MW_0iD=lMW?ZP*4x1yUvdS;ydsVo@?TiZ=Eg)Fhg0M@0qE2 zwK~4?Hw`9glY8eBkJwl(G!;>-;g)sI<|3COYlw02uz%S;iof zvDh*&Fbvz{CDJ_ME{gI&QeJu-qd%AYNM?|dKi`ZvDT;}{G`2SHQ&fo?1C{&Ubk;%= zBXRsdZMD5AMPF;gM*X!qA<+Nzvt>}D{wVo!>hH5YoqG~Hn@xMWHwtc3b##jv(+bA~ zzRpKW&bi7tbwChk5`l(smzf##l@VOc=%-?{{{E;iS6NZW#ixJKw4oSdPhIEA{q{u~ zjVRpo>-niWDf%AsWv+( zzk%rvl1q8oBMyDqb0@}|=6YSwpMmD290ggDh4LOzHt?()Gnu7id5WYuk><`Wy}Xf> zB#^+*-KXc$<$`t=aYDkKz58bAzat~Eh(-`<*O{k{yNWId4Q&@D7~QO7x+lXI^&ldw zz^hlPErLLNF{282iJ5XzC4}q0wmbOHu8q6@FMg(1t_Cn4P^75*Ih-eM9!sr&`((e7 zGid z#15qWOxX8~C>JTKqn|$RN6!n(RROGj8j=MX!gnTVeAt^HZ%hM$)tYELXD_Z0Y&%+F za?9?%2xR*63Zz*1fw|kqMB9wNVWn)%wOlQ)l)YWmQbZ7pWtc5lUs?6UZp0Kqn}(H5 zX;;F0GwApJIqDbyr5IA}-z_RywMj@c;R?H*aQ9sfp!!mDawtn8hqd0M^M~qv;Eh_~ zoh`X6^ZATGD$h{+u8od1i?`tO0x@QGbfoyoH(d$@&{&+9)t*p$+wf zcV`Mh3`y$&5rVCB?Fi@^(Y&OY6_z9J9ULg6b6?%mDg*8B#qUu-DrC|0*3OOXZ9AR@ z$v{xsWBo3xt+xy@9%Qj(&_Qj-XOEZMR%Yhl_Z6q0_##^IN9TDjCD<)&R(9V%4t`p4 zk}sWdPlKEGJyryqu`D0h)BJkq-6&na_yJW(M>e$QkYL9ITeYrzL?vd>_HwgKR4j0O z?7lwly>VO0!7G)Q(i$cues-K zp~6(A#2_Bwyf#(J}dvR7&Wv@-#Ii z6wNrfl&Vbo3<{SlEZ$Cb)%yykuu%Z)XjC>B4C5AT?U`+mxtQ=^_mT3rjsC9pbmrTB z_V|Y|hIXCVzghjyeZA{J+05(xLA2%(>XYC@Fs$`avawa<5%TM60SIg${2MUrJRUmZ zQj=z0WRCut>gry5u<)~Pu?|*>yAUSLJwGhH-TP7MIb9mhY8$AxLYV{F((3o8{^k!&p-dv9zBA~juA7I_K zClmQ89;N|*_j6r0z_R$rVxlp779!CeP6 zBF4GZM=Gi_xN7D%8~bj(BWo?wPfXybFR24d`7cg>{IbBE3@Cd2W7PNKZaPj~vM$~0 z2t8*?9i$4TM|d96w62DN3Fu^?1yzl}co)8zZ4uE8!mEHKt}RKs=s$AqcIJ37rlr!s zj4*})f{6y9^}jT}`cyccY9an=CK>ZHn}zToPM^(zl;t05>oZ^Lnqexxl%(rmUk2XT zxQ>)#?2%5UC8Ez2zyNf+s@C5O=S~R{`ir`G;Z3k*lfmqi0hQ$!%)=Gwul1UcEH8*( z*Yqu=i;2|SzaxPlF?Y?DDym1g<1Lu7Ny9}0%f>h%rf~t*0`FELU!ZNAN9V{nKPimgLv>W{!tz<~h<;B1F0tF4XtwqXvzIe_Kl$nNErWlk) zl(mlC#(Z+*F+4uMptRpL#9uLVG#OV&qVL;w!KC9jYR40+?t*qpcW9nv6?DfD0pA%U z|K@k?`z?48+%;Wy=i8h!)ZnL@VSn6N$*<*%R=`#fNrvRgn#jK^I0BU$I6cv~115xN~+H>)!r@>YKPeq-49VR6{g z=)UhwMH8Gi#v&E(Pl6gg-88 z{oSM<6_-Z1ayt);GxnG2(dH-ZStd7uzhXiZ2*vPx_+w*A)K<^)B2abr)}~+CQfwOg zUklc2tEA{ZfnQ<8={MupyP$BzJJLh>Uuz9eGB^U|}F7%!f~3*Fq&d zjoNkt{#j%@ht#yj<3}RHoH3^nS-tJm{B%ME+{k@o@8_c#(-Eo!n!=vjpZeI#`5=8( zB~iV?lx9qF>b#LZf%!X_y@4A zvfXAA`7!B=R#=|=eah_pd2o?yjPz%D@US=RJj8C3>=TW8ZfHBwTxJ%CKY%?MfGnQ0 zaUc_6XYOy>7*7Wy)L;PeXt0y})5=%bYvrHI~meIy855?}QkzClf{qOq<68z(z9p?{?^g}(zT#xS+oCd{&3+{!n9%A?Zx{zdf0`#e(( z9ujw$4{GLf8L;?5d1}hzlvazpTIPAsfR@^HP5Zr&C8K&j zFwaOrj`bp{pV^dlly6q%Zc)-T3(^`^vQ%LR5Wedg<*&nDM~FOb=@V z3w2b(7z@O;%v_%xvV&FovfI(Yqhoj}#?f z825_K{^rD;{<7K!g*9|Q<^QhmyS*hZVKEcuLx+lH_c}y{nOnB- zP|{Xc>5QlEe!~}sa8b4Z@_6|7gY9u=q|~`;cqOAYT^nwOv}E!O%5|&Ct2B0qC;iE; zAt`UP`4l&Q*6MYWi7b4p#U22wA~fAxBM> zcE3werWQft3KEA~-`ad<)VQND!0=Fe=K5-LJ%hXnz_?>HKMr2Jl;!UAmg$xZxO#ay z9(&ULTjk6sFwqht>nGi7TL6F($ASfCM^j*`qsy>uF&80j$;b_pkoq%9+GgfzafFWry#o8KsU{f+#zJZ92@l1p_6NR(*CKH^&{6Is0A(PVrR z?n7G|7+}2f#Us+yzc@^=K_A33AvZI0Se2SDE83ZY)-TV$8%#)cya=>-FKx+Cis@-u zAhwU1zJlhU{I-jvmdp{Vd3}&H9y)mm)hVw|$n^r^Yvy5d*P=-n&SqFBq+0!9_ufg+ z@r!_;0~f=d&TyS3%mkn1H%pBYOY->+$$B1I89L>V-}CW#lUy||7P5BI8z1nNoX2Ub zFg>c*;Er^gNMK>nlbJ#x{k)Ah`ArFZe~A5ZP}rP?P@CjkEtp-H4-C*Z0NXC1OV&e@{WA?B0WQh0iezS}PBo4TmX}nD+$j)R>+wBVpFJLp ze>0bZI*#8DH8zOG^o!ze(UP5f+pe=ShcF^~&%4sNUcHaN7!DL?w{(_~z~qKuf_$&n z;qjeC1Z%Qsj}#Zxd_$RK?6oSwGiAvh|2<<>fL|D6@InzqZ1zm#|h%%hmQcOqU#Z$~{q7 zP!euk>Rwt`PuhJbqP*3G{=>f7g3o^uvVA4OrdDh^+LjkuM$OnIATzx_ou!i+R0Td+>Jqzk6dRRe%Hma6u6R1V9lF*aQd_w8`HIl^zzf zbl6~Sma11K>rn5Hynpx@mkq+D)#t%I z-Wj2(gC0rd-F|fxJd}CW4kDc41`;XWv!LnF5s*zuiSo@WFiNeR5VC;^go&aGA%cV@o2VPf&-zlHcaiTRdRJ3JKHN5PjmJg|#kH0uzl2403_Le?GuG)E3EQqi4o9(=d@zRm|B zc;(ZWKRaXSkJtC0MClP+5FZyRgzE?| zzy@Yum>P|el~n}vqektj&Y_tE^POHnFe5WF00S#6t^}(sdeCiX?(qR8Z|jm?3FTxZ z0p;m};Fb%nVAoKA5{rWbNp^6q@FfUX28z2Rg1|EI5p7JtnGS$1Y^|Twd2r4sI+IZX z8wV?i=ZKin1WKf$S0M5U`5gtK-5LO?0&f%+YZMfIVz?$5VB~==p!U2oV(=A-GIcLi z#otVudU+NW5ieRVv-+|is)lTzND(OL^nwIonI>F;6Y8MUH;AzkA7NieK$^w~iZq&n zWEzuTO0**<@@Wn5V(AJYo=6k3-vt_IxAy=5=p7xOq5(H0jblN(Q5&qY(WHCx&g|QU zVP=3cSq7p5N1t2yD%71_~Z#z8`m5at6@0D+t+d(^dBOkMYfo@nWzuxB#%*N$ABMBhW&3rw)c*S$IcQ=#>ykt!u!T_ThesJ4s_zW&wzU^!Y!2S`J@GXBcPRrVU$Cz-i?2KAsGi6n$IErv$YL?=mj)iG_i}I1zz= z*Q}Ti4~a%Gg}@mpAq8LyLd%wbye&(&E4n)`{7a)=8FFm@K?r{{(py6bsXn)0yO^Tp zhYF&lv9__Aw-((r;y%fACg^bK++71!o*t+TP}FXqg0(|?Q~g|`hie>xkH1-?I{^^4 zu`PrG^m^qx)c_>fl>|D)mw5mF8WR@cM@At=?_@hJs{nm0?m*;FK*%=Mxcn%<Rj_wY@PJ-{t%Yv_{13qgtTPCA)?fs-D)<6G3^!*NuZynS%%63s@O$ z6`rj;5Y-lC;;wl=9`3KW$HYa!4b^e4#?x!mp!|lK5e?g9=;c7hrc&1Ei*bMe3niiL znzEigljE^UE;vUu@#@-_XC9M|Z7Vhyn(+SC-C2M17}Jp#Fl^0AAAk=t*^6{G4Eu{= zQVkD;6q#k>w16{)!(h6((;p=>Yh?)v*EKwRu#b+pSYXwfSVBDp0}=1CEst5`#m(_f zg(f6VZ=>JvSdh0VdV<{ZJtm;AW2mG}?K1!bWcqu*PRyEy6@tt4%tpu=!!y<;T9S=~P;taPqYS0t-<_fG|#+QrOnZHa}mR!!RgVFKA|ZQlN3heGku zKGlb>Ncov~w%1(udc`=tUYha|cev@+Bc*wI@jOf>0>;8?flarAYeIkZJ4&1#jZhY3J^*E!nu7C_PtWN|P*fD9Vy4^Fi4lm3c1cFv z%Y8*Y0r|Z$Ssp1c-u@!pzqdXrxnwqei$gwtiIed;Q%<5)s*PuB?HgHkyCva78#OrQs+A=s0N$jlw6 zf?k~>pv`Mi?;3vH?JVHvg~1?%BivEz&U%4Z_Q>_EU8+X&NvA915q^ZB-M{ni)vb}M zG&yi0#XUPcE6iP%*qM1L3v zUBU>3u*bU&{*VTk&ikDiwE(i1iQjE@e_QwV<%bh4rXvrj=_!usX&Ya3Z=*h9&tYO7 zZuEZgckjFh7h~d6C3)QiesD4W>Ki{I(^?r6t}Unm(VR-BbF3PPJczgK6XBS{Jl%Wj7yQ{VNmo6c-pOTa90jNuqUVSwVLkRzB`qs_YH- z1dyZWL3P4aL7BS5D50E-MkqqTK!R?IoJ(S6$}IrF$e{)UQ!r%)k_kxS^pFz}(ICyg zG|(%+*cwfVk`KgS1}01pfPCZzZ4`YD%BqwE8z+TQLIA(nG?Ip}KtLoJhdwWAjSRpu zF=(^X#Mh|Rp}O#|Jm&kPI|Bw_T+7Jf{~W3*&X?wlmKQU1bagP54axFzkAtUwMSs79 zJw@3`^GaMDwjjiX_}WqP^v6Jq2Ub|5vvl8l?{KuW*xVFaoVZ2IlC8h3C{$e_WFIe( zWcX!880QIO^(iKp&h)0f>9lq6awy-MOE1m;=;U~>>|6}xLD&wB-W?(UU26EnE$#JZ zcF&@nJh!F=jt0lAz^KSwPTgE;tds=ps4sTmy6>UCP2;L2#Av; z5HN#4Bp6DDl#$aFBqWd!XhERuDMCz!q5>_e0hBv(7cbW%mt$Z~KJ&!cnzZ zoqK!>-y<6aG%^wi6jvEZ$vBo|c7gT_Pv0riCk|ozGT_jXM}(KjeKQ`aWE}{U*EF#zr*nU2XQEwVsD2)< zCmbuF#X@)aaL+hdnl1;`Beu>CcbR9-mdZ>>gnnz?^jD$RQ{Ih!+4y0w83-9#L^52VH;V}`N-PeTiAe4g#tz_ae`8RiXr51R_&9U?v4X>|(u z$3yM&6LuGl|F&h~t1>8ij$)%-filpM=K+9x6Pf(K!;=g2_l9Q6w`DY^=5|yABBNb1 zy7ZdZ3|au_<>J#huK`STeL%&MO08_|+jiYT7&CV*{>6$9$}hylOYT9nGFCZ3Oh~du z8tiP?@fg@Sh~o`H7(F$On&rmXs#eS3n@9qFOlCT)k3XHbm}d&e16^V|PQEj^Hxk{;CSp^8UL?Y=|y zE}u_@_U<|M6&j0cpjDoz&-I{#!^&`3ZOH#cYN1FRKBM0GPDn6jMqsKsO?Aurd`)Lph`9QG@PC>s8MOkh z%Cow1_t%c%Qr|psXCGfg4yT{GcB8tYaZXVw^??RrSqACz$`TM(O?N z!=cbmGyR-L5=I7JSU8rB;WlBa(v|PW{ysjb;Q{tcWz&^851^!bpC*_l4F~`mJyv6h zzfc6EgE2p;JvJ~{z>CHN=cTdH8%h&87uDz|wC+WF#e!oA8}k%`EHpM2nhNT7(sAXU zGuysn5zOWTA_MC!qZm$x+%&%3$WP zBN0T&zwa&$G8}u%worN<{cX_|6st5wqn*0NHRM4o)I8ZUkS1_Toc#6&x?{W(WV;r# zLdGBAnaKx2ggrr%lU7L|Z1=Fr7>q%7?)w(r}s;<9x=Td$#sqTs(A8tn3!s%nh~t<*~c z-e%jD@%%@)``k9OkbQ3xrc#Gxh^4Rkd11O^Vl=I}PSE)(QxYc{(VZ>TH`b~qAN+4s z>U3P2>#~nIqjKV|5dT<0hf%5`0mJG;abtRxQR(dq8*>kcLFv)SHf+(LG}84>)&(|E zsjmwd{x$55fmA9?3oia`YfrCG!J&-Z;%=MU&TPx@TLZ-%XE+;p#B0{)tV1j7XLkHa z5}lVpQOq4MB?%S7C?%KrQoP^Q6UrSok9qCe8GU_Tpy~>Vq`c_U(_lFw@`UpQ3Tywo z7Ulb|Q_i8pptd%URsrBudU`r|6U=_h48Gq2%IrV2(e3tRd7bVnncW^|13iGSuF`(5 z?nDW=-|Z;(Uml`&WiE$XhAP;gh)NECz;(3XC0YOL z_CbLRV5hgQ-lczEbpGxT9_n_#X2Vat|1j69;w{TP9PMm;5w-9}et7NOI_qEz*2li}+W4H2r5-5Bv*|pY~-e z;U*wf8Bx02zdEFJb^o_`4$$IAhyZ}4B9MbTN=4r4$f$e2J8oHC#n#{UzuF_}FSdJ}a4~$++wBIcTJI@??TFxz_xKWFz$6JGLpDNOQirGZ8?;Bn zbig+hHMs4)3+19QBse3jf1%>1l+iwqt7#RQr=EjC5Gg_gcm8uarR;qm0x*+jkQbhb zCk~5I+`(&j!B|U=XBM^wVMFnWV3Pw{FWN;&G0Rp9UGBky&N1`G z!K~ss^l=O)c>a>W9#~N)J}Wqrsa+ljTZ%$61Ah?zVPWmOgW0Gt6)!bQ?su{SCsapc zW(R;@VIZV+H&N`Kvf=orPJWgUL8tO8OM2bcPo1R_Jg4FGzmIpv>(>J>z4{@cV>w^P zj@RT>*#SoQbN6D2vl)t!Tm}=a36nq3^U3iM6@H5!;JIflBG+wy-8L(nMEvuq|^^{zk_~OkiNc!82+};LJ%kjR;r=*v9udE9Mkbh-+ z@DAl0IM}6jzXhk!gsEQX3O;iX2#YnOrvIu4XgzB^KW=mJx~JT064VWW3u&Xtfaq_j zH0TQL&pD2u5-U=`&KRs?McFC+S-WC?IunU6Z?9BcNkmWb?o<77Gs3Bpg)&;#wQ#jW z@%Vri>Jgdlpj+4+7+pKmtk&}SbH*5g1#OtkA`PnRg`vovYazWVf%>00!|i+!ovBS; zA`e%sqKScOoU1NsYo(X9RyeMj$qxpe~)(OIytvE)67&HnSm+B&cX z2l)=Cmoz@R1^_&s6DR$1zX}_-@v?qWPW5TZpnwf$vJKn88Rzs=G7B0F{8;2d@N7Mn z+8B#T7$09>jG{^Z6V%S`(3puTlRYC3+kd9)o93Vm{j)n-aBOWvz{GyNeB+2$B27Jn zSj-IX*4@TDp9VSaGm&%sGyKjv$}qG_2uNn`mAM=*pSg(d z>fppFspUfo4Jpa%35*(j%B>=ra}w+>5a~Ny3UIMg&sHBxrjdbj={r$I3a$*wlx*4s zdTsh4FJaZX^|JlQhm&t=pD*k3!}dVFI9PeOE9^|GYOw?3J}$Bu1*f7#RZCa&Zh^ME z17go58L&_HDrQ0l_YkA>-*3?XVB>_dh&WP9P(u?Z6U@UNr2Us8{i5)e$;GwT6hDKW zoW#L($un>I@81Wn2Qv#%>)=1Y&YHC!)Dq!ggd?(?{wtzHfq7ezAlxB{F$iNFM`-E$+fB3=_sSJf&cP;lw^@Anmm#04$KV zJsrhX!VlvxUU~s1Ni6_L0eybGs^HNdi&s&s{M71J-PbqprLpr&`nvNlnV$X{?ao%1 zwE-rvV0crZz&GI##drzZD9BkW5K)E3ux__^+!A(MrDw*9@YU>A9Z;%9*X$edJws72 zy!x5USrEeq$szR21Asa3Kn#OBBD|9xZ%*B{WhaJ6bs4I8zj@zs%3|Qnx;9&+2@E8G7%>FNMh| zYD-h6W=z8Y^phXIO9giI=^1h>Et|=DLcA&9fd=cDq<;(+jSrm7Ez_cU z!DUq#bP#U;Bd?~eK(KU?i04-f|xW!E^nd?t0 zo&Qnvf07u2?|qDucVUK0m>V%=PLe0v97|jLOONFUt7j2bg2D~tyQ{Q8<^M`ePjvNG zT+o7S;tA%-=*nTjC!?!)*xjPJotdzX;xN!ShuYAkm>J8@JV{6EbHZ_GY}^;+c+l4Nk>B<%uEV5V#}h!zNbm|E=W9$TgR(vhRnX?^Ti||UvB!ph29GpuxdMw(3quhf zbbqvaXy}pFX+qbNp;*PryLJ=F9M*QdugkT!Vn}EP-p?Vs{#5#^DzZ&Sym@}{}rPDl~eA138vwWDf?*C75^ zR$IhUluLDFAXv!!Q|(h*J?fa`avFD1uuD;#9~y?H0!f0O(d$DuSPQ?$kqG3|mNqM# zZ;3Y^eMd4O*$n`poEEtSTdm^TZH1&ku}exNk$nVfP<0;Vzn`|Vk?3kzyl`NN6;xV= zifiwZZA<Uh5kYmoJ1J9lyCprs zdmZ=NoRmISz2ey!VV`|zyX5|zJqK-BmV)-ZGbJH^gwy^#4HVmCq1X@Z)I=aJ12Vd#@uke)O|np zf7kVfh63}F%)+e=6j!(rAt2EqCW_DX-_#7=MnC=Z?xVKdfsN^Tpk!=)eWV}Orork$ zm~a!$w3tQN=ixkCT|a>)pJS zg`)zkd9LM#{;WuSRY52I#Iq}}#6htW*MQvFkIeo52?j*Z-*qDzxg`jtOCO387A5h@ zt5`t3cx5642qair6s%UkI3mlyAS%ytD0(xI6);OqAjQ&?!Cpau#_wY<(+lSrK>H52 zmmgKAP;hOT?}$~SLV_+Dg@wrF?Ed@(VJt|klxM1|Wi*-|>+vd!8Qcl-u$Ow>kPG@= zRs(uc%c5%~2mSIKdrO~YMyE2%^}fiM+NmSauS@@nhqgbc_TDpboYZ;Eawx9%;h2rk zue?)5<&CD80M>K^?Nyiblgg5%l#Iy7v6_l*py{Iw15%=+-Bk)cs+%=LAF_w4xnJdr zt2x3)@gT>EL!e~uTy?L#c+iN>j0839&df2%lKeBC$4na$%VF&95V03)$iyrt7`g*2 z7vT1>8LovZc3UBqUHHNUyK~0H#s)o_z39-s7)8KcyA8LCY##1Fs7MKm15SV!N(V*K z+yF6h{&|>lyIK~*Xy%))-^KDD{_4)l0VjjT7b;Ks=pQA=S9-{D+>NIzJ2o1nI*7! zI`^7BDf0tbeS2yN??bKc->)u`KNgH%bi0=UYqRmRUdKpBUDQ<>Nt2#Ig>T?fe^AAg zg@6b9Dpg&AK2hdvN&RwJu}G(%||B%K$VUU&1ZrNNoLBsc^Ico#$MgHr0(@0`oj!bR|ePXVjr3W99jz+Uf6>#UUa7g;an3xM zZvUzIN3=WL3Z6z_DGG(lz;_CEo83j(w5vUca7sGaR@Y-O>-{}-c(e_}yk%yW>&xD& zF$`YuX|0#aR!>3>__Q{-cn>&DxFLhQyB%Y*%!pf; zLc<1%B7N|>D?2qVI~qvRtxQ@;?8&J3b`a@3J)1Db($k}7?w)%t6K&S2PG>Z42bkxo zF_?@V)Vhr)pFMz+r)ZGOgys>|v9DZnB}$bm9*+mL==((}66qsk)s(G8z}rRUtZd@I ze(+fI74NZzs_SAlMnAl|(U+1?@al5LsgAs)hxtFzfX7N6GH@udeq+=m!sriCc%+Pe zotzARL|RP*yydI<5x;gSO+PT&VrRDW!NuUgwV`D zETI~n=xM;=vxByyiLJDIbg8c)7eC#6Yfx0w*asP8dvNOxiC-+QsF|}?R4ARr0lZtD z8ocxphW2mS|MiFcBE!A|1xrq^jEsMtu+HA(VA|h%%dzc_UNL3mdrf8yf)k#B9I*q5 zzXB!%!)LI;x~uyVenjM>+?GJXU}03Xsvtu*_XY>cUH5+GTT-u`?9DG4WCdowm(|Q< zxNx4l&Ngamoj>;d=2AuvyR7G>^n0e1(wjZ>8&=tsUIrm*c($3o(RnM?|6B_@ zU!$L(F|m*hRKB>Mes zVy5(Da~}(arh=`0cK2+*m4oc6V{t%WOz0!u9geH`PiP;vXjv+q1Y$h@T@*vxI_2l4 zoR}_wQKVP?a=d5RV~)*2y-xii<}#U8G@m~T{1#H1@ph~ zo~^4p<3Yob+ol9u5<=g;H!nHk>p^%&5u!H=Aw42e2P#-1dq?t*Bry1Ol37gQb26?h z)wr9toebS%GNj$`2uqe=)UJUBdhrx&nEN*Ai!)zsYfot6|9b=;4^k|HaarBE?_461 zg}{O1;3}_)5$#79QYG0nnHK_5L*Geazupeqh^`BQcv`W#?Z|#j1)?s;fjr-}q|f7J z6~6@8`_AcbS5yZl@9Loy^>p<+<%6KnA9%FOsm$PV`MJ?`z2<(WU|nlC_N=>A-WmAc zh3T$UoT1MVC*ET=IQTqWDmD&XR%QsNN`>s!1O97pM{PD{uW@)S(g(zt`;v4HDDrhD zyAF>Sq}5Tjw!76Y`ls&5WJ^AmDywXl9#|$D79d66%k-_PQ4^g?B)!5g zg>Pba&z@9G=x)fCDX9qB#5e?3uS4n;H!H(&0GC_*wZzCSC4c_k$&*U=^*zzIJX{RS zZlB)rXQGv(;O#zKJM~NW;SvOS0|V0>ma-Ki1y4~^H(jJ1<6dd1d%3PLJ9OF>4zOJteD9V5JIW;5N+E@_xYPu;0rvW6e^6TI zi&bvC3j8R9?RTmq#n)Ww130!r7J=7zW8D<`#<8}X?%U=3pPP#j1h5a=%h#(dLDleFrsd_FcMAUi?so?1txthHjQ6We&_sjS5$*BR z535n_1r#}JI_wj2F-CvvvLI8eL-XR31C$~_fFqkzw4jA9zYfRNK6gXVpC&C^7}A*x z4SUSE7e6SDz8oysWM@dkfL5cCglV`JlxT$M;R9Y-3itRaWgoJ#9CfcdTStlm6w<4e zAqKa0Z2UC!5Y8mzdY5i?0BdZeekf#^dV>FOyYgO28*8qMXXk}3j)`t$o@YfD_89d5 zYA>iuUej5(Jca@JDEa} zxXR#^T_gq=M*?-f1><=k)MM1X$*uAyLTO0~@9JpT(y!f!BU4{behZ>HmCfL%HvRF2 zZJWI-tKEU{ALo^h>=KX3?o43NWy42U@_nJ_-tt_uiti7-)5xi@%1iyTwQ23>l5-B_ z*e?c!o;zqTy6w}D=bIO!Ea2l)PF5A4~2N8$0qNUKh39Y8c_-WWTw*;@S0SW#fXfe;dq)cHmHmSw6(|UjHCip$nd@ z006^vPyhm$2#YoODRA7;x^eA_Lv0fo{?O?ng@3y z%Yj#!DAbyptiJwHq@XqD2f+%%m)-K@rd8q^89M0op%`fVjlCl*K}e?qI};I^urrI+ z$PxqnUL%rPke|bA1Quv!C6a&uTxMB_|I|nck1-5hEKiy!AX7HJ6WixcJyR-kDJB)$ z;H>KfZ8z;1!2yn|fwrz)FRvd-O(??D>f5R#QX&PJm88h{2bE2^;*IlOZ$w;Zmw8tgzOQCOdFG+ofIyx$Goy+&ttU zZz6x~OSSA8FN}_BN@Hd7^1e`iVy; zGU7hcrofGhmdDTuG9GNrHg+%K(({x67MpnuR&8{Mr_C;L-6l&$$v-+|ug;~G=-bxS zgJ1F-KHG`(PNI0a)P!8qdY>KN%;ID4u4)|R-cd*UhR?s|b|6bQwv2-W$Y4x04)cx; zt&@HvTki!f^$^~(PDZkbpaIvemq8)k0dl(3#n#8doE|vKtXuEw<-5}?%PM-RCy1dc zk!J0)&CmVK%~COySljr0>mUl6sh}btUWbu58%glBH*^gp?d!M)thC6xOd}m$j#e)< z>xj_M=~xECMX?eg)&*F|+~a_HG_rwl`|XGIPVJ%xnM7?LlNA+gwt4EF(LjFE#b#_c zdEfLiXJyO;a=bR9470rxUj+ znJQ86WVTO*i5#{8hM?g7l}y0|fJM5hgRS1bw~J3QTbln(_3vcsAL9Cs&qv`6zs2gU z*cg_qC;M4mTBAmZaUWVO=fY|bm71p@R6=IR8K1PG-z)n2wpoEN+d+Henf?Bi8zy1N zIVO!kgK}nI*OJ&Nc3=i@Xx5buzF3x`7yG@l4-av*3-YA!PFb0myc5NF|9h&)(OJ3t zxaHk*Hq4br%1tI7g*GHaKhT%!cC)yUqld9)T%C$;5Q=Zl#}ui`L1FKDUobrn!pXUv zbw#%ayis=wXjoaUg-5jWdaDbnEahUk0&FuQ`>v-YbwtjAh+w>U;E= z2j0ph@75tDx1^B!d>Yi#CEru_?93Eo{G(cOGe?-yq^C#dpP`l9l9QNj`Br-zqhSXO zUd0{Pj!T!8f|rQJI&w39VB*}gbE-NOfX&<5mKTAr%t=a7vr5!k?!t+C$Yt8|w(F9Q zn3wt&_hBiJz-!^J}LVWIk)M&|Rm7qGH2P%FmvFbmSL_Fj`k_pea*X=2*@X+){15;A<{ zMA)VBEC7oEMe%FfPuF^nx(7)0UYx$2%HE3pbCVd_Tkr_52{KzlOz{clVQvE*$T&o%lz>lh`A@dg!85 zJANdrc>9W9>gRUWk-Lh(gllTfRp2huVsO5PxUdj_009a?IC*37W}G7(=GP99Z~xe2 zu;?4j6*@&PPH(l7Sth%M)G>zWERdi;LZ^>1Q0boR)|c6e*6My+JO5&Q4gO9M=cCDT zUxOm(c*87g%e3_#?>STjx{}1t%b3UGGuN)F5SS*Zs8^OuL_+c5`&Grm18@Nb0mf>0 zFs8A6<9exyy9EUF3+o=XD5gYB%;5XifzDi=f9Kz%7fM>IO3PelBJQ+dHq>qKc3s4B zwo^dPN8^+P9>I_yax@y^>xnHV)s|;_pL=9xS8GGwW3K2MWcmQB8!C)2mxG6ZjSFO~ zY!w<|>iZvr4C8N}RUk6mDU9>#@9pqbL2{9MvB{ein*@)Vg;;00aY?zI0Z>f2yLN4t z{a3(TF19nL>u$eT-VXv@d?XYy8YL(&TJ>#d_GXZx=%P&6dH3H!#8mTUy-7HO!;(NI z`!;aY9!OAKhHKq<(W)PSO(V_Ff<~hEazqHrYIc=9g{C^{yx?1Q-O?GemvvQh+$klS zP;Dc#!JNr;|F`~BfguH{b|C@*WUY~^EG3eNqLCO($-wGf&26f(vcMi|7wp*ivRd(%|*P$x4PHy1Q3`oH}k z9!Sg?H(;44iTlq!oAN8gTp!001N8bV* zOS^+t9Ao~xH8ZEAM2q}b6v}~Z<4$0pgS{G`3OjUFd)d_A)tqb_O9_CXFAN9CZ2T%T z6N|LGDGNmFrueG+^0X&AP@*G!p~HlJTVKII4Q7e0;hQ17LI&An`UMvfLg%E^1abMM zftIU4fbWoo{ul;}TzfhA?1l={khrfsrjK`@lAaTA zo`hc49R@f&0K9wR_b6G;Cf@_4HVoj1-U(Gx>U2;5YKYMe#feWV9}q&ocSESx>d`Y& zal*D_cwmAeAI51O(-oebt8HiG+BBG_SkF|S@`rmX2D^-jwCm(Q*~E}%ehz?i@#shL ztAKd~^>gx}2C#jv>Cxl&=BRu1FFNPoK}@K}hg~*(wi{CNq#aNYky>V7NIjOJ>yQ)9 z=@dCnaJ1_3^{7KmW{ zqM&->{X4L@#f7w9=dXgurN)A$2C6fAyNft6{7+h zyyz~>yc$3l0KitX*t{$q#v8p(*JZi9$P8w0v0k@Wn<=YM!oY}y)WH!3vDMu7hN!#u z62->MW4B{w-~0F?CoNHH)>IctzJd`LBoPh;IRWG0>PQ4CeK<=N7rl+25O$~m6`k+2 z_p<|A6v9AsTxQ7OERK;PG4FXK@rBj5FjBSA>ciW;&}}qIt~GNVsV>y6%c#C_?^KG3 zjMq7anYU-Da+BR&J@^Qh(LT*9xs9#{YPldiau8nSXq`zLp0DF^v{B|cbjck{D1krr z>Urquh~u#sA|jQq&sIPnKnK7?L-fLvXFEqtPoxzoc+by0g>5RS3%Y2is;H2V79|!8 zm@y1~p}+)0Iu1b*4Wbb`^E+T)0$_n$uBc!Lh)$r0Z@h>ATTP!5BWB7SXAMCRfE55? zFT84(hOF~iv*!Mf-3OZ!Ru1U`5CIPuhX;iE_op&*1Nt%3H?fk>mnkvr@jH1V;m4?b zi=TWkbRTiGck$acqDvyjmp3+hi2x_s96k-y%)f@p_i5@HxL^_WuS<)xF!iS8h4_`fYBgQ!(iedmZ5d6G3!@oA`q3s&_q`;olXG>p~;&NSGiA z0jwy*Ll_K}I{Aw|ix^z<8@MdFF?#aRs<$j^uylj=Sk=Zj2!-u6t&tS*3LiEUp7yy4 zWBL1Dt5e!>nA5pUBzaY~5RqM5sjaA^DJcXpr*xjHZY6C=mUF&& zzJRu@TzHlp^s~oU@)`egVo&@Eb-f-WbaerdIcxIQyC4JfIC}9wLz5Z^W~otM`O6Lb zYXJw5C_|iNcna-vajzm1(>*)q`SZeuz>Gy?5fD+D$jj`yKhphFPP|;AGLSgi)$g#M zMvFPWd}{0~6gj6h8%(O>^>Lljhmq^(Q0@&9kIfkD$hk zv6o|u`BJA29)jtTUlyR)Cz+z?k{B)6gApJWN(yfJ9-&(Fh81T5_JoHd3_bG}ZlttJ z(%oh$8=l6bS59%Td)POux|NH&!>)NZyoRHx;c&P? zkh8Y&N3h{-be6h~W}IkC*)KeF$;;vfKxo8A4o1aI5l65;o9(z!@{6MSkL1W2B6VyRxN(isbc;GqQ#0oe^Z z_*L{%OU)V2rmiAbUX!Q?;yea`q9Q|2AgL5MxO(I@Rki2+Ty(52d9{;Z$!t&KKp*yY z%`tjH_z2ID51^iHi=cuBh`$!(I}T9`Q5~WrL%4`{qeD^1^p_5%ZhihI6{ya7pNY?Uk)LRh(8Ve{i&To=|o5Saw9fCvo^D$XtB$elGFkz z)k%NP{pZ9BSB?+J7?;=dXkm2asCh@G==qX)%~Fk{2%>WpTHFN_GvDD&P9Clvl9eh1 z5jDTIB-93aI}|Gg0oyytU~CjLm^2{c)CfQI&=C+=C)$P;r_K8#SplM^qFPZ~-&do#g|luCi7Q^L2Cta};y=dizaVfT(Fp zQcCwc4(tD`Vs$)bA)`8dWM8&oe^0|4tZXJB7dTHWvcnk2T_aRSjUs~-`j-TU9$ws| z*2jd|D2`@dMtkS9Y1vH-v`l8Mqphr|9^A@`XNHKjNRrENQNTihD10=jVf7(=@74|fG z-v$akJ_D*1zpZ3aH>T-#O;Ua=pMJGw3>{(3pC=&v`SATGGE6@PM7+N~W!zF=AFi&k z)aK)Ur@|rdVbqfEnbY_}19eD=Gn}3J(UFxD`bcfE+%R~J#Pv&( zv-Ra!^G;a>dHeh3L76~2n_Eka$a+#wd(XkF=4AA(`YY_JUE@l)b9x9E!x>^*&6gqg#F--X1YW$I}xm6yOe zU#NbDC7ol4_Ve$7!qx~VDiH$&^aTVb%z@BapTvm6#f9zp$n5Mz3dbo|Q7lqHe7d~T zUcp~Jqjo>KX70<|N{9(VM~^cn>vWO#`{x#;i^)pdEVim&g5O(VpV^zpQH6QNXHV-@ z6;z#>iL25=*R+KN2clS;A;8Rc7YO1cmB$>h1N&oP@}S%o^snC*VdiVbhy!PpNfZqE z<}!h11_5%Yx}cz?9AUEsZ=H4Y3yhfNl7}@{FgH&>5o{|tbhsiS4K2u2#fIH{f`vlb z$1ik83>m609r<-?RW8eGG;`PMmoS$R&K0S&GqBb3K~0Y|D&B!38=88$$IgC)@BLI~ z%|#bKs8TLI=&}^7$P)M{lE<5*?pvL(W9q$GhRwflVGcVIekTXKDB}GQn6MSSG)02! zS2|L!m8F_tLp3_R9$L{QCyAC9^p(`W?YdTN47gTlo{T)Ri@$E9F+4ucvitv73c=$a z)Yr!}rSaGPd!b*+_nQc+V{U2=DdvQScFCnf_Brd=zJw-Zcu;3A{k6TJK(mn^PiCzr zg^SVjDn7w|w&{zyJAn`bZTtUEJsz%?{LtHOk7^o306{SJ2<|YqPtvZrqbTqVrOegL zd=KDCb6D*)Pj|78M+_~6pN-GkzxMb52ya3rRA^vz2|MI;%-Z}Sxk=d`jlK$m823-) z9N7U?j(c|6m5cR3o#tJG&tA9&-$P zfDt(suYKdjPn?|QgeAwZ?Xc?F9ib2|nS$BWK@~g^zlVAP#7r+70;y*P0D>Io1pX36 z*VIgRT!V|qeA;yt{RZJTuC%Yr3}N>TAv;!l8T;HU#%8Kq9*-q__ao(ld#W$ccD`ax zl#vtr&Rt_`C(FibJwG&?aVI!JEiZ2AO3Gyi;5^aR#HF8?(N61karKU-qyF59F7y6Y zn>4q!3-wgU+dJ%>d2D6s==CF{R3iY0V1W?@3_=i*Ali4k3A8Uk!b|ojtt)^Ig2xa# zf=%a}-0j@v>N$sAVc!zaPMJIE@L{ipCCZnb0o7qh#ju@LUt17dPP&}?z#cg!qacCw zj8SB8p!OC&$=pIAV|tq~JWOymu+{hUXkShgYKaq2x>^h8LGMjBk#k)Cq?xp(A)$u1 z#HyL#fx;|To-(-mCV=ql0fPn=lR}{?>#&L_0TA)(62D1MgC?Jd0MUKxP((w4Y@wKD z?69r72}lYYS2rcAEyQq|yi9hGu=0h8wwFbfLi%4y8oxxQQlgC({Hq>?0pl@K`Ffc$ z=Jtv=d05*&6z-NV%@#D+#O{lj5CacA6Xs(>mDUEW-C*ZJsL1v87rv`qRQ)G-1L*{N3o)iC-Dl${3v zz_$Nc(;1AGZQD2z+=Hn!=H#!4?I)iZCTR4b1q5K{Fc31HAj;or8Gu00%0tVWd6XRt znMD8cTUW@siWIOe>k+u`UmaU$&?X!oGC*2uv|x0`#}S-f7bpDOh+|%=kE`#{C}35{ zX*vV}DQ3+&>I#%KR!wV1XMh!U$^FxjTcQS1gC&uE!x@$*?713am}wsJO><)Uao$y% zu)Dh6X_lxSpmoZMAzG^cNH;5xF@FrxhOzhkJtis9&j&G&<{m%d2BgE(DEAu~)&z2% zj_SgB>g69L|9GB(gn`CDf%IDxRzepiroAVcpS$x~XT^R;2DEwjq5qF!tk5&Ert#QJ zdHS&i6n$k1Ts5ONu{lozT(yJ3cyZ6I`yure5frLvp2NqX7kkNf$Wcv*akmuZYP96a zR4YH2$=>cnGFFRkLs=>TUzJ}Go2GMq{5~5D183|27Q| zCZR;EW{W&7EGVv+JE89Io~@^HFS@E%t2!BjRf^F(EsQa~UrWNU_PWMOc{FhQ%hn-( zt-BU*DfPzNew>I!acJCzF9wtG4Ah0mKD$+s|lfyBI> z6!w$Cg)2woUMA!)W|TF$<>`^)yPtg7fmDX?S*P!7Q8|1<0D!{ihZSCbWxLX@+bWkY zxZ>~}m!dD23?$ZA7}81n9F&#!M>`GuqqO&#(*C z3UHXM*=EA%v?sPM>1=5G4#q+Q3E2x#3qz=Et*N zaUInl^#Ndf_zSl7G)S7;^xsoRc$Ym>9ej18kE{F2PFgAlU}+fu%mq7mj$VA6qLZpT z0~jyiQb{x1cQk5=vRDzwW{HL==Hny7G@mb+m7T@m29DK;gCmVzN=0dR)jF)iB>Q~6Jc`MhN`Q_(CU=o+e>bz( z$3ySeBlJ$j%<%#>Wbm8j06##$zaVwp-sX$J;@SBWrdRh-vp?Ft<`I4Z?Gj4r0dS+~ zK2JxcoB@kv@&|HgwuexgV~P%*|2?hlk9VHSl4JVw;H4w;Q)-YA{qP99)u#Sn=RsI} zg5Gtkwk0m2HNTtr*C(HMtWCPz`Mr<&J|D+mU3kwT!ibvWmgQffZ(q4ty9)Nu2!)Q1 zJ7aMk=)wup1w;Qf{P(GjlolZ)&b4Wm!B?<8^rt+nQ?C6XQcnR zEreGY8mo{42vj6M41$SyK%8cRHk-H~)pwCgd7jg*jtOSZVo>+vBgCvS82w}L9}hLh zV7p=i=c4N=c4%?j@Jlh$kbn8Qt|K_aR^vX^!WXeW(&rlnaZe{MBvWDGxL7E(-19Ef zNs;l89*k}Va@$j-pn!P2_&Iv~VPGQ2oOcb0LEb^`HE9mwuTuTm;)pps0emMZ!9gU- za{Ikr#stN=B0;bgWNjAbKE#iR+%0?48?J!1h(V*iGd*+J9{R)66XJutGnW}$%_HUr z|5wmCAwf*|tup~F73I7?l>}{f@lFxo-$=5;m!d5Af5tn-H^_&f$^0!hU3ARSDaRP= z%KCXv^#&?V)3xF^B53HbRW=&cbw!a*Y@qdkyfVsXd49|<#J0$-XX^IfONTP-Os5gG z%Vzk)VPC0s+Yp~62<(#kr73Mzv`v{_W@AUUaT^cvW>>wU4;r8-fvnE%S(N%Ril*K3 zw4pNm4%je)dGrBR9i{!$!VXY)j^NQa4%#H+-t%FHj-Qk1ZQHN=ID-4bNetpd+#~HJ zveajkYcQs@qPzM!;y~PXW@bm0}I45E^V(0ii! zk5Vf(TR-mN3a!^GZ^k+mC)AW=o-8W`hx>DHNmUm}iE75c>z2fE7)ob7nQnYjOhMeO z`ah>GxpKU;i1=fH4;XOfS}%Po_de8&7 zL-g3$N0A7K0|pESgvz80bssqH+mi!>NxD*-SY&oyz~_u$092W1U33Pig|JKDAQWZ@ zh&nqEV8MVpBP1>yS{M5qbO%HzkGPlPv`*QKZiBNiL4FirZmBBHondi2ZDyTX6i?_|$MI6)dp0v-}voMOxR+IXXeac?@$+wNCM;xF;? zhW;m8cH)*LeD^UnApIk3wxIzba|h-}TR+Fw{`9v_R>`s(Tn zg=Q2SIyQqc<<(I1hdzQpRJMzOK!qiDG&+w5=rziJE@!!e*#VJF-NHcop!^A)esAJg z6N&>*VQzF`R?ox*8#t|Omi?g5r5O*k-Ipg$%%C)j_ml_suR|jA69);JCXo*P!zYc9 z4xz4we^rb=k~psDOU8Xy?@|ga-sp2ZmXc{jGb!rV9I=Y?#`PPXZdZKyXttjcR!kM` z_vF`+K!Z+%b$9(&tXct}-%@BxOY*kDM4~g}xvq1|*=FZm+H(ceeM4ANu zM3`Stif*R8Ol1|&yNFpLVkivADHH}1>b57@EUN1P3=y5I@FopU1|Z)r`fj zRS!aN2?-j}@rjwgEmAD2WI^xjzpffi9)5KY_w2OIcxtY8*vv-S_g!4uv0=iGln0ScDC8ql(%%8tCBm2)YcIRpI7S(e8{kDd+ zJGzxnCCzsxw!j9vSS4PEx6YX^-5y z-h`_(-~Byyvf*8D(vvFW%d8~!yN`3}@q7jKaY|OJ2O^x&iG%hvFFI6^Erggz7$DUe zLZa@aOLhX0w)w0Mx=Ly8*&V4fqtU;eXLz{s>}5EzvSUnhw~_FjY~+Sn;0s-?e-<*5G=VorzEY8;8U_O(So z4~(+vvC>s;>#f=O`9MuF2nm4(^Z^4;Pc}QjN^RqRB!mAB&qh=$)0gBE)Wi~GhSaN> zDD|rtaL@2|Li;8!w&3`2Jaj_{e#Dbvy(GD}#u*m>pjE6sE1kNVsNKflH`g7<$Lwq# z`DwfB>?m8lpof~Nmu*qLdVBd5dRpX3zoDDnI*t8h===>KV|c)`bKQYi^R=jj#}icM6|?!j}WxtgqY()-SO_*0SC3W;V(J34g8()f^R zZ3i?%mETjtUu5j~Nywv|;r#*scTeV2_xa+4L1L=Zm zB*Y0VE8qo()pu|plKpy!_qBjZY?){K#w%T6;#9PvlR)%3BcC-$kipW zCs~wfqKB`Ba_096vjbY5l}@%hoj>v3Fkj(}3Kj+Upb+lZG?aMAA3`9Bk^|iYhCR>~ zb{`cI476n(Oc_f5usl1`mNACQo45H9s{reG#s2t>=g$Uuo3Xx;hMhavOC6)Wqx0Yy zCvq4&QH-%|3-$E{0$qEOUHrWp-pdO!PkRR6Uy8Sai4v%nx}OMI_X_Ie)ep#OJ4FOa zh1a%pPf04`X%jj?u0#p{V(o$ye$lh#UjT(n8!t#dLyylC9M**u0JE5EvTpwmzL>|icd_WyBy!RI#AJa zvY`&8+p!SsxGwB{^rU?aj8M#`v=x~;uli&iv^r2kzK^}ofnagO8xW-_WKtKLP(2_g z^_?yS-d`?5?TL{%xOF*A{0COf6YJf!yT#}^WET6X;`Olo=@;n)_D<`UL)2yT{L_HW z*}L=qTJ&n%u6>;3V12rHV_#{;I!!(g_CHU~<_6Ag>-CguN<-l7%az+*u~f~G z5Q)*l05C?KC;_P=vWuUwiUz!qcC7u?YtD8O$?>;s>Ww*G%U5!z?#k!kJxTyY!5wg^ zgEAvZ5D;JjSpLRDp@mBO{6yFppqE{cm5Wv|AeltNP~G<0eUC1g3*BWy?zLb08)_w4 zY8h{?Q@fE*7R7-PbQGyC?^EJdYn6zxh|KXRC-z z``bT5b;hdgrmIlX2Iu=5J2)$6ZVhfER8coRBCpFBjM)Dh%}EBEe1PWsyV7k=0x6%Q zmV|fI5aAgpSoLHAYKmshNA;>cRhQkFbx(l}+~ju(8OTM1wd*x!$SaRdq{+cuA^4AW z5kjz`aq0AbeQ*e!vrP)@vx?1)@<@v#fCo+Rx=P?G9ibunf% zy@NRLBcC3ut@yuW!J+9-Omf~&laBLC8vkeDuB<}D3<*#P245&0{~6g6Gwfj*_TU#a zsyBh|P2az;hX8n%xcMYM8sTJruuj#fVY=A}%k0oDE-iw3+Jq1BBH}dQ{pYFaIMN1EPtrM?C5_}AGPw3H zTl>{q(o#?l{-5CTaTeW++;RMIQFM=?7x^vqD|-bnfrN5-7D4*_5AN`zd@Arb2T24m z)q8t3LHpoghY8uDoYVmCiRJksYTw8_84w3xA=E-$`r`2CF3G%WO2yuQmO}RBeQmsv zGLZ9fr*G~cYPi?9$&;%;Gs9|^(H#^o0}P?c^t3fP%jw3$>}8nvGMIb2f}ypj_uU3! z9Hw@BhJ+hN{de^R+v>)3zw5K4hj8(8HqlTKC;DyH3!C5BO_N$#vX|BVZyTg>KoGND z>U-~>DLM^Lm3oAvkEQFmLHOeCkFE>|12pFn08<{XWn~mp7wXi2Ob~~_@kkkI^}^a3C@ z3}bY->HA^N|}$K{q?uKTTEq)1leg4_vr z&r4U#l+`YkOdu&i017SqF!)oIr|ntX63eY|OK(5LAvI+-9!KAAx9jA%ivGo1JbmXd zAn<&NioBz5Whf>gQOkBr_1!W#_gRRpa3a^p&g(wd`gb}MK_Y)=>+{{ys|QtdRdg!H zltS!R7r0%iU7Sk^wG@39uEHiIQt=P{xhF9hoSHyhUwEu(D#s~Ek}wQeqZ}3s`C#IYYDC zg9c8xk%k@EU&`}xq%QpZ88Urz6#!dbPRfm zG+9I(nH(E=Dlc9n`}G4Q@HY=8ANg$DFY@#56mm#m@)Mj{h!6nbeyafVe`mP8glI(wGoCYUqct@CBrZR`m{yEOHKt1sd}@ImXA9ySYJ9W&Hp%f={n2MXb8%&!5^iAo z>xbEW6lbjY$GUz-B*J%I1bjM{Tl|HhA0XuISV2d=dosOoBMiCv7F8^H5Op^De6u{* z1H=)mb1+md=?B+cm)Mgo6A}>&02wm#21urR7&ksl< z0wDR#8hs^zX$14fP6ncitC$VbiNIg8uc0Q+&DYT^d6E^ z;RU{;oOO%uoT3a{4Xgy?jTXIJ8$1AS1BQLWzU?X5C{e28r*PQrKn@a4;jzZ?^y;-n zVjwy9zdN)?oF-cPJSgLqN(+)kKXr)ClZ!)MqdB>R{qYCjt-3b4HdiGbRl9xQd3Cn> z+(C;tvRcksISMZ7v+FQ<@q6!1)={;@y4?j${JNJ@_J+&c-k(G2D0Oo&JznIjc5^66 z9YEb1%`orL1kyyrb&ds&V@nuxErhL=IP6_Nx2%(^uWA-AG%Qa8CxMzL3*=5Mye@m{ zwzKv&Iv{oF5Lt`no+}Y!ZogOdF0^OvD`8RL+;lIXg$vGkJnWq|1beEPF6_v?4VDop zG;%H>##|-Uf(QfvO|t;2*&jy=_`N3~oB92d2)Q!le>c)rL611w8XDWpP5&F>S>~7j zJ6Mv28UL%qP#LDW)ds?={Pr_(_!e$e^Lq_uaY(Py+`P{CV%Sl9O+KU>7mC_ReY_AU z_o0zTG$r!AM|x8ZR$p{GmQW~g3eEDXoAgJjYrcQG{}wK`BAi)6)_({1;yN> zDe%Za$*+P)$Q+$GMvCuoYkYw8eG$`#)l{ww%(nM)r|urgcaIKt(m-1MKmlEnhfr-8 zIuqeevwlp>A;k7C7rvTLAA*jBIcTel-T>J%1hwabJBq-Y1}iY3@h0KC zLi>*digE^ADLbkas}2}{h>t*8V|>zPjz1p{?gq#`GbOpu%DG?CHvJfkhb+M&DdG;p zdVf$uUhChFiD6_KsT-V2wYQaa`?nUVypj;41C#>)YDtP`Hixk*;vZx`1;R3`+Qn$$ zB>@P+7UEz9hNSK{{u?T=Dzn!o0$?Cg7_7HY!6X7SAi@MPNR>$-!Kh$@k_|JO{GUo8 z-q+opxoKp$9}m7_aaw_&JinEYEfVxSY)T}ES3U4FG9a5K8+TFc06AU+n$t>2*@T!p_Q2c0%{<+I8mPK3p$fv}N@qn!v3k_zu=sN>p|O*O~H{CPx_@ znI=fV%>UM0(FZz3Du5@iA}Pkzi;F+7=~omAWmYf|WT81LMvt;fKkps!q~^#pyS0315}M_9FSz2i0*u@Az_(i z(a6H~8+a~_uM^V9gTSpVOO+DXr9fd~G|t<}4JJ%`6Es^pwbTR`WKy@06oOql*RzVa zUT&-26lR8>r6hPUt29G~RM^A-f^PTc+Hs)`w5|)p(%=WC-)}JPuA(YuqMOd>I}J+d z)lo;@_k`~na((KFRQI=A7D{K6BNX~{x6pq&fbN^@iufdmhEX#o?@nNmhG#<1e65kH zMdZ+vz9;^frWF{52f!(Ul}^EY;;Jkfrh0xi4Oz|pRP*~I{)O8Up5j>Ao*4~N@3V!d zi6Ezc0+Z(Ho=EOK)={vzb$Ucuc6IgL<)GLy&SziAy`5kkh<+|BPB8ZhkuSkctzN&)OuV~T0cN7e;g{rp2{sWp{ zGu_rYa||bn47TY&C@Pf;6F|UgmyuQwI)VOc!b+{8Bz!&9?~=#tc{9MB2kfviiVGGT z?i%=yQ`32pf-qxbf7<$$UD(2!ZZllbbbkV*JY~*rvsr4VD?|VcLCHd~WET?I`kH2| zOg>l)G9;tVS%_FKEs3#>5NKql>u>Jpz0H4?5<*YkC8!l%$wTDkfq;}?Ai0Nc zHbw}Yghqs!zC@cJ8H5&}cZtfW-{Jlhdwmd8*Da%NwOTzhY1P~8XCo5*Ayb)9VU1>Q z>=HCS7AGnq@O}+}ee|w`n^=5(lyGi)N&Di$RT11({0lWE>&DuMtUe7Jjt_NQ5vfa0 zE4?3dcQ~(!Z1j}?YS3#ag7`c4`5NeaSj-}+;7&`>C3_o3mcMG{F^BxH%sfn;f~TCp zNbVhaLveU#-bA}}K{b|r$Cl6%Fu3UD6ok4X8K!4fT1aJ{UEd70ia`*v8#N2CfnbmvvCdelzi^ICFG>rdIjrMEM1r5ndtJ(_Z)P#@(%!fSuyep`|MH+B@`{ zt6$bGMtj{LkpS9cP*$us^eE(Q`S`)08|$r}VM`B@mM;hc%jfZ~Rohqv{wEWu-Xxms zpwPLA=qp?HzYLKlZLpFyILKz&`cUwS&5ln+k0XDyw~cE_h9)fq^6HpCz1ESb!orr} zqq89Uls0;6VhcPTiyp^SE77pa#naFwGh>>2IFfWfp-qNn!}l{JPhZ? zirT642i0cSeC&Xm#?go|nRo#+Vl!ae-`Y&hTu1zB3ZC>aiV_70KD@Lj-drtJqw(K81=WQ-RE^ymCkOXT5=@-WaI zo%#lvT!GM)wVEKNh{|;+G~hrcU_XFBI;{yZ1*GszlN7)0iA=x{k_RExIFplEOfPxm zhqz4v(-LE4)Cfx>eXb9Al|6aRT1(8%+DU_pHW9iwJ%4I$L%CZfI^4C`akhy`qIII> zG06lSi(~bwSp zt;IYkPHV67I+8b4pII+^!qOiA4RbNr%_mSv>*R&cT=VTYLa7hN!kO-)C(zTk+#Hl$ z%3%3J=X3B{TU~t@Ch@SHdX0w#GqqHL^-N|>jJy6|cOB-^e*rOYXq22Cq~wx9Y{5S9Jv$*?Yn;nCyxX3-r(-J8ApIC%wZ&I0Z>D4?*uVyz+? z45Xyh|32}9trRN+YEXv@rFWl0MITu_tOQOmVEBId@eCn)JBbP&zj|Xp5Zqzg$IzaK z-A}tmRQL zd%G$BHBkvzS>xkQ^kd=k(&}}Jh3Rk#Qo!zuQNqOa3%#AT57f1=Oo3UG+TtL7i|sv)BI-?r7(}>6-taJrRi0&-t0 z!0-$YgB$EcW?!RnmPtK!oYlr?wdho~gI!m>@}A{c&Y!JuV;2`5c!Dbqd2`aO?dq`W zWdF#CfL6J$?B;qU$&3aAd3Ztgr9y1^b=VN#Ul)mR`;7T4J?y&fRHK$edaSG73OLs@ z96LhJg_(VIMfP~8@?%)~V^_yLZHp*1)Um1{wseEU?N8dihssjICKPK9VE-&8~0V3{QM5UzPOfzn3wvz}bOkG`OK-<1U z@6X+4!S-k8xWvR|kp}N5;o|fMIo*Y!mMbwo-}m5UhQ@^hm;ZKMw~^n@UPQppA4^`2 z<^NFufw5kxk$m%-UyJg_QYPitU|KPM8!W&&UvGG<>dNgDM?t5;G9Pck9x+pR4hM*^ z;3seALu1o4-RKj-HD0V~7hem8{YNi04_{bFrB!=@T8aWeOqVaRBr~0ysxd%Ug58iQ zir!}Q3nJO#<_iiDniVi%v~YP?nL18ofYnS)&WF1ob-7&_3aO%H=|#|FjDr zedagME_oIQdjr`7c1zEy=-OQj&SnOnk>NZ3nR1GZq(2vT)(1h|LKxVFaCk?AE$^xP z*oxjiEDWAdB|FlU{qYT;oCpy5S7)-Pp_EtidQvms^XW}GG7t^1TW^2( zr+?_tG57d1>oj&6X4PGBjy**LFh?(x-c)OOtKKcvk52U98iG&$u|B9B%)40W-AbG} zitY8CZEHVMBnV0O@~ICsj}kOFR=oDE)O3GZgjez?w<+(GQfu;tcq+lh_oG@vBVKYG zdrcXypf$_*%O>)%n=b-4dk_Yf`W9Bjy!Y+ugBg==uEkqMKOEr^tOuz)YI26lgn%EQ zDH3b?(gqcK#Gf-GXYzloHSML{6c58qxa2F!SUEcD1S@b=yrm2nUyOlH!@7lHvk}x2 z;+KVoMd918_u>BsGn#DqX|(4m`;mbxs&T&)?<`7Q9DsFWTMu%dh2 zNFzlFI6xLPm7FXhCV2&!*gA@1S>#h?F{<{YYgG6EjEdSzOqFE3$Nu`#cIepo#cdnxy@9q!*Jnqq_d|LF~ z>ZK6~0=pn5=4Xqnl)DLbzra03m9?cK%7eGNzQtJSh3l|!GY}Z`1|yRtFM;zu|Gv8q z^O+Fi&ful`7Fz$u1Yp0oVZ^Hq8&Nlr&bOp1Q0p!6XNKwizI2b8m@0g5)d zfCoic0_q6f1iods(80i5E^FMsaTd+v;)h`FeYYB78`}bElJ7%Lyz0LrLBx{=T)qyA z6b1fLH$`-+U@cZZu3r=DbCq1=d{m=LYt{v*pIK6eFlILK9ow*!{Vima+pAyzV9H~g zb}3Z_-}U*lt;WZ&Znpl`FPKhtrRv%jiZ)w)m=KEja1gQ zx&-Op?Ka(2;u?EgoGE0a&!vxi2Q0iQd77^To$^}etl!a6{lzXX|E@qj9V_L7tF)Jm zElb9##qYNrHWAnOuM7LfzI$bZwH!BzX&%#T`R6v;|ZnzO$%oG zCh&<^V^)kLP2{avrq%rEP%R}*xPHkxYobMl`_!Dj6iq1R$!lJ3YW~?{7{3>)7T?=^QPMnyjT#z54Ofext6aa6VI74TUZ zgpE1`jOv8M15o2RXaW?$0g5tI$Dj71Mi#i%(WkXX2IajxPuruc>|%;jFyft)z-o7& zJH4gA2Gyc6lJF=Uk5!BgY!L@9t~9ZFl;GD?D5y$0_YbIfjB>oO7>F9}y_I&wA1 zXdGF3Oa@HeW?W4jV6Sl^Z}^9BtdF_$F#1shIxB!>`aHm^_d=pSUJJo6Nlle^7?P{;9<3}0o2Xv6_5ez()rx@ z3lJk;fgxG5hARk`Pavkqny6GHcT9dtynP+pZl`XoKtj)o;a5^gFouf~s;+459SWpo zk`gcx@g2zU6*!E7U!g;0EyKdaP=Warwm8A<-8E;An=L;R#*|=>p}xk5S<1^fkYMU* zZL4Z%Oe-n>cvsye!!p5zH7Q`LybT1#D;j)kNYvPCS3HQM3@L;;zLma~D;}$VP zfmq~}BPR0*>@Ycj2I2lg-(UxP@uIO_r(sqZSj#u`k$<;b%^&KCj+KQF;P zX4kjM@<`$0RK9HNXfD+4c}pP-4b{pBH1lcRHr;>ww0mR6{QLwjE1h^Ru5N$_rXcGa zYO=xsduf*71Bp;HrCcCe@KR%ts|doDp5Hh03Ng~ z&?j%9xH=9L{id-Z0JL_cBDWAA1v$03oz8d6EkMr+hZR!hc{FLs=zblplai`P#0JTn zoQO^MARm4~_QiQ9qHPvV0jFhdv;2Y>3@U7DCKH!xvBSMKzeZE3({FvcJHyza2f;Rz zAM}OkEEo;GvJM1UsAn&t3Q$++|OKVgEHcIL;fz%?#5vmI0a2EIG5 z`363(67YM7qe!hD4b^)LJ? z=qHM(0hU_4Y0y+Dvq<0P>9&=AzIY_OzHc+Kx91~@54YSw zf7_L=*ejG>Y?%)Rv*65vQS1&0x@;Q)15<_E2n7Xx!b!I2L&b_4&*DC~+2rOtX(Uo5 z`~mO&wTo}aQ-H<_dB!?U6B5GbjQ`kDiRYn7wt!@^ZJKo=P+9Hf&>OQTz+#Q3>V#F z^qw8B{p4TL5A65iYWlN=><6}k)mm0hNe+Q{n>v3=`oX|}HsZR-oP~p!AN;!ocF;eV zxo5_zShpCKZ8D8)uB8IeMV-tWGeU0Y2?g}T1Q6H&Usz*zr%Kbfw%(CoDE}RH*V8H2sAJ-{1`gvy3+#Ux3!3ZI4 zrsr$O;S$&xn)Pqt3>s>)j0Iv%sLm( z@!RmQfG^!Tgwg_rbaWTd`4-LJCi3pf1%pcpr#`uozvZlzZ1*cIkDdI3CKF`;2sO=&0+27{;j@q{rYV5}$sB}1+^`TrjN(4&Vqq1vXj z+488e1)71gN8}ViLi#}DSN13oxum2(Og%)d3X@C5Vd(+tR+#qwToVE8$PO`-*f0}< zLFj%R>_j$SGwUzACsq~r6x4Kahiiu8e0Tp^tg#A;b@gUCdW;iIgmcm>RY<)NM~*(3m!A9`VHvNRR7 z)IDGX7-4z;nF7e6n;ikfZ|YbW0+T?}1ZW{NYY(XIqsDaNy3_+aPRTMr?zpy+=d#oM z=nRpu7EYX@*I&V+V9DvMPi_bXCUd*3gC~8>8(|A=MKl28V?+65Fw9I5#2FqSUb8x0ujA#^%~;DFle)Xqh&B~VZlT7&5c(8X zvXACn?!lyQuKoNG!fDXLHI{1$IeDjPth?F-#~)YSq$F*vz@2G&D~`c^%drLqZ(^gW z)j=crFWW*MZ&Nc+k4PXP5h@4a$s_@JR4BIpED!(&n4YouJWhcP?JThZgxK%^L7+318c7H93$T#!CAE>W;|SA%*RD;Sd=CT z+eE#+K@kUtNrIGteB|LbEVl@l%>8VXtMH(0C*^pwgQVLr*trE>?2}PAP)Z^Kp?dP} zR1q2*=7%ALz)M#9oF*EdHtn#q&#n@_xV6L>=F|JyrHwB#q|0z2o*mNIR{w|pRJP87 z2|7HEi3RX^mm<=ntByTcM?ee^?;D7lmHB#mU1ra6&>R97mjxNm#t+?b#z0*=YGt;v zEvYia&nFmQNuI<$o){nCjEumB5XIyN4<~a^%)q$^G^e2922gi=5i@rPCoL4_?HJ=7 zRp+8E6Pl3>ywP6I6(P*2YxB5|bE8 z_=`{cC@WCP|HT$0=_qj&-CBT4@r`}) z<_?H~euw)1k=={RceTcWD*LW4zt@^tjXZWX1g0o|Lz6B(&nOzC zx6y`XGDmTi14uaiUf`NGi=Wdk0KGm^B5=?0bp;5H@3WAj!>zj5jkZi5U}V-EsViw; zC@$^mE36Rqwn`^m4$2c`w{euPc)X(t(4rI}{;2eO7)HpiZfe#C+9iJBLxIuD!fa?M z6sys@sNq;p0l9u{G}b0~6AOm^{iVGxy;HFS00hk;#WL~6e`)-Ko(plFlj33Cr8UG- z5uP{*YJXQurb`ah1+cP;-75H=omjL7{W!JO&v|KBpfW*>f1{DaL znT|urrIGI<4YD&ugKPOMm955XCU7q0aZdnI=NU8m?sxY7-q4<-xyX3d_N>XSd{%~lUBq4S~s@)}!#Oh2x zBR>EMfCo$LuTPJ4bBh9Asr6-(n3YTLw?{5~-^;vtMfBJF?&-{l<`W{T(G}~rHJin=YmmUF}MsV41^cx zJ4R_nLd&cDi%&aV69*TRuXhz_WK>+&zM6fB6!l}`#W(u7S3MBH z;hrFb3m3lZml9wX8V1okD-CM2JR|!UhFQn-MwS#qk}1r$>#9n@`+GbYn3oe>&o_r$ zfZ#rdfsS{SKw5_hOv64@XpUSzK)au^?Ko{zld#Jo^;3UjL~Q+Vew`>MRJFH;eGJR+ z9k~OU=**+|w~#n~rE;{6vQ9*c(+Bh)XA48r5r^L755bG;yPRel0s)_75Qu1(>yiUb z&wMRoV)*)_Pgf{IcN`+(R~Z1s7N0w(qEiXVK8r2PXuhZP>#^wkT#D%QA&mh7#wbVK zeLM)85xE!MBLc^;+!#??up3Tp>ZC3+6B z&pYZP|IahO!{>$@UvD(jSSrMpof69dq$?o6d;r75L^sJZaw)Z5r#fIE<}iwmChnwZ z&_>ZK7mwWhnWqxHsZ4*urN)Tp1hGY$n0SqH%BSuF6UrXUeAt{m{Vd2n&i6-BKSr9a z{`-^HfG&W54mxqsgYsfbwb;|mgCk&JZpiOmoAVSPyXAimx(=7`vyCXSYt7IlPG9ePAZY6Go3qnJ;#ZA6y&< zfqMuqEHxJo8LcAKrFQg99RTp;OVu!rQG|$CJL>Ik1csIi#E_XbO8BP+hKH59!K`W> z=0T$TaLdNU%cLtA(|g&w{r3Da{kFt|E>uz61k<;Ht*Vt)X|t)Ja*IIgzv66w=tvvo zf0TrY!%28A4GRsbON@Ot0puW3hFRVrkjpCN^E4UrWF1B(&t5r#PJfriIy9NpoHua1 zzLU${GI?!HIVbt#GXpEG%xmT*t^m!_3u<yQT#@VC%LBy_Ke7GnC3rRT-BEUzU$u9pcw8SdX zgthlkE>51+gMLUCLvaM{sDwqrp-UM5`>?;=hyVt~q-1qBB>n#Id263`#2jGZ33j%O zY9SyjXP*|lFRkOyyLY050Ee%LR|8A459h^~Sm*rHS0D4DVl$&eBmkt7et8s8w@oYO zAtC_^vc=z~8i;!|c+g^Id00_a;)r&dTeT7MD>fE9^2zKmEzvhY;%P|9Q@F`*jppfo4O zxzD0a_)?Nri_*Mtx%86&^)TXpaas*J`G|He|evaXJ;+hj(7J+worFzjoy_SFW`AMy;@(L@FuFsd-@PCZMfY^Kjx||8q5M&XNLxI150kDEXI`^%1!84%bd~nb)R;Tw7q|r( zAyf%w3q7yxcBa$sc|C;gOE{wAx*7D{Wt|+VdW4`+=0Xdo!GP3K~W_de0eG)XD=J z+3$bd084|)72eu_0GComc$y7A}3zm-X9P*m{z}t%e8!N=P^~ z3*dPHE`y+h85YSRg6;;;-qp-!F5{zrXQ|@!Z5T>(=-<6OB^89Aga;!#XIEQ;R8*#N zy7(9tE!z?dzJUXPpfEMqX~UcaAgEttDMg_?ZUal8R?r)4IcUH*0CHblHOYigPI_~> z;6$i+8|Aa-!)=})o+R8XQaW8~{QXXu$BRKm5ItxunZG(4eJO`-Z5O}_Ziu&_&|rF5 zlqd&zffYOhy;Ru;?Ie|D>??;9-kl4>O!5DSD*6 z;Zqwz&fKlmpHD9VaJ-*V?Qv@|gf=m3GOn7xGry+*W0JuM_oGOl$757$On6NRo1Pel z^)^|lh5yHV1GN)Ryuw1VTaxVZAXN^J>xqw>eNTtqdYqoFga68AP{*ffqK4$G{k{`J zhHf_(7{&A^-4aSpC+UT#Z2YO?t6vJb1$^m+X#w#L@PzKQCG4;>AWSR2#$@WLCO_5A zSBq59FV$yKa9T;F!)zc}Wo)-K7doR22w>JT_1MYJN4veca}V#(2Qz^f%7S@t!r+{r zoo5oR{&0cZ6~R5_ca8xU4_s`52=Yp*B<&$ekgf=kf91{sx#g;&>f+Ba-sUA!d`BIk zJSma+VM&eDYA#+3S#xvP+wwBrtPA2(Lh(vhoGd3|O3oi=RWVY$OOY(P*8SH>#o^OI=p*A`6 zZ7bYBK#QvvA_QmqAT7g;DTLXw3oY)r~t`9(t1WLk! zQ}&KTj^bqI(;eR`6L-E!>L?g1lThj>ij3yFY{)2swWs3O2`{m3ed`R3^Ph0sw^|tn zYC=BYr$=50bIm04WTp8mQCs<5@(w0%SG9wcKU1~n=29_ntLLX3y<*YFG5tyGjpezX zC#;K&>vZ1LU+-vou26reRA&3_3GVmHfn)}04w%kaTjH0d0AoO$zpE2uVt73ZE;f23 zuFx=S1wtdqj6tuauBwNB_G-4p*Ai*rUO>h5$!6^)ZPw2cYKEQ8&9T>Y_@NfqHWm?; zxFf2*HO-9gT2PTFG;=S2e==R?-Lk4hp;!Ui&Y=!~pPEu zH==zGv=bhU%W-Vo%qXtePPI6V7%i#8Z->pO4%~YrXRWbeh38xCdIfuh;!c@322?@c z_1ih34AqcOjO(q7N#6Ymft~&D^@%LOh#dAOH1xoX+Q+lKXTGJ^pk{zU811O*sSMp^ z0U^tgPKU;(vP%Wx5)HizQhO~83Dm3J1+;5FROg)1qslF;c|a*veUHQTBDJA5{#$zQ zVUPJiy6A@EcC;I{?=Gx5VL{zY@A-B8<>9(1##GOj{)Fa*d zTl*eH(Ke=pDfv+2XF=$FVO7JOOuuT*--L_N=-BL8nk08_G)bCzzcpT0t(CncNJRy4 z3TkHYhiL6N2;kOZp_l z_gL7JEz>J@%=XTn_|R5A1f8q=m}HHndUrL|nI#(xRQ*^~N|?`F3ze{(I}!*m*iSTB z-7Pl87uZn0+Aj(`8X*uGf;uCFxr?aMSkJ7_PNFFO1ScvZk%kIEbC5m>O=M;bGI!!NaBEG2w9f zVSCIk*+8;H36Djcx-~9-rD#IngY&LC_L$Fl_?6%QKT)Yug#Fzb0FC{ty#i&Oyz218YhKo`H4QC zDF6mgHPI#69GO)&lcG0wsf(i6V3c`QU+zU$AfG*RYzp=Fw-Xt$mmjvR5)^ONU8T5P$?V!0^E#g^+7?<{MsuHrONiK!CFr9|gNIfIP+I z;wpGR^3D^T1h1Id_l2%&)OfgdXiVZPxhb?>*@ZiBg=Fir+$i>H zUV4=;2&PQopJJ)XOsSM|(6vBeepK278wh;XCJTERn?UyPkRNv)4B=zlqpP zt7Rx^bjZ^HaJRT5jFj|qm`*8^qW2{LmYJyrF9={Ljl~rQpFuOUB(}$Zbr9T#d&p=* z2q$eEhIaG#KOHXWJO3srPnqm2)O`1a4LHQ%__5OXXbfuguz8M$7S}Z=4mUJpCx~G!*}o}_RgH$t9j>f8^ovaYDyo}@zr-Y zdJU25S_Tf%GePgShy*XNM|wK30<-;{69KBmIqqI#l(5PTb!T?Mk>3lCLLzOI|GoET zx7YW3qe&U6V=>(-UMZg2`j>j3)60L-&_(pTuB_WA98|29)^n!f{XxO)7T^xUo?eZ5 z%?^x-if_+nLqAge2m!AF*FW7Gj{34^T zJ(Uh7j6mkcZKf`BU~pnyo*^{{&$LL7_Hj+R(V-lf`G@RgK>mgP+t&T9VazcAvZd{k zb%Fmx8%RR06w+M1HCCM;Vsd71n-oz;kdJgPHHS-ME^X*4?@x#y1zB#AG}-HX5d&f! z)eMe@&7{LS{)EL>EB4o~;4-E?-s;%A&I|z?P3C{-NHcz7#Q&v5G+q^^TNeoK;ry@U zaGkq}$J4(TO%O1Ua^)(T|9i1JpJC@uLuO!uN;o-6476^AozS9&bJ36EPViHZP<*zW z)QJ7dllHp>7LxQHW@5TtBxbzYkuvZ)=F;hUpW?N>+N%{OvwO)k+?`_str8Bz4C9A2 z>JKE&Z0#|)=RzR+0tkjw|Gu~0!fJcc>;a_9?G?wmq(%dwoN);{;r>K1xxqUVXyStE zU>m#ZK%GVsI}(Z!i95_a;EZ)^h)u z5389{b-Y_4E&E$AxjD0?*{Hk~#|kR0brF#vH)mp4BIus`k{CX}Q3923qg=LS@mYMF z6b1>oq+Sa@O(`y*&-Jn5+R^*%4*eL*gju-|TeCD^JD5~1+i(~WwpdAt-dXLQ&fF!g z#VcE{d3?6?<$<%(46(nP-a17x zPWt_?yM#XH)%rw=l-JJEx-}psy=Ac_TAZN*D_XERy2r~L1n5nfzh_93EB}?mm~#Sy zA+}x*1Fm#&j~%%-oB_Y!8U~SAD%sZ^>X`Fk)|6+dpe|A;Nt35jF!$(LP#SKElqPhP z`IICLC!!)80`z@ksSWdMXme3O4T~8t=Ph01MoY*0gEAs3@h!jkJRVHn?t>o`e-KQe zLif_P**Q4N(SJx-g5>l(lmeHCMg?x3Mx@5$%8ppS9tYvdh^+1?b+b0@9EWr1k~N7? z%leu;zod^i@5caQOTI%UXx09bPo*$Ha2TULCZuxeUKr2eR0K<;xL`x}) z(gj2Er!R4K&@KE~nuY>8a)U$a^K}B>Zdc{1956g#G{(Wg0XPVjO367f zpbHa54Ev6e5Z!+Vdm};8@_E34$+Y`YrC*CYZztOWw6RYHtJ3VXRL)^;IEuxEd%+D0 zfU?el+>~o3go}k`)}};FSnsQh6juOc<9jAkq&dUZBWGXIYSn`W`^UUW`qF^6#k64{ z)IMucWRrx+V}wT`KyZ0kdPPg^R=D!kcD6{tWPjg<6VxX3XkAkL{NHE9&w&Bp1Z-Ia zp7Z7`okWbv&vY8Cvr^*oKb#GS@Uh2(Xpv`lR=6~*?HM*@*{e|6YyyF_bt@eT$OF7BpH!@moTV18hs9bs&0ByML;P$CXuF*flU=!C!AWr?2gwU zfVoY7@>n*7fWs#kg|RwRF^$t=#@)t5Y^skIVJvU&?9ngl2?fv~%?S}#2pV{(?XLpE z>&W(r?bJxrBbbA#Xo-Vpp9k_^hO1QN;`JoO#F6H$LgGNT|26RtZkT#+$JWRwz$$P& zY}0{u9ha+pO#i^q7w%>zODATldNcMB=4BHuv-BYB3IS&uA&$c5w+FIAY-^Dx87 zQ4HfUIP1|lv6hPBU}?cr5_M3vsZ%K${Kqyt%!0_zU%NniCxmN?NJ4BC^e_YkGz

c3os`h5hQNiG=uExSz@Y#bfC10zeTv5qjwno8tm29z(e}V;o~@F4Sw^Za3L9Du zbAOs%MuXirb(52gB(uiKMfsuH;JI!MWic4!93)#rbHEanFT}RM2 zYt_tWY-474U#uyrj0 z+|51ghG1;V8Efh8_Qw`!dF2TO2& zyQH#A&z7H%wV!na{-E^hO*mo;5ZyimDx5oW*uK|ffU$UA&Hoes)hnaX^=NaViYLM& zDIGOQM^q}4fwLVhoEU@rJg2{cqA+&a^Vm#*dbNmcC0iJXGh&d`SS(3&3c+;^{teRm znS0uUAshL(-&=H>Nc7%EHq;!8eozAc!MCbNU__D0ro~k_yoar%=31_rm;#jGL&!iO zaQOK?%hQTbW@e$1tfVDWBufbd(A;p5?X>C57b@%QlcF%OJR_@rk5%tpNDgC**fMl5 znNR2FMmYuY#t#Eu5oH|6-t)JALlJB7)SSLraGC*hH2$Q*X=zT2MAdLI@(4EDYH7?- z_u@K?e4hY zEP*+2Gk-oxz=z1Uu7oW)!tcu+82b#dIfYlMWJ%@qPC_pX0AL`3uEVI|D@7YwjlL|$ zQu1n+;B^$;>WkrLND%8~d8fC=j!~>*$mX1O&fAl@j#d zXD}ulLRb+xs{@+8SC{t(KO8zV^N%d4dqaF0efNalg#2FiP%C>1K|A!(@QOY0l9=<= zM8Gc38REdy0lri(+;{z7UeYSUk_Ae_(8hsIWU^PktPhLZVmm)p0oIJRHTR)OM?>FB zPZL8);wYKKZx0-OYSxY%W*;CuN))YH9@egm({j?R;^|04>6?MPGY?R6u-L3^GtxDcoJ37T$Q8_{=@_& z#1#PmHbUcIR|UW(C{DJ{XuXt}o+zvb1+j;t8RO%5d-rrz;+3^(@}e~v#XZC`Tb>1! z(E}^lMp_gHuX+`$E+Zn@vWsT@Jhdg4h<9emcD+>e7JHtA-n;IOh1WO4I|iTZ#w2rE&}cNmk?Q@hkK?V#=4S+dHX_No2?GIDk|Kt3^Nrjs`wzn$N4vKrW0!q!zfr z1f0sYh5+8JA1RvcMiEONiU94ShcmWvUuJ=(N`khU_;DRCSK8IGq5uXBqp`3-bpjx% z9X<~+*$RV_z!h4_ApTTmc2E4-janJlH{5#o(O!CI^`sG z3(%e%IIW89;TOKlsz8s{4R<2>e_ZM9QJq6Ubs23yy^hu|v9cE&BDh1<*k;{faeb^}aJM(CP0|i7wASb+ ztx7zaEvN`H*HTa^HxKgg);9C~`dud(2tx!LlcAWJ<=ePfHOK;7wrj8#58WZG_EnEE z*U?vc``_F~-0)SJtxDGGisMLAQ+vg$;;N%1YR)gU1w8ZJ6k0Khk>ODo_}jH~wdm&Z zb4nquOxa%ZM* zQ5Qn&AFshz=aj3h-~+w_TPFiWNG#wVj@Ry1{Ew_gYeXROAYoF&Y5jZP`)+@wcppRb zqf6{w5{usdQ-eH+Lw@O}3F0}qD%te1y5?o@A((vNkmSvR$@OCVtUH@``)#0|m@GIh z|8!?4JKnn97(hbif}tM~YZu2RRX%GVm)qeamLT&)TLP;Mhqk>z<>BQl4+w4-sPqfz zBbTCie)X)j#+UWDFGkQ}(38&1Q4gQpLs0h2unzV6Zt|GT|73*a-#jCbQnQDlaguM2 z-?5sJ>aSUk#Dxu;@|gcQsT6>R8W3`Fhl+XVE?w=scC2MyVPXZp1XzjIr|yo9ySo`?P2E zC#VGn^3nVAr0)nl{#Es<$uwveJZLhoZ2okZsS>G}>(*p?eyGM+t0O0s9b-cwOR&as zs9wRc$5#*+YV?5MiX1b7J2u{ms`*=F@{jxVWcx%PE)X>YNf(R;EG{_%j4SAHY&z|; z-by8qbq-Z;kzew%aUajJZHb_7t$=WhB^;sZH{3`2q-;5NLdE0kC8Q%O5%OvaFbcg# zHlSuN+N7qUNZcNneGSF{8kqeE_gz3=y3B%o9rA(WPI4bbCDSWuJY81~!}QCsxxB0g zd*ht5*sFSO7p^9-D5Hq4&^0GHTG*N8moMq`PClGhph2O;U6QQ?Z8#rhZqg@Cp^?L! zIlv+RJD8~3Y}K{1GP?L-7XDRiOKbaC6zA$)>rsIo%ByR%-I@Rw4DozEG8#n2Y$jCN zx8sob7{Tt*4AFmm+82&u*Gss5g87o3F)0oryNfnS!rRke$pcHUBI0Hzk=8CCbRVue^fMdd zUhh#X3n9>9h=)PCsluVZr6=KY^ayEKzn1;a2lKq(c>;0?u zzoB+qT1RZ^tcht=2=X*4$;i@zxs<74EsvcQtj`k=vv(cn4qKtfx%zhpDFnPCtJL93O`;ffObL|kUs$($iMJW z&8(#noA>LVGFN9oy}W=s40iy?wrekm|1M|?IBqfjrvQ5B&%@lCsO`ezBh=9$-w541 z;CnIQCEf*OmFu(k2@+179e+7OEP@B5Q5zW|u;GFr7?La1wEFy|{*thrSP8hI^YxCI z?PWeBxaveCgr~)4KK5q$?^G_VtKyM>*oIW22x>uz0uWup{x7)$JxhuhE~{X_1JA`8jkFSZ%|cQ7y3WN09@B=VlMV zufqDjInetMtoZ1s*lYr(V66gVNDeR8I7!AMJ&!H&pX%wY_=Je7ER%ebMebdDJ}J#4 zrbMV5EmE`F1htn@eay>0PA9>?0U71tiA8k>g?%$JYQ%vw|B|{8JXaNJn>K^_>bH=5 zTK}TGC=`VZ#K7$F8j2G}5FF%wL^YGyP->M*4-pt?S!^P7dU$tziijLvN4i%#`<2PL zk@RP%Pd&5nqMuRrYVOU$C78FnC@T)SGs{o2;G3~?o^Bg$@UxaOppOasGtelTHz)E3 z&5?Lun*v$n^M^7adHXYo+4;YD0-@eQFt)ir^MOJ|c9nAnOuw%XhGeD)((ZcaHo|w$ zI5}cJ67*&CAKb{V0p_p516Dc}yY28QgOP{(<0`-&b$MTmKEKvm!YmaBm6S1p&VJB_ zz3n%%{A1tO;!j25uP56Pg{h{4@SlTQV{m{16S|vi3_Xj#DC>}`vbN_e_5Ov_SeAu~ z(P;W6x`5(Hg%(U>HnMO&&;<-Tdq<}Sqt-fc)DdFcmzzZtUeP;#%2pXaEfsn@dCQSS zGqr(eg>JSl{Y1v|=5^lR-~L_R~mET8mN{+8t0c_R$K_18|H6=3^LR2hfJRZ1E zO@i?Ia-~-92!=S8BIMj}PGdjqO_f)pf_d$xQEKh2GxTWr0|3enWP|g!c+t)zJ^tf=jG62d9$KI0nbFoE`K$_AR2CcaAKe^03 zC0A{L<#8UWjfy@NR~R@+{nU z&n|x_{Hu5|7o=1}%tHfc+MRlOMTvvno{+u%?t`N(!twNXc;12x#cdJivlMmNdEFgJ z0VhJoT4auIc)ObXf{TPHMWNkq3n0|RBYpc7TUuDeP(@)wEMNtT9`qqn zLg1Z}LtNSv(ppWWrC`&U_CZ+3YLz~r16&-%Dwjw~jY?|zr3->98dE2i{D@T({F zW!K1o!{rPE&^oAAk~7RjHAZ0R%e;jCwJp|rDN@URHs|E5pdwWlL|~8Ax&qb?AGyZU zFTrALIUdY3KiO-^51N9?f-^dAh^n>rbQ|kT)wmwAQ|cih8pQRqbYEK8AXRXNhL;h6 z>H>m~D1+Dsdb_d+-$%U!MZbp1sF+1}5bdbHia#_!n_{0iRqBX|ZVNiHC76o>GeYmi zOoGOPO%jjM!b5MxWpf_*x|%89ZygWgeQh&*;w~kquzx~qwqg*LUedE=nF?<}sUeV7 zZRS4IMHtS~QYTBb6%v0yqVD6bOpvL6G^$RJ{i$piF>AGk1Z z*-qOH9F7{@U3Frp|B&SwyTzCYJ+@eoEG`U?#@3h4-Lm|FKFm;zC&Mh46uSybxw{?n z0L&XY%;kQMjUNwU09Rvbd6B@z_nsW^CIha?oF!9L7szL4$1%ug0qj^PX&nwKPGj+L%>l|Q<(5F-d#_-+`;Sr_E3GKNp z=5H{GQ8#Fmit>TU>CdiuU2s%0XGN0rRWi#NJ!yQ$&P3>N>Zh7tms+4~(ZY-562l}V za;BJj`E{~)S?P}Lg=!l_;rn4)uU90RyJ=HXdW*PNw)O7UT~JQ=bH@?nQ9On7Qu@2A zh%n9`9gq{8MNG9VGPLHHA_Zpi0oNiTff@B*uD zcTPfr`sQl(u;5H)g3id>1iGTTHpK<27Y89FVDsdv}OSXC~F`q$w1FG zSB)3viAWl`;-|2V@1}^;B)Qp=?%3_VCBgFI%-J(7LNY>X*Votm#c4nB&2i7gvRoLiifOCf=YD~H)z?`U9vMd7lgQa|Uw zy;@RZ!_AYBnxg8&g1*!T*zr^ zCyESaNpqH8Tf0?W?=u9f3L>&S7i0@{Mn#^lVqob1gg7`tEEbK<5;hPL#%zhutx{ym zBM854KFHnZ45bykD&?8G;*=B~B^@|IrTMeh)qdQv0O26=l*ST++tG;~Bw{biAt-6y z#ECUSZGYx9Dw^(iOt%KhUHls^B$))|AA7^NTO#H_LoLC+4?1+jS`MdmwDjh4Vm_cv zbS?+iB>luPifqtP?TSeLeeziug+~c8fMq=5OO8pmNVkFIuERPMXZL%C_i$M;>EQF4 zz5Np8O>W{ppw!Sm@4qpp<=uSx-ji{p@c8LaOLdnM;Vyq?HnA+CbtWFCy~Btud5$lp31>lLQwK zb7>`fVsWSlc|^%mhTGv(b(>akbV|u%&`OxG&woCHTqnl%sQ8o5i3YhzkJqC`I@&A5 z1Od}(uC6_#s=1a>nn|5h+{iu+b&8u()6iyy|b_>(FF^oCgtG3^pnz1)mNzP?^zxLii;D;Q6pdN zD5FT@B2E+Sh;`5U@o_uMKLnGd@U22z&+ARwJ9p=Ob@POrI>(X$sFb6K&ze%-h1W2(+B_ov?o_mKEGLH;#(DGEz|B zKhsXD?VHYy<{gia!O@b)JH!tk3_=qa^Ai zd`r-ru!#AK&f1)=;PU^97AJeYw_KEkt_U7}gJ{Yp;ez3KoOo7cYaa(26AVgXPfZWS zsGv+^ZMldv#GVhejFw^^P) zD%1O$72Y{{*U5ZTpH*#^o+sLNSV9P!TRR@?YR%Nl!^SakxmKwb43%=NxG#J^BI>DR zo8yfkfmK1n$$@Q(vpb8~V?slRXfESAUkcy&|&w>w`yEETAIT$ zK-8q-I&`d1SN2i$)d@a1ioVX;w<6t1;Z9I<7@MDu0}LA`9;~XRutx+J^Y;;uGzqH$ zYOvu62Ha-#dQCOvsuR%3xTJ5ts}JV#@j+c-m^zsT16#D(pSz@%Dh`YaN(Ch`c_iqg zH%N;^HhLsuK(?I7;cL9B@&t%vrYu?^c35?r@MkBxocbMRnAfvq;aG~S=scJgQW-m6#bigGcvo7W9s&abPXf+ivL;ws_2+sIvv}|3a0lT6jxcTUU1JhSmyObc|TVy z(ihv+%lAA4(FZ$d<=T4aJ8FzK(scPNrG$?cx#248k-JpG($eDxhiG+3X|@m#3A;s1 zzAwIv*EtZhfun~SZ%Kk@zobI$HX_2|Pn{(qtrr%-AJmG=U51la9ePjTkg5LftR$Kq z4E(~&(vuhgsv}Qy-6za(=M}|*d?rc~OozXUR8*HXodVU}l)U=A^ZxV=bstSG=W~y+ zv;Cnl5$1P#d$>jtMAl~XZfrF1K@s>xh(g%!G8b0)(0<7|u`qs5mgB6A7Yd80uj(a- zKaJ&$GuYW^vk8g)#r^EbBph}18OxA)62{?x8ok-6{d?H&d;i>T94Gre!LOXZ z5z{3UTQj+!Eo+6>@?Cgxl%VWLBAREMcVNogtk5#t-wH=pKBVhES{aoE_F7pPxjzw< zQi|rI3G__s={3$^nX%esLv!a|A)RqczUwVHcHm?Yaa+2q?S!Ah%K~qy$npVXsa;@MMV6A!{k8waujXxCO?sx5bhr3yK8#6!* zuHD`=7GA%7S6EXU;J0OFO|pV>d&HGJ3R5-MU?vC?)01oavDtG+*MILH)E;^Ibg}Xj z7<{Md`a^E13-!^s8u0!Ci6!@~TnON?Wb1N~_jEO|HLbk#Z!Tpg%ctP5Fe@XUM~Ovz zTjA7`@~~SYVsjQ^l}9$sZ*YH|hO7$|lYE4-G1pGEl4!O&V@X<)>|Sw2_b6VsbWMdd zbbe(*v~2)hI$fb|r$^7yeR~K#z+JdxADei^@iDvWadMOISIRP<8XUh#p=XgG(Jgyd z1Z}Ru<^o?czJLv3Tvl)a>WdTu)t2z$0AgK$5Eme~#wxV@P#H}-Lu>&|LdOUaKX)BV zCf7zi>nPy#FGdGX%u5cwf{*whAG~~?C|9re?d&0ZkB5sjiS!fU8SVr4G2r-3sNSiX z&e)2w!nc3uKH>2Rndn*(s-RyN=pWft0`mL`-lt}=(gAC8ONGF*${?ac*i8Tt-=#Li zr#w)jI%zl8lfU!#@fZe!=~uWXdR^!2=gGS+D?E1_ZRa3oiM?L|xkEAY(0mzwmq+aa z2a=3W^69aonav*=Y7>9ZW&ua*NiCf?m+J=^OF_E0VAan0@j}E^>?UwJf>xp-P(l^5 zheLUQ`!royeA*Z`RvgFTbTABwmnu&5S7tVCLUp8wMfxbLpl*!7=Qtz4L_mQCt^<;q zJx&kOuLOY>x{2)}24e5A>^}1}+gq51?$crAuFyJbmvYRfvwrh0E&paKBOPBV(6Q?v zg8r|St$lT_H~B4@KS|H|)bN<03EjYgCEs9#zkeH1qoD0v z#kw8i`0xH|WNv}Mxo5%ZpI4NJXyE&hX+{#4JSU3f=ML@_+WK9Je)3`8zLUIux6_~b zcE~h{ZDQ-*Ow9g$xKFe=8=?@nvA#0~mKL9(2d3JEOt>@xAEW~mWjxq;nCSgvq+>(|fg41#sLZMaBER}^eYyFJ ziIBLYcaUroP=4dyjb3)H^f7cTRHi1*gK86d1i3KNd*%FHrd1eDyHj}}D}(Vu!Xt*% zqFBI9Fbk35af14E%VRl3!%r{WSbp<3b_)vKv;*wA-(2pOf}zFadM6EiI}=OpnWiWCJe8{m3lTbS_rrkP-Zt<{gu+)UL5)XhG~vPE5KlB+I87(_oIO zN*cMZIovpV{D+{I**9~nL@g*thG~<;2*=6OL$f3Us8;k_=ah74DBl#U++k5RGLjd2iDu-2mHsJO%y zPwz{^vtVv}?FwB*y!7(FZkJwT8SBywTY%xYrM_*ICE%2z&`38(IR4HIT%*1H@fFW? zrzl11pNG@I4Pm5TB8GH`w$)xg_bfrhe)s8 z4dQ_D=Imx~nfK-!%M7@IMxDcwXaEo+kO;a8)Od+>+Peg~rwH(!&8L&toD@7x^}T)^ z;+adExR@V(+bMN@6(aT=2Ba@SQEtnb+p}F~q~3Z*-1)_263$4Y{`~DAAqz5u_5{@B ztJBFaz9DLIP4A1t=EAkqi(D1j1$YibPt&CCWO{@$iY^g=RF+&<96R53^fmU(Q)kv! zyM-a49vMY8fMNyoBN1b&-VFi~Z{Ud*i{o@^q13Rt?OT(R9*`xO;c~ zPv}DV_^4UaQo|3rVgb2mgc^MI_$`}H-$?8LT=H3>L{mdT5{DG^fc!+gnuO5l`CrMo z2iAAbcP*$dSU>ES+QBq!pUF^+{cJN_#`%n_!@T^}3o@2p8Zz5@sVai2bLA0$M`3K^QplAn3tS_aAlrm6F zrIf|B2cFv?<58yq0K5>55fyVe{TgM71wpuf6(s%7N(;VsS51nBhqE-x=QEZ?bLM0< z3)n)%+lUw#*wtR5+19CxJyB||B>uam{M~@Qvm&2@K)O2jY4?}rtg>cWw6SBL%XMzpZ? z^jCo&NAmNiLu!wm;YdTR_{|ar94{PeOe2@rm{E)s&xM>#HF|gSS(pY_<_HtUn8&P@ zCF!~PLpjwZBVC$sURUur=BccEGl`SOcC+E5WcMdqO8y-S5Q~e_4iI0Uzm1=Y+eKRL z!_D7Gi{OzFtG)WyRg7>xB6+N@M~d{_?csEUN-Q+LZruDb2tw2gmPPIi*Lk|Ap*>?m zBN3OIITz1GaphujjVncjhm!d zBx|*5aHr@|a(}RYgZcFca?7oWTFSp2CB(pEPG9qr#6ABDg*S}k;#T2v;KxU;_E8MK zUrK)dlSs8M0Yk9NC2QtG<{MvKaG*Dxla!Yr{BVku?sAX5ek2$-lm^)UJ!gyd$_=mM z_VfO<2PS=?_!duzBk>L4r1ndaatYs+m_c&PHvH&C5CQSwV) ztJD+KMK)Aiyi-W=Fj&830SmwARe;SQ28Cs)P8tloMcKn7HLK?gPOItg_=;I0F%-{3 z=x`XSl=ZJM`()9HaZoQ*Q_4_izR_!!!nNq$jVnNBR7DR33|_L=f{W5fJoo$fu+L#0 zwW_Kee9Uzs`R|(tA37-FB47v(p8Uc}RYOOVPp;7cYW(9`!Bdo;O&` z*&%$k>N$}NFDr{Nxhk@_1xqz&|5+)6Oe1h^TRpYSn^UL?vwxEi!RF;B1MWbP3BJ2r z+@1W4;WDi|SMJ$SUnOM7XN;XQcKbS6W{w{6#8`LlR4PP9{SZk`&MC2y&U4ADul=J{=u!&gykg-1`P^g`-{E8Ge5)2Up+S`Zg8X-OcQf3o#CZ1?*L^Ypg2 zxSNxu+GL7x?@e`XiH@Q^k!T5$Hx@TR(t=lylGV1a+6y9yYX|Yd(5W$|F5%$U?h)nB zTR&0-kisf;7eBU+kH*IPLLxQTLLxNlGlC@F=d3+RUL$!EiuDaqvzyge0`Ka8Pyzsh zA`6zWsUNgc4d=@z+4wBK-@)$1KS}gj)BNU(BMm6lVqlT2L`;|FYo^-3qo^kyfhcX< zysZopXLr$Gg{9r?^P z>|Yagg-^#4fmb9DV7sdf2Q{Q%F~!wdeswR8yE=|*NWTf1_7Ne<=Tk4ty=fL4R5W;i zzZc{Zx%c2c&rvTRgFaEkE>W~G`2C#q_|y$jsV^Rc+gXh3KAPmSI>PES!}DnoE4n=< zWe96P-gw9`LJOM`zv@i~DNGzb|5w%Ny-_`^yM)tV)xey7#^gA_^wg_J`-8yPyC3~RKH-h%=o z{n+j;3SdiX7qu!KmhrB9p$cAC`o!a@cO1w2Y?U0-?xE4@e14LOOS3}i_AULF6_5Gn zgnyQtJ*}eyIsiIs1`uakUH%H~%K^`4%c(CM=rw0xj2xR004A?!9DDxOUDF`!a4*KEci? zSNdanE?+8nx$&SuuJ|I@DVQsiO#HOA=zJEvy6+02D)q)|q(@Y0I7kk=2m|dh zw!96v0uomU)1$xf-efUFbra1kun6P$yU|k8D^^##tp^79x6#gU0frFJ@81Iu6-0rL zB#~1w(b(F1*J-xIwK^Mc@6A7C(;v=3@FJ(&NP}XH<1r6)+hfhWFgQQKUz`Nzd4b<(_LskdU2lkvK{+8o6P(y>)xx`w#oQvGxPFs z=J)Ke@*Fq12?P(mGMp|WI$DO!V95nYcBNB3IF?>S&(ofnF=&_d6W;>T3e_aGpVigx zMfmAp%ygQ&I`nPJk$IjwzIkgFyF?I;kiCB+6`4;!LExlOl#JwIluuzkr&3J=Nru}7 z+BvoU%_=Kz4X(M$?=m#5=lAB;@>ZpHy{%Q8MQH(pZIr5)LtCJM=&?z2>4HTlFXlGg zFIQUcY-Y=9h+*r0ypr|iBnPM|Rv#sw(9A1HVZUkd3}5wUva5yI5c zLd|rv9i|hY2yuy8YGkn{wl0SB_wMgF6qS?xspbZsD!p097pT5M*pB~r8Cz^IuP<&5 z*K8;8!Erf6vR(W7lvDMI@;Hsxxg9GGn<7%N7^M+L-Sta9$eh^&l4eMB+UI}B zRy!?Ih@3yJRXr*I#PTYd|%1*rtA9=17XaoI^9e{GwoVdTv9-&u?Cqw0;q`lspHOlbSGayb99!5SxO);NT1~hU z$udu0;ge^qE4t7J+MaHl`>+v}&awD9m9_u4Dsi-;WwTdmtQ3cf#iUWcBi| zBvmrs&Q~wFD6k%368!b$uY~2dh8wz?s?DnV7kCKVQ{N zssyUD(cjrehg_JhUkkc_ecDgw!{jk9klTZEit6UZx}MoR4Xozy+Cd7fqKU=05{Dwh z0N7ck&s4OQ{U#}@RY8{9#IPgucE!LBccMnNspmi8%Nte_)^4oHgW`%%lxA|Oj zv6|M%X4GY~9@kfT--qP>zPDUm)uxdxZw7fvv6-hF;nKX${+3aU@S+|Kq8r^vzrWLw zm9_kBJ=4m|V=2dMcfsBhK6(earZRJ7Xl%anZVM6PJV9+bWLzxs7P$e}P2v?4G&FJ-^q1S*+6e%Xj>YpMM`E2-S}%b{UT;08l`$zu-W97!TQa zZvY@=Kt|9IRWkrCEP-*;)@~>Qn?nY7NaTnC%UZ5-C6ZC*{jpHoe8z;%7tq&M5%#zc z(kXDLog3epB@&v`RYV^2Qt@zI{pn0?^s(4)k^M-cff?xF4aZZ1E;mkx>q=6#35u^1 z+3l;&d6AjfWW~29?nSqPsU%=yHVjf3|jrB8`ptrh4kv8iiI`U%uuT>nBo}3p@Ik9N$nm`KnIG{YLl|b#4eL!1+EVL}#;=wscrVJpm@_dcdbQ87N$ih_+F_$_-=>_SR?V4x-@A|>0YcQT5x-jP=I0YlREGKC+Q4EwV zKEwW&WinO#4Q3{na9M%x$n^;@-dHYH+)5COgoWCg4UoVaXM3;PDZJf)@#xXl9SIq* zfsUXbDQq!Qi5mzxFdx;9GLlvItniXcVF6!=aFe*1p;9@Yw44rj4$tp+6IaPge2QI; zUwt8;b1@Rw^-;p;m76r~ZBZ&y;dkI`ahJ_KN6KlNuF2t7&U`}W9AgE0VniK7#0es&vsXT0HZe+j9jYa`-Y=EZC^(Rfe8g%6evTk z!$X%oFIkeDYgTl-9{HjY+PlftlEv#L(qXBOq<&~JH!qs@Hh`K!LAJUWDOyvoVYhjE z2UMIo*Q2+?(cKuj4LH@A$htL_)2=h#iG|VXq?pE8NeIo2MAlszpFAQN8im-c+Nv*W zGK1l8Lgr=_v>6e5`}2Lp2MoKGO-$&6JjXpYaAU_#U^vn$`pd8f@i6DQ8WCHcC(~iJ z6x*XC+0>1&PO;HytvX_0zgIz)r-%*+VFJp2$PYXo{jhcn4-f=kfdd6Z%%UvqcK410 zUFJbp6`HXelTgB85J?6MkEa-o(UOK{3>_mZgqU_Pixh^hM#)~Dnc0ZNF&DmClBZk9 z5FqDChGSSOBpa|o00EU-$04{;@zPF$ny&fmRaL|PTRYs(Q1r^pqK4vpTbA+yZ34hT9F!4Dk0qWH&MB75Nf}fW@MJI-7;|RSbO1nB8%5mp zvWhuMw+Y6P+4AOAdfDFKV`X;9y=x;~XDKogRSAC{I{dv7zkBz}&az=6F5_BgG#zML zzz7aYbuS51sIFY;jZS7@cDQe~9R$q^x*)K2G1^5kp&%VsGeH?e7&A+BC;@!~1wen> z8f)fIlGF8D>ouA+1PsW?10x0udF|&#ZC(VbWcI8loS(vaQV8%t?aP80*gja%qCkw0 zht^BTRMho*J2S8MEPBFW*P0deSacI@j7-JhvO!FR8|*-kHWCE`{3TK`&wkBz5GA6)BMtu<7qOuCck zqd~!PeQtsmLs&_0@92{;t^M)(m4R+Iaxy!fY2!uq`ARQI24*(s2rE8{hD7C6APJ$L zwzFN&Dgfu1TW=28Mr*4cL@3@q+aM-m=+~Y7&xIF z^P_&HMNN5fZr4F|)K0b(bS3=qJ3Z-!#q}G3%%K<+iFnCY*8|VZVcL+!C`M{$P=;%3 z^Ophc;m*}nGd@;3aT!dkS#APM%No>VL`MYUqzD*Y#fw0n^zZ|J`NIm*dz9D*Wm#fc zHADI$$g-YT#1I0G2!E)pTogz=Is!C^BpDf*kU3xhcU8Yrc|Ue{MII+76mMW7^vD0( zxubqn?%sYXR)JF<`kc9k=m-Tq@79+ln}bo{NVQQ{XT>wU0l50x(1gO0=dGKb*QPZ& z0_9=k$V!s~T;|y6_|665Ya7m$N$n{V{8x zS}_mPd$GL(z|*rN!FoY3H1F+?2G#MNtWe~{nwDAhQBbs?lX!g#Kjt=NA~smc2S7D5 ziTOt>PzWv`5c>!ydmX7?)GISCFJxBX#TbW!KL=uSBuX!*r`BggXOcH)WffF zIOvf1!HEa#{rn12V8N97HhD)TH+f>P)B|&k5)mJy-{uYtQ3P44@wSiNsW%KL2WY|Z z@Hy5%llhhx_Y9NEeQXg<*BUeCK?dwVmOujGrIP>3Fe={_^D~E{HGyqhS#hx$pDIIN z+|EcoO7YH*WvNrY&?9(cf!2N8AOC|y2mpcV8x9QiK_>n=`d-*ziD~e2XU&n?KuoV_ zowLfJiQr9vdtSKev99!ego>xA+`}L;Z+)AV>~M>h(Fi7jU0wK35DqF=qx$@PMVIg{ zaUVzpJbha&ib-ejVSt#B_Wl09EXJ8a6Xm|qM*-_5>9YebZOpTw-UKwRt|`|IyPtgN zFP{Ta{Awf|Sggqnc9u}`pM2Drpn*sSwh63qhuHIeMy5w#GJ;>IaQr4vPUH`_U_JJa zx+w}sU|;VSE%RK=(rTIusrMt>DvLJuFS~!WBj`u=EI4N32(}2)@()8?&&Vo4KZK=} zVbc}ufUVW?p-ADYpOjeIPQchS8xx`LoCK4TS~(HHvgRc)WLd~@#!s-++s=es?kcHN zZY=?blKfNqKyYCPjGefhv9A@`Pz7M&&pK^89!BDdI-aOKQBmr(;Fbi9#%t478ZUk( zc{(FYyGYKvo#@;1znGN=VQDEEx%3pI{ZtVuiR6x96;zg5y(1UwJAZ^y5}tFDdU=M& z#CDG1!_@`$>iA3$PUB8_3&$M@i+zA0?1BxYxVdpVY1d!8qMxBzq$3`E8*8v>Xa26) zZ*Mo7+#(_r-oA2ZW$v;O|J*P>4Pf3WSx&VAiGLfI?S%O(<3#i*?YntOb@E2;veGtl zqA71ud2B#UdK9~vEj|(gtz!hpt3Fzpa9ckHG<6xlfr52LQ!^YEU1w%WAo5{Ii~%s` zG0To45yR~F56OCu68`B68R;{5FWOXyFqhef=fWQ!WMLaen`R;0OL6bS{(e~oc#Lmx zLo|-&`V%5GKD_i-Lb-VV(c-OEyK-kR4{{=-TisG1GG2O{?Me-cp$?!j8IiVqZa|3u z$N;?_*Ohrdc$Z?-8IT4~RB(Vovk{wh7=3j+cq==nj;JCaf070#+Y}0iru6G!OiA0` zlA}RTPzy{PF)+mA(g5FuNWT!I0)UU^M0G9s3ucr2w8Q@|pt?uVFw7Vt1Rxx@P=Iz4 zMMWYSFh&T74qqx$OB%p=uMoD+6mTLS&;Z!T02Mtc5OC^i2{45JySmb)Y+sVaP#Bvh z1ol9P!9N^n0YZgH5M;pZ;D9znWFO7R3Dl5C7>sgm^~O>l0|iRIHXucX)Kj1$FjiL} zw3Be_SM65?ceJl2U&c!|CFl}x;46}rId_otvf*&$M_f*dVtcFO?7uiKALot<)jCl` z*ak3XJy{nn_%!qF#r0hzi_2+87t@SsV{G)v>6Qb3#@*8d8GW|A5ctbKuhOQc zYIU)ySK^s&*=|d{3Z9DCxv*@a`NitW_eP&`GH^u4?oDAR2bj>)*WATw6?b~2r2VMf zG~@bw2ZA+^q~(EQY?p0lVu7L%?IM>h7}`0x0gDXi@#y|lh-|}R0}%lai2c1%$DcUx z#g%C+Xq(2tg@#jXG1_w~)OyD8OcCb-J~O40m2JA4e;MoIA!RihNz$F?z; zm2r41N{*uz0l*w2nJF>KFoK63b8+-{SqxS%^=puXcW;vBGITB7X+}X)7YDhOIeWv}835q* zZg1SAO@TnUeH75J+&3C+22*>S0L1YTs0A#_ouus8{DT@iEAWWN9`yUo`f}ap%m&MS z-hHmp4-b@+P03f!?Ba0@?hA%{Ke)7<+LZe+IWM=+wY7AY^768Vm+lbPfR>b&|pA zi`JBsXu-E!Rv;s0Y-}3}6Cgxp49EfeXk;+jE7#^2gWj;kbULUk!ysHJ;v7xYNiGH< zZ))^hf|&M*9i(92kfZq2{*^Bc zQ7g&!lfq<3rwtf6f%}_9zyT1%t)aAo@bR74X;3;C$si|0u<|puL?uX#EYbJP4auCvd6U0lyl001wUgYR3Y`~m~P(%sS-F~-I7~&z!+*&M@wWzHHe0kQBa2@@b zXwr>76DnyUR-f>!hvO|ci?WOL%;X_(8xiJ@q@qsr!0+=|sY@XRG*XLx_Q8SaPxC1aOJRF(lg2xGJnE$1a|~*cxd^cn zNA#Wv=l=)nr{L*{@EgpQN=uQ#^9mpCvyxseLOsWZ$W6|#Lk$j)^dUFsS>fB5qh7?O zW!g`x5$ND5?Ucqsq=YJRy?4xu&T3ZNA?H$nb$HSz^}3NQ5p5KbUm@z|@HVuDug^pC zvL6fJ{$BnpH@S8mYW!NCe!alr|0bFLwvW;m$fJp5`50#O!U zlFImH494#)NEv}#FaQ@X8MOX!tuk@7)dJCPCrK5Db!F1dvJy3ki)Oo$9g8uG{oAD;Wwj zKq4W*aTm~S!-fD1n~E_E_A8leqsP7OK~02vOrVGy5rhK z7oV$=hvcXBQQS^C8K7d3&m8!Pj&O0&oF4_Je+q^AQ7mwcf|TE0*AZ0bm`8AMqu>; z73#F?XIO>D=vaRWmWp`l^i6hAJa>w%3!}l0z>)*s=+6Zzw%g!9&P!j&A} zz?_}1wKAcKpyJ-Dw%C6w;tl&;K+$CKE1K`)1lGY<-3WYo4$nuouOB6b*t2@a)=B85 z$jK1HJ|r;1{NMPY;9YyZ?h_=2@vN8+gziJ8r}meOhGQ{qBD2%QihdLKTb6{ywX%@V zWSdsZ#{B@-l7c=5bumIhxt*dRs003BHISL}vSw>Ks{5;fccRQ10DwY*KFG%{a2T{Cz#oU?`9kFPKBYBKR4y@M1)16<3EQzd5%qnnhJeGXMh_1Z(v;`_p&^ zYN9QY5btZAv(>X82koR}>qB>V`NNEC4)^ZPKW5E{G;+*eevi)AMZ(Tf6t!mBRTK{3 z;C*UunoZ=unFe4RlL!Uv%tAk(-)9AF!gu#icCh>#kv9ZMvJwFSSURONusfS$Emx(H zF4~Eix?7zfj4@}q01N*nI0CbQgdG+yZVKWNTQ;UU;NcDo#Jz#YxC3%!Sh~-0Ec=S+{tysJOpP}fJX0l z)fj^S|M7OBnKGwX7NVaP$_#I_3<#*Q2}) z#Y$ybRUuqDHIkXLr15Ein=I7<96L6pzU4MSxG@7rcGr4+20i`r;J0SD>;^M5?EbL{P%?vh& z6^!ltCpB?>5_fXPE*W7O7(^^pjSU0lI+i;wL9^}f1m!{9f-AA zAp%DoE2ARbTl#~Qb!FJs!ksAF^?iH|9!a4+xrVD#bg?7|JRTsd0-{77m!7BTpzV2- zIHCUT?Lh$C5fiPFdPs$!0w9%)@q=Psc6Yl;Fbf$OkTU=v$#WnOZ9<3uh+jO<*#pJo z+SHY$Rc_hO_t9DLZ5&00k)};dwr8Ne_3ph@$b-p(haf^1bGg_y6tX^r8VeGO#~R@R zR0|DbP`+)|;w$?#*oV|lH((H?M)Qwkwq$2m*$J9ckSrJ?tGC@- z9=5y$PYrn!!W)1LIMix`>~L~;aWj1U4CATuF|24g-Tgj}$5>>YEHU&8O|@ z!=dl%Bef_hk+DB34y7bB1Rz%UPIzzLVNXEpcj$*l2(iQ74k)vDI{!30nbsYkmXXCw5{LH_UJ+J1|PTA^@*o1H~YY{DcEfS%rszUAI@MbJP&%kna%m@vc{w z^B@DMApx;vjy;kAUwW_m_9w+BkY6DQe16X-dqV3@UNwj`ax)#+d3cilKWL{|{U{4Y z9HoaT<~>#d{-#?%+SDNdje#56(Kn0v)1}{m=H;fZJts>JXVJI3`#yo*;d>cNM>S^^ zDwzwy|2~u9sXSE?^lwk zw21(~NsE}=!S6Si|NV$lZ_&SUvZ8{jkMpY(+1gBNOpL*x3s1rB@!sRG|1F>+9?!{c z$Woh#9xlpbI;$-Ax+sAbcMCG@LIGd~fGni&%zpjEpH*s~e9f(}A+`i>&g?IX(}Yuj zL#ES1U^|ah+%Dn!&u?b!*B$zNO&^S?zj4mdxE!p8v(Uw{odys}mmsPeyX0x5FPZrV z_`^Fp_Zv0(W*@^nCS+Z^8+*w?kl6Al~z~3p}l`MbI&bUI9tBJ zH~meBP~f8c@f~80`jS2vzl4C_wUE-#TKX%$PS~KPP;pf5XHSzgU?lz;tI`-Cc$CfE zv$zH0HBs_X-P0|&h^`ZiLFe{0AG#XGA@aCDbnl748#=!(Z0VHb&F{5X$nVtqE`$o5=s)7-0iXLY7BsTn>VE@lgP)Ej_>eYs^!+8YPu5)V@sw ziyJxxj=tm^X?ScL9bt5y%JHSCYdybxUxYc)i>1?TYf(Rf%_@Qn^yD|0Z*W0X2L3-u zkPR^+X&h*C)X3;-|7alLo|K)inG^AVD$p+0m|!elwnUX5KD%Gy?yEMJ$pG+qJ16oXM94X_YB z&vJvq99`VXE8=JN4k01)pa>aM(fkG?Ssv)wN!rE?l+iU-Ul4M*k?_<$E16@ycm7hS zMQ*Kg^Rz#L&~l-`z8XgdHM@^lr504*jNt`^1aev8ilC{6;w^w3aJz}DJ)S`Qt12S3 ztnolr{^uWQXbU!#PXf~)Ff+5rmiV5zR%Y?)C$jUAUJ6^X>y^52>=%mgc?_;(&|J}h zP$&>(KjO?mStxVB5mY$NsTl&OcQX@}n`w~|5ZYcU4a(OR{w=RuJfUPpqUQG8h7{m~ z(gi0w$K;b@1Wf=yL4y#;2n0rGGe3!vgkZ>o!Vo}=)l`yI1R^NVp&%fPfG}W)lrkrW zp)TlLjyDzho3qr>bDlfrS#WD$Pr!Fy>CnaU*XG$CZ*MYT zP9()ES|+{YYQL!yMP6DHiyTIf4e&NbQK|TdJW*o5xPk-$CdZh+)x3b=xNg6i49FgB zD;yd=xgz<19F{bX`~1fbx-hJmr=0|xx)OANQuT`GA#C9o;#EYyMW1^MMr0)At2Ji> zhelbe+SWzwEd5!uUa8<-OVrl%S&Z`iPq=E}ESOyIa0fi?@!44vy;z3YuM4u=ed+ecG4Gg74YtehuefG-N>wjc zWh7TGzhWMJrYHQd+BhN?f!#b%1Q0252udywb%|Al4y`J9ZE$F(w&+tEm9dG_deW$KTl6xov zkBsU1$9H;xZ(PRF)PwdAc|rsS-q^+w?S8K;`ddKYTO@L>CHXc^dcEySddkev-|>Zq zI9=C1(b@ClhrcePX|}ac>S4BJ+T>hCbgj@`nU+@RZj$q_?o4+MQ5ttZRqJEf&pV=9^o_cTe3U? zfd(NZ{J-oBFej%uHs~x1z)e4{-f;;)02ske1UKBSxG%?pg2smN45*-`X~foPGJ+`X z?t&5;a z08IctqjCrZzc6`h-hYkeo2g@6W-w?Ik$7(@Dc$T>$5&Q?taz*PJA@&S{0Y7C1X1 z8^H18ZS!zOPVi-tmx#G2m@sM}Vk;85j9sqeO;+G|IR-t7!bFc9(M8`4GQdS7_WU6s z%r=RtV}Q{67BTR<2`deaPp5oomVfm*g_`h*5quE*n6r5Fnr7Re-9A)wep`_7Xn}`) zVKeoTea`yO#n~8V`2uQt)ABZP-USE!{i6H~BiENueeBnn?nJgIb>1_AiucZ*`$m*s zI)@I;tB-^)K32P(2-T(doo}?B`W#i|kQ{+y4K5?D!eOa-Z&RX5&22fD`Q^cyd!S|Q zP$%XRaxjenl0j<4Q)l+#qEoVd&sMKDimNn%V}a+)`%KJ>a|Ia^aEp^Qzf z%OhKSh5K!~8NGg&`8c11C2}c&K!<*Z3qEw<>BrWUI{J@%#kMhT#E08E_es^=403O0SRa7}9dvT%r`1enNjG+P`3)4L!rGi;%1OgVQ&mj*m&o|8O^pt02jV_Rn_|&+E zX!O-85KIB9GikYy3KG2`$TfCoFk=dXr6eR8L6Sv`D!rp$P^aZCUI&6uSvhVaN#pMe zM!NbPv2hF^T{?SZTR2B8fGz=$BQgWmH%XKPL^pwo#9(5}giohm;r2F4iZ0ekrcj8R zMuGwP1Txpq0B{0Tl_5nA-+)O=7U@WA&65)hK~<8^6)Kr9grPElL^A>%2p~YiVuf_z znD{6G2zkUgdfR<)ONJ`$AKqJnFlI&p12aC%Fr~kJ=>P~H-goEqcW7Ot2841%VT(+* zFEQ_!9g7Vn2m`D*ooD* zvy^VbyPuLUk>2PY>s# z(h0{N-oIU$Yj+_q7(k;uqxK3Z?uz54LWKNoR!!59Ebc9Nt}t7z#^Sk>lrS_q@cfsh zC{e=l?T(hDMj!#>dTAZOiY#Lg?SZ8kml?!sE&a@XnMoYbpzBM&&zy9f7PZ=^J~aXp zIFE-JXmKwFLycx8%v9{i&%f`4MJ%te#|7u{nK>LbI6o zEF}5-v0cs~VP!>xnfXbukwDx~`LgUXhiRX*39%{|V!HRPG_{M8sOmU+3UePzCHAL& zKk(J!`Cm+b!dwbb4Bygs6a!<}Q*9b0J;7f;*U)9Sa8>=d%zGW@*=k%Tbrj{~L1wL~ zc}+`xwI92W*{C-P^eoEVo`aet3kQY3lD@W(IG%^pWWhiyxfwfyUxUNECyR-`!h~mR ze&ShCqf$f1+2hE4U#pV&HyQgscTrN}=W_#Jyfg3AZ6R_i`HHCc@ql>_$g`uEHvuCx zuNuCv3as+&=j;*$2HurVOvZMeSrEEQRs*J{!0!!m@Mex{cP-GB>|6b-aMQ%`>R+E1Z?_p0@WM%smbUZ znt7h=7=!T*YpDQ)?Q5d8esliooDm%SMP#mS5L*@90AdEZf#cI3N8-r8OZkn*O`lJO zy^|4YkEZcA07skUs4+1jfb3vQs~{PsYDRDa?Safj zpOy#s2X4eKYU#M5XX%~guIa$^hBp#Y+(8J&I*lhkd>&E4H7aLWW}$JFekCZO3R)Ir zHpFQOlerib&yxDs50eJP3&M2YJi$0>{_pxKr)%azQF!Y4NAeA@1atLit&J26o#{kV z=CXexB2F^@6gUaNXW8`uIuZrSs&co;pYG9Nk}LdN=&_8vjkjm9UQweLAD=i8>&*ng z61q6~HpW*m#+yS`UHe@3JTz#E5(zIeMp-gCY13w)%2#V$jnvQ1VtE6_N4vdPCX@og zE8(o z@M?t2{^vK@_C>bL+WL8I?0fU&f?QGLT;65Vz3X||fSI)&E zk&X+r9s#g|tScpo1V-7vd+cWrNqz30=jhDU?&l$XG|rF@kjH*+{}5!1pf6%=i=1|J z!zlCIkM(W9HbI12rLq7Y)kz<4Tj!pP4w=bjEeF3~l0ScnNv!sOao1nScS#i;P>Td9Nc=AV zpLz6bC0)_K4C@AVb!H4TV76-oN<@u<>liE#^g5}S>Dvc_!T;^h>QG2ZgcYn!ntQ9s zjoCxt0FvgZ0`O#;hZ~3BjLU1}alGdf*ZX+?q`WkJ4y72W%l+c-?u~T80_oY@ov$K^ zz(hjvr?u=nS5{QOS!%UYPtHbT4d2FP-M8N)f*{AVf&+hH6O`IyBd(#@-szRm)%`ax znX2=(pEWhHEVbVIu6%U-lO-?IQ~-ACe|w!Ma*0wXo&+py8oPzi_Vp{7$kK#_mB>}V zh!9uI%_NZ&U(UL$=#)mcPL<(ddPkxk{$$Kqs>PFw6!6bt(h7=Pln8&R=wNOHXjmjx zh?*M^2#*33pC81|7P09@R7Nv5P{rZPO#`nBSZ-)yKb;A+)Kd*M1l!QJKbCk$YIml| z-l{Q?pgRD6h7KL^37b)XxmQ6fw5!1ph{lBX$WTt_IxFQDyAeg4$MZHOh7Iy!0B^3@4hZsliGF4nTikqXt_d8Umo=+~LlbGUwruli+=tQ$p8^ z>|k4bEd?r29Whg`qe!lB+ZEGn=xBT4?wX{;Lbh2lRL)iB8fLzIuMd4YyB$bsbKE7x z&UxrwVwk{(5JLk&d5h|qlqD<*VL!x^q=*=k3n(CN1!KXESDPd|y?$heCEwj7Bq9QJ zwndYwA@A|A?(Iv(LW4_~+?uXCU{0k|uN6&I1mY*A-wCBJQx!w@BrXAC5I@8#6-rS1310)rRr3eqfIjcT1Xp~ z*FgMA8}J@%cC2*hD_|MH%Lo7r51MFvlKZ?$eN1mMQ9V{J_?1zLb~N-Ht0F|wa+Fit zT%v~yEI(awkDZs|8bI}d!3cBmZI9EcSWbL&RUR%GNC1?;vCLVPN~6r_X{Wr-Cg^c7 z>?8;vfP@$e^(-a+Zrdr@#u`d^>o~pG;G(&VDYmCuQ~9&YeYjlel)ZifU@ZJdOn8Mf z2a`Yn0R~|xK^bh(XWhKiIC+bP*M#rG?Q!T)QlbY)0Z!AyUosphRss3h`Q`NwZ^d!b z{bmvwey6ZHaabhAO!E9dlJ@OwnG%agOV~ZU_hbpej{v8$=zA@fQTd0^Lc&+;y6f9f&&%izq<;C zRzFA^>@b=*YgEFO*2Mee}#)(p=Z`+KA)R1=22tjm<54PaZshBV^+VX zn5k4k1}DdmFZ^dV$lDX`N^V)Hhg44FjZ=}gF5W7ZbqszHLs^m4bPBZP_t=oIyc<6s zz~d#gR-dawu5 zL=5sz!~(>@z|C7reL1o4wr^DSDOPdLc5JDCRxoX3(-`bgFZ~!dY>jN%o|on7s#Umb zC1kjE)Z-|vEPX!79?nxlrjS%r_D&o#Rr)8Mj@v75VQTUHUel$*;Kq2iJS) zwE_j!f`8wr_is!hqmx1|r7Z*2M>K5I3K<<)5bN1%w*o@+L&vUc>HJ#!h<`wa zXXS+2XsT_RSAUhWi8Kaph5)sQL3s9v7)^;_LWKjayf@>GS)4brf;vuTQ30^Q7zi*7 z!5JG^EJcGCT4#dzTVQn>%2(6ziOU$G>RVhq8kel^N5d3jP3aO4X}mYdAsEM zE4Sj(trSTGr^vFeWDi{pPiXN)mR~GXu4;;IlPFxuOU19Z1Lc+n3NN5CIKgg7^V3aQx?C^|T%fnB*x$aui*m zr3-Oj@dfbE4XvT6J>{rWsrBOIp4b!!mG%@S=#-ML3vKSQNsHN0vpU}MOHrjq-cRV` z#^nxE`Gc&AzN#zaqQ~%$1Km6^f1hxo6CwYFZswZjj!$DOs3l|ieaT|FyMVBD4+jx!NLawZ=M`4 zcPmNufrNz;r#xraZy}X(nhHp^U==F&)3%MuFMljQqqEj7jD*rl=wle8bVbS*bvUgh zwLe0jmy`ZN?1mlif(;yW|2ipsOzkjDYY+$wQWGe#@&X|g{$l#f21-unKm0_dZS)Xm z(pH?I3y*I7?6h5Vh&NHxYPaWk0^$WdACw(x1M-W`)Dj@*;3|x!sRaO|9Zwrd!Ba_Y zSbFq-8J)`@=pShi`hgp0KyGfCP0~QsR4#Y*Yulq^2adK_8cGb^xiy=-;wSyyK3yge z^XZ$^sPnVSngIxvaMopxqas#PY8dc8$Drv#;v5_0MijVt3nn(w=sQ;tRCvBzv_rJu zLT;yg``Q*|j+e27FfR?F6!4CuPm26Qs5#saQiC)5zO$S`(IZ^Uvwx8SAG;IsM&mCL z#Do^zsY6Z6C&HbNh97cut;;`{S~spl1!f?d1yY_CB=h<@e$c#_BHJkBl}nthjtz%n zSyRDLDG1a(@1!vnMf+_!blYyXyU5AeXwP{|wUk7iJJ`sIh-7AF0qAk>bicV^Dz+W0 zefYE`7Ha6Gm}V!9AAlC#P~a|+=TERdzrwAXoMYXB0*HON@yv-}|2Uwn4T@)CMdgK} zPLIm8N13zXh(y>p_!VE(gFpcT*3b3F5Css7+)h9<*SCgX8H53`TzXpF{u2lc=5g-K zSO%|^#-Bc2%Ogp2azXyC6bdK|B#>kYDI}5z(1a1EE`m^oFwirWG9p|4(l1D7e$LW# zd!}^8*{$R55yOyrm_(S<*daEsAG7*ZZXEqxFRk0;HN<=#+=p`j!I29nGOP?5JtkGd zA^^X{UM;(L-lq4#zpXeEt^A)GHLVw8(LT<*KU?-WN6)P2r`PPYP4Y7>GGEMc6Z&Ve zfasaRU&u{wp+O8c;_RQmn>hDNd>_OL6)bLJU((vEU0!n&Z^=)7tSq2vhJM*CvF zBvTG4D9YF3jIlQ09?@L7%mVpVd2Gf-Jvc@an)N7 zC7oFQD>PSg=OdGC)M4x6!M>STXm60-e9T8Ra6l{o6FKlheD9^K+HNEkAmktx-H;5$ zb1_g7*g!-BMNFk>Y&?E?7;r=Jj){}B0 zn1XtJeAZ(!b=b~dZP*bI?X-9I{PCN@0wT+DdISpdUnB)cfJ-fguN$ddx~Q~V@EFcq zH)Ek11bK#%1Oh+?L_!;Ly_L;dmS8}uyyO6qWP&0TWF(S0-|HOg7fY78LNOrw`qXo2 zl}^`@JZxlU#&fpX@AxDb;|3}ijQfk_>*a47+gBG|lRjuv5$)R=p@|rt zmA!Ylm_CeqA{rFiJJ$?+iBq+}UeRaIf(G&DBYBUNh|{|SfJ@{d7z+a_IjxQfxOxT^ zoljM{am*BXXDlab=DIpXG!Lh#jW&#_Qghxe<(v7@5E4yf7A9U>zUj73cV&#x$K5#HU0SI80$D z=`90hj=>C644~;5@gR;n4GvI$L4PoOhtUs%3uA1a5@b{Xz8hrTs-)P4DpkGaH-pOp z-yiyR=`HEb5&Sfq1p8J?Dfk*GMKwCO0{%~~2{)r@3^{zq_!nO{6U8Zu;q>9)T<$C3 zSDVh0z$$(s)t8vR<}s4H10~zkV?K)=c>p><#lIcnV|~8FM!N37GHMckrkLoc<1#h# zPpotE9gjq<0S`vjK*V~&v!&zW~wbfIT&fwJFe1#sQ+bwp-tw6@9sN2 zF9n#d#%2KRH+|I|!viRsUndane>2}LL3+trx4tPEa{ik*?A~r{O4TuFFl=J1nT6fW zzBo{f0Dui&07}64OaZE?3r8Ha<-9B+jByl;dJiXYxV5P1LC=~{h)2~q#Slw1( z0k}!)E#7LV74e%73Q5_ktxAND-m)2?AXwrum7np30(>)!VE4E6(1ZqyIfNQ(b)2zw zI3wLVCOB_O#y@;DB;FoJBvimatnRpzoE4CKF5TgipEUE+d{~5HUt<8)5YnNFfISM} zd5$n~x0od}&$u8z9sTwD7zl`9b)A3-)ye}embdo@wA ze!go~#A)C+Bu`~{wmpjl(nkvcNq+tTd%e55&2A)!L3;$SdvuQuL6yV5$`Rm{bwPFU zOnr3g-0$^LXa!gR(AW^^A=pHqT!8?!HNfvuKo2M&xB)-`C}6Z?Dm53^OoxO5kPDFp zITjq=(2j@6c^&`h2a*80!~nJ7-0`aGM7_VY1R8@RTo!x)LVz?z0RR^;2$Uy4L4*c; z1p^5j-tK211s6yq;xjD3AmVmMIzWm{ia7zAa$ta5O9XlLjd(^kvixWIMa%K;=tVw} z2wkRjmqF~Z;c8DYFYq+E`#sA|b#p9hXfEe6)2Mhz5`NrVFGH_{GY9PeHPzNtzO3#} z0X>=l$wE5AxK_ey=av{F1==Tr^HGDrA%U?m{4n~3Z>de;Ix*EA0A+i$%8A4=T8TMh zh81OCVOZpGe~E3U=PxR{5;~e}@;r$z76An{laYgQZ^5k0Q_heH6$wG#>c&SzFZj`l zm%Z0BTMB3*0ig{!k=b?HBQNZbx_yF!23wvF)Y!ljX&9izGmz0l|#8 z@ct7+pItb>;7A#Su!Ish=xZ+B z^lfP|KyDdQGjL^W0!MlcG5V^XHtWNlz2a}ZQ8Wq{KD#lwfcdc+(|F+D*-*AF(Fq1* z=J#DsHMEs(fb!bip{O?ljC$M$pZMLangie7tE9c=D?^W}-6$N!fgM0lDC)6K1_2;6D-K$lw1v35 zc#9H_7AJDWT$0L5hHLJ0Th)u_oB0jfUi=awl-Y(;2Wfwa;-ys57I=6%>JD4R~ zfnerW^UF?&@$N#BqCGf?M6 zzmr*U7ho9F)Z!nCsfhnC&oq4&ED*on%$VQaR2!-w+IoJ!Uf&*#!}UszlRHedX{R)F z-mtk0Nj?HH%eP0o{$+{5@0au9J3eQr9T(0lZ2to5Q`2{LFF;jYGBZESWfpqJ&9+;f zh=8dX3a$Uc{s&ji=+%IDBqb;_Nrai^iSnw@K$!qG@ueyn+JhzotjKwtf;Dnmnoohi z5S(Edq0PNSI`nlE$_cluelu3{LMBc{POYO_K9-Q`F_eKZxxzoWw4Z8zc2=^%_#4ky;tSxi51k*{OFj%@jj zk>y&^kkPCW97*NZSdsgP(CMU~1De}$0wTyU;=-Lp#cYb*w~vF_qw}Kkbln&+o#JL~ zdxT*Ca}Z$(cf|WiL6vU*p==j_Lu1Z}$ge6x6yPu--tf?-zX5pfy^X(Y; zqQz61zJ^>#tv6{hWz;JW(N&ALLQBh(sQ*UY`1@i?HBgYNxtxIJ_vW19#B2_Je`Ezx zb$9m8zNfcw`6<+%Js)WU0h6yvfaBl9o6es+y)(HxXgC=Q&1Ta=g^y*{D^D{NC?%n6 zjvuDNdPlRhdJ6GkrT=ZeQlT7!8rBHnZd?#Od43IjMXTR5+pXXB-GBbfMP*1zAcjPW z{+W$sMn!dY+vk_82fjtLEGJP}nHZO_Q6=w@$XQ8>`VDDR4P%hFEDFolS6Xdc?|ByM zg~xhZeK5@X9{a2^q*^fiqpi#}tm8*@C_={&!`6sZd4|AX+>9J!|CLnD2` z)jrsdoc(oe?UgR+MqVaFb=Q_$OAV@jn?Jrxnha(Dz!*c8RqAGCGNKrPz)9%0TBJDT zx?XTmYNNhpHS0VE}g-?JK{-@Onc%FZNTg@uHaC zMrbdf2!T@uL^e$CK93lOa#CRq$4z}>ce!SH7KXlB$#_HH&mjc zVqD&7#i)DVniUA@*39Q&+ju~H&cH|R&ro_&4RKUdGHCeVJQmfoo_{Om`@Ec78|m?R zF_)soq-d4T*NxjS?e=Wb@Q(Qbe?mfAzwu*d@J6;at?9!uo({!~r)lbFpeD7;k_oy4 zQCwG&&im_1Y&Eo#fR=B-)-=6;?D>lo@dlg}fU+fX=zn-1<0X~F8#hvB7+~#*$(Xvk znZlTKEgr08Dmk*wFyei%whW0l`# z!_CoqxE;oXjXHPXK-knvFD zzAlspN&?=)M{f{*B)6ppu`cmbTaaCLUAyQ6;WqN?VcXj;1QB z9dtJ~Q^9}%g9Zcr)x;A0fZZ>FVx#hjTzx}7Hz$}eFnwRy(QNa-j$gn{G3}QkOfDl&Xp(X+X z2oeYgY_dYC5fZ5eeJRupAN*?Ly-%p3LK?N%`uVPE|cn5!(t zjh^{vd@EY!2h`_&+-x6q2gCN}Hgz~1j>Lcr00P4Tzx-lDP4)ZIQckw})-xZgJj)}k z@@h5yesZMdgyRw}Qk_WF%%;0kzGsvUjl)K(+wW3p|9XK}%d{a4LqYs>6c)8c^YF3z ztGm!_nRK#t`IOTYO|X%OI(}_E+Fx;MvC;=_zd``eba*m!3=D`~$I46~6%+76h0WH% zS^ioO4ajtPPC)_%dNNcsG#NNS0b8!B921aZ%m9ijHUubGYQSA3b3zQr83O=+;0T9| za7k1I7{LUf!l1Oj%Yp6wHF&3x@?=zMN{|4F$pB9Dug0?S_U_M#$kWK6;k zDCuO8z3+7%2o~a45fH0jFBO+kE{4Q=E&V7b;2oUBz?(+T&Rm{{cWsS6qVUV+mBINH zj0Zz4;hVK|$PYh&XNfU`Y5Oa_SqYOlJG~kKkG(IBHZj8Y6tUU{1^bX+pIjlUgx9<0 z6(7Yi!eY9rsIWnfJT2iJ?5)A1Pjb(3{JhMQc)5t{204_BXE%N;W_ZE6-AkY}f~7T- zM5X2e6xn-@Mg=h@0p#+v^6#weQ0?pEn1;kBlm&IvV%aT&KZ>fz@uU^jO||%v`!zfc z&g)BGUq(HOp+P1Wnc~5jIj9T+hW_U7hqXuXDBh{G{D~t&kX1+Ijm6ZL7 z`Otn=h-al97;Yyeb#~}=vk5f>uDl4hz}--7D7a7^W3s9nZ#KTvkn*ksy!^D&mRpBV5zYT%*(EP`oky8Q(hfemh*k@ISwyB>++vz51g%M zba=@soij3Lgd=utgTEOoR3l{J#u_AfZ;AX;&r2B$1rPXF9T04MiEP&LF`g=!Og#Yn95}vln65)3Ji}2WK``zuf$j*WGfh>BE)A{l${>Kn)je zqwWfo%Ro2VG+Yu~K-&0HXy=a29#6VtUtOF=Lc<(``S*W_$Ws*<-G%V8~UQQeCiVLIMzE2(7aUAyvZz0Tp%x z2#^URM52iAr~(58P!~}E%>=Qidp}j8(P$tA;ikHxD?E2jHfOhh(a%DSPs=MctNp)| z;DSIfV9p580hsI{AkGZNhqsa5ti3%D=0s*0kkGTo`Bha$py0uRZUYzemJh5sS{}?? z4~pw;OXpWjR=>M?Z?1b){0=7^-WPox1k{MYA~F;vH50i{?vJmzfHJzK@|gl(mzkM_ z?-@r{zcA@=(3rgL`eIp6KVl2j%&&uoyVBcj2-Mc zkrpobNRX*(*kFh5;dzAo_cQeBuL=dhI~f8k>4Gw-gGrEJKwA!kjH(C(f*@pIqQ%gO ziUO(i{)v+=isVlpkkx ztB%>$o;o@@joWkyj%i;TsO14nc>pEq)l}1CEu7y}?@p0+oakxpke|as@CgTKkMH`> z{UD~MfB>on2)gD05Gp7#5{zWmAKHQxfdzs!=0N}v6QDu}RAIpp1s!8$$V(ENjR{N= zhycSSR3K!aFx82)4ZtGBmLngORe%h^0z9UtnWO!;Xma__)3BLGH^XiqG`gqrB<~p& zRxG_d5Gc8tE*f_9`hE{YR2@y|NL~#d!zv$P_dbX58<>7G@)S??InZZIgXb(2Vt1@N z8-ShcgR;R+Gigzzf@E$}>x0*-oaVCY&bl2~)v%4{4FU_JxH<_c@-#`n7NTH3zc24qQ;aWsV- z@P40hzv&q%>bs85(7<@BlVERildRavu#FOVZ#Vc5$6j@+g|bGI$CYN}Pib-?n_@_y zS?Y0M4f>eH1gkLR>vTy%h8gm(GgzK5n!rUOSs7DCruLQnGc`(h{4A2%31N3U{AOPG zG|+2$1*kK&1^h?TkfnBPFX*M~fZ{Bk_KFY+pn#U_S01IE$-+$%G?p*tWM*75oahpO zaYQq`elifF1APn@@t3EnUQZk}pl1d(TaTvgY+wp37m2F>)+fByZ2ps46#~VLwjap< zc301JFx_sQu+$6jX;3u&T4V~I%#HJ@r)a(>2SGAYcGL%%ln%~A`HHlDA?bO(a)F)B z4~@<8IwH}oEC9v)_2SuhzECb>0fFXH$)P25)?R3xLFan_sl|XG1ZYYeGx=UsfNiDE z>~MIN__9<{@dmbERc9G-`Hc1Cok0g{rTmKRc{U@NS{De1bUvYi{MNk%K2H3FS^rc3Mf1n2Ysbja~t;oqMhN9~)8S-n(Lx zR_cjW?Hzu>+nZ>{^7{W{XiZ1B3bc6&1{HaQ;xDhz#S8nH%?D@nLpAy$&8)~85WbGk$j8v`I7 zt&I5ecWR6$7MX$4XIIiu>eQ`kRV$g0viLU)?dH(c~agFX4kuzqCNT3&N-4X?zj}(ln$VX zSu36>{>`ZC!v4uT#ZEIvpE#cFAGr$Hpb<&yly4rn%@BVyl(Mvw=AF14OC<=wh8DJ& z*;!9wLiJ&JO(}Y;Sz%$hfR)|~XYlO-Z=z5*3RY)69oJ^Phhdz@OX*=R-(3@@h5J$1 zEjz>wZ4A(N*3*T*`IZ1@kdA;ab})OQ1p*UnBJ8sYG@u#i86KVU~l(iXN(nu)f6 zQ>swImR-bpMe9P`1pf7OYb>_3uCZpM-vN)Qbc``a8?)S&m?W?iHn|Q6vkO_S*clC= z{QkYE1HW^LoRIIp@yQ4n3D-%>O_0*(@p>#S=aL~(XXTsqG5&kII`REy_=W$VnDu`O z{Y|KCVRXCp;P42+XxX-Rb)+G_CH7O0v2;VD_;+wKwV;$P&@`I3hp%1)t|{fQt>O=akKs$zvz^6+J_0{;0G3EDV9x0l4 z2Q6Fv?)#Fa{Lov=b?iw_-ym#o^oCGz(>g0ue=E@cu+?AUE{?nII(_vm_mi=?rh@F9 z3INZYF#IN|kOVOV2+UB$0iZpbB+_4_o*S?6Sn}VHG0uIc2E4f-RRG>Y~C<#ca)KUH3Sw58acIDG)iI5PMEn&ullfO?*!nYQ5+VV zSB>jqY|z7JD*dh&=Si6UsIvAKjAfFZ$Fv3@ffEEEioOQ4{ps8myW_03bMQO=lBC2$ z1Q1rii7wRY@eo)Aap5qpw7tg(K%EM|9u83Fvnzzhuc0`Y)TG!peLckaxZE2)061H9 z!IZ(KZ<$J!Bf}uc^6;MQtcMH$CgCqq{RSJ`T&J>*Z2}`#gzmgj>JkE$thXK!KSGGO z;R>X+oBWRyF9iAvFh)bE7z;XbgC0I#vy40Rr;zRh48X93Z|dPczGNL@w6JHVNP~p& zaiTE+T1uG}5M9|@AF~4r1acqUQvVvwi;WlYNFEt^fhf*eDv9 z6J%g@2oVAixJ2p(+FJV;Yw=Dx@9}7N| zF)x?D-~IT`8s!zD)Y|^BK!HfuYTo>1n&64MbPu=6kX?+%zB#oG${tj=(k?BRf223F zMhiICBzVtgBEf7Ee_5_w5EQA=4Z2B4Zv{e_Mq2{ZAtnU?d)?#I{x$T2^OlzI zMFE=*)Njiac|qZ>hpu7(cKA&O6nXCUxAJ8^MiM^ESy?#w#a?E6erdD8Hw&l4_e1>f z^P{I%t9-UUR!a`3GX@R5ylOvR^BEo^>-+9&6wwEmboZY>z+fDxD*X44rV;+35NQUy z+CsdxONV(~<*vQH(`$D9OWTru`^4bJ5%=mG5a^`tEqF>jJ}FXghDm$~&6dP1B5i~) z0WqQj3;Y$~3GzaStV`3NU?X` zIeVU4D<_u1(nZNfsaXJV&8>OPsItDZzd!3b#R9(Fc@}7l9g129xNUf>%!_wZ$Eohe znZ2vNsW^nZCJC5+8Cq!|z3bE^>ZA;bFaxlSktDiDq5Ljx7xuoI@Xk1FyC zn@&9uyi!FAT}u)Uzp~Xk$V%S9ByOPL>I8+%Bt&uXfA)W~ZPF z;2;RqvjZHeXG;7$pAJXi9VC#-S(!wuO0=9FvJL^lf=o3h)lq(5!99=7U9HZ+60Je& z%eG)rNRf&FI*SLmOmqJDf3KOYmLT&MZ#B|EHd~gzRd&y>We75CGuoJzFIuTq!7_~| zICTcW0>}?yTIyirC@iXk zyC-r}Se^B&V3Z&&4Htz(upd~}_xM(PJ@5^+v#;gq4qrSuX-mFCmv#3#&Oyy+YEL!p zW?p;ak>`*ipdbgFTi*DXJQBnRqd^t{uc%-UQ}(zu2*$kOznT~KBLJAv3!6jo%$~wC zJckYtZ6P!m0l>ZX-WXJ;iUjZe*=xEUl(RkcN&ZLPqF#J07q#8xwflPQ+3!QW41L%T z2SCAt1PsfbB%DBExNj^BE&F1|vlk|OKitX%6{v^zxd-p*FMeHIw=9E9@YNOML}7h; z%SDayUThE5@{fioB>X*S)PBW)RZwxMF#cWV7OcaF2L%5pIG?%6diQY@Dypj9m+r76@JC4Xj`OiytOj!75(nMB znQ$PcBxPtu&66=7KkMj(ugH_)?gEOfPP|+10DnfB^$iVI_&p+w)M5F;xG(~Z3Ov79 zAhg%31xmpDAb{Wnz6@8;&o zr;I5zT4MO)Q*x$2?ZWIG_1~S?fz2p>Vr+{z21BxoOkKCn#z_doye0t@5AI(OgJ4H` zCOv3!LY3nC^~~?oS^@84qH$t)W%+2k+MvAY{gwZA56Mt0{IsqFejIv z&6CI}y^epf-_Q{{IwqJh(jSLuN}1uP`^Z=L=c2qs?d#Lt$yCa}^Lk9aomu)jnbr4D z^`wt(T-nM-;q%pN#S=WD0g|qX%kl*cH?vpgVe$AU7WhV~|CgISr={2`Q;0B%dzR^-4#-#Im zx@cyYz1kO)y+{^`B)i#9k7{291pXDgkJHRV?FgBKoA}yZCOdhG!z-s%f}KVQUsr5o zs^Rw>?ksA~26LBGnnuBSvvihw`yFy$W@1wtA9=N@*^07OFT*&(EqnA&Bg)0ZHAei9 zCRvf2Nh}Q5b(lkfJ56)yy6&Zdh2QsBmDwUoP%Hyl8$xod&&?;a2Qx;bnV@W8i3zXL zt*C<_Xr4+`AH3ab%yR}HNk9Um*R!f1DBk!!u&3j{j1ss0araa@ijlTszFGCJLy&Pa zCW8rmYeQC@dDce$68oPa*U4me`Fdhe|D(?*#8p#(Zzopb0>|+A_`+NePFJIrENaU}CYn>(Durw?SuI>PmL|9cQ%G4><+~05BI(FGeSLO?TU89y{}HbJV)oNY8?#W3tOm=_DjHbURRa zau0fm&n3Jz^yvC(gVCHP3b_BIaY(MN5|wL?16(}oswh5+-BEKZSj<@vCuS2?gw|^n zizjF?f#s}O%KQjWY#o#`H|`l3u8uG-#8NgiNOKK6y&`u|)3B1-_Z3zzdQ6;AAwt4_W(zUa6XU>IZ-m0Bi4wzEbP$q_Z4Z#_yoOW!aV$(oNqB9^Et zUF3Ty?bb9?2n#L{?^jaDv-P9L!IUkXP2t@x0@pgwX(NH$sZNaT-`W?iVBAxUX`1-T zF*&x5j{jgJTx%(D)>CaAlml3JnCQO&3?EbWeHMVENwRQZ11Yv=!Qu(=o%zH!l~YJbU!bm2WvYx_MFuDzdn9)7SnuLJQMN zRN)jx-2R2e`)CQi)>#}clQV9&oqG_l)^4NsHS(_t$yOyA3%=!p3>*o7VH6|SgmHeP zu?MKiO%@!{M|hhsDP3DXoQ}PMx^$u;w7>Cyw~Rv?y5M|vWcSXDXw3rSXv=o~P?7#VDo=h#8y(c-K$M$H~aKqSYY zJd9fJ+wK|x%#=&U9W`x|jzyAcr56PB#qv4&N!3<2b$gz5b6^YraYFT-pr67senIxGQ}9)E3mNof_?EK)Ndkw+ z$V0`xlrU*~9qa9LAzjX>o%O}jgtO@3WUTN@EJmM%w7q9Zz1`1tRs)i`NZ69!jbS|x z0z?|H9K9qaG~Ms0n^RK|Uwt%lWe2>9)`4a6-Tp3se$U(%WXbq`WHDkbHVHvz#0__} zWOOwiIE+)bc4Vx$6FELr7d634w5$$iRdWO{{uKl(aFI)Uhs`6JTh<@SI2Ip~8wNq@ zrmRxv`akm#;%{p)wa!>p^Hc0QEMc3^qPKqOXca=T5ye^q{780iVuB)t6umLzo}q$B zB^FdM7@hZdg#o-E2x1#)~(0d9G*5-=SExI*u%>UZn>r2h1q;%E-4(9l3Y-^5eE^n*d zk_mSzi!HV{-AiZ?jjo7C3CASBQ;}FgVowPLJ2K27;}yMXsf5Q;Vf_1^bacfTLMD_c z->uPLapI=yTPfn8S;8@}Aa_O!JAu4v&uF$t15ch^m&A@iZ{0!$#1C9VU7pv#0%Yf- zfm{%6^P{Im+KbJ^&!~bL98{y%tLmU}O+^1Y2zwaq76?Ml&>#_`xy|pyl?SP|?}xx( zQ=qFkNPwDr#p+<0t*3BNtjl{Yy$v6^U$#{vw@MhSYqBxX9p_OfiE|cxX~71a_`0? zQwEE>+0UyCAz_Fhl=IX=-`m}z>hL1p+A^&BG&UvROR3zwTA3mG6W7_NfDMVRiOh3C zRDETD^Z%T_Av{nWN#e@`H+q)!r6^Jtt3Tpk;4*51aDE^0YayjdWn@RN5zHdA-#BZP zz`mzMmNLhrX#Kx=gI$^2;Yke`kllqIpM&F#1C<=1E>h=ma1k{j$cgcQ8^csHR5A92 z+K;nl3wV!@lKyh`ER)2%>&@RTt_r=jEtgNm|6atN4h#XWm$0g}QvF}fO-Br4oDqS5 zGTrsrRD}|(Ux;o_x9i5gi7hG-9Y4gzWV-l%&OB~1Fs`78xU>~FyJ@l9dTP9iLv~n* znnJ`JG8-f_@3ii`C!5zdJCfiyO3_cy5toG0S7SE!6?R{1jP^&zUBBt{HSIIIt=&)z zZhKSBBTb!Xb;pz?`DCqb@_VAGrR;t@$;rsdUoImCb)URFNYid}BqbJ+?=Px$4|WI- zsAb9(U)ta5q%>;za9QQ>vRWwv3a|AeD#uRXCFECEBrlkE5NulmIEFyLXI2kKi6`nx zmsr9%q!ub3`G_)00SM>@&YQ{mF5`su`}dDDJLKaR;JyLvSrPLX;HXMO2t zS#Q**d-2Y%5>wdXi?snl9U-9we;4=8(8}{(I9)Z+#!hjIDGj!14lhi)sQ_en@i98# z>HL((S8T8Ga%ruyDFl7QKJG{&O7Y{+ z7xY390PDtys&6`T!~hRrE1P!jB$kU>NPNnB5-6NIkEpd?Icq{`T#=(5C#6WFaplvG z)HCFnzg}RDa%VZay^Qw`%eh$LW&Os~z9+1Ou+D%^&ha3W_(o{D#2_wVF?@ z=_M41F;4zPybLlmGn*U=_Uvd&57mYu@_i_O@mJ=Zz}&v;mK}avWH@4V=K83X!3;47 zmn7VjxXz^Kh1+ATrmz+@|87UuDfW1Lg*>a>U_e|)?W9?DNc;87d001FDM2Kjt;soe zcDmf!EubW|qmr1u)zqa~Amuan62(Tcyev!HMEkVPf9c>&fcUB%C2D5?0L!Kh7%)51 zJJZi;&BRVkpE|)NE51gWcm({bU#>5sF=y*|=KwxNdsZ0MbrnJT&z@TEc#P`QgOSjx z3i3v{ThOj}5k3?C4PQ)R=v&y;geN}4DVA$coYwVgm4UE!Dbo#d08rnAtTZxHQ(EWp zXLO)zj*m<~gd=L8QAB*Lgo0EDd!J^8UMddtflCqvQ^taADsu3P`ApkN2NT4gR1ZNYB8Wp`Eze%|bj&pyOjy z&|#IAa+zL1J83cOjME^8Ri%1)4N91TjB~2ssaqO+5DhIa$-X&$ng_#Yo!}X2w+k!G zMAv959jVktn6p$ERd&)=$5=ZETA$n#hC`4sW{iBb=OAhK9~rg`kvE>V#oP>H6IMRzb(4JO_O zQxd=}3SvXZi`x%0-`n+pD$DqtH-#I{Hy%rDiG4M}%otyKwWzkHbxukX%}V@+%;_rj z*INe&etwsNjS7DABZ~P_-MX-!BQ2o>QR41KV8NIG3Xs%tDfRoGXLaeLXluXd%L>{k zw5h8W))T6{6m~jx2?+N*HlsH6Q)qF`?L3f3gN2fa4VT@_fSJ81UI#Obx|1c}l@gy=V!asC z*l6r1K$K@YxUCYbZO+^4;r4nhE~cakgUEP{eOujLF3L}j>e?!LiQ}5 zIB$;*Ll0t%ppJ6!+$1)L*q16RCO$kb$?HDqoq9G6PEjIIlGCS zJ8M%S5E6q*3#Rm_-_=bma_Tiw(f!`EORpYKFi&@b!hy^?Z{z}BBlvQ5UqU27WK3)? zVjqL{&0)GX5b(sg?Ojn#7mq(HNYokt6(A4@n{MbylePz|&2ex1#m7=1z#l#F#7$G4 zQ)nlO$3dK^^?;n-LTh(NNCp(#H2OSkXxRJ^8X?WwIh;KrD>mk@1&F}enu2@r3y=%} zib2;O>iSIB>erShBwq>%6F>cAL7Q2ZH{rgypzN~QTBS>V&8G6A)Ue|UK^?4EQBze* zv7P!6@^(7dlgszXQGTpWdgE^&d%3DFGFlKF0$ro_ECVzu`6L)j3Mw^s=~{mac*8gX zuOYK&oh>+d(`x`PL;{k`9a@~MT47!GRThVNJa-DmWO4wxTtZSB2IWuaBA}ge|pS?GkFVw)EX!#N*&m`9?$FhB3>=;%sCw z2o`egj-=VTHM;v!qpc13g?xK3v6eg2D6YqFwi!s{maglyGaEJU*J}I9up16$i_Eq$ zj{Cp$yEwUJC2NO9zJXRh?8tfyhqUr=Tgp_36}eap^JQq}SBU6&_B>n7zYnGAd_`(I zapXg)o*lp9J+TV2F)1jaG+#ne=02ftWcLlTlOES2wbhbOSh2R~PH&M`nq3W2fY-|q zw|v6vB-2{2%|ik+ zckbpIq%5$#$Z!(AI*)xu-+TI=mYO=LW1pfHY!bS0Jqh{uxXr#*`<0`CH6Tr3NC})zrGX_kiQODkT?Go6e-x`rrOB~o zitOzTltNg}Y35_c(|beb*Kfp~h-7EXuiv`OlyN$`cUnRO?dOX?ZAP^!4UfV=w^DEz ztSWJpEg1}Q-ri_(Ll5|jZ#C=>W&Uh{x6y_yOSDrBSh@WB*fOicwc@bDaXbmY0|wbh znD-Q2Q$hG{Sv$ayqt`|yCYkrBRLCxzVNT+mrrQMzqlGB6@g;|pH2ZFjaY!FpovI$U z4FJFH;vUkv{iU-g^_t2!+)s*~%hyl{y~Q&i0hlR31P)Msd<22H93oR$m;!#+Tz9M? zwi*Aq_nIqD^W<(!4Uq*@gWxzI);f#}2GMX=<=RQ>-Xc-EzdO3`C>^*7lN(E3^SiJv z5kc~J=6<5$Uf_)(aaLT^*l#KFB@_1g2zX*A>fqN~p3lO5EXS~GaGs`_OKTIqlj`(Q ztx?GDYOj4Eb<2>kfL0SSBoPDvfKp&X&YFNr(t7*+ey-Yr$x1Pa4iRQE+M{;9rB-HB z087&`^(np&h3Tj&j4)PB=WC&YyOytM?t8-L`BVat7mD%K%&@TYsGyat;zSGJN-YS0 zAzrXY+Vixk+tla{tlOz;c?dt`I_s?>642ku%sQ>;Ak`}>Nad#3*BG~E3C5951bSEV zv>aC~v;`xWeMf(+iY&c8PRgrs*?BR?#rU`|VwNffH&C@M(O~LpIAzYg9Y((<18@xd zCFX-8^X)3KL<1}@O{dV-n-R`ogGQVM^2N>E=GW~2yuHOEYKkW~9MAjf1DYNVy@S#) zISyZv>ali`=c+K{3`| z{FucQN|chI+)(keed;SWplh-p&4Rrp2)Fif_uT39jFrimB!)t#B{K*T<=o0gf_=G4 zcBeV71d5GI?6=IB70xh5Hd)>?Vqn+H)ayg)^;4C=pb&ucROLbAty1V)gT?8VX_q_Y z)U?MHZfJZz=5bBTKoo*~&jdl3WqbVjn>7Qu+8R#rS1#W%5QlBLL{m$kR6=Fd-e1@c z;S_Rj@mX=7CtK`kVUbG~F`M$f5lGjOfjJ`Sdux8Fs3q|`3~S5q-VMImsySYS+@l%- z>!c}W@N0Gk-BpoCQo2TI6bp|;v;8)>-Nt7%Bg4&H3 zeEuA-J1vuLW1BI{@1mfE`3PbWDj+zScMBUr%P8UKoXV3!!%1BLaElEge|3rV1zumE zsj{$#$qXYpRZqw_;Sla_3Wyiz$k7U;Q{?iZIfqNtD?`=VLxm*(<;Qo)j=}<0;11Z0 z8s=~10xHbl3LLe;jZeuw#37>^-Bj9Hw~> z!oNXC%Bx2u*xra)e3>rJvKc5Hc7+WR@Ejgt0l@fM+sl(FXeV-lg=trp?7$xl0}O}B z;MsZv!0S7h6kY$uRRxO@@IH9J>SfhuG5+KZQgJWxq2IsZ8Fz?6)F>KQ7kJ49d!N{X zlPV>|TCEpUflJCUnsORlzG<3DQ{H()W+DJJU?70&`08tay&Ic;>wtH1=k|~?oTuqA z9Ma)uRrL7j*C6Y~{HYCC32){sH^3=Et|xf23cuL^I3p&b;1Qmwq-l!Z?oFN?Xs;9X z&v45RGx_N%yVa}k?}drHU_4J^V1GwvDBYn;8jVuzyz>P3RUY59Z(mVnkob{1gXWoE zUmwU(QU3!5K%W`8GujZDb9kiD4a{AuL#=O93O+J6(w7>&Hg!byaI(>NX_A;w8E7JB zRZf~{sj_xI@gH{ec`}NN2JC3_l56C!BHEC7fyQ`W4O*^i$U1sO^2IYY7W~sMj(QuWS zyFpMaq=2#W#mZZbytA|CFXQTAT5`-wE90OR zf&!r9a?3PJIW+$C#P6B@rcCGC9kP7}WhS0c7bvmy{hg5MBf*@lM%Lr4S9AU#vk0u1 z8dq_=hWaJ+Xt}W$q4%eQ{&H(m#2Q3oQQViS^qi5umqI?4IYy_lqMMM#T>a+QUSG|S zCG=j-ybE&v^oB zr*r@l6HT2(D{y*?2|YnrR19ZTr)WG$Xh(st?2VA55S>Az={5o0rt$WM@-$#{6c;jSS0BW1n=YnH)=W zHw>d_&sNXY263(TaKS|_LT{Cx`r?lRz)ple^JOXx6ZL)dAksnNagOYelV`5O9*v!B ztpE3|1cCn~3P+(==s_$3s15Vo0*-wcW_xVvg%-nss1<|A#;rb5f9C}zFna~WOuoOt zw6c#d7w0W~5Dh_*GXQ)Nyz8bWDFte(ay;G}&qAn6-0MFK?;?#{lERN?0Uq2u#IlPI zy997vCOlUQ-)ZI5K@RPCIi4>@qg7Jh->*@7Q~Y|JM%ma+ccpfAz0)DS*^b6Om1xyx z?O<|<4gd%Mgy|47AnK5z1p$P0R&RDny-Gei>VVOqgbQdkk_Z75RT!GfvRE@Qkz%@F z60l)7kf|t22T*DfhU;9YLfw69L~iShv7gcb5O1StD?e{@robC~08v1$zw;qPlId3P za3G=0)DagR1=A74Rj)&g-~ttE4><0($eB4Nj!X?{fb2lXk2ZuDGBr>m(g_AZCLDL& zktIf(xmn@Fm;jCHP=_;(XrW~t3Y5B@-{+NSuWO3y%j%hrohs=8Vu!w5@6sBb^Y+^U z?Gf{UsE2oa(e!;(OC}&HMA+8eGi!e^teUx+3#5ojc~?MjbxXA~9)Hq;0K( zlo!+Lr&`R|Pa+j}v|d07tk5WDY&=D(aH;vlYp7Wtbi#*9_am?d467^^UDSMp0RaF> z!6~x{sjD}k2uh7_KsH31j0@79`qszDIOBzrVPRSdxQo8dGE2~lr9cp7TK8}fQsO{( z2*M1tjW=FUOxkNQr4~YvtAp`uB*@TV4^RdGT{AGff;Z2jLz7rJ|Hw&J9?cE&@?R)G zo>>992$`>br<+*PvQjFTfLD4sCQsccuU)W9!|JK~gb?d?%N=7cHD_BQ4-WUk)`SHl zj+>iANa#7zhV0*{{=4iBtDjM=bCBIJN`DHlmPwO+!(Mkt%Z| z`nU60a03XtXHs?LCL(Teb$8`n-qDwURlW;lW43=3rJ8uy(^$)6XDtwMmb~}FdcRiUAkroO|}O=EsOkKr?)dZK3whlgl153N>y%RU+j$}`Tm)HpW$VtI6KpS zs9VB7Bn8e80LdBl-^hRnz4kQ65X|nvK0<=X>v+j3wFV_g*M5i0M?OnsERAXDrI#sH zm{>7LTnrEh0{jRf$q;wb?_8;M+E6?xl% zYRWX-f8U0}T4DU*Vtmqf2-8?rpA`*G!|cFqVFHQP(|JTrXG0CXbW0trM`HYI9ufFa zJM`@8zKoJuW|1UT`QI%Vuj$ZqAD2adOj!aZowZWv*_4YChZ!U1d@j3QjJmmfS0qr) zVutAk?wDob)bfJi$sgIB_0s@h5r7#&V$do?XevFoN#e|7YtY$jDuQ|J!_b!FYj>)J`m(6(Geg$ z&TToUS6X7=7#B4V2iqZ2g61OKr|NK6g-wD?XCu1>nA9rPE@j?*-gmZyhcjcX0~Ad5 z2fiJ4BC%>qOgiVfbZ`n1Bqf)MRTiAUNqu{QP(6H>)u0J2ve_|mhFDE4&_7$Y^S2za z0Plq`tkj7Qm>&?q)A`1FgtcDIdVHgZ)1?>{1`>J0F%{aW6;*(u$A*nZN<;|yNZBGW z*liVjh<6zpB)G9Rqp}4fLB6rB6oXK(XB~mal%-mBNllB7JfI2v_JOH>&G^X3Kmcqe z^zN8Jm-!s$q0Kh^VR`AZq@<`Fc1h6e+peOX>c-Cu3+T7OPd5#(7=W)$D0lReLw6J@ zx4J;>`FjYfc-hSx8J36Vjlw$0D*};K$0!^8(s; zJ?>%oYbf-j?e89=ReaA5sqbyCDXF(^pL4o5a9dQ~X=rDK{iH2;K)17a>nJoH7aWxY zW=oSZf0)GG`29;#vgdNOmBHpIKGf@`q-)#t*FH0)q%pKNp^w2QqnmL2MY#~S`Lhv) zQje{;qF4+oDp2=fTSWsM+)?RZ-qu2Y5@VDYg^viwK|&BX2In4ef*f1^8DNb#zU|Q^cGGXC@qLX=!$GEwuPiEMc4m84PkRj$I!O zQ)k3u>7JN#G;;ij~g2N0}S>ofa{G;t8ix zYGFd60Z0jT1_=Ve`f&}Or`K7u44EdfVh?qIt)WRv+AE9BE1FfK2(>StA8woUsH`Cg zoeY4Sy}sZ~44!UUz`YT)o`i+&0bVo%0+NAg1lRCb9)jIxmEq_WXR~#aqf+O#Q~U-+ z2`{_maG%tP>*R~|#H33fS1LvA`g_t-UQ6q?w$!I@$D4EPZxpUjKXtTmWS`^QGn)dp zHlr#?%OS$*PEd((?h9W3hrLPR3ab~~3i(Y~zkxRuUmXyoq@`vH)6}Fdx4nM*qGHIU zPx@8Q*XZP^TmqOiU2oS(OFtzZ_K`hdmGzp)N$qH37y`uD>hmP3o#dIfQhMyhDaaCr zuc15XcO$bQx^SDoQ1Pi2lY&WXzR~j&RCRy!vgc(Jck8!b2(`q!0A@mjaD*Gnvt|61 zI?RT2o*_+X5QR~8RRPl5VN11OI_{Rga$V^cLu{{$dch#h)jy^b6^ihD@U`1(+Z2mw zR(Twl(sWQ5Ne+dvOT1R3$GJSsSS?=t-iLFA%#8$Cth)m_|CuG&qxjkKQ_O`Shs)i9 z08`en9`zL7H_{5Pi` zW5t6`0n|j+ChM}3-b{yhn#~hU}Fmm*039=eWORhS|&S>s{|P z;bBxA+QbA`e9r`1DN&J!-YxLHiF8yXYpo&02H}sx_b&vy46@p5m9cV2ay2k-2>uv$ zP`E3`;8C8K6*+U$MBR%8h&qHH zZ^m+_c88A9=?2)}*sVD_bINF&@Rv4DG>U1P`}g`>f5~?`f=jJ#w29Dt%Y$~I6%w({cM?%B)o`kW9mqQ z7U4*inH*N;4J$xEJ9~5Tlp{P}0PbJ#`DQfWM7|fFKCsH#zSCi`+mpuqrA>2U#6NBC zmWcUgG(>`WbMCXkQhxQ4WW*@%&YNP% zZ|HS=(-jtxlqx zfnc#US^&2vuY|+zKqd_qSEGZx)Z$EtIff-N$X$b2nj&7%6@$o8UyZo2F#X zV~(YnF1^w}iKaUQV0CxXJ{BpPQ0MF=h_jGNU3?d*emA~XGwIm%P%vXy#S30{)savB z5taK2%cWF`MXgpP{-b?uREf3BixOab76o@CVGumKY$XPVj@5&*Ei~{(<4hO}f(*z& z3?VpXbnI|2HalXLTV1KyuPL9Cg;>Ws)LPafLWcB<^BiZEYq1vq0g;%Q*ZP~_dHbhp zmL{EcxOkfrb6zgdMMQ~>uD(tI^N~37Cdu5XlIIlt&f(N4&mmw9=*ZA!gBjqI8JU2S zGmN@z&yuKE!{`1nG?y@fet~K1$KR)>s7<@-c9o`kcL=h=xl(nYINeM12?#HEzYb#< zf$p;ig20wt%V7NE0NyQF%8`NS(A>QLScPYxGD zn4GW;U6y4+H&6)YIbhcJD3U)_L~r&t9UIZVVA*Tw<4MFRxQ^Jn51<;TxLNF&8nz zPMn9oNCaTtBtOKorw2KKQcZ9pSNrb=`@vAv&sQE?fRG-NZUrXGVKiZ&MA~R>pnw1h zcU!gNQH!&$<)`qhj=NG~>0o}!LGKEFG|f%Ck7}~-&F=|PFXzzUU5p|eRZ%Kv0#0)E ze-GqldY1ZG1H^kC=NazVc6CIS5q{JKTp_LZ9xi%LZYgmXa zEyVR%d5ArNh8?H=e3c@oV?SE}bB7WJaN)yww4|RuK=`LqW{$d^asReRju{!iz8XFi zcYp9_6r{&t9{lB?jnav6Y4oOM%r|M&Cs6*b)$X=?B9~lW87OtWWX~sGD;~b zAk2)xfwRNn^%Wj-OOElV+i|!s9}hJ@Hp=sfmq%r;Kw4=24C@wt7>8vaqxHP!9hII< zaf^ARhgupFtGF5ZS|s#lC2Sgpk9#5kcy2!&{Y93YEN0K5=B)6|*{d*-!(DO~i5Xm* zJ3ks;>1M+iwcGE~hoe6bWL%#sjZ^q9098_~vf7Uvv#_d~YZU)hctLKF{LF^|p2ai8 zPZU(l^WA>m>e>&Z-||R3^k>Pb48eLPLLPq<$u$>$Zvd?rpPR-&604ndf3)w)`G&fp zz(oQ3-H)9aOyp}j(>%lTCaD{c$~&H{laju)@?{9!mO+g`jY}}SAo#5sUd2428P0~F zYM0mvPTk@xf8!FIWEM-p+1I(as0MsPc^qov=ptHAP&7gu$9dW}tzzoj?dY@s@dHDue)` zk_?x7Z6k!NH!lU!^mW1qiqUz6mSqTXM-!;vBO1pEX*OMv3O}UY-|QVwq*KO|rX&Rd zK#`&-TZ+DD@I~-PFMHmPso!F9jyvLX{kSCkxC(jigm3a*+(&4*Jgkfmn+#=icRxU5 zMCHCusER;e-bX#rxmNUUF<*l%PVC7~FEio3_yltHe^lBM?DOI*<8-j?9HmA%BMkA+ z-mrW#bQvle0h^j&pZ!%+Tlc3U$|dr^t)dILLDJ6IS5Al@ECxwHL+=m_D#=5K?u8$xpT(w5qHLj6q58*{DgJR(OdOOe7&ZnMAC%5R8`>cF}?k%2B6 z)53}(XBWe7ldJ@p{I5ISsy*JWy_f^QG6g~ZD>w2OyMo5cTi9){QFru#%c`OY477+b zR#*|($kooH+DoON5v0nhwly?6eAeHYdK{LnauuMMt-3%6;xNoZ1@{f>>%SG6&( zN&%WsOaM5rf9(!$i6&G|d%fu=@OqTtj@RJ2~+<^Onkm`cDX00UO} z$Vmo$AMM$szoy%dND6<*b7d`p9itoArZEBFKsasHEd5Aui?X}V51H5Ei;I?{el!7Y5?W?I8vC<2 ziKxlG-+!~mCW=uJ^|m;^bb3UvBpFr1=M;7pbn+H13BbO|w`${Zw`Q(mH8p8LRfJRg zf-?WqmtQ}#Ei&Ozg{tw$L@~$7rz$;eB5C?j-a<0NYF+fB5@B`mmU(g9eHl|&%VD>< z2_4HhUm70Y8xF)slMT;xsnRf{=hh0W83vh~zh08_rEES$Yzv z$OBc<&u}V^clkb*J1H;8U^wez&{_^JG%iyaR@$T?p==h}A0yTbVQ>27+za1Hly%D6 zJ!nO=v8b-_gGfX80i&ORj$uvfV3dpb?Dn}X7D|LjvQTsFUbLwdPr|qtAow+r!4Bx9 zmYOd^J%S8&%FsGlJ?A*=)NjoSbxbb1%1ml4E}m^gy*ySyIb%Oia zQB9!nm^>;FV9XgKhB1QbCMh@e8bjru_e~O_96|bGUgoP zAp_KOMj}A#>2{ZT6$u>@IAfq9@(%=mQT>_Q#FU;fETb?ubH5 zpYo7xP?9PMMCfBiAy9b$COXE}k~KATHD->BJ>if&bMOaL6FZz;Bf%B_5L-XQT+Np3 zP!(2PiE?Wvf@abiv**Df8?!vUPeZS0rR%KF$#j@f#TJ1;!(eDamopT)uwt!kHyv@OI z#R1AyxPC#5cPmOa3bPxJ_G*}3lnZEt6935WKY=pQp&XRwMN#dMjH1Y+i@?CFIaF|o zFO%;IMVNv_J@odtnvYe^&H^~0ZsCfD{``XCl3)ES$5eAZc zY+8)RUp8cIHDYqcysD!H(Msd?rDa`{g`;UDY2Qv%ex+V;)|TOYm#Lq00n?JN@s7mL zhS6Po7K!N_N)P#=Nx^hLwe})peq8;WFHtW!h6|$|FH4Is!-T|u92@p!6BLLb04qWO z9P<>YrQ5cnXu@MOnX&g5ZXgOn1j?({3kp94_SkqpeWXAE5M-KE)8CduWb}QwPjE_# zucR&QYfwQDKuJ`}w~wGgVLBK-gj2RXbdq zBsMqp(Wm7X(6ZUK2y@+4soicIkr_~#vj}uor*A5NUcLjJVNBIf3*F91v)1EEBT3MD zTHk2e5myo-xTqu;8=f9)zQMjS^BN)9$A_QL-E;nwci<*L*isK^;gh;K5+CBlWO!aB zf==*4a%fVM#qWwC6Kn^`xVsf$Pf=CjHMU|BK(iaLAPUC=Ah$qT5ONM&3Go308O~6H z0i~8U z=9_iNH+c^U2q7FD>rrbpmpaYh8n<~jbtiXmA_~|CcCRJw9}_ANMsvY8=_g}734!p1 zo)KhK0_#{n^*f@_QoeUqWsrc~G)#N><2be!M7m^S82U^XEkEDc7@N#Q24DtYOZ>_$ z#KK4~>Po);Oav&)|Cn0*+8&&Wd&-d&Za%=ajU| zv1;EP;rJ(X1%72E9QPD3j=ZomA6FP*c@BGOZnMekt{53NEQ`J6Y=N=T5hnZuQ zv3-7R8wig%-fETb-T2`@@mI#xpg6E@sa+=juvHXAUNUAEtcG#b1V6=4L;}ZZt{{l6 zsipR#R%sabqr8B#I-tD#~f-mwKX^wlJLBvS(To#QWCArc6GgY@w} zQaaw2ZlPEafKk}|F>i7(-jDp@C%-l$QZxosw7xjdc{?J;zar&_ag+PZm99#_gL)!9kb6S|spZ@Gd)79$V8VK_QE{FCo*vp@P>-I51-+#_um_1xzXLh{r}^Ua+4YICcQ-VCco0!F6w2-On{-n56x%Q-=<;+Ym1K{3g>l)JQKc}64rCzo+8X<~*?`cxk zN=Yej#aiRvVqsbQn`zhh1B%hA$a+cI_SgN3ir;F$)jM|Cvo6U`zSurO%CI(mAtZe%~K=U|u0R83`6SG+g&>&p+gq-);dV;Emh!xmcu0 zELEkLSS{N1@n-1+ef7(S6bAuz>U0>Kd2S%cagnvEJDS;cV9{*rSQ<+{Wk1YLNB76E z_R*G%q8z3+(VrO(zzo^z*=(@vaihoH<(XywmPa}BLN3OxWeWMde1AV7(xRP#X~^Eo zb)yzZkuBA3_fv^1QyWEX>dnnxPS?HK1Y)y!i=1Hpe6=mmGVJpczt6|fP=|h^>#d%R zl`tgm{4F;N+`Z;Xxe;AJK0b*_c!UZI=Ax>RL&cBBWNmc!0m-FqenmrLbUjoXq6*gHBhPa`gTBb5SS$wiCbRBaO$QGHQ6~J|2U!Ku7@` z6!onar?a*V73f~-6n%vzVymzJGMf?XzKEJ;%1JEVJf=o$M;C zc~0XdVQVsvo+IVn`hc~tribrVf{UH`F`CG^Xc11tO1?oUX0q%*a@L+^*GV!_gq<7D z)IWLQMnh4_^smfo;_A(PAnng}n`&UwWYLd(EVyCla!ol?EE=U)LG+~>@ghKGf3wGw zWX5qv4cn?YF)^XEDI6^6)V^O{vaG_CTy zdBf*=^o55`jONozbNAQpNIxGO67YIn3m!KQHKLL0xrOa1=v|5`E16%f+TB61UM z&|&q{_d&Ku6mgl(XGuyXySkj^s;xncV5E+GD&LCVJjb1~1s7H=ZJng#bZBdX>-_HL z7x!a6k+rtu9D34${Zhy-%ne(r<32W8tH~iS$&DvD$u$9MojfZiD*vDA<&W_j#MN)< z-sS6DD(ZEq(>RQDh19Q|eDUhhpB|7VAsPyYfXk$;*w7%|2N0Q*GZ0$waNRQWO(ec6 zgnItz>qHOU7UWgcfDmpkJupQU=^<40B2^Lz00TyJN$Uc`_*lQwh~)S03=2M<^_C>< zMDpTS0|`_t_-V2hJ9=g08q$5}?Q{20va_#HOK-D#``qsXp4V?}u651_OQcjZHiyux z(cs#zm#ohs{_}FJPU$#u? zRO0@$4g6DF%clg{)qLH)f=}@wII}35!6lr6o+RYpaN|))yc*L7Lvep5eCmkGE^FAr zynsxa`)0Ym^BfG;gfb>mKtZ2aido0UcC~C+57CrT@sF{2TzBeJP9P|!tY^ds0ofD} zw)cfxowX@qWtJc(SBrbT%VGB0iccWWDLsy&I@6|y>e#-S61(nA}Y+Z<0-64t3ivfY((9wJsC^kmC_nd*C^Gd=j* zKDyY?Xk<;uUCau+w(E!8Rf^!{^FBBxy8SF34-8yc?~!?~!9AZr9TiAtd5C4Qd|1IY zwk^JjnG}GvZgPBaxC{V+xA>k!5D8)i({0S?is~K@YGL{dz9#Q(Si`j#K#%o_JQ1_2h~wat<395d0ZxX=KgTOwNC~4#MjN^AXrcoeNfJgW z9s-DiVFN%<)C|g#>*rO)TkadJ!EXbt87oBMSeR`rg_*3nbrYy$+S~ZOqT?R9)|pqeN>t_ zoj#Ym*0i&H2w2F^rI@Q|<^kR@3D5}$-EbCQE1EhVO@=r=b0{pn>y@de77z9IUqmF* zamR=jlCEhiWVIN~=@MoYMdM8{s@v?g9JZ6yVvg3EVmnx}o~ymDkA*vN#Kgpv+^j18 z4HezK^eOxAv(aXk&GHy_u^8qbf(2y@+Y4lvn*e|{DhyYB^0;P6;c#dxgx7&S^ahA8 z-ilV5$_KA^5k1Yu^)Q!5e=L5>^-(W!0t-x)z}96%>D`A)4x4qwndB+(#&p30)#V(L z5DjaOqT$JQAkY-qv>LFCC6Bi=o&6)^|MLaAJ@8Sn5bs8XKm=V!dRMiyO-w0f4)LAeb96pS3W|TSbBKM zc$$C_=uvLoHBm~+f2s7rlH>@8=&6z!{9f;jv!-wy{%mgv1&5_zr%^bjz;U?7hPsw& zb0>RaT7!FgvFd#Y`pnzN;K;zwUIR$?FGhC{4x!}m*^~QeW_+Ren4NS@a%?D~0lfP4 zbw-aHAC6(=zYJu{9&vpj8z#%E_kMKKgmE8Je1u>v2K=nJt^U|0vfzCj89Z1Nj*1Bo zvOp7R+{GPt9kQ4EOp5FF5t z^XIE*nDFk|)j9;ED|nV8Aqwo1_3;$FuHu*&ebGqmJ+(SXp$lbXCBC2p%5!1KW=Igj z3^n`?B?np~XWl6yJQBZP>UfXyYQd&_`%qREw9AMqa0G;s=%-<4bH}@L&;PUdFU+h< zXU+9=o~Goc^-L9|d_K2jfnpFeuFt_8+OKaE~*go)>#+{4{&03aZAXpTqNtgLP@@Os60~9{GVKc z^LQDMp1*P7m!bQBDH>W?`sSl7Cz9+XDJkL|NBEN$)(?M?^Tla?t8HqvLkz73I=Kgi z$-2&ZDC54$ar=^0b;jGZ&U8fX+LJbK*?Khjjl^H`OHT^Ar$BQDyQ%cP7&1_t9r8kc z+f#Bu+m+e#iqrE05gy$#M7%rc#l0;1lRdv`GJCd>lN3HBHteS6$j;L3Bi0a6WnWF$ zM3(_xKgSSNlFW`X61kE#_V>GVC`!hd5+VcV2Bw&BX$7?9OY zCf7qx3N;kDO?LsqppAv(zOX~t_hMGvadvbT7Cm;Q3%dbgE0Zq*CUN|Ifv7s%qaV+b zU^PNep;fE>{??iBuI0y0rY|Qtms<4X67t!{7${OQM;GHdNe8~Cv%c_n&WG#@j_Fql zioeXb5{Mhdw`(F=%DF=QEtU<&7nCA)w-4V##jYCbs*(o-`!w~1=5x)5tTVO9pZbz$ zmYE+_X$sT0v`82NaZ2E1SJPkij$m%ZOlF{B5sqg)0Pm*E7HY4yNp5{Kiv`JhE?Z+@ z0piUWniKUAtmq%%iCCHeVJZ12052? zYf?qmInd)8Y;`x6oI@=QY^{=+KbeA_Cm+A$IQxd3)))A4J-E{=n_|uTdg06!>|67`KGWF7_(sz{+n05U}<;JgO> zf6*3pOo_w*`e-Q2R3sgcfr{^B+1Gsy-816S-a|dKmv&X>ReqH_h03rSglIgV-6`fY zp$3Gf99QDRHnOg5e(W2jnGrjWrgHhy4X(_a~Tuc#6-&8~&vm$@xX>J7?L))s z1TYZ|15mECE_KBXySdO=;90rD1$M`@O^T!KVxApYy{uXr{d>)Iuk?oC&@p&jL?jWi zV{2rCx9DcD_8z(+c}6s{c3me24+)5);#vJGv$>lTISQz6b;eXISy8aW*Eh{JnWDpr zl>dDwtPD5LY^zXeeHS;6xiiPCugDs&iMU?jHwR6|Fm4hBb#fMG;C}E9vHGF7!#Eo*cKnKma10fli)e8NHjw;*<2IE zX=cHw@2epgSdBUURK1ibMBH-s?*l{$&c-XcQO+h;-8>Do(LrL)eqoqxF=k~R3N+aXx8mvOub5IN~xV{&Nv-I-REHQNh8ROnGlzj4G3(D~U! z10))cikXF9lAp-C1jcI`6$IjYvEC@z@b(@@nu#UofrdV?4KgHg8E7lnFj?3szfzAg zeAfQ5f>gmD9OD<1E%IRL-DruZ*A;nG)88wr$>{~GF+u?_J|T+ZI7kCI1OR7!+Q1KH z)%wHorT%Hb)AHf7#3s?fCh4u=@cEfUYip9fkGGwOT$DK!hArubiz`8qLs!Yi?NPTT zfqKjXVFc_U<*ujV!0iR2C5XoI4a}~AliDJJ@wjv-;4_;&PGRA2TLWOSp%pkO#ywmL zMY!RUD7;}{1>w0-@c=+Y{ytF$(qs}4a$`VnbsqsS{pU&R50;xoO*MFu+~ci4jgfay zPN&`h2@6w_M$Q%Ar6aT2hED#5P=cpM!^t^Ioy+F`(sKkifu^g zSb#7-Mwjy7rA|Ng@VsS6@h6|4b1sxN4+5%KE#Y8+3BC^Eu}@cp@m7n<2WO*&mneNJ z7wR8uKbqY$Aie`UA^`)zrsy4?!mV}FjflcjhRxwL(pcE#{EVAqdiyZD@{*-M<;nnx zvtjf1Zj;0uatrSk2D5e}j=n}{z}m|GmH}=^{^201&{Inc8uI%csRf6#+B*kBruUk* zd{##CnOe@#E*4e%3?+gI`ZOFniGtaEG}ew!V3YN!O0@S1yi3W&l#j=%0GIcUP!)ba z6Lfgyaal!~3WXmipK)9)OP*LmK5eZ*DkTvxARwmyr8lO!WT+3vV?^}w{Pz5N@Y0k>r+I}ax@4TBtSx=%iE(OH)tYos1oGqdwd@&npa1ld_(iB8P znJO;Wc2u>Ocw`$Ep%qdM%@V(Uq%t|2ngM$c5@T_X&vGyNu!|0PoI|JSS>(g!15JJg zBSEd)361Sf+vz!7jS;=@Z@9QzJ=E~R$9=Q+hR0^j{hN&y_w`BnCPxs^GocZJLi*(_%@FXW(G5A?}&zrn1LZv^WO!e7(Lx zx7B4-k-cyOm)|8=$@YcvpMhI=OU&@M`elPq>>9nr(Jn#tSS9X4sEM1WP8oOJ8L^W zwCf%cf@aG6;ljlWndCAAe?d6tEHNi$GaDn_$Zbs$l4k+FEDfR+$OOq1bG}ayU@4oc z@dZ`hcl}65-M964jW(yq3yO;!XBx?(Jfhdz^{1_Wi^B-WA|Mgvi>TtQCt%J|jw<<3 zs!_zhiNZ?JEfTMAKhR+1;ie^paml>X!xV1#GDFHh(_LDJL?`iAB2}MmS^sh4{P$F# zrMil$9f}4+6~BwAWg)6Z)KBJyF4Q;L!~T-x+SN#ob6welj@xO2r9zsv3X`4ZRpRQE zydqUhMZn+nWR*tuFWwk!1FZU$w=q=i=+5uH!v=ta71OBFruS|CrX}yeAhL`YHDawW z)55}46YLab6F;=8i#*^qQp&s>d*77hNpIo5bS~Ey3J;C*LCUfcG*Iio9n*nXwtr`y z6Me4lljMh4C7k)LLa(^VeB3Dgma}aL0Fq`I>bBZ7SRbmg@862w@Z`wv7aO!A#O+V# zIlw1E`8rbJlF&g;d0~vd4cK9fyOgzk?y~B|7aJ-0+84LHeva32LbQ#7bYUT<0?Bu! z&%S}MFyz7l{EEPZ-!J&+3&Qe0URiawW?fs~G%brS$35A|pYT^IoR4f5jh;U&04d&t z&GvgN%^e#tjh~105UwcvH7H~_R&pU8Ll-B7d(9cU;SO;ODO}N=Cdfkn?Q3SOY6v0ygV{QMyk-)v+NyxT;y`9 z{Cvs9?gw{OB0he&3;uV=+ErwVwg&U;6LpA;Y5@iuR0%Ss5?1L#bTvou+)-bUqd-)*mwAyF55 zzS2~}5aR5&q+j=}A*0}|a(Y?nZia3-O2#s{h&C1@9B3lO?b4N@1q6S`f&NXsfx zT!qRtd7DI{byc#hm=MTp@)C&D=|C#JIRC5@u&WZwDY{V~#JBYCyr3`dRWCh}j5&F` zVmH33c}tfNP>wTEk)qh`M@OBj3(mSg3Y#IiK_I}u82>`vBOR6>(uMn3WQD?Z<{3Yo z3n^s~7g#s4dz1wacl44)glytnr=E7ubT{+Gk5-Q-QlR3NM4Y>&lMlBk7CIb^2WFqs zw820!TdENrC^oIBT9nxno#V0by*LsGZDPjUn_^@uZvItCibRdrIRMcA+uVHOl zAo`{y@O?+V&LRnQzGG=Lnxw4?T>jCyIYt&{pl=Za1LY5Snn*}KHJG> zA(RvU4;D)ye2i>3RXR?S0bQWyWHy>=hbgk|9%eO=07ws+?nFguB(W+FS@Kh7EWDxp zI^UW(^+$8fhhqXoSz!9V`M7Lw^SgfoW)5Y^FbOD!S0%mS?@CX@ABE4bOUCGq!8Y<- z`glMXGOx{D&vm6kJ});Y>su8w_3i4jgga2LW!ar#U^xTC{2#SEkdde!xu5yprEaoo z$pE!OhGM&37s5PfdZX5QJ*C-<1i3Q&ac|>Rs~%p7oOy?#fxFt}rTKlW)WdMoSOS(} zTC_!?p&J*&x86MXC=G*11+9arqVkN0>n+}1#->ns{Q>H>&dT4K--VsMF3NDQ=^N)x z^(*5I$8Dvr$wwdj{DyHKi8aGx7<{@}RQkcTX}nEN?3BWvxAg$8@JV8FMWNXH62Jlx zVZ(>95rkG>S&h4bxeX)BRYcD1gHSPm8c9i{NtXdP!wZuQ``@UJyzmoljO%->&{T; zK3{>fTDh5(Wsa8>}pU$^OCY*mpms-B>gU!w&~xQ@>5i z#ZvB-XI&jh=R4}Od4I-T^8cL{Yc;(4n|aA>3AYiNIE^j!rhPxCIdmVk6SOquvXMNj zLx;ILJTVO}0RRhOJz)nn2nE4-yz|KB@I85)K>|BQ521w8K){Q`=C0Vtgf0Fcp={`W zAm|GfjK!pTkp=Hzou3CBB1x1fR17Ep3qw={495sq>=7i8lESvEpyhLnY>uA?a-u8u z-H#}cq2*MI4Ce|AXP6)YNzm;(rXx>27S}>nBR|LCE`xE}7r9?Cb#T2G%JW<^c)wef z7#L^xiJ}ztCEt>ZgXJ{ATNuXCl)ZzWp4UL7w7#&j!oIPDx4Cc?ZwU^Szxh=Zy*`g( z&kHQE7wh03efX4~{K7cKh0VV5<{?C{;RH5+G27R-yF75u2&x_5VU*%cOF7p9L;d_0 z8KfGdtZ>R=t9y(T?$-j94!leeU;)3C9M#m!Qkq#s7&>5~220Wg$5`tS%n zWK&VCd*k%8^@r%kvee=6mUOT#WbV z!}^dFM@zn*RQ{#(46MpDhaygLso5=H!(L4<7E)|t81FvPE4gqjN!rkC4L^ZiYnuq3 zGGJAMA&bA|ZWJa&4Bhjx(Ic!4+^J+S9_1bF6Sr^H12M^c({p4VkwZR7+s0DwkifLM z|1%DO-(|+%mkJ*Yp%p|06B#o6L%_YXTkrruK)%0*4VI2P>X;O%n(p{vAX$3bnh_2; z1@QfP`qJy#%;%jo$%IwF+`|~+{VA!{oF}<1qL=BI?z{J>1YS{S2qj+)Vf$#9yA`;+*#9CM^3KkxSdDaGP-iHS>aNW98Nr zA@CVCm@4DmhukQbl)616-|nN~$J7QI4eyDy1kz6sd&?VKW5*}mIwJ#@p{;{D>H9@< zS2HzIr3O=B3J&xKLyK^a2$uSr74Upo2{%tkd-R3#Pucj1xN#hDRM`D3-nazsbY_&Aru@PJO6S4K%<^*dzc+3+Hzk7Kx)D8ChOuU`u5 zx+>+ZHT`wWkVIb$MoUG|!N|V4ax4-zTn*8j(!VKxkq#{0DKyI4xp)t;dP1iwS3o=|j7>XBd4 z>+3aq$F+iYTi8b-()Z6U)Iq#456b-5A`>&lysk(2`w5ci>iKHH)mhB`v4q!Mm&Fr) zj5(tLUG}YmC(1W;CSxr^BW!}F|54G_-fs&T{TqW;VBu#`mn-cF_Mv%pffkSK^SUwy zF@*zyuWE_TqeS(+{XQz2t+_0u42`18cikLhRG0aUN4JodD?e8Yb+B!?U9gi&s4QG4 zO++l1XU_xeM|c78WKJUD(ndb#q~e$Sg_>$*Jv?gGv9T1KkhFpOi0 zcgVkGrq?6J9B5Z?(Y#eXtay&4YWUJc9=+chGRq&U! z6pr9Xs^rW!BR&=?(wluOD_aJTT>>|`Rm#=B9tGvju1{eE48$qCO#EPCmaFx6h4raM zn-%xBk5t(2wG+n7~FWeuQjHt`6? zCPL$1HMfGE(G`R?H6|lG@8HzJ2|Y8P2`|7@CK2xBP3+PG?x2Lh)!xZ6+LBUtsHh=9 z(EzYj*xJPC%#}}cNljVP5#?mZr&T#yY{L8o8#K(*(&ir|6ch-rxrS?XoOD z*cm`=tFBx(|9SsVFm#{iL4ie?>ZW7fnQ;$DohJ3SZhaDpmv#%~?S#AR~G4l z^Y_6Ex_*K0m_t~}eKB_+K*D!S!->bhk$8awx%IDSo!`Y2ll`1A7w+`C|LjsYojPKZhqM$OpHU!K~I!N!&(9r~8832u-hE%%M0 zU}K)_a~dsX`RBm;1FMNrSh=skAvU9)*E3$5LCI4CIf}MjHNRQ4=?A{r{E_Dxze6wNIgp1(tgRm#5x9fOt%+| zcG?8*nqUIdrtBT1w(i|p`td*}awpG^W1{(e(n&a^I6mz$< z4D6<#5@j<#xp`OTqKWoq#J_eTBR%UTZoetEZ}vy{t1uLFwlj0oQc5_O;eNW^b((wB zMD-V*dUC!+!`SLEz2+XLAIY&YM4@&RVQE`=`}Tsax*Fju40l|qku$IP^nGV8{dqMv z=*==N#mHX%WY2f9@h`+HUq-?cV$xxgqRL*J%JUE%zJ>joygtom1+I%ZBp!S6y9g;s zA*_2-c5`xDAv>2(lIigf0@4~1ddHS|kJd^7J=stU*-F5CAcZIZFgwBngyi{Iq$sdp z0CO?>Z&%#;JIw|wmLkV(-I5D5r57!SuD-|Fsav9XY|h8F#H~y1(z}7_AIrz&F+Mal zQ=rHWD=TT17HM(#zv3w>a4Pjb_}f~ii6N`OKq5Z3rSveHP4BW~aGFbYMZi6c3ZYvI zP0vfKs04fe+FAuaQH^Hp$RY=nOk||8Upe@!IbEoXOHA?4JoMqyY%K0XQ%J3+gWypt zjuW?b0FCB4S~4$3qhTc_t6`k`C$aW-{DbGE`)Q4;=+S4YEGutMiu4humSsz#J~=ot z{-4~)ibtNP>(|SPkEJwI!HChDv#{DgLX(^iFu;De&$uR~<({35jw1;!dz<`Q`P;48 zZ8hAd@J!=_uyF~mii$DhfA$A#dLM5R9jDX!hs0xPyfctKv+t}|+Mw+KKhqPDPn`(x zmo)WF>!zL_yw@p{jJz*!=yLYdFgevJ++*TV^`@50=Ei?XdD)RT4^#ZlIf3ERPSzu0 zrF6gFsKg!__Hx0W5;qI_It$AsAkZg&-=l-~!U2OUF@a}7ru)=IRDn7 zmxWG>g~M#7sV_fmqIR{t(jxv~gJ8p6vZz9s7=QP1G49&m$m1uJUnoI1erbX{9 z&w7IMawK69^ch!m%QmBe0;&DsY1+FA8yR!#Sb8IwqA@kR`Deb}kr*;N=^O9=P9#(? z3s>Y>u8M96q<_CRYSX{Wu%qD_!R8F?kK;3rRI6{G03OsL=0ED+Bb11+#)4o?2KBrk zibjng2$i#@run%+;W{o^Kq7@n32oIw^w91|cx4P+z_uV0){!Sp>f?r#bbqxs{-}@3 zrhWA`RxVy(b8=jU8GVJ1yCd{b7%2f(72-*I$#T{Wf_tL)KK3yclSpg%khvHL8~Q}( zZXiE(Y2Z{Cg#qbd>kWta<0znn zl6xiP@a|ATH^!Va-hMzgYke2c&=kLSiL9%})O5#|GeWUX`a2EI+5#>0Qg;@5hMENp zz+wG>{P#}1*6_!lRZ!yr#5}7)1YU{zGmt3AOyT_QXDZluB${4XoKvxuDW}8oax0^7 zUDiBBYv)UT7K8HWb6a>Bd`y};w3F(lVv(oKdUU)UYYAYm=jhdsyKfW8CsG7FZ zlrn2$>HiZV=j?A`dupi}4mX;3Tu7%x2sXYDEyU6@pTeX}q4c12bOMdF_8LLm;`(n= zH4m5b>gjm1{X%a$GYI2aFV&R9l0G434NFgt7Mj9!t4NokZ(sDr$NTBxC|aEAYg4@a zpo5=a%Z)y*2Jw5MUvV^CYs+m~(((;%uO-kbp%&KPpmZ@fL2|a}U%SsG27T5ux9qR- zLu%CjASgV54G2da0Y4#_LEG*b@JV-7G|VDJN~c)>YsK$FAAMSlD1SoK?962Q(ECsP2b=5y*)iR#l|{~jf)7nK;6rEYiK`D^1d_T$-d*jo^h>;@%EmP?8BKn_rY zR-IO1JhB$~!CpPxxn)jOb1am>f~T57HlYKz!D;^4(oQx*me2UIqad7qf99NlPX6%4 zSRbOSh5!Rj1Q;+HVZ(sJD<^oUtN%sfd+!O<5!txkFCqIEZF_ri*{XG00$sC)mhe4E z=T6^f9l(oVNtv0SRo+UI0Xp8Zf7#z>bgM`pTFOv zLv)#>6PS;4mcf0r>H_kvkoBc{4)*)0fD%&>Ya=9>D0NXevcw96=Xg|vKaQglxhl?K)@KXU3DKfIjPX9l1~!HIjEZ%-S4kXLVjI` z6afm;+5V{e|K`zKI$@4CnTI*EAjh-naWcKBXLr(4M*Ql=xYq#g8mWBYR|>lS|IhlWVMn|nD^ooxrVGE}Bp+G}qs z$KfV@><;*)bg!C2U}J@0831%@v$QgTxGJpv9%qhj!jCEvrQs3rdS&V_rZ>i1h zX&?Nc3(a+1HZ|1Kj#HTW;2nlrC50X+PbBE-z{B6yh;xTeE^}F_Df1_6pymQQxFbqB zLpd!z2D6!=3evt5vbu5T@ETYEbT31U8xLa+e?m#Sqq2lso%oQc+7*_cWprejh0g_! zrfDBdJf*lNNvrDmSw#m_;UD^lmAR_XF@GVm5O-tB0|FyKnTHrG2BOX~4vi^PHpQMu zitamH(HoEHU!w$#5Y}SJv(F$584 z)(KqQl8uegtT(zN9*LOUHyspXh~3?J&V$?~UF39VNmsk1u_NoOO;^0A!+fKR|EF_| zoBVqZ-2bcb?@M0dJ%8D|qClO}u+%gDrW+X&#koot0bowIg9{-($_KCkVM?!B=aWf| z?#dbbiS&uvzhs7Aagw(>-Ysaevcxu#!NBbsv|}jE;kNu)7gF2M3;V5$@-5LM4W&)L zDg2%{H=8WiJ1Q9nN=~Tkk$x==cAY{R}8P6;Rw+~`iUcR{#7QEx~4?C^ypw)6nbY=kz+vvqs( zRQwEQZj;fa!}w^hm{;ae@Lc}}z?{s8NM6Xx@PSK0>__U8iO^cKudE3hN0j8O6-#g9 zZMN&bzxaS z{W-8$_*^~g`6Nwur~w*#rLCvOZ4r*$jgYI*ky$P%+q+eD(OBa3c&$t5FExUwKjg0d zTpjbOFNleP;`N9QTq3kuF}tvTIWUIkuX5YsZ5uAn4&~?vzJi3K*dtV9c;Kl20S3N7oUfqzZ!2wh=BK1+StHsS{D9#trL76wkst z|5ck$?cMsvFmRTvj_T62_FMP+X44_Xdd!(m+E-ly#-Z1kwk<$^d|M#@9PR+JikKQ- z9d}s&KCBcENV=;_4GmP3egoWQ-WA0sc^m9Jp=Wgp04!{RfXSy6!8&f@0l64*xU zRp)X_^3jsW@a&6NuGL#1t&x|uKFnn0EqF&n>3lgIoCyBOeK-<> z9-;moS$)zw5nNehq?TGfFu?6!GX^fFvVIaQ@<)4hG=r2dZ!+dq$%}`3Z4#3uhkCUF zk;k9CvDV~=LelzSmQs(Jg1a~@m7}Bpb2VuHL!LB_ir)&91tEZ2=d^2<=t1;#v?OA7 z&91wdeoIF?E?7vN`WS4tF)m4!ccDmQtP%{t{DD_z`YTnZzZ6)O{q{7qo?WI9$Ne@p zssktMy4WUVywAwuFF8+MQ0ihI{-k%)m)8I#0TfY#2Ia>tyqEN#smv?q?@jN&FZ*-` za-WpIX;}9zJXCms1wcSfoZWM2D;QVfo`o;ORX}`;r>m)nID6k+w6{avbNc?-&q_kus92QZ&xmb~WmQ@Lr>2 z)#{U<1ajCClP;A%R9dE>umXWevY`Kk%pTJnU@&8Z3xjS{NPEKYh=AK*n@wcM^5^+| zspzz066|Gf7Y#t617wQ5a#K)2Btka3v-zJ&e(q8D=nYrcn%QBh=dXDM47@*NT>_{# zm?9x}=EhHlK1W|W>#EX`ol3zTiul*t@CDQ^>r@|1zTebtl)=6Bkz3!@(Q6eFzhVv5 znnYER#4%YN-XFhD8Ioy#vYx#C@qmcx`LR9qAbPNl0-IGHwsWW;QL5YKU&5Y~*B&~_ zUXiooTsV-_=}CPp^&pTDPT$LXZYXfvOIZ0kCkM{l#|b#lH$h7#fnnFaTChhkV(RJmsetV`1S30= zD#Gm?##F67NKJqDcSP46$J$6|WuRJmM%a~V)FKve`^p4^4K~;6ZHmx`qO!>fRgvf*5_9BBj)9M^Z z1e55kBLt-YOWr*KHcSWBcTM8aal%h^ zHjjY}gNZHJ$BTkW0Y`j9n|C24*Z=XH{!dN5ect)9;eD6yx*sS8K-)W~rN>^o z{#7Qb9fRY$=ty~oj2l{@0`9coqyCF$$0T|Gp4bDz>Yh4Zact+vZ+XP0%o;(;ViYAW`(AhPCr^? z4zX5}x+fz1?7|HYIKaJULxnlb|!J22}T_F z9H^;7ML=F#e z4s-Wwk@c8vI#puvn@VskH_;5HyOMg;ulAJWzP$c~=@6fck9D|*Z429J2@TpH{FMXU zp-H=O2W18yaA(b$?x|@MKU_5J7r6H*wrMX8W9QP<=e5V@ANdiU$zIB?=SS|~AE3NB z!PbpDcvA-6z8}fI@zDSKFQM_&+doGSN?nu(R)#mD0cX>ccdT&}c*f7LrhJiGt-2u! zu#o4p=Pi;X5-0V-o`eKy*ZZAZa(q42n5^dU!C!<1@yKqCwobmGFEr{pUumPi4NLIR z;UA->f(JY3xlhdan1^$StOXbS58_pyH@3yJ`hF;G&euaRNb*GDog~THQxp) zF3OA+4_%O2>_&4M0h66E*OG_pabNiFm^LZwPGtiF+&`RdOmW=M?V2~$X7;IkJZX=q zE4#|}z|l^e5XKsO12TQ#y@W#!Kw*h*kgeVvLcDrO(gOM3m%cNZu$z0{#?t>CkP3Ks zS(%-?auC0~U?vCF%PF8X;^qamx|aobbt330?lwNT#R5v4>K#+~Ng14Coz1M~%6PUG~IfxNp$y2~z=)di^D}m)hJTA){8=05()uV>#??GjCVIlpe za&zQ;;Me%n)5xnWeQht5mz$}1u*m9q7{sV;3B{sP-4K4N<>23E0p> zZ$V!gzg|7>f_C}hMnzyPjO09bge^3Nw^w>kx=r)r-IodVKi7fF`6wC6hZ3#Zast@3 zMQRAaL|&m4wnt&`|LPX5sIEM*uKV%3b(o&cgvfowRARH}gzw%|E#GanO&(S}!Oc$Bq7{u`rN5@z6FUD>{) z>)|Wfq?fZKtflV3t%vyQ2G8=QEPS*lKUq7sm!!oi9`QsHdQ}qwwsbTYOn2jsQ%{I2f1H zMJlNp=aR_GF)X#E z(FCi13Jn~5QPj2g5sH*l_@65c%rTw9L4K$gS2`+S1!8`|bwu?I6-O2JGsvaiLllMS z)~);xSNQP<1i(DP`jpY^OqVaubL~Ou-J)i)=i_N(fv4E(pBm+S@cFdTu!7NPObdEp z56ba&A1BhS)bk9H7&G>z z*x3=Dh>B${vgu&IZ;jH-j$Q3Vet|y4$9Xo=W8WoH>UgncWR<`Ca#Tyf*Z$WptgJm2 z(p`e_4|(=oTt;~Nll{=&+vD*cqPfX2+b)V~H?3St8^M4sFN8 zSlx(?#b%@4HM)dxX>U$D^SQ|&@5*tdKGT1N`4-z68>E&+a0=_S)T;W;>1Ercc^2X4kq^Vj8n*rIR;^$Dfct=DE z8A*u8UQ=>^dWC;>_IHHPtPe}DM*pnU@Ggiwb=N=z?-Zy8U*RIIX zi6$RZ|Ju?+W32ShYF|XOvDvwv0%%i`IyJh z@bz1u|dn!-XWN2CQ&S&`l62fq@+(3^#`-Tf<+Z9~ERY?( z%`x|P;N>{>>mC-x)Aj)OjuMY84GjY!{RUzl5FKTd7Mq)4+F*-51Y>@c-DV{2^1T{~ zrnczUUOin4V}nE=3VIa28)!b_!hp6{T0A-$0|M7_Ok}dck-~9yBiG+Q;kaKmsz4pl zvE$$*S`nnyU{ss)UWo!`%1g9@F<4q-Vjls&vX#9jo^Rl+rG6$dW#<{Ws(h6#NmCj?w!kj2OY>Zt#S(g;iRGa_XK;J)|S4OVX~74i9?{U-WfBmDKis# zDcQ37oU=`)X>1?Qagfdb4nr?WUPzNp&(ysa+3|fY64uL-`6_%tG`CT|S9vYSNclJV zJx-fCc2TVIztn@$V=kd7sk6eIatzCx{#NC`2Tv~WkDZw!e7Vk6syen;4=A6}DSRBa zswS5Rb3EG7kDa6-)7_-qv!lyu8mFtl8{n>t(dR`_6N+_Xymu*n&JlLA+)o;hC$ra& zEL9NEyd&N~D9`R1jV;kmj^Ht|x$zrEYE#@OxF_&csYysjFY)37ukA4ZyoWiNg{?bo>sw4SYT-jz64_6}*kAlQ zL;oKT(K7N+$<_Ir{;Pub_U!!B3NoIruIp<_B<15!x8(!iGye5wA5w{L2DRXFR4gRX zh3u-tRn2iL@);#^e$RY*YNGIa{M7zrt{XPx^g(iM$Rp5*q;1SqtW)j}_}mjj+^PE6 z`&E#PUN`krhqC(8f(D}rrugCoqG^C(wlEPqfcuB-Zw}1qtkkGe-!yA{ju*V1!ohp_|{EZAzHeer3IygY`^# zTdq_D@uI^F&SYOsv)N~q0&dsqcUTi+b#c+vBDK`u!3GtB6K4)@CGM8#(-w3*H^`>o zLbAq$gtz*FXg(->!BD%={=zo0hM1e(`3Ix4*Ed3c4zVc7nhFYh`Pm?=eSSOB`ct2M z%(Eqh--T!cy%6jt7>pJAne3m>r^}1G)Q&Vl+6bX106xG;gtXmki0(1a=E zE|%u$i|sdk*f!h*(Hz1w?y4!vK?6U<|FBFez&vh}?&ceopX2O=TtL?KneA4Vj!ILo z$hXS~enhlvtrRH@F5vlrjWJ*e*8zj|^c;EYWuu15gQ}*ap1#Xd5BMGet|?3GfVKf| zqBu^4(Goj2zn*Jr4{o$ReJ075%Otj?kwD+__lwClr1pC7HgvUvB30uG{B{Hb#KBY~ z`Jdkn5WBCzP6Jb;lsd9c_$`pMez2wIU~wCnGq{+@_k1`<+xCVND@7oHc=SeTr4Ng_ z1nwcVK%t?ieF0hTEDK>LTM~t*Qrv0Q%J`2E;r0bIDpYlkK6AICWXWY{V zJk=}b+qwL-`5J=6zwruDCPt4aTCuR-M5xC`>+nNnD%g(0cpiZIQcib@hy+VQJ=lAN z*%0NtM=Ft~rp~U`;EDRe&Yl884(nahbiq8_D6M0OMz6C^s-c1K1>AfDix3ge(JEhd z3Z)5U?W{sMm_+-5cF|PV93JNZoC#jXf^q0#>y<1S>K{Z;;G7TTNZ(>DHiIk>{;i<{ z2qlQ@eUr&4BIooQ@zKg1|1HZ+1r#CYxv3e(-^{1xC~e3*oZS2;Fd3JZPZMFltR3Ob z?sA8AM*MS~P4)YvawUhFR2Ompu~g21(kKZ0t$>ItYmMT`U&0Q$1`~0VL-%xR|Bbog z75`#qsUYdsq_Lv?n zxj?lr>Un2X@$#zH(tr|C5K29ZDY)oU4kZy*ylf+LRJf)oB%Y7pa_tHSsv1Y2~ ziwmDL1|r@yWYNYuvz_m~D-B+hQ*y-84-x2$6q;8^#`&%7CihDZKAAiI@n^>=H&jeuf4_lKLIqaTnH%f;&$M+rU zzkf==jHVaaJwav6UnjzY^fry2Rg>=~ed6XtlNRIKe_Or^e&}I9Ee#jbJrCt<+m__+<@A&%?hT}nh0eKS^Qhipi(d-7O3nTX} zsxnl{`5weX31U{*4wn%A(C@9`IsNpfy;e?`mGLK*Gp^)(vJPz45Q$? z5f&w$UD(8t(*%Kl!gcuQVj?kX!PNO6RDy6Yli!zFw&jyJUfSn3n)`3c(j=h4l?Kv&h|8<_L8l<=D2(*K*zY+`A{fTfX`KakR zh2praFF}RJWkhFbMRfxn=jJt!oRhu45KnwKhs&WjR+Pdn2fMjq$sN*OrS>!ZCis4Y zTg)aE`RFF=nrta+_zwZv&BySCr_l6!@kfnMTLS-y`3&`km{5M#e`-#c4>}xT4s2Sm zPR6BPO1-NhO?Nb3oLg{XO|7ipbbFFyhQqzcZMl(m<$>UyI?YG-zzIx){0#T$j*xT+ zS^WsBg3-GrUig_E61{GE0SJ~7?D>DvS~D}1vm~40C_;WEjL!F3OHMbbKT2Jw{y3@U zE8wIdxdM~<@sL5wU^0xg_Jl7H9}58yQpI-IhxOQHgzVU4yUq98#pl@T^m(&r-QRp6 z`p2A#A`xU~K_z1yhF)fAMEBgP*#aANm>-90HNdnhS7~I8FrfflP|Q9%hKiPips@Y~ z3eS~a@@apRO>j$EBmLJnC4$D}lE`GYz&@^0ze8k9N0SX3Q`%Emh|E_xInKAKZ9^X4 z9qQ!*&Peg+Tw#?>VqVgUer|Ipy1pRs`Vmm&P%ixrpWN!h1rbm1cIcF2xLZn<($?4e zrZ~+zY-&CLAh!c!&DtoLHyfIVVrLYeXR9}!vBJ@9%Nr7U_!a4EGleC_T|0YALy%(6junaO+)$gH-a7C zi`_hKLhD225czU^A>j(KLf}{EilX#nhSNJsyY{N;6+c$18VAcAjy-&x4zs`^?Y0Cf zD`BtcAj5D%Goc6qaEtAujS_;>BzK_5b|<>ulZBUYF!S}~CF<8eaN~aBZdd9Baf=9p z2Mi$5sQXF;u;Ifo^oe3TL-U0ctES>GQ^nfOdQ3d7++L-L@?Jh^XB2Y4J))$$L9Xh& zA7gt(>={f@Ugrj>r7e zlZz*!7O*iO@$viUY@how{*;e6H80;>4~r)X5ZDKx2c;V&BdPoJS>ixSlGE=K3-!{k zhx;RTf$TWjwdm^QE%NG~Aprd|V<D`Ba5qW%wE3tOd;Kg zf^1a&RPXmU&OglD_`}~6DhiQ;_pBxhOqoI4@C}0MFg_I-_ZZeHqlxwqxGj~YY6{6J zx8~{#KNbG=8NJs}4oTT~II8)vTe)C+@fpgf*B(8xt#KYAK79+3=aI4kC}P5;x*Z{z zh=;45N};pQ*iG$atp>R&$%ye86g_82!1i7+)qsPxm_X||Dkg;!xi$NVhqg>g z!*?B(_PGF4otZlqS?U@6KCH2>zjc)$(36v_<2XrZMQhL%39&1F=g=^irbN7cMSY=O z<|Kj5>1QAB7GW)NSv`V$rkwoy`MXUEyBgC%_x78NR;tRV=aE0XiGr@M_87UZdWjV> zndJobd)4KZtC7+-DYhS<;J5Rf)Q$}|lMI%nV^dK8{t||~Gm*g((!%M7K?rnXTd^(u zjfuVMty=l9oK}!d@Vd{3`E?+5u<9PX{X6iHk z@f_Y~ExyYS<6Ewt3V(&>YSmJaQKXebiZxh>OgmVc?eN|INpu`aZC4>KvJ87@=p%sR zl{_vC!eMYc8k(#AOy0Z7hDUa@Z)5j)0FW+ToBWA|D;?6Q@Hs-D z^(LtHH{1iuKQ(O7`!%E|kQ3yc#RbEJPgTsPv`kBO-XrAAHg^QoWetmk%6i4W5Y&r&bom(^z4C z!{HP)69-%OMAj{x%bV9qr?peMR^&#NkQ4Y_{lk7TN#z#rNV>@(g!ysL_EhEFk9a9M3nth96{CLzuTqb4d63&(c&$Jd5vQ%p&Qe2x-0I z+MZ^{cZKst{poHH?WM-?Jz8Q7cu);8B3>Q`VN>tAJ~`<5c*G>MWAfO#usQg6#*06^ zMRK3=_NR&SQvK@q>66dD^jxagvM0@iyE55m8++~(m%N--Z+|hex^zJW zX_OZUhr+oEwoq%3&8)~1gacI{AG3KW3F_B)g zY2g!djO<+H0rf{UUks^7PLg6atUWPo`;Af`uL`7w0Ge}hJp;-zv~3yUlcm&?x?=9B zxgTCdB8R>5xi+BF5>8XJE#N0pf?*Ta-;rJ?Hkg>5BZ% zl;vTzYRxAd3LEAB2WRiW{?Q=Lg3)0)s$!jSK?r1yOO`h05a%>jtyf)d>rN}E&FqNj z5N}jEwIZrBQ52l(7wr;V!)YYxD6BYOOWb-AXTQ?I;0$UxK+ktLjCm4C`gqefm~iDu zT1{$2nADi+_>|(aQT3Lzz{(WCo_{ko%+q!xA!n{Y&DW4#O_Hg~M~1N?N4k&x9c>$c z<$yW}9p_5EL;kIJBmDh3zX>6;40j@a-wZF*+o<2fTVp)w9$?k8D2C98ag&DWbC3s6 zrAW^u8m1wf&{-!LwVqcb&^mvfS50$DOUlIb4^7($i%^H~HyZpm^N01!o{pGYS6MgVwigCn7TP3FQ zk1nbc%FA`Ew5T{*gXd>JO+n9kUnuD*pF891ZPvuKIPI!NY>(8hI!&lmLxOM*eT}>z z!_{Tp7jaIn!z*Mpruy~?r<_@y2yEKq_3}+X#laC2kq#2T_xLHH@fIKQyx&OXX%JNd zzS!Q|&c7Q2C)pkJxCUZ>oY+ts#K7P)c4mhsb)uOKFo(lnw-2wU#ZBnhSUK8VE%`?q9f= zCS%$(ZI^jv4V=&?CW88E(MeZY+RC4;W%7Yr_iTIL#h?Bohws!3>5dQj-b^k#W|#K) znc{*bN^6MsF{focCC<$ADEn0)0!>-D4LcN;EA4G{*ixRSqc>@4zbxh_*XZ-8lsTms z7g@r@3-CxYr0u-)@Fj;7;sy%Vh*qs-$b7K+5Tj6-aWw1q3EBTO*78SoPx@8+bI7uC zeD$od!Hh2I5G19C&qGf$#l9wdiu&&Mz+T_Q`(T07>CLLP9dq_ATjgu(0VE%S;K?6T z5a{^PBqvIbAjVTX0>RpGBFkT$UIPc=Q+N6*ypADX#QU{waUHb z_xFHp(~y5jW^(lwY+YIYhzl0bOq)KjgGa|$AmJ(NYxrNZHs`Hp*#Fv%)XJVDiYUW$@8ZyvMNhzclbFjYYyY41+u2449=9Sits zn%xqN*OZTL!eGz8q@aN}s6dQTM!Uy=!K|fdJ-RJm_cBIBGgYfbBK(*eC9V3P307kW z>xzs9E~5eDH=ab@NmSW?IfmY=`WC7>M7rOjjzP8Ig&P7JC_3sz$)Q6Yv z5_a2i(8@wqol>`K9o1|&AWt+J+vqOgY~xNj{RV0M4JZb|1*(zuhjTG*y<;GMTH$iu`OMi}{ z=Y|eyi-lp_q?NwMp}1-Q0#!t55KgdBfdDkHT7|xfrEPocRF24uI#cVu*Vh6|r4$DLHHRM}?}+Y7jVY>lod4}0()FsUz&ze}@ljwlu5Ti{S9 z=a8K9Df7L!G=7}Zj9m5q78W9m$!Tlv{mnfaOVkTk$oXAmAlQ*mhgv4E0M1Ot7aAC=?Q<&snnxgnO&9=~Fw^ ziV!mT9hLEJLG|HR5%%~82e>0RnSZ*_Qi7admNY_ddVG@4z1I9!IyT6Ul~9r1XWzHQ z0Gt9s7jX4L#`Lz<3bll`3(Zf-b z&7AkfAWx!_*7D2oI*_Q#ZkByOjo@s)Qk4h9z7C zTHB)Cx7^+$Psd?!Nu92^({)y*W2cH%8y`aIZpfc$w{Z%ak8+kJBD1xN}6 z9uQoa^Pbrz!FaJgYJG@Lfh7!&P6(8v*fyTdf^M59_JEul>+ua?Ed1mPo!WH zfeW!)&p198VBer8kd3XCGgmlcQdy8-8?aqPl27BoddcTRBj28Lx#(6@_j@G|$$3^- zfMNTgfMB@EZKXz5sVb=)t(aHkLjMqxqCrXHIlkqxD&_svkG_nPYsp5p7xz>B`!Or@ ze0IeYzCscrC4Ax(Vf6TRg6X$&7=K;Tjl#IY3qlFhm(f$w3OL}_aB8Ja`=ek*0$3B- zKy10RWUPzAXmegYTt)93_0Som!098Hg8i#n-agp37Bf=b_ZVlIBixtQ15Lk3ruyYx zn;$H*gOe-oEBtf}P$sZs1n9Z^TCaJqcm5-QzhI5k=O;5A;JyMzFD@WKesJ&MZb|GM zsI{ttpkUhX-YHGAakDC-{W(FrpsrhDIwmBMzVMg|UfM;*1IlC^tEh_>e@7pA-r|8cS5->_$FU0;!K><@@hU2;Z{s3Ji&*-s?%MK5=ns=)F;YUG$jXLQ+vzO!AWxi)01} zk2mC->`!P&$SrQEDS7QUaoaFpNLkhl*+}N~u#dnO&Y5BwqhlR@9w2A0o$1rifQTR$ zvpe=Um&yMmf)PnAy>}Q0!Vz?Y8R)2EetyqehuP(`pNf z@ps-h*>&eQ+wC^Y9E$MS;45XLYLZyJ*AB&)G#3@u+u$=!c;Q$!UGGleIe-^NlvPe!c(I(&%gSMl~l1@T(EU ztgmQ|W$>)}_F4UZ<^C7kOWzcRzbXg9N&{cD+8hhPDqXLLMlJokK2ZtogQ9u|d+cLe zh+;)PTL|GEm;V0UBihf^krOO&28xzjoB2-0=-We6HYn?@$fkxtgLK@LX(dLyIHz93J3ij| zg50EaoV^eJ&K3$Bk2ckYHZ z>#ntU2*!6?Dg2NG2hfA-SqacL&+%!Z6D90{IqlR>oUy(x2m=zI*0WNahsqnT!48rh z<7tlJ`xD8PN2=!&s5aTEJ4L+duBEC*bXWtj{0FCIi^1;_r(isFW$ue=v~GV!a!AYZpEIWxG)W6v>Q zUMDWQvU=C2PRv?Wmi2+R$;Q-2u&{hx0h+iExt)GawC9|rQ^kXs$492id9}|z098P$ zzob30%d@7IT#rUZvwfDmIRwuoLnFeNEj)|M*l(O7C$0RX&}`FHOj+~f8MgX_GfUl- zd8A|z306q%XuRJ9t#9)#T1jk!>@0tMjO4oC$her$%3*F>Cow?<+732m~QdUlmp8014Y!%_2f7np}A+J*oSv;TVdpW{GS4K;=!5t zJxbDI#PRB7<3?6p+v2{f578@XL|*m5-a%|s79DW*!foLRw`mRA7`k(q?)oCCS7ymV z@u4+KEij`!<3@E3Z`kUHsgWo%IZhGZv7O3W_G&oMayAH?63L=jbPG zH~y6>2PhB974a;GUAW#*r^iK&2pBx>;q4kTLE#!h+RWXFTN$#2^3~>Gz)1ADYi^Qn z=)X>7(BN=FHSiC%$%o~EAxU^T7nR(Uf0uAocX;tdkpG%twn!R7{<#-KMkd$y?2b;) z@PfQbsv`Q0vY{>Af+h3}9ze>!Fi7QhT~5cIITKuhq3N(r7zGs3er%bV?+~;W-ja<0 zT$UDM@7#gl0KKxiam^+tAS=5nd3Svg3}SdpAnFq z)r~h@x^iUi`8;o>Mn>ODD=wxhJO$XJpiRI0ght)6UykXWI6dBdbqvg6O)-!ZyChwH z+cv7ewlD(yLI_ZC+qSbBo3WC)3q!jma^uWepf>;x z`(JBRYb4q^x07`1{{?MzCFj#s6W5K&GF)wuS5t&awiK;h%!5nS6dewr6yh2qVUeY) zz_g2ee`nm#Ws~S|_8$4->~Y_-e;AEL*(D|`32UB>>v$vYaoCLxO26aMo%hhY*w>&I zl`JHN=(FRhhuJ0R6c*GbpL-=OIHWQ}!Kbb2!qzr8d1<)nAG0={X(GkBrx;$L1zY>!G8+1S`{N05<5*4@{Ddxrt5c{M>HSh&ecIE;Ga4&;0%-;krU%hMF- zw#2XyKxd0l`Y($uIcW-3A&$^ei+8`Ck-5+6iZbJ=m zhk#@wXvA4JGnAch`PFhm_^6G+XQsKc0I$P4ohSkT09t>%KtBO?T3-0ADV6Z9iByTg zBWib0G6sIS(!b|Y8nh;0iq!^AGg(LGHi3{oARRjVTThwtI!b24yDsv@WB zgcZdmqd)co*Z>Nh&nmReAvIpb!W=x^ELQRO9=%#LGZ93axZg7#&eZ8K?d4BDV)K4MTQ=M+5Nn3!{k0tVbe%yO77%f zC(K_dvEDx{|9F%lFo8$@>xjhjWNput@=S|o$H0G$A4`~bO#;OSh}7PnNERkU#kw}++7Q{6mH#!> z?9G43W)Kc z{|RKt1=J}XMbQpdL zKkk0H#KMr{b^S7`$SA|^D5J|#A#-=Gj-|yZEYKhQxhXtadI^@J_(mQ5FZP$3)q-as zAZGx$8x}GF>dzz4L_49?C@Lmrx=L#)XV|`@#G2_kLIbPlG|{6zj^tz8es{iXZzV*Z zKb|iCO>VL~R2?&V1--98Pv7EwDMJ%{TJa(C=J+f;Wy$)wf(~WO+E=F4k|WnO4%=S< z6sQy>tnF0=`v$+hAg+H>pQ3SmQa=}b2FguCovlvKHfD;eCn+7@k!49Mj@$63`7Y-^ zQh%lQAXKYLF23;E&ms52wHyUmbFR-a>|)d>y@d@cNMH#s4V=%QLp7B<@RO1C%}7<% zZ*3F3{nz{+T%=PSx#L^oLIw4BcnF%QM#39nqFI91CJ9*Jm7m{l~}2r@8D=u*{!K7zv|RN(V1*Vi}Vh+R%3kwqha7s|%* zc6RhYl`6UulvjNKZaHeV{EKM+=1K7u$l~n1!+OWJ!*5c%&!FUY5Fi>UBmk>D0gq*C zx4vCxYL(RxeNPpopB>^Wyb%eROp)KuX&mdn+7W5_jj)T%$cx^Z&5M_Xo62AoMu&p4 zKapki@VYD;h;EnNZ;gntT-5h=9w#T88_TE`Q1CN~pY>?^)=sery5LSk==^M8mA$@l zYsFe`)4SkI!z(PSJSS2m!q9b}~kOXQ)1U-8q|AWtnJr-$V}+!CE0m zsI6k|^+IF_k~L#_Uc}Z$eKVx&wU9qJo@_#{hF(dP22Cx+60>5~viffDyL9$hpX3es z>a`*PN(+i_nI0|(T2tuj@j2!R9PnIq30T9c&&KsTh!H;bkKKZ)G`zu$5xXt7r3^N6+ zf*j-WoGL_FUswxuy|siX-lPgGmW6E~RYv^+v{fR2={xgQ-@OzR_s?XZFYnn;Vcuiy ztx(ffI%13Q$g=9;6GtS7qQhd0@x&Y&<(&sU)l50_8xabdo_emZI3qz0u1$e*PKcZO zTCg2c;nbl1PF;7`xfTdR4V&;d8JO11A6-l87#lTSz5Ot-b4a9T&iB;j@)(gS47Z`$ zoA;r<5z!U=lKXepg}VTk?n2(`LJ-!M^$8EMaNBFNde#8Wq#oVSlQJdtIL}qdwDXZ>}9>31e_vFoNaNl4FEjL^tV?#3Hpo$17wgV-Ndl zen7slNl433{$?vqzVszEeDFd>+LP!JXhD3Pmh_{4X+Gii{#~>+5(9IAqs`LO>AJ#k zu-hllejU%7!kmSrtv;_HBjl$$dRk?FMn_00-~$Dw>by5H@N*7Fm~jP48%lzzbNG0` zZb$i}o>cx7-7_hCD$TwHt6xRX3JJ%S3rZgyP5FWi`}>ny$Mr6pb%s>Wv3P|IL@S&6 zrMqIP(=Zy+5`3mF$v_X z0EE$@Sz+iKwK{Z`;~1l72XV#2x*r{@?%a$-TS&nf%HH&5-DPb80>Tx)Ma6#+7`4pJpYnhoiVg7r}bW9 zZ0Zl+C3_kHwz`~b(IC1CDR4N3u>6Wo*5FfEffivpGAse&t9Y^ z=wn69u~EUdnF9gXDkx>jOiy&6GaX5F_GIYRE`LjiHlha>gDi`^%zC$Xs!gg?|8MIo z+e(iA4uklMz36AewsGz5=tdNql-Up(EC;Jfs=?0Xu2$Y%$eveCRWUQ*1@Bc)2gwUK zVyK>O(2qKLsKE&j;Nw&D3^CjgBTq5MFkmmpXJYr81f)|=MxBz_;G+}%ln+fVHF*2vvIqV`Ab_ZVNz>|8bV!6M=KRQMvXoa|LQ}Jw|6KUB<#vh?@dC zh>aC5ZL!4$5j1T$iUFgyFQdLFixXX5s2V@JEYuTYFU&8FLzm7yBf_HzbR|=)X+*m& z;{=<|@-K>qh!m*>_JTO9o_YNHEF(a4(F#<})YKn|Yk2F_*m}KtX_J~)^FxYJ#6%Rt zAF0pajsfG!L9u(Djc&4k&zom~2W;DY^ZD}S^I|YN%gdcs9+o(48AYi9Iwr^k7;sCf7HSD*lFD8W<@o(NjQ|0F_2<3} zJ|+)DI-|wQ89bDUN!ZTaFm)=D!e4n#lq79;6tY0%)UgnPC(x-|4K&Pr!Du|-uVKUV z+3LxN^q&V_2cco2Fi4g(QY?Z_vAiY3{b5^^*C7(GFHD46~Z}l7%K@-RI)G^2rdEui7PAdLSRE!1Q1BHRZ)C-<-i^M zxfOzNcD zHBNGED-iMo`i`ca& z2bP7LU}yX3IgVS+43dJOUohfpbN5KF@C5A+ri_Mq6T#2)2YziF{X?d8h9f%LNL!=2 zW2*gjym>TpIC5seYRos=hjP6PliS8gLd=<)KWT&Y)~si_e$ZH`8+!P=Gzl^PhB%%M z4Zz0#79DK#jbi3Ryd*y5Gn%AoB$udos@#gseudtzOI+Bh?^Pn+=D5RKRVtL$MK zll=ru4kmM<$9KF#^7UL*utZX9ko{T^)G#h0e}BiYLjeNVS-^%hhFIeGBsXbX#qo7- z>NA8%*_jm8_k?>2dt6ONbosPlPtn$Djj4fydkku{knjVUmt47D!4D?Mmu9KBY&o;y zxyvJYI?I0_mYm+YzujBp0%jdo?(o2Wt7n~s%+AhF#oiSg9#m^w)wZotzSTK87YBvH zb9-H;G;qLILP^u1be*k*z~I~<{5PNWeK4T)5bR$!c4S02D&!et8IbvpFG1G2fYmYX ztV{INDQOk|DZ*wZMc+Vuem+Cy``w-0c^(+n4;zN&ZgP>+5Ik+4TWy)09y&9$BlbED0WGUCDbQL_uH(%ZJ4OS)7c){` z(5)_S!^dt_&EvTt7zi&zRF8`sa6<(wjGdJ04k2!M3XYFy*jzgsnEwQ(bvJyS3_6Ob zkj$=3L3H>N=4=Dauh3fy15g_W>W1WX*ad%goU1p&ypUF|mG z!%I-1i?H39ld$~t}ioyWh0!{M4GkW#apEKt+8H{Olh9;ifH zxJ4)N+c9BvPO1`OPKIKO>dR*S>26-qp_0jl@w3D4b6jI)p@zTQO`P`J-DZbd!Cd+l zXMKoCxziX@S>IHek*&yKtc8hD{9w^cXt2=425KtFrfg%IJ#j7@02In_lL*^}O}5DD z3i2biFHGf5bCN(yT{8t`74LkkW&^oborvr@l-T&LS}V z^Qg4|*fRf3A!%hkA^Y}o#!gWilqsgGQpZ3G12!hLuSrI3gULAQxr-Qiy@AC763V@X zM`m>Iq`kI|fVV_3l9$MD5vKU}>mnrs+L8VcdW2wB{3wI?# zKI@}AjycB1Ig8PrPn?v4Gs+|1h;2EX(7R+%O{_$$(Yd*vnuDJ6Y)~XNh0gv~Az80|pC<)|>bBgIlqSC!y}fN`-*A9}2$#0u z=&;E)UXuSF!}1i~!{h3Ef8ehsTsw}Npj@-Q4SBd%Z2{)^>53kit^O;NpNqE2VS9wq z$CsQ*u6bujY)Z~{ywmQPJOD+pLXUO4y*iWpeTa^#V@Y?J95-lf07-3*2lNl?+&@(y z05TkQjeh==uB$4RZV>$;ED{vwcHNk0lNKOLNC*1vd++ey9dk1j+t)2C=-5^64ii1m zszXOyH6>!sM{sheguVpAJDLE`^rm%JkOrnsq(`MQ-m0~u!$;v?5vtzac1h*Rzu=Gu z@aSN?o}vwS*zKRIWvpJHcIH?R4VC828p7+f+|u)6#|ob%6q%I0oi;ja#E*I^H*oNr z!sVuWWa40_YWBQToh56zX>^C+M7qSE#F{zjGZC54mXYz2aMt-jeyPW0kJwI3z&y(2 zV|e{R>bOHZ>zg4PErv)DUr!%gG%87R*>AA!5$ z=!Aemx=(k9V?WL|?g|t=wtH)dPH2(c$)USzGneUm~NPG=AX2MR`J*JH; z$GOFb!Y%mW`t^TF>pGmGq5w-ip?mhjX&p{-;1Et8EX`fv>wDHIqu-q3N1x+>V2Z&= z)ECoLT-rtTG=sU1E~fJx;#mLa(GF&TO^q5JJ)WC{2cr;K9wG7!fR|Z(APzPb38sd= zrCh}=R*}n1ky<P2@ zbi$e){RV8`L8*OdfdzO<#RU`POA%*6UNg&2aD%{RAp6oTaZhXptTy&{;K}{OOSM=x zxdvgjKz-}w5&<65e*KY@@a_-Jf$haYG#*DN!>uE(W2b+Vv|J!GpppD~>GcQam_d2oUG8 zy8?~G1s{z$Z-k$PNCL-SBO}nf(}BU|=BAyXE@WgIS?49SSqk3>PFzy%-yM7J$l*KVVr;@1LO5N3MhV~*~O3NxPU2AC`gFA**(mVh2v@`GBKBJ&ShcC zy?RD&`A4`L^ZhBI>QBtY-*&82LI=0dJYm?{!|gyZ9fK2o;x_&ye6G{oh#?Y{Yy6sM zt^sjlWMWMF{^G$YKC!Eqve?B1(sitegzFg z*Bp@A=rg?}rpmJJL@=^l!vdu;=l)M+8G9cH>99)8q1Ni>fIr@K=4+}iiF?* zMwWzzqsnLL&ge}7U47<+YvZrIXcxmh1VJP zC*;}o)UT9e7nkUIN||Y9##vMI4CwkHe`{5-FYar!4hNS!{{j7(n2nc27yfv9BXP1M z3)=QeWLHy_P6?vejIP7af*YsWB?vNR#Zk)R;74FT`R)xM`I9HCss5SLDZ!bpwo4)T z^pn^0qZwJPTjexgJ>5X-4#*JAuh#4SYhEcY$R6X@Yqg%6!(NpHu(5ydVqBRZ^$>iv zspNDXY(6vybIjVWsmXXzX?ZN_dLN%|TF9Tw>mJd7AxsVWX_!(3r7MH!9~>>#hu6i9 ztz~$j6(bC=hey-g(!?Y-(NqhERy*ka4$mexAyUV&$ z57cJOvD%bKWJhQ`6g>5tBp=^_5R10kuC2pKF-$FzdaVe0-14Fd(fHZ(2A3zEw1_|e z=A{A}xE(ySF%L7u*^~RV6Wrayj6n`|US~0MK!AP%;y(xw3ZSX)s=f3qcBZ7$p`@Y`$!!bgO4T@t&g%2V z+S<~jHl}{fcP=Efy2cTQ5b!C#6vn3BE@I@Dq+?1;O`_en3AaB_tC+&OdAh_8Xs#Bg z>%iaAnJ$<9&?QO74ln3abU4QDZrW?HrHy}ta5E>g`I{S`*taH=ufzQK}0cDZSRp=qGQG;62G4x2?=K`X* zwp0Bs+aK>%VT;=*YzJh{IGg}1RV;2-irD(NLN}|j^^D0BsE7S&ciph`t||JYv*zbM zQ>`|mQ9NBDB-CUDyDKSutUQtCPwTkR9^`mPQb+Hqo)E@IW98t?BAx=}a4T&O-Wuo0 z^QxTWV%1g$;(M#Ea=d@L0ByaL0j_x*3`>K$Yf?;Vt2dq;mZ zmaf($0N^s+dA-izxIO@It)qG+BLVuG>ZG>}I)!pUO z%4MnQ)zR?kOng>%PX#Iq$I0(TNwvPB`-gZ1`ZvnO6k~AGk~@%Qjzt9~2SMNy{b4n<)C8dYoMBk;A^%zx zB8P?S`OK}S+C+pcdAR`dd=xUvppFI#P<%osPJG_Qq&NK1`5(y-esTQO7;;V|qY!y) zLQP9W{6<7N6>QO>9?&Z5NpJ7F5>4TOXXXJwV(&gc4gsEb;uqbiNX`sDRV=4teM*1= zEZWG2q1fmYkdIkq3-dBW`bOT^-OwNO4FAldD)U(QnoOFKHhe$W{t=`9BxS9(BNyJd zJqZ53nZLlOMilmxzOk~u6Nw!FYG8mcpo7COBQNz-D<3Gq+VtRUWo!X1Z*LCY7_xOv zHk7wOc|NWG^1CPGgEVhAqd{dKSxa-j>D+5YCAz9$!K))q8q&Owbb?@nbt086SiFZ- z(7A&&Ia=3ATTI@6-skaPG=I~b02+78Eed?@Wv;14D7|dMw?v#o=XzRN=GTbhmp&4n zHw%Yy+Qzj|ii-hYj;_d~JJ3f^@A|yY_v;P^lMN>~*I7hjfSNREG6C_umOg!j8gp-V z$TyFrp{gE3omfMY@*^J1sZ_s3dVC_OaXgGWLZxkTog-6i>Tmb{&V|!;v;(=$+>I%G zwbsy8g?Zi80j^#TRlP6^9N(*3WK=de3nhWY`5jDGg8T;99R2PTS8C^YUKXWP(3JOh zkLAo%H3rllB;Hom7LEUnF%u)XWCl*RsRiprQ*^ubJ5LKfC0y!Ets1EyMshs}&j3^j z1{P1kcNuPk8LRh6BBCNrg@zZHyL#tERQJ(>qYC0`qB68YgsyYM1DM(FIP>T1sWuf* zwiI;61dM#u;Vne=HJI>9kp5Z8_fJDhGm9 zsAaF;;-r?`I5ds>+e!Rg;(HC6x$VRT`zx+dQD%^Y`ggD`kGZz##Y1Op&vmrPElp+x zl2_&et^-^J(o5{B%+Lwz&Ez5-?-7S4K7wg{jrgCR;rq$8H7#WJp5_s zNY%C*%)HRx?_JqVk%c1NfAN#4|C&?@CzI2utao#3=RN!Hmer8xtpjV`cnA$$~LGQXV~SXhjI1kN3$!I$M-5(YB8*4*)`ofT^*pZ67_ zMGi}6vc1KvCvK(!cXsOAx^|&(%zS-FzpW|tl)LMzK<&rhW`w($;QgYVztN6BF-`=2 zB;NG~TY}J$3Aji0RF5kF=`PUj$<^oG2KBo&qmNWW=TO@qpt7hz8a?A4PfVeicmP&; za3UFk>e*GfLN9 zEVj~fk-+}o=I`W=znQ@)d?(+ofiUB5ph2Gq^ooyPmm2?M9)zB5o&sRx8qUAB_mKjI z3@{;|zWy^+v&5MY1pZ3Q@>y!ZF3U~57>kR~QDxqON1r~bX~3^$xi`TUlIxPY9Y+&7 z7C1&hnSx;orIzRxly$JXrYo#wa1~>vsmJej$c|#GR8s%0{M_BzOPk&4u6yLHKdHzF zo16&$fqmH%B`0{)fkKQViSX3-q` zgP365HTFf}7&<%D2Y4JYa?8>geI1Wi<*8y9u)ipVKLC4VzHajYAgf>^FC>!O02AjQ zj~V?BtSpjz6fSnbtZ??`-{UmX)$+=j>BP|pZRj1UB40wL6 zxa8;&vEmHk7}4qA4>WyD;)Tj7L)AF1apsnNR3bf#yGJ?*r@$#w26?-u+3O*w6#kG> zo|pRD&R{|bvU5kbYJTioKutCI47L9JRQcc}udkaGE;7=svt6!D2P>*9oCBy^w9wij zQoiTRSpH@*;zPfC7P89(gmWjc`e<9kAi`;fDjcy8k~_tVe4KkkXclEoo?`P%8H3~L zgi`o@kbyl|dm2AB!(h8>nUF-}Uj^#@#WlK% z%vCA0xT8+)IctbfrN<39`J-s zfuxx*BTZcszkGDY&|EYRj=ya}!HBK5z-Adm{>oUI4$a7 z<=J6_dC7+zebW#&^A(D{Xj)mQOcRo`Yh&J|{NJ`;ZE3bR!hvNrSTksTneTXDXT1)8 zS29HU{)>WgN@wO&Hk;G4X0kVkE!^}0WnY9KQ>aOOwmS4x&}`fhuo+^bxBc3@@l(uevPy}&kT2Sp#d>&huW2-2im{2fp#qH6P4(?AU_rogdkYn zzooC0SoY|sjMdIB7Z#vr{Vk33pq6=X*KE@(UyBy#?W60K@Mx*=1y#bJ=TUOkOSIoB z<1SV=r@j$dwV;S*cJE9jvK`0jGcQWB6fcw_rVwwh$ni)-QB|BN#Dk-u98Tho_^luK&I_ejkqR{H+yyfIb`Nl91J zdmo1LUL(-b<@tBMwlUpReOMFpMs!d&bq&W@K*@E%RxDR)z=2m+Wif!%=gfqFS(1B6dA@ zX)B`vHNb}#vOSv1Rk5VugZddZq8o%~j|JA820H%P(Q1qu*iM220VX1#L5@A#_ug9p z7K(HFKS03#Z#jhzp@54h=oF}WUF6hNfi$*m_kl9YveeVdo`ekap=bJ7uZf+pxJPEh zU5)?Ir-o^|mn792_Zof{KKDVz82{z+gH8=}sPUTeu~-70d#mm>rQUk4CCix*muXY42rTP^-0$D$+gZQykeT-PyS6#f`!WHNWzv!57JK}Y2RA=#Nb)5#MHkkwm`kfeEyAIV z_nn8U1Kd-uRI4#G;n}6mmtkXbkk~oa7dh+gXAdVx_AUa)R0{WUzFS6hENb#TEy9zK zQFYQ$=|4?WwKgWMLPf#zYjnll>Npm7E}ws92md%Rht>|b8md{^x_p}n1rj4G@`KUI zCW`#Fr>j_}=x0?8Uvj*`R~_0r`+PR>SGW!Qg*;*;-i8{ z@w6qN~%JG6vgskOx+%<&-u}n-+^c2hDb5a12DfVMsaZV z9_}7c?+|-!AitF!#1S-Fd+5mjZ+YqKU`$eC;$@hB0)LOM_rlm#ja<%jkF=I(}We3D~MGGq=)LQ^U=V|ov&L?Mz-jHU19_+ z>0?4vwI@`;Tr__NqrUHQono~JEYNKLtAZZlAIN%}ssOOPe+bdme2!~2`WCI1Q=sd% zJ$xHKCnT?bq+>f^VaLUu@pFGPrNDT^PY&q5yuD^h>sE@rPUZG);N?P9fTGHHY$f5V zX;(@+rXGEJtk{zu!wnxT=-h4bk81X>VCY_F>I&V|7%Ct~VItEt)21&u0So?IAd=hX zf{>(=#~hi$=z`EFP24o{`*<2$ zS4U6eF}vkcny_@7VoOs18#$%)Z5yHzeS!HL)k#C?b5?rRmH!x>aHE?_npsEP|EJDW zj1xo~!j$A?7vuy*GPsQj^>{rTU@;~_;y6;?FZ6^-Kb0~0FmG+~;z+gRxb5S6H|I^; zo;|3QNq6gr-{HQ5hf8yeD$k`Vd1Y(Pl&1E=uKn9+%gO!uqpx!vC>0n}SY-V(Y{_&w9Ru3RMTv9E*x=F_4t*~ zfCnf;5X|54Tll9J_wWG(CWyg8cY}gZAV3r2ixY8VAW>t(s~_KS=8rLjq?c_P3)CuK z65i8CYn0C|#GmDR6L2@mSx&fPPXC53DM`7q@l1hmjKx|^aK&{n$xDqqtEC*?Nqrxv z8UJKXQ)W(J33K=dU-rY4-RdfpnV#H|Pe4pLy&N(}7{&Tchi?MT0nmnM`gNq;c&p^! zmSygne-PkH;3VXGq~y5d0ClI+gX?zYTyAbGiX*ofW;PeE$<)f6n;ap35%l6}IDWX>nm z)XxV=G!qZaWvf4=YrEuZW-({=mp5ga_ti+k)3N3MoC!r6s2s%H6Ld3?NQ+xPHVGTc z=e5|+lu+XyE>1I4ZJfA23>OOc3EY&qDHriTN`PcWj-TGa4!rD+Ok_UMa~b;SphFK| zsXcNIzu9H?j?R<*r@OoShF~vt=6pa`11&@s_ce3dg@YiPTX_cHUpxC5d}}2+7}Kdq z9iD=8Ay%wO5im9^RtePHe|Jc1TU!6{mm4+3A}8&=E@jXPmI318+IIi2b9lJ;sL3MM z3+IbwoU&=V^z;c8xoOVLp)Le8F-iq+{Q`t@gXAFW0&J0@j|sH99P8H!dU7s3>c8~* z>tsm)fO|nH6eqXgE?S(D6llP0XPAvLXft?MO7O#(v9-G=>3gRag$BlNRu9->s2X!i zzl-00q@5)5Z|rlRQ!EOr9v{ zh!g)jR~tAO-8x2@?l4;s_^Bg5NF%iz=d9fVm0pcdBS@d4PGgH zAKiP@ez=n;&{H2KZy9&_JELOh*8MKd=pO8HeqHc(njuskyZ~Dg)jt6+KxpFgp)QRE z(Gtz#6{P1n9;!pVY={&D>={Eg&D!b25iBUAqbRtr@BAbe;Lhq{U-rp6qbFx+fM8P zyi{0X=;<5|zLVL;mCG+1n9QISo5!U}^aw4bu^)YQ!jF;SF2Clv>8^*aUIDh73p$k8 zeIL<&b5avKk*MqOgI%bL+r2dQrxCQJ|7ppe1ZIv+oHkBFG?En8sZ<6ST*uq$zIs5+ z!k4~Wv5ipJ<7b;tyWi8~+Y+Ef-#tnpiGbjY8_H0;Y_P2g zbSR}BvYQ|=G&5rF^?anJQ*|-Em(n_YIN5ym${St`Ci4>q1l!rzeesLohX=q?^^ciY z>%BPYgsTt8NG7xn;%vH;P7MV52>-Bk_q9wMQS#dIEa>-EK)-nk^kfGjah+y}rQ1MU z_TWQgUe;U6w3HZ-d2}`UzK1<4u7;srGF|nnk{#XTjdfmRzX+XHeFCz;t5Y!jstFDI zD@!F%=dS5kY+(`~Ds~4MtR9f4^8Kul>C*#eIo`roHU{^~_rxgG1!CR`7QnN_dOzfQ zMC4p()JhkRBcfaJ5d-W5M%bG(ZTq(*$0+HStb{DH{aU~{}K89@=LSs!kpMYilUcX_7HQ9b&UBE7Rs zrVBAY?Eg%&(=d% zdg!f>@U>O$Qn~8}y-2*uk~$U+FL`%wICOQ};+hJK36cxu@#uM1=%ln?LmW@j5 znwRTT5~K=r#kj4!$@cSzB^*5mF|)awH&ilTgpoO;$~Ji{unk5b^8eSpwFU`@)3@%ln zatURdlOE=3$C13!p-;3TX9|wi4=a~M?~B*#EoN{}XN51Z5CVpO9TH1nHA>O8O}T_m zcGx+o9xs;Y#!h4cVC2&KmLu98DcRV8 zJ@$Ipm$-Uxczf#a+U&QphT6`Tw9blb^(9AD_B}w_|7L&GQbWmY>yk(lWeX4gFkntT z-(o>OxFx-CS*EvlwVnQ&>X(#61Riie0uTV|yL>w$W8ULTi3l(?i2-oMiWT`s3=!g=^P(PXdgMHcQ#2HhL_~LXrgpxDLIFoC_KUel!`&Wk za$VajO=;pU;%(Cv;$vHiMA>DqA@bydwQ!A|{08u9(JPF#Z+gCh;PRQhb9R?Fe^iEQ z0)U8u(^$h^@bV(E{HW(zmc+<$FPqNdHwv}|6x zu)_V%vv?mk9fUNlcml!3e{9FkmZY|aJ1hF;DP$2)l>A%#3uVOiHC%-o*Lvo;9I<%1 zS>@%W4wal8AKOhs+hMVtM5=u5*rD{T*ia8TvL#Zte?zx%Lh;UW7@B`sN-#`Ig8P`ZS$ruikR;HIcZrx%`-r*y?)KNd%_^Ugfkpv=k-O= z>lFbNVFfPtN_0}2C$NLOf&J3`r7lRslT@hn93oi&uz)Ubas1N?30_x?>Y^t6)ESO(QI$cVI2Qs=sPI8{FHrX|9o=YIvmAv@hRD`u^tc z@w`miVg21l_dP-=cvp{j<9JqjR09M0?@ZdP(9c_4E=E^VUsg~!K}`K48GW6K{1H^4 zJcS;IhNtc^mxM^V@P27I|GWep)1OTfM==O=D$zoM-3oG!!Zph8)%Bm#@w$N}!EBn$ z7ZWGz2{q3aIT(N24C55NC}GbOHlA@3=w$OM4(1Z#PVbZ z)1UR;Oi{h@!|@)$JPY%s4-j(7lrYqg_p-IrkZvdiPdi`x)ZRn+ty_Oj7@*)Gy@O4|L}5!{4YTR6f%N-Y;{ZUm&qq0Wl7ZT3JV2oz@e2 zZ<18FX^xwqeip)6zHM&@UZeG|`&q?Z;wYEQLpXhYc%PxCN8?2_+FoSkbxDM)`IItx z6L=_@DC8uZuY@3pWhW~dpNU= zp1?{;ox((|w*L)2+p)Rvc;$Oxfu4@(k7cNnD%ZmCZXX#LIAsge#wXTtx`r?w4|Jw@ zR1$~Ks`(?ml4tqv>JQt&QnwytyfO`dxE<~X^tIX@Nlv%~aajJ1dD5?FWR;ejk$>0)ZJcbGnUazmt+<0D4Gz zIwZUlEeS4{k@8KZE8z~hpJ$!~^y8rPpBQbKwoFc@m|8GPaxOm+dHeS&#c8t?=uN!$ zMaR0rS!qJkd6h;|fXm88Z!`WxhuOBGq+ToaU{$Ch>LUDiVRa}m0M6Dbzj-11wL_Ty zlu+=7p_Y?g!!k zrI|saRhG{NScL?=Run4&p$V`uS6C@)1PC2mjfL##wtWLC>NKT}Y+K3|*F~Xv|DrK2 zRm|)E7j^F7Mxf_3{9#mYQF`p?u~0`=Ky@_umgr5ZBHZd!lL-tOX-Wvn@v05aV4Kc- z^Cixs^(^gGxEL3V0J&J^1UO68wE&A|@*$AnLWo^htR2=B`C31&3PMjPZPdSNB)t3# zB7qjc8Ua2m$AR?zu>|^a&|xBg z+>6TOX0$^lu>%1qQJoClWRq;tk&h;YRmn2pEi|DHmJzBsW!NjzIyYN`*JPTKH_`4G zRWd4c8d=$jI@k5A{ui$5oqH`E9^!J9nRVCK#)o9jKeCth9cgHh+XWjU9+E`0E(h$$JGhnqB(^8{=xWZs69Xk>F0S^wQ{(shmPFCt5CFzcO3?=7Qflyp>}zfV zbme^6SXd3*u0mskn00@ye^o{$N;2~qq1WP@WM$zmMRAH7Q1yNU3w~mOSlV z8#n!ndMr1{O>*_3JC5UepCVU0)Rx9}5$;J$*rvYH-NJ@)G@Qa!E^3zds$3c%c-ln| z`4Ic zqH5{cb(6jKD@q}#mn@~(L83IuL*0?c@tF@8GQ)PH9GsQ%-nX?tStarWF`<&Z<6HYC zhl{|F`0W?bpsYgFR`KP;o5@Y3AwbBexJtfb_{tq%Bips#G)&OEHh@Q4WmHMzxG5kR zj-Z?;=+m=#{u-@mP;rA~z9!iaXL>7H^`5UIH4dqJHxKuwqztRJltG$kPVsrx!@U46 z$8z+a_m5N!LLebPu?_@5{RNgyO}pT4Ub~A=Jj!p__fVtC9wAP!0FtocdM?N}&mZ0R zeZ@*_SKq-zJF`$YUe6k(fTa5d(R0$s8y@IXf{(9e=&A+I7lK11)AN#JfeHRYbQet6 zZGx5^I_&^3tuGT({Cs8%H@B!@lHWAf2}XZazYn6pdSUCGh&$2084*f~$;)Qce?J`z zoB@i0Z}|iH!`#UN5p@_!|${1ZzY4{M~{yMplB1FLBrBN&UzjD8$4rYKw<$Yw|Efj6xdU7Ja!3_(muA5$aqW9l$vB+%m(T zygG@+=AVf6bKhOLv6>hr%t8+qgIkL5vT=fQ9Paofx!%ETldJVG(cl1Tt#{`6xrFtvolbOWav zHmXIkXXKFy#cUx_3M#`nZ3=sIM}Ay4dUlyh!pxIxm8m^4p{>7+$?=8LIAgAduOanT zy!r<{0!dd$@Z$_ir2{6lhPpzNc#80bDM--7)4`G>?~<;~ba862VX+$pKMcEeiHBmkJK z=%|SB%UJ0#0(a1~&-+Yryxv_tG|M>_BIl>|TIjhP5?#9#Ea{A3>I$ zKZt7d?3oE*V$pMqo_zGpu8fhtVu6JyLBc&IOh0j6eU$ANX&~kEl!S|@TJ`_2{|j-6 zOLlGWcPv;o4aTRkNB@`pj-n63cUYUA5R|tGb6c-Lo6eOlR9ymXIjEh4~*FH#Xd)EbTy^E+-Ryx&; z78R3iOYOlD(ev;0`BN0-JTGZSVp$@sI~*VNPJECnQBFbb4KKF}`R26PjyUAgDEOb{ zOGQeCuq;(0ghxA{(xqFAXU>LfXgA)2bleO$YwPN01g&u;y~b{ydsXROq&>1io4duT1*#T=v268TyegwqWmC8y zVNRfMKgaput{Mb(I~(f;D0)_m^$rS-BS`pyU@x+8s(r!K4)3?ZQG=+(gJ+lb=5zY( z(PFzAIbhTj^WhO#+G$u%_x@4vrOPYNqeS}9HgglNA~ASZ)(d+S34SI=-<5JfK2VtS zByL}Jrs{>_u$sRGOmYQ^nB3ybGQWj6Sl1^<-oj1d@=$$5#Q~jBbJm5~FyATjM7hy% zZzx_ybfhnjBsm!;nG2NS*4OOG9UYnY@H_RYlh6rm6oS4WjFspcv;kP}i;9PtN6oOf zlF~u3TbheAgw(@wjhcQ!YgMSl1D%d7>I5R}+KmaGd5I7KEuptFi2y0y|GH0d$r)s3 zc05{hXgBx%O_7h&2@D*xW562jmqkHo($+FmAT=9v!Dfq2s9YRR$}E%QNJ1cZBmS`o z@DAJ+rPF_&;M*OAI=mqTuJ?t-$?GXI?(6O)Z4U9(<8aB&F5)Nd4_v z>Qg2xAnDoXm6nxutmRzq<$CZCj|@&%W{}0ys-CKy!fIc$P*O##&R6&^0UnI)H7<(0 zWljAXzpoz_fb*LwKforvI6B=suPh~r(jf2%b5%rEpPr+VJ1~|$d`Y`L3pp_;7%HU*-a4-{T^~E#2fIghn%*%$c0$Z*>Fn?3`vF-f|&IRmUi!q*f2e7;9Cf6$q?9J{Zd)E(O_tM;li4bq{`l z_WEFT+YK#9?#udjGsSG#ohMi8+kA9|>V8GpUjaQJ!s*Rtl@q1i3|8W7tof82Y0?uF z5KL6i-y){uv*e}3>&R)5I8ic z`J*B25vUyG(^NtfFJXztZA2_4#ggLBzs#bukiKwtk~C>vycH|iug+P#C|_rQtGbON zHPqppCGsmDftKZS)rmbA01dFy+q>O9(DqFLHy~<`@>>_ z>QvthRK;2rkFR2b&{2A!G&LNRAkpC(mgH8xZ#iiqU>vYb4-5;jtBo&mBf!H0EhvzE z742!!*}AMG;){cp=FGN`*r*(5*^}FQk4`t_WSyU0>)N8 z1W@y6XkU8yYtfHorv* z#ah%({OA&$0mYpNqBJZ;|6M09mirDKeZ^;=zNI(yt=}XT$Cfw@Bbg9wMqMl>q`l$~ z4z6)JWM@{`?=BdWyI@ccZI>3c8R|?C2vzhR4uC#Djkm$JkT*VEa)^GjU9Di0i|KdE zO2lBXuK)Af>;WUh{%m75VO3_{X*fru3N5R>)u3w4(lOS6_zn=Ge95VOt-5&L$aBYo z1t*RLEb9pe4OuF(&P;282@n7^fh4U8U_d@XtPMCAeiCb7i<5?fnm!E7EfCI2b>yx0 zN6g)JQaFCJ#hGk`YB^V`!~XXq)zooTi4Ig;7f4)c7> z`^j|Bg6o*R8BD+9Z1VbOo^DqZSKCinz%}bF-G6aM8CmsRN9DJs=k^ML09FEe$G`w#f2Lth)-D+FM zmS7JHjbFJ`r_TT+0Gwux`*k`bsiItZ5lbW%g9oo&QP#5ZWM(@R1buVzt-C#awerc3 zCl12AanWMd0Lzf}0>pL0J-9cs2K?W^I$C_Li7Wt>eR65E63>lgXAiX|fvdtc}+18bE3GKWr$9n5s9_?Q-D zfDmmB&q^MMxVAn3XPD;pxw^p2USQasX6YZs+*u@@HF8X|-?&J{Y3l*$aDc-Sf#jRR za}oE?`UZmsUdeG-{Q$Zg+z#+W{SHr{(Hng+W zSy)2f7)SxFkoFMoMUNu+Qr%;_Rg30R2xNE=o_01(`hv0WN0b$1XEjA&1lXQh=yMp) z4lJT`zsQotEgVxCb^a)0x&Je{RrItIbXTF~9WJR-_-s84?VPc;!2KHLw&hOX=JQ+L z;!bmMUGL~3fk|u_i@v=LI*?E4mGbYE3*lvx(o;3Xh2YJvsJ?Qgbq&__8xbM+O=;jo zx#34p5G)ejj98iWfGG-OS}f5rZQs?&E*;f2J4M(0NSWYNo(xUd2SwdWK1Ci*Rt4zl zN{PmG%KNHSc{B#*i1P@_Aaf6sL`I#EVqrJ40(n9}XzInH5%oA0nz31;Kxq*57#y<8 zCvQh%lX{!3-lUduy&Zmt@4&CqWe}mAE1?mR?^mSAP-i$R;*&I@2E?qrEV0T5QSSjF z<+3$b7VJCYpq~-~`&W5VWi-U?NoDVs%{+dxlNS?3%2#D}+tX~-s;IKNvf8ljKS~^! z!*N!oyA(+kh2p-tv~bN6J&JhX@se;VRmh|8p8#l-K`qYs^t^Hal~bQ^c4a;L;Ltt+ zEdNy_amDk%C=HE+qWL-wc(B>SmR*j98|fst5M5=|+}L=sT@b@8yFCBgA`0uR6rW}_ z3p$5ggu`K!Dd&z4_f3HZ0UFQSUh`3EO?DW6s>jtAu8|%^$Lr z^DFYGRKut{UyTS&Z-CsB6?$y?L(JwKIo>Vuxle1l_R7rFTqbhl=x-UfcQkYf7-#zt za~08N`m0H%IcUNZc#-iVVOrsh2roePvWw_{cozaxNV#Jo=p(mH(<_|{T63I0_(1^6 z*P$jP7k?>oQ6mf=%VNC!Oi4<+fxs8uOHHSbBB%g7_r0-1jsC;0HhzPD~_Fnjg1B*@W?MvRO=-yU>xje-Vq&w z9S||T_+4*(i7jDZmIm$qK7-TBb6^muzR#|q+NYU@Vk zd?oh+tiMpAYus!E^blM7tB8f6ya1SuXn=Gvh!6_GT>Q5hS$Nxz+ulEZ$kP-4+}df2 zX2m#0+HMuxfe6mv$UKuXOf)XC8<#haoo4v&wUmtl*V*Mse*sV8$92MCHtq(w4)dg6 zN)NB%AbSD!qd=JnNT-{E3?&^-i)uzPWkg>U0p#yAxse^cI1=o3ajM5$tb^_s!*{wr z#c=vQAVkve$Tjbu8PY9W(pN{3TGinQ_tITtoKv4$h*A0zel30o4R1 zq8$@BR+q(Bs8>Pvm?naSR+U1}l+cT^!Fd^byVZ~IK%yT}VVWpQ53~v1^Nxq9w1&## z3XTze)*UCv9cDmVM;8?zI>{N!t+V z5F$=<6lxZj^V?Gwby4s|;#Bt;l9}nB=-o;cKmAkBvO|&5K~~#sAzQ~p2Ha9R_ygp1 z9M?)rkB9js-ea>D2w#&gSdST)i~+m$7{ug2dA+0WLimEnEgh+SI4nlf|IV)pph=)8 zplGbgZHS_m4LtVirTX0hxKCKnD52USZ>Erw9Vbymxy{%O_LHoCsJD)LLmG!-HG}kS zZk3-D)^n0zVyv3Li9JyJ_&$0Ja~D1?pwzdZEbSH@ZEBKO<)@`p-7|o zaLCai+y8&&Pqt_+^Wnr{YU5riYvTX_!~g=r$_OyW-pVzRW@BGsbV~yb0_b9F0ir}u zYMNrf3}bIo0aMNGHHWFvATwv`o7{BW;x(D?{O7@!lEU(VxcJA{nps`8p!pY>^yV!k=>P9ztlu*_I=iOwt44QQ*wy2dWtyH26R*s z;2D5mCRBjb2B0~#MpAd;jN1FKV|Mw%^=gbTF0O@+=OkJqIen+9kOD-G2t*0U5ctp_ z!*dWRK%GpU+s?RLtZ#a#2f{;SBAB6juf0@%H$c$r(Ls^)FuO1NbzwkIYl&WVu%POKoU)N_< zElv%MzL}5Qbb{#%Qw6)lWc+5a+6%2eh$ccC`%`14#xexYAI?YN>JlfyJIH*sG)Br)Fvnzf+npVqa=n*H zR_fRaZtP!@uZqd&0x?G-8Ee!Q96`PxcH_7`FULM@*Bt~OxWv0eLGXrCU5(}{aY_-gIG`3~IL_ z{;OPXmLX#C%;)DvVME^Z;tGMr$0b$+kuz4=GOg_exM72gm31yq`gfe}-j!?- zFFYyF9fgN=U_KaM&gZ#rV;Tx{Gv0j6G#DvK_}?sV9#lpbzj&FJ{K-NZNI(XB(dfJS z#bb9PI8}Rsm6`8D$6=QUd_6PZ+hTD5@#*7F-wrlg3d6=}0jz-%SEB~_b-^&T-AUoV$D#t8_CHXq5%eNXQ z<3G~Yx>O2yC)&hW~iKEX__nx{2RB1d_A(Ub1Z0loP~u<6Sdx4*;=aNc4Vtf|MV z>c(cya0M8r>i0*wn_kqgco!FGPF(Zk>*zQqFsUJ z6Id*|AHkD#!V>n0=nGl&7>F)np>@rsT-`7gF?twTk=}b@X53MH^52ATUv`si@P28M zRYdosdoXfOzivs;d;2q46l3&lGVh^4vU#2ZtZV;S%F!A*3vh3tbZsZTSAjm(?Of5; zE44m&EIprZqen-9UKBNuo?h)y|9agGaVJeo)YZH3_Vq5nj;hlHi%=pAMkx`nbA;%+n>Nw2N- zugJTIAx~45Ve8F|KU6E9Fhy~9g3vv(QgPNzPbcc#?Ul}lvTUoXmJpXrh552u`Svkj zfG5+y*GvB@QbV!}zI^teKsF`uF;M}ba>;Sb4Nyeh_}D8cxU*1(K>VNQHgOxxtpldy zqhPS|<^jl@^)ZnBsP^ecr%yQ%>vf7&P{__)AI6etvoZH=;YE|x$-A4DudT@?KNaRw zo3AIO_GK!#srSA;KQGo^0US4+`-_Bmz)GAPe0AkN8-m4Q@a~6{JA#iQ%AOIAth8ZGwh`05r z0x4@AHn14r6QpK51-2gEF|L@?&~Zd=klvhSyd(N7gnN#ks_ltG(uu0_MCbFD7Zo?9 zkJF#a9ni-r1(Rm_U(|8Fh3t(SuRcv*e3~C1BD3ck{=CN7N!&BoJY~KEK5vI&uI1!U zZK5PoOLKD+*>gNHB|GT)M?N+x`8($eUv6vjwU78KvO1QF)k&X02kC-0BhzV(pbzX$ zrTLjgC=oVtPxN4xWI{a!q53|AU(m{5eIJD*~V2)LrT3vxP$_mom=7;c_Q+WwR_uv!W{5pdimuE<-c6#MXISw21) zobFX+@mB*4+ds=3LuIr_W8g@Wzvr*Ob4r{xsqyB4E6YT}0dTxL^V=q12+QP#3&=uM zEyTMU_%?OkO)-%TK|1l$ad`}Ik+D;3ANYZ+txqv z%9*K5$tZJ;#z!F*=5wBP`lXvovUO7q8|FFt_&H+N5}1#KbB=dcSYpTfA!+XeE_i@% zB3a-2V}m)}o8~;tcub-6VHUJYLfP?W)|rk$d|(QlddG7Cf9J)LNo=k6K|8TEg-tb63`<<+5UJj!9v# zH6ZfX_!tnV#Sf-l!7pnpeZXDx4>Pp+63{K{DU_&75<-jp+^ zt1k*KP>6Ddr_+fNu`}Y+esH0h`Ry8`=H#OXR4~m)n4G9TCB{DF$?it*Z4tjimV7)_ zSzhjSS{`?U2PL6aW+wj=xPSo!bXUjS$dLk~oK1l)!^UhW~k^`l8QdYwm6plEzNS>ogY7xy3OQ65plf_g7;Aidlb2C56dyZyyK#K1)u z?xOqwj$MDp*)aTHrkI8R5s?D~U;`o-o5nup)uIFilmqv!#>@~@hyd?x;fSA7F%8k< zSwJKc@M$d1R?;4ATP<%g^@wb{ADv0Wtvf)A2MKQH3}fLfW8$rIDbwO>q*a(TDPEC% zyB~tm*j6%sE#}33r61B6#;<%%HaMwZ9DR%uF}g&UQPW)BpDlQre!H;nkF$%B7+e#to#*!l$mU+6Zd~`3)t9 zwqs;V1jg$M9Z#6(I)y|ZyY*j+U}5M z=PaGzlQ49Q78d#ZJ9pY8q`ni3>q`IAx&fdn`}s7Wr7cw=ziT5%7Ylf}WCIorsy8r* zi)&1cI+l`N8rvz2cfKrM*BqL%%9oNN*Hs;pNW~T@9X|UhhB*Xl@w53s{ypW2# z4TDXps%O~{T(`@#NyGdQtGnk(d1QOeOu-?~9P(-FE+Xlytpej}EyW=TmV8sS_et z2Bu2PFhKRT_4-Z~TaaGPVcapb@Xb^MgqW(rOnb{k=aOxa$a^dQkL~24jA}769KK_Y zwxt1!uZ-qTF1f2GNtZPaA9hb*w2$2Ku4kGQQ*8WcDfMZ6cCU%$n(h?25gf76kKZTw zWeK+DN(*teE7B{`+nt`%I)hpU?sl!n677$p%=-H12o1^SIwq?W)FOar;33qAhEvV3Ezs1~py~m=OttgiV1Tx145Jnx zVI|TU6u?oZV7|!-f|8yH&Aq`yLFVPte+<;_5dIhdXh-v}{$bvGz*sqf4QntvUM_X1 z@pqXboaDx~;N4M~&p-2N2tol44aF&H`nwx$)O{3=X|+q#^xO9GjpFLW?Cm}ORja3- z8>U<`_IT+Lb>PH7;_8X`cB5$wDsV6bhtQGhyO@W)S%G^D8PtlBp88w{-yzlKEf_VZRzqx2b>iX0GYm*mvlCF zM|}V!L+(i3`V#|_VaaYz zj~fC$(U4~*szib=p;IsF5>+qV*gU1)Xy=i%PqtYf3t%r@DFhQ7 z=|)<49#ZwcGy`)J8jUU?tt#OZ=|cbwqw~8^!?=eU1unLsM7ATBD6WP%W#v!UqYluW zH?&Q0or~)lE*N-%Tp+6!&WUeE?09&|7yhCoBItH+Xr(zMF!zXy)~e>5#aqL4Y@$Z?Yd?>iSRJ(wj_Y9&N+aU=fpBJG(nIv7CfwP@8V;WO-Z zI%&ls1{+aq?5do`?M4^fl`LD0tyJhiN65nb5C&n*i^~376dQ?$ zm~VR_PCB4ZY~b2(T|erbFG?PFjnC(G*U+2W2NJGKh>LmbFgQmh__AeP(!`hc7n#0- z6oY^b;Dg^P)V}`>iVojvIC~2V1wt2BRQJtZxI;Z9<dtq=Vc8a{wo7C!ZTQ5zN0cOC z{kmK)uA*svw40d=y)WslZI-T|_lKgILE3KoGwM&hSXPf4;hvi%D9f4BipDesf$9m4A%rOb+>0Ydy?6X5P=ZNUA03i zjY;aQiY0QqGVEO%EG)_x)hp&nrnW{@z_L;D&B*n4{-oA8_obT%qf4Wp>2^UdbZ3;u z^=nL)TrH==P&Acfy^kgNmr=DTJ8 zCERM>$uSm)MR@$Xf$eyUkR*qHSJ7$I^^e{WRm^+};R5b7GA1jI*5R zc&vsZ9YMLBOlThH;sldBy4T~P|CC-k_xrWuQiekpx|M=jBOo0Y{3d*C1UHdzyG>g_ zG8k8qi2w|)kgy*d7OZ!*Q)hA{S3L?;{jq#6v#h!vA6ftvi2+t%ghC}!-I}1`DLnfb zM5aHRM0Q}UuKELB4GQOgfk3MR$#gKoskt6|pS*&-FKC#e9k-a_a9n-e%vio^VeGMG zplNy5PFl|VHzDom;*OZDfw-sEK1-H$*F)?5h_Xxm9xr1cPTr^}LtYJcV~}_Wwe<^Y zK1Fk|YCrSkd{Pj!7{*-XT%=$q{J%D$)q(&=PC_4jDiOxT`3rIW7>1V_dd0gkF~??x z=Z7xoh5FhAM`BWpVt@(43;7^2V!J7Yan#fRHOFOA5&H zgV6@7Q%FB8k5S|%?%-MGERSma-SSVBWMuNbO-b_#5@u>%LzU_FEDU@q^vx1y#0^Es ze;LCY2(9N}%JgNukc}1;f(R?JOv(zElCF!>f3erNtEzsdfJYnKT*Y&YBgGjWnpd7;cYzMAE) zMk|l-`H#oD=+gT3z?d!8N9$#LV5;yn?@sGq1z0Z-`)6CM!in%RE~NXjALyBftl|O_ZfzD`3*?F1TaqsaSdxxlar@4_o@2Va*UD-VC7k? zD;5u1eztU%p4|?wn8nP-rB|-n|vLbMmYc{k0CmU%LH*qow z22r5`GrefVp{p;3<4jOOK&Vn5naHNuqC1S2@6|i={e)TPRG7&jCmH;*`O5m67;WtXIaXyW;3)Io~Jj3VB@7jZy2}OLh>&p_I4Nk$wqsdtEtV|>F zO?#5pBpg7-hypF0RVvt4N!oXYb)q{WXD=l=s<`c*x%AgLKh?4@hR`iMbDD&`^1Dw3 z%7}g`j9?ujmcMCxCB8xnBnW?6{lrh3i8l&Z-*PL!z>;!vbv^kj{`=@uzs~Fll(1Nm zo7a(t*gWK_Y&9>E>YFp=-W791Wh3AlaskB|%6mcQJ7i=z_D@5Rw>X*&wjD9gah<=j z_O0R~!Orfv$#DeUH0-ONWAwhJ0LqvU7?*4NI z*ErC!gw+s$UCw&fv@xE@E_`Je%{xD0^2vjSrt2~gP)BOHo(m6};9+TLFG(I+zYb9U zGJ=1Pb{&LNJETu!nL2SjFFPA>g23S;*T``3N)Vq(z%M zQ1HHP9VU{AO7}Xlqk7Y**j|dSIMDlQG_5Of>4}%`3K8ut=^8vZP*l_wN?ifGaSvU0 zK7uIi;Sx*RIw9DTQHRZD5zsJWHhuoZ=?@K7CrobN`FyZ4kS5EzqgSRx;v-9Rx$5Du zKmDMk38x7hz@%@DLWqEa0Vl!Gerryy|4gAykkxbc%M(jIp{5`5?RiOd4-36t8y{Ny zcT%~8+Y~N{B@^fT+lRZ^Bjs2J1lHJvBAL z+9B}CZ1AQWK&Ls_Prnh#U&BVP?@ZE8|ZtOUrLkEh`N02pt_gKMo97F&-ZBO3MJJ zF=`Wa>}LeQ)mYbB;*9sUpt{S{OaI#-=v1c9Af3@oV5)iB+DU4&V7Km6Z|NU{njipt zqsI^7)L;w**19n7y2k1HxVEbuIs4*dcw5r!$9ES=(lCq?#hO{A!V<;Gl| z{jPhl07pQ$zolaxcC`oWZCw?Q@3Z?mr?z`F{pf1D!dIMamHG2egK`P{y5B!$F@JZN z9t5itpig3QJJGO*prDr#$2+3}y+Rm$0@tJ*ghbWv!WxYDCdw?SJe^~3KW)}GFAZDjf~QL%%%BkZqj&w0E*b2}QSxGHAVj z_BW2Oi0CG&@D=m)pn}x3a2b0{P_=|G( zxvtdiicwWnCp!)Lr5_Is;DTG5VqE@1L0N)q{gv=d+N9K9YxDgy!$3hhWBiyO{TqB5 zjWuVNaL3G1{cbkf6nZfTLuX`=qK?9y{bHU=Vh94^1_St2fhfT!l5Q@_D?j0HJGJQV zl&Z2G7{ik{3v}7;q%{cut0Np^K2r?x-k4W}?h7S~xjL1bSz2Y%JjQmr4Smq9VtL#q z&l;5v$^b0;;lBrNN!?U5aDkbI7%O6>lVNfK*63o`JEK6Zo3Y@OmudkaC|=0KyT*^n zt(bcw$K|#vm0k5=Y3zsNY+*qJ(&2%3(_eY6MWX@7Ag12>FYGZ`k`ND2d&0IZ<>VeNV9&B(nf|YJu!7hRc(^Y9g zY4C^Q{X2NkeMARU!1Hi|4`D7`z>y8DS}|7ZPqm&-n}2&0VU7oF?YMKyrET{>2H*k0 z_qGYE%}n2{@lX7nt_ahni}+T4O^I~-AYkaF@_ZV`#>9 z-axZfu2!om26il$(6d1!tU8~d&j@oTg0}VY7o2)L-s`rqXSed-8QAt(C}Bh;vP{)m zK+UHHTIOg%FHSrYgI}5d3)Q8+sP)PI-Sd{z(xK;sxjs|!+rx72&m2}H{S=!l zt?MX2xYG$r(y{nBkmt@CVxtRnovx!_{6M-XgEq3%95|_#JtY{)%NQ8JK5)6R`h{T- zADN)|nz+@zcUoT?(-ZRCFV_SNl8cX9l2w-t#932zxV!GR^UvB}Ae?A{QyzW-=&et_ zu+~Gn_+RXZc*atnvKt4nCJZW4r8&z;{afQ{1Ikw z8BJKVYdL*bzOd8?>akRe$Uw6R_nQWB?tBoP5XVn$jp}me zxu-Ua>f8;ixA&`=|`%EB!!!qU!*Ix5G)TK8Wo}y;s7bUn8)t z9D(M~O@~`D>lRlZkzl>EEA<8L9XM$C58CjxPR7wG6tkhYOkh0IEo}y3C-rmYku}Lr zOJ&be;aK1BQqU($@YWiCir*bMvm7YC!A;GeYefS2XSHP=O_4Irs<|JVKwdLxh1wp_#(Ahcc}Lss(T3zP>C5MkPu8 zZn(I?+tjt*C-s1jG?$Lwr0rkojB6i2uX`}_G=8|!UKT*0EM@#b7iIYmFd^_d)3*rV zflT#JG^4@^r%xrn(9RN>$%~zL0XfPaj}|ckhfYLql8`i%{QB$9s4mZpjh6Z+srTn02-B3qVT(=21Tn9U@c`Gu3dGM8!Vh- zIlQW@6DY65Lvb6<=00puV}1qxn|y!I!u(>08Rv1mTlf#+m>80+M|MP(whd!N@hs=@ zqXYqf{d>oBs{Cv00P=hiyE!svjPz6TR*HL=NAD07--;7$aDxKfhneq0m9RN%;OC)w?8Z?F+Va}=sw2lgvx360ml#aGLmso(2LMo&M zCtqLI7u`+Y&f%i@RE~AO5^~&`4xUIGaxWwv;Ulg1e=kc%SjSEHDO^5QrRHL;zK!4E zYi$A4y~N%+Rr?1;82a!QPar^|m<*d1tMfC8rm4P)k$cw3En;XeeB=!2!kBb|{POKC zu$k0}bDQH`ASwfnxB2n2dVa9YXreMWt*s1LOl$o;TFd6Xqpcc{8nw$4%9KBkd080e zRqgkO-J8kZ#NL2AT>6>d{T_dld?AtoJfyP^H*uQVlc6IRA>sEz&U#3{{piOVfI=Fd z_Nu_bDE?I1<-r`Um=XeJMOd{CNvA;V3ahY_xx3m(2EI^$2@;R!+7n_>E*uS#eGmwo z+#0n!V=w1H)TI2i2_nGU773|cK!NR`G4uC|16qx}RY^yLir7!L;0cx%!TqRj85o#q zdZ|hAyq^S)B&KC`Xcs)$f}GJA1A{be4;-yO6~&bF>+h!5{E~aP_q6DM zp%x3|s|%c;U5**Ae-pmf+ob%EPc0jOusRqpZW9s96!jDFyL<6U8R=bayw@i73Euke z<%^6b1%r=<16bo8!J*zG9>O(ANmBz^AT5#4-&5%w=g#=8Qj6mF* zY4WsuauLWp*+oa1b6{|Mt|%P!jwt@6Ey-~FwFGA@_RU<(+PXCyGi(7tY6Kj_b-orbe5cPKrcY7! zln~JdIKvURJ7h!cAnS*Sr*o(W$M<{06kT*O%xjm!DBmJJ`oc>AmIzH#6Kc#Jy zd8J2|PbZuj-gU`BseVVg3z}HK`&6v9{}4}w3tY;MQkHWPr(~@TkH>)p1tg)G11lfO z*UByC@;{7bFu%S?I_HLW`INWqG)HI?xGC>e?%!>(Z23K$%Z3!QPs_(1S?V?c_9F@p z+`QYcGf4zJo#uu=TISqWoOgEZvz zkSO`SjgHufPDK0MipVP;U6s^n^0e^tk9Fv+Aluug;POX~jY_@tZ18Yas;?(hNIcqD z*UsBct7Od#UWI$_OJ{c1n~iA7^{t>qCiu0jQd+L7G&XQC@2*y$?KAbSRu@vHDYyZi z?mLaXR_3LO8ooRbxuemC;j4u)2*^|pBq4?>9-70@{x1Uw`rp-OvW&i$EOFtgT?H+72hHcPwpeX!vTswuO=1T0&Y(6aqc34F!QW&!Ij7lwT`HOTYkDdM2LizCA( zphM1}ACO)3^T@|^Hc2YE8EsF6dSBDI-uVAc?Tb>Ug1?(XY;@v>TNZ?M-nws$M zMo185rsXV~b6IUwKW!pII*f%RXqRkN>_ftI8{qnvFvO#mKZTr>+NQoa2h8Te?^5<4 za1WYgSExeK&T0=5d3R=4C|HGV2rPS`ZM7}wR5j>6wRb7>R^>oSp5&$kuU;JueN+w{ zJd#|l6e>lUA2$W3}w|I{WWcNQ-J^V@+6Fa7?(LOA6rQK~74) zws{EkTxsh#Q7MhgI)Se+3kHr2daz>0IJUGuvSTLunzecw<{1KfStbV+z8?5b9?-*7 zPqd;y!lu8HWc^Z>fqz70tF`vg!L`y3f#e?c#Rfl!mw#fDX}qk ztS)+RAc~U_6(6N8_>Tb(AugYMUNS|j9{{`nB`Q4A3M4mQ zE?_f)fKgGaqxAYuXIZbd={rJX$N+E9QI|sDz5CToimVoww)?GWnTfoXNV6t8;3@k# zkQ!I!$NCmmpY3Rk8ZwS9*R%4Oo%2&_hu@J~2fJ8=AcP2?4uvttk5{p30cI*v8-R?= zz%^5|Ep5dn%`zZ@@gc4jMk7L#TVNpm{2P|0B67!Z)IE7K_tfpk%S^7yVex~W?+9Tz zZgM#VGBP@DZAz_^T42NIM7@+az<$`>zxp5zx{JrS4!ise%66M%FcIR-y!>X&EofJ8 zMKZq!pPNqNO>ftSl?q9RBzkWAsZ>V$a13Y`L+s`pNoEeIhBpD3cngV5F%0VLgzP5j6ls{$h3tdv{&63@tpjIjt1D zZ%hqB6O4(chY$It1TX{>AV3soS+``#PvIkQaCJMhv*B%T<3E+no;ye54R1+e;KTt#k}a6i6%(uCU2pWc$AueVwFEv&S# z?Q4t~#bjR8%!}X4->)$D~aFY%UPTlu^9@Z_=r9+1lj{YPbvBC3wVc7FQ@8Ut0+Fiauwp>c3(cXd3`p9DIPIO@q`iD==uyitvgq`!6! zBgcWTkFcbDXm*-*al3RJWzY~f)i`m|oPXr9&!CH%v`c>s`kX4F{x1>M(1W zJqPJ}_#(4}HkcuTP>b2i>cv5$D=9s>9Fv!v6IqOqnQI`mxKOSB@qA$Dnvfo=2m*i; z|4eY=;XI^azcWwf`Kk1{xsV&O4?_$d@zM&dlCuzq>6N0;I5}kS_F@Rj^gS|)R(9X5 zwG@A^I{AdRLTxEYDJ^oGLkZa9qL)wzIg9bF6Ze*~HftE}Q9Bm=ClzEcEV zu--0#!U6DI8brVKsq4G8N_`_?!Ln9nx;{*TAgxZD5d?v(cEpNkQGp0wBd>_Q#bnqW z9x_j8XH;0MF14-?Y`QnFlurpSDdi4tw!QJ6RyLEJn|W+-T;6+qJNs7{d_?5g=gvR;LB!TBt+0@@CO) zCmEys{uM^G&dZiuvmO*#o71S7asFW`We&Se*F)o(p9ht0BX}j?-GhAS=r-L7!TnrM zpih=gG$D(vo9N%d+_~qF&n=@SL{vKKwlepU=I&b2`+q}yK|W1KM@0DT(-D#Hq(px` zb59#rCzR%yJamvB$FXP@0mF^;DpCx;1cMDSpJKzZ^3{VN8Ewlj_c{2~_+IMYapq37I4t zJW4AZ`V;&f;(&N_8YL9%lcU#cs(?9-R}f1vvS2pg_(*pT#XnYZ`3*p^lHF?T1EWuogJc)$4{6{=OW!; zNH+xKAwr)s^`505`4p(Xpo#OrN|5bM@Z~}|P7wqbhmmnL*sQC^|axHKjF z79S7IZ}wmjsq=DR*g&V4em+HnHG9cogX~gOJUh<#3&V=QSqbflJ)bf)6{qlS83m9_ zA%Q#4sdq2-TE9z%xf*lCR>pR<2u{I2yK;$cF`+wQ)9JWnVOGBN-f97&j4vQWz<;At zp$TkGDj;2iV;}$t{zm$3O3CjV31R3j1Lju3qu7%A5V~R#tiFLKxdD5&lf^fM`nIS` zaIwf$+N)&UFUxHycm{`;2!mj=>d->Le#6l9vw5)^k21MGx6ZR4!u}E}jpJXG+3LK0ufQl& z&-w1s4=7$*pA}EL#ixK~;0(o6rE;#QkHT1pkt1lbu*J&EtO#gRdy8-0?-YTyKz((ELfK+l@sX4a zHMQ8`o+9y-I!$S1m3FsC0xU;U@y`?Ra9F2GOj_?h6|3~%3^mNU6S>A}uLjuIxRb&) zllG9L9GfbW`Kn5W|#B+SyFWT>o57!Vod&p#ukQ-r1VmYxaYg`^UpOJt*o_zv!sVm$t{yqn_|1enrT*w zeFq2WDMcL&h!<(3fr2*81coj97JKH5T8hdavE3Ytb4e!e#?Gt*$)tc zQDDZP#7cD#agI{#`b2Rx9K~S+U!#sc>GY7X?slhlP{aHd&_=>PweEGzJSal%CrJ*= z5F^$wWY;y?;6aE;qsS<&zu=N%;}GBif|tG5kV~gy=@M?`{PW(L-@-w)(AjOJL9X~l zs@*4oviYj4T3y4P689v|(G*I)nHwh{h`<8+p`=0apOh}_bt^o^1ZZ+o=SMeiE$PMCqD%{ zI88(vvX}LOl!(e02m#q&?o3{v&}N&BKywwNUE<$059xHNNNxpo9lE(4rdXNCMT3Ol zB_Fa`o&m*kSI&-Oc0Jrr6F-)Yzo>bbgOMIt!3_>omlEb2giNzb=uTIf>)4 z&pkcANy2zIW@5Z@f#8TRHecI{8!9lmUKRC}^L;)BwsY<^9s^B2M2?_D)38xq^jWoZ z$Yggh-}ZP@cx7?4PQ%W4)nYY! zT~z=WWWXvy4PpPk-u9;s{tf-5a_Kx`NO&J0ALLU}rfVIUvuY~_p$c`cpa|WQDce$p z88wZ9Y<#LiS56V)tygQTKbkZ?`qy$qalpu93ATnE+# zAHXxT9r)^v)U`QvyM-s-`HVhw6tp88RW*$&L{@&v>@SDT^^dp0h;#i=Q+tF)WGNwW zr1$5#%R9ba`LSxuvNFhn6h4KdV${&>Z*6dESA{d}O9zRY?_&kQJQeAdc+XDdp(Y#? ze#B#c=Sd=aY|ttg{?XnVx88Y7*A?f4H#wmd+kZ5QU93(59`l_i%?b(ZasIDd&o`8B zYJ;Pn1ts7crMPMtNFH0w6(pm(?FdVx_j9CWDo-}h)st{Ivo zbltjPt3NP#zv~@asbs+OaG~H_8G-Ao7iJHiCB#~7m!Zag#L^$vN^wrN=hjuMQz4

W=LG+)BI#hpNiU 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 FtzbkEhhzW% diff --git a/files/c/bonuses/10.tar.gz b/files/c/bonuses/10.tar.gz index 1a06a9610423dceb024d2e6b9680a9ae9116f29d..8e98cb380270f3b7f36622978bc9703eef95d03f 100644 GIT binary patch literal 230116 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

shcz<6FgGgNWZ<+ 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

H|1=;3KY|MfY#17W5Fe}*r^yH2-$lE4H&Vn@# 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⪋)> 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 z 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 diff --git a/index.html b/index.html index cffcff4..778ff7f 100644 --- a/index.html +++ b/index.html @@ -14,8 +14,8 @@ - - + + diff --git a/search/index.html b/search/index.html index d7d3b18..c6250c5 100644 --- a/search/index.html +++ b/search/index.html @@ -14,8 +14,8 @@ - - + + diff --git a/talks/index.html b/talks/index.html index 721ca51..4396db2 100644 --- a/talks/index.html +++ b/talks/index.html @@ -14,8 +14,8 @@ - - + +

Talks

Featured talks I presented on various events.

Shift Left Testing with Packit and Testing Farm

In today's fast-paced software development landscape, ensuring the quality and reliability of upstream contributions is crucial. The traditional approach of testing at the end of the development cycle is no longer sufficient. To address this challenge, we present "Shift Left Your Testing with Packit and Testing Farm", a talk that introduces two powerful tools designed to simplify and enhance the testing process for the upstream contributions.

Packit and Testing Farm provide a dead simple way to build and test your upstream contributions against both public or internal Red Hat testing infrastructure. In this talk, we will explore the capabilities of both tools and demonstrate how they can be seamlessly integrated into your development workflow.

In addition to the current capabilities, we will share our plans for Packit and Testing.

  • QEcamp23
  • virtual
  • 11/2023

Packit: RPM integration, all in one

Do you want to automate how you build and test your RPM packages? Do you maintain any package in Fedora and want to automate the releases? Or are you just interested in CI/CD on GitHub or GitLab, Fedora and integration of upstream projects with RPM-based Linux distributions? In this session, we are going to deep-dive into features of Packit that can help you do your day-to-day job.
  • DevConf.cz
  • Brno, Czechia
  • 6/2023

Also presented on:

  • DevConf.cz Mini in Brno, Czechia (3/2023)

Credits to Paweł Kosiec for implementing his own React components for talks.

mf

blog and additional materials for courses at φ

About Me

I'm working in Red Hat in the Packit team and studying at FI MUNI while also tutoring some courses there.

Content

On this page you can find my blog or unofficial materials I have written over the course of teaching multiple courses at the FI.

Mastodon

Feel free to contact me on any of the following Mastodon accounts: Fosstodon or Hachyderm.io