From 28655bfb98866bad738818b170e537a31e74858e Mon Sep 17 00:00:00 2001 From: BrianLusina <12752833+BrianLusina@users.noreply.github.com> Date: Wed, 22 Apr 2026 10:17:06 +0300 Subject: [PATCH 1/2] feat(strings): count anagrams --- pystrings/anagram/count_anagrams/README.md | 135 ++++++++++++++++++ pystrings/anagram/count_anagrams/__init__.py | 56 ++++++++ .../count_anagrams_illustration_1.png | Bin 0 -> 54497 bytes .../count_anagrams_illustration_2.png | Bin 0 -> 50606 bytes .../count_anagrams/test_count_anagrams.py | 24 ++++ 5 files changed, 215 insertions(+) create mode 100644 pystrings/anagram/count_anagrams/README.md create mode 100644 pystrings/anagram/count_anagrams/__init__.py create mode 100644 pystrings/anagram/count_anagrams/images/solutions/count_anagrams_illustration_1.png create mode 100644 pystrings/anagram/count_anagrams/images/solutions/count_anagrams_illustration_2.png create mode 100644 pystrings/anagram/count_anagrams/test_count_anagrams.py diff --git a/pystrings/anagram/count_anagrams/README.md b/pystrings/anagram/count_anagrams/README.md new file mode 100644 index 00000000..40ce9424 --- /dev/null +++ b/pystrings/anagram/count_anagrams/README.md @@ -0,0 +1,135 @@ +# Count Anagrams + +You are given a string s containing one or more words. Every consecutive pair of words is separated by a single space ' '. + +A string t is an anagram of string s if the `ith` word of t is a permutation of the `ith` word of s. + +For example, "acb dfe" is an anagram of "abc def", but "def cab" and "adc bef" are not. +Return the number of distinct anagrams of s. Since the answer may be very large, return it modulo 10^9 + 7. + +## Examples + +Example 1: + +```text +Input: s = "too hot" +Output: 18 +Explanation: Some of the anagrams of the given string are "too hot", "oot hot", "oto toh", "too toh", and "too oht". +``` + +Example 2: + +```text +Input: s = "aa" +Output: 1 +Explanation: There is only one anagram possible for the given string. +``` + +## Constraints + +- 1 <= s.length <= 105 +- s consists of lowercase English letters and spaces ' '. +- There is single space between consecutive words. + +## Topics + +- Hash Table +- Math +- String +- Combinatorics +- Counting + +## Hints + +- For each word, can you count the number of permutations possible if all characters are distinct? +- How to reduce overcounting when letters are repeated? +- The product of the counts of distinct permutations of all words will give the final answer. + +## Solution + +An anagram of the entire string means that each word can be rearranged independently, but the order of the words stays +the same. This implies that we can find a string’s total number of distinct anagrams by calculating how many valid +permutations exist for each word. The number of permutations for each word depends on its length and the frequency of its +letters. By multiplying all words’ permutations, we get the total number of distinct anagrams for the whole string. + +![Illustration 1](./images/solutions/count_anagrams_illustration_1.png) + +Let’s explore a few optimizations we can apply to avoid these issues. + +- **Precompute factorials**: Calculating factorials repeatedly for each word is very slow. Precompute factorials up to the + maximum length (1000) to make these calculations faster. This is because it allows us to quickly access the precomputed + values later. +- **Take modular inverses**: As mentioned in the problem statement, we need to use 10^9 +7 modulo when computing factorial + values. This prevents integer overflow and keeps the numbers manageable as factorials grow extremely fast. It is easier + to use modulo when computing permutations of words with no duplicate characters, but it becomes challenging when we have + words with duplicate characters. This is because a division is involved `(n! / (c1! * c2!*...))` Normal division isn’t + allowed in modular arithmetic, so we use the modular inverse instead. This will allow us to perform division by + converting it into multiplication. Therefore, when precomputing factorials, we also precompute their modular inverses, + i.e. c1!^-1, c2!^-1, c3!^-1 using Fermat’s theorem. + +> **Fermat’s Little theorem** states that if p is a prime number and a is an integer not divisible by p, then we we get +> the modular inverse of a as follows: +> a^-1 ≡ a^(p-2) mod p +> In our case, MOD = 10^9 +7 (a prime number), and we need modular inverses of c1!, c2!, c3! and so on, so the modular +> inverse of cx! is computed as: +> cx^-1 ≡ cx^(MOD-2) mod MOD + +In the example illustration above, the final answer becomes a more manageable number after applying the modulo operation. + +![Illustration 2](./images/solutions/count_anagrams_illustration_2.png) + +Let’s look at the algorithm steps of this solution: + +- **Set up the constants and variables**: + - We define a large prime number, MOD = 10**9 + 7, to keep calculations manageable. + - We define a variable, MAX_LEN = 1000, representing the maximum possible word length. The length of any word will not + exceed 1000. + - We create two lists, factorials and invFactorials, to store precomputed values that make calculations faster later. + - We create a variable, result, to store the final result. +- **Precompute factorials and inverse factorials**: This step is done once at the start to speed things up later. A + function preCompute() is used to: + - Compute the factorials for all numbers up to MAX_LEN using the preCompute function. + - Compute the modular inverse of these factorials (used for division in modular arithmetic). First, the modular inverse + of factorials[MAX_LEN] is computed. Then, we calculate the inverse factorial for all numbers down to 1 using this. + - Store them in lists, factorials and invFactorials, so we don’t have to recompute them every time. +- **Count permutations for each word**: The function countPermutations(word) calculates how many unique ways we can rearrange + a word. It uses the precomputed factorials and inverse factorials for fast calculations. + - First, it counts how many times each letter appears in the word, letter_count. + - Then, it calculates the number of ways to arrange the letters, total_permutations. + - If a letter repeats, it adjusts the count to avoid counting the same arrangement multiple times. +- **Count anagram groups in a sentence**: The function countAnagrams(s) works as follows: + - It splits the sentence into words, words. + - It finds the unique arrangements for each word using countPermutations(word). + - It multiplies and stores all the results together in result to get the total number of anagram groups. + - After processing all words, return the total number of valid anagrams of the entire string result. + +### Time Complexity + +Let’s break down and analyze the time complexity of this solution: + +- **Precomputation step**: This step takes O(n) time, where n = MAX_LEN (the maximum possible word length in the input string + s). Let’s see how: + - **Factorials calculation**: Computing factorials for all numbers up to MAX_LEN takes O(n) time. + - **Inverse factorials calculation**: Calculating inverse factorials in a backward loop also takes O(n). +- **Processing each word:** This step takes O(m) time, where m is the length of the word. Let’s see how: + - Counting characters for each word takes O(m) time. + - **Calculating permutations for each word**: We loop over character counts (at most 26 for lowercase English letters), + which takes O(1). + - **Modular multiplications**: This takes O(1) per operation. +- Iterating through all words: Let L represent the total length of the input string. As we split the input into words and + process each word, this takes O(L). + +If we sum these up, the overall time complexity simplifies to: + +`O(n) + O(m) + O(L) = O(n+L)` + +### Space Complexity + +Let’s break down and analyze the space complexity of this solution: + +- **Factorials array**: It stores factorials from 0 to MAX_LEN, so the space required is O(n). +- **Inverse factorials array**: It stores modular inverses of factorials from 0 to MAX_LEN, so the space required is O(n) + +As no additional significant space is used during the calculations, the total space complexity becomes: + +`O(n) + O(n) = O(n)` diff --git a/pystrings/anagram/count_anagrams/__init__.py b/pystrings/anagram/count_anagrams/__init__.py new file mode 100644 index 00000000..6fc74ff7 --- /dev/null +++ b/pystrings/anagram/count_anagrams/__init__.py @@ -0,0 +1,56 @@ +from typing import Counter +from collections import Counter + + +def count_anagrams(s: str) -> int: + # Define modulo constant for large number calculations + mod = 10**9 + 7 + # Define maximum possible word length + max_len = 10**5 + + # Arrays to store precomputed factorials and their modular inverses + factorials = [1] * (max_len + 1) + inv_factorials = [1] * (max_len + 1) + + def pre_compute(): + """ + Precomputes factorials and their modular inverses using Fermat's theorem. + This allows efficient computation of permutations involving repeated characters + """ + # Compute factorials modulo MOD + factorials[0] = 1 + for i in range(2, max_len + 1): + factorials[i] = factorials[i - 1] * i % mod + + # Compute modular inverse of MAX_LEN! using Fermat's Little Theorem + inv_factorials[max_len] = pow(factorials[max_len], mod - 2, mod) + + # Compute modular inverses for all numbers from MAX_LEN-1 down to 1 + for i in range(max_len - 1, 0, -1): + inv_factorials[i] = inv_factorials[i + 1] * (i + 1) % mod + + def count_permutations(w: str) -> int: + """ + Computes the number of distinct permutations of a given word, considering repeated characters + """ + # Count occurrences of each character + letter_count: Counter = Counter(w) + + # Compute n! for total characters + total_permutations = factorials[len(w)] + + # Divide by factorial of each character count to account for duplicates + for freq in letter_count.values(): + total_permutations = (total_permutations * inv_factorials[freq]) % mod + + return total_permutations + + result = 1 + pre_compute() + words = s.split() + + # Multiply the permutations of each word to get the final count + for word in words: + result = (result * count_permutations(word)) % mod + + return result diff --git a/pystrings/anagram/count_anagrams/images/solutions/count_anagrams_illustration_1.png b/pystrings/anagram/count_anagrams/images/solutions/count_anagrams_illustration_1.png new file mode 100644 index 0000000000000000000000000000000000000000..726052a2393b5074cc5dfa2815757b58241e8fb5 GIT binary patch literal 54497 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

