diff --git a/1044-longest-duplicate-substring.go b/1044-longest-duplicate-substring.go index 4400b3f..bf2a916 100644 --- a/1044-longest-duplicate-substring.go +++ b/1044-longest-duplicate-substring.go @@ -290,6 +290,51 @@ func LongestDupSubstringGoroutines(s string) string { return res } -func LongestDupSubstring(s string) string { - return LongestDupSubstringGoroutines(s) +func DupSubstringLengthN(s string, n int) string { + StringMap := map[string]interface{}{} + + for begin := 0; begin <= len(s)-n; begin++ { + end := begin + n + str := s[begin:end] + + _, ok := StringMap[str] + if ok { + return str + } + + StringMap[str] = nil + } + + return "" +} + +func LongestDupSubstringBinarySearchAndMap(s string) string { + maxLen := 0 + dups := map[int]string{} + dups[0] = "" + + left := 0 + right := len(s) + mid := 0 + + for left < right { + mid = (left + right) / 2 + res := DupSubstringLengthN(s, mid) + + if len(res) > 0 { + dups[mid] = res + left = mid + 1 + if mid > maxLen { + maxLen = mid + } + } else { + right = mid + } + } + + return dups[maxLen] +} + +func LongestDupSubstring(s string) string { + return LongestDupSubstringBinarySearchAndMap(s) } diff --git a/1044-longest-duplicate-substring_test.go b/1044-longest-duplicate-substring_test.go index 9ad8baa..8764a24 100644 --- a/1044-longest-duplicate-substring_test.go +++ b/1044-longest-duplicate-substring_test.go @@ -5,6 +5,8 @@ import ( "testing" ) +// These tests are also correct but for "SmartForce" type of solutions +/* func TestLongestDupSubstring(t *testing.T) { assert.Equal(t, "ana", LongestDupSubstring("banana")) assert.Equal(t, "", LongestDupSubstring("abcd")) @@ -26,4 +28,27 @@ func TestLongestDupSubstring(t *testing.T) { assert.Equal(t, "iebfk", LongestDupSubstring("gzhvilxpjrgrrezatnuzihvaezrbvalaovljiscsnbmtrnthyijuxuehuiffeaknaywwhlfgfvrlbzbdpgszfpdetyyokkdocmexbvoklmvvbtslafxoepxlonexfinlirflmfjxtedkctiyvsvqknwxbumollkdbquysfvqexksoxrjzwzplmrkfozpumozednrycmrxkasvmiqprunuaaqqdijfxjulluuyxalmhglggemtbgimowlzwmbtgyezcuwsscxrofosjmeohhcwuhblbgbmrqwmifbitwzxkpzetbmjaqytnvnehtajurbkerzsekykgpzeojftklggqzlcgconzxntmfbehpjchsajpgrcnnnmhkudwvoashlcnltxglqrtwxybeyptgvrsvofmilpefzatucmhhbdwopxnyzqrovbkqslftylbiphfgvjddottgpbjkwikniijdxqrkxllnuxxkzpovuazkiebfkzfaosfdaxefkyevetouvpopcmqxdwnnejbsnexbpvlgxpgdmppzrhklmzioedkbdtyuxlyimogtyfsskuvurjdxxnjeptaacvooyfyvseeyuootkiexqnbyatybimqdkbmbedhyufdedhbvkdtdsqygzahnogadgbnmagtumobzsknihjasqfputkgtjrepwsqxpzbdpimjmqltkqajlmkxyfdpohvumbjmtkcoqbtpfbgrnyvtnxfbzxrrdcocbshyxlmqgmpwnpaskosvcpmnobagvbufmwdzbggemrmwqzvadkojmxljcvumpbwbexlkhfzbzijieimpmtyspeikpjjrcbthptzmxufrgbzpkhnwqmxplwwakhrepoknhanzgrtzcjqrcaovbkmvpbgqshfdtugenluyjfwpnackdnazrwuxguynnmgnxsrmgqsheanicnuupjsekkjbubmlzsowrwdmhcvnijixpbpkjxcddjhbucjjmhzbjngflezexzaamyyywabsavwdasergsxopvexfkyolcgjpopxlpmcokwfymfvkkeejlfihhnieplqutfwajcduajkfokgdhglqswawpvaeiofrlqushjlykcmaaezqylzfrmshjldjkwwlnfdjftwqsyczfnrdfywajhepujqpjhvdoktpvokhivjwzbvyifhxxjmtxitnvgebamsuwttixondcxqmabhaskvgpsoxgghkucgbwylxkdcmyyfmlwqdktvqsxeuvnsxlwiskhnmlemnyodjheovpccnndsjdpnsrxbrqmvhrmjqquiblrcmtpkhdenbsufplctuymidzbedsdqbsxpeuqllluxgwgesgevutvnrmxkqajulkyacqnqlxxmezzmnezwzkhxmxvooqirztzsfftbmahxltyoouhsvxaedsgacvyqwgninsmgdzwdirmsrjhpcxmcerivcnykalvvwrlxynmbnzwjyaebvdusydsolzsvwynlmoawydodomzfescurfjkxantfbsvoitdalpnmkysfjybknczgabfwcnpigzzufmrjquppcglavjpqdhbnategojhymfajimkfdsmadriphaiwcyrqzbxosflkvywauptbkowspvhknrdxuolqjnosnalniutvtsebvfqkqcxtrpgjhwdbcxmxqvrilbrfibweettocslcwkduuoszjhqefbkxcynplgdnwotnyqyeejzjesuxiapqssqrdoveodnbmsvuwimwcqamksazakdrzfflchmtyygramodlvnuxrtgmryzefuemfihgzrcnhwynbhjmwbeyaqoeskrkwrlpcdgvwgcuvrbpawmuicbthocynmtjiffxiiemmyczeyvixeernlfgslmmfpcytgcakmhelukknqxypbcbtkiizexvqptixetojnytvhukzyhjdnarwzzujjatczabhhsfiyjaxgypimlgrspixnwxtmghdhaivigwhbfqmmicuoolftlgvtwwxbpsrhqjmzdnkttzsvgjaloqlmdcsmcukmbmlqwqrvhvdrnwxscgbfibjvrcavzayjmjspnajmukdqczrxagwpojxztflhfykkabksoidyrhrclasmvcacgsdvzzrssmiirjjjvarbdyqxoytradmfdgqsknlucbiahxbhfsdcevclnnbiinjjxelaydqogirhfbsdkexygukrjqsmquvvyovsupxpksmuxxyvbdwgdnvswgazgfnjusxfmtotbzyppytrolmvfymvvwezxontpexhftejbxqosltqawtidhguuykdylvswranfklcncjgvnfwwqprhssyovhylcezvqrdtkudvrqqausrkeoihnerrkvpdsdtnbpltsllgqzifbfkpjmcmvztfdzrrdcwesuhtuxhxabmpnxybtknexscqltybkdkjlvaywngtpkqhyfasswozlzzoqtqofzqlrvshmhtfodoipsrkjbbdaztfvuhpgjfnrlajikjyvxvkhyllknsaqkzxrycpooyvhvnphbysuhfrxzyaltuakrzeasxyqdbkdsvlyngshuknxcdrytrhvogsrzmosyzbmnbadnpetagczhhocascojyzuzwukuxvgkfuepiakepykbvxaavayfawropobdtodhmfkmwdokrsoigeuzgxerksxepfncqykwttkotojmdffjoiznlgpiclacyuzjgkaqaijnummpotptguquzaykiszjczmzbstfatflgcraqavriundgkzrxnqyeqjuqdqstloxnnqctagyunytlxzedclzztzwegnighzixvmkfxabnxumvflmtmtdvfzmvtwduggyteagektibddntwdqetpodgzcmugxulcbfmthgqrgxneqctqbtaensknsggueoibzgvdascsstuoidvbscasigbzlkwkmtkwxdstxjweqfnnnihjfazysghlyefhptqaecggexrfuccetxyivqkoapvxwmyjdekotcszhcvfybutluikyqwhjxswrvloqwmpjsamylpbjjdnbaqitpwrwgwjalamcynojjqfguyutglvsyghggehlbzjkdfodfjebfvpskhhxcnegauwgtbmmnsmyerfaycecprwnvwqmuzdvsjjrffhatfhbhrbczmwkgnmzmqkgvipxfdtkriuekdktraebiqrxsphxkqdlbixxyulwhsfivkwqkiwkzihwphhglwuiwblqxctleyaiqphlblyorzutdxujtufktkgkkslnrvkeejzvizivljvvrvqnsydaotfcnzmrttbimakwphdniksoludxiogjpdmazbnohqrxlodjggmmjnsmzprxkgybjqilsgupnyehtkdcapdkcbcpcjgmzukwxmpntutlwljikjxppecreizqeqxuqolhrzsxfldfhyazoakuwrrpxltbsbczjzqjcuyhydxgstlydyasgykimeebpbpnshflijauctortfwjjfxwodmkkrcqkeoofunszmajfppjrvhbprwhrmsglpvsufwmnrolcwxmbvufodtdftlkuazylxwjaqcnvnathtzrxaxpbtpoqyedzwdazmwpygzmikwpbuvnqlejdumkdxzyxublcawwlykjgvhbhdlhpjiztbuvvqolwfaviwbnooekjncyaisibdldxydkdtpulquwmitdnpjgzdpmeprkbregvmgwhjmokhhftozfhhnyyqovuacmnmhclsdyhrnrdtvzfpxcpgnejjyozqkoqzacfabbfzrrokbcxzsfeqkcxkzfjjtqyiurfgtwittlzyvooxywevqqqabjzevlygqimwyrzcfvivndmdgliyovhybyklbcreqbpavyycgvxtsvcilnhrbwpjhbdpmsqyixiyzcywopztvzbabddxofmafxooumrzhfilyegilsupqljcfucgydpglurrwngwaajuopqqiknbykjtcoxkcanzxcsfkcwbmyxiebfkaojfqbyhsnhbqcsolmvoguhaomfvgtvfruajxttmheofzrdvwdifkvmgczbpsijewbfydwhibbavyrgbvruxyjxwyxxrmwnbkhmferwhbhbuurotcyupktkexnbzcskarsqgtmlhsezalnwkddgklhcaytncyfpsgrasgzxvqdyzfufqlkhcfykztcnypmangnuvkcfnfnjunnwdcxbtzvnhgrhqnduozvqbestwyxomfjuurrxvjwfusyqsgilqgihucrwiihmykpgjbwwkzwnagqngtvtufhhpcqpvypybzndnuxnuxcjuvvedglyjbiikrvhrmshsyvyilgitnccwmhenadmkrfvkyutcqrgvhszafvsgpplwndinjxsdvoygofjbuijmtojknwoukqgzqqaxaerzznpelookalbyjcjedekroepjpneruaihgxtunivhmdneljnbhhmlekeefocgfcantsfcystwhkksfoawfgauopzeskqumoavmbeawyylzgabsfsfdldzezvvdidoegzyobmdaeowshuwwxxaswczpaykvkyrwlixxkeonjjnzlrfpbgmrlvgryjqmbdvjhrrkjaqmkgpmtzxhyombreolaobjbixepcwfbzyrhjkvqvdwblxttprawmlrtikvukydhtobvatgvieoxqrbtagkbjwiuzyunjdquxmzcejeoowlupstmkqzfrguffffpizqlnighdpsaabcqtrxguhyhhzrrsdwlpgwyygbpudpxdxqgckmpvzjsnmhznhzkkceomwlrdnjjarasomfraiydswbzwvlygygbtfoawwsflhtgexbaeotfhfokiaxeerqecdwbkuoutdahpbvosbxjlpvgaubsfpgmppqmsffgfwcphthaawskscuwhbjvqthhxyfcvzkfismdeoguryafwdfstrndoqwjytbganmbpinjcnemijucqhekatenftxwycbylehctyxmwohhaqlilecxlwhjixzgstnpvqjqiedkvgcthaafzurjkxskymkateofvmewwalcmywtrlnhtpxoknmjrmajhiouxvytttuwbarlewegptlourwhpzejayoyzjygcnjhqmsgneuajfyyweditelealzjnwwdqnznmbheppnqttoechqmnrqgnhojehnwauotgkxqwswcyfmfefuycbzqutzpcxzeziwsewnihvidkyxupyjxowtpabjgincjaaxahbadxizimilhgqwbfasephsoncpyokqcxhwnqqmftgnzrpotemweubivjtlkefhefgiingkukpoqakkizzbyryqlthpwyiiwxtszdrucddvwkbvazbwwfyrsusdqzqlbbghmgogfkabaopenezmykvdabjnovrebhpanpguamvbswuebryanmaifxwwvxsqskmoqmbvrkwjgkkictbrwswnvbapgbiuxbnbwymyposzlwgklbckzzxwtxgpsxjlkfympahxftmarlqrleoinppthrdxiqasapmediekmxpwwgawbtlmgomejcxkpepeefojswvdlyoafwiwxdldnrhirgnevkgpzksxwzppmdvlwnsynwzhiizzgagjxbfmnyaxfdkwxxanxbmmbauvhbjetqkcexmyrlgyxnmjodmuwjrxaiyzwkdaaerexgqkvwbfvaoakofuikxiiilodglyzjxuhespifzeozjxwzurbyjclqiyjyowwokemiakbnjlpvgzaqqklnhbdaxldifunjtqcvubnpeetnhrdnpemjwzxuqwbfdkbjbkzbrdqjmdtqbnxsbqjmbmzctyrsbjobzfevvytuhsgwxgilffdasxhzhihfpiymqzptvssmvpayupggepznusyboilojxnotagbmewjfmjbdduwjrdnuooxkhtozramtlxaunvzczcjogzmchrivzpiieshwfeassayddsfhleqjdnloinszgbdjngjhecmgodpmowwlpvmcgsuuerzhezeyejhpnlvesiiudniyzyphmwnkhvreciyskiyletzqvjopzbfbtquixhbyoqywhncageqbiugvvnndhfoayehaofbucmonrpvvqjjmnbcgezwfvqwnyisjcikslnywworgqkumbigekrfmihsmltvmuewlocqjyyoxdslamhjermikteawoxfquuzwozoxfvhfqozzfxupxmrzirstscqefztavjluurbaziiuixttyuadbvophauiwzxodqsllkhuqofdvwpfsphziddlvlkztipauevrcrksvpuwgxltithvkswoftkxygucnbwalovfjdlsidhqiixjluxgbdzvoaaulsyvhifcedghyzbtjqjfduyqdkinmpmyovqwdexnrpzbnazyfqvjqwmcrqufmawupnxefaixunlfwzzjpyoqqugykmqojgdiwemaujcqsdyvlaglksihcsywwbbgzhpejlmvbwtxlbakvgybodjhrtfxmrwybdojqgkvzacztstuywoklmxfmdewbkasogtabtsbaytwysxeupuiuwxoogsxqasbgtybqxjosohqzfvtosxkobcosyyhipnzwmlxbgqvhgjernpyrcvuayttskiqrrwwwfzlbsjyetqmspttlpitbacrtxojzeldtudpbigrbjbjgkwukllqdupesnmuendgdylcvrrwyjfizkpilhgisbhiolojsqbmqehswaptqvdznlesveppplsnzpuegefcwhhrqnolbgkrmejhynvsbasxmpopkxpepjfiqsgpbqnyfhrfzcfyitpkmzsfmkhleligfqzjusccpbtegjewrpgkjqdyfawjabqpjsfjoytjqhqkunrvzpzxjbagggnzftvrgjyixzkkddjroukpvovlajnzlytcdmzpyxpvxkfeqolndinwonmjwacfazpvrzgtpzqcfewzsrxzoxwxsfyvwjflhnxxiqsapudhvwthxfsjrabbltmurwnfwsxnfvvdzwekotfkwabeameutbfwsgvvmqaqexgxqeavivnysdrkeyiwuyoviparneaudpyqebjmqtadavcuhzwmaoewnwhznouqpymeyozldgepyjlhnrszxwsurzgqrtyilwzjvypcrqayswtqachqbkptzlnjurnawzqyaqpamaljmtejfpyrrvmducyrdjjbbtxtbqrxssqijpctzcvxcclsrwxwpdvnolysqgnllieezdwtvvzujanextmfbykqogkcwcubcxdqyyieifzemcdqswngmopoufbrnovtccedaldabxmqaabzqltcjrttxizevnrnmtmyivzqcuqgpdutiiyqhfxxwemmyiixlomiuhqzktklxwgnuomxsvwdflhkrrmwwvzfwmnerkqgakatfyrceuzywyxfdhisixzhavjlmehyklvhjztxepogfyvyqpogwqxrfqomcfgmysohaptzipfmjtnsqfktexqqzryglcbzsirwcjcfynmlbfziadzibaisdosapioaqgzmcnhjjoyungnvzmkvpzeumfbulbtvfdnzbfscumizqcapmeaouhoprcofqjpdsnlqmkphegtltsknunzigmixnagfgmhwrghwvwegaijwnkmraffvgttlmcklszyuyohkavhgnwkjvfpbxbasxmgrgcbyxilhondfmxrpnwuijujufponedqdnfficgwttnxemcbjlrgsbmslwjjqoslwneuqymldajdzdyiztddptxaaitmpmizwiodajusscojvgryvpfwuvsvsnotfnvwqzwroamjnaqmyacodoedsjbjdtdregvzxyovybajyxccjzafjeyiqsaxiflusiyhthbkrvzpamckjglwtlzusbfvtbxxcxdxpwwavcgmipwfecupzhphgsjabgkzwsbabdcqtphwqkxpsfwwuklsfdiiznpdcohcclmnamcovugpzbrehxfotjbdxxvpyfkcnpnwvbwkqeldcbkjrxyvvkqoxraqwaftgutgfshsdsywvsicbrwyjhfbzkhxvusewmkqjrtdlnvmtmkwxorfbreskduvclpqhhisjfuviilgdxwldnxwxdfmibczmyptjhawgpzquvpiemjlbpnpocwquecqkxxzwaxgmvwcmjmdacnauohqtajknuprxzuwbgzrvisbjjadnyxawzxyfqtmndhhfuwnlpsyeqwuzghpcmbicixfbmwrfrcugdplnekjzmjxnashqhskyeaoudaqjhgkwortfhzqarkqdbitmqqgwdukdgjzejtodegpredlwkeyygcftzawdrsowrzjlscbxxqkiryxyruvswmxngfkctjglfdxrqieoiajoiakmyqxoguwuffsbtngguekneeglbvhiqpiflyqkroxhdfikwhmotchizajztfihrzmmvnwqdjvspsmbetswubaafvhvhkkusmyskktcsnycodmjmvdtgpprnvhknbollwhrqueqlavuljmkphapixzkhoflhohwmdmhaubtwholnzpefgkgzzhkzdnntrufoyzwepfxmtfnpbewyoiacedmwedgyjdkxywxwbokcfpxywrkvbcqwwiqfyiygqqaoxtssszyjnbywofkwknlkmsmylofgjemslpwmcbrsjuxxehwfevkijufgbjszicufklgvcaxvzvzkxqxtowgrgofbwkwfygefwxcyxlgjgdcmxpvihgvwxoqwpmjkrewauygrnfgoeqrgpwvtbkpmbsxexqoecfeatubblgnmrtzzvsibviojfjftxiqxhxmjisxlgslhudjbrbrjrsdwrdxwmdltiymdmmgcklpmgfjntehaefmvukfpfsbbjsdtcpcppxkwoqgempyyobqaqdkohepjcasbfornxehvzfnochfmmjegwdesoyexqqzirutddokoofrhqwqfeovjikuhskzciwmbdfurdxkakccejvnizgmxaxffvxvzfanuzaiaayeqrcqfahqowhzrhxnivygwbozthyvofuutqnjukgmsxftjflcyqptiryxuzhrwnqfxqblunmikfylhpwofmfjeinpbkeojxypfdbrracaiuiwbwamkvozgguczzwxmbvozziwygpccemzqtgzzeqwblnitbrinqrbjholgwcivaevkzavnvkuxqemffjbwcsxeivpqqrfwrfshelxmyujyvguymqoavskmpegacbqhhpljsaapaeuiljkgbtlnlebubtinfynlhgvadmxhbzbjifsbtbitzinrgajbrhpecponumabqgecekdxydqufzfzbzoutrbypenuufgmajvndygalnnrggftlnuthaecczemghagdopomednlzgpryclyruelvpmvndgzaavopkixsgkrnlmnvstekraeretfdstjzcnwvfrhzmwmaizndibcuxnpxivsipyjnwxirxtodlzdknaughjltgpcszuxitcmamhzgklcclxrwichaiwpsrcntsdqfqwxdypvxpzjhfkktvtvwsqokoztkrdebtbbsbsrmaaigscicsdjktakejgdigqljuxaqhwazkgiqtwlcalpuhjpavpvwohkxnjknlwngkgetadoquzgjkllekmmbzkm")) assert.Equal(t, "zbmjbx", LongestDupSubstring("uirqkccmgnpbqwfkmplmfovxkjtgxbhwzqdlydunpuzxgvodnaanxpdiuhbitfllitaufvcmtneqmvibimvxmzvysignmsfykppdktpfhhcayfcwcrtjsgnyvzytevlqfabpjwxvjtfksztmdtrzgagdjtpeozzxppnkdbjayfbxqrqaefkcdbuvteobztucgdbcmlgnxldcwtzkvhwqxbsqlbsrbvesemhnbswssqvbiketdewfauvtzmyzrrqslzagjcyuznkpkgpkkinldxcjtuoumcbcttabfuzjbtoqjqbpnsemojbtctvdmobnuutcsfmhkrbwkmpdcdncqizgtlqekvqophqxewkpxpkrgjivrtarxtwbbfhfikbrdwohppyiyyztopksdmxvqiaafswyjfnlwntldwniypzaxrscyqfrlqehqgzaxxazfwtwjajsrmwuerdqklhwoqxptcvqoqbjwfqrewirtcbskmkaqgtcnxnsqmwgwjxruhyyjtbuivvepnxiwjmtlrvexjzevctflajibxkvmbzdfwoqobmhstgpshtxitwttpkdvfmfwtwsazfgzwbtmqrowrcesyyeuwunodesrzbmjbxnchaqptfgqlknuarhgnsbwnucdhckpbwhtwhejivrmuccbwnyenyvonquscneswngwbkjysxvdwbzymwxcrnexrxhmuwvycmsiazmqavgmyurbcmvdjplloidbzacunerwobvaxsromiiwzqxnrsjpyoacfxcmmogmokhpmhxzkdzmpjcrgaeihdhczrmxmfurjatuwxriiwtfojwvkkybcdmwayhnzrnqrynwtrvmtgtrxndlbtlhyzfjtbtvqujjuwpibuonuwjdfvnhdqqzlmwwheztjkrrzrroogovapywxkjsccjnseanhxijybintgbjwlkmdzuoeclfqatffgjvcbujovunnauprhoocxzghzvsmuyhslnwqlcsdprwutyqggxfvczqiqeatglhubmllcvcqxrvcojllcoufzfxlunpcpfmypcjbnhtnhgyxriupmpvioqnkibldpnjxctyycwdxloucneypbxwiehqmzkvmwymuurykodpvylicnokwwencbbvzviljapeabhjagrzrmvgebwyrmctksubnhawahjclnpmavhsirvewqbuymdwxcsxtcwehreejtwoagewkmyhwzvyurouyffwhnsyhpiiozetsoveeqndctcxpghtxkpaolqjfaiwdtfjxkvsvamtmhyzuqttiaqhbkzxdjoqxnwpqnykcfaoteretoektileadlqizzlfgcwyhtgyjxdznvaohkgukmhjspqxgdygnulmmrwpwpkvlesvkqtuihzomyxedvalptrineagfdeotlvapabqrebqszkdzekxvttytwfzlsmzyfihcrvsirociunhuplyaukcoiyogdbtooijyfazmfpqwzfgdqzzcggnytspjihxeekoiafknmdvmeppdgsbyeqlpxhjkibcrhknfkznuqanixzckkcufqkvfbcmvrmboqkfablshfdcqcuyjqybsgzpdnjcpzekrydnoxjpwyttblbcadjifmrpexjvunecxnkgeusxwqxujanhdfjuaijngssxxgldxckiucpclhmzcwdhpvdothkdkwnopugrxffhqwwxtxvbralbzpzsgtkdplydydrlckyzzsxypywnavgnkxdbgptkeagvdhigxbnksioopfpplizvztoqrpwkyzazqvwxirablkyvyxfvemgtyrwubpdsuwzpahsnjepppwadoqeawrzhgrvuxexrqikkfpcihlypsnuhqnwzjfkxbrszsgzdmoomlojemujdwhpdinhmwaagbgovhziwrvpwszsvobdxbccxonqilhggfvnejiixcitcpisomwchguxhchizeyxtshuyqmjlhnrvhbbqgultmndqbojwqwfzqzlwvqazixjrivjcignlfhqfrmqhxpcarwbwwkepecdezudavkfkfdefzrrovazszvexdjtmqdaazzqhydakrvhihnmmetpdqalkhlkaavvpolsfzehmhpslrbscywgybctiunwxbqkojxjmyixqfoxwkpowukicsdgkonbqqqgawqgcweywlyntjonqfrzzlnefktbfrutbeqsjktlvvinrpcnorybwuocjothvohrnjeatbkuluguhazkhfruhobjtbnkfqqawftrrrmckzopldnhmwdrzbxdfbvbnmpxnymipabizlmjfmufzsjvazutsvvxdytuiwgmredaceyoyrjtxaikgtxnirdfwaffydnufzjvfsotsnvtpuueygzicyvvdnqmqsgbdbutwydtadejpjjybguekluohpmmazslvyrlqjtellkzbfvethnsoayrjhmtjywkczieszgzrncxavcdpovmqwofeaqeksfonmdjfcdqwzecgjaciriymkklabtmklircuomrdpeqtgkwlyqbzxditppvyhdnajwfcuedtxlmdkhhaggjolunfpojakvgkamiwccghznakxwvqgpfctbeadvcuwijlaitmubgqkbazlrutvlsahzhzxhydedramruudkqfqeycvyrclkuomsyyqarlwpmoqvtqlflscjrpctscizelgffwkhlftpihqgnuvkdfqkafcufpkhosbtdeycfhwbhjiwqbwpwicwywafqvazkjiibtohdbaqhvfdntufauxcsjkgaobbyxmgfoqxggnhwpifegjehpgnnoshkjbwyleevrnzfzxrhlmlittjcxjjaboyuepufctqfyiaoalxcindpluunrxvnegslpigqofsqozkxigbgokkcpougplkqdpermnnpgelgxogrbiufvzphzhnrswkkcuscnuxrfenhjhwjbzmydfnughyifenxtlqpeexmsuzuzgbfebbdyrirzvgrvdmlagbbycqqwsxzeqyjokccevcebniyxzznxqkqrvizkncfxbmpabsigucewylsghvthkauqddarvfuoxpxpowtflhxxspbsncyekwtiywmyakrnxqphdxkwwlmvdilqsjkraemegbslpkzrfggebukefcqwsliqjwxkpnjzmqchicyqnvacismzgqncurzuqpwwpjnpsgtgxszraeavhopzcrsbvemrwxjvctjwjrjjkjlesmypjxnoidprodufuskpuphcaudfqhyyhlczztqqrwlqvzsgmqnwizrgnuzaxqtekjdznxxxbhubszwjxvynpyifllqjvxebxyfqvwuojitusnbutylahvzinydvqvlhezxkbemtrklswlkmipoidiiwilqrdamjreetphgexhrhflyevdmxetsctrhorjesmuzdgtdirwqftgvomtbjvwymubuajfvevecruuppxhyotbdfhzvtiwewaiypqublanrwotmehnhdojgmlslifsgetpnaetavkxujboxakttvgrkadnwzhslaryrvbedtrahddsnpuapxruqvvctrjtsskziknuonrglqcmtpwtdaakhlkxneqxkchrfkpwznektfadgwetfhwnmzupkerdouulifjmsxvamgeumgigdldtpeklgmlppjizsocvljmuckqtotdbhhavclarnifecmqmjomotpathuyisjpbnkzgyslvnsxctuzwwdyxikjvfyizqnvqovtenxsxybateirdeunrtknnhiwfypfscisinkwjnassykklybrfdsrapuebvjpshezxctfydulllekuikdbndjnessrrknotidmsdfertiertauzfspljdvnuybmjideoutgimgcecyqxgkfglgfkkytgqoznrizealqpzfzrahsxcyngkiynhggpxietbgynflyufwchqdlcmrvfdhqkbmyctsikvnugswgdmvfacbvnzdptroagieqqwaxkojcipzwvdzfkqcscickeabjaoutesvlpopplthufrakrbdhsbuasrqvrfydalelazvbcvcqsacepoqouqqopeybmcohwilxbeqmkfxihmyluexnihndcgpwjllbingqkjtdkjhffxtkastzkjnhmszfqcnypbkgkljjicftjnhvqeciglviiwymqtgxdzmgsbhhwkorahiameuzsurojpiwueddmhaagkghaufmywsdgvvowdeqmrchnkrmipzemfkglslblkjjdjpbensjtbzxvdnvrhupssafrjctzrkorqycmfjmujvrqoikhdkligdkwxyzhsrijskewjmjyzhxvbmillrwlbdqstesbbehnoncxykhfhtdgvbslbdmvlabywwwfsnomjzwuyeynzcmyjbaszxcpeozuubvhbufxaojzynajrzaylqvfmrxnxfdsthsnwwtwsavuzvmyerwfnykcgppjoioqhpwynzpidywlxdboxkoujatbcyqmutrfyrsjaxeoroziuhprntwnjzknpkgztfyfongmuwhcogbqabvvsvptkdmlvivphbrznsjrpprnzfdogrtgyqljoarmioogfiyvqchhmypiqwnltudacqrqiqmjbgviwjoduuhalovvhboumlgfbxvbvfgqikgzyicoaitvtbpsficbcgutbtuxbfqwrdfjwwgoxjjhhtxrcuhknwqrjwfoslypnjonlzglexsfxpqedugjtllqiitflwmqfkfowkhitasbvhowvwrbnxfumkjcbwyzxgfftccptxxeomhnrzatzepkmnyogiepvguvfvfyfmpkjnuufikxwhcvvrjmignitnvjjspxvgjxyqwfdxpszcmzihirrvcxyllhbdrhhoiratcmmgfzejwushbwdziqdhqfsnojgqtkpquiuxmnjyxzxzzkyexkbrgskbylbogbyrdnafioxghllkusvdkgcygdflxiqumezbfcncmodemkerbsxlekkcsqjmkrureosjywrwnfzaoryajlanfouvtuofpymbvjibmdanezzlpgvvokvtcchegfdskyaihgurfjrqaeurlsckeieqbiohefgqxnvwxlhodfxbukafaimjygjdodftdeytymwbemorvrckerwfjdqhgxptlsnhbjybjuerafqhpedrfcgepgobsxbkqttqpdxiymzkbiiyrncvnzxjcksblzvidstnntyssrhwlvizpibjrfvqfacvylcsmcafohldmwojxrtqecsvcgqplpooyutkvhurdfsmeagyrwckqupdvjxczshakmmbtkjwspbtzjqjzpndtegduflwriktdetumspbbitfwdzfwwoyqlqnyqtsxdcdwrofvjfvoojuiauofwsmjkuukcqdohfczyrcyfmbotajdxypbfgtzqsvaausdrurxnbpjdiexvpguifiptbrsrspkdrutbnthvtxbaiglpacaqacrwpbxlmizijfseucvrkhofrnglzdzpksbiestjehvqoqfcefdqsbxkyylszukmmlvsqjzqpnwmtwesfdccdxbndcquaxnuwbnvbpsnwnejmtrxfeglbxrpxfxgedupdxlhbdgzxyxjcfeypautwvvswxuugjeeiehvgfnwjrxxkvmqbnshxbskdlxestjqiyphnizrshmszujopvsjrjambyclvlugylfikdognixfkloabzusfcyhiolmhyshbvoeqdswtusiwapcrbznzgldwaamomvkwkuewpfllmomuhzvwxbickdymcrpezmjnxgtvvmywsnvpbtdzgmauatblqfgwwywftylbvwqmadzvvjtvifqdbupcfmwmaiainpuhsypwmrsgcxyacuiccbwxxypwjceykxxbbqixunblwdzvbohczwayyvyfenfflauuxxvarbruvpkwycuwghxzdeizuwqehgxshzhcbmurkvhkeszqlijcvmgyavhvgtzsdgiptmojswnrtjyehfystwugvlyicggbtscbztahoowxkpprifxixsrdfyohtzwyncjgjpeslukofxtxhlctsixfvpzvlmwoqmhxdjeuodkoshrlwwfnobdkaemiviuyyqedpfiqacitttrjkacklqhpnxbrbdetbukeqzcgvmhrmqeudbrrryzddugmyapmqqepgufhybsobaidjrsqzgamyvoeiqsofjsugrqhserhqzxpzdnncntosgwjdqclftkvkpoyiconsslpmdxxstapfyxdjrgicszltckddxonfwmjdzsdpqoreboirfjkfkenzlktoxakfsaapvqornemrdmgbltzrjnuwnomskunnemmdwtdideytcxcmqnvodwkquqpjqtjibfgvcjsjyvpncuacbhjsplgobpnufotaglmfazhxgkumffkzqszkbigwurmggrwbnmmdpdgsxtxivucijynfbxijwairmyfjjcuglnzrgkzonltxnpfujpvyevupcnrawumhqhapeiyouniqcyatmgrzsyaoxejsxaeerucumnahrfukyxpcznvnnxlnvctnxupvrtzypummothmbyvrnkghdqqdpfqxfxgdtnqyjbmdpzjmmmdgttuldpgjasumifjaluasojihpmcgmlvztefjfpgxmyliwfztkfmmevbyzsdxiixpnqbqspuanabznxtjzekgmkzlzjoycoexfjaoqapkknptgplsldzwfazuvdxqahaqijittbgqdrnhxgpokfezbawsiwumafehzppautuogvsahkfamrdeepovlvmprmzzrkpwmweijthqmgbydwonpiaydrvpcykwbvxhmcufmonmvyecsyozzkecjiudhqhuwrqvttsfnfxltftyaezjohquwyyysouasydxebixsplgwcljsljradusoccdvjgincsuydrqxabsfglcfefwzvfqzywpeiucgtrcweykgiwngbcasuwuwgvdjmwbabsoxrqrokxyrykyjuckqiwwaisomotluenwcbqsipjveegebrqxqzugrtcqnsagrdbqmmzffmgkilaizklvmtdgbhrsvvbuvpbcrcmczuaqfnsoxvlnfpawhjdyolysoawziztgjuwtluribermtzlqddnaqjwnhgmhvecwbyqslajxagtjadhjvhvgdovtmtqjrssrhblznkewgtqrfrvholdtlsbntjrylqlphpsmmgupweeecjohjubaofjsbzcsriotfljcmflbbasjmeutrnghbldmxvowgamoejejouvpoqqqahtcluznvwpjuvpfhongubixsmlyxxmpaanurokugbskjdqrkrhbkaktbkvfvoxuzftzbqkpxuvavzqyhawteweguqzyfdnznbfuuwifvxrtbahudcyjvlgroehzbgshqrthnpczyqxwlgmopubhzsbscxqsecxrexyuwyvmutkzvijbolnrvpnljhvxvnzxhdbhktbfakpvchjvjxgljfvtinuuhwvfydfnaghdrsaljmfghjrappzqvrokwljycarotidjiolbvailscqkudeenywudzqkjdyivecnzhfmulodrqwyqrmzzuhjlktksceoelrragvlnbilflkbjydotduabakfejjamcdffknxcnnudlkmsjboessgqdtplhtlowirwkrvessnctcysoalwjvbzxpyxqszbhljvthaphrvrrrxebdgnewwdrumitninqihlhbrihovfcylnxgskdaxmpaklkjvdjtxolchkdmpeijkywwbyzdworwvxogmrpypngqawlnebybzjflbqotjvwtomgerzklfmofsqgrfjcxfupbmxhitcrvoozphxrgchchrckigpashhtwpxedjhbntobvpizbykcylfolblbnwrechfpjhxrsfidhhxliraxwxfqfzocgehglcspmdhyngdqdoazytgokzonpagaaxwvflwuyibbapmojevlxbbpzfmzslqlyjjduwlztvfxblyqcnsfaoexmddugjhtrqostouzcccvevqircusnzhkhkmsgqwzbjwaipqrnkwiorqtvzoigkbpysbvkzvivuxwtjhucgrcsevqtttddluukitfrcdxmbshxmssmdeliazkvqmgsgqayyqfuhlmwbypwqwamaqrbiuwobczbrijwxxvnrkaywpqljfsinzsuczmlzrycvebgmlupoqaytovvncgwakgtvmokcawksniecsywmbmgxqukuowbujxndgcdvhhccbxdfdtupfchckinhqvqmyrgzhnkfnpghwioowhaxvljhytwmaxojaflalojflawefygwqqxsytutujwtbhibawewagxkybusekmtxrpaulrnreqwndqifsggbnorcqbukdmnsdflxecjjebzppljsjnnnpbnuppmpxrflssthotalfxwoaubwaffzplaoaprzmyprfgdjzceihjripqmflplgooqxmmpzjoafjnttsaqgpuambxspuivihxeqbypqhsmrbjtkaektxwitfbhmbqabahriadwmmnkcahnyvpcsvmteisjopmsyfnpdvlegzhuqwcaqzxwwzzdwegutxlgbgcastyimovrmupxlxtxqglldrghginuabfkgdmpfcvbuntalmljhblvwdvlcykzdnrrffbaiffkxyzlgbzvzvlswqcsqybrixlmrupesrnhgemquzrhmhtpexnzknawokoaasobybyfsbrpxfraywfaumvynmjafzimwhxgxgcjrlryiokemhgpaxstgggybjbzlpoblyvmwjsudirqwuboqixvohypyrgwypiwwfllrqopfosltidbzwvigkcdzvuuxjecuygwdiwiuwieaojwfzmtxrttybqilrgxlimbfrwlezzfvygdwoppadtznshehxhmaiputfxeelkjrmbojtnqnhloqeeanulpyfxrxgnzkwsmtifvqkmvskvycgasppakgsugkupvtouwtrclngwqpmrswrhercdpdaoitcoardzwbvftuttvjvncxqgwnufruxptxwjsiwrdvzauklioyakxcokrgpfvhcguzgzckwvhumbegecwgprpbkszoczrpqfkgsfepvbblsuwvheyggosicwzmimdclpdcfkdldzqnibrlpehdbpykhdobeuehbixedbiyhghoxaqiyrwyeugqyqndmlpulxwpavavlnnirolatvrpztrrlqssvqyvycqcvouaqzcjiqknjgmafjuovadsnauhjninhyccvihkldsufjiszbhqbiwbqgyxeqtoxmuxtitzljiwzmieymdxahqwlmnxcnehtyrkjqirruuszaloqbzxgvrvzndhhmfptuwhssclafxzgkhclvqxjeoiprniewtqobtacnffsaxvmfyynrwnrdrvjbnhqaugbkwlordirucuppedcgqyplfftfpzotdtzozglvlytzobcifzzlijlqmpylzajgjmywsvdmehbtlibbdbkhcjvanmnswkasbiiinunmkmwanvoaqodteegrmlnyueerxnthouexswkjpkrfpmzblbycrfculeojmmcfdqurnxhwqnmvjbmvqqjgobubsbflbkzeewsbxvgbhgbyxiqrbecylmbgotwtxebxvppmwbzmegsjjatygluakvfhfkjvtroszbbuvmyfronzazuepsmtudmvocubupodvtbokchcycfywfalgklgqgurypfnkimoixchbqnfsybujgmatkqntmtsvjpkpzuskcfxejrcjoxhrguddnyeizooaaidalerhweqgoluqxzexaailanyrsfnypccimkekgvoahfcynhvfdowxjywkzwwelkspispuhtoxyxacygtbgynvdeiwhgdmacbnzmqtkvxnvzokepdjbqadpkriiucdvdjwyclcikrypvjaysexteyftxrlrthrxgwqgqgayxfrfzzuhjhpmuewkubcitrlnlxrsujmlkxadcizjjrgjhyljuglvkchguieohohtdulxdgvhtoxbvnuogmibtxdsakiomdnylyjuixixsvtuirmljrktgsbnajpzoneunsmqjvxjhzcslmqdyvfiopvhqeetegdbhxpveymraeshykoaljxxiwjkrwkfvsppvmowfyfmrtphrryimsflivaanyeyokyaraocejzgzxgidmbsvombwqsfktzrdikylpojukcwsjumalvvlmcokglqxkfewayboxmdwceygdjpfvbgindutpydluwwmdupathgosoxnhotozldalbmtkbhwahyajrsgvcuxfvpaqqecowhywrdxmjzkasfjqvbumnahuplcjdhxkunakiavmrazweofqftodajueujgeeaylwiycfsycvinwhbtofpdmksjwafyqftbocjhmzmvljsnrseevsuvirkunfumzdlgcuwkymwczpprpgxvekqtxgdibsrwiqvguyikunecbcmfruwajkrloccwphthvcljrnoksgngvaegkrpscazqlrpjlugzzhjrifaucfwhmmmxpersfjvxbhqcuxqwunoweuxfvolmtuflwfmejuywvbukuzlpmmonmkuwyyxbthcruxjplzpzhvwrozrrjwbyfihglrvpzbsueaotfrhluybzhzftqluynwvovjidxiguchsyrhvidbscdhmyuityteugdfheewffmkthamxcviitrpyjsiqwmruhbkxqejizxuzpzsvmvrxoizkhqzzddffbptfsscgziqtnmdlavufcbftkqkiiixjfbvfoxjulfaqiwqwoceigmzhzhmywwucxwtlbsgmvsqzrkaielnkecuznymtoowtyxangznhvhgvjtrynbqcdirgeurzllbkawffzfwdrmpacouolnhvtnijziicbecojcskswolcrlciulxodqetdxzagstitmknechbzvrqrgmdeewybbxjpgwbwzzeaqhdxtfopmshevgkfgehknkefxwqaukkwnfvtccoaxgrgagupepypnzbductjvwpqhmlczhsjemnzpekvweoaeyhilnkfnwinryjjrgmfdjxobhqammpvwnifbzwidkkrjxjeelejmjzfluyxhdozzoikylwdzpijurxmwvrxevbhckhbpkcbpniuffhgxzepvftlehjaugjvopiwooyqyjzmrutxlublxasaehftjqwpqpampjxlogjrpxgglmxyrfchbxvriuinsmuoevwmfapxpskqrofofhwrfwbycxgvdrklriayrkxuyvfdblfyosdeoysmwnutitsyisawayvlrhxmyzqnwctvcjoljaziuuebkktkqlujsdvmtfxjevdhqctwqtbdrokbnieefsrecyulznjbqxoajnqewosaatnwxqrezftlpmyfyasyxojhdsijrbzpjggsrkmrpobaxmzbccpvefdgxmkvstlodakkzsmitdcxditkclmoinjvwlrjepdepuhohhesuzehjisehnufihzdmksigbvqjhzasxrtysdweiaghspogclgkckkpivpctxwtoipbxbpmtnxsporlfpxunrhlzofnidghpvauhlccjulvujwovdfqskwbunimyvkzbalocwjqcmnoaamsxrbodkmgpkoxpwmqjlfsskesmnvjcqdbtdvlwqofwmsvufryeddmxioxldlabammjlwlicdfysufglfyirjaexognrtckvhxcbmbbuxruxzylklgxowstylvbdqxwnxgdutqzjxszrwzbnyermjqhrgdrbyesgoirecoswohkzchnovkvgvdrqheaahmpbadvbuyxcasdxwexsmscfapbookhedlpeegzkjuxjpjpbrpuqzactilgujdrfrxvzxphgkvrjiqiipvbgpskxyulukavvfmjblglhyucfpbwdkegxsjjhwnyxdxkvbplksfzqtrttcvzjdpeyzdjnncdblvkxqrjkzhnwfhsyxtbvigvrxlxmsngigseksuctxrfpvrvamhqttmwuqkwqbifwqbcghlewuatkftuasidvclzwrbwexcgxmchgbodhxvswvdlbymvytmclgabgpnbcdkawrjqhgvweyuxhjdinuzakvhhqjlyiueivpiorbhzjrphzqbtgtelqpfljwdifhthnpdqeswunpzzifvfzjfahhijejrohodvforlqrhzemvkrdmqlevlfjkcgcwcwknfbvdffargdzuzrwejomsfvgovovfzemvtakrwnxweqcqpoljhccpfwrupbseugipbzkcfrukwbmqrjcpjtnayvitpotykaapexjfrnrmhebypdruxuuqmelojadhbaztuhmukyuedhuyweojqnywmhhssbacapuqcsbmeafcfiffmfqctestvnorhjscvumlspjunfiznbqxqdllwpoylnbiifcgscecgzkjmvivrigbyyhmkxjjlflwbhubtfsqkxzwghfbndbkhlbgwkqcnqcjalcdphyerdgtlhgfzhjgowiqrxhtmuyyxrcxlahnbguwvnxgtvstlovpnfzrzbyqwbyjwtlpebzvvgolggyxqnqtuboqpurrqfwfqsxkcuqcaifeezsdqwdlgwmyhvqqkrzokrehfwdoeskgdloywfzjpusfxfraciuyyhmfunepeghgxuqtxhqseqnljjxvlipcerbobssggebhwxxltgiyjfmfafzksdylbezxvdpkebhipxyndzbyscpfovbydwbqobylccawoqfbtlulmoqcfnprlkxgmvidhdtznkfnjwwramsaowpzjorskjhkewtwvhfelvmfnffwuyjtfsfmrxbyrtchqgjathwtqomoiafacczseirxnnneroukshpfvhdcwwsxkowaokwfwijcfqxrzxpurvaubnsinuaqmzgtpjgirrgpqwxbjwtxrzmlagwyqlhtzsjbzsampfjwidlgkkprtezrnmvlhiivvlmqytufmkbmknnavnuwkubnpbreivfcplvubdcqffwhqnscmbfstrxeltkbicbhmpcisewraunztcnbjwztammktjsfflgngvvqntmlsdcovkxvqnxgybqbjsvvnelnxhwxxbojgnwrowlimgetrpbzpdqdsvoxgseusuamjgizqqcnmrykwkuuazthrjfkehiogqsippsrggylllpkcyugslhywtgrfizsjyiufshiwulcgofkhkqgefibnkglodiwuyozxzokspqzwyuwtawhcjgaelbsdlyrjtcrgbbxubateywtmiuxhewpbngqgyeiynwpfzwbffuqxyygpbnsmpqjjmiljzxrntodoyzihbhderzgyyahpukhhsjsmarlciejoazfpwxmvqhepxzkqqyklglbisqvkxeqezrmxgpxrbpauzcihudcffikaoennstouwltrzgucnxvqypognvsqxqujzuwglncnszxwwciccfdsutgsoocokpoieymxbxvjmatfkonjmqpigbpfvkdpuwilnnofivystdrccdkwiuusuguimxkfhjedszhboehfhtaycurlyzxxlbsjxnzjknpnahoiezfhltuvyrrmltacsrvchlnakqbpuqpbpcfxrapjuuhgobqvqrplzaowtzqgcvzxparghblwihjfmdmelakymzidymslrafdhrrtwjacddniivtgewgbhkvzvocsfsuehxugsukgrybdiynuihsodwdlfkjtgpjbextdbjabxgjvrgnozwikdjxwminopgncsnpghibnfzrsmbrbandudtrjapkzbukatorpiycqpgecwwmezopdysggnhuwgmqejhflarbidjhljxoxppacgdexrhnvgtvrayspmhybrhhtcyfqyrpbvcecbvocfuiroaydnwevngjuwzhojfgoeozkgmzacxvmovauybutgmjmiesevjdrakenvkyykykoogolgvojumtxznbthknlyuunqkcizhxvfvogjgnxbskjyughlgopxyiqbsdqiijecxiqsstsicvxnobshgtomnzomhlqjlqnafipwnejirwmdkpnceoqpnrrpntsydnvuvsqqbbppmuhnxhksgrxzmdiyjcdcbaemlnklldniaxioiepwdgbvplmbdcppxjkvagvdslmztgciinbcsrtjnrtvzcdexvjmpuycyluulrsebqrgorjozzmqoynfnxoduufhwryagvcfkrxndgxnuldqaocpmhuzsxilcpwkhbpcwotynieuezobaogyeklierfclnzjcojgnutcpvwklfonadujbswodtcgpowsaoudceqzskauxirwbdzfiyulmftjmvcedtpqqkrqaraqwtcjmacnyhtibrcciwpttjszhvtsdcjtadfubnlqvcqtudkasmhmyihrlmrlhradplgoshdgzzxqkyrnelpiilotohnlznowtbzdrlbraaijmnjmhcvroarlubpbpyypqmqgrxckynyyqclnidwybiszqluufrkiteankefswfwfqbniuhywracoppthdentqzrojcummolhuwvwxfdsoadbimkutosqhnihhqedtlnhrvqfnubampcbuwfqadsekfczypojvbtzmksmsjfeklmszxplqixzcvmgpmqhdehmmqyybjhasinexxswxyzoodalkwnymfhzgtcyvrlfvpxorgeikzwsfamuqonwkvtkajnynjscczqvgkimngzzkxzjqdydnzsqhzsmlocvewvcgilccuszzeeldbxuwpvgrralpigfscfisrgqbkvmzeivfviiyaakjprjwqkjqsnghwngjmxdvhrqzrojuzxkbqwaqarngbtfgnahyajpqknpwnfmpqwppjgjcsbejlgskdhhqkkefxvsruburjpdvkeacbtdnmrnzkgciwzlvtmetbjjlgynhudqzruzfexqopgvawodhkisedjzjztvnkyzxcnraohfrxrntwyuuvxdarxzthzfzezpfcmkirijiwxaujebmwlpiutbyheipgewfuolbvqhkllrjkdhspzkhajwmzincyhcgmcyjxlmahgieyypdzowzzghwrfpyjosnzkeaskqmzigxvnyaddnwuwyyeawwfmbolmshdmlrmbwffrpzmqrkdevwtdwpwftqkakjtvpgqqzpebtzdrdcjlwhylbqjhcctcypeqtxfvfmjwqwuemlmtwscgbznlqipskwntzxdwfickgldmcnkfesunaxszkhnbbxzwubplxzfhqaajhdsltimcyjdwkgsomurzorbjgqsyuzngmfwrbakdjhdruxijpngjzkdczwstzsldvapzwvjcagyiiukngbmieuoxfksuiudgmsawuejdvpvzrochvxkdllmgvyyjwklzsisyrsaqohcolfwasmjnpsmkkbkgteozbbqigmpgsuuevudqrvzgjfcblmjejknxdsliexlumygsxxeovxyinrcuucrpwwsuphxqaqkfrjyoluoackaejhcatdsxehcqyuitcsngjnkresouxajjavtgdvhavayegpcyilgthvhyzkxnxwosvcxnjnqkyxrxvdnanxfbcisorgbgtlhxcbbptokbehmnmaicvjqqqvuyibqszthpnhgpvzqspmwkmmzffwlwdsvdtvldzxskllurverhwyscljzpasmfshpypcczhnuycupmqxxlkihovxwgsmiteuyviqujyoozcucsgkkpaztvirxctfvkrayhpaespfknfskotubenfwnsyhibbheafyzdaetwbthnltfaixnjccmumglhaotbayilsoqbzkqomwpeumknubhqpqqgxgtybnamitpjzzkcuvrdrmcjzsosjlippecnqwssbesjigfxnosslewcrmhaotvqhayycfasnmvbeinbuovkdykfjchvyrrnhqynzmhgjtdakkmylsgdyobzzpvcpovfkkdwjkyrmtgsqhcfxcmbtcqfqgmtbwlhjxqbhpsysrravpuuphcpmavftyewcrpnzjcmzocynpalgxbjarrziyeyjjijcuogeoxszljkmvjeiymthuflxgmakcitajmowyvqutwrtkkvvcakuntbxdjbczjfbzghotahbctgaubxnkipmbseflhpjuaycpctffyshkzolxcqmhvdaazvznuxewhcxvranesvhijzuroeqedkuizgisadoicwrzrhgakthxbncpjhsimcyfimqxvycetdfockpwdlqwwdrnoermqppigjxximxywyqkkwkwaucasnwcklwixlqwzqtjnwphikojrvjqlojoaneedebegpfjftqkayyxpuhrefkhxirylecbneczhzrshwjlzhwxraxomeeoeuwwbrzdfoapyrqtfnapgjlcraqkxknxmdzaeroqxxdfiojfhriglkznbicjvtkbiogzudnhbwyjdeyedkfhspitgraihcdacjmubvnjdnwanvzuxptapmvsshxpcedeexxresraraugmyufvlgvsytyyoywyxyglliyunvyzjscfomcihbhhdjzgkgeqmmoljyharlqtkebsynkhpchvmnaqowokkeyfbjlhgpltiadcimihsynghjukazexwlekcvmbysogtwyrmdqltgjywncvryhilrykwklxawdsdirywbcxxchwjtqmwnzbxlinbmizoreloqlmmxvyinxqooabhurdtjbmzbkitfcybxcuzxetqdzyhsxyfhuumrskczbhppdebwolijwxezfhuxchgzjlkpbvdtjlhzjwvessbacxoykbhpzsyuopqeygpjhvfpsrnucvwqektefyijqwguyvhokhrclmfrcbqgfbwmptwlxxlevwijkzjoxyzpyrvpslgcluqqnudesgtmhivigoqvvauurobglszvgfmsvcpgvfsbrpxoxekanfnsgnaponjvskdbeedbvbqksmefpkkwpyxwljogqulnemkjehkygehxiazmxnccappvohjdyjuaavoashzqzzunzvuphqiejldbszupmxzwmetmhvxfoekclksdycxmqvjvjlnbwyspzxsjchyzchlqmthjaieghcbshcdatxffralzxqxpgmzchakrtlmcsxfyjeybpuumtpjbxoapbybyvxpoxxndlfgdyhpglxitnoxblqhynsftxcawajlrrhjzbbtfkabpokrwwylbtbxvmclikxhugbqhysmqrybgougphtzynthoyeoimjhhobisjrrtxzobrrwmuabfyyrfaegivpreraccxfzfsaineogdlanjsekritjeimmhkfphgmefyvxvoffccdnxkkxulnbdwkvsyenaapohridltdddlqlwhupoevrotahdplzgqczisxfrfxupyjllyujksarpsefnyxsepgeecwozmlnywvglliysvlexsdihjdtkzyfwclxbeeybggkihorqymdrozvcrrxkyvqpyjoglwscykbqbjapcovxfssfeyvyergidholownvlyjwnnqiyxpqgtzrvplpsvzqugajgqgpimsvqtdobpirwxtdrzqzsjaxnujyvteraailkwlokxwjdkkwefluplwnfstwmfftltbnfkusjuqyszirderbngyegrsuhuovgmscttvqszyrstfokbkarkgrvwasvjusgnmuncekuzcszyizehuuckqnvxahpwdduqituewlisjqvictgmjzkochdmmrzmxmaovrhxlwjrqbsxbkwlvfniuudjorfanzmzyimzdpbcgwcvjtfiyzvhkahacsornscrcfpeedptkojnpgdbgjssgdipvgwpepatqxuuoqfdesazbrlrmsosiihnteomconqelnjigyulrzoquezrgdsqudzadrtvtnajhmsssnulcuptbmjfnpoflwrpgxwdqzxzsrydggzqetiivylpjpdgocegzkdwhkmpkztsryfloalzgpfopwmgxyiibgglrwzddnbgjuicbrjenqfhqeubfbamudugybopzwflnoejothqcixgvmozhxdbijuhnfiphpdmojaepamgeirobagwtaiizwzdsszzejwxppzqpotcsbkeixjzqjusxnmuzkfbymgahibeffuzbrvjslrxerijwsauaqqqfvbwtondwdugthnzkoulgykqkgkyljgtmdgjstoklxqdkhfjolakirwodvqmxgjlxisgkvpcmfuxuwzhltxorqvwwqjqyvfwvibgswsvnjwapsionfpkpsbqzkyzrwhbjlnvovblufmaoangzuuestyedciukuagcyqmlpctlnrhcfegcviwhrlrrwqbvrodaaiqezodbnctszmenvkxnmtqsotsusrinbobtnoguodrjcebzsteucsetmcoctlejowwpucqgyoctbznssbozwcrrhfmggocefczcdpftxcksitfrheoyeohgmuueweyiqfmzlunqreoshjpndxjfihzfngbiyxtyydkpwdfcdhvxskncvyjundpsmpiiqjfkqsdxsuwzsgjbnzgdipvwrhhsppxbmvwrdcllwmlscmqxzephuwbrlumclcmzeakinlnbpxmqtxrwajwlosxibdqlyjwmhxlkbxvjqcghhyvfknporrzjfsmxwcdouzxwxbxnzhcpjnuledsnhpiuxtpetuxphvmgfpsitjzfvdivwqbgvncsgmbkjzwoseuhjzrilvqyezfagtxevzrsjbevsuqqcafsntnayzboyoznucljywgqnochzdfqjqqtclvnaegsirqrdzbyozupzhfbtypytcwxubeazndutrbclakmgszhhpgrwmzybuohhnfxoccknsuarupqacbbvhgtctzpsdtbkgthttwvjzzqsispjlivflqpijdhjpkoumlssqrfvfrvkreubstrothhdqnlbkuavqxklcigrjdvpvrzxcnsgvvacgitswrxazcpmktrghzkcbccvpefzwuvrnbpikqahizyaeufgfkqlofgfgugugejtqsulxaxsrrwrteebumbbowihewbkwvkdubthpxwpwdbvsebxgdovxzhkaypsvjandfwfuwhfqluszcqomlwsjrggbemcefttmffejosvznywcgbemosilcaqfehnmqqzbmjbxglzmsjxqdlppjpwajajjzayirgyxcprghelguxnpbhmkrraqjbyipteuiazvjhhwyoumlazsrxanpmmvxdqecoelezgvvhqunpsdlipuoyfjzgbstiswyizfennyrhfsdwsktgxjefzluidjdfyewmznagjitfbksljkblcidbmcvriykobjefrijcdmgtmtrzcwzxjvcghppymy")) assert.Equal(t, "bpptpt", LongestDupSubstring("atrccwrcsqvdyundzudvpvtlkktrvnrrlnksmuewuppgvojypyfnqkchmwwavdhwxmnhhjdicebqlxryqbnkdbfoboineyevtrnuamzhmmcrchmwpspuccgfqvtaqyitfdrmfutljyovpikpotkknydgvmongkzswzfhjkhphixffsahrecazodlwgstphmdtdmstdysedeuxvhumnnnlmmxzyobckbhfezjibjvqnvesfimfairdvqxylaeiscszgrpmfqabnskigizdtamkdqcxswwwwmbisfdkuwrqsucmskvxjucjvxbfsvwompwutjxexxttiugbxutgztpuytyxojsoihfjhojytfuuwfvgwsiflltcmtufktedeevmbmsuloiieozeqztpdgjdpgxklpujfasojvwwohbdkbdyhsngmnlsneafwjgkpkhuyenmmpgsslmziqptdllckhubqjtpllmwwfydveksaxxxvzeflkzfgncubgmdovzhyjbzoezccqkziwqvxibjgaziiiufgrcikqfqntxkxpmezrziqqpiszfrpzohhohzftpmoxeverikacxxaxiubpwtlmmnvimoagqimyyzanzphvawzivfhyeiinoqekufwpcuifunyyrlcfmicgyzjjqqbvnathrzdqswmbpekvfzuwlhvmlyldgsxftvcrjnsmwaxgcvrowhjnoaxyzsdvhnuqnyvspgkxsqqyqfimrqjtgsexvqcqshthiovaulwbaatemveotnwjyttqbapedujhwutktisxywpnbemnhwribsmcdegimlbuwnsblzpkoyewdvbmvjozhzblnhgjpobochivikutkifjahwgsmwyveywmnmopkebspdcpjrvymymwsychdnqlcsqingdlgavtnstdpsqmfumqldjpinxvwwgtlbubpweckpshpdffeatyjkwgxzbfrhgcfrhutwbqyolvjkvstmlpeygkermtibjsyagjoxthwupswkosnynlklokbsrpawwdlpvpdssxldcyhgmcdqngbampbnrfxniuojrqqvkhvyhjixymdplubtzsxnqygjjygpxkbtwjyrzglkqvntzjqkqwqlikgyvxqmnzpjlbapfodhexnovkkcpzibmoendqgggyrvuecqmngvtpgnafulmxbosgwbfiqffbvqbrmhqdwlqfxvjiwwpcdbbwwyweupfwkgjxzcaafphrzgtfakyltebqtokobiirknwrrmmcuwxlyxghnfuzgkffytqnubnxbnnxyyfpqkxlhphzmfgrnmginwopprudgbgdestosrfmrdjlchadgsymqjkrfksbnionnulbmwidesqrztzlixnjlkofmxpkqqjjhzctxiezsmrhvikuenhpbczqkfvyxuzkahrrydpxbdeqpbhbgziyusvcjsrxsazszhwfbtoubuolbcnmulohurzarsnchrsmxzrpnxqennfwwsydkjezlyezinnrclhydjyzwandhmaqhnlnwkjzpqwqrqofjqwexkmwyrtfogzrdwvhhenrsiljbdwseprmnpagshpsvzapxtcbbfqknbedweigokbhojjodqqcrqlfxkpqdbaqahsbfzdjzacgrvubjaymaghwohaunkfobbcmavuxpbhzhwzrrmilbuoqwtahlplrntuxzrdbedpldqfaqcbeunmrcexoipnyusfdqgwniyuyfscwcitngfvgsgbpptptqibvszmzzdoxptgfeghwhmxzppwoxxqxoskgftsnloajalhvhokyuysjojawkannhdqlkczztrspnvfedqgzxsgllwduyfpnrpwfvkyenweiropzkqshzlgnnepdtnjeslqnheeqpjlseowtuksbkyvdhzjgdypivcboorfuzklhetdgpkkpfoiysomsflofwnnbnweqmjsnofsairqeplwqgrwzdfkrjzwhbcapzuwpaullwirctghwyerwwnslqfudsnbfoyieqxojbzvfavpcweyiazlsmprtqbfqpjmnotrpnuvwxxtxyjcjsmmfxqqdcytxjdvtnsmumyebncgfdgftgulqiygedonijqvkbzzjsspmgzuuwamzwzualrdjmfxbuluidgjndbhtyitknbpvhqnsisncaoscvquolephwlauwhmyixuotvjbsqqninhgmmhdqjfahvqpftgznvmsvwfcjvvkdthzddzeajylhztrocxzqqkgsbtixrwlemgvdmclbubwgppdmijbwcffjtblwoskbyvxjtlnyzfybnglmwjzybvqbldwigeppxgtghdcnslomdkifmlnpujrhihimhchyxeelmkhdveycrccduohadrypnpspylzpgspzuldsawfwjzzqrimxuounkmoxdblpuyaefpgputbamawextpamfkluthobmxzttmpuxyiwxigrhfwrnhdxavfaxrkobujotafcebdogbjxzaixelgumawseakauqaztdrxqxybpudohcywhbmhesvtzhwapcrjozbbbnlagmhbepkivsgnkflcygxykqenkvkzyxnbzjwhtrzltwgvgvtqqclmcptgpddshywokpndrqgojznqygbeyvqmxiuvuxtfgmymhhargcmrmnvplkbekjexbdnqkhnwtrkcakjnvsdgijxiklgnpbucmjdbtdxwcnrpychtkqdoljbsoxwobuwdsirwkcuwurqzdnrmkvfgdscpjbrqchgzaeraijewysaksycobbfhigywuxijmrixhhvpvqeykaictbewcwmqaslrffundlkitdamwcgmutuzszhhptakbmdsqtmmcivhrvucuwttqcpjpihzuuykjjovmxtbdrglprrboevnpdmleiqeblriswweyrqsgofcmhvmjdtivrbczgusgioljveczlculpnkjeabkmmyfvprbjahbhdruwqkwqyrdyizhwonhzrntlbwntguyudolxbcbbwnzidggwdxntmsmtepzmvpmdkyyapurrunhozamznkykxlupwxogsauidleqeshmbflwgbaiuyyigapeyuqogklgdtvmgwknhuwpyyvmomlfzfvtkmgtiocabszraxajmicfutlsybifpplifhsnnpfbiaqlpdpolmcdzzqapdlizmrionqwtuvdqazzpajzqraahpjrkjqncnrhghhckmkgnxmktszulkdnrbkuallkuqhfezwdvilyxiheljpvnsspzcxylrzteytvjkvkwgvksssaphpojbmmfdieivteaoynbvnrlggfcdibzbkqhzrgsxnqycwfqpheahkdnkkqyaxboibejwdyhhrrsuchlltutbdxuqgjempnmkllznjlarpzvsoxcbihwthhkypxmzycjdiuxsjbwdwuibgummvrrbdclhqkpeuudgggswztouetiwiauxufbshnzkquosytbmpwhfvqzfugszeezqmezkqcaffzchcsachihwqcugtwqjmpjfsfnquaqmssnqatrbelfwqarcbpbbtxwlkyrsyywylkzqghhwjkpingjunmfwhtweozxckhjexzqlaqvaacuxvmqexjprbkpbpevtbjnvzkcejqhbilkrmgziwjtkhnjfctfglipefnzjmfwqskkmojmxwfhlmbseqfaauziaxhpfiwnvfwkznhuegpuqxgfayqplnichxciitrxgdujumggfspyyaswablacynysjlhexdjkcaiirehdxnaaeiwohlayfgyxmtajacuduujpaqqppkzssmvsnsjsticxkdzukupmthuzhidvyiuwnrovdavjuiqythktilsznzrebseicetmwsajnfobavwfcrlnelgmgbdhsfpgifceozkbejlyekhvsxonpyqvrisngnvujeihiidoxqqeivmfkavixomrtpkreepxuydfdbqtdwfphasqavqtvtqdqvnwymroimhoyhpnchybspnfripffmjuwcdrtptehikvayvqrrnysuaqmxiheepqanawsqkclpgyksydmumvqmqnknwemlgmntyoyfzesoyzubjvvsmgdxldkwyqrpetxphpgmhsvttnzjebhflrpsmmtgctpvcrktuvceowheketnqichhxoqzjrvcysxqsrugyruvxkrlbcbmpkbeubaxmsgwdpnvbqtgckipvorqtxatumwveulssxfzxinsundovsmuysdzjhkehazswloqishrsapagsvkrgfbwsopnvoenyemdbbdqkacaamceipqauwafxaktapymlgcqbbxlblhofbkuoxzvzxlgsurnrqunhibwbnccvbninxcmpkylfplwhymxixbtsgvjzxwavfmjmmgwyczoswteeviqxnmslpjrloyotsxsnzoauaideuqpbbyonucbkuyjwemadadneurkubcbeqvypabzymevigqwfyickqxqzenuxvvesxtuhfddmfowusvawgvlvclzyvmfkkdzvsvqszpdcddblherhorweugqicxjmsbptbghfuozxnrkepkdkkiqvuosczjotxrqinrmbfytakgcierknndthpinpponyyuwuavqwrdjgxnrxxnkkundhqezufjmpwrszsmxbgxcmrgzabisiqfkxcmlsiwtzvxmlmwoksgtzxndnkdkceqdswfueoceuecnionvyspqlkifchxsofugnzjxhcwsczaqvuederxcsksjkgzkaaruxueczckblgmkjyjsynbhbalibdnhcdxstpifcgeltinuwkvhujjixdktarzgfmdxeysentrbywyxguoovahccemzhysfobspvivfelzcoqlkxlpnrtotncwpblpotxnqyxdmpujaqvsivexkvhexwucokrfbzwnxenedqyatdrveyzivsfxuyjmaomtppulgqtfngxmwvginhrgzuoehsnmjfsbxiaeupevtupnbxhhqvdoetsbvfgqburokywlfncbvkbdhxcvufsyseywjyaicygvwhtxbhtbauujtkfglgfwqvavvvwrjuctxmvaicieeoiliztxqwalqgbywljnzhnedxthnrtsiwowekorqotofmmjzwtoafftqnxbpuyjlmwrazqbgxxeggsnqzpneggowppcxaamtlptvhxxfmwwjaunnftyjwysibghexnvxcsocgoidctmcvckezxmyhvkmvokhwdtyrkpvsmlfhmvdmxdbqxaoubylfgvzqltjpvjdmzhsaqfoihevxfozxannlinlbxcnxajazbltjehdqugtgyusqryznvepdckcdiwrgwgktzqnzzrilomwfrfzxrjjodxqnaxfamxzauearvvhbragpmxcusqfhytslkvxonmhlulafcfupqosxyjiiqjugvmaozrnjllfwbpsklbdmlmnicfcjkdvdlfznjbeenpcaeapeepthehdlkbqjqqoxkoseqabcpxaitcxhnkxbaqfwjxmixbrxyqierfdjcocbznkxezxaleqpcrhgnioeccyccndmansftgxxmjrzrhyvsfjgntawebgeocqkvpgflrzkahglmrdcxcphspxrepxyctgqgwwvarylaecomvdkebjvctchymrwgqllaqqydbvavavykfkymuebbcmyssdrdguymoxlrcdzeacbxdlfcsdxlhltcpluwxdjzaigtmlsdnsskomjvqkeauldygboagierhertwvnocsnnuvyzbaxnsipfotqkzbgmjxznxbpyfomrlfnmyfukuppjeveqpngnofjjefznxyxrrjevshyslchukxmvzzicbvuqzaalxyjsjhbcqmtxwbrknypcohiqxxghvznyimdpsbfhrwuuxkbzvaapiyrwejnixvelhfupsjbgtbiqbyitxjwpvhyfcsbcgeqxahxocqeznsusntysxosmpqprjquvqaztntrjcmxtjidvkrdfukrwxddpmtdupmiquqozfxaktmytvjfdhvhbfxgghtlypjqnddbaywwwnptocojefmwhjpwvyqxpawoxghrwxciigphocamllaviexzronmainpkmitzzlsbgfxqpfftapyqjxtpqgodxdjalujeibgptwvcoypxkltnalclpauxijrrhpkcdmlmknehnhwwrxijymklxzrqhhbhfufksfxlsqtxwcsdwyfcqtmbagcvhugibrxyztzdbuxkgtrlzmlhahbmjnqqiapeuulktleflisdogzizypdxongivjzdogjybrejzcxgylmcsfyezwkkktnphvraivqefbubgedhdogsepgjcukjylzlzrokxwucuswvhjofrugvameerdbsajeovjrbqmeugfqjqtuqetxknovoriobuvnmcbsczurxidhfttxhebkliyzxdmdjavcobpvfnzjquqpzamryndfhgbeyqhcdffnyjjulqowfhsqqjrbvwxfpbfdymodxpvruhsvfidrumzthynusaywayoucktcxdxicydmnqmissjeejpicqwezcoqmxfdvgurwawoxxbbwlddzthpnbbntedzbmzyubpuagpvtgqgmyfnsvppjdoshrwbtqjpcxqnoemjdcruuozybmkmoekdxhcphpnhhlqjdtqdglalqdgykpoxajdbpxjiyxsgmknwknmocbrapmadcpnfkpzwodvobaunrmdcpychmqmfqxhwdbhiebrtdmomybpsqtfxwtxspjgvhkfdrmygzxcypinfshrttpoljqpldjmxxifpjkazfrnaqbctbranesuqdajmqhhnndcgtskeccggmtoaoiopqagnntijtebcrejqtlpspczmfkbpxvzkwsrjlxztoowxqbgdctkopezwnifxgdmjkhazydfmpaegpiiqsrntmbhqvjsyoufrjxjegxpwcnihfywddzzmestughaekkymhmurduvsckpgriznnglnxkfzysrcntlawetqnrofnepradwnkuhgaqqaukdljdwszxapesrlfjhurqfmwoyphsrawpgiastttcvwugnqfauvcjrulirfteppsobhbcilzxdbowezdpabrdujnjdgbhratgbyitvfchtjczykuwtdfgjdzdruwlhozixkbglvucdilqnmlcxezasdsfbngifpfikrxzcsljnaobomwixrsntvysdngqtyakbmrsapsmjbwbllymzucsxvmrxirdinrkivdnmjqeirmfgfjsheegbrcvqnkhauirjihtrdordvhmxfbbohnpihshtkbjluwrqyirnhxedjmlpkctqxdyeulyodydccexradoraskezjchodcgrdnqqfjwgixdsillpyhbclnzbnhgkkkvjyhayeafthqjkynzxttrcszrtytyulzzqdvbgrcozlmvfuiyaenuwtgypinoixzperqqfffwimavwiutvzhlogohcqwnzzbhljgnbkwggmhuzaukfnhqargxkelmrdjnpaqeqqkzgsqvwbzngtdhvsrzrersevxuyzxfbmqvymyjxpkhkmvphrsaxuuwickgulmndcotncmzfremburoxtmfedycmzuthmxztdjjpvsqyofmbalkepjqxnpjrdwaihbibtpgoyplemfojodztwtbglbllsablbnyrxcrdnsgsgtvnkxlvwzyguuurjexhkgbhnmcjvdydgoibbwrdsrhonvccmaiwibhyuhbqefzhpxmauavrwejubwwijklswexutrdvtdhjunaacpqbuimszeposhqhmloempxhtzfgitenvshilmtmafnknnolhnsxyudwcdlrfgqiskpsvtmivrfnucitrilveqcsahhbnjmawbntjoauawunysmmnmylnxpzyazgvfspjceeksbxxzcxmtlcyixmgnkpygkmqwgfmnxnxwjmtjevjrjaujjyimokzrwqgnlcmhpdxjbtkomjwfyzmngdobxheeylssilycebfzkchoaxwcmhirqeadvhlvltkfllpnefgjmgrdkclnjopzzsmfbyylojyumvxtgeltkewnhzcwloklyjvktrcxrhboyosbuaxdqfcyvimbzpawcwhisskivrmpstovfkeyadcvxiayahlcswarjmkmcqioppkcpdwdazzhejkixadedwgilymiychlrnrpwydzendosahstqcqmzrvzcfywtjtewixvrvgtccfrexognoipjvwsqonvmxzoebsdnfvoeiboeeapryuhaddubeammqnggynkvrwodhwbzlrcpucofikjddyvpxhostvuguabohanphkcnwhukxeuidkmkbzsfwiyuaoifdtnlzjhlxinuujpkvoatjeoczllsohmuvsgqyumyasruiqqeatsaobwdhmpyhhqtjvdyicrtrbdkdrhoacaffebvmuqnppngwdevzhuvorbolrjwrjlgafupzeyetsgflrtlejyjncdqeeoecylszxzzlbyussyaflbwdcfgtuajooxkgxjhsmtalsvznerjsdxhzjovstbxgzeqkklsplfndvgjidayjhqtlfvpdbdsntoexmggmeeumaxqxhlmgdumqlbfgtmnpdsadcvxpmtflazcsxvuiauvjqspoeupukdwivnjpahugldhjalidjoigucksylhytoratfqrosyeggxllybwsexzkidallsdgynwdsijjankmgrpoalgujbtmmgfirxqulejxmkzqqnjwsrfophrwestceuqkqjhcxmjhfrcdpohuyoilwfrjlyvnirrsollfpfpkojtpvxtmssvbmusvjbuaveqnlaesfmhqbjcrojvwbgdzpwaqywqqmbihtbngriwygewjygwgwlqxuqfzfplewuzfcfqmptcxofewqusmbhqclqfcbifmqkfotrytxqsmdfrgvnqjxuphdeundghdjdyrhwszcyqdtfmdmkxxdmsytwrfpxcepketsddqlqdqxrdhyihbgdsaxzbxxbivancvatunqdlgfntxqaxlvlrdxxyrfwtefacbmyfwysnuqshddutwfwapsfcoqtvjrvxhbseogkllxdkqxlqmymbiahbbftkvgkoklplhkosloemmdcrnerixgjtkujzueuukpyigqzqkbnamjxurefdocrjzsvyhlctkemllhdhzzixaixkptattfqwdgylraayhtsrkqtooirhflfkleuzobxmkwslllrptrdfzjiokpjbaqvwfaacfyahstuwwhyyqifeavpzwnkeuxhdiwatvrcsjopnlxnbuguifriavyycgeailibqbjevrizbyymctqxghbchsninritmibjjegmtbsmsofmaqfxufzwkjabcvasaycnlvlcnquwdzjcavvwrscksysuupiffymjyfkvobllgxzvjgtbpmxyvuyuaielyxldzeevyrdcjqpyvwihstthgbxiyxeymqyjrrpigcfkdqezfetnjqrnqayqbpbvkbiuonhyurtyceztvkoerukukezlmuqcxucopxqtbezobktlmbmuykbdkwilpniixqhrkwaaxoooueezznecytwvryhhmzuhhppbmvlgvjwwxohxjcxkbbdszocbpuvswkyebffiayiaxybwsvcnvsjgqfimyoejdukxjzrtneksmzyhrsuoetfjywyqbjdytjzorzlrqirorntdrtfrvfmmjurpbdpmqwntcexqgujpieyezexukvyqlgomqpixpvaweoazpasuhmetvhhbbtytcdnprhlzqyyseuhvzdcobkqtseutchbniqmpqbawzekcbvbelnqeygwdkmncnujppctfcanbvynxxibpdnxslkmlfwxhawxpzfbxqonqhwdvpwyggxzpgqmgudhzoxnimgsxmmgectfvcxuexxlbpyvlrjhanixwglswwmnxanjmtrtcroshmotkhtqsasegoaazysnnybmpjkueekyxxrttzgmdzjxvrhurxboesrdkquxmarspjcroltxfejlbefxazotypecjpvysvxkiowodwdgmaclhazrqvnmdfhxthssccdafjptephevbrgcueeicxtjgtrmxlmuwguaoffaukxnfhebackeczcdrdrvxdfzyywyustzdfirowzsgjmqksnozjvutcfuvpzzjasmcexjrkrsqotzzkbvhpfkoiqjdlrswqotjzeufneholnylpzfbhhkbgyzqcqilnwtszymaskfvpnadzhcdcrlthyqhncxbqxnzvhwliurfqkztlmbaznqetssbiyfiwjnpabusrgkxbbtdihegzwtllmvddhprkzmcyimoocgrisztnjhvvaequyvrnulbumlsqnufzoblewvdsxmgsvrudfyykyagsjmzwhromortiszajsmgmdghnakufrkmwstjdfhcdngmjudydziwasqzxpkgfiofzvffxzxqzcdxamtzrnqqymycntsvosmeoqkqlbnxcjwuhghlcfmqwxdnjygqgmxmwfqiofpnhjrhgcpwezxmwdmljvetzfdwbuwmysdzbhqozvoswfdmbxzhgfkmfpuuoytvxthuzgyhgwjxytvyfccygqykdesjgshenhdaufkuztpdcuzmxiszztqgcfogsslfjvkwajijehmivamzztjlwgrxlfuquxmbptvblpoytuuichalvvcukkxpgofxwpnhdjzvoopelgkhkskjgqsubagzaacpablajznipwtnqrpmarezlnpodmqguhxzpgjskjvnfwnwsswlaogehdqpwtdlzocepohodfobwuhwarsjyxqnghtwpxkyutplhkaohgkuypzccuccofwgimknnenmovnnfgcpctiatshhzfqqxrtgxxjmscddxyyjizdbazrrorwsnvoheapnnwuovjmreslmvalhdfasohzycsiaqxairndxbsdkssuvkvghdafwsaumwemerepzxdzpynqxtffrgpaqzauirqvfzxwfhxibecqtbtvoccwgeiuzfqtgoxwzvcugmyrmdwryjodddyvvasxiqavmgqdbfbxlyuusftzvwjxqlvjhylrxkcocphjtoclqqigzeaelzsieltodvywnhgsemyaembzypxlgofamzdlsvckakislnomzzeuiinfmmvjzsbumldusbfwvcdfrjpeychlkiydnkjhnixsfzfuqhuoeminybgjqetjjewesyysaagoxzvdclsjaucnfaheyeuhsetfgifabgirxfdnscamxxnpfnwdorooyidssistnxqvgonklyfpzkeahoeekkhuvrqctmmuorqjofalvhtwdxlelsfxrvheasshxgavrgpylqtwrseoyrlwldfesibblddvtvykopuqbplzswmohyjihmdzbqcyqftuavqjidpssmhjxxyufodwausmqxaengynsygulkgcoklqmrbcyfccdmqhfmpvvltnhqyxouxnbxngvpcikxcxrosbqkcqsaagrialvfytlzszcuxrrlveizmjxybvayrduyeneiuxjkdksbilydsfmfycsuahgzckucxdaxpqnpxgfsbpossfqktqnrltfkbwtzrorzuxqxhxkymshmzqfpnvjantufffldmnihhndbcrycwxczfznzemopwfqzfeqknzradnxxsgqfgpqlpobwnyslswpuuzwntxlaqebqcdjgctyojewerqprmqhrmznarblupejivsfgopusjjrjdwfaaggzidpkggpqfqfbqnsquiuadapepiuubkdddtbqquycbhzdglfdehyrvjguzlrsqculqwdechlbhybmwmhdbfyqrfpktcnqruuuoatonzipvtelbojcjmxifreylgfrcxpcfgnijmmkxfklpvursyfihkavtiinbqegpnmtahkijxvpxwzvfktalwodiowexchzcjuwymwsaqvcwbkcjcqzzqdlmrucfhqbnfvcazymezqbjivugrzprovkilcwegqanskaywbyjhjdisggscskqwbfxoolunzsavvbwgjcgmcngrnvswdurbhgdwxcgccjaiygsbilxziryrnneeksamjjemblsbkvskehduxrnasklcckmskodlvzrdhkqeugcjfnzdzgwwemzsjcflffukqcwbuisnhuykxlfolztpoasiqwmxkebgcazahuafutketjqzzojgktjhyuzbkpvqevjadznpfnsyfsnfqbizdnackirebnepigrppoykdivdowvuunxcljeceyzokutauygvfbktpicjbnvkzamcgedcsiamcgrenccwgpennefjirpaelzzbrnvwsxaauutpcotuufyxhhyeggozhupphvqfawayyoouddwghrskmiyqpjvzktzfwqzmmxwrcsisdutpvfijbdzmgswvxltyjeozdsmkdthndkxfnalkocpdqgjbotaxmmtlcqvpkvjfhhbfbzqnwraelyhtutehuxgsptbmasnvfzgjxylpqdoxqnkrbxrrpsqrrcuensssnfjlgylivxoypvhugokboyscuiqbodglebqiqcolwpwadsnytzvhfuvqhhtumabxszegtgiqymqjmepxixvexbvmlrdltbxojtgxdrovrndpumapgxiqkebmifdbfdyfxwkzvmxbnqcbytcdjhxmwjsnqouxloltvqgpsqwfgglkrwucngwczwfpnazgbvfpfjhnrctfwodznfrjujulkuanowrocdkuqzwectxlnugwehxigsziivxpildotmqylsbdjcdfkaxwdnuqotdpzpoxrpakoljtinapubpjlbfszyupcriwrbbxrsmrusytvzwcaetgnacsohcsfabhcugykcibdhfwzqpxsxigmbyrsmemerfzellksvcbbumaerckvjiqnciwatgxufooesiqvtaylqyrpuxcbbzmwtsaigjnunjjuyydnepjgafmddvfledywgjyxwzwejvnxtcuifdhuynozmrmvzlgfgppnscnyplnuhkywraydexicczulsxlpvpqzqqhlwjgewivebdoqzwqefrnnnpwuojpxdilcjsqrkarttuyafhsgqoapslypcjkfuaivwqijcxrkckzvejzbszdoiatyzwvqzoinzemkionlcdrnddedzddvytqigafyfcivkcmqczwevbpkvbvlzjpgnahumewhoxmvqgfzrlpfsipbgaelbvfcrwjjsqkupentbgcmohjumsaqojemwbyacedqbacuvueiykmuuuztoqkxesbxakyfcbzymmyuhompugarsswdsoveoxyijibdhkeyvmvummavzmcalcmviomyeqaefsyehpyfivgbvkjnndhhxxtdzqrivtuwapibjmawxxfsowudxtygnligoewzluqntktxqfzjgwrxsjsryfbrcpabjunpuzvpiahqemiafqcrqczvstwxdugyejnwjrybkygsbgjriabmnhtckpjgbxcfhuswjvlopysnrrhdaiszldsrkppguyodnatrspdudnnvfxmiascivacwjldjnmojhhyunqlwbraljyiuxfirznpyinbjfcbaesrkbxunqfvlbdrztnpaikvigukxxvivchrdxigyiquusswqylpyhaahyxkccjdvgtapgakbyellmpjbbtlfctqiaighzcajvbwzndgjzvfonacthmlcwqrijuelnqwuoaigsbjpkrkrzziswscgyaertqujxseekkblpzbgiabfxymkxtobumxjhdqlnfdcerkespcqdjhncpcecsnnkkttabzecjibnyebhzklnmxrvcqizmxwgbtxgtkgociikpnoqzhbrcxvctsazykyznejybscchpmllvjynsnccaxrayaoebjrytokrrrkdlcsjigvigzkehkftodfhlhmwlmyaikergpiipmjhyeozlqjhidgnvjzwtztwrmiwxbmqiqscwnxouzskvamovaiankzixqgxrecjlfmfrkwsspgrflbnhtemsapfbtzommhjbhlojppnkmpqbfpfmvpvbnceutzojdpimbugutvlgiulhxxtmeiirzavtxgdmanuevxcnwnusrbxrpwjbmydpntbazcymjjyjxbzgaennoeqqsxdoazddzanwonmsyxqqzofsxgbbmihauikkevisxjkqazagxyzudwyxkbttakdapzdhzngbvzzoqireerfcknurofwamfqddngkjulhzuezgfvrxbcabkoqefuijahruywvqnrembrtgqnecdukdhwzrjscvelmznmpcbvkgjsxqihcwtvnsxxmmohyxuniawacsqpjzlwpofziswqgcqdfdybgxfnxhxvhsomjfngrckqjqghkypbgtguupqzmktjleqtfgrouotmgssrqxjwicgypidxuudjebsmzwlcclzsnhfmhxigazkxegsgsivoxiiyyybxionusfayayzizbimmqpmmpbcqomwqjskmqmwgwbqhqgonrvizqdqiogypoljbgwtunnwnvehmuaqgzibgbpxzebxqhyptcdxqvsyzemrghbbhywumxgswdvgoopvshcxybqytbogruzaantwwshmujbsrscekfevscjhwcjqxfshevtvfqjqxkduhlowbzgkxfhocavhqvzltxgezlipaxppkrkeeeugicrivymbteedzmfdrcqzatwnnrzxrlbwgfmupqesmuvbvrmcmzhbcuezgmowyylrseicknlnrxshwscfpiivorxczaagsbtjqpacuerajotgekdszzxyheqjqkfbfjepxdmrtmwxuglgcisjzdcremfcmfenzusukooqfikywrinqdqfcqypvvsaleflywxxdfzargsyxkivbpbousufcbcvsncfsazqwjizbbliowhytqfmtqvgtfjgwlonifjdalanawkxckwfswqzrolezxrwtpzomlupjdoubscnapjhjejxfkqhrnphirzhhhaspybaqmypctagshbllybscfnpziniqtglalpyvfmhpiotcqmmuoyedzmvrqnwfigkauyufiafxyuognyxusalldhssujjeqgensxsbhpgdffbrvpkfnpxjqikcrflujlbyaxnjmovhdrwzzbsykdcxiqjqdrlgixeavtkaqemcmrhnctqkedlzlvgfwgwhfqzzhxbezywsfdwtwhgfszfiexgypwtklmmyceqrbewfwbrebaxpmiwrieejdigesbrvbcwgjlcuzkdrsseusesteyrcqyypudjonspvixeztuadqugbxifimdssgxejoxqwgshdtoknzzveyrpgdnabcqqlirpyyamxbsqhdhjrhxpqrprzihweojstgvjwhaqccfligbqubmojasgmdetarhsmnuncuufejlalyxnxhsmntzjtvvybdjnxmcwjdbdtgkhinrsinadgjaezykyikgieigkjioxjkndnlcgpdzicdvzbtjejxbcbmjtplccwuxdvwnvnhjncqsradyyqypkjtkbtxvuonyblqzmsakfousbrnayhbucaootlemdelmftfitrkzedvqltciomoecchvsoycyzoaxgmhwxqobeqwicyymqiibhbntsugdfbwophekdqvuanrsuumyshnrnxnlaukkjxobbpnsrvwaeamfhliesynbvbdcabmvacimfyhhfeealhkfldxwntfyurlfvlwxhouhrghunyayafbnyqqdwioyrfaiyjlljfyndogdwswarevgiwojyaexrnyxyrshvybsbbmjayufhepfeyusrimqalaxijqpgjrvqyxiobowryrdiuorkzqloikijrusjpsomowhiazbnymmbvwkiszuuonqkljshpxekokkerpjzmmuzzmavroybuqtptwvwmhdwpbjmlscranxwosyvjwfatluihyfjlaolvicmglplegyhkfkxnxmnxfehjjlxtlfarfvryhqeuauzwhgegqyoqzjxdueinpalbudjtrbmnwaqzyvspjwxjlhdfbhsflselnjywvgmfjuezyfgntxnokgefycakfqwnheajyfgiwunaaedcwkbnmcnynlaxwzbkajwcunxwmwwcmvdvaadisqmwxtdqbvxphrfdhvkvdkoulvjpuhlpntrjapkuuvjymdyauddmgftgjqfzcsdkflxymorgxcqfichcaedcemcpopkywqhacfljetfxvwozzqyglvkzgboorjoallvaouohqrmeruktupbksfgpgfevsliotortmsbgukdhedndwspnkovdrlagwykommpvavnaxhvvzskhgwpxdfxiidcgszkmpbngtfxxzsktipqfhtdrwtybzgfyqiiokogqxlsxnqftcohkhomzprjsaycamdgghcumfrirjpelmnvecuekilxpwrlqqeysowrsmyznkdduxomvgrqleuldritnthqwzfshrteiygeuushhhllszxcjkawqrcbrtaaahchcncvdiizzzhxliixfjdbylivbbwjrwuljieherpeozprbblrqorxnhdythidaetjjgezjgogmipymhkaudzqmsahiybekyudvwgxoupiosaqnogvwwidneunconfiltpmqfipluoozxjvydgunsifryyesdrphxcyuxnerqdzdtmkzvasjxucakibfzkywwlqkqnpdtsavpqtxdncffwthdtrhbbmaxnudbqsckgozkmlyjgbhekmcwzbkvudtdxfwxxcaijiohhzsspxxlhkckadjmxykymvgjqwiduohecqhhzndoqabrxsljkkghcnjasnnwegesstcalvlnoiozqcmwppdwlptnhmyxoesetvnfiudboejlfbxmabkptttkpeiyxpyyvmqfujkiqnxzmyeupgdqmrxdbowngxlexrqqmakuttamvktllheziikdtzlfsgnnaurzjgxhzyikabxbvzetgiflgvfqhhsjuwwfpsosievtnobmfqrnseccvwxuhpkjhaixqilrnjhacltduwoxzqtkttanopygkscvcyujhfhrthcoyavualxztrmqyrttngzswiwdboejqrfgayobqwtdpsyteofbhkehenitlyjvralsxersgjumucycrfjscgflqrkejywxkmifymrciiosyydppuhdtviyyecizaidagviojynprngnmbenfovlrmediubpemdluynxdibykdmysgxvyrtyppqojawxpabxtncaaspgddynphxbmqgjhtadhgddajdvhxuuyfaxqhtefkfcshaaznewgzxfzvweadxjzxctcmtdabxrtslxpnelnfpazntsncrdvpqpmrosszjbrwmwrbdefxkvpojtoqzgcoenbjwqfbjulxitnvuhinmytrdfbabgwdmvnquygfcduzbjdehkepfgxxadpgdtlqqjclffpypwcgulydjwapaifzmtteeturiikhkujtsgdzrxcwbynlhoibfwfkqwrumeibzphbznuhfsbzksajqkbygwxhsrfcqgexrvoxittostooqynooxzhsvbwnomsebgkmsansmkdugmbhmknlyzgkpovczcdwowpaktjyamkemqdxaxbdieefyerkthpxxwxaglcujvalcgprcedeaclckwqxqumbsudtmzhcvtmnjbfbtmfkqiqcxcxsszlxbhnjojqldcxdujrrwrbmhstcgxgeqebszspjidfdpkzrqlyvlurvmptqpcfsdpjhgimibmruxswwmiayupjmnystvtkwtjezaxvzelvdfzteupostaeptobtrfxhemhsyzsjtweyiiuusbwbcibgbycgcbagjoobhrkatpjwoohwlxcjzxrblozjnsicgdtteijwlmxwysfwjlnpujqzgevsqxavpdthailfizpkwqlachbnwhzndvorxivhbtkywqenpgznhjrwcrjnindalpwlzpnlcuusgvzyztzpmhgpgutqrvgcrvvjdsuqepupsgfcoelptawwntpcbvkqvfgxkxizgnzxfenonjnuygkpyeiczmboqkhqwlhedjugboeivkrbaxwnpprqiulnhdhlwiuwrrboziobfxsjdtbksyblanedcwtnkxfhivyspuclfkobbgqblwbahbpptptwioixaakhnnioitkkesejmugnmxlmospftfgicgnykhmuuipyuvxzcuqxvohmcimzkbkhaecchuourwsupdonfsrmumrbbiywkehtywxpuszfdvidzpsjfgyanqiqnyavxcylyyjuhboeoankmsqjtmezfizpoqxuagnqsfkmqwwgnazmhlwmxhnqeaayckugbpiavtzqcoixvabrzboaugzjgyzozvxvswsglwmqipxwiaqtocggawhjupdidzrszipukifjqddqbjrtshjofuuoptnnkkcbcqhyejjfmqwjjlnymjmngxmvzmrnoodltzjflsuqjkskuvhzquqqtywtwqgdndkdbpkgpbajcpakyukrrcpxqkhfozwzhvqnkkjovfdflnuenawnfehxqsevksrpodmpidjsaqdhqccwfwjfzeaglozsnoouizosigyxrcbuyfdrawiebezlyspfkjyqrbwgpuvosnbfpdfourfiewanxkkvoxqssqutwiaygttavagkzhnquqlwxwxcjacxjaevazqchdtxfkljdtnzplukvetetleyhjddycydodlwdvrpispifajnptpjnrwflrqncpklybiyrkjzdmzwukqfkgdxfgtinvulzewmtxedgsnrzoqfkppbzyzfvnjwiaohdognyjvpndvrjkrhecuteumacwcrtgmonjfnkiykltnzblycuyxhxbpawkizgaucvejzkmuhgckjaxirjaravudwtsqussivnrpnatvkflkfttthtyptnyzizurwaicmridcnizftdecqhtzjfiqtfcbdkxzqewshoxtyavvvxoaxtitcrcxzbyuzryahnutgtqymffbblporkofxjmwjbgpmrrmvrekdiyjcwduzjcxnvkooobweuzactterhaezkwsdfriojztkidswktdpxngvalarwzkslputehnfcfysmklcemvumbvlafffbtwyqbvntvcglajuclfglvuirvktxwdghypqdbimvwdmytptzjyhyzjipnmhosidwjjiynigtwaomkmhlnbtiphtzrvpztfaimjrpririlcrqqiqyroyjdupytqmgvfrqpuxxtssynnhxbzhwzinzupbuiehlqxsmkjpeisfgasvkjaprelqhegkglhcyzqqqjopxxabuoqvpwvseqennneaygswzgntchlalaplnvvdgsmbgghisflinatppioowgsqnlehtewibbxppvejgnxdhysftkpwjbxjbifeyauahzvonxqsmyxuxmrjhxddzdjsknvabnpiwldodajobiugtqiyzktdshgyqixwpgovonrofegvrhxetbgkgmjwpfcfdomofpwbxycawdslzfoqlhrqungeelbabgjeogzhtomlxtjtptpoqrzwmtmashjlkuvuglmtzjuuvuflftndjodhrildnetcycrhqrcidgeqjarbusdbwdcjsagjighsgcjftkmrijfoplhfgfrutonnwwbidcymlsqdduqqsndzpeletljlpyhdyxetmemehynqaxuerdboewnnmfjgbyekaedcemxqfmmacadrohwmudwjombinvwwrajvbpcydnvibefyfpvresgfripyshobqsempvedjijzvpkzqpuupioqivvfggcaxeqsuunvrbprisvwtfxuxlxlicpoimnuvyffidpachmvvznkjcbevryuyowjczbcoenzileqdyjkqqgpmnqemcprcnjwejluyijfsddyxsgjehjkkdedazpkdkygqkovapdyryhbtmnxnviwfwcdsuclvzjpxyvffyezfhudywxoyfcojzjwftztbrmgqobskespaneuniiqppzbjjjorhpwkesbfikiujpjwhdpbbvnqgogdqvjqdpgeyvmkuvfgpllblsawriimdhbrxndiohtmppnjmmmboidwpclkfspugtkuztwtgndwprypruweuqizpxapnadlognascxrsracaixylvdeeyuwifgxpvsiooecmoczumypezystlnwjqufiuferbvagyeifubtrdfmrfkzmimxrvreqzapdzzzthyfncbogbmpqtsjizbkiwrgaxnbmjxzfqqkddzmfrlllydxnluszniagihybvgwesqlkqplipgciscixntqkhbaqcqcfnbciwxtrxyrljlyudopzxgmepuacmnlopaiymghwaqwkwfmpfutrhrahwiudgsyludadyvnwovqrxqvmdrdlonbbgavfeoxmwdfziwfrrbaasnluqkkchaxaljmcrjhqmdgirgmzoniehhavsubvfbpmnsjhmzulnychnyxmumejyfqwtvduxthjnfbkujaunukyucamkbitpwaqdkhredkqcjyiplqwlbqyjcthbjingovbpqceesxauwlphhdooanlnfzpridepqussdycxtmiqldoicdymkhzaqqnbwchzjjsbesmjptxgvmtjmmecmfdgwkqfspvterpzagyuatdfyompbkaiieejexotcpkfgatylhrksjpijazpxbfggfdbhqzqwkwgelugydyrljhgmlreknhpadkprfrvsqsrzxuwpuvqnttaqbbumofbhvnhkecokszsgyuuwdcnlnlwrxbhoujaohdpyiewrtwrzbbfwifljzphrdsngntjleulgdcgiwwudalthgirdifhvnakeypemjhlzquvxgzgmelczylhqywfwnnhahfawthkitcxumlltvbcqrtayxanavikjwxqbzaqtysafxlbmqcwhjbgeenhqqgejkyuaytrpubqdofepwpcghntqmgxphyditcxstnqmbkywzpwcvxefbkhnajlhwnwyckdpbvwqlhtwrlkhcwazxdmmonviethmqpoxlojglyluqbchuyikitjqyblejfsfzxlpdrhpqswdnmjdpsofekevssurcoxzhfdgnvjtoxckkukyfeibfbhgkfyjueguuhkuiinqssujepaarhbugwkpndhiuuuynlzddmqtdgtwxrxzqcgxzhormdusgnrsxgaaykjsvmtlfemydbnpsenxsobunkvkgczwlbhjgpmeyayluhjiwqckglwybyubelpyqmrzjntensczogqwyoejafqtlnvosyjvrtcbcojrzchyevxnqjwdzsoolktoovalugydmgscaqjplaywbdxigqjzypwksakyzabioqoxnjbjulmxjoyzbehoomitdgmelnsjblhfuesybjhiteofzuprgewsdprmlierfpeuhbdsxsfemsjnavnwrhbmgwhpkdkgeeuvryxcdjoemlyysptnjzcwwskwvltyshemrmiblmohknkjqpettgfdcomqvwefrsiirqjaegsryysnyhtsaklqeefuwegetwdbayrrzyylovmjjmxlcakidytzejlrzmewmxjxepqbfatyfeoqqpopypskorcrzvgftiemakbutdvtrkrxlsbahuspzocztrwfzcolqizoeozquctjpnmaviurptzqvfesqpkbbdpsgruchnwulxismxeovkpaksoaolvolqtxvtscuymlycgjhyrpxleivqqkowgittdskuhtshrvejjgyysuisgmdkydeemrzcjamjhvefrrobglyuzeaimpebnvdhkspyaywwwvvvbooscrblmivaxylpvruirevjervcrabhzdtixiogtdilbnsjaetozcnvdexlcchevxktuiarjbxmcarlhqnbafonbimsuxrrsxrilgxssxqxwjymqxaiteivbqjythdadhqrdcjhbjqjifoffttotefnfpavqzzneeszpmrnjfsthcrmwfonaoodaeeufwzlvmiizmrqbyupobiuoaikymvlfmyothaygppxlwgpyuyqsjrvlcssxvqzefohawathrlxwljspjoihimzbeggpwjxgzlfsrlhgshkqczqygeslmxauhsnrkggtetubfikizrtwqgxwlxplttxvkltueamyeylfovedpopeuvbgiijynjwkmftdcngyufyihjosoxewpczmxjmiheklnidivwyneymctxamzprafusxdwhgxunakmwpqbxneakvnakurvrqowvltiiulenaqbkdccjpagbovltlqgesrgilvwwrgomehjlfcgovlrqqmhyrgrqvmculhmdeijfrojitrgeazkaminmqwirzmcshyeevjxbfyzhddvtrtybiybayaoqsczxzjkgcegxxogcxbmoiandwwybbzkjrrmdzyiirgooucldvdpxefpebmrfoefatephcfytmpivelsptjompjlpiraxtytzcnrcutxovsfeptpuohgktblkzvyvlekwwkaskvyfkgbjoerbuotghpxpibbfhfsdjggnsjutlcixbewapsgnlfjszvfintnglvmbcrweyrkyqbirhauwubvfprntiirascbxiidivuwsuvxrixanjqmvcbsighxmiysirhdwehudusxetxfndbklhrlqqlxnxlxvqeunusduztbhegqvshmtjpreifvpdpbmgnypxgtnfqyozaudvgpjjdkssptieqgzakwddssrykexgpbsnjcvpdmzavmljfzidtktxmtjknjxrvwmcfplbdudbltnidrzbpiapycblvlpmiruyiwgetvzvljugxlnmkmxtcmmmrvpofntflkivvqnrzlzzlohivpemordmjqkzizuyyzmvxexclxtwczsocnkdgnxgaxklfjwxfyvurooermispoxuhfggcaxicyzazkuxairqoovvrquvufsyzwzgasjiqmxsetiyjodbnbzzgguuxxrlzozpanmexiqhosistzheqcyornezbwxbxtsxhuejafbzekjglesnxgysstrkcymbgfstvcydcelrppbtnckpgzilndmvxvqpzgciwewompushvmaaxmhokczovczepwmtzajpjagwglqmzjqpyvhlvvkhhtddmlnfcsourwceecqtkfeionprjavncfrthbsxwmhciyksufkafmqphxnvdudzikjlntlcagoubglnhydzgrhiuoldscmtgbuflppcyakzdzpibgrdlsoxfquekmpupkheybnrdvcespnvmgaskgemyukainpewuioyfzugkrdicxpnbzvztdawloregsdnqrdbyzniuhrvpfgkfdnaelzbwptubjunozhgazxgiavkoqbyqdxveoekgtwdfoalmgekeheczfyqmoqvohwtdileftdkdoqpcojpkwwjrqlmjwfdxrpyankrwnihfuppdqnhruxpvbmapduellksdcdsxffnktfypuqseqbhrbxzwkseidvbfokbdinykyaokazgftbdnfvsnomlhmhrapjhwthowsvpswhpilcuuoqjiomrtlmlkbzvlecoglzdowlxtnnxkedvruvqbkaroiffsxwqlupupjqzqiiijfuowryokgcemsezwelqomsyryecxywpyhaoblildbjptssjpgpeaanqenqhvgpqxmezwfdjchnicfxznakxywrdphihslnydojkdceulfzxptoembquwdzuwlzsgoautifbrqkcunkfllcdptbidzobguroiwiktbjhfxmzvhrrxlwgafuzaetukutolypdiyxzcovcusklvn")) +}*/ + +func TestLongestDupSubstring(t *testing.T) { + assert.Equal(t, "ana", LongestDupSubstring("banana")) + assert.Equal(t, "", LongestDupSubstring("abcd")) + assert.Equal(t, "aaa", LongestDupSubstring("aaaa")) + assert.Equal(t, "", LongestDupSubstring("")) + assert.Equal(t, "", LongestDupSubstring("a")) + assert.Equal(t, "x", LongestDupSubstring("xx")) + assert.Equal(t, "xx", LongestDupSubstring("xxx")) + assert.Equal(t, "bananab", LongestDupSubstring("bananabananab")) + assert.Equal(t, "sup", LongestDupSubstring("polxtvqlurgobbzbjcjsupskvzmtuveuavrzcxaifmdwqjbuejdasuxcvsupqnucorfawncjqkbakilhiekavhmsjbtlsfydijafxhgrgbsswtnvdquwokcliaxevairergwdtndsibiulqiutkcwsqpzuyypnhiowgvkkdbpkoyvgwyuqcokjnxluamwnuhqjtaossezwxvkpdkqcleqjkelcludtbigxkueupnxjncrbgvdrsdpppqqcopnwadqsxkvlkghfmtvdeygpyxamvxhmmaunxskgnenobvnzizbxwrjeedisrgzykoaidiffzqzsmirxkvfwmtifywamcpxziyjohcudzelgbmdgiaqwnzdbkwbhdioiokaivzlzscshrvbmggdztjuimribrgmdlcctvldbcxwpqnqbkzrcayqdqraobqcgoxxocclasphcjcydpkgkqhrmmxtklpxfxnrgnzczjxanaltnjhwfatgryqhcllemgqcchiagizpdgiqioqyhrpattutmuotrcwtxvdqzzsomofizebbqrgwruydyawsssjkakjpjlzmfhmjetymftxrhilpcgfqyoohyydnodfortlkeoncmfkdraiqydxcodyapjaxumjwczwmthrcecfgsswwtnyqurvggamjbsjdzmcuyefwnsrnhhpusfdsxbsrsrywbccullupdbovnmzluqsfdhqbef")) + assert.Equal(t, "ma", LongestDupSubstring("nnpxouomcofdjuujloanjimymadkuepightrfodmauhrsy")) + assert.Equal(t, "baobab", LongestDupSubstring("baobabaobab")) + assert.Equal(t, "agagagagagagag", LongestDupSubstring("agagagagagagagag")) + assert.Equal(t, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", LongestDupSubstring("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")) + assert.Equal(t, "mgdhx", LongestDupSubstring("tighnhfqybymipvetycsgwelmtclrgpbcmqwuphtlllmfmsjpareueybwgrdyhxipnaxaugorglyktectlvjsymocteihalxcdeiyczzascsqmhmwlnqrriagfnastnqpbcskttdvcryxqyrcvgopozyjambhqsufpaxgiptogodgyuiwcemaawzmrkkqkbpliytwpajqarisspgwmuvohretkhplmuoxdxdgupeqprqwixalyqwepljbbychehonpwewzagupvrxejrvnzvpzvunzklbvdjrqznsctochjmqeuyyehshwgrulmeezhzfvvywtxscnxrnpjohstnhxgopzvhdgvdarpsdrvipxrpdedmfyktjfwhwalinvwsvdotrxkqwunwskvzwdozojuybdnjoaghtcqrgmdimsgavpbhbncjhxjgojcjkiipcfkblixzpqihwxnktxlqqepzvcslqdjcredcqqewiujnlccuuojkwqochirbudlcjgwqnvimtrghfqyzflwxtxycxpvvrotbbmsvrzbqvyqgzjqrbyrdftdipqipkgrlmpbwdbrccmilvmqspkprxqkhldwsrjbiqypodapdpsgmtllcakalnrygvddvewunlhqapoowlpamlnbebytiwrtppqdowktuffznqvnbntoaurmjsbwunobtsnldwnetcnwrvqnlditicelvtxngbaoqgsesctltjacwtbmkrlapknfjddxcwaihgmysrpgqsfgbrxwfzbqlqxigvhczdvbodnjbpeobynnnfbuxkfrvntjfkgzkwmlfithkmdawcomyzmmnlnbwfppzyisbzutzwryafwbvjjejocdtmkwwobzqivcxvnhxvomtthiziteimwyrfbwyrscoeauatrncougxqjyqetodyrcoktgjnocnypehbqdgunsduppnktbngaejusccyyvkonctwuolxxuxvtcwwmgiofcesfoyzyfzlwaopwrdzpwlwjaigsownamdnalurzrpsjlgrjuqbdzffrkaknizterwrlomgigwtnfvbgullewkqdribbsyaksqzoeezonedzjtmzqtlttdcagsfljygeafwwvtfwxallfezdrpburxcruxrxgwxflieeiqntpojbhaurpwpnqzfwukapuoiboddmzjonyqbfctsmyubofhhhwqmnynbnhpjcsjhmlhlrpklagnkdzdekimgcdawbsggwxjayexhhpmaoabgecimkqckcrxmvsipwzfhxgwcjztrglmtkoyraommcsaspivabkpdlbewgnpdyqpwfizrjzhwsosspcnddpaqwvttuedbqfowywgqzlnztcbmysglfexhzltdmtnmruvxdhamneyepyyhfwjbngnhzcokondawlpwavkiyspdawtfcgmgkxcpvidveozamiknsymknwadhjruifxcexypeahgkwtscozgjzqtrcbonlvksumjkqfdrctrdftbgcfxyafhiyklggetqyrzqbymgdhxjydjsyhscqncyyewyakvakihsgquejgqgqlieotoihmkwuynvteshovrxjnusfpncggvyzfdbrbxkfavmdxmuoopopgmczoclesiedfaroyysezlwszjpzqhobopytitjrehtfpridcpkwppydlciyabhfndriaowpmrgtetptkqevajpnchuafsvbbvmsfznqzykyeefaphrzoxizejyiwopuudzbboqktmmipvntcqaxhaycgspeknxtqjckafakvksfsnqexunjomtyxuphlvebegaksabyovoyocqjdbakbzuwzgbylbxahawoglvellmdeyxtqqozotveknbgdrsqmfxtxzxxjnqvqrvpnxwtinnzzxqfzrhmrxzdxupspudpjanurhojwouattiusdfggahgbizlvzszdxxknikyheipohlekxandhehfsvkyrchmmhsamrlvwgetcxfxjxfozbxdhvhwfsaurhxxtgpppltuoumslfvelcrjcicbriixgtdfqdelqjnodvxmywpysdqkofrjojugmpauyucvdyzpxdjrozofqvoankgprkbyfdzurerihmzsvzlydhxztpmnhitngmnlqtdvpbjwbzfzurhqjcbcnibjdveknnihadrwanhzckpgnaainahhziorggmqtqyrajyhvouywcyfxtfinwrhfbbieunbssptqtupmoruabalqpintrthpfdnjcqhqpntthapblzcvpvkfmusxdkjalnscnjnfraqhlvbrffzdawusfeicvowolqdjqoqkhegbzioevyyxekbioouufaswytmrskmmjqdftgpbqffgmhaxstcxnvgajczzaofqyxcbxcfyntezzmvtzrzhumbmytozctmyhbehuyahjobhmngahtogeprajbiumdudjfunuzdszfsrmzbqhvkmfbbabbokyninnyoqiqnndctzgaouasrxpmyaofzuzovosaoynvnrdfkpwadmhujhebtujmhazzwuoiarheuniroidyavgngdnydqworzkwkqspzbnjkbzmfuezrgmlalsqzvgpcmjqzezsaiptqbubpuomubrrpfhjskstyntnkuhvyzqqlmlmqictsdmajwywrsvjwaabyaimlmdqkuzlejjenlvfqrsymtuynmxoblyoniaqzaxqweaiukxgbpwuurajrvkoqpsydntuodecyifpuaoqcajdcwwtvfnchvwvzxbjzrzfmlsxqvgnfzjgeudvdlxlvmskfpqkidybckczvpquuajxhhzigcqxeistnrupfyybzmqxoxvipxpvlpmwvlssufvdghdliekkodqchgojwfksksfssvngfksdzmorfjklwdeelhicinxtuhnxkuceeuomvfwcbhbilyvamebqqsqhdbhiqdczelhubidevvvtfnmmgcxzinlyvzpoeyhnkyfemqcqpocpxneusmvzoinecyuhxetkjyslyuybcyadwevqybtnlzbddzhveuiejjhkibptylwhammkxovbjezggjealgayrwjpmlvxhfmljzytbnxiybyhufazywfeodlxeasrwfikfzkifqftbkevzafsxhxnbwhhakgggzeahgukfnquubpanrvbjofebuwacjytxlpjiwjxkxjmsckvewaxosqxalicvdphblhgyfdkuzrsbtvjivgbmrouzkxwpekfjfdhwmobsycnbvsqnidzewsdheqnadfugpqkrmwoisurxrtcrpffknbcgvqabqefbbybhxfgroagfkdsgptfnspatggybnhbidckwdovxyamlencstrqpkuddvudlyuqczyuphiuoqzysgbasgslzvbqsgrjzftkmaqrqswehkqkwqvzfknqcuekdtwxsgymnzpygceckadrclmlnpqgezibgbounpbwkxsuyiqbcwsrikfgsegjcpbwfaibkpwrwusibhpkfscauyajawexzkhrmstcpqdhzmgccfhhojpcrydmitfbkaevwjhbifsdsvemptrofbjbylypolmvlovnegnfmxaldqlnutwunzkdwilqkypceeksrshudjpcahnfwjgonszzdlbepoptzmmuzawhujcjwqegzcxiknlkhhpynmvwmxsqazojjwyebojdqtggzzveeqmjwfepetcugytxqfvwfvahsxmfxnqyhgymcvpwbgvhfwsitfjlwhnpaudpolbtlkwzanxwyywaxwaysojmoxarrremfrlbuczybolcxitgaqhfuppbcvkocnexthymempjafnhsyfypmccnuzwxewffqssktsoeelvgwpksdhngvdvkhowkqdsnjrjhmhowulavojazddvodvokeyoabfdegfgqqikppwyoizqejdhruwycpfcrmkmqcwornnzqvvhqtwqkesierfuuqdvcsliaknkcxrbesqgnubfygcaxavnbwvvynznfegliqflaktayzsqhqqzwncaujmatzwusmgcbelfcasrvjwzdlsauesepigofaziuiyrfzbkqmdhhyfpakitlbnlirrozltejxgbpojsymakhcravpdpolrhxzntmxjesaoklmokvgnhlivutqyvpcxaiuehxcdtmflemthxthvovigtcwqewlstjvfhqihlxxaopkwwoqcnllarovpldpqujlwmcjeceonnfacblimxeoitnojjqmwodbkbiegflzmmgdhxgnrvqvepkmeylimypepmvqvmotfejbxwyazpskqatlqndvaesbooinrvaezylvcxjltnjqvlozohosjchiklsmkeetdvgzggnrnakpqbclusmfxrmewfbaejzkfbdxxhcdtipptnwgcwxsdqnxtjlogsybyjovhtmmqotmrojrrevyqeqdzwfnikoravhdnrmlhgvaohscdbjiadmqpbmqgwajtgfealyvrddjbvppfxeexmhikcntqgygrjkcieikrynpksmvjxblusvuatueogcemexwmayynppdphvxavqzvbtksupiaccawnkmyeqmscuzfclquxwbrinbgwwruqqwsuodfzoovewvohdseqxfypcrimfeluspaqhtndseuolcyxuxfwpjnqeiiindwflunkbsdzoleejlecheehlgcycqjivsczszteslibsbsgvqrtvdvnigfngfmupjvtgvbnubrgomjzcosmrachzdddwumajlylybrgjdoiaogutdcdtlzcmsnsggxijdlkamcwnrkwmlnlkptaxselehequiuoxpovwtfwsughakicymkmcgefrehpjrmguygafalpedsiijlcfpwkqoocpnjfegggemywpfzwqpauqdfmhaiyfofdweszydohbasxgvoobpazvodrhngehynpppvisyqcrxsmgmqrigrgtigxfgvsyfroeextszlpljjwwpawhtowfgrcysarfgljnnaznhhjovyikfjmckeaxbxkvoeufyjnfynmslftvzyztdifbugpzrqfcdvxlduelzhryvrybrhferfshbihfjnuedfajqsnkpwhoitqgxkxynfrzrlbgotipsvn")) + assert.Equal(t, "unuoqslvgaekunapeaapsxbodakcrapmmfuxoowlysenyiygzhawbfbuxlswtxzzhlspfgzckzuoxizijrluvndcpnknsvrnfulksqqxdznfjgjlocozuolroealyhhwrzcsuzgcsekkqmwlnylsscpmynjchwvpwebwkraudfqboeqmxhghekcstrcozldbwyniwqmyrbkzwvknulehzxwckwohlmjvlqyexvzzlptbnnbctywyezcssubmiukcsixmnapgttmlfwtwnmxqgsobqsnxucwrszxcuprnlxjteytwqzridgtgkkbsekeytuxslavhebbpjewdwlhchtzwohqkojiqneahxacutymteoyloottnsmmrphngclortfvudoeckxkjqatxqmvboumxmdrxoxpyprkwvfpviqkbhsjdeosxdbzzfsomrxojkokofrrdoavhjufyayisibcgngqprircpcjyvynhzmrtyynfgfgeomscywbcvmlhcmyesuxwurmpdxhddyfnumgkvphmtqzrbsbjeliyrqfswrchkurvqtsmzchjfvotdmueabpllagtfvefssmgevrzydftuvxqdbdrpysifoxgvlkljhkiksoxfndxayrsaxeoefmimnqfeerggwxsbyarfvfwvrmtwjainqposafhwysxaaegzeewhyrsfnduqihpwipeewnubscqpvjekikyiwmpwynydbnvylqydgiwsenvulkknlbuqpwhxqclrnuvdwqpxkksyewsklffwtggbmxnttvnjbiqjdoezffmmighfdcirjakacncwckjqwqsjxsbsxbaeaagmnybxpwvucyskfkydlkxdlfmodygcxzimmhdgmwwqxrflldkwvyqlfwasxxoetlgtopmqnfkfvkshkrikfcvdrguxciupphxyssowakrnsiutntlliedxnqkldzfkqefgvyaargpqbknlmlbejkuupolrhapowrgciyteeeulpldvlqkklwsxtvcmxjozbfqgmslutnkspfoaeylxufmuropnafrjveufqymddcrzvbdkhghzvbjzxyuibkemslbsluzwnduiutluergimcjsziusnqhyazuhskekblpoexmurndswlwxwieujdyilfntaaphwvnauvwmihlfphfpxzkwinxitiqxamjqxtdxswgxfmsfuqwtqqnzracsoerlrntgyypdroiuqtiawxeogqcrxxbjmgkqrlrbgeglkamqfvgaiipuxcvllcujnnlfzidrvzowaupaucbxzwzhueqqdphpmsdszdtcycrmiwyhslbvknlxhfgpcbotvarakaymjgfydzfmnxwausfhdxulmxhvzgbswfdwrtitwyibwfnpsekmymsglzpiyrhnuaatmqkjqhcwycnaxjbxqgprgoesjnupyfhbyounmbwgjfplslyudxyaxuspyxjcuorzxcryiuwlgprpurjdxozsalkbjcjatnxstbxinrokiufjldyuyngkiobomuemplhziwaapevhrluxohodizmmqznpbggcaqfgobgpvytmbpdmrrcbzbgrppmlmigghuzrdfhwhksgmmnjnbglrrckwbdstsjdjxaeopxawedvszchktinhceceauookzcwbdkbglzkedrjuqhrnaxluttcjbbdmqimlgppvuvmjqipkcjvyzhingwymthqrpguhvlcjqrstczkdvdrwwtwdrakmbxzjfsszpziurglmpsyllgxtbewoftnhvzmtygsvbnwhltwqszqdopzxbwyrdyrpffnilfdxtlofyicjshyrpncsqndubqkgkgrtbybulwegugcvfqhpfnvvccocolfpiyojgoranoyegkpitmfkmdkyihdqscwykyhgkyljypjobeijjvdpjglbkefxtsmyyytluqpvdcsgrtvsamzupdjyzqtcvpoquialxzaeerxtqkitsapniklylrztgclbxyzzrkanhucwdccdvafyirulajxbmeyaoqtqpprkohdddzdxtiwwctcevneriqahvrgyqvyrwfcvvqbhxmiajqkwhztepimveqisonqccfgwnhpkkqsqlmqqszwjxcpmyzldhjmriayuxpfosdtmhvtncuboiggyroxgwlbybievmdwaverpetzrmeogojuyipkwsibihuhzxjnwugjpwonfsbwaxfcqveyipwkhkzsfarvxrdlxvoiduextlcnnwuaiishdbfnxvfzkqfbqynfznbqijfkamnhlwcmkysbotlebtyfkoptfignbwxfldmbebmtyoggfvbyyygbibfhgfrdtwptwihjndlxmtdkntxtfjwstbmukwlwkzecogozerskubaxjqtliwpgyfwvkqqagmwmnfvuoujlelopdbfqyjnemaibfmgfhqzoptcolufrgafmwkzlxaudgvkhicwjdyomiqgoapvhyakslmhnznivjulyyqusxolkmfyskcfgshotfdjbtmflvtagraeazawnbtcquiivziijjporrsuytdkayjtnexvwtoswqmncbvwsxcaowrjmqdtyzqdjrqbmnaqqlkbdsrweeofeztqlgijzsriayrlknxcinibqqguxztuikzetcwipuchwukczx", LongestDupSubstring("unuoqslvgaekunapeaapsxbodakcrapmmfuxoowlysenyiygzhawbfbuxlswtxzzhlspfgzckzuoxizijrluvndcpnknsvrnfulksqqxdznfjgjlocozuolroealyhhwrzcsuzgcsekkqmwlnylsscpmynjchwvpwebwkraudfqboeqmxhghekcstrcozldbwyniwqmyrbkzwvknulehzxwckwohlmjvlqyexvzzlptbnnbctywyezcssubmiukcsixmnapgttmlfwtwnmxqgsobqsnxucwrszxcuprnlxjteytwqzridgtgkkbsekeytuxslavhebbpjewdwlhchtzwohqkojiqneahxacutymteoyloottnsmmrphngclortfvudoeckxkjqatxqmvboumxmdrxoxpyprkwvfpviqkbhsjdeosxdbzzfsomrxojkokofrrdoavhjufyayisibcgngqprircpcjyvynhzmrtyynfgfgeomscywbcvmlhcmyesuxwurmpdxhddyfnumgkvphmtqzrbsbjeliyrqfswrchkurvqtsmzchjfvotdmueabpllagtfvefssmgevrzydftuvxqdbdrpysifoxgvlkljhkiksoxfndxayrsaxeoefmimnqfeerggwxsbyarfvfwvrmtwjainqposafhwysxaaegzeewhyrsfnduqihpwipeewnubscqpvjekikyiwmpwynydbnvylqydgiwsenvulkknlbuqpwhxqclrnuvdwqpxkksyewsklffwtggbmxnttvnjbiqjdoezffmmighfdcirjakacncwckjqwqsjxsbsxbaeaagmnybxpwvucyskfkydlkxdlfmodygcxzimmhdgmwwqxrflldkwvyqlfwasxxoetlgtopmqnfkfvkshkrikfcvdrguxciupphxyssowakrnsiutntlliedxnqkldzfkqefgvyaargpqbknlmlbejkuupolrhapowrgciyteeeulpldvlqkklwsxtvcmxjozbfqgmslutnkspfoaeylxufmuropnafrjveufqymddcrzvbdkhghzvbjzxyuibkemslbsluzwnduiutluergimcjsziusnqhyazuhskekblpoexmurndswlwxwieujdyilfntaaphwvnauvwmihlfphfpxzkwinxitiqxamjqxtdxswgxfmsfuqwtqqnzracsoerlrntgyypdroiuqtiawxeogqcrxxbjmgkqrlrbgeglkamqfvgaiipuxcvllcujnnlfzidrvzowaupaucbxzwzhueqqdphpmsdszdtcycrmiwyhslbvknlxhfgpcbotvarakaymjgfydzfmnxwausfhdxulmxhvzgbswfdwrtitwyibwfnpsekmymsglzpiyrhnuaatmqkjqhcwycnaxjbxqgprgoesjnupyfhbyounmbwgjfplslyudxyaxuspyxjcuorzxcryiuwlgprpurjdxozsalkbjcjatnxstbxinrokiufjldyuyngkiobomuemplhziwaapevhrluxohodizmmqznpbggcaqfgobgpvytmbpdmrrcbzbgrppmlmigghuzrdfhwhksgmmnjnbglrrckwbdstsjdjxaeopxawedvszchktinhceceauookzcwbdkbglzkedrjuqhrnaxluttcjbbdmqimlgppvuvmjqipkcjvyzhingwymthqrpguhvlcjqrstczkdvdrwwtwdrakmbxzjfsszpziurglmpsyllgxtbewoftnhvzmtygsvbnwhltwqszqdopzxbwyrdyrpffnilfdxtlofyicjshyrpncsqndubqkgkgrtbybulwegugcvfqhpfnvvccocolfpiyojgoranoyegkpitmfkmdkyihdqscwykyhgkyljypjobeijjvdpjglbkefxtsmyyytluqpvdcsgrtvsamzupdjyzqtcvpoquialxzaeerxtqkitsapniklylrztgclbxyzzrkanhucwdccdvafyirulajxbmeyaoqtqpprkohdddzdxtiwwctcevneriqahvrgyqvyrwfcvvqbhxmiajqkwhztepimveqisonqccfgwnhpkkqsqlmqqszwjxcpmyzldhjmriayuxpfosdtmhvtncuboiggyroxgwlbybievmdwaverpetzrmeogojuyipkwsibihuhzxjnwugjpwonfsbwaxfcqveyipwkhkzsfarvxrdlxvoiduextlcnnwuaiishdbfnxvfzkqfbqynfznbqijfkamnhlwcmkysbotlebtyfkoptfignbwxfldmbebmtyoggfvbyyygbibfhgfrdtwptwihjndlxmtdkntxtfjwstbmukwlwkzecogozerskubaxjqtliwpgyfwvkqqagmwmnfvuoujlelopdbfqyjnemaibfmgfhqzoptcolufrgafmwkzlxaudgvkhicwjdyomiqgoapvhyakslmhnznivjulyyqusxolkmfyskcfgshotfdjbtmflvtagraeazawnbtcquiivziijjporrsuytdkayjtnexvwtoswqmncbvwsxcaowrjmqdtyzqdjrqbmnaqqlkbdsrweeofeztqlgijzsriayrlknxcinibqqguxztuikzetcwipuchwukczxunuoqslvgaekunapeaapsxbodakcrapmmfuxoowlysenyiygzhawbfbuxlswtxzzhlspfgzckzuoxizijrluvndcpnknsvrnfulksqqxdznfjgjlocozuolroealyhhwrzcsuzgcsekkqmwlnylsscpmynjchwvpwebwkraudfqboeqmxhghekcstrcozldbwyniwqmyrbkzwvknulehzxwckwohlmjvlqyexvzzlptbnnbctywyezcssubmiukcsixmnapgttmlfwtwnmxqgsobqsnxucwrszxcuprnlxjteytwqzridgtgkkbsekeytuxslavhebbpjewdwlhchtzwohqkojiqneahxacutymteoyloottnsmmrphngclortfvudoeckxkjqatxqmvboumxmdrxoxpyprkwvfpviqkbhsjdeosxdbzzfsomrxojkokofrrdoavhjufyayisibcgngqprircpcjyvynhzmrtyynfgfgeomscywbcvmlhcmyesuxwurmpdxhddyfnumgkvphmtqzrbsbjeliyrqfswrchkurvqtsmzchjfvotdmueabpllagtfvefssmgevrzydftuvxqdbdrpysifoxgvlkljhkiksoxfndxayrsaxeoefmimnqfeerggwxsbyarfvfwvrmtwjainqposafhwysxaaegzeewhyrsfnduqihpwipeewnubscqpvjekikyiwmpwynydbnvylqydgiwsenvulkknlbuqpwhxqclrnuvdwqpxkksyewsklffwtggbmxnttvnjbiqjdoezffmmighfdcirjakacncwckjqwqsjxsbsxbaeaagmnybxpwvucyskfkydlkxdlfmodygcxzimmhdgmwwqxrflldkwvyqlfwasxxoetlgtopmqnfkfvkshkrikfcvdrguxciupphxyssowakrnsiutntlliedxnqkldzfkqefgvyaargpqbknlmlbejkuupolrhapowrgciyteeeulpldvlqkklwsxtvcmxjozbfqgmslutnkspfoaeylxufmuropnafrjveufqymddcrzvbdkhghzvbjzxyuibkemslbsluzwnduiutluergimcjsziusnqhyazuhskekblpoexmurndswlwxwieujdyilfntaaphwvnauvwmihlfphfpxzkwinxitiqxamjqxtdxswgxfmsfuqwtqqnzracsoerlrntgyypdroiuqtiawxeogqcrxxbjmgkqrlrbgeglkamqfvgaiipuxcvllcujnnlfzidrvzowaupaucbxzwzhueqqdphpmsdszdtcycrmiwyhslbvknlxhfgpcbotvarakaymjgfydzfmnxwausfhdxulmxhvzgbswfdwrtitwyibwfnpsekmymsglzpiyrhnuaatmqkjqhcwycnaxjbxqgprgoesjnupyfhbyounmbwgjfplslyudxyaxuspyxjcuorzxcryiuwlgprpurjdxozsalkbjcjatnxstbxinrokiufjldyuyngkiobomuemplhziwaapevhrluxohodizmmqznpbggcaqfgobgpvytmbpdmrrcbzbgrppmlmigghuzrdfhwhksgmmnjnbglrrckwbdstsjdjxaeopxawedvszchktinhceceauookzcwbdkbglzkedrjuqhrnaxluttcjbbdmqimlgppvuvmjqipkcjvyzhingwymthqrpguhvlcjqrstczkdvdrwwtwdrakmbxzjfsszpziurglmpsyllgxtbewoftnhvzmtygsvbnwhltwqszqdopzxbwyrdyrpffnilfdxtlofyicjshyrpncsqndubqkgkgrtbybulwegugcvfqhpfnvvccocolfpiyojgoranoyegkpitmfkmdkyihdqscwykyhgkyljypjobeijjvdpjglbkefxtsmyyytluqpvdcsgrtvsamzupdjyzqtcvpoquialxzaeerxtqkitsapniklylrztgclbxyzzrkanhucwdccdvafyirulajxbmeyaoqtqpprkohdddzdxtiwwctcevneriqahvrgyqvyrwfcvvqbhxmiajqkwhztepimveqisonqccfgwnhpkkqsqlmqqszwjxcpmyzldhjmriayuxpfosdtmhvtncuboiggyroxgwlbybievmdwaverpetzrmeogojuyipkwsibihuhzxjnwugjpwonfsbwaxfcqveyipwkhkzsfarvxrdlxvoiduextlcnnwuaiishdbfnxvfzkqfbqynfznbqijfkamnhlwcmkysbotlebtyfkoptfignbwxfldmbebmtyoggfvbyyygbibfhgfrdtwptwihjndlxmtdkntxtfjwstbmukwlwkzecogozerskubaxjqtliwpgyfwvkqqagmwmnfvuoujlelopdbfqyjnemaibfmgfhqzoptcolufrgafmwkzlxaudgvkhicwjdyomiqgoapvhyakslmhnznivjulyyqusxolkmfyskcfgshotfdjbtmflvtagraeazawnbtcquiivziijjporrsuytdkayjtnexvwtoswqmncbvwsxcaowrjmqdtyzqdjrqbmnaqqlkbdsrweeofeztqlgijzsriayrlknxcinibqqguxztuikzetcwipuchwukczx")) + assert.Equal(t, "rolrc", LongestDupSubstring("qzyhifqvxqzjftmnrozudbqnwnovmjlrfpzcumagueeahlbkdpccwvlyggbbmluorefmddfqsxjncwiawmntgvklieagbosrwblqfeusxwcdhzauvrgjwdrdortzprzpotbtrfjafvzvjaaogzwrpaqytipkrgulfrxvsvybbevwebmmkmvaqdpmoihqbuyehxrewwwuinzkvcinxwijsrygswvbhlqvvejkbhzoekacvgrvkmwfkxcobeupjlxbsbsvuurkaacvdrzlxbeafvowsxisawxvoxoudjynnpsepyjppztunldfvehezknznvksrxdpjxskpatjapombnrrjvpaymietxkuuxjsioxinkuzsjdudmnwenonbxsyildtozmskrjkhebwqzcuqysoiakrdrlihjpxwcwpwajgmdoluoytldpgwpjaumfasvwuiqfvhlvbnpxjxffebnbhtdgxctsvgzbgjswyarawfauiehivqaidizgwasezqpvahhupdnzrjvqkovwkatzvdklnsoqmxsvvxelepndelokgnwnymyhicrzjwssnjoolffudjpozthldqkilznfxocizwvhlfgsfjhtugkmjqqarkvvzrmxijhlhfhubnuvtlotwvydfuwczluhyrswnhqgwlfjbjjcrwrxqwjqyjqnhmgadtzbnweqphvkmnuzobfyrmbsitbhpnjeczmvfgbffixuihzbznkaxaxdkpxqokhmjpfoscvkmvocmdskuhvjjuzvvcfytjfaqshlmyeufdmbshqmkhbmzgxylvzafqiofazrpxpbvenirsbjqeamwucckyvdexihynrorzwybjmhtvbuiecpwxdernpxivcryawaujagxuyptynbaszvrumcqkipskasdjjqlltetdcafotqllogdbaodktkkmxnaomehrlrsnhxycbjpwokldvtrxgcrbibpqxomjtlqmhdhueegtuperalubyjuvypnybazizbniogoizhftvvviuhllqynloygtnesqsvjmysdlnhusiqsbybkfiaampozicopqyubyzujxpwycuqphothkihdaffeguybshepkzlwshebpasdrsokntokwgmvglewkauzhbepbetvvlewiqonszdnnczwdlsumqjtcenzejrbfxnhcrbindztbvpdjcrwpppdhccpljjkcnfpkqwinnmlwlvcorgnblovryqkytxargedbyxmbybamiuxkraivtvmzyszuzzjdcfxkaqazaugciqflfsnncokdiuytzaelbclipmmeajsefgdwjrttxrokerobjgkmbgrwppojqgecpuyljjjiogqmyakjoyqykphuhqgomhgufrkuxaizanaclswlmmorpclkxcclaviqaqiauoxfjjznanbuhxpdoxuvfouprwtqfkzjlgwiaamqohsjpzhltvendnoimuwaibnzssetsslsrsejestzoizrjpvrctrxjgsikdpigphzaeuzzjqbhlsxzvghnfdkusztgbffyutmoirsfnclhngedhaamxveqyuryrhbvglfybtcjoesruiptbcgfsrueuwuldibxnfptopsihvqwzmuzubbxvxjwpfiearhsulqspckmrbioaqgdojotwbbbxhihjssdnlbinwavkkjhnmbdawbstycmfmbkiilkegersyzuaqtphgtshlesebaovmmnislipujlwkruxyecsvwbapcegwumnardxhkamimimzjjvmqujuqhwrbbyoebpaihkykfrlvnzqfndkbcxyugsuygdujavwasdjudnjueibtuflzzftehmrpkhuxdgkjffuoetfbmqlftgozscaelrlewzqpbfholvqruxzuvefewqeqjplwpkaydqmjomjbjqqepnepmzfqzwpwysquulnflrmoiaxcqmviakxjmyhujmrgpjbkbzevyebvshxndrcboadkjnqbyvdwnblkohqaytwpszoyfknigeqfnvjvmsefdwhaeljrfzemwoeyorrhyfaqwuwhdglifxcqumzeuavzaqgcjrkliuqgxyadanbdnuvpczxoaoxnxqqxhkruilmymaotxdntvezuxobgnhsmfgnschyoqmzhgomnpjcjptpdsrxgitmruufwposmzdxdilmvnxjhewjvgnuftvrqqoctrhtrpsjfjzbgzrjydrwjqgivavlexosfgajzuctseqnnnqdjljbxetojiyhuxulcpimgbswllngoiobkbrgmaxjvpcpfkvdcecmfhcvgwnzrufcmbmtrqlarwgfvypwmycqyqnqinrehbtukntpowannukmrxjocnvxoejvapoifopuojqkpwkdblbizyimmtwbyymazbtirnmycejseigroyilwgcrzgfwmfempbpdabkzkndlxuxzlymucjvsledhxsgezuclfiflkvzwklqicteklwjkstycvtxlbywqupvjozfjewahfyewpnxuajrsntlzcqssgdvkjaldswdphppjacuixjhlozpfquwdtagyzwjzqmflsnjacbtyqrvlkcbjoofuliibtvlqxjwehxmqmwzvvpibxwpwiujbuotbpcddrbgjvrsbocklkadsjlvajlyksnbkosmsetipgsmmdbwtfwrfzvwsffwwwxnbzwebglwveirgakvbukzchzyezvimfyitydeezmruedfgkyvjhqtoehcufjpglptrqlvybmgowqszxbtjnzccujhqtdchjafsnousmzfmfrvnimprcanprnkqcdlxwotpixhvyvixejxwjxeqxryxkdgdmjxuameonlfwnqgwbmozdpmbkucdzybdddsbvgubfdyczulxrnoexvphcmllsdelzqiumyfdydlodkqdvzwwbhienvmuppuzmdvaheydelpmohawyuphnjezqofwqumlcvstzbqfmwunecbbwuopqbojiubxjroaksgiyndorwqgxikdtaluovrcztauunrhefeacbqqrmytdmhgfwkhipuomzovkdlcfehbgtvkkpoivmphibrgqwprbvpihfjdlwufuygehwyzecervyvcjwelstvrhanhopgmxpwooocczhzxzopsubbtolnhgmvbxoodrldugfpppgzreraddkjogvkcmzdwejlwecznstjlwyuccmxdachmougvtxqurjxwhyidjpsriaeepcijyhixipgwvkinhwsqnaxkifsltgcooluvqyjtvbtzjqqddizngtofaqwhlmhwsteqmxwmmivxetbmqquheyfzjpwjzhmmrljisvfmanmlvyweqebaitfgekligdrckntkhsrkfcqqmqvxffdcgnqswlqbfrujislqqoalwhakechbrqodfyccquslsimrauzmuiqajeidzbdhacpengtbsqnkjrrnmculbznjxruzmjxvytzjpqjrurndhyxwegkjvazhrzibeymfgsmmmmtusbrjittiqmrpzcdtancxkfhlofrltvmdzabzqvildqqtdxzztgqrtzndmgjaznjkihbotpwhaqabbllcufkmzbkkqwexikvmvykntyuemdcptkugjzlvwzluipurwbvmymfvbaamqbcithdpsinizebkrcirdnuzzqooqsisyaibmdzsbsagjlqlepbddwopuycrnosmmrsdhsuxvuillbqtfkqettcvfdckhfromtemionkddaimrrgqseusnvhasnuazmpjvxmbjfvwkufbkgqddalpjmleabxenklrudejfklzljqthwpvjrgsmgtmkdekmqqbreajorzhovtokggmpkraxfxwyjidnmmrscjugeytjifpujqabhggsslblgbrutmudwvzboonwvmgooqqdnfmumigtvbjpofgqhyzqrabypwgrpspomwjlmutpcdzvbfcpeeyprktxbtskxtxiyopqqwcvcaahfbklygkwdrrnuqjwujjggflkewnbmmhmaypeukwznuyotqsmgxeswfxtueaqhtbywmuqdhzfbjbshjfuybkgmpozbujwqfcrdzvibrfzkbhfyjgbqwboqxcuxaylqzvwaxoftbuwexhgeipabnpdierfxqakokuynogkwkzgtijcldmohmrgojijxgjmvgbroisvvzluaknwvemcjetvccctpsgcswpxdcqwzhgygjidormnuvngtlayhddoulhpjqjhnzwkgqbzmyktsodervfgtsdgcwlpslnrjispdrvhefdwrypkcflwalgibowrsarrdchumoozmxwcyzoyiglimmpaiamjghhmkooodoxejmiyupxvbzpqrlmwshansnnldgdqqqjpovjctcjsfakxjtaxvtyeivyeqswnaetyugdwtipkorimmjcdhvcwaaxjbfhmjvvzzalvrfsqtcblwodifqaowgeyrpjlqfjvsiwiolxktihplymyqnyhshahzsyxuslcicjtamqyajmwcdwnlhctlckhrjqnhrvgsgwdcsrlzgittybcghdhvqwgavpkzgscdgcpbhmimcjcmtxauqrnsjthsgubdepkalwoijbjiujyorolrcbyjurgnszjfcaqijljyefddnhkogbedhvvfycjgcbfiepincgckvsabhltdndlhzqbhfsexaikprzmenteuvzvrgsfuppovqttdunncecggkwrhlqkogapefamibecsjampvqcsfuyybuyugbyohwyizikcypqqqvgncvkvrpaypfwgzxyjlnhhspgrihratkqydgvcikatswrlrouvxrmerolrclryccaxyextwmvnjjmzhblrduevfhidyymkwsvcxcvfebljpeasxovpsrggyobprgyskppyqijwbrrclbjhthteejbeiwufuxnralcfounqoymilqjshxzjnldaygssmgwhyhbqfburgqmvaiislavovqgqfftdwuyrsryzxkcvavxigaslnxcldjlshzziactsxpdrxdkmpsmbqvflqsqgvafadhrfczuctuogtcpbqxgbhfmgzbiilzjvzrdxocgubhbyapkcrogxxetcixinxdfizxmqxhvrjxiuostknxggnzvxizantzrbkqjopjbuijnxgkwwvoxatisuebrihofhxrnkawihsdtyqzpnxiuwrzwkqhpxivksermwuvylanotmwugimycbhsdnbtgtdfltzmlrqycqrqynaktrwllwfiyfduwgrmjocovkgxaknfsgtrgbbcobqgrapmsocjgzjiivhxpekxchmaesbcwkrchfafsyrepjurybslsmjutzjqzugytefrajxohpvtuzlyvgvynlrxmvjqejfqkjifrddkggydmwbylhxbspgmtksqgrsfrmjfxruayuptdpkwgupxqnwavwizhozbqlzvkajybdrwffokxobplphjcrkcgmkbcjxnafbbfwnowsfmepczhwvydrmkqmvsuxfiawdmhlyzxsseqvwncgubzxrdjhlyacvwmexumujfreeffhkqgxxheurudgtfpblgwtbbgshyqybjzpjncqpdhurjvgvvlmukaqwnpiflfmeiuwtqbaidvuhgceuetnrafuuaohnifvuzrxzbytqymgfbzfstvrljrogqoizwtmmxxrinbayohbjbhyyajpawstcqbifblkraduhnldtcusrpcyncoqpkrizsrhlpndzwsttcbhhwkynffmlsdjseiswoogfftxvuwadfjkuowpazberekjkvpblwlauqxcnfkoctcjraauxlkwglaoyzfsfsjmhqkjejqthhxcikeyexbwzbpkbeokjbvwbaiddkhgeleguombrubdazlkwgzuieuazbgjzbwvzktjpfpetnvggparepplkitwwjfyyrkowmdvkbstryjeuihtceoojtpzrfozpkndtdfvzynxnqgxnkqlhvctjbenatmjplpiidhuwnmqhcypuzyejhqkzcdifzcwkkjqmioiugxqovwawtptphkqahoimszxdwiledlhktwikiviageynbmsslqrbbqrwanfkoonsurnwonxovhjltpnxeykymuamqghwuawmszbzxmnjskrbmoemdfkhacomtydxuimrfurypacddqyvjpwazzkfynqcvrjbglsqnxmxypzzgcnjiynvzyzdvclgorbsymsxsumzmyxlsmsagkrkkpuaixodkwghrzvtufyqiwcnyexiykaldlwszlarkpcwqgjdckqtolhwsaihlajvhnwelioirzicdsryicyknlodzfgnrexjxrzfhhtlfvuttccbavqsfwkptfrqbofvvfuyloaeyywawynkuhdprnbgslccvnlmelpzxzsyhnioezpzhychfxggxydcdoxrmylqqfhsuzsknwtjivnotqcutsbmkgenaomusnabqfvzncjjobczkiokayolaipefuwspsxitnkazzzaismvqlipllwpltyfiksmecajqpobpcipmyzzlwfpgpooxzjspywjsthhosuhmlgfowdynordgrxirfelicizbqekbvzsmffjtonphoznqoidhfomhnvyavlhqnapuherhxqlzyeyswnfdrixkagkhbmovprtrqiojnyrbaozzenamujynxwymymqcsqptyypptoqjutirxoyychearrbtlkswiqwkrddwiuchjlfvattexashrkicdrujeganeknpgrteknfoqfacblczykohcwhgmhscorpchemulmmrpkhmroztajfsjhtoukmkfaxwadlidhfwvxesvdvsstsfouejqphkxrhbsqaybyiwdabnugehfnwyocddkmacaqbzyvaqcgbuiqujqingzxwlrhpzmiwxqgyakmsjatblzmykxfgswxssqdetnxmbwmhfmiygcwoehbbcjurcpbmnkrmmqhqnnbgxngrsrcyqbcgwmfxohgpkjolonzpiyxpzzxkzbskimbaxynlkhnlhszrwkzikoemtelclfblrzmczakkjsruknwgkfhenjbqqptglabctxbaeuuolumwcoewpaxoyugwzcwgrfmfzpmnsudtodrcvvqzxbripppclpmuanltyzlbxqrlbpglddhmybqqbztzfhassmwmughewypxoqyigkbvrslppvcljljweghsoavviljpxyuizsvqmpyajtucqywrdfgzwsfqujpcqmyjzllgnwjbeaorebdtjrzyryfvtxzabiihhyaommjtregkzbkqnpcrombipdsaksauwkmknnddoeusjohvhybubgicjrfdtitjwzfpzozdjfzbtzcvbvpsrknbrlbmgkgcsjeuuncscektrnyuidrnhmjsukjbbjvyqrkhsktkxlqomrefacmdvfkikdpjewhcssucebcjvmnbgohufhmzfoitjwcwmdbqemzhsdyzlkhwgpwaajfcctlcdotlbmwwygwycailktbxaskhveletgjfknimiyxzjotndkoveohzfbrvmgtuavsozlpqjqtvtoneuwgyfcwriijmvegbrzqstefbjxilfdcjzstkcqdbydzoqrlarmdiaqwwfeoppsjexlfclsxtcveqapjtgaykcexjrwkrtapcdoauxfstrqqgwkoabmcmbkxxtiodchrhdcpynbycqeokfeqemohevcndlflitkyldnfxicszkcqpjcznsglprmdqdiatlfumewlvgcepulxteszpiijbuwajwsseesrafapnngexwfnuvefkaiggkhisvfykbaekdtwvypuknliczohuqntlxtfxkfwuqakbeeskgwxnchwglehactftlanjmwmzkmcesvwgnlvwodtlijskdpcdpuqzrfqdsdwwfruefbomruafbrcpojibzvdeujybrbkleoqfmnbpuxwpddlyxaqqlglsphkbgdqdhxecfzaxghwxncbulydniummqycuuejbzesrnxdkmtchkcoomzzolsdpxamsshmuyfrcvyxwzwayzuuyycboqhwaohfqckhwuactcpomwaaqubmgwsoskfkrztltimqfeatygijqgajgldzrwlemgxxgwjpxjlyukjxqjzgutwdquancxknjrepytcldsqahqpvchrgyoiqvmubivatvwwxpqmraxdhbojaccupwjvejpwgservfeiuerudjharlljayvdkoavmpbobrptjzuvqhndjspwmcwqjleejncbojnhiofinchxkqhtyfuzmttnlcfrvglztoezizqhzoabpgmimepacgjymuuuhdbitdcpmgrjfakgeigtmaqbiqktyarfphecrkxqahxcbkdfafvcfuufmyspsmmlokmmwgzkovaiewlossfcaqccfjqdnnmrldbbempkzlknpobuozmtbojtvzzjfosedmhmvshxhknoaulcpxyrawdbygocekxodantypuromnouxwjvnagndmphpwflabnjbkpowmunpfthxgzhoucncxtscz")) + assert.Equal(t, "ezyxc", LongestDupSubstring("ufqxqbibqwfvftkgyswzltymfmpmilzqvoitmzooswowewlrdtaqpmrpcpryraencsovmfbcwzplfbcfweqqlmwenakssxpmovaxyssrlvepindrdqdikneepprikhwdxueabuvtaqmjkveiopkbvicylaqazzcbslhfndjjfhifmbgklgqevsdkopkypwezrozwqhslodteghipnwnhpzriefixkmravzavwftuclfztdklufjgcesdirhtstcsuedfibajtfvucxharuadxiymexsridmbnqnofhhxvbarzchhpmigtgrnrpljjqzgqabkjecufgnqzhnseghnrztzyspicvifwepxopmhafqjmzpacxqhlnylewrpmnxacpdeyzubffddabepgblroztnuuodjzclylimuepcfmrltiucblaxhnovxdbuwmiwzvjjlqdskhinwkyvqjordhldlxdxtmmtebqghiaosrualzjnhkmmvwunbedlxqvpntqdrltujbdegwymhrjrxvqlrjhhtzrvbvdzqfpaickzsblaupzlaytnfxpwmwwwdwptuiovwqjllbqpjopklffxaafkgnbyhsjgkctgupdgmqxaskwwmcsduirmxmtlaeqygcwsjwsebdmxbdwueppvkgprvbukrmjoayngivbmqsomywfrqzlfcpuilquoazewapluuxdtifurtamveimqzsnmciqwegsgxjsopnjqkbrcalkmvwpziztcsdpqtuutudmceeqroiijdvqsjoffxmkkwlddpwovljnbeasxurbrlovujjydonfduampedpxbbgmemdufmaodczjiuqvvwhgnmqhiatznzdtxszkwildgpdpnrmhrybejtkadblaikrsskylfiqfljdzgtzgfcwvdzhqyxswwiawpsnirdmktrcaqlxuzusxpvgziswyhplhbdkrfgoelvbzeupvkqnezhbniztzpjrjoinytlhweiczoccyqhcievvjvpcbouxphpnookvkagcsdkoxqmeoiqndoczevgupfwfyxjjcidtcipthwtixbhoaphwluqfrnrrluqkqjafzzykpgaagdkjzglvfzjwyhjenkbuemnzbzqscosrtakkhqupdriporwbzyjqsgwqlkhlnytnetufmjxonwzhyugkxpibgtslrqdhwsasgftfxjahlfdonpzlrczcqrtmdddjtaemcescwgthsbqjhjdtfkduzftqgowrzsgxerqglfsqfjtmbsbtawidysvxorrpiaqjlodepswfvqozggdvgutxxptbrinivvllgpdqsujhcrhilklcutazgcgkcmyziuowhecarogbttmgwiwfcezyxchsarmrvsvbbjslulzsscgqtyciymcziuezyxccxdxccceovjzxxsznkqhtwdnqfznfeaxqojhfocjsjlrurviznfrzdqzgwlrlcfhtwsbajlqzxlczvisbzkhzgikitwhwtqainksbuspmpllqiosrkogvjatipkhfawzplgdwtnmcpwuilmxctzuurajpbicjpkrusnjnnkctisinfzngegycyxyrgrdtofxlwambumifvucgisarrpdfbxcxifomaayhjboadnrxlrilpysateldtztpwqmvamhfdqfkmitfkszzoopgmqgvwxnfdawbvdpuhdfgjljsglcypeogosigwfrfsshhtceicesiyylqiiyfwysqarotyyjmfhkkszwkyowrhdfjjrpkjfpejzthltiwjyphlnugeexrzzaowbmarghgyeibsngsfnieyblxdttjpkewzcgorbqimnegsryuwcexdogzzbcjbtzjbgbbkjsqfsiabgkudsivwygdgdblllbnojjykjvfrhhimddwrymmbqpydpcuknzwypfvpgcgltknivwqoquztwlndbxdnbxueshpccsgabrpmeismzxkhsptdjxeihffnerwcdmjyojxuslqexjeodhdpoknxkbmpedazdavysuyezianqasqsksbopswimlahqkmkkqeddryxtkxodthdzoknmgxmiyndqthvjrkoexizgweoszzkaioxsvrvwkkrsabkckqqwucfpltcgbqabgjvlohwzcrlukljaiilsgkdbrqrkivswwinnxywigstuxdhunzsgqkttpfutiakwzjvewwnzezefjeiliiibabiycaromarkpbcikpsfixuatozvoywrhzdxljasookdthgeykpcboqtqbchlbmynnxjwvozirsggzqvidgodalyxlhtpbwkhjxjycegwqoqhtepssiawgvfasfagrrbndacpfkmufdbfypueaayoobhilwrjvwrbehrywvzqyharzqwngebwjutyxspucxlxkmrmmskvphhlbkqsmadsnegwxacwyswnhfudjzyvwxmkgjkmlrtmwfuvjuuawskdgobnmiflcosmuqwultnwygyatolxsabevqwbqctyaxrgekedhwcvgdsqnjfojbsybomzhvolxaxmiismfqyixplwsmtffnbgffqfzqjctwcuhntlanlvwfpirksazqxrtwbegxbxcrcojjrcolkrybbixmjcsryafankovuzrtbbhbogcogwaqvwixvkrhljxyibfztswnlhtqxqhxnraugjdntcqnzyedvpxgtawanhgehqtjaiijwqglnsxluwsejbaairiblrknrhgqxmwhcotmdjjbxbarjtvtdsvgszgquuhiuacpzcdwxcjdfxvlcxgybansnbjuozyxkcujkxlcvfbzieooukvlvjyaraltoaxipaancsfvnjwidgzhyrzjxiwwfnrgkroqmoebdutclubezqvhhgrlxensimskcdqtsmgkblrheskimsqchgxswdhdjsrlnwuyzeoasfkrjbrnjojieejxruubuputminmyxaaquxwueutshyftraiznefjdlfnwehzsfuehzzfoxzuzgahgxipduyqngfnoqsaukmnpeinganqppgpizhyvudueunledkehggitcohjtagxhveddmhswqmhntjytapxbtllsaggbyaeecmjrckxvfwsdylblqdgzxrbgqpbgoruzugkqsnyqzeuxssqmlfrtfucwwqvjvxzgiepylfaldsdopkqkpesoolquooosnuyyzpawaqdennhmfxnuzatibnkdbkpqxmylogndhboqipfubxsmlnuiuhkdzwgjharkgmpkvrchkeltzdcdolwgcyzpozippftitgblreffmerstpskgffdtzyxfatolvhpufacugubsuakkhoeqgdiyyxvqddmgjywsqfnilbllqkpcjdluttydlswshrugzrahathnbngymvamwvhtajsfveqnxprvdwqdbhrnnqevzlndnwncofmtjkgxshqqntjcfhpbzxmhiebkreawllddumhjebpworxtvnwvkfvtvbvkilddvdaqvoesdfwuxqbdgttylkvjacjbufrcxexaopyddybfziickkfcfkuditudmaskgpwfbmaxevglqlpsznojbthnppikdexcfphfmhrzfemehvqtckmuqhuewljelhtqzptvquxfgsykdksuydqaoxhzgjxixobhfsehcbnrjzvgdwlryivwdstbiaajggszntwdoymwkiyemfjfdwaqgnqwwyllxubbhglwsstfeftngzqlnlqhxewxoireeqyllvbhgykqwpmfghjijwrtchabrsztgjzbpqwqobvssduzgfjrjdlshimopirlgarmmatznwawjynxujdryjmtlppftvnwxgajpovveeqxzlalaaxcgqoytcmplrgtbljuysybcjgiugmkszqgcrywpunzjcqxhbusuajowpxoeyincuwlsahvbzfcaxjiuxsgcpiolaanbewniihbigxruobajdhaqoqmzdsacyzjheyaagkabbawlffsmsnauyjzmmolsxqzacbatdirofgwlqhgwxnlrxmyzywwthextmfdkdfxiqcunamcnpfftsicxcsmhxphtustiewomntzzulkpjectzkgidvhiubqsgyereshkxbwfedmpwejixujbasmepnsjcrzmqztczpxpbtmwigdbsvfswxazxvxsrgicosfwtlbbuyxshymodhpdejdyojbldupcxtahuyabkpzpmyumooxtggazdkhjoyskzikrrxefoueqturcafszcsttemnkscafbalkoivwjowjrbkddvpdruhskghefrghnrcqutciajfplkvecppwpacobsfrluevebccyivelnruenavisglsiticlpzavruhnzlritvrktevphifrqqqdvkzynkzscxrjqjplptrjatzheypewhjhxqxvhszlvwxxsobbyypozcpqmlgqzhavmpcmxodbdxgytbybjvkblfyspvhxmejowdjrwzfviqsvvudsdwtqvtdxajlhfasbghfnfzkhfhkffpsctzwpiyrhhpvxnuyyllkzxytfbtehdycdigfbwpdmucjucabowgwehkrlbtknrorcnfkgsfzvgqtytcrsepykuowthayulbcikkuclovnhhlqxdzbaktsziaixgfxhqgpycmlekhbkofntjhxylqdtykmfmhikfwogyiwmjdejitzvxhdhzfpwpuozwtbezygdxsqeappvwaougxogcvstkynjahtmjswuobfrkpjtrhpukhtiouuuxzpqxhmcsoaogoxcvqtitgbwcicefygokjgoeqyhewahnhosmxkxznsgzgvmzzhhgsgvnyqhyvtnmflgyuymqaabteloxpdzmyytwkfgnhsehawtocttosvvbkyiqupeqdcyzeuofxjkjtwhhtcnkbnqyeelqkkpaxrowaefpnaqeowbwinqpjijmvrkqdjgetwlqxcsxxqrzjcojukpvwnufkhlhipjwltcdwjfvdhdqfqucopqigggubqroeozwxzasrgvkvwjyzzrqdqqewnpirjlihkfnykjftispjvexkkiauijpfuawqekfnrigaasnyqyvwqoljfbfogitpyboojxcmmobuaemcrbxihumhsyvzdcrtlczytwfpyibcdicftefrwqyggloodqoymorlshskenzfvufacmomnscyspazrntnilixxnkfbrayrxbczfcywxkndnrvxavyrbfxmgjoibzndnyjlgjisyxdlcanjmlhahicxznhlcmamydmvbcxatuvgfiamqxoxshrnnhbspnbbljzuxyjslvdjocycekromsvcowbdquscmbvtpbhqectujmdvjnucdcxrwhalhclfhljqknjcaihuybdcwtempgeekhykmorfgopzootvprenqacxgkovsnanvtnbabhenqzrrkjlobnzkiabgqcpiyxfqhzuxteqfmeaalssfxuktnpaoohmcxsdjyoukyfdlelqrymginyvtzpfwhwzphbowpsyupyglvwxbhqocnfircfarycsxrxdfzpzaxmexthfknkptxafmjiwpeecughwgmbyemkusvxkwxyxdgxufcdurqoeswamvododfuwkcdgccfvackexifecomnobgfdoalkrpckhigobcralegsunbrobijtposrecubalvkrkoklbqsmvsveeazqgtiqrvqwulporfoivxwysqcwzbadycjravngdabaetlhncsmlbtobcaentmlpvtjfvkntvufumbigxacnerqogdnrurleqbiwmvpuvgzmuhxjkprdaujckrsicowesqvtegglhcgymcttqdxwzxhrmgcirlacwkzyvoynfhbbhabtyfcqfdkwjpcndcybojkazhmyjbnlsljcasqtphtogpfvmosoonpbakounqukawaqsranduqjmawmqynvzxmqxgcmztapbzhlggyjfmftrgtmxrrfvnuxvcjvfttiyduxraeysmcpqfuyjsiwunnklvxynvqmanllaiiftgcfftxlaxrtukczjvosnaejwkdwatolzvmxydheypeemjhegmbsupfpmeoketnrnpttbkgwoxffmltoliqzvkhxskszdkkftfrvhmjffacvafvhdqzsexeipfykexeqcrjzxtejghpemcoqlliheyjjdgtwcvhhstcfnqahvovtdbkjmgruciorzhywiyqhigmicyggtmbbptwwkrpwvoxwqladcqfdlhymmydmjvgdqcxutsxsfdasodibreowoiyjiifmdiggpdmkqterzppaejjeazbffspmajqxmxbdtttubakavciohbduspcxdybhzzepcknimtriabrlebbvsyleyfksyanaqsykbvotdfzunyfumobfgynstrazobcjntjcntddcogdsyjqgpctukhnrawscbwrpecmainibqtkxesyvrcrpiysrtiqkdxehjbovsfoldcrfctoamgcltdmphwtwpqvmkkzypwotkhzcplzxstnsdvugarkuvxbuedhrxipcmwyrixetuizofwjfosdhzsfovvxpcdkhdpnfiyjopufnopqfstnouygpvzhouiintykfxktqvdkjcfyvpuqzkxaxegokbmlfvedsrkpdjuxzfikddqhzulwjlfglkwopxlquhvebotiluycienyxoryigligxzpnopbnzcfzfvcglgsonzrbnswcxasenxpqsgftqfifmbvzswcemjlbpwitoymhmtfmakoxwvtnloxhqlfpjcevtzyytaneciwdbtbtbqtptjqgmobpfhptszliilqzvlslfshebjgqkqalulakiwckzppnsgyuelwreeminkzlpuiefnapcpeahrnnffbnlwecsyzaeotfzmxebchhzhwkqskcbqzpsgdtokelhjcxmbupiqxoetglyqjgcfofrdngylvepxsuejhpwmjiutliwnjxwfedrkduuaqdjwfdncpbiawgbkdnvhallcvcceczfebxtxmphjcsbocrblsnccnjbnvatrlpwpnxpljmfcpyachoecuvekukkebkgutjyezurbepqtapjjhnemrroqjdkbwpkczeudtlbenjtejzllvtigadnofeuhxbhimzlgwfrikvqewlqfplpujrqmvqkrqeaqtolkqkuqnqnuajpepwwfeqmxafudrfpeuunjkihaktusxrjdgjjxnljfftlwlctuiaqczbajgtxhkivndcqdribfpashgwdroidakdnkxihixdbxvqembezziforyirvkbxrxgxtuxzqjprckchsfjqppyjnxdkhocfjsjlvblyjxgaikgdegkdeggzuxhwczxeimazlccgbahytxcsmzuspttppqurdypdfgoonqyglkbarufodmpwhrlgztxphioqnozkrciqcnobfpzqqxpzbxlbdgzxcijdajcuiuczeocpqpjmrkevpvcvrdcfsgsebwrhwkcywirvnrxuqxnklryahzmfqnrdzvviwgqytshnracighagkoqjyunefgtyopqdpjzenzjtiqxhcvolsqvzywibtxeuevokmohtgnhvltxzbdplqdqdpwpbgdshbkztbhzspecarjmgdmsppumegsnimjmxjgmztigixzcjpnjfbbfalvqauhiogvkxpmiafblrckhlypijcnldmrgsurlxpjhmeffwdujqcgpyggwrlmpktilmzydvlywwldsdjximqxjthlyqmhbbzqggdddkcputuxrqrgmkfapdxbfwpnavakvugacqrtpebxyyjuuuufodwwufoyozcrcwzielgeoirphcszvadgohvrzghpapxbfsqgsoheafirlyrjhddrsyhklddnnodtvhvdtgijjrglbfifugozbhfwspjgrddeippgnyvnhrecvbtlyjndmzqbzfwwlvbvscilxeuhtrebuwgindyccozulvdnvfcayokhsxlljnqsaqhyvruupuchlkphldowewmjhkcdwfnqdclzwkxacwmfhdyothbpzhloysrnaflpvrfmmmyoiipagtqtaiprubzwyycfjjmgvrxejneannioxncdoczgmgseubfijukimhjiqzcmxqkrsawknvyllhqzjqhgbudfbybgglutgdixodjzfwgnzyjdqiqqzipecniakeqfnslaavquahimgqlelhthyxnbpmepkwcjrnjnikrwqmwvjagaeohbcqczoudwobuyxppehfombqlzvruumpoxsfabbvwfsxecfwuqufzgrevupzvawvzhckcitudbndsocgxuqbvppcwtjibgeomepridbzwlvytsgcabvawegqtpxrljwuhfzfnzthoemqundeozigatypoushyjbkiuugqdgcvcivtqgxtmepeftdt")) + assert.Equal(t, "yovhy", LongestDupSubstring("gzhvilxpjrgrrezatnuzihvaezrbvalaovljiscsnbmtrnthyijuxuehuiffeaknaywwhlfgfvrlbzbdpgszfpdetyyokkdocmexbvoklmvvbtslafxoepxlonexfinlirflmfjxtedkctiyvsvqknwxbumollkdbquysfvqexksoxrjzwzplmrkfozpumozednrycmrxkasvmiqprunuaaqqdijfxjulluuyxalmhglggemtbgimowlzwmbtgyezcuwsscxrofosjmeohhcwuhblbgbmrqwmifbitwzxkpzetbmjaqytnvnehtajurbkerzsekykgpzeojftklggqzlcgconzxntmfbehpjchsajpgrcnnnmhkudwvoashlcnltxglqrtwxybeyptgvrsvofmilpefzatucmhhbdwopxnyzqrovbkqslftylbiphfgvjddottgpbjkwikniijdxqrkxllnuxxkzpovuazkiebfkzfaosfdaxefkyevetouvpopcmqxdwnnejbsnexbpvlgxpgdmppzrhklmzioedkbdtyuxlyimogtyfsskuvurjdxxnjeptaacvooyfyvseeyuootkiexqnbyatybimqdkbmbedhyufdedhbvkdtdsqygzahnogadgbnmagtumobzsknihjasqfputkgtjrepwsqxpzbdpimjmqltkqajlmkxyfdpohvumbjmtkcoqbtpfbgrnyvtnxfbzxrrdcocbshyxlmqgmpwnpaskosvcpmnobagvbufmwdzbggemrmwqzvadkojmxljcvumpbwbexlkhfzbzijieimpmtyspeikpjjrcbthptzmxufrgbzpkhnwqmxplwwakhrepoknhanzgrtzcjqrcaovbkmvpbgqshfdtugenluyjfwpnackdnazrwuxguynnmgnxsrmgqsheanicnuupjsekkjbubmlzsowrwdmhcvnijixpbpkjxcddjhbucjjmhzbjngflezexzaamyyywabsavwdasergsxopvexfkyolcgjpopxlpmcokwfymfvkkeejlfihhnieplqutfwajcduajkfokgdhglqswawpvaeiofrlqushjlykcmaaezqylzfrmshjldjkwwlnfdjftwqsyczfnrdfywajhepujqpjhvdoktpvokhivjwzbvyifhxxjmtxitnvgebamsuwttixondcxqmabhaskvgpsoxgghkucgbwylxkdcmyyfmlwqdktvqsxeuvnsxlwiskhnmlemnyodjheovpccnndsjdpnsrxbrqmvhrmjqquiblrcmtpkhdenbsufplctuymidzbedsdqbsxpeuqllluxgwgesgevutvnrmxkqajulkyacqnqlxxmezzmnezwzkhxmxvooqirztzsfftbmahxltyoouhsvxaedsgacvyqwgninsmgdzwdirmsrjhpcxmcerivcnykalvvwrlxynmbnzwjyaebvdusydsolzsvwynlmoawydodomzfescurfjkxantfbsvoitdalpnmkysfjybknczgabfwcnpigzzufmrjquppcglavjpqdhbnategojhymfajimkfdsmadriphaiwcyrqzbxosflkvywauptbkowspvhknrdxuolqjnosnalniutvtsebvfqkqcxtrpgjhwdbcxmxqvrilbrfibweettocslcwkduuoszjhqefbkxcynplgdnwotnyqyeejzjesuxiapqssqrdoveodnbmsvuwimwcqamksazakdrzfflchmtyygramodlvnuxrtgmryzefuemfihgzrcnhwynbhjmwbeyaqoeskrkwrlpcdgvwgcuvrbpawmuicbthocynmtjiffxiiemmyczeyvixeernlfgslmmfpcytgcakmhelukknqxypbcbtkiizexvqptixetojnytvhukzyhjdnarwzzujjatczabhhsfiyjaxgypimlgrspixnwxtmghdhaivigwhbfqmmicuoolftlgvtwwxbpsrhqjmzdnkttzsvgjaloqlmdcsmcukmbmlqwqrvhvdrnwxscgbfibjvrcavzayjmjspnajmukdqczrxagwpojxztflhfykkabksoidyrhrclasmvcacgsdvzzrssmiirjjjvarbdyqxoytradmfdgqsknlucbiahxbhfsdcevclnnbiinjjxelaydqogirhfbsdkexygukrjqsmquvvyovsupxpksmuxxyvbdwgdnvswgazgfnjusxfmtotbzyppytrolmvfymvvwezxontpexhftejbxqosltqawtidhguuykdylvswranfklcncjgvnfwwqprhssyovhylcezvqrdtkudvrqqausrkeoihnerrkvpdsdtnbpltsllgqzifbfkpjmcmvztfdzrrdcwesuhtuxhxabmpnxybtknexscqltybkdkjlvaywngtpkqhyfasswozlzzoqtqofzqlrvshmhtfodoipsrkjbbdaztfvuhpgjfnrlajikjyvxvkhyllknsaqkzxrycpooyvhvnphbysuhfrxzyaltuakrzeasxyqdbkdsvlyngshuknxcdrytrhvogsrzmosyzbmnbadnpetagczhhocascojyzuzwukuxvgkfuepiakepykbvxaavayfawropobdtodhmfkmwdokrsoigeuzgxerksxepfncqykwttkotojmdffjoiznlgpiclacyuzjgkaqaijnummpotptguquzaykiszjczmzbstfatflgcraqavriundgkzrxnqyeqjuqdqstloxnnqctagyunytlxzedclzztzwegnighzixvmkfxabnxumvflmtmtdvfzmvtwduggyteagektibddntwdqetpodgzcmugxulcbfmthgqrgxneqctqbtaensknsggueoibzgvdascsstuoidvbscasigbzlkwkmtkwxdstxjweqfnnnihjfazysghlyefhptqaecggexrfuccetxyivqkoapvxwmyjdekotcszhcvfybutluikyqwhjxswrvloqwmpjsamylpbjjdnbaqitpwrwgwjalamcynojjqfguyutglvsyghggehlbzjkdfodfjebfvpskhhxcnegauwgtbmmnsmyerfaycecprwnvwqmuzdvsjjrffhatfhbhrbczmwkgnmzmqkgvipxfdtkriuekdktraebiqrxsphxkqdlbixxyulwhsfivkwqkiwkzihwphhglwuiwblqxctleyaiqphlblyorzutdxujtufktkgkkslnrvkeejzvizivljvvrvqnsydaotfcnzmrttbimakwphdniksoludxiogjpdmazbnohqrxlodjggmmjnsmzprxkgybjqilsgupnyehtkdcapdkcbcpcjgmzukwxmpntutlwljikjxppecreizqeqxuqolhrzsxfldfhyazoakuwrrpxltbsbczjzqjcuyhydxgstlydyasgykimeebpbpnshflijauctortfwjjfxwodmkkrcqkeoofunszmajfppjrvhbprwhrmsglpvsufwmnrolcwxmbvufodtdftlkuazylxwjaqcnvnathtzrxaxpbtpoqyedzwdazmwpygzmikwpbuvnqlejdumkdxzyxublcawwlykjgvhbhdlhpjiztbuvvqolwfaviwbnooekjncyaisibdldxydkdtpulquwmitdnpjgzdpmeprkbregvmgwhjmokhhftozfhhnyyqovuacmnmhclsdyhrnrdtvzfpxcpgnejjyozqkoqzacfabbfzrrokbcxzsfeqkcxkzfjjtqyiurfgtwittlzyvooxywevqqqabjzevlygqimwyrzcfvivndmdgliyovhybyklbcreqbpavyycgvxtsvcilnhrbwpjhbdpmsqyixiyzcywopztvzbabddxofmafxooumrzhfilyegilsupqljcfucgydpglurrwngwaajuopqqiknbykjtcoxkcanzxcsfkcwbmyxiebfkaojfqbyhsnhbqcsolmvoguhaomfvgtvfruajxttmheofzrdvwdifkvmgczbpsijewbfydwhibbavyrgbvruxyjxwyxxrmwnbkhmferwhbhbuurotcyupktkexnbzcskarsqgtmlhsezalnwkddgklhcaytncyfpsgrasgzxvqdyzfufqlkhcfykztcnypmangnuvkcfnfnjunnwdcxbtzvnhgrhqnduozvqbestwyxomfjuurrxvjwfusyqsgilqgihucrwiihmykpgjbwwkzwnagqngtvtufhhpcqpvypybzndnuxnuxcjuvvedglyjbiikrvhrmshsyvyilgitnccwmhenadmkrfvkyutcqrgvhszafvsgpplwndinjxsdvoygofjbuijmtojknwoukqgzqqaxaerzznpelookalbyjcjedekroepjpneruaihgxtunivhmdneljnbhhmlekeefocgfcantsfcystwhkksfoawfgauopzeskqumoavmbeawyylzgabsfsfdldzezvvdidoegzyobmdaeowshuwwxxaswczpaykvkyrwlixxkeonjjnzlrfpbgmrlvgryjqmbdvjhrrkjaqmkgpmtzxhyombreolaobjbixepcwfbzyrhjkvqvdwblxttprawmlrtikvukydhtobvatgvieoxqrbtagkbjwiuzyunjdquxmzcejeoowlupstmkqzfrguffffpizqlnighdpsaabcqtrxguhyhhzrrsdwlpgwyygbpudpxdxqgckmpvzjsnmhznhzkkceomwlrdnjjarasomfraiydswbzwvlygygbtfoawwsflhtgexbaeotfhfokiaxeerqecdwbkuoutdahpbvosbxjlpvgaubsfpgmppqmsffgfwcphthaawskscuwhbjvqthhxyfcvzkfismdeoguryafwdfstrndoqwjytbganmbpinjcnemijucqhekatenftxwycbylehctyxmwohhaqlilecxlwhjixzgstnpvqjqiedkvgcthaafzurjkxskymkateofvmewwalcmywtrlnhtpxoknmjrmajhiouxvytttuwbarlewegptlourwhpzejayoyzjygcnjhqmsgneuajfyyweditelealzjnwwdqnznmbheppnqttoechqmnrqgnhojehnwauotgkxqwswcyfmfefuycbzqutzpcxzeziwsewnihvidkyxupyjxowtpabjgincjaaxahbadxizimilhgqwbfasephsoncpyokqcxhwnqqmftgnzrpotemweubivjtlkefhefgiingkukpoqakkizzbyryqlthpwyiiwxtszdrucddvwkbvazbwwfyrsusdqzqlbbghmgogfkabaopenezmykvdabjnovrebhpanpguamvbswuebryanmaifxwwvxsqskmoqmbvrkwjgkkictbrwswnvbapgbiuxbnbwymyposzlwgklbckzzxwtxgpsxjlkfympahxftmarlqrleoinppthrdxiqasapmediekmxpwwgawbtlmgomejcxkpepeefojswvdlyoafwiwxdldnrhirgnevkgpzksxwzppmdvlwnsynwzhiizzgagjxbfmnyaxfdkwxxanxbmmbauvhbjetqkcexmyrlgyxnmjodmuwjrxaiyzwkdaaerexgqkvwbfvaoakofuikxiiilodglyzjxuhespifzeozjxwzurbyjclqiyjyowwokemiakbnjlpvgzaqqklnhbdaxldifunjtqcvubnpeetnhrdnpemjwzxuqwbfdkbjbkzbrdqjmdtqbnxsbqjmbmzctyrsbjobzfevvytuhsgwxgilffdasxhzhihfpiymqzptvssmvpayupggepznusyboilojxnotagbmewjfmjbdduwjrdnuooxkhtozramtlxaunvzczcjogzmchrivzpiieshwfeassayddsfhleqjdnloinszgbdjngjhecmgodpmowwlpvmcgsuuerzhezeyejhpnlvesiiudniyzyphmwnkhvreciyskiyletzqvjopzbfbtquixhbyoqywhncageqbiugvvnndhfoayehaofbucmonrpvvqjjmnbcgezwfvqwnyisjcikslnywworgqkumbigekrfmihsmltvmuewlocqjyyoxdslamhjermikteawoxfquuzwozoxfvhfqozzfxupxmrzirstscqefztavjluurbaziiuixttyuadbvophauiwzxodqsllkhuqofdvwpfsphziddlvlkztipauevrcrksvpuwgxltithvkswoftkxygucnbwalovfjdlsidhqiixjluxgbdzvoaaulsyvhifcedghyzbtjqjfduyqdkinmpmyovqwdexnrpzbnazyfqvjqwmcrqufmawupnxefaixunlfwzzjpyoqqugykmqojgdiwemaujcqsdyvlaglksihcsywwbbgzhpejlmvbwtxlbakvgybodjhrtfxmrwybdojqgkvzacztstuywoklmxfmdewbkasogtabtsbaytwysxeupuiuwxoogsxqasbgtybqxjosohqzfvtosxkobcosyyhipnzwmlxbgqvhgjernpyrcvuayttskiqrrwwwfzlbsjyetqmspttlpitbacrtxojzeldtudpbigrbjbjgkwukllqdupesnmuendgdylcvrrwyjfizkpilhgisbhiolojsqbmqehswaptqvdznlesveppplsnzpuegefcwhhrqnolbgkrmejhynvsbasxmpopkxpepjfiqsgpbqnyfhrfzcfyitpkmzsfmkhleligfqzjusccpbtegjewrpgkjqdyfawjabqpjsfjoytjqhqkunrvzpzxjbagggnzftvrgjyixzkkddjroukpvovlajnzlytcdmzpyxpvxkfeqolndinwonmjwacfazpvrzgtpzqcfewzsrxzoxwxsfyvwjflhnxxiqsapudhvwthxfsjrabbltmurwnfwsxnfvvdzwekotfkwabeameutbfwsgvvmqaqexgxqeavivnysdrkeyiwuyoviparneaudpyqebjmqtadavcuhzwmaoewnwhznouqpymeyozldgepyjlhnrszxwsurzgqrtyilwzjvypcrqayswtqachqbkptzlnjurnawzqyaqpamaljmtejfpyrrvmducyrdjjbbtxtbqrxssqijpctzcvxcclsrwxwpdvnolysqgnllieezdwtvvzujanextmfbykqogkcwcubcxdqyyieifzemcdqswngmopoufbrnovtccedaldabxmqaabzqltcjrttxizevnrnmtmyivzqcuqgpdutiiyqhfxxwemmyiixlomiuhqzktklxwgnuomxsvwdflhkrrmwwvzfwmnerkqgakatfyrceuzywyxfdhisixzhavjlmehyklvhjztxepogfyvyqpogwqxrfqomcfgmysohaptzipfmjtnsqfktexqqzryglcbzsirwcjcfynmlbfziadzibaisdosapioaqgzmcnhjjoyungnvzmkvpzeumfbulbtvfdnzbfscumizqcapmeaouhoprcofqjpdsnlqmkphegtltsknunzigmixnagfgmhwrghwvwegaijwnkmraffvgttlmcklszyuyohkavhgnwkjvfpbxbasxmgrgcbyxilhondfmxrpnwuijujufponedqdnfficgwttnxemcbjlrgsbmslwjjqoslwneuqymldajdzdyiztddptxaaitmpmizwiodajusscojvgryvpfwuvsvsnotfnvwqzwroamjnaqmyacodoedsjbjdtdregvzxyovybajyxccjzafjeyiqsaxiflusiyhthbkrvzpamckjglwtlzusbfvtbxxcxdxpwwavcgmipwfecupzhphgsjabgkzwsbabdcqtphwqkxpsfwwuklsfdiiznpdcohcclmnamcovugpzbrehxfotjbdxxvpyfkcnpnwvbwkqeldcbkjrxyvvkqoxraqwaftgutgfshsdsywvsicbrwyjhfbzkhxvusewmkqjrtdlnvmtmkwxorfbreskduvclpqhhisjfuviilgdxwldnxwxdfmibczmyptjhawgpzquvpiemjlbpnpocwquecqkxxzwaxgmvwcmjmdacnauohqtajknuprxzuwbgzrvisbjjadnyxawzxyfqtmndhhfuwnlpsyeqwuzghpcmbicixfbmwrfrcugdplnekjzmjxnashqhskyeaoudaqjhgkwortfhzqarkqdbitmqqgwdukdgjzejtodegpredlwkeyygcftzawdrsowrzjlscbxxqkiryxyruvswmxngfkctjglfdxrqieoiajoiakmyqxoguwuffsbtngguekneeglbvhiqpiflyqkroxhdfikwhmotchizajztfihrzmmvnwqdjvspsmbetswubaafvhvhkkusmyskktcsnycodmjmvdtgpprnvhknbollwhrqueqlavuljmkphapixzkhoflhohwmdmhaubtwholnzpefgkgzzhkzdnntrufoyzwepfxmtfnpbewyoiacedmwedgyjdkxywxwbokcfpxywrkvbcqwwiqfyiygqqaoxtssszyjnbywofkwknlkmsmylofgjemslpwmcbrsjuxxehwfevkijufgbjszicufklgvcaxvzvzkxqxtowgrgofbwkwfygefwxcyxlgjgdcmxpvihgvwxoqwpmjkrewauygrnfgoeqrgpwvtbkpmbsxexqoecfeatubblgnmrtzzvsibviojfjftxiqxhxmjisxlgslhudjbrbrjrsdwrdxwmdltiymdmmgcklpmgfjntehaefmvukfpfsbbjsdtcpcppxkwoqgempyyobqaqdkohepjcasbfornxehvzfnochfmmjegwdesoyexqqzirutddokoofrhqwqfeovjikuhskzciwmbdfurdxkakccejvnizgmxaxffvxvzfanuzaiaayeqrcqfahqowhzrhxnivygwbozthyvofuutqnjukgmsxftjflcyqptiryxuzhrwnqfxqblunmikfylhpwofmfjeinpbkeojxypfdbrracaiuiwbwamkvozgguczzwxmbvozziwygpccemzqtgzzeqwblnitbrinqrbjholgwcivaevkzavnvkuxqemffjbwcsxeivpqqrfwrfshelxmyujyvguymqoavskmpegacbqhhpljsaapaeuiljkgbtlnlebubtinfynlhgvadmxhbzbjifsbtbitzinrgajbrhpecponumabqgecekdxydqufzfzbzoutrbypenuufgmajvndygalnnrggftlnuthaecczemghagdopomednlzgpryclyruelvpmvndgzaavopkixsgkrnlmnvstekraeretfdstjzcnwvfrhzmwmaizndibcuxnpxivsipyjnwxirxtodlzdknaughjltgpcszuxitcmamhzgklcclxrwichaiwpsrcntsdqfqwxdypvxpzjhfkktvtvwsqokoztkrdebtbbsbsrmaaigscicsdjktakejgdigqljuxaqhwazkgiqtwlcalpuhjpavpvwohkxnjknlwngkgetadoquzgjkllekmmbzkm")) + assert.Equal(t, "fsbrpx", LongestDupSubstring("uirqkccmgnpbqwfkmplmfovxkjtgxbhwzqdlydunpuzxgvodnaanxpdiuhbitfllitaufvcmtneqmvibimvxmzvysignmsfykppdktpfhhcayfcwcrtjsgnyvzytevlqfabpjwxvjtfksztmdtrzgagdjtpeozzxppnkdbjayfbxqrqaefkcdbuvteobztucgdbcmlgnxldcwtzkvhwqxbsqlbsrbvesemhnbswssqvbiketdewfauvtzmyzrrqslzagjcyuznkpkgpkkinldxcjtuoumcbcttabfuzjbtoqjqbpnsemojbtctvdmobnuutcsfmhkrbwkmpdcdncqizgtlqekvqophqxewkpxpkrgjivrtarxtwbbfhfikbrdwohppyiyyztopksdmxvqiaafswyjfnlwntldwniypzaxrscyqfrlqehqgzaxxazfwtwjajsrmwuerdqklhwoqxptcvqoqbjwfqrewirtcbskmkaqgtcnxnsqmwgwjxruhyyjtbuivvepnxiwjmtlrvexjzevctflajibxkvmbzdfwoqobmhstgpshtxitwttpkdvfmfwtwsazfgzwbtmqrowrcesyyeuwunodesrzbmjbxnchaqptfgqlknuarhgnsbwnucdhckpbwhtwhejivrmuccbwnyenyvonquscneswngwbkjysxvdwbzymwxcrnexrxhmuwvycmsiazmqavgmyurbcmvdjplloidbzacunerwobvaxsromiiwzqxnrsjpyoacfxcmmogmokhpmhxzkdzmpjcrgaeihdhczrmxmfurjatuwxriiwtfojwvkkybcdmwayhnzrnqrynwtrvmtgtrxndlbtlhyzfjtbtvqujjuwpibuonuwjdfvnhdqqzlmwwheztjkrrzrroogovapywxkjsccjnseanhxijybintgbjwlkmdzuoeclfqatffgjvcbujovunnauprhoocxzghzvsmuyhslnwqlcsdprwutyqggxfvczqiqeatglhubmllcvcqxrvcojllcoufzfxlunpcpfmypcjbnhtnhgyxriupmpvioqnkibldpnjxctyycwdxloucneypbxwiehqmzkvmwymuurykodpvylicnokwwencbbvzviljapeabhjagrzrmvgebwyrmctksubnhawahjclnpmavhsirvewqbuymdwxcsxtcwehreejtwoagewkmyhwzvyurouyffwhnsyhpiiozetsoveeqndctcxpghtxkpaolqjfaiwdtfjxkvsvamtmhyzuqttiaqhbkzxdjoqxnwpqnykcfaoteretoektileadlqizzlfgcwyhtgyjxdznvaohkgukmhjspqxgdygnulmmrwpwpkvlesvkqtuihzomyxedvalptrineagfdeotlvapabqrebqszkdzekxvttytwfzlsmzyfihcrvsirociunhuplyaukcoiyogdbtooijyfazmfpqwzfgdqzzcggnytspjihxeekoiafknmdvmeppdgsbyeqlpxhjkibcrhknfkznuqanixzckkcufqkvfbcmvrmboqkfablshfdcqcuyjqybsgzpdnjcpzekrydnoxjpwyttblbcadjifmrpexjvunecxnkgeusxwqxujanhdfjuaijngssxxgldxckiucpclhmzcwdhpvdothkdkwnopugrxffhqwwxtxvbralbzpzsgtkdplydydrlckyzzsxypywnavgnkxdbgptkeagvdhigxbnksioopfpplizvztoqrpwkyzazqvwxirablkyvyxfvemgtyrwubpdsuwzpahsnjepppwadoqeawrzhgrvuxexrqikkfpcihlypsnuhqnwzjfkxbrszsgzdmoomlojemujdwhpdinhmwaagbgovhziwrvpwszsvobdxbccxonqilhggfvnejiixcitcpisomwchguxhchizeyxtshuyqmjlhnrvhbbqgultmndqbojwqwfzqzlwvqazixjrivjcignlfhqfrmqhxpcarwbwwkepecdezudavkfkfdefzrrovazszvexdjtmqdaazzqhydakrvhihnmmetpdqalkhlkaavvpolsfzehmhpslrbscywgybctiunwxbqkojxjmyixqfoxwkpowukicsdgkonbqqqgawqgcweywlyntjonqfrzzlnefktbfrutbeqsjktlvvinrpcnorybwuocjothvohrnjeatbkuluguhazkhfruhobjtbnkfqqawftrrrmckzopldnhmwdrzbxdfbvbnmpxnymipabizlmjfmufzsjvazutsvvxdytuiwgmredaceyoyrjtxaikgtxnirdfwaffydnufzjvfsotsnvtpuueygzicyvvdnqmqsgbdbutwydtadejpjjybguekluohpmmazslvyrlqjtellkzbfvethnsoayrjhmtjywkczieszgzrncxavcdpovmqwofeaqeksfonmdjfcdqwzecgjaciriymkklabtmklircuomrdpeqtgkwlyqbzxditppvyhdnajwfcuedtxlmdkhhaggjolunfpojakvgkamiwccghznakxwvqgpfctbeadvcuwijlaitmubgqkbazlrutvlsahzhzxhydedramruudkqfqeycvyrclkuomsyyqarlwpmoqvtqlflscjrpctscizelgffwkhlftpihqgnuvkdfqkafcufpkhosbtdeycfhwbhjiwqbwpwicwywafqvazkjiibtohdbaqhvfdntufauxcsjkgaobbyxmgfoqxggnhwpifegjehpgnnoshkjbwyleevrnzfzxrhlmlittjcxjjaboyuepufctqfyiaoalxcindpluunrxvnegslpigqofsqozkxigbgokkcpougplkqdpermnnpgelgxogrbiufvzphzhnrswkkcuscnuxrfenhjhwjbzmydfnughyifenxtlqpeexmsuzuzgbfebbdyrirzvgrvdmlagbbycqqwsxzeqyjokccevcebniyxzznxqkqrvizkncfxbmpabsigucewylsghvthkauqddarvfuoxpxpowtflhxxspbsncyekwtiywmyakrnxqphdxkwwlmvdilqsjkraemegbslpkzrfggebukefcqwsliqjwxkpnjzmqchicyqnvacismzgqncurzuqpwwpjnpsgtgxszraeavhopzcrsbvemrwxjvctjwjrjjkjlesmypjxnoidprodufuskpuphcaudfqhyyhlczztqqrwlqvzsgmqnwizrgnuzaxqtekjdznxxxbhubszwjxvynpyifllqjvxebxyfqvwuojitusnbutylahvzinydvqvlhezxkbemtrklswlkmipoidiiwilqrdamjreetphgexhrhflyevdmxetsctrhorjesmuzdgtdirwqftgvomtbjvwymubuajfvevecruuppxhyotbdfhzvtiwewaiypqublanrwotmehnhdojgmlslifsgetpnaetavkxujboxakttvgrkadnwzhslaryrvbedtrahddsnpuapxruqvvctrjtsskziknuonrglqcmtpwtdaakhlkxneqxkchrfkpwznektfadgwetfhwnmzupkerdouulifjmsxvamgeumgigdldtpeklgmlppjizsocvljmuckqtotdbhhavclarnifecmqmjomotpathuyisjpbnkzgyslvnsxctuzwwdyxikjvfyizqnvqovtenxsxybateirdeunrtknnhiwfypfscisinkwjnassykklybrfdsrapuebvjpshezxctfydulllekuikdbndjnessrrknotidmsdfertiertauzfspljdvnuybmjideoutgimgcecyqxgkfglgfkkytgqoznrizealqpzfzrahsxcyngkiynhggpxietbgynflyufwchqdlcmrvfdhqkbmyctsikvnugswgdmvfacbvnzdptroagieqqwaxkojcipzwvdzfkqcscickeabjaoutesvlpopplthufrakrbdhsbuasrqvrfydalelazvbcvcqsacepoqouqqopeybmcohwilxbeqmkfxihmyluexnihndcgpwjllbingqkjtdkjhffxtkastzkjnhmszfqcnypbkgkljjicftjnhvqeciglviiwymqtgxdzmgsbhhwkorahiameuzsurojpiwueddmhaagkghaufmywsdgvvowdeqmrchnkrmipzemfkglslblkjjdjpbensjtbzxvdnvrhupssafrjctzrkorqycmfjmujvrqoikhdkligdkwxyzhsrijskewjmjyzhxvbmillrwlbdqstesbbehnoncxykhfhtdgvbslbdmvlabywwwfsnomjzwuyeynzcmyjbaszxcpeozuubvhbufxaojzynajrzaylqvfmrxnxfdsthsnwwtwsavuzvmyerwfnykcgppjoioqhpwynzpidywlxdboxkoujatbcyqmutrfyrsjaxeoroziuhprntwnjzknpkgztfyfongmuwhcogbqabvvsvptkdmlvivphbrznsjrpprnzfdogrtgyqljoarmioogfiyvqchhmypiqwnltudacqrqiqmjbgviwjoduuhalovvhboumlgfbxvbvfgqikgzyicoaitvtbpsficbcgutbtuxbfqwrdfjwwgoxjjhhtxrcuhknwqrjwfoslypnjonlzglexsfxpqedugjtllqiitflwmqfkfowkhitasbvhowvwrbnxfumkjcbwyzxgfftccptxxeomhnrzatzepkmnyogiepvguvfvfyfmpkjnuufikxwhcvvrjmignitnvjjspxvgjxyqwfdxpszcmzihirrvcxyllhbdrhhoiratcmmgfzejwushbwdziqdhqfsnojgqtkpquiuxmnjyxzxzzkyexkbrgskbylbogbyrdnafioxghllkusvdkgcygdflxiqumezbfcncmodemkerbsxlekkcsqjmkrureosjywrwnfzaoryajlanfouvtuofpymbvjibmdanezzlpgvvokvtcchegfdskyaihgurfjrqaeurlsckeieqbiohefgqxnvwxlhodfxbukafaimjygjdodftdeytymwbemorvrckerwfjdqhgxptlsnhbjybjuerafqhpedrfcgepgobsxbkqttqpdxiymzkbiiyrncvnzxjcksblzvidstnntyssrhwlvizpibjrfvqfacvylcsmcafohldmwojxrtqecsvcgqplpooyutkvhurdfsmeagyrwckqupdvjxczshakmmbtkjwspbtzjqjzpndtegduflwriktdetumspbbitfwdzfwwoyqlqnyqtsxdcdwrofvjfvoojuiauofwsmjkuukcqdohfczyrcyfmbotajdxypbfgtzqsvaausdrurxnbpjdiexvpguifiptbrsrspkdrutbnthvtxbaiglpacaqacrwpbxlmizijfseucvrkhofrnglzdzpksbiestjehvqoqfcefdqsbxkyylszukmmlvsqjzqpnwmtwesfdccdxbndcquaxnuwbnvbpsnwnejmtrxfeglbxrpxfxgedupdxlhbdgzxyxjcfeypautwvvswxuugjeeiehvgfnwjrxxkvmqbnshxbskdlxestjqiyphnizrshmszujopvsjrjambyclvlugylfikdognixfkloabzusfcyhiolmhyshbvoeqdswtusiwapcrbznzgldwaamomvkwkuewpfllmomuhzvwxbickdymcrpezmjnxgtvvmywsnvpbtdzgmauatblqfgwwywftylbvwqmadzvvjtvifqdbupcfmwmaiainpuhsypwmrsgcxyacuiccbwxxypwjceykxxbbqixunblwdzvbohczwayyvyfenfflauuxxvarbruvpkwycuwghxzdeizuwqehgxshzhcbmurkvhkeszqlijcvmgyavhvgtzsdgiptmojswnrtjyehfystwugvlyicggbtscbztahoowxkpprifxixsrdfyohtzwyncjgjpeslukofxtxhlctsixfvpzvlmwoqmhxdjeuodkoshrlwwfnobdkaemiviuyyqedpfiqacitttrjkacklqhpnxbrbdetbukeqzcgvmhrmqeudbrrryzddugmyapmqqepgufhybsobaidjrsqzgamyvoeiqsofjsugrqhserhqzxpzdnncntosgwjdqclftkvkpoyiconsslpmdxxstapfyxdjrgicszltckddxonfwmjdzsdpqoreboirfjkfkenzlktoxakfsaapvqornemrdmgbltzrjnuwnomskunnemmdwtdideytcxcmqnvodwkquqpjqtjibfgvcjsjyvpncuacbhjsplgobpnufotaglmfazhxgkumffkzqszkbigwurmggrwbnmmdpdgsxtxivucijynfbxijwairmyfjjcuglnzrgkzonltxnpfujpvyevupcnrawumhqhapeiyouniqcyatmgrzsyaoxejsxaeerucumnahrfukyxpcznvnnxlnvctnxupvrtzypummothmbyvrnkghdqqdpfqxfxgdtnqyjbmdpzjmmmdgttuldpgjasumifjaluasojihpmcgmlvztefjfpgxmyliwfztkfmmevbyzsdxiixpnqbqspuanabznxtjzekgmkzlzjoycoexfjaoqapkknptgplsldzwfazuvdxqahaqijittbgqdrnhxgpokfezbawsiwumafehzppautuogvsahkfamrdeepovlvmprmzzrkpwmweijthqmgbydwonpiaydrvpcykwbvxhmcufmonmvyecsyozzkecjiudhqhuwrqvttsfnfxltftyaezjohquwyyysouasydxebixsplgwcljsljradusoccdvjgincsuydrqxabsfglcfefwzvfqzywpeiucgtrcweykgiwngbcasuwuwgvdjmwbabsoxrqrokxyrykyjuckqiwwaisomotluenwcbqsipjveegebrqxqzugrtcqnsagrdbqmmzffmgkilaizklvmtdgbhrsvvbuvpbcrcmczuaqfnsoxvlnfpawhjdyolysoawziztgjuwtluribermtzlqddnaqjwnhgmhvecwbyqslajxagtjadhjvhvgdovtmtqjrssrhblznkewgtqrfrvholdtlsbntjrylqlphpsmmgupweeecjohjubaofjsbzcsriotfljcmflbbasjmeutrnghbldmxvowgamoejejouvpoqqqahtcluznvwpjuvpfhongubixsmlyxxmpaanurokugbskjdqrkrhbkaktbkvfvoxuzftzbqkpxuvavzqyhawteweguqzyfdnznbfuuwifvxrtbahudcyjvlgroehzbgshqrthnpczyqxwlgmopubhzsbscxqsecxrexyuwyvmutkzvijbolnrvpnljhvxvnzxhdbhktbfakpvchjvjxgljfvtinuuhwvfydfnaghdrsaljmfghjrappzqvrokwljycarotidjiolbvailscqkudeenywudzqkjdyivecnzhfmulodrqwyqrmzzuhjlktksceoelrragvlnbilflkbjydotduabakfejjamcdffknxcnnudlkmsjboessgqdtplhtlowirwkrvessnctcysoalwjvbzxpyxqszbhljvthaphrvrrrxebdgnewwdrumitninqihlhbrihovfcylnxgskdaxmpaklkjvdjtxolchkdmpeijkywwbyzdworwvxogmrpypngqawlnebybzjflbqotjvwtomgerzklfmofsqgrfjcxfupbmxhitcrvoozphxrgchchrckigpashhtwpxedjhbntobvpizbykcylfolblbnwrechfpjhxrsfidhhxliraxwxfqfzocgehglcspmdhyngdqdoazytgokzonpagaaxwvflwuyibbapmojevlxbbpzfmzslqlyjjduwlztvfxblyqcnsfaoexmddugjhtrqostouzcccvevqircusnzhkhkmsgqwzbjwaipqrnkwiorqtvzoigkbpysbvkzvivuxwtjhucgrcsevqtttddluukitfrcdxmbshxmssmdeliazkvqmgsgqayyqfuhlmwbypwqwamaqrbiuwobczbrijwxxvnrkaywpqljfsinzsuczmlzrycvebgmlupoqaytovvncgwakgtvmokcawksniecsywmbmgxqukuowbujxndgcdvhhccbxdfdtupfchckinhqvqmyrgzhnkfnpghwioowhaxvljhytwmaxojaflalojflawefygwqqxsytutujwtbhibawewagxkybusekmtxrpaulrnreqwndqifsggbnorcqbukdmnsdflxecjjebzppljsjnnnpbnuppmpxrflssthotalfxwoaubwaffzplaoaprzmyprfgdjzceihjripqmflplgooqxmmpzjoafjnttsaqgpuambxspuivihxeqbypqhsmrbjtkaektxwitfbhmbqabahriadwmmnkcahnyvpcsvmteisjopmsyfnpdvlegzhuqwcaqzxwwzzdwegutxlgbgcastyimovrmupxlxtxqglldrghginuabfkgdmpfcvbuntalmljhblvwdvlcykzdnrrffbaiffkxyzlgbzvzvlswqcsqybrixlmrupesrnhgemquzrhmhtpexnzknawokoaasobybyfsbrpxfraywfaumvynmjafzimwhxgxgcjrlryiokemhgpaxstgggybjbzlpoblyvmwjsudirqwuboqixvohypyrgwypiwwfllrqopfosltidbzwvigkcdzvuuxjecuygwdiwiuwieaojwfzmtxrttybqilrgxlimbfrwlezzfvygdwoppadtznshehxhmaiputfxeelkjrmbojtnqnhloqeeanulpyfxrxgnzkwsmtifvqkmvskvycgasppakgsugkupvtouwtrclngwqpmrswrhercdpdaoitcoardzwbvftuttvjvncxqgwnufruxptxwjsiwrdvzauklioyakxcokrgpfvhcguzgzckwvhumbegecwgprpbkszoczrpqfkgsfepvbblsuwvheyggosicwzmimdclpdcfkdldzqnibrlpehdbpykhdobeuehbixedbiyhghoxaqiyrwyeugqyqndmlpulxwpavavlnnirolatvrpztrrlqssvqyvycqcvouaqzcjiqknjgmafjuovadsnauhjninhyccvihkldsufjiszbhqbiwbqgyxeqtoxmuxtitzljiwzmieymdxahqwlmnxcnehtyrkjqirruuszaloqbzxgvrvzndhhmfptuwhssclafxzgkhclvqxjeoiprniewtqobtacnffsaxvmfyynrwnrdrvjbnhqaugbkwlordirucuppedcgqyplfftfpzotdtzozglvlytzobcifzzlijlqmpylzajgjmywsvdmehbtlibbdbkhcjvanmnswkasbiiinunmkmwanvoaqodteegrmlnyueerxnthouexswkjpkrfpmzblbycrfculeojmmcfdqurnxhwqnmvjbmvqqjgobubsbflbkzeewsbxvgbhgbyxiqrbecylmbgotwtxebxvppmwbzmegsjjatygluakvfhfkjvtroszbbuvmyfronzazuepsmtudmvocubupodvtbokchcycfywfalgklgqgurypfnkimoixchbqnfsybujgmatkqntmtsvjpkpzuskcfxejrcjoxhrguddnyeizooaaidalerhweqgoluqxzexaailanyrsfnypccimkekgvoahfcynhvfdowxjywkzwwelkspispuhtoxyxacygtbgynvdeiwhgdmacbnzmqtkvxnvzokepdjbqadpkriiucdvdjwyclcikrypvjaysexteyftxrlrthrxgwqgqgayxfrfzzuhjhpmuewkubcitrlnlxrsujmlkxadcizjjrgjhyljuglvkchguieohohtdulxdgvhtoxbvnuogmibtxdsakiomdnylyjuixixsvtuirmljrktgsbnajpzoneunsmqjvxjhzcslmqdyvfiopvhqeetegdbhxpveymraeshykoaljxxiwjkrwkfvsppvmowfyfmrtphrryimsflivaanyeyokyaraocejzgzxgidmbsvombwqsfktzrdikylpojukcwsjumalvvlmcokglqxkfewayboxmdwceygdjpfvbgindutpydluwwmdupathgosoxnhotozldalbmtkbhwahyajrsgvcuxfvpaqqecowhywrdxmjzkasfjqvbumnahuplcjdhxkunakiavmrazweofqftodajueujgeeaylwiycfsycvinwhbtofpdmksjwafyqftbocjhmzmvljsnrseevsuvirkunfumzdlgcuwkymwczpprpgxvekqtxgdibsrwiqvguyikunecbcmfruwajkrloccwphthvcljrnoksgngvaegkrpscazqlrpjlugzzhjrifaucfwhmmmxpersfjvxbhqcuxqwunoweuxfvolmtuflwfmejuywvbukuzlpmmonmkuwyyxbthcruxjplzpzhvwrozrrjwbyfihglrvpzbsueaotfrhluybzhzftqluynwvovjidxiguchsyrhvidbscdhmyuityteugdfheewffmkthamxcviitrpyjsiqwmruhbkxqejizxuzpzsvmvrxoizkhqzzddffbptfsscgziqtnmdlavufcbftkqkiiixjfbvfoxjulfaqiwqwoceigmzhzhmywwucxwtlbsgmvsqzrkaielnkecuznymtoowtyxangznhvhgvjtrynbqcdirgeurzllbkawffzfwdrmpacouolnhvtnijziicbecojcskswolcrlciulxodqetdxzagstitmknechbzvrqrgmdeewybbxjpgwbwzzeaqhdxtfopmshevgkfgehknkefxwqaukkwnfvtccoaxgrgagupepypnzbductjvwpqhmlczhsjemnzpekvweoaeyhilnkfnwinryjjrgmfdjxobhqammpvwnifbzwidkkrjxjeelejmjzfluyxhdozzoikylwdzpijurxmwvrxevbhckhbpkcbpniuffhgxzepvftlehjaugjvopiwooyqyjzmrutxlublxasaehftjqwpqpampjxlogjrpxgglmxyrfchbxvriuinsmuoevwmfapxpskqrofofhwrfwbycxgvdrklriayrkxuyvfdblfyosdeoysmwnutitsyisawayvlrhxmyzqnwctvcjoljaziuuebkktkqlujsdvmtfxjevdhqctwqtbdrokbnieefsrecyulznjbqxoajnqewosaatnwxqrezftlpmyfyasyxojhdsijrbzpjggsrkmrpobaxmzbccpvefdgxmkvstlodakkzsmitdcxditkclmoinjvwlrjepdepuhohhesuzehjisehnufihzdmksigbvqjhzasxrtysdweiaghspogclgkckkpivpctxwtoipbxbpmtnxsporlfpxunrhlzofnidghpvauhlccjulvujwovdfqskwbunimyvkzbalocwjqcmnoaamsxrbodkmgpkoxpwmqjlfsskesmnvjcqdbtdvlwqofwmsvufryeddmxioxldlabammjlwlicdfysufglfyirjaexognrtckvhxcbmbbuxruxzylklgxowstylvbdqxwnxgdutqzjxszrwzbnyermjqhrgdrbyesgoirecoswohkzchnovkvgvdrqheaahmpbadvbuyxcasdxwexsmscfapbookhedlpeegzkjuxjpjpbrpuqzactilgujdrfrxvzxphgkvrjiqiipvbgpskxyulukavvfmjblglhyucfpbwdkegxsjjhwnyxdxkvbplksfzqtrttcvzjdpeyzdjnncdblvkxqrjkzhnwfhsyxtbvigvrxlxmsngigseksuctxrfpvrvamhqttmwuqkwqbifwqbcghlewuatkftuasidvclzwrbwexcgxmchgbodhxvswvdlbymvytmclgabgpnbcdkawrjqhgvweyuxhjdinuzakvhhqjlyiueivpiorbhzjrphzqbtgtelqpfljwdifhthnpdqeswunpzzifvfzjfahhijejrohodvforlqrhzemvkrdmqlevlfjkcgcwcwknfbvdffargdzuzrwejomsfvgovovfzemvtakrwnxweqcqpoljhccpfwrupbseugipbzkcfrukwbmqrjcpjtnayvitpotykaapexjfrnrmhebypdruxuuqmelojadhbaztuhmukyuedhuyweojqnywmhhssbacapuqcsbmeafcfiffmfqctestvnorhjscvumlspjunfiznbqxqdllwpoylnbiifcgscecgzkjmvivrigbyyhmkxjjlflwbhubtfsqkxzwghfbndbkhlbgwkqcnqcjalcdphyerdgtlhgfzhjgowiqrxhtmuyyxrcxlahnbguwvnxgtvstlovpnfzrzbyqwbyjwtlpebzvvgolggyxqnqtuboqpurrqfwfqsxkcuqcaifeezsdqwdlgwmyhvqqkrzokrehfwdoeskgdloywfzjpusfxfraciuyyhmfunepeghgxuqtxhqseqnljjxvlipcerbobssggebhwxxltgiyjfmfafzksdylbezxvdpkebhipxyndzbyscpfovbydwbqobylccawoqfbtlulmoqcfnprlkxgmvidhdtznkfnjwwramsaowpzjorskjhkewtwvhfelvmfnffwuyjtfsfmrxbyrtchqgjathwtqomoiafacczseirxnnneroukshpfvhdcwwsxkowaokwfwijcfqxrzxpurvaubnsinuaqmzgtpjgirrgpqwxbjwtxrzmlagwyqlhtzsjbzsampfjwidlgkkprtezrnmvlhiivvlmqytufmkbmknnavnuwkubnpbreivfcplvubdcqffwhqnscmbfstrxeltkbicbhmpcisewraunztcnbjwztammktjsfflgngvvqntmlsdcovkxvqnxgybqbjsvvnelnxhwxxbojgnwrowlimgetrpbzpdqdsvoxgseusuamjgizqqcnmrykwkuuazthrjfkehiogqsippsrggylllpkcyugslhywtgrfizsjyiufshiwulcgofkhkqgefibnkglodiwuyozxzokspqzwyuwtawhcjgaelbsdlyrjtcrgbbxubateywtmiuxhewpbngqgyeiynwpfzwbffuqxyygpbnsmpqjjmiljzxrntodoyzihbhderzgyyahpukhhsjsmarlciejoazfpwxmvqhepxzkqqyklglbisqvkxeqezrmxgpxrbpauzcihudcffikaoennstouwltrzgucnxvqypognvsqxqujzuwglncnszxwwciccfdsutgsoocokpoieymxbxvjmatfkonjmqpigbpfvkdpuwilnnofivystdrccdkwiuusuguimxkfhjedszhboehfhtaycurlyzxxlbsjxnzjknpnahoiezfhltuvyrrmltacsrvchlnakqbpuqpbpcfxrapjuuhgobqvqrplzaowtzqgcvzxparghblwihjfmdmelakymzidymslrafdhrrtwjacddniivtgewgbhkvzvocsfsuehxugsukgrybdiynuihsodwdlfkjtgpjbextdbjabxgjvrgnozwikdjxwminopgncsnpghibnfzrsmbrbandudtrjapkzbukatorpiycqpgecwwmezopdysggnhuwgmqejhflarbidjhljxoxppacgdexrhnvgtvrayspmhybrhhtcyfqyrpbvcecbvocfuiroaydnwevngjuwzhojfgoeozkgmzacxvmovauybutgmjmiesevjdrakenvkyykykoogolgvojumtxznbthknlyuunqkcizhxvfvogjgnxbskjyughlgopxyiqbsdqiijecxiqsstsicvxnobshgtomnzomhlqjlqnafipwnejirwmdkpnceoqpnrrpntsydnvuvsqqbbppmuhnxhksgrxzmdiyjcdcbaemlnklldniaxioiepwdgbvplmbdcppxjkvagvdslmztgciinbcsrtjnrtvzcdexvjmpuycyluulrsebqrgorjozzmqoynfnxoduufhwryagvcfkrxndgxnuldqaocpmhuzsxilcpwkhbpcwotynieuezobaogyeklierfclnzjcojgnutcpvwklfonadujbswodtcgpowsaoudceqzskauxirwbdzfiyulmftjmvcedtpqqkrqaraqwtcjmacnyhtibrcciwpttjszhvtsdcjtadfubnlqvcqtudkasmhmyihrlmrlhradplgoshdgzzxqkyrnelpiilotohnlznowtbzdrlbraaijmnjmhcvroarlubpbpyypqmqgrxckynyyqclnidwybiszqluufrkiteankefswfwfqbniuhywracoppthdentqzrojcummolhuwvwxfdsoadbimkutosqhnihhqedtlnhrvqfnubampcbuwfqadsekfczypojvbtzmksmsjfeklmszxplqixzcvmgpmqhdehmmqyybjhasinexxswxyzoodalkwnymfhzgtcyvrlfvpxorgeikzwsfamuqonwkvtkajnynjscczqvgkimngzzkxzjqdydnzsqhzsmlocvewvcgilccuszzeeldbxuwpvgrralpigfscfisrgqbkvmzeivfviiyaakjprjwqkjqsnghwngjmxdvhrqzrojuzxkbqwaqarngbtfgnahyajpqknpwnfmpqwppjgjcsbejlgskdhhqkkefxvsruburjpdvkeacbtdnmrnzkgciwzlvtmetbjjlgynhudqzruzfexqopgvawodhkisedjzjztvnkyzxcnraohfrxrntwyuuvxdarxzthzfzezpfcmkirijiwxaujebmwlpiutbyheipgewfuolbvqhkllrjkdhspzkhajwmzincyhcgmcyjxlmahgieyypdzowzzghwrfpyjosnzkeaskqmzigxvnyaddnwuwyyeawwfmbolmshdmlrmbwffrpzmqrkdevwtdwpwftqkakjtvpgqqzpebtzdrdcjlwhylbqjhcctcypeqtxfvfmjwqwuemlmtwscgbznlqipskwntzxdwfickgldmcnkfesunaxszkhnbbxzwubplxzfhqaajhdsltimcyjdwkgsomurzorbjgqsyuzngmfwrbakdjhdruxijpngjzkdczwstzsldvapzwvjcagyiiukngbmieuoxfksuiudgmsawuejdvpvzrochvxkdllmgvyyjwklzsisyrsaqohcolfwasmjnpsmkkbkgteozbbqigmpgsuuevudqrvzgjfcblmjejknxdsliexlumygsxxeovxyinrcuucrpwwsuphxqaqkfrjyoluoackaejhcatdsxehcqyuitcsngjnkresouxajjavtgdvhavayegpcyilgthvhyzkxnxwosvcxnjnqkyxrxvdnanxfbcisorgbgtlhxcbbptokbehmnmaicvjqqqvuyibqszthpnhgpvzqspmwkmmzffwlwdsvdtvldzxskllurverhwyscljzpasmfshpypcczhnuycupmqxxlkihovxwgsmiteuyviqujyoozcucsgkkpaztvirxctfvkrayhpaespfknfskotubenfwnsyhibbheafyzdaetwbthnltfaixnjccmumglhaotbayilsoqbzkqomwpeumknubhqpqqgxgtybnamitpjzzkcuvrdrmcjzsosjlippecnqwssbesjigfxnosslewcrmhaotvqhayycfasnmvbeinbuovkdykfjchvyrrnhqynzmhgjtdakkmylsgdyobzzpvcpovfkkdwjkyrmtgsqhcfxcmbtcqfqgmtbwlhjxqbhpsysrravpuuphcpmavftyewcrpnzjcmzocynpalgxbjarrziyeyjjijcuogeoxszljkmvjeiymthuflxgmakcitajmowyvqutwrtkkvvcakuntbxdjbczjfbzghotahbctgaubxnkipmbseflhpjuaycpctffyshkzolxcqmhvdaazvznuxewhcxvranesvhijzuroeqedkuizgisadoicwrzrhgakthxbncpjhsimcyfimqxvycetdfockpwdlqwwdrnoermqppigjxximxywyqkkwkwaucasnwcklwixlqwzqtjnwphikojrvjqlojoaneedebegpfjftqkayyxpuhrefkhxirylecbneczhzrshwjlzhwxraxomeeoeuwwbrzdfoapyrqtfnapgjlcraqkxknxmdzaeroqxxdfiojfhriglkznbicjvtkbiogzudnhbwyjdeyedkfhspitgraihcdacjmubvnjdnwanvzuxptapmvsshxpcedeexxresraraugmyufvlgvsytyyoywyxyglliyunvyzjscfomcihbhhdjzgkgeqmmoljyharlqtkebsynkhpchvmnaqowokkeyfbjlhgpltiadcimihsynghjukazexwlekcvmbysogtwyrmdqltgjywncvryhilrykwklxawdsdirywbcxxchwjtqmwnzbxlinbmizoreloqlmmxvyinxqooabhurdtjbmzbkitfcybxcuzxetqdzyhsxyfhuumrskczbhppdebwolijwxezfhuxchgzjlkpbvdtjlhzjwvessbacxoykbhpzsyuopqeygpjhvfpsrnucvwqektefyijqwguyvhokhrclmfrcbqgfbwmptwlxxlevwijkzjoxyzpyrvpslgcluqqnudesgtmhivigoqvvauurobglszvgfmsvcpgvfsbrpxoxekanfnsgnaponjvskdbeedbvbqksmefpkkwpyxwljogqulnemkjehkygehxiazmxnccappvohjdyjuaavoashzqzzunzvuphqiejldbszupmxzwmetmhvxfoekclksdycxmqvjvjlnbwyspzxsjchyzchlqmthjaieghcbshcdatxffralzxqxpgmzchakrtlmcsxfyjeybpuumtpjbxoapbybyvxpoxxndlfgdyhpglxitnoxblqhynsftxcawajlrrhjzbbtfkabpokrwwylbtbxvmclikxhugbqhysmqrybgougphtzynthoyeoimjhhobisjrrtxzobrrwmuabfyyrfaegivpreraccxfzfsaineogdlanjsekritjeimmhkfphgmefyvxvoffccdnxkkxulnbdwkvsyenaapohridltdddlqlwhupoevrotahdplzgqczisxfrfxupyjllyujksarpsefnyxsepgeecwozmlnywvglliysvlexsdihjdtkzyfwclxbeeybggkihorqymdrozvcrrxkyvqpyjoglwscykbqbjapcovxfssfeyvyergidholownvlyjwnnqiyxpqgtzrvplpsvzqugajgqgpimsvqtdobpirwxtdrzqzsjaxnujyvteraailkwlokxwjdkkwefluplwnfstwmfftltbnfkusjuqyszirderbngyegrsuhuovgmscttvqszyrstfokbkarkgrvwasvjusgnmuncekuzcszyizehuuckqnvxahpwdduqituewlisjqvictgmjzkochdmmrzmxmaovrhxlwjrqbsxbkwlvfniuudjorfanzmzyimzdpbcgwcvjtfiyzvhkahacsornscrcfpeedptkojnpgdbgjssgdipvgwpepatqxuuoqfdesazbrlrmsosiihnteomconqelnjigyulrzoquezrgdsqudzadrtvtnajhmsssnulcuptbmjfnpoflwrpgxwdqzxzsrydggzqetiivylpjpdgocegzkdwhkmpkztsryfloalzgpfopwmgxyiibgglrwzddnbgjuicbrjenqfhqeubfbamudugybopzwflnoejothqcixgvmozhxdbijuhnfiphpdmojaepamgeirobagwtaiizwzdsszzejwxppzqpotcsbkeixjzqjusxnmuzkfbymgahibeffuzbrvjslrxerijwsauaqqqfvbwtondwdugthnzkoulgykqkgkyljgtmdgjstoklxqdkhfjolakirwodvqmxgjlxisgkvpcmfuxuwzhltxorqvwwqjqyvfwvibgswsvnjwapsionfpkpsbqzkyzrwhbjlnvovblufmaoangzuuestyedciukuagcyqmlpctlnrhcfegcviwhrlrrwqbvrodaaiqezodbnctszmenvkxnmtqsotsusrinbobtnoguodrjcebzsteucsetmcoctlejowwpucqgyoctbznssbozwcrrhfmggocefczcdpftxcksitfrheoyeohgmuueweyiqfmzlunqreoshjpndxjfihzfngbiyxtyydkpwdfcdhvxskncvyjundpsmpiiqjfkqsdxsuwzsgjbnzgdipvwrhhsppxbmvwrdcllwmlscmqxzephuwbrlumclcmzeakinlnbpxmqtxrwajwlosxibdqlyjwmhxlkbxvjqcghhyvfknporrzjfsmxwcdouzxwxbxnzhcpjnuledsnhpiuxtpetuxphvmgfpsitjzfvdivwqbgvncsgmbkjzwoseuhjzrilvqyezfagtxevzrsjbevsuqqcafsntnayzboyoznucljywgqnochzdfqjqqtclvnaegsirqrdzbyozupzhfbtypytcwxubeazndutrbclakmgszhhpgrwmzybuohhnfxoccknsuarupqacbbvhgtctzpsdtbkgthttwvjzzqsispjlivflqpijdhjpkoumlssqrfvfrvkreubstrothhdqnlbkuavqxklcigrjdvpvrzxcnsgvvacgitswrxazcpmktrghzkcbccvpefzwuvrnbpikqahizyaeufgfkqlofgfgugugejtqsulxaxsrrwrteebumbbowihewbkwvkdubthpxwpwdbvsebxgdovxzhkaypsvjandfwfuwhfqluszcqomlwsjrggbemcefttmffejosvznywcgbemosilcaqfehnmqqzbmjbxglzmsjxqdlppjpwajajjzayirgyxcprghelguxnpbhmkrraqjbyipteuiazvjhhwyoumlazsrxanpmmvxdqecoelezgvvhqunpsdlipuoyfjzgbstiswyizfennyrhfsdwsktgxjefzluidjdfyewmznagjitfbksljkblcidbmcvriykobjefrijcdmgtmtrzcwzxjvcghppymy")) + assert.Equal(t, "bpptpt", LongestDupSubstring("atrccwrcsqvdyundzudvpvtlkktrvnrrlnksmuewuppgvojypyfnqkchmwwavdhwxmnhhjdicebqlxryqbnkdbfoboineyevtrnuamzhmmcrchmwpspuccgfqvtaqyitfdrmfutljyovpikpotkknydgvmongkzswzfhjkhphixffsahrecazodlwgstphmdtdmstdysedeuxvhumnnnlmmxzyobckbhfezjibjvqnvesfimfairdvqxylaeiscszgrpmfqabnskigizdtamkdqcxswwwwmbisfdkuwrqsucmskvxjucjvxbfsvwompwutjxexxttiugbxutgztpuytyxojsoihfjhojytfuuwfvgwsiflltcmtufktedeevmbmsuloiieozeqztpdgjdpgxklpujfasojvwwohbdkbdyhsngmnlsneafwjgkpkhuyenmmpgsslmziqptdllckhubqjtpllmwwfydveksaxxxvzeflkzfgncubgmdovzhyjbzoezccqkziwqvxibjgaziiiufgrcikqfqntxkxpmezrziqqpiszfrpzohhohzftpmoxeverikacxxaxiubpwtlmmnvimoagqimyyzanzphvawzivfhyeiinoqekufwpcuifunyyrlcfmicgyzjjqqbvnathrzdqswmbpekvfzuwlhvmlyldgsxftvcrjnsmwaxgcvrowhjnoaxyzsdvhnuqnyvspgkxsqqyqfimrqjtgsexvqcqshthiovaulwbaatemveotnwjyttqbapedujhwutktisxywpnbemnhwribsmcdegimlbuwnsblzpkoyewdvbmvjozhzblnhgjpobochivikutkifjahwgsmwyveywmnmopkebspdcpjrvymymwsychdnqlcsqingdlgavtnstdpsqmfumqldjpinxvwwgtlbubpweckpshpdffeatyjkwgxzbfrhgcfrhutwbqyolvjkvstmlpeygkermtibjsyagjoxthwupswkosnynlklokbsrpawwdlpvpdssxldcyhgmcdqngbampbnrfxniuojrqqvkhvyhjixymdplubtzsxnqygjjygpxkbtwjyrzglkqvntzjqkqwqlikgyvxqmnzpjlbapfodhexnovkkcpzibmoendqgggyrvuecqmngvtpgnafulmxbosgwbfiqffbvqbrmhqdwlqfxvjiwwpcdbbwwyweupfwkgjxzcaafphrzgtfakyltebqtokobiirknwrrmmcuwxlyxghnfuzgkffytqnubnxbnnxyyfpqkxlhphzmfgrnmginwopprudgbgdestosrfmrdjlchadgsymqjkrfksbnionnulbmwidesqrztzlixnjlkofmxpkqqjjhzctxiezsmrhvikuenhpbczqkfvyxuzkahrrydpxbdeqpbhbgziyusvcjsrxsazszhwfbtoubuolbcnmulohurzarsnchrsmxzrpnxqennfwwsydkjezlyezinnrclhydjyzwandhmaqhnlnwkjzpqwqrqofjqwexkmwyrtfogzrdwvhhenrsiljbdwseprmnpagshpsvzapxtcbbfqknbedweigokbhojjodqqcrqlfxkpqdbaqahsbfzdjzacgrvubjaymaghwohaunkfobbcmavuxpbhzhwzrrmilbuoqwtahlplrntuxzrdbedpldqfaqcbeunmrcexoipnyusfdqgwniyuyfscwcitngfvgsgbpptptqibvszmzzdoxptgfeghwhmxzppwoxxqxoskgftsnloajalhvhokyuysjojawkannhdqlkczztrspnvfedqgzxsgllwduyfpnrpwfvkyenweiropzkqshzlgnnepdtnjeslqnheeqpjlseowtuksbkyvdhzjgdypivcboorfuzklhetdgpkkpfoiysomsflofwnnbnweqmjsnofsairqeplwqgrwzdfkrjzwhbcapzuwpaullwirctghwyerwwnslqfudsnbfoyieqxojbzvfavpcweyiazlsmprtqbfqpjmnotrpnuvwxxtxyjcjsmmfxqqdcytxjdvtnsmumyebncgfdgftgulqiygedonijqvkbzzjsspmgzuuwamzwzualrdjmfxbuluidgjndbhtyitknbpvhqnsisncaoscvquolephwlauwhmyixuotvjbsqqninhgmmhdqjfahvqpftgznvmsvwfcjvvkdthzddzeajylhztrocxzqqkgsbtixrwlemgvdmclbubwgppdmijbwcffjtblwoskbyvxjtlnyzfybnglmwjzybvqbldwigeppxgtghdcnslomdkifmlnpujrhihimhchyxeelmkhdveycrccduohadrypnpspylzpgspzuldsawfwjzzqrimxuounkmoxdblpuyaefpgputbamawextpamfkluthobmxzttmpuxyiwxigrhfwrnhdxavfaxrkobujotafcebdogbjxzaixelgumawseakauqaztdrxqxybpudohcywhbmhesvtzhwapcrjozbbbnlagmhbepkivsgnkflcygxykqenkvkzyxnbzjwhtrzltwgvgvtqqclmcptgpddshywokpndrqgojznqygbeyvqmxiuvuxtfgmymhhargcmrmnvplkbekjexbdnqkhnwtrkcakjnvsdgijxiklgnpbucmjdbtdxwcnrpychtkqdoljbsoxwobuwdsirwkcuwurqzdnrmkvfgdscpjbrqchgzaeraijewysaksycobbfhigywuxijmrixhhvpvqeykaictbewcwmqaslrffundlkitdamwcgmutuzszhhptakbmdsqtmmcivhrvucuwttqcpjpihzuuykjjovmxtbdrglprrboevnpdmleiqeblriswweyrqsgofcmhvmjdtivrbczgusgioljveczlculpnkjeabkmmyfvprbjahbhdruwqkwqyrdyizhwonhzrntlbwntguyudolxbcbbwnzidggwdxntmsmtepzmvpmdkyyapurrunhozamznkykxlupwxogsauidleqeshmbflwgbaiuyyigapeyuqogklgdtvmgwknhuwpyyvmomlfzfvtkmgtiocabszraxajmicfutlsybifpplifhsnnpfbiaqlpdpolmcdzzqapdlizmrionqwtuvdqazzpajzqraahpjrkjqncnrhghhckmkgnxmktszulkdnrbkuallkuqhfezwdvilyxiheljpvnsspzcxylrzteytvjkvkwgvksssaphpojbmmfdieivteaoynbvnrlggfcdibzbkqhzrgsxnqycwfqpheahkdnkkqyaxboibejwdyhhrrsuchlltutbdxuqgjempnmkllznjlarpzvsoxcbihwthhkypxmzycjdiuxsjbwdwuibgummvrrbdclhqkpeuudgggswztouetiwiauxufbshnzkquosytbmpwhfvqzfugszeezqmezkqcaffzchcsachihwqcugtwqjmpjfsfnquaqmssnqatrbelfwqarcbpbbtxwlkyrsyywylkzqghhwjkpingjunmfwhtweozxckhjexzqlaqvaacuxvmqexjprbkpbpevtbjnvzkcejqhbilkrmgziwjtkhnjfctfglipefnzjmfwqskkmojmxwfhlmbseqfaauziaxhpfiwnvfwkznhuegpuqxgfayqplnichxciitrxgdujumggfspyyaswablacynysjlhexdjkcaiirehdxnaaeiwohlayfgyxmtajacuduujpaqqppkzssmvsnsjsticxkdzukupmthuzhidvyiuwnrovdavjuiqythktilsznzrebseicetmwsajnfobavwfcrlnelgmgbdhsfpgifceozkbejlyekhvsxonpyqvrisngnvujeihiidoxqqeivmfkavixomrtpkreepxuydfdbqtdwfphasqavqtvtqdqvnwymroimhoyhpnchybspnfripffmjuwcdrtptehikvayvqrrnysuaqmxiheepqanawsqkclpgyksydmumvqmqnknwemlgmntyoyfzesoyzubjvvsmgdxldkwyqrpetxphpgmhsvttnzjebhflrpsmmtgctpvcrktuvceowheketnqichhxoqzjrvcysxqsrugyruvxkrlbcbmpkbeubaxmsgwdpnvbqtgckipvorqtxatumwveulssxfzxinsundovsmuysdzjhkehazswloqishrsapagsvkrgfbwsopnvoenyemdbbdqkacaamceipqauwafxaktapymlgcqbbxlblhofbkuoxzvzxlgsurnrqunhibwbnccvbninxcmpkylfplwhymxixbtsgvjzxwavfmjmmgwyczoswteeviqxnmslpjrloyotsxsnzoauaideuqpbbyonucbkuyjwemadadneurkubcbeqvypabzymevigqwfyickqxqzenuxvvesxtuhfddmfowusvawgvlvclzyvmfkkdzvsvqszpdcddblherhorweugqicxjmsbptbghfuozxnrkepkdkkiqvuosczjotxrqinrmbfytakgcierknndthpinpponyyuwuavqwrdjgxnrxxnkkundhqezufjmpwrszsmxbgxcmrgzabisiqfkxcmlsiwtzvxmlmwoksgtzxndnkdkceqdswfueoceuecnionvyspqlkifchxsofugnzjxhcwsczaqvuederxcsksjkgzkaaruxueczckblgmkjyjsynbhbalibdnhcdxstpifcgeltinuwkvhujjixdktarzgfmdxeysentrbywyxguoovahccemzhysfobspvivfelzcoqlkxlpnrtotncwpblpotxnqyxdmpujaqvsivexkvhexwucokrfbzwnxenedqyatdrveyzivsfxuyjmaomtppulgqtfngxmwvginhrgzuoehsnmjfsbxiaeupevtupnbxhhqvdoetsbvfgqburokywlfncbvkbdhxcvufsyseywjyaicygvwhtxbhtbauujtkfglgfwqvavvvwrjuctxmvaicieeoiliztxqwalqgbywljnzhnedxthnrtsiwowekorqotofmmjzwtoafftqnxbpuyjlmwrazqbgxxeggsnqzpneggowppcxaamtlptvhxxfmwwjaunnftyjwysibghexnvxcsocgoidctmcvckezxmyhvkmvokhwdtyrkpvsmlfhmvdmxdbqxaoubylfgvzqltjpvjdmzhsaqfoihevxfozxannlinlbxcnxajazbltjehdqugtgyusqryznvepdckcdiwrgwgktzqnzzrilomwfrfzxrjjodxqnaxfamxzauearvvhbragpmxcusqfhytslkvxonmhlulafcfupqosxyjiiqjugvmaozrnjllfwbpsklbdmlmnicfcjkdvdlfznjbeenpcaeapeepthehdlkbqjqqoxkoseqabcpxaitcxhnkxbaqfwjxmixbrxyqierfdjcocbznkxezxaleqpcrhgnioeccyccndmansftgxxmjrzrhyvsfjgntawebgeocqkvpgflrzkahglmrdcxcphspxrepxyctgqgwwvarylaecomvdkebjvctchymrwgqllaqqydbvavavykfkymuebbcmyssdrdguymoxlrcdzeacbxdlfcsdxlhltcpluwxdjzaigtmlsdnsskomjvqkeauldygboagierhertwvnocsnnuvyzbaxnsipfotqkzbgmjxznxbpyfomrlfnmyfukuppjeveqpngnofjjefznxyxrrjevshyslchukxmvzzicbvuqzaalxyjsjhbcqmtxwbrknypcohiqxxghvznyimdpsbfhrwuuxkbzvaapiyrwejnixvelhfupsjbgtbiqbyitxjwpvhyfcsbcgeqxahxocqeznsusntysxosmpqprjquvqaztntrjcmxtjidvkrdfukrwxddpmtdupmiquqozfxaktmytvjfdhvhbfxgghtlypjqnddbaywwwnptocojefmwhjpwvyqxpawoxghrwxciigphocamllaviexzronmainpkmitzzlsbgfxqpfftapyqjxtpqgodxdjalujeibgptwvcoypxkltnalclpauxijrrhpkcdmlmknehnhwwrxijymklxzrqhhbhfufksfxlsqtxwcsdwyfcqtmbagcvhugibrxyztzdbuxkgtrlzmlhahbmjnqqiapeuulktleflisdogzizypdxongivjzdogjybrejzcxgylmcsfyezwkkktnphvraivqefbubgedhdogsepgjcukjylzlzrokxwucuswvhjofrugvameerdbsajeovjrbqmeugfqjqtuqetxknovoriobuvnmcbsczurxidhfttxhebkliyzxdmdjavcobpvfnzjquqpzamryndfhgbeyqhcdffnyjjulqowfhsqqjrbvwxfpbfdymodxpvruhsvfidrumzthynusaywayoucktcxdxicydmnqmissjeejpicqwezcoqmxfdvgurwawoxxbbwlddzthpnbbntedzbmzyubpuagpvtgqgmyfnsvppjdoshrwbtqjpcxqnoemjdcruuozybmkmoekdxhcphpnhhlqjdtqdglalqdgykpoxajdbpxjiyxsgmknwknmocbrapmadcpnfkpzwodvobaunrmdcpychmqmfqxhwdbhiebrtdmomybpsqtfxwtxspjgvhkfdrmygzxcypinfshrttpoljqpldjmxxifpjkazfrnaqbctbranesuqdajmqhhnndcgtskeccggmtoaoiopqagnntijtebcrejqtlpspczmfkbpxvzkwsrjlxztoowxqbgdctkopezwnifxgdmjkhazydfmpaegpiiqsrntmbhqvjsyoufrjxjegxpwcnihfywddzzmestughaekkymhmurduvsckpgriznnglnxkfzysrcntlawetqnrofnepradwnkuhgaqqaukdljdwszxapesrlfjhurqfmwoyphsrawpgiastttcvwugnqfauvcjrulirfteppsobhbcilzxdbowezdpabrdujnjdgbhratgbyitvfchtjczykuwtdfgjdzdruwlhozixkbglvucdilqnmlcxezasdsfbngifpfikrxzcsljnaobomwixrsntvysdngqtyakbmrsapsmjbwbllymzucsxvmrxirdinrkivdnmjqeirmfgfjsheegbrcvqnkhauirjihtrdordvhmxfbbohnpihshtkbjluwrqyirnhxedjmlpkctqxdyeulyodydccexradoraskezjchodcgrdnqqfjwgixdsillpyhbclnzbnhgkkkvjyhayeafthqjkynzxttrcszrtytyulzzqdvbgrcozlmvfuiyaenuwtgypinoixzperqqfffwimavwiutvzhlogohcqwnzzbhljgnbkwggmhuzaukfnhqargxkelmrdjnpaqeqqkzgsqvwbzngtdhvsrzrersevxuyzxfbmqvymyjxpkhkmvphrsaxuuwickgulmndcotncmzfremburoxtmfedycmzuthmxztdjjpvsqyofmbalkepjqxnpjrdwaihbibtpgoyplemfojodztwtbglbllsablbnyrxcrdnsgsgtvnkxlvwzyguuurjexhkgbhnmcjvdydgoibbwrdsrhonvccmaiwibhyuhbqefzhpxmauavrwejubwwijklswexutrdvtdhjunaacpqbuimszeposhqhmloempxhtzfgitenvshilmtmafnknnolhnsxyudwcdlrfgqiskpsvtmivrfnucitrilveqcsahhbnjmawbntjoauawunysmmnmylnxpzyazgvfspjceeksbxxzcxmtlcyixmgnkpygkmqwgfmnxnxwjmtjevjrjaujjyimokzrwqgnlcmhpdxjbtkomjwfyzmngdobxheeylssilycebfzkchoaxwcmhirqeadvhlvltkfllpnefgjmgrdkclnjopzzsmfbyylojyumvxtgeltkewnhzcwloklyjvktrcxrhboyosbuaxdqfcyvimbzpawcwhisskivrmpstovfkeyadcvxiayahlcswarjmkmcqioppkcpdwdazzhejkixadedwgilymiychlrnrpwydzendosahstqcqmzrvzcfywtjtewixvrvgtccfrexognoipjvwsqonvmxzoebsdnfvoeiboeeapryuhaddubeammqnggynkvrwodhwbzlrcpucofikjddyvpxhostvuguabohanphkcnwhukxeuidkmkbzsfwiyuaoifdtnlzjhlxinuujpkvoatjeoczllsohmuvsgqyumyasruiqqeatsaobwdhmpyhhqtjvdyicrtrbdkdrhoacaffebvmuqnppngwdevzhuvorbolrjwrjlgafupzeyetsgflrtlejyjncdqeeoecylszxzzlbyussyaflbwdcfgtuajooxkgxjhsmtalsvznerjsdxhzjovstbxgzeqkklsplfndvgjidayjhqtlfvpdbdsntoexmggmeeumaxqxhlmgdumqlbfgtmnpdsadcvxpmtflazcsxvuiauvjqspoeupukdwivnjpahugldhjalidjoigucksylhytoratfqrosyeggxllybwsexzkidallsdgynwdsijjankmgrpoalgujbtmmgfirxqulejxmkzqqnjwsrfophrwestceuqkqjhcxmjhfrcdpohuyoilwfrjlyvnirrsollfpfpkojtpvxtmssvbmusvjbuaveqnlaesfmhqbjcrojvwbgdzpwaqywqqmbihtbngriwygewjygwgwlqxuqfzfplewuzfcfqmptcxofewqusmbhqclqfcbifmqkfotrytxqsmdfrgvnqjxuphdeundghdjdyrhwszcyqdtfmdmkxxdmsytwrfpxcepketsddqlqdqxrdhyihbgdsaxzbxxbivancvatunqdlgfntxqaxlvlrdxxyrfwtefacbmyfwysnuqshddutwfwapsfcoqtvjrvxhbseogkllxdkqxlqmymbiahbbftkvgkoklplhkosloemmdcrnerixgjtkujzueuukpyigqzqkbnamjxurefdocrjzsvyhlctkemllhdhzzixaixkptattfqwdgylraayhtsrkqtooirhflfkleuzobxmkwslllrptrdfzjiokpjbaqvwfaacfyahstuwwhyyqifeavpzwnkeuxhdiwatvrcsjopnlxnbuguifriavyycgeailibqbjevrizbyymctqxghbchsninritmibjjegmtbsmsofmaqfxufzwkjabcvasaycnlvlcnquwdzjcavvwrscksysuupiffymjyfkvobllgxzvjgtbpmxyvuyuaielyxldzeevyrdcjqpyvwihstthgbxiyxeymqyjrrpigcfkdqezfetnjqrnqayqbpbvkbiuonhyurtyceztvkoerukukezlmuqcxucopxqtbezobktlmbmuykbdkwilpniixqhrkwaaxoooueezznecytwvryhhmzuhhppbmvlgvjwwxohxjcxkbbdszocbpuvswkyebffiayiaxybwsvcnvsjgqfimyoejdukxjzrtneksmzyhrsuoetfjywyqbjdytjzorzlrqirorntdrtfrvfmmjurpbdpmqwntcexqgujpieyezexukvyqlgomqpixpvaweoazpasuhmetvhhbbtytcdnprhlzqyyseuhvzdcobkqtseutchbniqmpqbawzekcbvbelnqeygwdkmncnujppctfcanbvynxxibpdnxslkmlfwxhawxpzfbxqonqhwdvpwyggxzpgqmgudhzoxnimgsxmmgectfvcxuexxlbpyvlrjhanixwglswwmnxanjmtrtcroshmotkhtqsasegoaazysnnybmpjkueekyxxrttzgmdzjxvrhurxboesrdkquxmarspjcroltxfejlbefxazotypecjpvysvxkiowodwdgmaclhazrqvnmdfhxthssccdafjptephevbrgcueeicxtjgtrmxlmuwguaoffaukxnfhebackeczcdrdrvxdfzyywyustzdfirowzsgjmqksnozjvutcfuvpzzjasmcexjrkrsqotzzkbvhpfkoiqjdlrswqotjzeufneholnylpzfbhhkbgyzqcqilnwtszymaskfvpnadzhcdcrlthyqhncxbqxnzvhwliurfqkztlmbaznqetssbiyfiwjnpabusrgkxbbtdihegzwtllmvddhprkzmcyimoocgrisztnjhvvaequyvrnulbumlsqnufzoblewvdsxmgsvrudfyykyagsjmzwhromortiszajsmgmdghnakufrkmwstjdfhcdngmjudydziwasqzxpkgfiofzvffxzxqzcdxamtzrnqqymycntsvosmeoqkqlbnxcjwuhghlcfmqwxdnjygqgmxmwfqiofpnhjrhgcpwezxmwdmljvetzfdwbuwmysdzbhqozvoswfdmbxzhgfkmfpuuoytvxthuzgyhgwjxytvyfccygqykdesjgshenhdaufkuztpdcuzmxiszztqgcfogsslfjvkwajijehmivamzztjlwgrxlfuquxmbptvblpoytuuichalvvcukkxpgofxwpnhdjzvoopelgkhkskjgqsubagzaacpablajznipwtnqrpmarezlnpodmqguhxzpgjskjvnfwnwsswlaogehdqpwtdlzocepohodfobwuhwarsjyxqnghtwpxkyutplhkaohgkuypzccuccofwgimknnenmovnnfgcpctiatshhzfqqxrtgxxjmscddxyyjizdbazrrorwsnvoheapnnwuovjmreslmvalhdfasohzycsiaqxairndxbsdkssuvkvghdafwsaumwemerepzxdzpynqxtffrgpaqzauirqvfzxwfhxibecqtbtvoccwgeiuzfqtgoxwzvcugmyrmdwryjodddyvvasxiqavmgqdbfbxlyuusftzvwjxqlvjhylrxkcocphjtoclqqigzeaelzsieltodvywnhgsemyaembzypxlgofamzdlsvckakislnomzzeuiinfmmvjzsbumldusbfwvcdfrjpeychlkiydnkjhnixsfzfuqhuoeminybgjqetjjewesyysaagoxzvdclsjaucnfaheyeuhsetfgifabgirxfdnscamxxnpfnwdorooyidssistnxqvgonklyfpzkeahoeekkhuvrqctmmuorqjofalvhtwdxlelsfxrvheasshxgavrgpylqtwrseoyrlwldfesibblddvtvykopuqbplzswmohyjihmdzbqcyqftuavqjidpssmhjxxyufodwausmqxaengynsygulkgcoklqmrbcyfccdmqhfmpvvltnhqyxouxnbxngvpcikxcxrosbqkcqsaagrialvfytlzszcuxrrlveizmjxybvayrduyeneiuxjkdksbilydsfmfycsuahgzckucxdaxpqnpxgfsbpossfqktqnrltfkbwtzrorzuxqxhxkymshmzqfpnvjantufffldmnihhndbcrycwxczfznzemopwfqzfeqknzradnxxsgqfgpqlpobwnyslswpuuzwntxlaqebqcdjgctyojewerqprmqhrmznarblupejivsfgopusjjrjdwfaaggzidpkggpqfqfbqnsquiuadapepiuubkdddtbqquycbhzdglfdehyrvjguzlrsqculqwdechlbhybmwmhdbfyqrfpktcnqruuuoatonzipvtelbojcjmxifreylgfrcxpcfgnijmmkxfklpvursyfihkavtiinbqegpnmtahkijxvpxwzvfktalwodiowexchzcjuwymwsaqvcwbkcjcqzzqdlmrucfhqbnfvcazymezqbjivugrzprovkilcwegqanskaywbyjhjdisggscskqwbfxoolunzsavvbwgjcgmcngrnvswdurbhgdwxcgccjaiygsbilxziryrnneeksamjjemblsbkvskehduxrnasklcckmskodlvzrdhkqeugcjfnzdzgwwemzsjcflffukqcwbuisnhuykxlfolztpoasiqwmxkebgcazahuafutketjqzzojgktjhyuzbkpvqevjadznpfnsyfsnfqbizdnackirebnepigrppoykdivdowvuunxcljeceyzokutauygvfbktpicjbnvkzamcgedcsiamcgrenccwgpennefjirpaelzzbrnvwsxaauutpcotuufyxhhyeggozhupphvqfawayyoouddwghrskmiyqpjvzktzfwqzmmxwrcsisdutpvfijbdzmgswvxltyjeozdsmkdthndkxfnalkocpdqgjbotaxmmtlcqvpkvjfhhbfbzqnwraelyhtutehuxgsptbmasnvfzgjxylpqdoxqnkrbxrrpsqrrcuensssnfjlgylivxoypvhugokboyscuiqbodglebqiqcolwpwadsnytzvhfuvqhhtumabxszegtgiqymqjmepxixvexbvmlrdltbxojtgxdrovrndpumapgxiqkebmifdbfdyfxwkzvmxbnqcbytcdjhxmwjsnqouxloltvqgpsqwfgglkrwucngwczwfpnazgbvfpfjhnrctfwodznfrjujulkuanowrocdkuqzwectxlnugwehxigsziivxpildotmqylsbdjcdfkaxwdnuqotdpzpoxrpakoljtinapubpjlbfszyupcriwrbbxrsmrusytvzwcaetgnacsohcsfabhcugykcibdhfwzqpxsxigmbyrsmemerfzellksvcbbumaerckvjiqnciwatgxufooesiqvtaylqyrpuxcbbzmwtsaigjnunjjuyydnepjgafmddvfledywgjyxwzwejvnxtcuifdhuynozmrmvzlgfgppnscnyplnuhkywraydexicczulsxlpvpqzqqhlwjgewivebdoqzwqefrnnnpwuojpxdilcjsqrkarttuyafhsgqoapslypcjkfuaivwqijcxrkckzvejzbszdoiatyzwvqzoinzemkionlcdrnddedzddvytqigafyfcivkcmqczwevbpkvbvlzjpgnahumewhoxmvqgfzrlpfsipbgaelbvfcrwjjsqkupentbgcmohjumsaqojemwbyacedqbacuvueiykmuuuztoqkxesbxakyfcbzymmyuhompugarsswdsoveoxyijibdhkeyvmvummavzmcalcmviomyeqaefsyehpyfivgbvkjnndhhxxtdzqrivtuwapibjmawxxfsowudxtygnligoewzluqntktxqfzjgwrxsjsryfbrcpabjunpuzvpiahqemiafqcrqczvstwxdugyejnwjrybkygsbgjriabmnhtckpjgbxcfhuswjvlopysnrrhdaiszldsrkppguyodnatrspdudnnvfxmiascivacwjldjnmojhhyunqlwbraljyiuxfirznpyinbjfcbaesrkbxunqfvlbdrztnpaikvigukxxvivchrdxigyiquusswqylpyhaahyxkccjdvgtapgakbyellmpjbbtlfctqiaighzcajvbwzndgjzvfonacthmlcwqrijuelnqwuoaigsbjpkrkrzziswscgyaertqujxseekkblpzbgiabfxymkxtobumxjhdqlnfdcerkespcqdjhncpcecsnnkkttabzecjibnyebhzklnmxrvcqizmxwgbtxgtkgociikpnoqzhbrcxvctsazykyznejybscchpmllvjynsnccaxrayaoebjrytokrrrkdlcsjigvigzkehkftodfhlhmwlmyaikergpiipmjhyeozlqjhidgnvjzwtztwrmiwxbmqiqscwnxouzskvamovaiankzixqgxrecjlfmfrkwsspgrflbnhtemsapfbtzommhjbhlojppnkmpqbfpfmvpvbnceutzojdpimbugutvlgiulhxxtmeiirzavtxgdmanuevxcnwnusrbxrpwjbmydpntbazcymjjyjxbzgaennoeqqsxdoazddzanwonmsyxqqzofsxgbbmihauikkevisxjkqazagxyzudwyxkbttakdapzdhzngbvzzoqireerfcknurofwamfqddngkjulhzuezgfvrxbcabkoqefuijahruywvqnrembrtgqnecdukdhwzrjscvelmznmpcbvkgjsxqihcwtvnsxxmmohyxuniawacsqpjzlwpofziswqgcqdfdybgxfnxhxvhsomjfngrckqjqghkypbgtguupqzmktjleqtfgrouotmgssrqxjwicgypidxuudjebsmzwlcclzsnhfmhxigazkxegsgsivoxiiyyybxionusfayayzizbimmqpmmpbcqomwqjskmqmwgwbqhqgonrvizqdqiogypoljbgwtunnwnvehmuaqgzibgbpxzebxqhyptcdxqvsyzemrghbbhywumxgswdvgoopvshcxybqytbogruzaantwwshmujbsrscekfevscjhwcjqxfshevtvfqjqxkduhlowbzgkxfhocavhqvzltxgezlipaxppkrkeeeugicrivymbteedzmfdrcqzatwnnrzxrlbwgfmupqesmuvbvrmcmzhbcuezgmowyylrseicknlnrxshwscfpiivorxczaagsbtjqpacuerajotgekdszzxyheqjqkfbfjepxdmrtmwxuglgcisjzdcremfcmfenzusukooqfikywrinqdqfcqypvvsaleflywxxdfzargsyxkivbpbousufcbcvsncfsazqwjizbbliowhytqfmtqvgtfjgwlonifjdalanawkxckwfswqzrolezxrwtpzomlupjdoubscnapjhjejxfkqhrnphirzhhhaspybaqmypctagshbllybscfnpziniqtglalpyvfmhpiotcqmmuoyedzmvrqnwfigkauyufiafxyuognyxusalldhssujjeqgensxsbhpgdffbrvpkfnpxjqikcrflujlbyaxnjmovhdrwzzbsykdcxiqjqdrlgixeavtkaqemcmrhnctqkedlzlvgfwgwhfqzzhxbezywsfdwtwhgfszfiexgypwtklmmyceqrbewfwbrebaxpmiwrieejdigesbrvbcwgjlcuzkdrsseusesteyrcqyypudjonspvixeztuadqugbxifimdssgxejoxqwgshdtoknzzveyrpgdnabcqqlirpyyamxbsqhdhjrhxpqrprzihweojstgvjwhaqccfligbqubmojasgmdetarhsmnuncuufejlalyxnxhsmntzjtvvybdjnxmcwjdbdtgkhinrsinadgjaezykyikgieigkjioxjkndnlcgpdzicdvzbtjejxbcbmjtplccwuxdvwnvnhjncqsradyyqypkjtkbtxvuonyblqzmsakfousbrnayhbucaootlemdelmftfitrkzedvqltciomoecchvsoycyzoaxgmhwxqobeqwicyymqiibhbntsugdfbwophekdqvuanrsuumyshnrnxnlaukkjxobbpnsrvwaeamfhliesynbvbdcabmvacimfyhhfeealhkfldxwntfyurlfvlwxhouhrghunyayafbnyqqdwioyrfaiyjlljfyndogdwswarevgiwojyaexrnyxyrshvybsbbmjayufhepfeyusrimqalaxijqpgjrvqyxiobowryrdiuorkzqloikijrusjpsomowhiazbnymmbvwkiszuuonqkljshpxekokkerpjzmmuzzmavroybuqtptwvwmhdwpbjmlscranxwosyvjwfatluihyfjlaolvicmglplegyhkfkxnxmnxfehjjlxtlfarfvryhqeuauzwhgegqyoqzjxdueinpalbudjtrbmnwaqzyvspjwxjlhdfbhsflselnjywvgmfjuezyfgntxnokgefycakfqwnheajyfgiwunaaedcwkbnmcnynlaxwzbkajwcunxwmwwcmvdvaadisqmwxtdqbvxphrfdhvkvdkoulvjpuhlpntrjapkuuvjymdyauddmgftgjqfzcsdkflxymorgxcqfichcaedcemcpopkywqhacfljetfxvwozzqyglvkzgboorjoallvaouohqrmeruktupbksfgpgfevsliotortmsbgukdhedndwspnkovdrlagwykommpvavnaxhvvzskhgwpxdfxiidcgszkmpbngtfxxzsktipqfhtdrwtybzgfyqiiokogqxlsxnqftcohkhomzprjsaycamdgghcumfrirjpelmnvecuekilxpwrlqqeysowrsmyznkdduxomvgrqleuldritnthqwzfshrteiygeuushhhllszxcjkawqrcbrtaaahchcncvdiizzzhxliixfjdbylivbbwjrwuljieherpeozprbblrqorxnhdythidaetjjgezjgogmipymhkaudzqmsahiybekyudvwgxoupiosaqnogvwwidneunconfiltpmqfipluoozxjvydgunsifryyesdrphxcyuxnerqdzdtmkzvasjxucakibfzkywwlqkqnpdtsavpqtxdncffwthdtrhbbmaxnudbqsckgozkmlyjgbhekmcwzbkvudtdxfwxxcaijiohhzsspxxlhkckadjmxykymvgjqwiduohecqhhzndoqabrxsljkkghcnjasnnwegesstcalvlnoiozqcmwppdwlptnhmyxoesetvnfiudboejlfbxmabkptttkpeiyxpyyvmqfujkiqnxzmyeupgdqmrxdbowngxlexrqqmakuttamvktllheziikdtzlfsgnnaurzjgxhzyikabxbvzetgiflgvfqhhsjuwwfpsosievtnobmfqrnseccvwxuhpkjhaixqilrnjhacltduwoxzqtkttanopygkscvcyujhfhrthcoyavualxztrmqyrttngzswiwdboejqrfgayobqwtdpsyteofbhkehenitlyjvralsxersgjumucycrfjscgflqrkejywxkmifymrciiosyydppuhdtviyyecizaidagviojynprngnmbenfovlrmediubpemdluynxdibykdmysgxvyrtyppqojawxpabxtncaaspgddynphxbmqgjhtadhgddajdvhxuuyfaxqhtefkfcshaaznewgzxfzvweadxjzxctcmtdabxrtslxpnelnfpazntsncrdvpqpmrosszjbrwmwrbdefxkvpojtoqzgcoenbjwqfbjulxitnvuhinmytrdfbabgwdmvnquygfcduzbjdehkepfgxxadpgdtlqqjclffpypwcgulydjwapaifzmtteeturiikhkujtsgdzrxcwbynlhoibfwfkqwrumeibzphbznuhfsbzksajqkbygwxhsrfcqgexrvoxittostooqynooxzhsvbwnomsebgkmsansmkdugmbhmknlyzgkpovczcdwowpaktjyamkemqdxaxbdieefyerkthpxxwxaglcujvalcgprcedeaclckwqxqumbsudtmzhcvtmnjbfbtmfkqiqcxcxsszlxbhnjojqldcxdujrrwrbmhstcgxgeqebszspjidfdpkzrqlyvlurvmptqpcfsdpjhgimibmruxswwmiayupjmnystvtkwtjezaxvzelvdfzteupostaeptobtrfxhemhsyzsjtweyiiuusbwbcibgbycgcbagjoobhrkatpjwoohwlxcjzxrblozjnsicgdtteijwlmxwysfwjlnpujqzgevsqxavpdthailfizpkwqlachbnwhzndvorxivhbtkywqenpgznhjrwcrjnindalpwlzpnlcuusgvzyztzpmhgpgutqrvgcrvvjdsuqepupsgfcoelptawwntpcbvkqvfgxkxizgnzxfenonjnuygkpyeiczmboqkhqwlhedjugboeivkrbaxwnpprqiulnhdhlwiuwrrboziobfxsjdtbksyblanedcwtnkxfhivyspuclfkobbgqblwbahbpptptwioixaakhnnioitkkesejmugnmxlmospftfgicgnykhmuuipyuvxzcuqxvohmcimzkbkhaecchuourwsupdonfsrmumrbbiywkehtywxpuszfdvidzpsjfgyanqiqnyavxcylyyjuhboeoankmsqjtmezfizpoqxuagnqsfkmqwwgnazmhlwmxhnqeaayckugbpiavtzqcoixvabrzboaugzjgyzozvxvswsglwmqipxwiaqtocggawhjupdidzrszipukifjqddqbjrtshjofuuoptnnkkcbcqhyejjfmqwjjlnymjmngxmvzmrnoodltzjflsuqjkskuvhzquqqtywtwqgdndkdbpkgpbajcpakyukrrcpxqkhfozwzhvqnkkjovfdflnuenawnfehxqsevksrpodmpidjsaqdhqccwfwjfzeaglozsnoouizosigyxrcbuyfdrawiebezlyspfkjyqrbwgpuvosnbfpdfourfiewanxkkvoxqssqutwiaygttavagkzhnquqlwxwxcjacxjaevazqchdtxfkljdtnzplukvetetleyhjddycydodlwdvrpispifajnptpjnrwflrqncpklybiyrkjzdmzwukqfkgdxfgtinvulzewmtxedgsnrzoqfkppbzyzfvnjwiaohdognyjvpndvrjkrhecuteumacwcrtgmonjfnkiykltnzblycuyxhxbpawkizgaucvejzkmuhgckjaxirjaravudwtsqussivnrpnatvkflkfttthtyptnyzizurwaicmridcnizftdecqhtzjfiqtfcbdkxzqewshoxtyavvvxoaxtitcrcxzbyuzryahnutgtqymffbblporkofxjmwjbgpmrrmvrekdiyjcwduzjcxnvkooobweuzactterhaezkwsdfriojztkidswktdpxngvalarwzkslputehnfcfysmklcemvumbvlafffbtwyqbvntvcglajuclfglvuirvktxwdghypqdbimvwdmytptzjyhyzjipnmhosidwjjiynigtwaomkmhlnbtiphtzrvpztfaimjrpririlcrqqiqyroyjdupytqmgvfrqpuxxtssynnhxbzhwzinzupbuiehlqxsmkjpeisfgasvkjaprelqhegkglhcyzqqqjopxxabuoqvpwvseqennneaygswzgntchlalaplnvvdgsmbgghisflinatppioowgsqnlehtewibbxppvejgnxdhysftkpwjbxjbifeyauahzvonxqsmyxuxmrjhxddzdjsknvabnpiwldodajobiugtqiyzktdshgyqixwpgovonrofegvrhxetbgkgmjwpfcfdomofpwbxycawdslzfoqlhrqungeelbabgjeogzhtomlxtjtptpoqrzwmtmashjlkuvuglmtzjuuvuflftndjodhrildnetcycrhqrcidgeqjarbusdbwdcjsagjighsgcjftkmrijfoplhfgfrutonnwwbidcymlsqdduqqsndzpeletljlpyhdyxetmemehynqaxuerdboewnnmfjgbyekaedcemxqfmmacadrohwmudwjombinvwwrajvbpcydnvibefyfpvresgfripyshobqsempvedjijzvpkzqpuupioqivvfggcaxeqsuunvrbprisvwtfxuxlxlicpoimnuvyffidpachmvvznkjcbevryuyowjczbcoenzileqdyjkqqgpmnqemcprcnjwejluyijfsddyxsgjehjkkdedazpkdkygqkovapdyryhbtmnxnviwfwcdsuclvzjpxyvffyezfhudywxoyfcojzjwftztbrmgqobskespaneuniiqppzbjjjorhpwkesbfikiujpjwhdpbbvnqgogdqvjqdpgeyvmkuvfgpllblsawriimdhbrxndiohtmppnjmmmboidwpclkfspugtkuztwtgndwprypruweuqizpxapnadlognascxrsracaixylvdeeyuwifgxpvsiooecmoczumypezystlnwjqufiuferbvagyeifubtrdfmrfkzmimxrvreqzapdzzzthyfncbogbmpqtsjizbkiwrgaxnbmjxzfqqkddzmfrlllydxnluszniagihybvgwesqlkqplipgciscixntqkhbaqcqcfnbciwxtrxyrljlyudopzxgmepuacmnlopaiymghwaqwkwfmpfutrhrahwiudgsyludadyvnwovqrxqvmdrdlonbbgavfeoxmwdfziwfrrbaasnluqkkchaxaljmcrjhqmdgirgmzoniehhavsubvfbpmnsjhmzulnychnyxmumejyfqwtvduxthjnfbkujaunukyucamkbitpwaqdkhredkqcjyiplqwlbqyjcthbjingovbpqceesxauwlphhdooanlnfzpridepqussdycxtmiqldoicdymkhzaqqnbwchzjjsbesmjptxgvmtjmmecmfdgwkqfspvterpzagyuatdfyompbkaiieejexotcpkfgatylhrksjpijazpxbfggfdbhqzqwkwgelugydyrljhgmlreknhpadkprfrvsqsrzxuwpuvqnttaqbbumofbhvnhkecokszsgyuuwdcnlnlwrxbhoujaohdpyiewrtwrzbbfwifljzphrdsngntjleulgdcgiwwudalthgirdifhvnakeypemjhlzquvxgzgmelczylhqywfwnnhahfawthkitcxumlltvbcqrtayxanavikjwxqbzaqtysafxlbmqcwhjbgeenhqqgejkyuaytrpubqdofepwpcghntqmgxphyditcxstnqmbkywzpwcvxefbkhnajlhwnwyckdpbvwqlhtwrlkhcwazxdmmonviethmqpoxlojglyluqbchuyikitjqyblejfsfzxlpdrhpqswdnmjdpsofekevssurcoxzhfdgnvjtoxckkukyfeibfbhgkfyjueguuhkuiinqssujepaarhbugwkpndhiuuuynlzddmqtdgtwxrxzqcgxzhormdusgnrsxgaaykjsvmtlfemydbnpsenxsobunkvkgczwlbhjgpmeyayluhjiwqckglwybyubelpyqmrzjntensczogqwyoejafqtlnvosyjvrtcbcojrzchyevxnqjwdzsoolktoovalugydmgscaqjplaywbdxigqjzypwksakyzabioqoxnjbjulmxjoyzbehoomitdgmelnsjblhfuesybjhiteofzuprgewsdprmlierfpeuhbdsxsfemsjnavnwrhbmgwhpkdkgeeuvryxcdjoemlyysptnjzcwwskwvltyshemrmiblmohknkjqpettgfdcomqvwefrsiirqjaegsryysnyhtsaklqeefuwegetwdbayrrzyylovmjjmxlcakidytzejlrzmewmxjxepqbfatyfeoqqpopypskorcrzvgftiemakbutdvtrkrxlsbahuspzocztrwfzcolqizoeozquctjpnmaviurptzqvfesqpkbbdpsgruchnwulxismxeovkpaksoaolvolqtxvtscuymlycgjhyrpxleivqqkowgittdskuhtshrvejjgyysuisgmdkydeemrzcjamjhvefrrobglyuzeaimpebnvdhkspyaywwwvvvbooscrblmivaxylpvruirevjervcrabhzdtixiogtdilbnsjaetozcnvdexlcchevxktuiarjbxmcarlhqnbafonbimsuxrrsxrilgxssxqxwjymqxaiteivbqjythdadhqrdcjhbjqjifoffttotefnfpavqzzneeszpmrnjfsthcrmwfonaoodaeeufwzlvmiizmrqbyupobiuoaikymvlfmyothaygppxlwgpyuyqsjrvlcssxvqzefohawathrlxwljspjoihimzbeggpwjxgzlfsrlhgshkqczqygeslmxauhsnrkggtetubfikizrtwqgxwlxplttxvkltueamyeylfovedpopeuvbgiijynjwkmftdcngyufyihjosoxewpczmxjmiheklnidivwyneymctxamzprafusxdwhgxunakmwpqbxneakvnakurvrqowvltiiulenaqbkdccjpagbovltlqgesrgilvwwrgomehjlfcgovlrqqmhyrgrqvmculhmdeijfrojitrgeazkaminmqwirzmcshyeevjxbfyzhddvtrtybiybayaoqsczxzjkgcegxxogcxbmoiandwwybbzkjrrmdzyiirgooucldvdpxefpebmrfoefatephcfytmpivelsptjompjlpiraxtytzcnrcutxovsfeptpuohgktblkzvyvlekwwkaskvyfkgbjoerbuotghpxpibbfhfsdjggnsjutlcixbewapsgnlfjszvfintnglvmbcrweyrkyqbirhauwubvfprntiirascbxiidivuwsuvxrixanjqmvcbsighxmiysirhdwehudusxetxfndbklhrlqqlxnxlxvqeunusduztbhegqvshmtjpreifvpdpbmgnypxgtnfqyozaudvgpjjdkssptieqgzakwddssrykexgpbsnjcvpdmzavmljfzidtktxmtjknjxrvwmcfplbdudbltnidrzbpiapycblvlpmiruyiwgetvzvljugxlnmkmxtcmmmrvpofntflkivvqnrzlzzlohivpemordmjqkzizuyyzmvxexclxtwczsocnkdgnxgaxklfjwxfyvurooermispoxuhfggcaxicyzazkuxairqoovvrquvufsyzwzgasjiqmxsetiyjodbnbzzgguuxxrlzozpanmexiqhosistzheqcyornezbwxbxtsxhuejafbzekjglesnxgysstrkcymbgfstvcydcelrppbtnckpgzilndmvxvqpzgciwewompushvmaaxmhokczovczepwmtzajpjagwglqmzjqpyvhlvvkhhtddmlnfcsourwceecqtkfeionprjavncfrthbsxwmhciyksufkafmqphxnvdudzikjlntlcagoubglnhydzgrhiuoldscmtgbuflppcyakzdzpibgrdlsoxfquekmpupkheybnrdvcespnvmgaskgemyukainpewuioyfzugkrdicxpnbzvztdawloregsdnqrdbyzniuhrvpfgkfdnaelzbwptubjunozhgazxgiavkoqbyqdxveoekgtwdfoalmgekeheczfyqmoqvohwtdileftdkdoqpcojpkwwjrqlmjwfdxrpyankrwnihfuppdqnhruxpvbmapduellksdcdsxffnktfypuqseqbhrbxzwkseidvbfokbdinykyaokazgftbdnfvsnomlhmhrapjhwthowsvpswhpilcuuoqjiomrtlmlkbzvlecoglzdowlxtnnxkedvruvqbkaroiffsxwqlupupjqzqiiijfuowryokgcemsezwelqomsyryecxywpyhaoblildbjptssjpgpeaanqenqhvgpqxmezwfdjchnicfxznakxywrdphihslnydojkdceulfzxptoembquwdzuwlzsgoautifbrqkcunkfllcdptbidzobguroiwiktbjhfxmzvhrrxlwgafuzaetukutolypdiyxzcovcusklvn")) }