Rz}-q%*IB1!LOK&&zi_nis3?? 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 b8E*GniN2NWqY0{7oVc%|b*JR^gYf?a{ekT* literal 0 HcmV?d00001 diff --git a/pystrings/anagram/count_anagrams/images/solutions/count_anagrams_illustration_2.png b/pystrings/anagram/count_anagrams/images/solutions/count_anagrams_illustration_2.png new file mode 100644 index 0000000000000000000000000000000000000000..25a4def0fd35c832adeec958235a9e2befc09af0 GIT binary patch literal 50606 zcmeFZXIN9+);798P!TDDfC>Vl2#62?=~V%d-h1y-LKQ+UA|le17CMLm(t9WYf>H$p z0qMQ>gdQN2v+&v5XYc*J`}=eLo%3>CF)M4fF~=I?o}(>8Rg`2%uH3o;004>Xb15|d zAOtV*lrCQczeWyA4gdgO*hW%PMOIRhQN_j4%EsOj00bi9VwJ=CC9XFb+o@hNl(v8v z;lEmYl4buyxdZXtfmYx4xw;`X{{F~)KL0o0KiAGGiU-WL%pDO*sVKklFc2Yn$LO&; zFH63!H+8T3^Mj&;4s*YqZL3M|CU3$oq6i|Q{5BvnLA88BZP3x4^-{xA66#IukT66{ zbhha(AYFj!K+AmD+&dBU8%m$T#@;Q03jtJwp7YsCuYDNYhVI1Tts}$s)vIpI)J6Eb zGJDky5r`t5oDq3&;EFa+e6YOZXnY@CmkB5@V+N}@wm;^U_QR{ z3CDBU7mg>^o@eo_T~gu9zna805~}Ij_z$>cYoq5>&+?`lf1J4Pmv^g_#N^Sw>UYW@ zc83QCclE}ExuQL(}(u1tvic!G^7zBDcZAi zh4M25w3S$uvP?Rtv?uny zQdG`zsq1M$nSpTw&}d!yA_5b37_Lb@6_48OwC_P&Te$0a}h59rRklej;xiUBJcpbz6=oH-TF(^z+Yl` zw12Lj;jsc2z$S3NOva(<&b#oU>O9$5%jxTTa-Nb=6h@775x&i<-^Z5r)R_)#468 zVh!OE6cmI!;)ZZ@bAUZKTs<9LntE_JxZeG1l7G%4W$9|}V&nAE#?gWCd|p#CN4J-v zOibqs{rUTgPD>A)zgKc_{l~Vz4MNUaAY7b}Ab;ithl-rv6;iSBu(a2evVnp;1J@Aa z;dw0byZ`^u^7o4WGE(R7kzCvYkN$P&zcl^lP)%1$7fDAbxaLc-zn|AX2LEg0KL(0G z&bR(AtoV!1zwd&K7P}$>`SZ}ku6(5Ke+NECIvXiv4e%S3vfqC>;J>Wk=lmP|s1NdJ zEF}Vf1RyK*M8gAbJ(Z~LS3j;Tom%ZdrgX2;;AOUvvf>Y~EyzYJzc*kkI+gs~Ex%Li zSwysR%1N`y=JPSfT|dJtjh`hp@cbwgcC|*QV!CjY(XN(TL(Q~#a< zpV9U2ss5b?PXz$)QB*|d&;O+99|Hn_cDnz8;`3GsdPI2WWBZ4@6V-?*KU^IhL(r@9eFlEJ|Fgl@ zJ6|JL%~aB4_YYq)fXlIZ03El*TesC;xqu2+^V55q#hMjor?{a98U;FUo2q2=qEQ~kG%Tx)*|3}?yH&G-c!6mHT-P@aI20PY0X8+ADl}(W0#C}&mHTa8D|4ZQicQ|Mlda3dl z!>m;!H$Y*WzD9G3G^-gwo$0ky4tDPq^@(4WVC)1RfBDsf)xX6g5|qm>uArZ(<4h`( z_|u=UMwPJQWm{TI1>DWU-6@B6^9k>27zn%i_%(y^u? zzv9Q)?TcTtS!-BopR0K0l~AaI=*lao3LKd7t8&5PxBF#{u$Z(T+OOT?D;3g5m$dqQ zcI~;vPQuArjNRhhBf)c0d@Vrs2S2yNK>7C@iRraSknki95J&Y-O`=vku*^p#ZDJ)5 z`nrw=??t7t{o$R$iC~zOM+JL+^7eNVT9=ub(hFnhK8clrOWDJI8hne#yQzgkB{hYb zh0i(+(dFtN;0CyS+%WZRWR{PA(ZnO~^`ZSyS?Q-%aBaVmJ=&`FO3p<^|5GD@9_pS{ z%gQ7N-E8xY;GvEAsL8UAG_c4BTzGMO3!>9@4imhyvEsYhl9XSrX(v3Jc&+rrf_7y* zrXbCttz*qsMA!IR8#&PQc=*j9{5}NL|Irz=>$3clj5@+b8{-DY3q6AENgHD$`^XJK z+JUMnUw321)>Pk5(5a1WwQ&2rDo*3t;rsPxNk47~j{Et{vDvw8XASPBBy0PtN2aEp zbqcKc@4Ckqc^r0>3XhHxecIS$5i9c=Lv)t*W=-Dq1olO%Lp3Kdif#)}v*a7NP5fe? ziKMvp{sp8rXRJgJv0uw8|5Eur=lLGR!)QjpeO8baiH?xuiV#Tfig*qu@3$3;*Dxr` zF#*}$QMB{7=)ukTkW6qBH1b}X75Q`OwL?H8JG4}O7GsLPzyWjwZ4Atf4G+qs*&q$w zQ4tKkhQ#VluiN<#d_uI$V}92i zi^X|3pGX1^Bd@motrLDA1cwJ0Y8U93iXU$V{Yc{Nj3;!CTOG)^j-cg782cTztPT}B zM%<#(vPYCX)&(Wb|3vJ^5q;k;y>!2bjp379EDxR=2uv4g7s}!!!=yUc!4Zq5z zgr@HCRqQ3(o6)DZkW%VE*bKN-cN&gTnKl@KteZ1?RnA;t+?aLL*=hL|D)x&|2L~#4P4}g5WM_o3tfvQVb>Af&bxSmgkDiefI&>nQ3_Tb< zmNlP%yG<}~o}D0>HnkG1{FRa|h;vS6>xL@oT$+C9y@7;{DaimDS1SooC-$qKr-K^OHbxiH$t{1hTS`YNEsxIBjt%U4E{ zvES<-C!Q4pS9R>mcKq;A zaz%0@M)Xz<1^PJ+h2?(GD&%^P__%=R&ZeNhuTam5(952H~jsXoZnkV)Kb?Vxw?VwU}vOzc&TVlq@n7ETO3);Y+7Z-Qu7gZ!-m zil7SA*uZs)TO)7VX&ZTF{YV!VcYjz{I_7{J;iwv?5Nme7NEBNI++cmazY$ZV8zU+# z4%3>qoaKbWg&9rrGe1$aL8I)T0 z6I}@TzeJ?-=#Sw1z;wA=1D+U+J@ z4>=`ko1mOziG9E-Qj6>YLc1T$+^7)DAM2dD82_oFqtNFgA z8Tx%kpd|3OdQVVTq>X6KH`A?@oBMMCEKnQ9Y9+5TO@3ou@q7aOI!GM8s&BG+x2vmE zTek0BAc+W0!hf{Ze;-cy{$5#wPuG6wTxHepq>wmP+J4G0_P~v{E=r`v8oKmh2{TY` zoLMk*`o$0XMtLMu(w{g!tT_A=4Xlhn*a#3=FU3L+pi4qur>3$$KSLUNp>Q80+U|W5 z9r0W6!5pB-pr5pmwVl4Ar;{;L>6V(dgWE{-A(qQ{WOJ;iQcyfH{Ps}Pg$>R+_Gxd4 zagi;W&o0Wd-pQ*f3R?9!_gf8r)dXSuJ8vO`C6c9?Td>al`iS&vK)GVV(ckFiaDL)* zcsK7YPBoTKzn3H}Z3&~%Z;QMQ#nfXFa&ZqvmeTzld~y43LkOGxR&*VY_jkrwA&mgx z1x_Hl@py`=bK?ivyQZsB&g%|du_^K-wQW$@QFN|Z^fqR@V_72L1$n+_vnb8jG7TDr zqqsG{!V5e8BGAi9cVTmACdj^v-8ThhqVp@dYWi2PScPsNHogwC->|hJ@Ii4lO^SzV z&%FO63XvCxg_n_p5PrRY@tp8Xs38st;VKqcZRRF=9f1}2Mf8yeh5O}q>!1K>QM{I3 zK^;Pefxw_&3J0hL26*2F!F8;naD3z>#-;ujqME)lkUHU~M_+pWLhd1oV2Qa~?&VJp zJs4^fvEr4s6RzG>oNMeiO@UYzvxLUqsF<-DyJ)1sUcM!_IlA6hq-DL9YQJiYX>R>o z&=j)oS*&5?-hg_yAg~s~wDp|po~9NHAm@YItaU&*OovwW>+%z%ed2(cPHXOM%<&@= z-qwmg{P{vWi{kB_vRnd|5!rPFDFM_O>rM%84fHskOIAkaDc{)6r}S;`-si;C_C%l) zn&BHt%QutR<-|UEiku`z8BD=ymL2R6J=fUWIDDM*=zOw=oNj+dG<~Zkz;PAtmqHk7 zTMfNd+jdf6`2?ky3;HMJ79YZJZ2ENKtbR&4N41&{mA7JUJZun7bB}`#9A0HflQ+1H zTQx_cgvwl_#tJOozhF(ga+-5mfHy%)I>Zkh^ny-`2Z(hJRA*Br|dh*9Tc}NZl zEB-G9O+nwImusVy`I`A!KQ5BovY?XeWLmg6TyCvAW(hZ3PqKU0AYzqgxT-75D2Jax zK;^mpg>GlGx;o2+J)WbIMhLo67oD^*@qK@7FB<8f$2k05^4UUwurZMc37PBIwn*%w zI}qNu65z{;EJK|G#%QqR8-7M){(%&8DE@SE4rb%ESg1a3s#hFMyge+TLN~c40`t!V zzAT`Ka}*B#>wM-+^%0WCx zv3zRyu8stT+-;D!Ae4j5()P#~Hvp@-mJz&{lFZCtrVwmuG6Txtha+_*bzcWr= zU1aJ4+V4lwdhb`COoD-ty*-9h@3haM{;+uF(W^LD= zY?OcGt8V*PbR?xLWJ#kP@66!%cs%4Kq8|9tApbLez@A+@BEH|xrR@-1$$ZDiRaV|s zQ>=dNDQ+e!WPDHW=r(7ET+xuC4iL-u1=Adv9s%}4z|Q2@{=1RWj% zKFR@3!`fe@0vXR!R>o_}D;*|AZGU|+<+U5E7_GEJdIZF=YrD5`_tLu+$eqiNv3p)t zq434Y7ojbl0HN_VvyU6j39)m$#Uzs-!&!=0nvC`ctM~sAy1z39iPr-RxE-}N7ivD{ z8>hjJX47>Vymq~C`=R<9?Mo2PvvvYo$qth#fhY zxhVy(DN>L_R0_d|sdCieT$pNYU}i>5luuzx+JI4Hd72mWj&i>ly@qT+I}hB=ZeWRz zauAvz%2EunoWe~Vy3DSqZNQ~~d8Cy^==xvQtv;>LQP8&*c51ytc;F!X9PKsLb97 zI3wfI#CtR`RG8Fn_msX?IMq3IgWLlzkJZX@Dkxc~biFz-CgsOOsG5ieUP+Urq=9{# zlV<0ckr{-(G!FNK$wy2RPlZ0ytN!`)+U_qFv?#}TcQu|e!JSLp?f4n@G^C*YI@W)}J-L;_}dhhkp&r4Oq zX2im{^>Qe310nB~7L>(8eiQEzdFD|?uG%b~Hzxg5#&OBa^}D2Enr*1`r1ti=2Zfh1 zusRPMRtg=p@e{EZUD{qb`(AIp8tbtVh8>Twj(R6@MOaL%3mU@ECyP(fFh#79PXz?g zUU%I*$yavD%xadWO5anTG&VG%zfF1n*csM)i~f33*HG0Pd3m4Od-xgATy=iioU-Pe zM+>!jvk4DBNQMei7%U%p;i-f^OdIi^6L4+`b27zKfwu3c(`T4sI-V@iuM?Ph!uclF zHZ^LacSrl2+7UnkdQI!Xp7SNk&bdp9F0*Ku@|3Bu$n}S&;)@1jl}n%f6qe|Xi|fMDC#~;Rt--&x z5%=6RFLv`+<`lmRES9+~)BbIiihvQLE}kDA5#lGiG3P-stF8o7V(Nz_i9FUx@t1Ji zCXGP8Cc7AGt$3U3%4I24(2>Zq=)5ZZG?6V1ia7L>5qu=}L3)^&MM0tT0%c6Va-A`L zfh7#uUBl)hPmWxt#~n9x&Y1xZ=;0#Qsl3;lKeF@mwN4~hw6$r*=#=6X$aE&4qoZC= z!k=0$>>1Y$-2)uFrnwM3iqc#7F^^T(?|{l83mjw9EeES4d8(v-8n0nAx34glZZfB| zGbOfVp_EF8u6GtpA~udchKqo@p&?0O#yom@v?W2~uV}Vb7iyjwlF-dkj*QGv6Z!O# zK*Ev_4O`AG64#?I$Yf5SP!z_VJTPZcsHHQ*H(@+|K)avx4hx7Z-1V$#g(xZ`2n0Z# zz=Rk_PJzBPG@tP_6MHJ`w>e*Zka2qSGOZr)SY;tDaEZ&y*O=LuLVpv6jxkPVyrTiM zWizj(>?kzJ2gDsnZeiU;Hf-&DpQ&CI)9yVJXB~+YApx8EYgi0&XtMZikj1yRr%l3$ zdIGD8>fAqRkOQAAIF7FTQ3<*80O9V{a;>IJ>9FM&}rgmLhBX9{A{S z#nLrrdYx0Fme80sBY}$<(YHk^VTQ2p*LwV{+zyxFuNocT z6Bx6YL%!VtyD1@8l$j_Hmohg%Ia<3=rS~S;b_+k4W={)-ibAn&xrL|~Um=KVRazH8 z7p9w=_nyo!H-lVu_ z#jNx+MM+l@Cj;CH;Op|iA#3v&TFgNmRZlV0;v%b5VQ+nXrQx3@vwKnT1+!xq6Gt#`VXsGadiR3yRZQ@;WX1t&NrE!-&G+Z6BtyOz$RJ!h% zd^o|vhu&i`s4EUa`!x^-YHUN3UYjeSkRO;%t~^pB}=`aCbhe6vPD&cfA{D>^ld%= z)&%@QvLpFY=^|khG*WDAl#s}79xso%y~$B{>_>>y`S}IC5rQ??X^XX~(c3uktNPVr z1pHdV1PJ5WWUZWAGh1Eexh_PGam*gOXwCY3j7%q{qvyfhfqqjl;}$vB}XP;vBGni?r&5T z08usk?hk`t(1PMcm-mPb)_JlB?j)3uY0?NJJjFGN0WODUKKl2feUIbRZ3}p8&64Zh$3P?^_ZI= zMeJ*1*(fewaIA+%+O7}?r@}AiEVxt5`}D$bKS)tU->f=;|sCB7E>lY%4k& za@gSEJ~Mwe?$tt~xAEC)`R$Kub(>kxt@w~sf-h742YvS&uif00c zadz)}HFuYQdQWY}`tCGyaNY?exYKewmZYi0x@e$O;oRPt z=8?!ZHq)v1n=^5!FErGqApErzbTk?=ls?;Sb6m+k)y@3s@T_wpX1!#M8GCW0B#7Zv zpU=dbwH^6oHw80Hx2OYgx{|j({@4=Ma8-n{DeeU+TZ8q%9(>H9DJs$A%B9x zHPRq*RIOhdN)~io6o8;?2l8~|9%$O19v?a{jUk|RqF%ctihLvY&;r80K||$Je9qKz zqq!2^31yg6I`wU(l0_W-&7J5itk21C1X|wtAWe(KXubI&^Nflrew4WpEv-KFgVNRd z{KzQWQwUl1>K<*)jeuI2r;&BzJ|8mn2R`u+gU&rRWW0QJQm7i1{HeR_on7H=n9}4+ zFo1InRxr|#3WbNE5g%z7Zc-lXS8tn+mG#>=56Qkfp00K19&1m3|GZ@7RA$WT5(BNr z%m$il4EI&X&o9T{9#tLT>#(whRu;ja6xI%s%;seej%EYdH*x~=TkmUheWQMIf9cHz zDQg^m^5RpJWO7?*S*Y(|gU5@TXfKjvWWO25Vwr5_+e|yE9aVRwD%K0@J0Vc&A&BM2 z_^OX(Kv+bxQOl>~?UgZy+?vrVZSQuVo%-7wVM0_KvfUZj^i>GQCC`=bLA(#&$=9hJ z|KJdEcO5?wxHst!=0co{pAao0316iz78gryk@^}uAK_0ODs<#YQ9Nw^h$8G-J5*ief^6?8%z~tk1q5EKphSO?LXl;m8r21BK{K%mlMLJcG z7@5e2`QCkOI&q4LMqgLSHom$~If|yM+-(g?;eqckU$-{9O1kmTcpJ`HU`P1Wq=+$NpyfhssE|ovIxOYVLzjTtkW}ErOGlBbiMm_krF@( zp;fL-nl0+Neu)U`zppI|Q{>zSfl2Wo{_qyrWp= zm+h(`?@7~>O7)ufMO~|4(a@T4;8NaX+jS#}v?{v?wS)CJ1Y6JSc*k5KFt9vGs`tw& z$8?g)ucD+JdU|xP^;Og|S*ZycS@j~sey4SR=c9Lt7=i4bNMYgt2@S$V{6{2`51sJ+ z5(~pH)TY<6MY>p{p0)&O2(F~slrBsy^upUKZ&IgW{PWw@`CWooS0CY50U5eV?m>EkBaMYz}&g)F z5-UIPZ_G5k+>Xq7BeNwj@{3#g`xD)v)N$`EXN4h&BJK+<%aS+N{YEYf+Na-TV$T52 ztLEKI%0I4iMi-bsj=yPp>m3s)Q0IGGV#iC@<#YCVM+xhYait_HXJFbyQyD`0yxHfR z-zbgrp2)OVl8~jFkJ+!Y``UXH??h(~-+lhDY+)wnz9@X{(lx+!;^{8g-#PDi(4VvN zRMSs84@vR_ai=_|Ou+7tJ$V|gn;-r}*WJ*4T(jG$ky6EKT>SpoGR(Zku28>!)uCS9 zK0QK{=pmTuYDtQ{WKzv)`e9g8&pUN`B@=$3i|jF?CP#d+%g|Mvu1 zC;)X^t+YIScOC>va9*oEM2r>o-kGqE;qzWnt6C=h%WTT{MKCF3=by}N`Ht6qxa60c zD&8M^DnP=4^1L`BS3PH(p1D3qB8ecrSjUv=fkw$YD)ubh3swJ!BD%mEdnj8$C%4FR z`R1SD?Kc9|hy!k}5mEgKHvWyFe-%;OWC;KgoIh*)3%LHXy5hH{kKX~?g%KGne{|-b zVavZ}YX8gP%X<1>3S;I;LHQXkB@_+(bGHB6OcJdilvvTRQT-O2|FaJx3>2lsNRDNq zKfC((8XayW&{CLto=g5m7yiBKr$!QNhk-Sm|Ew7?vFV_!3a+4 z)Hpu3SL9WLz7^kX`0L?!eEy zf_nFxRSK@bO4C@+e*2L!6f`CxiAv~7t8pvA>49tHiIDj#=uoENc_;EmIG>D3IJH!x?icEreQ z$;cZQC}=tHc!NqHkVw6us^7sj4A7b037C=0C^$D$sBA_#u60@63TUoPCUCo4cmjl{ zeBaJ)0w*``XeS}Sd*pJzGno`Tbt2eqUM64yjkiY>R+%vipz~Hz*WS+w7Gq}Aos&-E zIVufUkjB!0u+3678NqZOlKPwMyZq$; zmzARfB^W8rxnO!e=zJngyesCR6e#Fr{zA0g_@olzZ^QY@~;6y_8C4E zxFng>6Lv6T){{UT4W8W!-NBzm&hgK;wc`ExS?t0|7Yq=To!bq<2ChYe!NfG9Wa7sr z>{W#(>`D$j0QNIE_jt4k4s&pyWPvs}et&;7bx4Vlm!&j@l-+|!~ zSY=8X6ss`oRC%F&CMFovEGx9-*vnuMtcxn}um^=1NwaG>%|)HrqZDY@-17@6BP&O& z{QdJZdQ_7-YgmD7ZtSx&k#FZvsF|np-F?&x<#MR{IMp+@Ta-C5RyD~RtN|)z9Rlr; zL=Zm`*rElEdd#Cltxk^i!uGbig)tQ%d^hipJXgy2j6aPt-m9Wz5bi}x*lT-F_hAcr z^0miy9H*!*tBJ0se8N08^1K*%TI1oT@L1JN|FI3!x9I5J1ztFms^41qidcbGsZb@K zQq4>!!?Hzs#4R%%W_+MXXfHPw)6+^)zNB1!7Xn4+`C&c;@9zy`6;JH@Oys>6-+W-U zEdzDBNZY}t-}=l9Yj_+99d*(do+O7?Ksn=5)L3rP{uO7vl-~9fR9FXV1 zmO*Qurg?*Gh+mk(g7{k=vBpvLw|xfP(s(7G zT^&!;%QrT|ZnfIyG2Gey7CGq1IXifUBiIrZ%?rIZKa@UtLlbAE>%-F0r* zgpe1qM>?1Br)%o>%X-EAt&|PVDtVzLl^dR3AGEhG`BD=aU5(QYV;ghtc}=1%96%?g zdl}!vX3+?tsNL=gp&@K6JHm;19tjAq)NTazT!mjuzwOX<&LV&NO@6uAId#YJ7ZfoU zr_PXt`juAWyesQcHk?bDKtjiOOx1LGkV93dx(qVz;=&yun>jbumA}VNiu2)-~7>?ii@y{eOXy+qXb5QBbTznc0rc<14S@a9>_Q<lV&V>T(XzvxO`MPJGH>)HrRvkk?yU_Ge*jm z%KQ4I^YboG-ALxe^0WN3AAOWy7pSr`H}6<5(yBiuq&aA4Y5z{`#Mb)mtENj~ z1nQ8eZ%;YD*im{tZj%AwP7aeZ2I4u4_13vpG}h_)LKbJp#Qh!K5q&;XaSVFX{U&K_ z&yJs@PFepoBnk>2d{g?4384xqm+WHNB+vCvY8ak@Anfb2SN>Cxv{nOogC(hm(V+*L zdG>exkK6so76%p;-JQf6+kb^(O1G^Bydx*QH5QM#ny4Qp%^~(mWa|~RJuwe{)xg8R z@~HMJp1YDrpxZ z8lcrist3VR*RtO)x^P|z$nCBNt3=bCcRdyM6&HJTwRYMSyMJDAg%I2wmIA_;zS4tc zu_0(yv2BWC$6cYj%e~I9x|97e=kJeeVHk(Gwx}q>{?D?M-iwLW(tQ|W-4IM6j$@LY7AXSTAm&F2(ejwxW9@c)6J>xR=Cxvz>qg}bU;*P58LV!pL1d( zHR_pTsBj;nzYa4H)|2y6o}zay^{VKa8|Q?L2E!O`Ea4seO6DKycbr&X-TW?FardjV zv7hgXmx;1)`3{HQkSIGMWA;W~RH(G`dWD88cG<{yw`Fd2GNhV0^)$iXq4$M1vc7Gt z6mnCjXrB4q1QzBr)rk?E<`lJ^iaY5Gy!DkPhLW^qJoFR#)tUd#vZZ_mF(IG!Zj4vd z?NaQBb6bV0GKzk`wWMt}(k>AZZx zM{istvOpx9G2zT-qQkH@0TH{?YZGFOne3#PL#$3($cquXp%=iTV08+sG37dWw$01} zbS2>OZEjjOc_oi@bCB)!cZgP9j`n8jE`<0IA@`d;K8p=ka653pc@`IM>psQbt?x0O zt}8xqJHkV!aKd!XU}#u6r0$Z*ogWK-;Vqc*oO)dea~kp6}Aon zxmyp1KH}w2ZV_076B`H%$Yvd?a${5Sasb<7WenFuL$J= zcsW}x*-z9~%7(`-Wxno`q4#VaD5eFA^Cg$0Z{&Xl_&{4T``v7>cF|*^rw^d7?4d}g ze*)#VN&4QQ7RTN#;U0e;PRgkgN2BsJdQq($gR=0#WQ@J*g`USPDm%<{7gU%gk^_ga ztCz_1&kIv$-Ych9uDJR+8($|K*|0$FewOj23askn7M_bYG(UNN<8D+{C@P{%xxt&= z-EimvXBkga9WSD|nkQ$xBxdLSxOqqU}S1{@50s*pa?96Ovjkv7A zpdj~P;p5EOyyd}BNK}$kTe{!LU;}Ptj`5<&_QOVT!pV0hZ^kVt;2QH;Bc@pORF=8e zMDdXj<9aj5MJ`(AW^{wEjIhTLW$Fu-5BuXr-bl#7mG%bxe9|XY^(PmU8@cdM*5e5; zk86?}U}=6crN?tf@-ff@b%tsatMKM5MVFLo2(qFpDwe8M5+t4GiZ^j0V)2uh} zN4eAULr~r*Z_EJi?J-!Dl6N{)bIrIM678$(EWa@EiNQLS&9D4f@RBLU{af6!sH#6o585EJ*|b?E@bNj7C!Wfrc`!HJRTbFX=UgeL0Z#V3{B6lS7}j=@ z>k>7)g|_*G7XyeV+(CioZ5?-Qj}c=8?zen<0t)o){&_mv!O~?cg?1Zyf-XC5%%3=-ZfquEKH`v-MeVyyElLs)U#{R1M@|x z?n#u(k)r!L!gJv~W=j=!@KoGzE)#A;Ba_~k4floKoUCR)qLSB*IcZ)U98;Rv#-Xns z$iq1+y)pGe^O|3xS%D5=75tBA=wLx2@)?=XAXwp=%w_&;eRB9a{&4#nfE5F@9IDnJ za6Aa*WKQRMj$X$W-k30&iIANtbgDxfd*MQJwt3JEm!qGYjvv&8jA-=-Kam~jITW~p zl^${3`j0w=495kOfZd40=IdZ_E05#EY~AGUf<&iwT} zLmd6-7V9V};RmNDJrq?HI@naF9|(s!&?V78mNJnw>hZ3%?#Do{-rP!=IMu+K5lT!@ z?$_2}qG5%aVH4(>CtFK&YaYG#i%zuB2{-ib_n%GR)<2#~6B(qTEW`E9)*bt}`^<|+ zM|}ewQIagktpb|k+;GvmKoPyA>^j;UV#`TZ>u8n2l4}$qdLc^F^F{n)&bd|ZSaIuX zz#KGpJ?ZG$+#b@el4LO7TKQ`Aoy!RSWZa!>|6(GoI|oC#)^}k)LVQnMb`;Wt<&HrM zsdyu{si-uDwEltCim^O(?ZX+bp1~8nXeBl#ayPt3saU$g8wYn2jKxomA|{SK`0bEC z@VfKGMOdzTNn*@rG8rn1d_U(06H53`vM>=72VD7>5r=>DRYBaxp#Nlq@w2q*!OdWq z>Z6aJ%=3xsfGbueP+ZQphq_EO%S!E5;r%Pv?k zdM*j}w17V9@RLio=j$kk3}J>e$ts=E%mfY*Hbq?)+Bgx)H|j;y z&_4U?;gsNY3wc}Nvr0|#lA?yaW3e#chNCeA@Y_XYpd(u}pC)u3-UHHp&B$RTOYLbmPcJQQ9-a$AeF>G;#52Gk zjz|W4y?Gsslqq~Dq;R2gA2vl71zxx`dWpej+H89zAif)P0uQ^*(QCyh1plN*6Ekpl zFc-CvWLH#5&7n7Zc3R~^WKnHHWKV(7pqRVjMJB-^tR>nK=X6_7XdO-wQVd^87onyU z1yDG&@DO&h(hmumhl7=N+QReiGj*&^J?@BDO9HV~X;Kx@v18rdKio(5O}sa=gvYVtn-my?}sYZ_!?Gqj}FXsvnA(q+r0^^JDnGt3sc^o z#-6z9UJl?1I*>EuoEqoNwQpKY7C98UI4Qc_`~jOj3&~p^+7?wd_GO}m&76t9M(u_~ z!L4ZVoc4CX*9r43LJ;@z73s_M{AvutCZbb0hs`esY-KB72YesOd77<-Rdjg5*3CcN z_px=H5Wc&pnKgGBLcoy2v3^41*V9{hz5EMtK$&SRMsS20IGI|GPeznqg5VylycFK< zTkI|uRRw;v9E!nrWWUtaz6Aiv`1Ah@0Pxu?BP&?QMi!Wvw@}BybHRc!vCndOpewP% zn(F;6wFg@h0^C6Gje&}bI9J>!2l4t2&RmDr8I(H%7pT72H+EFxz7a!)1256PcsGQd z4kD`^700dfAdj~@4a3FL$?uiwdM@1dod1B{{P|H5n(8(fYN)1$r^0n1N@$f8Hig7A z*x41=yBCn6W^ie&z-k>qbC3Ahc*DUgF`Q5*F`zPKgocAHKE&isoc-khitoFo&*hyE zQ<=VMDSB$z3KiR8>e+_rrD|y}^pxUtVi)$S^AT)XfP%rT0$kfgBI)ic@n3@B0Q>1w zgZ0460TxbgMSGq)aoAUdn5B%@j|q|5fGe|P@3v)2uh7b7(J$_EpAEl|Tj>7U7Hx^|eE9@05LI_Uu{Un>6$+_)q|t4Z+7NOPwFn_gtBfPmRaj9aPH_e(POa@tB4F<$&*BoUY=N zw^M@==f~|{Q4MoZ;*;RH&)d&!+%oMw8_Htv5Y@)uKOXz`lRTWsk(DS&hQTnlboX#6 zy()sAbDR4Le__^F&}gpuK33#7)i9%8%G_wT4ZO^hCO21E7}R&HG=xnIKye|`VbqC7 z4?jXcv1^EaN9VKo_0$DhXV!9s#mMh)0p3l#*~QZnE}V`L9w7&O7e_9@1SgA@_dP<% zAIt=o?XzX62eJC|8VtiTQuM{z&K{ zu=)+nU+L-`5X*sHKJlvdrewGdbBd`=Zk3`u%P*sN!`kFf-9EQ4O)u?y48G5_nr0fs z5h|ZYS(H<~q4AorWv)+6lmmr^?T`&_ycy*DRBCK{+o9=fwxF4r;&Nv#BT$s)A-i7m zu)E_O8-~4}@0)aS1gEw=T58Rk^On7^gYI>0ULVDe4tIf8{mC#UKO(0G^Z|LY_!-TV z!8d<;*Z8r@#*ec$41608`;DI|Tk6khQK)x#9&Lw?1X5n6L{0Y zl^&-(^gIE%+b6HcG)k>+Z@T?$M^^ZyAL!P*gEgDB{nx{Kyzy%EZEb}Js& zXcg)?*px|$QZZjqHIVSUn|JR@z{VJjXXar+3p(@6|2;MnEgzq8&&N>A0mRspM+?I6 zVCA}d@v@J1qywYF%DTkX%5X-oqw+wVfi6pB^*$mhOP+x;X%xZGnOD9m`1;Lo%*JR& zk+1s$ip)LJ_3cYSHCbYz_!&|BUydkvuCYgU`a%p|7)SX|MT%~k34hx8QQKvCsbTfw zr}47UCCA%qb%wDds>UxWd`7GvaDw)raR~-BUq9^9#q19$D{if$d8mAo++sfNiE78+$FIBxlLpXQ|e7?Zi+#~^Ow z&!J1+>_SHlH~D6)on%eWIMB}?I&osBD37chXG{6{j7echK1q=4nQ>ZNM4Xxwm{jn) ze}K(-Nhnc&wsMKkcz5y>)~O?pAd?e_Ulf%w`rdK503~?h9TC+Mt-)O!B|}>BA@Hq_ zOUac+>zI9L=xkWk$qO)&#AR6wZ=7p#ek}?t%uH<@-8Kw2^29S5JE_r0hyr7*m#}oV zcf!Ffcl{QRjKyZpwsA|Db+>q&J=2)D@FpL;?)g$0(k7O7^h+>b;lssiu00<)_wn#b zbRMUGd8{%CkXFSn+6KOb02yKN+{;Tr zMLXbVDz|wDLQOSsw^ypuM>AGd+t|QoiaGmO;4pc(0mFQ>|{vIDLD}piEKpXDJq$ z@LTrUA|+}Hb!)Ez5&eU>R`d=n#Un`FQpRusY^veY4&5&rW}=LS$2KKdqHYsImjmdZ z$EWp|dLM*E)H37Mc{ar(UTnQGp}*=06H$<^LHhow7)8uGn!%vgF`<4Dh;jeGKq1aBT5K_gPC5 zHJRe}MNXdx7o6B|xxxoT%+M|Gi^~Fm>MInaV8TfkOiCx*AIDDlPdU_WJsY#lFH|T6 zG-E$%o0&MLxlk-si0BNx4tp)?N#?%%^A5T7gBGRl>?)IiEmWR|Z01f29dUDFEYe zhhjlL`28uO+lL^k_sOae#Jrk;D~CrylY{XP8YdEjG^>l&$r0D30JZHWjZMerGgqn! z`ENaB`kdS^b}%krWOXpBs&>E5T!d=963qG|CW^%La*)=qtO@Gz;r55{1;<#4>*{l7 ziBIz=wP7KjNsmPcpS#r321eqYeaz&OcAC74ZM!KovAilRJ!w4Z@LL?F?hX^zVSKdz zY3L6-9}?}$dy+-7>(@zGx}S~}?iNR+2V2+rGy;1$GzqCgN!JYEZM5jLMCzUa;n|0f#tN9Zcwiip_ zWFLf+tE8=bZ70S*oX7L=>h;X`t3m4-ei{)!Ay$9y{=*Fy?RTWxz?Zb(aIeY3k2qlW z#golk;^~+B{a1s#_diTNi3rMQpMTlG!$mr)EuDuCn_aL``qr8S91QkFd;#rp2}s=T#qKHw_#oZXAwTV!QjUS4^-FAP@cQQXvY!iZpPTVfAZ-8hfdjEYQbEwFizbF&Yl&ps?Ul^^tiMYV?WH9 zkPca*Tq$Ub!U?F6V;yi_Yj8OXmhO96+$B2}=||cY)O~ABIl&!7=1F<5)!w#HDv_Vf zvFom`a#?Sp{n6|5-k>jRg;Am+X2^lF7pjY?P%o@bo0+XrJyCdo*^A?x8lJHBxY9MC zFt5`P+`(`-f#EPtV5%1XDgX{q7~&!qm5*Ddly1IL7_eVW1k>c8cm(?yPN^#tc!xNI zp2*|pDE@8F$hpcQ5<@Azr=8M=JoujmC*=xK6Ovx@fUePSV#ux!h5VYO`!B47OfC^r z0cB)Aw80y4 zBdYLK%9ZFJ)l=23q<3u$cng{xGXxV3Aj+vnV3Vk1G?^OI@uV{ngAg973mX#h7b+kFHY`3%%09?42hyl~@m zpe~-j7!k4u9obWF`}PKu{C}n=9>)z(KE^?G)$2&0*Lj!?VS{`j&jqvA-X&oCy%P9Z zfdc+uz{MtAKJxx^q5q6z3_OnK?wjuctKjW14oft^`}BxrPAy3my9$At{;$Tk4jcVn zR6;C)3|$ZWBL*9>*3dr{YI^=S|I(Qm{-c*s#48_@6WxTGk#T~zuWE9DphUw*9@D8# z-XiT0?EGtw{!=CX7$J%zf`9Z66QB6!LX$lo+hHP&(gWU3wbB0PpGV;T!(jys^X_cD zgOi&?F*=Pn)DIpN=yS0CRB*VNs+)=SC{BBh=9~g#gcNtnwh~#lG(yg4S zFFIpgIoDf`_f{(ywoCSfnS$}H;Y|(icl4m4#J;GuQ8oUV+$?ytgu6ke$D%SZU9O8Y zERU9dDp#A235mAVkwJV}$Rjae%7EX{XjCiNS6~YBIj4PgaqB$%c$Ha9g;nA>a$4J@ zok6ku&)%A=bq3@#I7n}NTjx8hy;9K-s~Ibec&m;o@hac-q)+#wF@ z{WV)7CM*}d#Jmh&1mG&!=bwZ0f0mDGuS~`$RCnB6;>mv#w*Ncv>?1G@X5ffeci3MZ z`1LrP^)?i4e`Bhvz%YLg3n%y+u=}_a92Ue*|AsW1JyJ^qMC^Yn&lMePJBq&%(~kmce2FNUHMeHx_`|qveZyogi`~0?^ia_ZM+=eV@qebw?swl$ONfeaEfP@SS#x@fAf zS!Wer|7~_|0(a=bgNp>4756I!0y+QBccw3uQECpj7}FWA)ZD7+5>$yyY!qO9@q$XC zD@}&vA<`IGKg1#hJg^W`ARONJx0h5u=P6(Miapz*g*hB6ai%nUnA)1ept)NVmxK^< zU*1o$eqyD5>3fs%UIn@s{rMSY#l!B$T|}Ng2IU@&OBuJPqJ97Q$i)1W@;rX6O!)n8 zGP0W?neOnm2QM!AHIg)GnAc9iZOQLQGr`i3&Ra4znZwM0Y{ox72?~M0wb@1)a$18K z^HD1FszVekjyj17!dfs#8z{SOm&gTRUTeNoLq&@8!2$~-RZc(6pAvkh7sR(tlnZ%& zLMAZ@4~m`4jBxFyg>-o!V%ET5L$I7S4d(5TeV9q0Y(B7>MNmv-BH-ca(d{bC@kcD|Ntz{U35Z`*BlJSj@;?r7G5LR)2(1^Hs~gJtgFLP07wm zZxzB0bGUe5^3rO$@8t$-Qb&8Y8CkJALljaaTVJ=$MC>)|mn+`gTH##EJtMQ1&V%$` zCog+Zk$rr{uP;BJ*dL#Y*6&Z#t+K3q)k7u$OVn5GcowCfn$w*YLKQ?D@g5a?*OTeI zHJN^KOGa7fO%qVsC|Tom)tN&SPpK`=1d|DI`3#pJ;R8!93na+u3+@s9)`If`t$TXJ(<^(B|T@ckxuqVeYTc;_9hy3yCwey{pn z)$?q_!Pr5%zJu<;9y*(nXtR@=p8Pj>V|=Sb=R!DUiiLG5+Kq9t>o!=Y2UEG$F)ZwB z6@AgKY5~DQR1@NT&u|dBKuSSv8L5Moc5djBIg&b@WyRSO`{!o%*znSZtbU`Sy2(W= z7qZD+!E@n}B%+T3C!kZHQ*tk=P1qpMsCheMVnV!PFg1!%O}Vpn-^_wa!bw-!RIPrz z*7M4fYko@sp8X|8FanJ2f=zC=QLU)`@+n-p-asN*apbEKHMNH7mN~k+^gv(oS`imX>CrBArb#p%rm-~=8l>w-Y1 z-#+eH>1Gm?_opMW!yqeqJ;-*RBb&}g7PoYok;d!Zo6Krq2y%@?1FkMNh|;hHyjx1~ zP5{Y#sH#Ef+OhQIC34eYp_Y8@0O46=jk}V?*^Z458L^OvNJH6*+S$%&YnJ!dgr+sI z!d)jOS}En-sA*ZRSI)8Z%EqB36!rF+jOb_Zp_&w>&39p3`~BmC(Sx=cHBy)Asri#B z<`W%(tSi(M7BfataWi15pb-=aJH)=o9~`5M!T(j9V_*2REIj|{Qo8zfAUDFb#+@X! zD*mg(R7sP|oEXe+cSF~G*OTB?d@#!!)FEFF*M;S)^~CokFwk{$c`*&4 z-K$$^ahE2=GDeL=`xTO+%R))%4~oXq4qFfnX_4VAyf{dm*}r}feQ|HEG{JnUYsU54 z#mhb40WSU8l}Jg|>LCka8WKS84oD9XQe)sg>E}M>0kLg)sfVIYc~!owc(9AENU5$wO)Mmyvl5(;CeXw zodM#rhhKxK+(tL&d*&LSF)2eYP0f^&X!tG0i;hb(Ul-}LYS*vD)2YbpEtKi`W!!=E zoOpzO{vM_`S0@{BN?K_=uA@%3&Wmj@obGHrXDk{umeIWKPD6an=mij$_5K%1OxuAL zOxw*{-&3IK=Vmar0MC@q@VV&7wvISciAb17#na^;cWb>Dy*b~Xqr15{NRUoq=>g{d z+^$}(&%YMD9~fHiuM2%{lvK2G24M(mK^Vrn1jf|un52A0od;sBj}nVQ&nAqk=xpYj z%=>M_NwvwkSYubfGcE3q3fd3^Ixo6Nufg<5_*(`ZGf6 zGr_F}y#RK*pHYY#<=Wkkiyd`R1u~Djxr6L^zn?rC<%4#fYZq}+ujwIrNSjQQ z8=B`T#yr-K60+d`Bq71vVJ|6}^>!v(cq&-aMucUZB*E|bN79-m@stpKwakBpNEWI) z=*-i#@etqZbbjv^Osx+?AS9=x z*MIUm*7Qt<;1kN0Evw5rfJ3Y<1(C4XM1xeZ?;h^&nro6&NLL5Gaw>>L$W+|39CS?b z0gP9^#lv-IU6%h&ao%l*p*sBB?*~Xx#&c7C2#(zE!th%d(>j9C64WYkWK@d2{Phmz_Z7$StixdMI~io3me_u%Zotejvi`MJ3SFUQ8mDc) zg4S?sy@rw|N72E}_u`7GiJMFJ&jL+IKEYuj5&0^H1DhQ2>ETmPUyVGCK&H0)#wytP zMeJ8Xu10JWyUyu@bpA<-H`X1OB+PFQHrpg1tA}Cr$sz6P*5Gmq7Uz9UCJeN8^r9xx zWV0V7T8&PUi6f+^^i`^@OMwL0Ai+=XxBbG>7J2L9N$aqz3qYFmfu~?w(OXE32a?_( zsKrIXp|q2DT?!T`6;h>gJIA}8th?&04PtS~MWh+_ z0pM!VySxVsm<6SmKVk95d)|<8wYxFNK@)(>+QrECOdljZS4z=cQm(O7qm=PF`ia+D zfYF_yHGTZ-+d>~x>#kDZTyKV;U$#&HvUZ~!-gG$gk5)>l_&lCpJ4{;~ev@eBwcuI~ zD12W6(*Z)ym<9s!7(tubMmiQAOHjnLXVxsD{gQtSq*Po7C)UvFmN|1<6q{M({O3eYu3w zmEH#w@2S!A84KB1l3L=Zd7}Nughs`uiR`R<*^o`kD&?XnrZI5bP4Yt;$V}@SRLA58 zk#JlDQfcmk9Q8e-FuxPxaUpsia;T4mO1=a>59YA)rC*J*xgSoIZ=KVm?>!1jB}56@ z_JO@-N`n<}QCt)*kV(9JMj}DdaN*Y61CsBsR%~Wn^D%DJAiN-8794oy9HF#9ZG124 zDT7s-MGg+RX$<}1z)*t+DqHj#j#*K*%`U zes-ChAG%7TlNE^+Z}3N(rlUYE_-3ON+V@JzG?urEK94t1e?6k? zS0>%Ko@}A0K_#7-;ZLPH_amUrdagkd-R}}n#rS1#gss##NVs>o;0?lAA|fD&wOXo^ zKgMuk%xCSoiH6G!#7_VYP?7TDxmB0b318VCWqb6I*M+Y!MN|+C%5(`iY%?nKJ4-p? zbpxNih=uGZ)f>TCH$(tV8l0r*+1jD#j6LhH69%elnRBY+pNOa7F>sNDifS-LXY@or zf0hS~wNk!(&X-=lhf~f`kk*iu*bQMY6Uaak}DYJ0AXQga` z3L}led_E=K!>#!ITYYHr(Y$)VH_3pV)k>sixB7qdHD71`)`Y-z>38+FCg!syqLf~7 z&>P4HnMY8m)i7R`rOm43XRwA$a2+ov`Zm9kn#i@jm`+Gmp@G1Y@T#`YsySD14Y^e_ zF?oimp*+cv8(b4u`?*iJtB5aJ|6?~= zFW8r;Gx}@?-Q%l)GyS@t*H%G9N&IsgcG1Pd2s@a6#gLs zU(g}Nxb6)OW#~88JEdd0b+SB1{s}1z{*(;!Ter5{WBWDAf{3nFkl+`VIvz)&J&DX& ze4`sGC_ZJX!o%Ojh0%ClHoKk4&rH`?(P`9LD~Rg2=+vOi_wA3 zd`%il)S-Gm@Z0QtW+!CShyw${x&d4Zk|}Ifra7ECGS$~I5@`eZ|(?DGN( zuBQTqT5Co?Ed4q`<*Zw~uG4~sxyMWHP?G^xhh)j56nnMG$&wQ;HzX9eHYxf#5g-Lz zp|nDf(~WPRpWE8L2?(Jp8e3$u#8VhV#nQA`;2M=iNnei^EV|^1f}f8D0XM4+Se$PI-A7#J-v#k>ZSXZIU@(K<`eKto^p6ob%POh% zhEXt(^rO>gpyS%MFy{%2y3#4O)?NdeaDb}b}R{m^?P{gn|T&CBdNGMi^)e((Jiw%R` zojH`4?+P-3*dHzmQhsUIQVq$vr7kW>lwdFx^s$?!USQSq01yT8XXBd#h~d^32Bh{Pwx#IUkqZI1OYvf^~@3 zopEUv=sQI3t%}e3w%MY&O>k%Y$nL8S?gD0=9IVYIc5!ETW=&m?noo+GSglhD!xZRx z;P*Cqo0yz>gM^7=yNO%=97OuTh!}VrHt$v}-Y;LUC4J}XVn~`4*snj~YF*nVY6>^U zOz<*;`EP3vsVJgPVr&PGA7jI_s6rsLBq#qsQALRRi9?V`UegAIPi$Z-yoD7|O#!OU zh{-aN>h2Hw0WPFqYwlSWvae?43O2PjydO6s?ft49;zYfyk~U=_yCb;~$*LWUeCb-A z>sB(FKFq>zsN|U&rBeEQbc2`!#)!LC_ZttC8-+0-AJC{=1k)V}#jxR>O{G75QuP~8 zN*J(0sv#_eE(S-iNz{7vWn1=WR=ABDz>plj4w;=;xO&1VVx19R<(+8 z>qGEpo;=5MeVi0{w8%^H**s-C)|f(tBeVd6?VJD7zxWv$mZ8=n;;pf zCCP)rCr~wrK1&&s${qPs>7Ze!f1d>pHv*pH*IIHf`>sj|;!tP`$@9|Lk5AMfLiAnT z)e5;xz0Ektu&J-%U5{=9O?qrh*q^zv9CDdQ1Vb};@vJGqf_VD4Aih}y;{;7w+m3Y_ zl7Raq(oDW+ORVe^TrF zWd26EVo$!Q#20lQ!~JdXmgY*0s9T;tS_n%QK1#fLegsc8SfultC!;JFX!&=-`z|gO zm=Ee~G_(|9OoLm)+TRO0{3vHxO~GR^=YoQ>gh)DuQYp^L+4&NeSDO)t8NP$bFY(yCJ zZwXElRbAzkGS_9+b6gSCq?*2cadf$zbgBqKA|vmHa6_gX_28V2mPOa%zqsjQ1adik zV#V(j{FE~fY$|am4C8c)c^Ue@^rD{yyQ3ez#$qnIs>&fMI!|+5f5Do?X#7C*S{H(< zw`!u?dC-dtqF)~cTvS{@G$iZctM%RfVUDR8~Iuzzh{hdI} z>$a)Hda@rxLiO|e5BfH67E&}Qb2~GaZQ`rkxd7Tw?9X}j1&^#=h=QumH>vE2 zFH&E2^&^#3r)sNjPx&M8@N8a5q2rRhhQ~raJ92}fHCtaaf-}XVd8|=uxatI&RBqd7 zvT&$UAldl+XlYpl=J%T-^QF|IogDXvwRr*ti)QXwGA8GI)2ZYtAjfMMUJA0w12d>; zn)^Htc|EYcr7#-X{uF05>P3 zY5lAwd64$m^_^Mw2ilw8usB~R66J!QxDuVUZ&VAx{6;}gd9>$CKT3F8QE*5u_PE)r zm8|ncRQ)D`^n<>BmoHMz3ib|$ z`qHC!jJ>nm1KTVXLU&(eI3` zlCmB&YFxp3G&>*sS+Cz1poq2rB5JFhvU0-*hedDQm`M-5-WJWf_TkP84u91*?__c1 zjo}pgJCYb3*P3rU4^?-omcP<}(N?4QJm=OdbZc!HKI#A7jWr}rajksf?mc>S9dW6A zjVgPM9x;`(5mrcTcIy(_aRb$U{-3t+VbROGHOEmVe6Wk9Kf8E5?W8}RcB(^|8iFRh zjV-DLv;tYD@9%ELn9&<5jQWgc^KNJJp*YySo_LI!=)oV=Dh#7`rz#r@VD{_En)<$S zR&K}e69+pW)SA>i*Kyyg?#&rj5*0J9!%7GC+-hcp?^64e)_q8^Bx@ax90pyXz?IYz zX|h^f_+$f8^acf+CWHRz*-KImJp0vOOKX^x&K_k}j|b9+!#Lb{XuX4BRLU1)H2jgD zy|Couvy!@ck+dt63GNmx0Xlop4OZ(MUeBwDNw&FWC4aXPglJ-ou5pZV>Dv(k&z*v^ z8)H!G`lu2)_$2~wh}T5=(bo7W()sXWMC@rT|LStOH(kQw?S%HyWg3F4k7Xc=-MM9y z>tLmg;sfxD55cZe!(d9F`eIW4cDf~ENwUS%LNmX#VjEH>o?>6fDkJBOWkIbdV3=rDW)}YgFej9z^yKVzZW~E zg6uFw2<#bM-tiNz~P_$M@G#v2a;IPq3o=1%u95_?QC5 zD5TCi*q|G{%oh|C`x^Q46g;xeXU=`v%n9JdY^Ql?Oh5ynTCdCX*H(Z?BV|PeBi@{%@Bh4GC2WQe#4@dqfDHF|0qM2A<5N z?4F8QbfCip;+_P?fI8X^8>(3YBH^QOh-=3?;K1ZCtDpy#WnJLlfv4!aLwXOs6GHQr z=9Yzd{rwWF!5-NMiT9Ryj|Z+Taane=7r04J54)>QuptIt(&J(T+A%@ zfA{nMFt6IFAh>kO^r~93ve5kSHYRuHcjZEAlv>vx^Go(DZMUh)JSQ+{zdpQrmrmxn zy^pAozKys$<*a$U-b?<1#aP18%EV8B-SoR~B&SeZr8afjlpQ?gPR0SE`Q)tjThNp=9tp&^Z2w z59#uwdz+A%?r%kq`c8rs_niB@2-y1n$0C3xBLfz3Cq^ao-xc}KKKgf${PSe_caQwL zM}WYpGyOxJ4?Ly2ZUCDE;)E0)_Wtfd2f(85pPC!T{VTWoSrTvxaPnDV&nD*3LLifM zb_Orrnnv#Qy8Z*>%@%{^%BII_H@o$4_ci8rtyd2GYZ>{G0tZ}KM$@rdgsN7a1+_AK+KF!DBD9Q35&5=*!IgFW9j_1t?CM zO$hfN%<${ zal*%@n`cTwKL|?Wnl(`K)|}&=6XbDhB*c1nVjugCT-ax#_?N9w{^v*KS3jKF9TbI5 z0UBxmn>H5xkCsW~x(ELHKE`cysWO-SF^9au{lw;2Bxxc$PY>yGK6&Hi`{cLT{}@Z! zFOX6VT62!cM8(G~7n!6Duw5GWR~sbnz~K(rhBgH_R~Nyc2vEl+0*>l&fz86+U)_-8 z$LIU4G9_zJ-JgERy~NvYr7K*&m+dOrV-W4r+?X1Kdz=Hotf1ZcywD>4c`$FKe^9us z{=zVuZ>s;w>#ht)h&Mg4v@x<4-dAgQQ;p80)7k}!wDs59g`UTkGrD}Zu8fVlEWqO) zYSCZ1o@h^MJC*M|7g-UtjpY&GsLoc7YZ;U za1op1#Tq$QGc^SP08xsC!XaN)oga0RB=EYQ=j~}Ve2i*v+__#os$Kd_ofZk00=GRc z;B(Ff*#)&{>V%-QpW8qNPTJDe`v!Woiq2d$fK5gMjqch~_8q}DGDsS?r{HjoEZx?d z?+&A9AsY{|Krs|98FUQL^a?l#g7*%%1sM(PuP@c=m+_rRo`v5#2~`;P(Z66CS}Zk9 z-^&ekyT9Aesb^`dY`AZ@Od#a66|%>xqq5eVZd>f{afse&un0wCJ6ihg+{tmkDCM4{ z8M7go&MZ4XAVb7Wp;p>5dsL6tJK43uS<+275#P~Dm{7IF7*pt=lkar~j6ui5*K3KZ zzf#_7T@>9Y>@>{m)G442&0l=KE%Rt>V#`WZbi2g8GMW)|Z5k~^R+#t@@osNCPJynX z&cc~yA^>IMK9-{Oj;#J^)Wp^s0sFT4X7(U?l|0Y(O0ji1mIk*HPKV{M8GP&)*)A=( zjYLe^;687usViYuF_g82I6~yiCIx@_^qGx@tS)Ye>5pcV8iPfdiqzh>Uh0FXoJ>nn5llcFsiLyo;8Q+T|oG^~rb-lZ=>T_;fyJ4#7bxyZZK1#)Rs+Udk%JOO>-kb4~5OYdlw7|7F zUlk_Ild)loO*weAJY}rSVYgaUq;(uqbYoxW(P$cTYj+vj&vzK88P_rO%=%#5Z}@mU zJ7Hjh-;(x%y|F{HX^(}tOJi;G4UPZL3DiH5n2~3h8^Wccs!l1FPXeU$X$lPcT zrg4>;w{tk+k4qG=weWso6)!Oj-Xw^(N^q2_?PW*tdTXr0`|{4DI^j#T)J^f*(ekib zhuNo_GXW`~4tI2dZO)$7JZIA#!>9EK15-SG3PE0sBY~bJCBl=cJ3W%aS9@L2jD8Oh zBtg&04>x~c*&AH7r`bap2)SM4snFEv`SI;eDm0UN$|C6~&}y5hGic0I=9fIX*E;`< zz-U+}7P^-j1CW~gaSjjZH1J$hKcQH!a zy*^TrO;W<2ry>esi`|{L=Hp&G$aq*G=`|BRtoZ)4t6MnuhYK-c?AO_p2WGz6X4ASv zl3Djrn-60t^JMQElrE+YYGfOH4)_Z(-n1ySnb1_(==L2|*sTo} zJeQ6<*$oz7i*F3s*7x+va%9lvb7-c=Z&mlqYtH=0XEwbfD0uTNiu~;MbInNuP8h~V z9dVi=(@f3U!=|_A0aG;>$eNYfspDcSCIipQp2*D83N=#)9BT%3m87+Pm^bC_Inn%d zV|nxAj8JW2#cwvKbWnw4>(DE}e`lhMQfsv0o~eGq2H7Xs@YTImnXYd|ust0lxsk`H z7u)q>&Y2dHoN3D`is`Z%B@Vma3a(*@0*fH$7aP2JtOktjeO(+&)tuprx20LLN4oE3 zzNz$2lQOXruT+=Hq%^KgMMbz-y(wMHIq#Xd&L_a`OptW6X13bNJ3o_xZT;JO8RDi%7m38IbCn_` z^=t3xc{V2Px7VXYl;{|`J*v0opDLCLtzOwAI4A$=*xN7XWz4Y_nN4xRf$s}{)|yAP z{PT9V=OhgeJ2)5pgMtEA*+wvrqlGu+zHVqQ!NzIL!G)VhaGHUJL|8Xn_IJkonwF6@ zEK1EJg8Suc>O17*%y6rw)RkmB%_cq<*AkE0YZG$?q!k-Hv}PBiy1qKLHQGcile1f) zOZVCd`s(l|jtEkGWi#8tCZ3#X>U2lF&t$)zdMs0HSs_BlQsQg(&(#h*4&=_*gX&y! zWxpy-^arLEPJLnLLwKmw>qfiDeqRrBY#MQsGXQay4U;Qbq2a?ub@$>TeG`U;a^uZM zPuYtTO%iVvQw-mFM4*FAL%-;Uajaso{4jrWmP@djBQ}3QL6?9>#kW)&Di+}0hZA^4 zZ%pZA5M^CVL0NQBbQONBYdnG5Ul+=ktdKVm@Q2p~xl=4VWuK<#-nu32&QHDDmHYf= zo)7n8T}??ztj~K|XtZL=Vyvh6>M}D%p2?f3bft*yjBDP)!^Lv7nlqL!6N2b+nIZ}e ziRm6JFu}Ebe&vX!!35<&t1f&kaTxXNszN*N-5qa6=$}FW3lsOPV;5T-Eh8=bTBN4V zDdMbcH`s&=bFF}QAal$O)uvP?e;#5foc1tGohx;s;OG_lCB z3)Eqd!xL+Fl|Q8;ubX_#EoI!I-S>C`0QbW6{mBwn>Mw6{Jt;^uc)aj;)@`TQ{wI!# z%UU-wNO?U%#R`0)+_l*Bs&Y;T^9%qLEiTq5t+%0}0MPQMm0QX}NboyhIUPWE zy>xe42r_Q82fI>Poe)XeO)p)kqG!YX^$t-Z_f+){>y+@58t(_MpO^+(6^8GAE_~IA z;O)Z1)#bEbl`F^4TT5ir;;Mf{m%D=e&L)5OAt-r!J={4PIjS|e*!9HGCDh~37_IU< z?|;p(3Kk7wqhKV`f3^Izo$Y0;H-Mk3Er~}!V8O3=1`S1?Modb{JXNPxFb0&Rsn8zD2^`mIAUp_2LNgbjzmnruw{nqJfED zjqWOBRi0|)iAGq0E_5*{FsIG`9tDnx%!XlayWIH2m}j6gNsFRwhwDj*iD%i8nA7dy zJ0so`^-89%}GFkW;5ehc-)!dF?M4H1a{nDokyyL&j&OGpWO5oROrYfamcJJXfE zZ9$R}Yg^YR9cniSH%+itA78^+`6PZgNj6cMVaEMw{l22BO=V;s4ONA~(`Mi#ZI3o@ z%PR%ClcrrQmKT)d^=5|lLZ(UL{oBExN1hvnD=i%C!w!7c3^W0IK4Z_cd6<2n^aOf8 zaRDpqXt}aSIMESY{;*jMx2;LS)0)-5xaH~8n)|>(UG3nc)OgyBd?Nm=d0=0)?sBX* z>f>%`vmaC)&PuCMd|HK&ovZ zTbcg0N+*e3+c>d}C!yM1>yr6hWroFAhGg`(YpeOi#`_q8Yl#^_$FKnuE1P%Y3;!V-CX3YGP&z>*8lCoH^O!A^hZA%y{URs6iK3W|=0%D7 z{BX(!IbC{EY+7j1t&8$OGJxa54zwG>Hvmk2!S!}4B>L=m(Mp}$*|zK6r`MB>&Nh^Y zu6vg@Ir2G@!@xh9uC?B>l?o`|i4eY4b%;ol0HSwrSm0;j$Tk=|C;^-0<_NWepbVTq za0ZFTp>O|J&Jm9~bw;g*s*eZrTAzLSxV5Z7^l8&86vn}E#UfSa7jJ*Ln6iIPN%y+W zZ#o;-ctuAgRDUwaZS?1xsCEz^U{D`T8>LpNY7HOrK{U~X2{+qiWr2Sk{62+v_-UD# zS18eJeyz0xC%^Z?U2cMjEpz+5dVMVv>Zlyj!K#l!^!^HbC zGaPWoA_wQU-$MV3gs-*&sZzfrQTv&}7@R!v_Ji+IZLRqZ+n%^7?V+rBoMA88!jLlz zrUMarLkRQXZptJ*4rE<--|J9qxtMo{mXCT^r@VP&`vJpkG><)OpXXgGL+3yNIk!0S zrBAI;R&Unq+klzV@w{Good^j=kXYTj*M8%e^=B=K#$-3TaI+Z@+@k2Kc`b2L;E>dUfXT+&YjIWQW&|7y>n}YHRQa$;WwIG)t7&|r|#M* zAxB;Jw?oZ)k`(uP;T}_p%AI7sA?cE4A|-F=kv{RZO^)f!!=r?_Z!Z*dYMnT#_Oz-0 z$S0`2Qr%&Jjp`6n3ocLWayja;sG}q0qwwbp#(mD6{qeK);so-7l?^G&1S zHWv;SjSC+wzfVK?Ze0(T71;DqO-P>Krl`kEN4zh;g(1ucKuIftSZa=3!c)4vb{qKY zg|}|0lFvg`_Zqi}&@QV5J=zemeY8dj3NQuIXZye$5M4+VIoP9Nqi*i)(Iz z-^apN9>>m~cCxMr&)>FJlr8!xnOhdzK_K)kkJ&m|I&BeNY2^n$eJDsVD!nTh*>SPw zTvUUH_7`F3z*WoGzJh!cr(u7Ozd~**dF{g8$F9J}tPu)_i43^HQ6mNj7q80i2)Pmz z4%wwwD)%rpOfa`$i-f*oNJX;!?^*@gQ&01~&{CW^)yF5usV|HhPhjFq?fSxHX*{PJ z*Lgqd=TUS<))KJ-)aESbY!0Z}F6;^3cmz z#u!C1cV4om*(+Ba2A%nU^cv(&kN(UpAhi2Q3Co|i$&f-RPfn0DZxaEdG7=#Qj+~Hw zjr1)DE)XYD04O;V8C<+Ih$~UNA!QM;^+oip_>KB9I5L9oI#0dJyR02trSZKNK@dY( zs;uoAricXLo13R_Ba$ABRR#`ATPqPn->!K zX(zFMg6P^C&rs;!1g>xsdcO$$@pJ=gu=p{u3#d)2cNYsP-MFt5C6LU5lX6Ah1m|u( zfICWXNIV&nckJ9-3VJnf5z2AC(P4@>gfh_6*o6!8h`KEW;AI1eYX0J3$p+d_Mr^(` z&od={eY%wcWU)Q)f`Q%Mhzy_bE3!}U!SBgS^YB$Mbi3>2Jcc`TX9S&S$9Cz+L=4Q5 zHxw%8qbXM2bBI1=Z2n_pMJ=S?e)RJuLM~fzxU;3I^*%9~g{3vi;^VsUWk3)uIC+X> zujGAuPo5_aa z+ogO#mo{j(XRNT3FF9;=nuBJ3)^#Ny#=Z|POiH(aN9AsGsPs3*YnqKvu=B% zF^iL0Z>lD3ng=tq{?y@SrPXr1kK^oGpyhKSWm`81lzLsnYsVx;IB;UZ7|5$_oSn{p zwon^a$Va`~MIKeEQTBze?1n}r$cI)T{^_U0`X9^daP*x+gL3JApjx&4P*T39MC>A$ zgkqCu)L5{A$1-|*$tmv9F&kV~0={m1{M_vp@+?g%OLxe)6GKmJcE@6I9s=xyE@3?U z+g43}M5{qQy5EUSl{NtmmdzFcE!MK$KB89^J~{nWTJ&2tED-hx zg|U?DN5FY`H?hKUC=qq)&;Zl(_A|8$xbF5G99;b}uM}SQ8Wp=T+mScVQy5q>ulC^;Z1O}pFo*}YnTU~uZ9Nj0Ir+{E|y1WNE-#NWs;i$*}Eb0W%iJ)%8f?qa0n z9NblWcI%?vPbn;z^c=SXIvP6=XZX)CwkRMH3bi za#VJ)T6`B9Hxo;A7i;=l0wMxg-d5wHmDbTFT)W!zdvqY+Kfauf7rO7RKcsF`f4$l zxA2t%!V)%@7qcfLHrrhOiQnQ#XbX+=s||8ij>FW)Ml4t&TJLW)3Uty=*;`KAX|@51J9kNHoE1=gN=F} z@YK^6&Y*I`Lc(B0IFcU&>nbvu4q`shFYAOR_sLv7|NNn2n*di?;Mg)r#J%!^Z}~L^c5nHH_;~4g0_S4PNN{Uw zTp77_&|VEC8Aiv&-q|mAf`csM2j#vSZ5tb1=7LE>^VtmP_#G(u(OKniECoJ@n;`N| z-KS{k-jANAdn-dWZYTupJ4c$Rj|_b6pA92eh(lA{0M|1_K#>N~L}U{i>GP7tAS=}3 z8=Pn3jb*8%4N!y{6*9uBoM1CZL(px9pB+FoqZjcisA2eL!XCM=#Q?@^!2ulGqx&(<92L#=aTn3K6g)WYG-#BrTKw88ibm9~agm^JNnaTxmo zr^Q6yZZ)c2(TZspS-AUbv=fU^f#UbOLXgo$_1_kx&0 zprlQi+;oReIhP%ikOy@%E|?0<*evv3)IA2xUG|F!vaEQ`DYZ^4#ZR|}rGW6>_w;k@KK8sAGCvXkNXHmm2`Ewx)%SyHe2SkR(1t?fSay}szVB@;zK5o6=Dv=4?^5n zT|@k1d;18@9JVbQ)hY)9*|2MKi^zxQ-hz zZ*B5m!+26gROgoe%YLK*UAdBMfPOvB3R#md;Kg=QSH^tNg+0x7R*&@#MlrkI)%(?DOU9p% z;_9zXt%Wg5t-zvMfGu?XsBPc+8;$+#-16=(q16W&1~w}(<%&;G+LTJvT$#da_w2N) zm0z?-SBk*p(rL%5L}d~^ zf*3p8Q@h(uPDqC4SVN!ev(6i(v;Jt!KgbLdHx!))SLTuI-J`;Im3PO@n$I(z+~ln< zvWx0{sF@U!XB-Jsr_~BU-Aj+NZ#r?n?L%UQP3ih-88G#~9z{P+D~D0E>z*AJ@6%Fy z5N*S@p%iSmuY4xXjoAhiX@1D=I*XWhA;QEGky_m`l|BzEY!zFWSLs&I;82LnbHFToZI_N{O-@lR&8HqDk#Cd)4(+>R^EL79h#p4E8 zugq8ub}=9rTYgQN@=2uU-H*+Z zx5qWuNwt&(aS)fsh;S3urfI(JNgO+{!VY8OeD!id+cY>p5Ks;QcA7EX<==7|C=Xg0 z(njX7LO2gG@C~S3U0mf0yh#F1zSPfEm1q8>v4|!hqbewgUf`Ikctv7d;XNULE+YYV zq-5^02|0yYu0Hh;{Jc@pkp1VfndvtFylyRr$c9b6K zg|agAcnv|1^Ji~vw|+nTNJ}%dZY(`&Z;c+c=y$F-y-6crCp?RWZ`mGG(vvBMi>@%#r>C@gyUc-O1Wu`9#QQBuDCC@#>~gr z-FLH7Y%YYko@2xNvbRM!!Qat#TKj!oDG~PosqH$d_x6FDaQ_RXW*a3Jo!anDqAad2 zFA9oBYQCpVkvw=V@!~f;!9^i&Es%hGlt8tvTvEglvh8Xlab(k$JKvHR@p40C#{h4- z4u8HSd-Hgi5i=dI8@64;);D|%@3$lVd+Uv%<>qKW<*QFRO) zE;4);ha_`P@qBHOby0|&|L)smeAG}oWtvcE5fgN|F0oshU0o7Ld&sYmdC+S7@WN1G zidYLYY!#7$jXVcC6iB|k3$l_o2vt8CT`IiQx~O0E>pLrUOPRevCnV!+FNX29Q3TXG zCC?J|ISZPDL6n!Pi*(O9U6db86EZa)o8Cajc)A@MIGKD-Q}suyK$5KnU%ow*h2~K{ zNWa{&wY8r;^ch-UavhN4%HuZ+0pE9cJK&WhtEv-Oitu9CsM4KiXINt)!#KqAS7`3H zKdt*>{_`^(Jyj2HK*2rlu!^pf(5tUL!&(Y^a#tezw1N<=Y!R1QWfKUF6tJsJ9|}xw z!$ZyJvi=VBF1KX}YQY>z8sST~7kRzfr9&_LF|3{hcCg`Rnl?K>y+=8EmmXB-INwqm ztn`>>*E+Z~iC35sPKmm>U!q^Nw7v!y)_n@r^)c(TrS;KN*y44yg`oxz!z)mq)u3bg zVI&Cgcd_jUE^q}3^p^6sRa6wj)jtITyG5vo5~$;Aj_W0$P@}e~x8{S8a?1Upi#-e# z_5~jOmmZ&869gpK2smv}-v(13NlyTh&Fb#fUnCj=x4oMQ;vBl+>S&tQ|xc%tc0z!P1z;gHzSH>%hC$xzZ)oU`oH1i6x zU;b$q_wvu({2ECbM6#~n-OrHrC<-f4E45F&E{_df;x>mhB)_f zYTjvF7a8t!o`GStA2_n+#>=}Wa^d62Z_JrJ`YG3Y;QGjU&RQ?50voc|z=mc;SngM? z5X8^^{J{}jc_a@w@z{_hy*bUi-!LcJG;!4a2h6@j3*X7#TNt)F!nz0>L#1X;BbS`R zXR+0>8G|&vMh$%52rVZ@cJP~-mHb~kBaNxPV%z>Q4K})T9>K~QxOVM646vP$usDC+ z_D(ohUsuei_v>_24B27W)K>10$y%=c!gQR9=TN;ogXlnpHIrp<3N|my*ZyoidPY09 zocg(_BoN;$=JV35`j}vD4k*KJ`JLsL&Tn};ukEv8Bw}Gvl2VCRLvDV;lNfrJ7Zt{< zef=Sssd>Aw(aAW7yCO%RDSPWF%KfeAkC~cpZ3{mS&8vefT4{dBa^n)J&;4m*z8D1A z7Eb^{V%%0pXhV=!p-@X-Pfy82F_lBXk2hR)T-~xe^ll-uUsCU86vEA0vWir&$-&|$2UM+R!ZGILiwPO0{K?e{}gE$uZc;~})OoFMs^*jU3#f)P1 zSr%-IyK9LDw{~8Q;oO+R)RP#V)Q-U$_;y<4qCDNu16g4W`Ws*2nb}G&n^sF=?&}){ zt;;poCpPE>M(ekc^;>~o>T|0txrF9TVuPt9)(Uk4nT@EcrO0~d%mn?a8} z#4e$zWSm`k_ZIr6dJBI`K$ZGwj=1QEp|zS7oBm2c_P4{>x>~zQ7Wyd$F4)LpQ`Bmv z&8l9tzwb*ZRKAZ`k8fBlAJ-%cH3QI{!3S8eI(Y#(vUI)X&{rP1aY0B>-;Z+ih0Hoo ztm-K@GuGFdIXW^U1o4RYw&JWgfQSncA+-{+*uV0`lbq^{j%# z&qp?ada?vYhP>r?xBkK_bu{Y_@a&^X=kV0;R0^vAYU(C|p3@Axq>y8~QDEF8+d`1v zh^_Z}`OtjsFHtr?lW@$a{;oa?P@JDbnYn@|T)% z5-|xsK|Zxsf>O5)6&j+O`W#Bejr;BeBc zKh(eh4-8bkrxhE97(X1V-FdCJ`vUE3Z5-2J$Eg0MPo3?i#T7C0PPeXEJ@&p8rr5G* zYC+vV5%J_`azHQYOV$K7&FSbdW^-M2Vtb~4Ue=Z22k}Vg+}#}}jx>@+7B~5zs>bym zZIy4W=@kLqdx88kBWETt9tS6rk;hz-cvU@jH!k#^BpcK_MS;bnt7`Z zB1QuQR5Qc71D&?_3(C?p45lAiEQJhMcZ!f7vI53y^n<~kX(c7k0*i`Zoj_LwcZ{0R_)}e0 z)GaY#5jlX{EDGW&XE;`1+(tT_)WzFVUX+mv|i1j-)_7G{=LqCNkZ(S-O3 zjLfLu@G(XCsXj5S3P1ZU#W>B`uF)=B(z4^CWBSr*t_mMUhDg>|Zd@x`*im=BU;WW( zd@F#pNUvkUCNy!v<@Cq&ysGWvca;49bT`bgGvEH{UAj27l9gxN8t^E;<@TEB37qhj zjQgNlkxB=-qV^h?O;}RQo{0*A%qy_%;QqH&w+_B6akk8;Cf~P$>R#c?;kLy$}GYnMu5tmsD!Im$dDFlBHTy{UR2|3y01ZF z!D28<8g)74!6FWqh_r0xu{~e?7)Q?|Rt@NEdT(ca?S%Ozf|V`kV>{Jl9+ z_oE_TXA%#}oF?AEYGCeEJv3y_%joz6GMM1m1fcr$QQMRTMn`CyL*m|q9vu8tcF=lB zhzKU)*EAwP8+d=tPM$gYVDa*{E#Y^z%i7Di8E5JDkBewTErPe(xet zD(A_5l2b`O>JLaQj(H%nC4b(fucK5uKvV~n9pGDz$g?oKlb5=9XSTZxbJQjM zE7ABUna>SZZetyBhwsxY5HHNymWNmcqrR|A`o4Y-W#5XB-|bO+q)5fGMyZcl#acIXdJ2V`PdJ^`YfLHpha!(YH$>G^ ztWsssUFm`#N_suo;}39EJWp7q;c)1UnF=;D=9_;kZf9S-E*$; z_qOV#w$$+&sU&yq9t>0(RPLtLH+C*E73{j*IsevN75x0>dYVDHH;MW~NCqwgYtm|of6Xc({%v32SV2q7iFYn5g zH)qrvO&1a(NvG5}8g0=gkZ4u0NUM@4nUHt}i=P|g)zTlB?XL3~QZcD3T|{rl(l>&C z{Tw_PSFR>}@B`*VJVBKfXda8n6B6lq$;PABpZt}QM!SwRM45CU;U zzcO-ya+KgegUiGfL|kkn9#rD{K*_jonP1f@vgd}Lq|-bErC3Rl>{A#<$*GFLaUwU* z;Ktq?quC{X<>GMt=uVYeQ$js#YT3FV=LucXd`R>uAu(v1lN(T$G#cfLzbK`#amlw6 z1_yBQ!ERLC^?@bFFnfE9*gclxJ4PnoXeL-vU*huDj+Np`{ zUuD$P`&|IAE`UELXf}Uoo==YWF!v5)`F8{#!@gg>1???A z^e20msQW-d^_OOGmF~NCka$%>xYM!bc~E;+aitNGwn`Lzxss)CI(z^kn(lPl&I&o)rJd%zMj!pC%5!hDC6$FYooZP&YI$s4Sv-G> zt5@QXhAL1l7m-<>>_2<9o@X=ZGi|Gs=8iZ*&wy zr^KDs1WWvWbbH7;C`o*j(ACd>1$;40Xe@aWCMe(EaNhRhZ<*30zw>fS2m!mJ^rm|L z1v+G6hi+?NSlUd+oq9)nOqrcWBxa>7_l`F4%RL>*mdd#zcg}yLVp@@;cQX`Oya+34 zPV07|O$)X{biIFUYH{SbIUugt%rF|@7S+0F5LVH?EJqq=R+pUdX6h09@6 zmR&pmNlP<=Felf>W+&i=hXQ^-ccDDARt4Lh;JH=uyurx~X^N0Q>x{yuWyS$tV&=8;=}ds^YlmSxNu8}}CzI8yhw zhpy7w_J`(B4~_`3om^leYW`WRUZih_G0X@-QVJ+eK{vi{y?it%UoE{;V#JcV`(qCk zMkV#@uk4_@Dx%8HFPr=o9M=NY=O1J%NYt7xME7}ICbHrKawOW8jrmz750vjZ zRamzBKW%xgMhMF&UT~-kux@Aov|ew6-kBlpA=XHGM2)JV;({~3aZ}!cH-HJ()Q-PnV}-oqdX00!BQv5`!sLCONoayNZs9~r6?*^%GA^0 z`x@rohZ`^!xbGJez;3^%2#}K~8%3VNL7CXd{YVfw+KE+TL9-B&Q;kFr`60fZvew59 zGskuk3rb90=LyJVG?<&QK+hX)$N98boG_kK@7sdbhzT-feb~_YTYhD)77NqFDQ0aS zT3J9tz4~i#XP>BwL_=o8b|pv_F!Njlx)+--lISxQtHMU{KO9M2gj$U_J4s6jYrtKj zp&}fV-Y{144ZkcV%+me9=byUdO1nhx)+Ag*z_;s_d`!ct18G$_BEG6WnadUbypLvb ziugIVtv*t3Xm4?V2>bNjQRt&ij9%LIMgxtZ4$^^KvSTsu9gr+8x4bgtd)$=UaBo?) zI2SOXvVNi08BZoHw}51*55G|6c?*Ng^Zs%Jk|5FxQKlUi(4KcMTx^wDwH>K_%DEqi zBNIe6F47c?#>LZ&=>1IILW0SRgPnh7Os0bFCsp6$QD$c%{swdha=cxpvpV=r`gOhC2*0U4e4p6O<28Tr^P_Ptr0;mn29S`)oN-`k^HMgcbKb){7AGDOH?&-8EZg2lQ-{1Af>SemLq|5y81M4sR%_|m}irTMU$<1pKB$A@mWU2Rk zF~v)i<(_t~62bsao~XnDZI%Bi-`z^w~*aNPt|Uv5X@gwV`9-@!A7M@blwcnF{Pn zid*A6vz`tK20m58QSy9zy{A+D_@hDUx{`(|e+`mDmu^I}h8!yxJ-FzMZ?$@yF$)@U z6+@j3Pg*d%q3Yk-_`Ur+4eRggE~xP6+~mjf=i5#(mv#vB0e{(s&+s@W?GQ?aWa6h@w8#oFtE^o zm^kT8AYy0uA;pzqSWl4onw0JwJ0}i*7Ov#@eellj2eIYY98q&DH*HBYg)Ya zOV;B?qMiIR?b!k9JOgy5(=L#Z%PqAQ@M@*U_qB=;>E5p?b{~LC+PB%6xvAMez`43$ z%&(58MH-H9>(?Mi;S2Xq&0s?1Ea%O?e?-%QtJ1ErSidym!BSVs-R5q<09MY3i`MaQ0E!)rha^tTC)lXD%jl)3Z% z<5ZPbT-_Ubemoy>X#g(BZb|^;p+ug>WI`&*QeQzFpEazn$N@r@czk}c{(JdZxeRrr zkM1?vHqVWC+Guwt;2{9D_)X$~4--uE+SKCTGOjtda6&cye8&?F%378EbG7Q86HUds zRrN~2GnCE2Xzq+D3;j-|LnV7_VVuSgy<`np-3jk919o3R->U?{A9 zOw0L51OS6Y28&+c{SW9B0Rm`ET7qGlKOkr#z$wZLV*j&R5a{tW2>LkP{tpNm1$>MG zRP_&5@?Tj{jT}6HKIL)v(>eERX_bHIN&;Q|*B6K#XzhJpX2bP&!vTgfnV;a_nbKsH zdH}7Bm-0XZ0A=!LKobE_9jQC`Z|wkWg02g-*urxE1}=tI5a>&++|M7<|K1o1=venm zjpH?mOr{BNngrBxZ94z`qEraPuc6fb8{J#LSlqm>7K37OJ5KwDYmcVF+il+UwkS|LN+ z_QEes@jvHOla|nPV@w#3iT7DZv!e*Ff_}yS_i_7|>3DjLY`!Wrrv3L(`>&bRcnb{1 zcL~RY|8FZG$?F-7&Z7TMBKe=Ks2pBTr;-=?PdEOb4gK$h{QDjGKQto0Nv3SZGrU4C R^YDPb#}9Nhs?@At{|6?EbN&DT literal 0 HcmV?d00001 diff --git a/pystrings/anagram/count_anagrams/test_count_anagrams.py b/pystrings/anagram/count_anagrams/test_count_anagrams.py new file mode 100644 index 00000000..18652d6b --- /dev/null +++ b/pystrings/anagram/count_anagrams/test_count_anagrams.py @@ -0,0 +1,24 @@ +import unittest +from parameterized import parameterized +from pystrings.anagram.count_anagrams import count_anagrams + +COUNT_ANAGRAMS_TEST_CASES = [ + ("too hot", 18), + ("aa", 1), + ("all good", 36), + ("a a a b b", 1), + ("hello world", 7200), + ("excel", 60), + ("ab ab cd cd ef ef", 64), +] + + +class CountAnagramsTestCase(unittest.TestCase): + @parameterized.expand(COUNT_ANAGRAMS_TEST_CASES) + def test_count_anagrams(self, s: str, expected: int): + actual = count_anagrams(s) + self.assertEqual(expected, actual) + + +if __name__ == "__main__": + unittest.main() From bd1fd1eadc0038b8e8145facabd1b94cc133f9aa Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Wed, 22 Apr 2026 07:17:28 +0000 Subject: [PATCH 2/2] updating DIRECTORY.md --- DIRECTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index b6eae6d2..1b3282f2 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -1051,6 +1051,8 @@ ## Pystrings * Anagram + * Count Anagrams + * [Test Count Anagrams](https://github.com/BrianLusina/PythonSnips/blob/master/pystrings/anagram/count_anagrams/test_count_anagrams.py) * Group Anagrams * [Test Group Anagrams](https://github.com/BrianLusina/PythonSnips/blob/master/pystrings/anagram/group_anagrams/test_group_anagrams.py) * [Test Anagram](https://github.com/BrianLusina/PythonSnips/blob/master/pystrings/anagram/test_anagram.py)