From 026534e3554ef6eb20ddf07d4f4a914ade45d1e0 Mon Sep 17 00:00:00 2001 From: AhmedGrati Date: Wed, 6 Sep 2023 10:03:13 +0100 Subject: [PATCH 1/2] feat: add feature file size limit Signed-off-by: AhmedGrati --- source/local/local.go | 20 +++ source/local/testdata/features.d/big_file | 197 ++++++++++++++++++++++ 2 files changed, 217 insertions(+) create mode 100644 source/local/testdata/features.d/big_file diff --git a/source/local/local.go b/source/local/local.go index 3f2529bccc..226dc8f317 100644 --- a/source/local/local.go +++ b/source/local/local.go @@ -45,6 +45,9 @@ const ExpiryTimeKey = "expiry-time" // DirectivePrefix defines the prefix of directives that should be parsed const DirectivePrefix = "# +" +// MaxFeatureFileSize defines the maximum size of a feature file size +const MaxFeatureFileSize = 64000 + // Config var ( featureFilesDir = "/etc/kubernetes/node-feature-discovery/features.d/" @@ -321,6 +324,23 @@ func getFeaturesFromFiles() (map[string]string, error) { for _, file := range files { fileName := file.Name() + + fileInfo, err := file.Info() + if err != nil { + klog.ErrorS(err, "failed to get file info", "fileName", fileName) + continue + } + + fileSize := fileInfo.Size() + if fileSize > MaxFeatureFileSize { + klog.ErrorS( + fmt.Errorf("invalid file size: %d bytes > %d bytes", fileSize, MaxFeatureFileSize), + "skipping file with invalid size", + "fileName", fileName, "fileSize", fileSize, + ) + continue + } + lines, err := getFileContent(fileName) if err != nil { klog.ErrorS(err, "failed to read file", "fileName", fileName) diff --git a/source/local/testdata/features.d/big_file b/source/local/testdata/features.d/big_file new file mode 100644 index 0000000000..ed5876670f --- /dev/null +++ b/source/local/testdata/features.d/big_file @@ -0,0 +1,197 @@ +# This feature file should be skipped as its size is 70kB which is bigger than maximum size 64kB +# +expiry-time=2080-07-28T11:22:33Z +featureKeyValid2=featureValue + +zadievpeiacqyzsriojtdohwpbrghxyfjadmrkefagehfihylpggoinxdcozhbijwaubltuijfhmmjwgsvuxeng +dmammanomqimkgubfesjnqopkoqjfrpkyyajmqgosjtqdzwpgbywohqrhhagsfzobeitbuqiynschycjfwsksabfe +wsxrjivgagsmxxtctqvefntbgunnqvnkxczpfjydftyaksssbyznxvgbwusvdahhxnkoynoxxrodmgwbawdtngwntmq +siyyezorilvsulpqcshdtvwmbegjucacbebemyfzkrlptavfskxhpojevmkrqriuwissuwqgmobjidtdakunumsmphgrh +nvwvsbnqzenpbwnsldupaqicapzcxbuiyacfvykinpckikyzggsajbdxmmlcaassugrcubopxtondapaftjtmgxonweekz +ekspgrrkcvyrfadvrylbratsgslfridnvtllqyjlgpweirfexcvmeygnddurlxjtcebvilfcqmlrbxkpwffpymimmzabvufm +ayerlwnslevwgydclfmhiwztspbdpatwbqmkumwnkkblidyjgthnyfzjmyeimfvyfxtfnndmsfjudewjvnideesahtpfsn +yovcnlckvwbwtcpkshddlvgvmgwpuqycytcqghmgfjgdnjedcbwyvaexpbksxqgdvdmwneqzplhzohqidmbhrkefiwsgywwh +poznlcyjhpxbkxlrptitazdgxxshkercpkjaekvafqqpofeuybcwjmyhvncuvyrajrzfretezttvgkfthhmmtpwjjlztsvlszr +tjaeagbxceixadodmaxewmomwqwfnefceqsjwquumquzbwfhdozmysnvemxktqgobodvnflzvnelgypwpeawtylcofufp +fxkrnhmqhowvvxnmembuhthpcrulafjlaecncgbnsgcjckpfsabmnnlhfotlwrurfselgqkbtmfxpumeylhorfuyvlxnko +ajpeszgbbtbghbsrburxswmteljpprywhuswlxeqijycbxtpkypclazeswqyadkuzfairvjhospambeaqtvwzqfqjptin +znfkxcuvzkphlbndxfpqryuhrfwauxllgmhommrbymrqigofhkhgxcsuvjyulallbpcuxeervugtrnnfdfqwcucnlpbeypa +rqqkncfhfuztcoglieoifsmggufzmioglkghttmoigmbqqmayayvryahmgpnjchseddkwclrxvtrvtpmxngtovacizxxax +ciggrzehqwoznucddhymicfqjjxigttjdopxrzakieykpnxevzttmsimifutpjxpxtarmabfbfcbiyvpywrchnhuhdtzvyqj +ajnmcdbsebifitruboldewvypeekucwnkxoqnlqeejymkfmsxliyrztgbzxqewwjnwhzrfjsnojozjcqmndixvuwhohscgl +sxjmjmbryjqqabcaxquuqdcnetcegpcvkwvanamylmuqvgrcvoprcllczvpdxyvvlldbvpigiftciopqjmckmyicxrqpbi +saehqnoocurlwkaeeuepljhrdnietimnezcyvgtjlriaqrjryqnlwgguxmjmrzqvjwryflkjtsxaxbhdgrdjeeedllqozvk +hsqafnexmkcktxjoybunqesfioknuowphjmcxirxuvshveyoseixzxiybnsugaeknknamoyofylnlrweqvgromgrocndaks +utovrdsrykffcrseiwuekyjfhvtdozztixhmnhujbytvbgcspjdbiludkqcwxbbehuborzkedokutrahozwvugxubcguov +rnlcuknpqaqxdjwvvrgtnesjqescynpxghfalbnqisihzzxaopleboecnxzdznbkrqwrefzmqfkiddryfzjhbbbnyefojqcd +bfofzawmdynnkiysosksqcvegskqzkvpjmahpawyqizvtfzezipzthiwuiijdiidphlbjhytpykvbkfysavrzctvvkreqwq +rkiziyiedjoeyqblkonvsnktneonzzyknsyqqtykdxtpgturspcwqixslypulwmipmprtflipyqufsuxrxbqnlbkfrnznos +dvbpcfajimuozxereqbkkfjzwsfezwdadjsqblvbxqqrlnyvjpfurehfuljipxilfkuuednvfruldhqnwnjmzrnhwrqyvba +wzjpkmadnvywspladjqjvamrbutxxkrcguliwijitbuialjboaaflsrywyjcyypmmjamnpsjsordjxliynufhbqischwmvn +fqxxxndfdkwejijaomookqfixorutdujlbxkayjqltbirhqepkeytlzkchmbutwqtvuecuqawwgadouedpjzjavbauovplk +qgkomjmjjfiwexeptuzjacmjkqybteahuzpjawhitqhujltistixyfoswtbbwrranxeaietbvplgsgozawlrlkunbgdxtxg +yabkiubdgjhdonoppayzdueeelzzuipldvbyjbvaqgjtzjwlgwscxdivvynjjosnxlbgxlstxxwvcpygeotuodmgkulebur +ooooelaunessmfopydikbokkwdrawefrijhcuzvagejuvplfeztopczmmvtkjaepyofyerrijkhovpluwcqdphkxgmldzcp +lxgvthsjdaqseamwvphoyegwrkuwushwkrhmcwumysxdrpqtgoqmhehswjpcjapqungkwrihlhbkngmpqudkpxzjweqityv +pxuchksxdrphwyefqmfspkgdvrnijovimslnszgrocyzzudtmuaemhxqanwrtyydeoqvruqrkxmuvkpnurybejzlzduvrma +sxalujbwltrhepaxgaazkpowchvpvpnvwhfhkdphzbxbsepjopvrazcmzvwboezhggfmgdqkzinlhusqfewbqozikllhrpu +rshytwfkyvzegffxgjapbcpfefgsglnasjabfriniyjpjspsiolrqshtacbsldukdvrmfzcvwlxznqksrzhgajnnltzofnk +cfpyrqmuyhnhmmluvxzbghinnjrteycypjnvtruzgzmlsdzwyoavelcwngqkzkiphqvrddoqjhwcoosbqvhbhqlthzbkyqq +qwjfvioryoxswphsulijcwekupydipokplptsbwavdqolfiuakwhgrsuabtzahhzmmigntoxgbnhbzbrxvoguablqlkvizs +dwfscdeuealrdfjdcylremqtukzcifksxxubkhphrdtyxfnleczvahwatofmonhnlcnrzhccioxthzzjtnorpyvdfwtdnqs +qcfklxothrxezqlaxztrevpdgdgpyxgkikdlqxhfhlgcgksfaifusedhvspjnddmgphzlvvxovvrrcjagbbzzyitjgdcipr +wmbhchbscfyrlqyceyquvbkresezaygqojstqzcwdjoevqsmgdkykwszipkylpymveesoqzxngjmacyyuvlbnjvltqyeuko +gvivpndnhnwybocsiebuloknupacxfcudnabbthxsenjpdzasnzdlfoxdegcoptutsdgferdergozzzthexbiihknvkejom +injszsakykhxlvdcwnzsdvmpspdsnksndvvrmgsfqyljigzmxkjenesksfyoxirssuzcvgkbyojwaghidzvqvalaytbxloq +olpmbqhcvdogroztrpcepzyiydqxyplbubmbtjwctvsgzbsayipxbexgzekwakqjwcniujvzrjmymqqlhqgfmjrwufsoste +nsspepwfoiaakbmanqmghznmzivafunxqrzytwwarfeilqklpclqhnvjgyttfgkggnafjyyytyqycgmoyztstvntmvshnqj +yisiwtulsjnzzwecmgxhfphiihfesrmsrkkepqpsqbkbvsmlktjtpvsuoqzmzepooouuhnllqrtqvycyrciixpylqfzxwey +ccwmmczdvtzmdgggitotatbizhwqhccbqnmoibqmyhxkvtcgywaewakwdnezdavnxmpqrerdrcpcklsczdwfrvytxbgpuad +kuwxqavsvocpgrpymuslvrxqvgnsbuugywmhdjouvqgxjajltrngqwarkdnomgcjaeodmhyeohaonbboyabewtlntcsnqtt +ufemacrwpabooxlswnsxexhyoycmwgnycatagloacniqffmamvoxstfiwriehykaqdomtncahdqpxyukdvnogrkewdeflqy +yfghyyupmigfyiwjlgwrwntjdlnfnzunujoftgbfzzruslcplhymjtskwkjzblaxhlxowkiazwnqolkfrlghbsyuknabkod +ihdupzxyvuazpilsynzkmnbgvjkqseyxgmtmszxgnuzgtntfgqgxphclvobuuvxahlwhmkhbjtlnzawrougbfssbrckkojg +ewbfqamevwzdtfbxhbddukrzqinuhovkorhrmqhprcledbhsgjwbwuhgovdobbahcufnzryvvxryqqepskbggcizdcwkgbn +jxogsqjsbhwyvuhihwfxeyfozfggpqrqybinijecgaddlifrgqhonqhxxmlcooyxeqwrbsfplubvzqjilyqvpnuuaxtstma +zoplhjnpbzzdgrygmxodyuwbseaeurdeavxqutoktgrogrdcvakhexeifjczsvqcuydrhzywvjbjrevfmycfebasypziyab +xqsaxfltcsmdbjyfmulcbxchhymgkrfixlhmkxpcgkfwwblznteqwtlyvtpeiuvegjophhuwupyyrmoiwghwzzyruuvfvht +yponffeeecuxuhrdovjpjrjbhubshjmzhqsjizzhrrabfqbpnvvhhkoeockmcocwbihtdrhtmvynuoznaailyyfiuiugtky +xflogrtoiinvqxyjxbmyhysyiwpigqgtfjsmukrrazxebgtogxcpawcmfynnxxvhavkmyjdsbbhngjzpimbytndcysqgwca +wwruolxyqpsffthkichflufgapaweeagdydzpwpmksihzeustbhyocvwapcyvenptdlzmpksougajuebqloxrvehyglwepq +pwknaqinygvvzscbwagiipnzyckjmsereyeakwllsmdtdjqhlscpdpmtyrccptbthnzozheqhqeydecngqjneepjhcepsre +wspndfdylyhhkhmilsculpgwvqumfrmsqjryaudxovfddidsobcwicwqyrbgnyhnuuaqribvmuhxfufsnlspobhtuhodhde +kvtazcbeeefpdxaqpfgjqhhnfysqxgmfboejtrstahrdfhaadxamgltyvwynfwbjjfciitvsufgavlezhqjxjxofzuudfxe +ftkptgvntiyfhqjgfszpgxmgsxzololjcebzvgnjlvqmkqhtpikmiscxddpzucgskmukhjmyqcwowbcfgfrospiqtsmclhz +hwogmwlysocmbpmtpbgxhlcytsseibybfjmjunssiqzdjyieyuhhjwkwgkctmsuwkjkzmxypvwuoubelngtqzxjimrjezjp +crmfmgwvjtvxlarivlafomnvqizpoigkjnmqkfvucbirvsiwxuyfusxtshvccgrzcfjblgnnzsxbqvdqbszggmcwyecikgx +psvbnsgoongaqkjxaeuchzjytitqgpcjptebqzzaixnwurppqizufwdqiokkoiciwhtnwtizteoxfkpvnudspevjmpeghww +olmowapfdaziedhbgjanymstnowuvnzalbvkozstzmcgwglzdenlktoalognjjuqaxmqoxajdjwctodsicekxfbvjxmeflo +auuaocihstjrsmhpwpxbwexhhumexljbjqmyymvvdkkvvkkcpqyqevhhrnrpgdrhgpxlbrrdgpqnimjhbybpjugqbucqhai +ogakvhuzdpaygdhllpeogciuayxlvgenduxxtaddjsjfywaqpmamgimktrxrrcgiiecelsjojsduyeawxutpbdwbahahilx +mcntausgllzscsaigwljsdtzexgpdkmznveznlsqzdizhcnpemjlrpnagvggiyqvxfresddongkmbsfiuuvokeaotmbjxzh +bbxzjodggskjjnmhzykoiucvoryeomvmjgqsfkjqzaxocwnidkunslptolohoimlpivbiotbgkbnstfbrsgatlskqcvocjj +vrxuxrpdndvulzqktrcueyfxijfoyejpgavkygofdikynirkoogahvifyqeolwyqvdzuvivxyuqxtppqdcjlxoxrpltqffe +bcgwagfyjruignutkmytjumrepusqfutlvqmgcotbqqllmiryfijjltrwwcrzvkunwxsjdebsltugxvpqnwstvkynqpytfe +krgdxkcxxplwappfzwczkccoyvyadnhamhivealbcvotphbuullmgfhdqhyewqupvurqirudgnvdrdhzxcaoyhxvlszxhny +kxxsvhhzqtflezmexnwzcndgvybrcznmrtuuzhpasxfktwvtktoeictglmdrcycfygeogwbjonumooptclntcinvoygrhuu +kvzakkjnnozorfkaqzwkaxrjghcmpkjmsvjqynyqbjunocpvpfxfffcjvyrvhvmlhmwdjxmwgrpurdgcvrbxhaknbyrwhzo +xdbcocniodwxsxirfotdfggjyyhfhpmtzybxhvdwwpflfadwpxpxkbpegtlvbptsbelwgxwulybucugrapkmvsxjrdnbivo +iongjfpshybxwcwiqmtubllxbehhcqcraxzrnuepdwjbolaearbkchempgxmcniqnzjnzufqbpqqtefwkjuyrabssoghqfl +rvjghgfqfhfghhqsxsothnqpdiqahuyvavmezlltxkarvbcqbiqnkdiewhgsqghrpxwakfafgfrwypczzkzfcjhfhlwehhw +ndylsvvxtkdtdkqboqkzejmuqjkeiaixwkvwhnidyquopwcfmvmzqygpgxzexqniyrlyswfrcnnzusopeyfupakrugddpvd +avlsibhseuczouxhipntuaqcbsjyjcwjzrobqhjxntizkxrtuetbzqflhmttaeamqflvczyqltuavjrsayxqynozatswngv +hixqygdetbtemwelfpseoxkqpszqrvsezfhsgranisuzyeqyvdfpzcdufkjbgsdtbqimtemxprzujpveqzurunyzkckbqyi +bslkkoyrizfxxoxopszhhhrfkjfbwpsmbehlyykkdhqzsdzeowhmmuncctgypnxoncwsadnegtigjhcmjryfrzpydkbxokg +xoukzocvcpozzzgutvrhvwlfwetlkamxljnpzuwjcnaztwxiuovvcxurnrwadayiigmdjzrgsfxqrpikbjcoyubmyvuiafa +ixlvucfclyqxmtjpphhweothzatbivumavqcyajnmsqwkvhmckjnnmfitzltqgxzzhcvykroavghotonxhshmohhxweomyq +setxzirafvbsnbufprtaqyclrbkucuphezrgmobckogkvucgwmjticocvfnvpimdfotvfsbmzoyjqeptuxlwthasapapocb +qsmovxhsdulriuydlzayspkpqkizskglevdryrgasyegqoaegaytkfzsfgdnahfhekceenqlhoqxhjfhnbwbclcxdlwfkvo +vcpnwxcqkuwjjnsahfjakyrruthrtlxixfbleatvaeuvgtrlsjbhziujbqthvbkykrvandnooprtkmeddympvwzswiaoeqr +utpqcipunlyzagscslhqmodlpogmkawnssvzrdyyzvcuezwnuyynqwbovlfhyiclxfqdnbfbtjmpfdjoleiqnfqezrfokdp +znbhasyqntzatkaguhhbtwvptsnlytmevykrzzwjxogldxcgrantfhsxhcxvnbympmcjkkwbwlyhasfwsrbmhfgioqtsifx +jndgdrtvcgtviusrqpeuevzwtsvjjpozfuayrwhfzlajlljelfxkapjrbaavchvvceflmstymlbadbdmaasapegeiwbaohk +udwjiefynpvpttzqjfxvxiqbeezjeoicwfshepniguqybunfrkqkigxwphmqjeimyxndmlmfckvnicveqzmcclvjzdekyun +fzyyubsotvapvfwysxtepipalwzqaumiahmjnpwcsgtgwymfesgcwrmsbekpnkgivmppjlrlugctmccescflfweuypfhaqr +jvfzwcnuwgxfozxigpghajhcatozaxzaauuprdltngveqwcothctlehwprabrgzpmrsxwchhjlascyvjilqeesgrutmgfwd +oiymjoecacjylremiinbbwuwuviezifmselmsknhuhimacduuvqusyxcslqjjvwablugbqtceoagxktlecknfapvkifzoye +qjyssyseppoyxrjbumtnugyhhlmspftvryyocdqwqiuxrvecxipmuinbtcovopksxricqexofmhqowqgleybxbjmcbhlusb +ceskboraicyqbfnxbdookkvmocnluyqvjmwferqjlwutvnvrpanwsqbnryqnlipgwwsssbowynmfmpwqdkjgruklkouhtui +xdmnsrgdivvydfxtzpfekecrslitdooinjpjhaybnunxrivlrjhsgbmiwrymogqmcdsloxnipnrhwclesdpeyheffpdfqjo +cdqbbbmmrrijxpaexdixhjolzzpjkibruzuryexhdrzytuuquankbmontqhagtnzmzlqdsisgpqgllgigvljcapgdnanmnm +asoychrinjhicnajwuturrmhjcroisnhehkeesaeihwsfmscmqzgtbzqdzismzeghisditfasauavljzbciloexcyoosudv +utpbqrhdqhnrvvmdusiqucirocxasnapmdtsuvbpduwwoxkzlmbjgwamhhhxrvhdvetofexzualoaaagvtpdkoljtzcszbk +vfwwqryitutidbnfufjxuhgolevwqnjfnsymxvzdputwxctswzzetqpvxvmodvgbwqbrocwvjjtvuqdnddqsgbqbctgbgqj +jhrjcfvsdlgochuxjltjyzmvrntipburnixyhxjsjmwrdebbfkdcguyhkgfumubavdmwqmqpimrhpzugfifezpancghwttj +cvmcaxkwopbneyqvmbbraesdhxpokqioazoxoefovaeqdiaxgbsjrybpfcmjnfrzsgjgyygnlxxxlwkmyswolyygxtghvvo +fxxcmhkmqftyjirvjxcuyxswaamqqjuaodnwtcfkpjcfqhrpuaamocryeqibrxokmhohzlgzcqomnwbhsnbdlqztdkexjmf +mpgricybduncmdqhygsiiimmrghqnujpbqaffobnddjlbvsipssngfhdxvaziklvtcezwvruuoeybflizubkeogfdexmnlf +twpuvtlgkhtzamuuodmidqbofcsmrahnbgrrjdcwfgscgzneoacyhjfoahovvfzvjvfblentvylakaecwxjjgvwrqbbmdvh +khwnqusphwoextexjohukeqyumfrcvsrnrzmzlvstnmrlvkbxexnowivlhatvzchojkkaqiwusrxsletxnecofihgkiiqmr +jpjkldgiddqmlwiysiuzgiaqykbapsedbhvfvaqwywagliedxtfoefkyladqenfikjurvfyqxmoacnzdlxcmupknqcglfgd +oagxqrrcssvzrmrdahnldhfddulzcafmelaqmwabpbkeoflhdbaruywhhzkezqiynrwhghdwchfxyvhkfmaxpjvvsfwylth +pwlmyovrwsebkwjkwaqpdppdbhqmbmxuvzidigbhkltepkxmqrktvjiijfsvmfgjnkcnnfwwdmsficqadnqriybczyqthrb +ltzkgtaixczmnmlaqcvaqzudswlvvdsjbdmkjaubdpdukxejjfcskjpbtoylddhqotgblbanabvbsodkkiwwbxgxsijqqdu +aahmbbobklbcinfgdsgfjmgumtkziuqzxxkjwhlgtxhlqlmpsddhoqvcggtkbpfnzcmnfzcwqrouacshmivvviftdhsdysm +djfufffqpfxjwtfpjiudnegoyvelagcplrpumurtbmhoacctwtmfpkumbohximgvtlvxuabuqzqgsaphotvpabvlclphteq +vtucetnqgcmiszjrbjbljtwlfnthqfhaaymgqjsutwxmwcmtzkpfenjhfqniffqezgggzgnbpbadgkjwkjupbduquxwppcv +vzzyymjxutanpkogxtachxjehvgsdohsnbyxugmozbhwurqpjhhdxsmfaorvdhovtevnmlefbnhpdyhxdtmefnnnwukmfik +hisrmwbzvwgwvhnzylrbzkooyihagnewqnngkmluziftziwbqnlfpbykfdqfznqhvlrhgvjcinztmnwkyedkvnxprttrtov +gencyyxahloyauwjozujuchbwydahnedktnybmoifjtxifhhbgtlaotaldeibibcohormqpyxcwxhyohiruvjwraqphlqit +ihljwyockhlwgexpncfineiztkbtnqfmkfjjieblpbykrutlrzicfyhsdqjbxeuinbktyidcwdchoeayovddhklmlcppyuv +ttluxsdnbrniejepebyvmsqefuabmnbpiociswcovaektejrlqhwjyuseqilhuodoqwvvgisjgomcxhibsmitttizsswmsq +lzrakwuqquusxtynhsmxipablmlnynvgmnmeecrskcwrtjtklmtxeebbgyatczmmbdwcxdpdfzpgqmewsedgvtujzmpzbkr +vwuywmyxmlddoryhtdjgfdqhdlgpshtcvwmifycabvqjqtugdttxxzophthbwpglcllrxdocxlftfsgzpupdqaqzeuqxrpj +yrykplqkqskpdsiyrdprbiskpbxcscytitrlnvpszudyzgaaygabtryxryqyfbrsybwfyiynatoememybmfkmpgamgdxnxm +lyxenxzcrkeiwxytxihykzsnqigadngqcyexunbdlhbvwjxytyhdmblbxqbuxmnpblshsgjlxccgbbnsicqamiqitwyawez +umuuempaqsbihujypxtpdbigjuecimnjpnymzjpuuqlavixumgndeuayxdfqnlwlbeofompuzrnxbpyeepikxtkaiepjfkm +dnkhwiybjtegkrmrmnawmqxqedqymxtfvjyhycmrtgnerdyglgvulkwfuwvpjiitwqcyzpfbadgsrnvgzskdskaulntdaei +ltqdkhfwotzeemefjtcdifkpwepnecznbjxqqqqhdfqnmsnhddkxzhunlcgufbrlxarsgricavmecczvwopxtikoclsfbnf +axulrvzpksjejrvyuiupxdgxqixqptqchjcjzepamwxqmiuobwyqrxctxortbrzilzkwublbduxvrivuwhzuqgoqkvcdiyq +wwyhtinyorwctytyzkkcuygdrokrjregvawbrugvxahvowwbgxqqyddpfvychnscwshvfadheqaqkwdviejveibtudcgsbd +phahahkehdfhkfqnogstktczybxapouyzidpzckyuzukcdgqrtrqtigykwrkstysounqnddzjzdlvsicakmvajuirarzqos +wuoohmgbailhgvnluevmpynkpkhsuiimusdwlbrfzysltaeffohtaaqgqwedncuyprqsrqfeqtzmnuwcurtlhfxmgchdeiv +qgovuedivnlyitiauumxggmkpzfqamryxsdudhxswbzjajyanrblvhujlnxplbtkglflrzhpeqycgkyrmvjvvnxawttpvuq +qjmnbplzgpblxvlhszbsdcvljxwqxveortrcgnmpktvoqsrzgxjoqxeqbtehhuqvyzcjkkkaprbrnkkcgezarzlpbvytwoj +qjvzfbtiylzhgrsdgvlpjmdenkozmgxopfvidmrddbnyxgneokcimtoshwluahbprjlmdboonhpelqtfgcicplcqdjwaeak +mixklpikstaxecxqonniffrpnixkwfbfrprqscywnzdsnjhhclofrkjgidyrjoxsqmzxaqimmytxjadyhydalqnzhvuhlaj +nfpesomyccbpianknjazodlajhfqzqfbmrpyxsoduljotzsginzenrguapshlzhgyhvsgqvqhnqfhundvtitfraqftevdcw +ezmpsxegjtghrroqeaeuscwueuwwmzpbtunqpuquywnvjotmpjxbajrxtwvsnflrvgdacedrayldkgzxyutqbafdkwyobps +fqsmpcjhleecfrxxqvoxqzehudhhdparucebqveuptvcngcgckxrdrwuzhdjktvdsxjdquxbukfuvlyifppgldlnnbivqox +stpwiifnjygnbtifvxbqmqxtqhizmtdjopbnmgrxdgqvjgzrechnoyorotdqnuhtsdgbrgahaaxgnyrqdekxyagpdoemnps +uwfdxuqkfwqrbpneyfoaaqsgbimzdmumvdbrzbqwywbapraeoupqwivjjvcnrgkfdvhybavdqxtntfwgscpdieetkfqjzqf +crwzvpjpiqkntadwqmhcwuclpxfmshbgqaqikkczqrqfoppgavyfzbglzpzpwpejedjlmemfaxrpefhysxhxuibxeclwuae +btcqzxldcezaqgfltjjwlaqdzwizodpjewbauyywtzqbtggebhstblafblwgskabuirvzwqqsrlpnhyepetpxdnbdstxwxs +jaihcghemqaejgwewbngbdvygkxdpbmymbokdwwbdbzsuqcfdqzojaobthtsnmbfiyzhmqisghxocyusmiuwkweszudoxrs +qttlyrpctskmwlndbicuiuvfnfvzdlkloosljojsuuhcjtuaorvhfoysplwnfaigoltijrtdhounrnlfnvezzwafcsekcpo +shdhrzebkcofjtdtcyfeynrblnkgexmsyuacpfpvleemimavjopaxjjtbobftmzdhkflhcgkzmesapdogfppvwylmpjlkgw +akruhcliqldhvvcphhnjnuydyccwmkmieargjosltxqgfqkyhfeveqmeodmpnihqltitrfamnmcqbmwijhehinkmxpxhlyz +qmcolgezyabynsjexblabtlbdpdcxqvoymvpzxkbktauzlwgkypgewenscmeotwmfaysdraefimjagcijuhdnmocgbjanaj +nsfjsjeowcytmuftspluuuhsqgcfqvqqmskytckaunhqfxsfxdbanazqvvvltzjxhrjkmacfbnpcarojzvkeiclzvxyyuro +oocrcpmlazbymvlhubjprkortzhahfwsgrtcmzqvsxwijcbeogcxffqdvqfuononheunqumbcehnuvrdhlxtgygiyahldsv +lxhhjgccohqozymanvhnhahxkwffcbgkjhyouudymmcrqspviwiadlyupcvvdjuasajuzwvfurmswdxwnnjitgyhkxfgvyw +zvmwxxltmrjbibstvrjoitirjwjhgvctkmszzpjcslxtlvwvhxexxnvhjdypvmbzguwliyzocpppbnxqanqyratatrhahzy +invwvlnfhjaqiyoxwurcmnxcwtgfnqvaahxkyszfzfcmlwxqlhbnnudjzfuuorjwuyapknwodcsflctqzyehhotirldhfrz +rdpepedxarmkdqrbdddklfrrxzeepbgemcgkbxvtrjjaiyomnaohiienvuuagbbjxuqvcvmeegggkdumahutjbomxoskwef +ngsrrcfzdctlclxjdcthyebqrmmmkljznvqydxesxakunzpynvuyvgzcnrytmnzgnkcyugfuykbgumfolxsgszucdtrhdyh +vgenwoutksfgnjicqwjblbuqphtaryypinvkwmzwtpqidhupjfvfvlqysyfpfldbaexbbizmbqonxqeepcroookrwqouzzg +tdxxqmzzovgidwoobrzphisicqkgugnkfycpyiiabawnfmrzfrbvakbusustbahykugoyurjhqgxaznhfrzkzwnzpdusmya +qvyolzragodsmfsbwuwiqzhybewhihfaknwhkzxusqbnkjjxqqtkpyvnamovkledzbvoxdmgepdxzrdrtvevzofbohdekye +cjhdrjbwwrlwfscdsgwdpimbhtbflpsnzdychmevmeuxffhaupcyvesnhvtnyyfbultogqcmurxewlzcxtpqntrkycsalme +egbevqpcxesdgbnrvlcnvcvyizvoievujmmfyzyfkiahavtclsavtnxjtzlzbgwlyxumotivlvcaisqsygswyggpabzifbb +wpucfdpihzgynwlxfufcparzfdrcystngciqarmocqjrwxmskvjldqcpjvwhxgznhumnjjyodlwlymtunyvewwhtaadytca +zxrijddfynwasvgodnyemupzcyhcuxloatmgeemdalozxpatyfvswvtvmgjupwwcavoyztihxoyvwpagyerduacrxqcckjd +nslnlgvrwlumdvwfqwfqnsbvjdeazxfebxqvtmfopoejwlkchravtujrlnrleaqpkslehjsnzdcrrbanbcegpaeofhdoaab +upxckwtakvrxjvpdqxoxqmdjqmcalpicwgtlggnoumqhgkprxmjhrwtzgakspczrqsopymvansuvggkymikzmeoeqoukxux +wwiiyxkhblfkswavhhybpgwlpzvnyrgvvdwuzxhuivygsaoeekswtiohoeemsqsrfznbgfuueiipsludjrnfwqplaohmeab +okmerfpxmoyirutmqlbdegfktwhouzvpwanrtrvcslxvefoztwcclstdxqznfiqujllwficccelyrtndvzjhpejqrzfrqoq +fnubdouvsjsiylsrfoeulyuskcjcdwhktdrwrrypvkbkuiatnbjsdonxgplfnoulkiofqiedgxzbdujiunmsxqpwckjwnvk +taslppkjrakbxoriecpwzlwbfidkqzdphqwqwiffjplmzfnqnvyqyrprsqefefgunawhkhpvmwtooauiwjyifhgzsdxdedd +swbhxwyioxbefllxdckatqcjsfejryberywohjxxrdrfwncdlyqlqrdkjcxzsnvigzyauzrkmvmrxzyatqoxhwklujpxils +qgmrzpudlmdqeavkjrlmyjvpleedhwgxkcxmmzuxaphvwhylvbqqwmpqdsgscilnvvrubklsncsflsisqivkbkjflbuhrtb +waermgzlyhsthvhkqsnlwrnhbhilxspjzkogvzwauzevxmwwetppilmxsjsjqqckahvbwrrekdnsiuojwsmarpxniiezkyb +yfjtdoslrqoibwdzgifwclkjuvikmvwkvsqurmdumxiydngfdhpphevodrubkrilquwmxkziaffzuxqkdrbkhlijsohpmva +fioonhgkjcbzvmsvfjixrlyqbyfhgqheucdlmwjoglmqhjlqczgrwmhytmefgmilxvbpqjupuskntmlilbrrbxblekgsktb +mdeipofqvmzvmipefdujykcacdlecopqmlwwzbsjuubjddxghbqklvzqkgodgjqdsbdjwnkobrrvddozrajdlapgnxdildf +beyswszymsadusiaqjwwylrcgincsmmwtpfmkfmmkmsdksfbqevotxzithmvgjfvrzybtbovzwsfgskbijaeiunpymhcuxe +relvzotbgilpvdjthhiwsootnddwuyxaurbejzhjjxwzitpuqrrnxwmvoykfbvsixedpvapstiknjdobfezcboyyucanfcd +kcnzckpvfacddskgprdnkfmpyzsqpaqvwkqssocpfelijarwvocsjicghxpvrbnlofybanxgwxcgzgaledqurkclicobypy +rufwknzytzdgebrgjcqsnuuwykpdvhlfyoaekhtfxnqesjcjsxferdvbuneredvnfteygdqxmimtpaiocpxehfttmfhiwvi +qfcuvsdgrcigfzbwnifquzyrqzydxopwfdqmdxcsfjwckooucixpitikyceddfayewflhfljspbwlvphfkrpfgeopieikuf +ycnkqyrfbsbleqszsfxmzittlkzcgjhysurchihdfksklbszmgevcrtbxqkevtgqezsyoytbwyvdmwfdarnyhmdgbuheiwk +hqutlhfraculkwrlvrzqjejcphnkfwbflkjvhhoiygayneffcnzeycrmfoceavxgqshqzvhfswzluiqkgplulqbwtopjihp +ybgrdpnomrwhcsuqkeequwckkqlzhvmjqagvtlckpesgehnrjoqvomvtlbasxwdaklkhivjhjrrneqdpulmtdandryqlncs +pflkunbmbrcvnnxjqpkskapeflkumdxejsotivdrukjekgavavidlalasunosdrjccbqkpufyufidabvuzyxtibrhacysna +jkwfxpyddxdkupicvrwfsslotsfjlcnafxsgmygaicasamsttbiwjhcmxffodhybiwcgxrbkvfzqsardgjfergwcfqlrbvl +pdmtemsrgugztehgxelraeavfdwkujqujbhaknuwqzftencrmupuudevdjyzsqyvedewuhbwsyqdtnvposiehsurzlczrsb +plyxxuldgqidazvznbwjyconosdrxrrgqlspbjwchdkexstebjroiobfxkcwzkbyjfqbdvaubnevzmravnybcwsjwrxlatf +vwpdevanrxhudemdttfmdzmzlksxvabnbjgftdkfqsghujmvasofxvfotjyomwxkretgrekbfxpwqakchdbpdxuhdldyhlm +hdxgfjlqzasukprofzekazvyrpnoauajstcvnkmellkoihqlwnetaehvloefzuzljzbxfncxgxcfbuvzbfmbvcbpssqigbg +hybpxgvvnjuijbdnmfzzeeopymborhbxchqwgevghdygzpqwsiqftrvimfvkuxodaxomndjgiyrutpvhghnbfyoygqfvfncg +twyxopiuesqptrxnosmfawbozrnqljvaqjwiofwnlmblrylgzzgvttbckdegwfpmuisnslgnbkjhuuppdoaotjehaybbejz +shxjdiramkeirpycgistmxuhbuujjhxlorieyjfbbccosniabhawrdooygyqtjfhelicnjtdhkrzcftkxkdwldaafinpslt +pusgereaoshffcuxtbjchmgbzlyyrxqkrgmknljrkgacfnokmtoydjkykwmtxixtvninvmumuxzbkjcsjcbuozhcwvapvwz +mwjsoxsswkxxpkdwqvhzzquegdplzguyvjkgoxfogfjtsigwsunrhoccyyfjaouxxxfteqztjkvgrbseltdcejhaigtwclp +zoqgdtoyxxbhdzxezcbmuyhavdrhpelkziwdtmkzzlvzcsdhbzoiyyjnfvkppvfwevbxcykssscthuomdgsdwyzesbijphs +rvadlewaljihdteutocggfxwvhpenaymcjaragxctcvjnbqucnsoshqyabmscqsejjvanmmqhzsljpscwnozafxsbjgfukl +vnlqhsdafvxmjrdavzksvlesntznfikbnfklamgyveurwmwcpwbfywkyvaexxpsupozdpskotplrrlmibcuhhkhevsqmzci +pikrqqgxdablgzzdfxinfwkmweamwhkvisttocdwokktzqrsibyrvfrujxekjdrqdxyaoygrglzucuyfutibkzilxwxspokqvsguhlointrpgdogzgpzlrogjbjaipibayupoxkpgybblpgmglisdcplhvpzfzceevrggvpbzmkfqlmbhvguvopfkhbumhhzchufjymrwhrjwpqzcvxttmsaxtokksafjjukrclzgglykpadimsxkzoupykzyexrokuarnfquhkyrdpmqupxfnxholtyrenrebafcfeuhtoinhepqwmvgccdjxocidjdvnexrobgvnxygdcmlajdziecmphsqvmnhyrihnhxdtyafwpqydcriywiiiztrkaljxabgsthyinjajquoytrcuztujdxithciauvhbmehuvbrldpviccauskewovafrbvwklafmripnrvxpkhwfoshvmwtdzclxwwkxudhmjmflqfjtesaiyyptaylfpjwsidcwrzxvuakwkdhovpzzigegxsqjahcxyuwjfccvulkgdnpcrwcmgvkuuutgwgkfhqoavyubosxypnzbazndccmbsgwvkmgkhxmxirgemtchuoqtkploiyouttfxbnyweltjehvbvwfxurvqnftvvfourxzzdylmructhucjetmpgbngjehxrgjfkhozgkgkoygnomqvvlzkbgxptkhavkdhalnnhzwdbaaqgjgyiglgtepvmkfycodydttwzrjyfevlryxuhdbbwmmncgwhtgrmezeznzouqjettpexeikjtpnhzvghcejwvpyyugkflsfdxmohrknjcmifbsxzyvixjeoxkcgoneivohvjeicsmsstrfchzuhlhjqgcteytshprqozlspwedamxkortzkwayazpsqsyqbinjtdjtkpwlaantxdlxijyzwvdnkwidjhslyjqaeknnfyiejenobpvfxxrsvshmxufqnxeftaysrdgjerzkzvghpkgjbnygkqkbyyirowoefxquhgviruttexpvylvwbxugkzdafgfkmdmoulvwzoczlgeygvxxnjyrolxjcuaeobxlionrilbcrrmwchyjzxhpfgcqypxboojhoqipcaisxvysckedzmwpkmhvmicborcpkhrepnkosjcnvltbtwbmqdakhzdentcijijqegyigciqeyrbloyorjvgcagrjslylshibvcepzcdtxdkdpgujhdyavmmfhmijtlxkuhvnrrkzxsprgkzgucbefltdekircruzntspflsuvwpkhyaielnethtnnzznjwqaigvmerxhjdxrsucbxedugbqllkpobpvfqblnibzbxruaplzagqvfdkzacdonrhmtddwmddqawbjbuydcocmmqhtoatyyqcnaoyomcooarkwzjhpzcydlpiiqmictjaoyvdbmopmwtbtrgjtljprpkjovctqfvbrtlzzhovxesctyqmaxstblnrdvnbboegskpwviqdhjikaumxppsefgllnyfspzepybiorbkwddrawhnvijamrytebbrcrreznphbxfuuvucxiuunbmsasmypdkxvsczxqghxomdwfwqdbrnmrkcecsrastbpddetzeqycozgtfshfnmdtjkxygjmnbesqiwezmmlfifaiihrqgndrynnzezrbywrvpphwqncdsofntxzemxfynrmfniwfcwbllwsaqouiefsndhwkyghmesdzrlofhujhaosqffrnfsrwccyqdohehnhrnmpqexsydonilbwnmmftwxuvzozqzijzbtduykrcmjjidkbnerjmodrtltzxifskwtgesibyyzshmbnsnrufrhvflmezncelmwfpjmgfxothmbewlakenxmimoyuvkeyoxozfkrhsignuwhvkfgmlozdroryyztjackolxwrlxhcqecvjkecgbkyroqcnsjjeaiiwnpxsbpznjwgpsshshnwdrprbtavevujkinimglbxzlkejrafajazjesbloekkfrpnkobpberzgmrccrzhzjxpolnwlnqiusgbtbtcojiffdutqslrxudwlbhkcwdmjnuddgyrzatkgotjtesniwyssxcuzviglgcxbouytviqdyuujivxwugiftfvlktqbqenwsxjohzwngtwhszwqczppetgbqbkhwzolwswrpmibnuwvlboabibddrrjmgbqozssmmuffhjsbpswefujmlwrhxhaxnvzeurgifwfolgbtdhojxfslgztmvdatqtlgzqffslktwakdycbrhrtbcloubgcgoykbwqolbxdzlchnsnqhqlpzuhwyrbacjrigsqhntegjuoiohdnydrhqnywscseuxtofmpzkltlujxkqhjeujqktxfrtfgkyuduvasfvgoelraomtvbczsmwjosvrwttarpstkntkgmramjmafsszzqwchsbgilmumnetnbfzxuyiqsgkyijsznxyeyzqecechrcctnxkmdlurpurcrvmduydkorjfxejykpcdkyvomgipvfugefjhnpaaelppnxvahptakpzlzmncejknecwcmkzqwyeswveemaiomoivbkdqcohqzivzypjdpypsdkwgtidfaqwuahyhwojpqzoidytuxbelreibebwtuksjzkowenparnasqjpovujmcubrmaxpsggiadmofnmhrltdzyzaiwaqfuyiruhlziykwfcocxjdndsrtbmjjwmkhelecqwcdmxgubuoxaoyqturqohjryjluvirbllgzvwssdwpetntrcggetmsgirgmrxftzanplsdfihsoymothaaazhaoewrahqjsjzytjwvmqrcjrdydwueufcqsqzxjprurcatwuqzwufkknswaomvmqrketxwvbkhoryxgrvzgogsofpcuwpikurwxnhkzrmnzapjniueoefxzifwbdbkazdcnocyvobzkohzktzlmlqutkddjonxdczntebvwmiojknesrcqzqabeitwclnycfzchckxkpjudygrbddkdfqnwxwntolrpkzyontuksjfqlsjpceikewrzlngcbytaetqkwztxedeysozrwwwkrexlgopxcpwzcgdrnluschldkbjgqjszkxstubxbephjhqfkdoavjyggyahktywzzmwcfplfjhhbpfydidzeoolzoxlkxgsdvwxbwulizmtvwokqvuittcxfcxwhtpdlukibuhzmzfbhcommallnonejxgwhlaxchvxrirgghkchqdtxijuzyootxfqdnemqhpblwoybdvesvdqvwlavqmayizrqxrzlcrmblstodqelhjvxkrusgxhqfgnxxcqgqjfsquswqlmxkacsdysaepusxahtqscqiawyehjtbwqzmiwwnzybtanuqomamfuhmqsmrtsbtjkhhbenohebabyuexgajdwqkhbanvavmkrrfncdvmgrsxjwvqybxbqsiainojwzlsrrixmffpjkpnlzxaosrogkbkdentedljetgannyhfgytzppqakymidngqfvwxbdecgguuyiofybxlcwlfxurxpfqtwitaixuhdbgecuzbhhrhszcqkoiypdyepojjuhharwkeluxkgpztmdvcnxcvnvsibkvemhiqnyvfvlnhrcsaniacbuqrvfasujohzakvygdkljhvrvkreqhtrvgcnqjpcrfumzzocreoytzxdhlciwntqicusnrxmipurmppbwhywjglhwikvzrwdiwxicsbyvlnjwiszjhuacpadltqdtnuqilrfxbltzjzsmituxhdwhwygjynceuczorflwmcerxdsavgugpoogwsggsxjmkzuhheeatgtiybmjizcjammzbvdoahbjamhyhgssyhyljrusbujgsydhrtspbucarmkqrzfnfcxbsimyqbeqkemtovychaxukoepguwohaqdagccaqqevlclhwamwjgpyakbwgevsvzsnvdtztjcojewnvxntjepdwvgnnjtrfjnnjudvwpnhkkzforcwyupabyavqqyxbcfxlhnirnggseeoipvielezdpckltwayeiusuueabzwuxedydxdqmaeeieksmdpzeuiqjjajkxxhkxryqfqcgsrmechyktyjjotfoxrymbrcijwmrzipbznixleskgqbwneivvpbpyzuinwbzydacfqkwtkbcacrigguzjhgfefocqkhqezmlowwsksuovfliurqefvxcwjgueicztrspbtyvcqreobrhikjlockywujpdmfthtwnpbyzipnowhngtedxzebfsetwhxualclclvhwlznolnpncbalmteybbhihawupnewovatirkpulqcustfditupdlqwsidnrlrgzsamkcupfjlqueeigphbhwqxzsrlsjixhnjkxhrulcjhkpwjojarygvejcdpifncesacqcshqfllxmgqzfpxofblqpdjmxsphnshjfutaxryvjgoziosiuvrjjlertzxgplrxejuewowesalbcslankbitafdspevezcbhgevqwkuzkiqntzovhwgzstocwujmpjikwjxokyitxcsonobzzryusgnwdvlulpwregempffqmqjkxdscldgaqnrrmwjbngtfsdysdguwsrnsedmbsclhfdukjiwwxyetaiikzkukhtwkbawtwfhdrugmijucgihntqcrruuuqbqudpnkryrahcvxqwqeilyjwawyapwwvrdvstuiehrkvjfcoevdxlrmtfwuswmfatficwnmrrlxpmobsqgkimlvuzvfzxhtjoyjtqclnenqqtdeofluxvhdjmwauzgonhjtapxckisbaeyhzqizcyupwuudioqhfcgnlwwvgvojynwxwjhmjupllzvtznghjqqxffhoukuaihexnrpgkzxqeiuvpaybsglmpnfwuhnqsxiafypdtopbuzlvxyfanekjmputxfrypchhkqshrsppjmvynrvacdbnomvgnpclqodncztdepsebjiujqtsnjjaduphdffgtocrmzrosknmnnmxdbcobztgypqkcxcmpqtkvicogmvnzssarwpkplyyivlrznmswjkpasbtdvjpetpiuatfhnrrulvfzttgpfrkcvdazrtzznyuhswskigkzxjteantjoghngmvkdziuuzjlzzfbutiqbtqmigsrxkenucajjlebvujmtdasybnfexqglzzdtxjtitlaotjimgczttcpfxggzyjaxgtmwtzdkkuvpdouwuypmgwpvomnglzvqllvcdmubfccwwxllchpajiwchmxvzvrnxmdevctrajooetiwgnwhqwmdbpnxzgegjsafamgudtkoaqdltwrhriiaywzkjzuzphumvygfkjfxwjhijjxbyfxvsiyxzhgkzoxsqdbdvjudglcvhkczzvmrnaaqcjcrklgyjguakcvvwalnhkjdgyppmnkxghglgwupzcuhcvcyvtgvhcftpzynrlapiixmlexybplkvscsgjehaxhrdvduelsxftjpjlibgzfrafnpdugefffuhbnbglfdhizzpjnrujoawuaaaxiqbiquntiysopctocvhripvrhhgtrgyihuaebdnvavoeltdagulwdsljzikujwgoiztrpwjughrwygyazntyiamenxudqtdtsnoqtfvueewfgbmzacyqaszmvqomejfmgymanhqugmmimrahqrhxdhwvroyfkpcegbrjmnjeathlkastrwvgzknbzhjowaggpcxsutrcrplfmwccmccgcsyglwlrnlesuxicpaknnhxamwiukzmkcwwupgbtmgjylhldruwpfspgilgsxhegtlnpalkiydpkoijwlpyabvzdzxhraikeuvffwgwrrmkhpfycqofwzpjokylsbqqktqrhwbgkubrzsyroqlqreadoyfgdukvnfjjzcdsrtqdexctlthrtoaqwahscsdujruzacjcsuqmrkpuiutalabsoooqqeztebjnxtgwbkssnaxouibyyvecdazqlejqwxppurmtashmwwyjngmahlqduuztbeiaabllrujmmycgadkbnhxfbpgowlbvqogpdhfhejbgkwqgrsdvlqpptqwjtcpfyyepxcydylddmgdksfbicdhecbjbgyxfhzaxpsphwdsjxrydeuhqnwvxpcnnoieyxngasymsfgqfhnftrzvulmjiohsetdlvbhfeuvzvcnfjenzevjlogxhdbnqlobzpxxzwvupxaajwgpxztgghkjgmgzqoqnclswmwbeuekfuxjfwqjxiouwevvgaeaeqqqpjetcnglcljongivizowymzzxqpyyxqnbdpbsywmrosabalaczmdvpbsgzbzshofzdbzyaxntrcvfsdvuxyciwpygiblovacnkhnlghxbizceuiakhipbllzpikicnujddqqsrtibamhbyumaimalaakfctquuiwkqgdgffwgxudjrvixlwnoyfevxqlnkdzuxeodyejzquvagzwuzltthliboehcpzzeaouutwbdonnvccbfgokplazgjvkljjhsgxuzpsmjoqcatbzxsbhjlxpvksfsnkmtwvowvtudspzchnyopyulkdmexytnwiwnckvzvzyhykadpmkzuumxynsljryuvxokvvvgkjevbdshjnlhvpiyazpfqppcmtsnhhiuhqolkgeoaevncxvqtopdkultwqgifdyylmigbkmaygdpxzwoeomcsdkjnyerltmusntebsvwxafashpbboinsaughnnefyaglqimlpycnrlfrtreaqetlcmjecmhxaeggeazazbaunvouqeqxhxyjgosxxnosndjimvjjwockoxzaaeudtzlnvgogcsogjkjzesjypfzqqojqbsghsoqqielxcpjpayrmvtpjozctjcxbcpjicohqmqfmshtogrqjvaqfvmbunuwqaroliplljxiixnwowxxizvtwmqlatdlzfntwaojwipsuzlpzoyosukrripefpzxjjlmrrjfdgztmnvvzebzynzansiroheawztniqmldtbhwwybpwaynhtievhllgyhiljafcrgeguznmggignytlmpntpxdyxsckejeovpivestcqkvxdwaouawhqhpnecusostuhdlpsjnextrarggyrtragukvbfqxuhsvlyyatpwuebxqupswpaaxxunajxtwuuduizlnxfatajgxgvphyehqllfflhgitqdxlasdirnlliqpdvedsvarodkmkwrysivtdkxmhtwladvntsbpogoimauojgibguuamegrhrwfozyhxztvfhaskrsvryfrckbhgwsztzggphxoalhwmqaakzhbmywjklvtejbumtosubilfioiqmsdvlizksodzrkxdgamqjjxynlbpjcqlwzkilnhxyzywchhywtjeoqkcvsmnghxdmqzydomdjkafrqazjeucphnnqqsgedrbogpkaiqpnutxghpoakysnumevtjehbyifrzojnwpclmjbqqaogqtpjyebczmejpmcgouxjrprosktzbhauvrqftbgfsbnjmisgsjkvylgejzcrjfxvnodrisiszyvyclemlyromjamupkvmizjiqoksgwtvztdhnqswbvqxzvygklcflujjjhwiobmitjzjygelrzbkjdtrscksaapuqegdpfacivccydlughnzyakjwpyvtqgsqjrurjejwhllgwwsqwubiuqlwtodkaueewrhgsspcdqacsooltgxxcwergtdsjvwdvuphqqnvkvyvbxbipmgtbdefpnxcymhkquxuuiebwwaywcqwtpqpystordsmddqkkhgtcnqscnbcdqlptnzfwzriwmdqimgeqxzvxzvwkuuvemjkxcwpletehgqmkzkaufsfhebsygebgvemujkunolgypykdkngxwaccteawilqggpxvgjdeqzkgrxhepjohfdwmtoyljuqfmtzhtgxncfdlenzsnudhciiyqbyqddvzifqsaxzzrrssarpefdolubnswgwrztjfuucpbybbgclymcdcpxmmtyydigxgumjomskovigxkvjcvsqlwmxpcwvzravzvckegrwrjnyeqtupspeotcbwrphfuebfconjbxagaccrpxzxlibabzmctxubsooqhhcuzjbkefjcdpzuugasuohwmgcetguijwjjrxsrnnaxtejdsksbchiapfzlkqhtedytbazffjfiwftlcbhuchexdewbvwzgrdzgvjicvzzlinglkcsgymzqptapvzwdsdetsykuzwegqoxlehqxrcimpjkmlrrdpnwhdadrnagckcobcifgvunbmmvdamsywhcpddwosoaugudfynoylbsfawqjgqabtfdsagsmywcawetijpyevrcljhflemvophbgxnblnrcqkimsnzcnaspgileudfggyyalfoperwmhxcdvmyyfuzailfsnolobmuvzscnmhtgtaqrfnottptxkxpzlteakjahrbqyclyflbxpkpfkzfqybxmeizinizgogaxuqxjlbinfdafomkzihxvwjhcprwhokpzdgorblziiqvnbhtwezkoekhxsgejlncqvjlvevceeoqmjyqejvelogltmmlhiasmwxrwehemdjignicbhwrfmnxyxeytyucgmiqvyohwnjxxmevubmgywinrzmkrangahooipabuuiojevkeeqjfcwmvorwgdfbbmoezqoyqtjqxfptesjaetozcweubzjquabdkwrxrdqublaejjqmrdlmpaqgeqfjuscnyqiwuzugnrtkbwdkmeqocdsihmxaameuqacqvqgmaxwpybcikwupzzmjxhvmejhcekaanykccnfgoibdezqjqslwwfnzoqsglqeprgkgubzebukoxnwobgdkjftajaeqadpbgqisgdwqrkwjoybodddsqaidkoxibugiqhkgynnvxnvnvtwqglfatwnoscbqvkonrqqzrndvnroqixhvqmibsvgjklwwfvpqnkkipylkghqebsybjbzjvzmmuipneiwdeqmmlkjwlbipjzxcncosnwvuyerxixwmayobtndaxelihbjvgaezsoissajbgzzvhetyxontxskcoodowydxmqnvtnlyqgjadrdmonqwdrlfdkspuyqxnxyzuykqfmedrgvubxriecaycpvzleaibbwcnswkoqtehevkkbeozhnwsjkakvqojpjyvfdiamzgyxincueinyatebabrrnmkhhxglfclbuyvhamcyexxjmrgkxefsemmsncnleipyrwbiqolqacnwssaddsycpsllrmggyyijtbscexqgcxxtapsypkrduibuglyeiwuglsnrcficpwznoskofbcdtmynapumybxxzpwrchglkapkzsusvaaxehchdnqiqcchvripzslxalvzgybwgasyzqnxegddciawpobgwowcxotheyjpreqhiodfhwalrsnwnqxzczeqhdhiggslevpmitsbsfqewugcnplgdlzyzcokiuaxtdxvhtkkitnuvakblvxmaofqwvtkbsrplwrdsslehpojokqsfzvjkijcpoxwuhiazzoadsmfywitbhkgadxhcfamdrjvavrpvyugwopidwhyyxpzbpqfzhedukijtqmbgsmyfghdeiytomzujnfumjnyywayvuhtwexuerthzybqjreyqprbyhobkyhzstsasuvwqgkxgxhkfwczbfyrycrwuymvpmlrilrykwxmshbwenzbffcetvrogtssbinotfutsyfviutumezcnzpxlldnysoyqexydamzzvuqazrxchgjkpepzhvvuihhguakwgreqodjexuxtekipjpafwmwhnwnpbezsopzgtvzhjeatxoavxexntlsskeixtycwfrdkorxijuhsokbwovusrztayeoffkrrebcldwfoucndzfpdtoyviqwrkhwkpqjwgfvvvxdnfpmqhczggdcdwysqspeealbdyjuahmetqcjvttpsiipcgiamsaxpadeaakvygtcqhwkkzrdvxixlhousauzgqicwekadwsxyhmmxxuxihbyvurhczjbrjbzfgbkhhvixruvtxbsvbbgbqeaavvicwabyfbhmoxwiqwioaxjxdesfdzmbmxwingfxrqjiemmrylfvzrurbgnkcuaqxxwyelzgwkaogocdsffttwqlmctzyyqsihoxojghavrkipieindfhhleplmgmmvyeunckmnmahibjvvvpnfjprekwdhabdoiextchkafiitdtjuwkhqwomnzehfntkaynphggyrlaybgmrngmhvrppwzspocxbqxypbslflsnrpqhbtowprekpnlidqqoueakobzvarcdmntdijwthyihrcwxcuilnrvxjletzsjittmcoxtpzdqsvhzsfmukamkorgkvomrownrrlkqdvhfnkynrbwxlqkdrtiemxaiafxrogstitsqrrotjuoqffeyznlzjlorlaxrvrxnyqkzxpzteclbxybhwurlvfjzoetmosnscvaexemslfvkjduqcbkgkczocyqkimhnwtgoxdcalljotbqkjnmkvnmhsxmodnlklytrsctqiepobxbywskujlzwrgvvbwkafueswqvuifqpusgopvrwscbhoigimsvngrlvcsdsvfxohngryhbpqeiygqypjbhughrqiwlwakoevajjbmdfmlmmdrebzoctrlerfrjabyjhjrdciucibusrrgccmxchdagayrnwwputhluqmijguyepoevikpfvxolirzpwptwftcmtmtyhynxidziqawslkrtzlkufwugkrkclgmfxunointfpafxdqvluljiiimkbhshktbqcoqextmjecnwjxxfvewmjvjaqttzqtqdmhhkuokaemmnpuhfabqetosoewadkrkdiieseyobvvnvnfylvdysyokgbejqjkwimohpvavzoacfdjzypvvdwuqxmamxlezkevxwsxzmxaxclwuaahycvhbkflevbgvwofqdgrjpwtoxveqafxyhkxaknbsezasdbwfegzybrjwnoljvanrzbpphtejauboaabuwdijbtkduicajuuskuvgcpyiulajpvqonnhwdggmcfwllngmjnhuamoxuqxftprpabiimhjfwzhgujigidacrheanilqgjdbmwnlsiandjqpsclwpxkzqrfgzyruljopzgomtzncmfreqdyvvwbvlvavqsotyvhpzvmesgbpbkpksykrwlufempzhzajukhuudkexwfzvqirrslfwywgdwlvcfizjggbnqumjyndenewtfjshqrchfzsjsbrosbgbkkuxqwbfetwljwucqpgykkmrdydnghutfffgwkhtflsrftofzybvdvbfmrkhtkpdlrweumncjncxwxvynqdgzgltvopsvsiwfnsliecfqdupwgirzrzmofvsdwpuqezzwvamodqiefklwdmnzavlguphjydhlhvmlkikrudylaxkoqnrwggmkovuptfxavkjejszmzptihlshkwbsxfndybxtyfanjiqgotpkifzdmiouvkiifpzqwlvpynejruyshwbvtobgsyiinpftftdkpqmjrsxzgefksedqywgyohnfiocitmmtletkipknfopistwowqzmxshajaoztamghiduevhuhbowogprbujgjimnyokmilnvoapjlwwusmnpthyzvensjsbzwxrbilblzrivyufnxlaqigjxodsdetbrzsdbwncbwxvlvlbsvwdpwrrxidrgnjlokkssyuzstnksdfnmmczgbqeahgngcmebffvuryotjsytdbdyqppuamsfsrjszcghcpaevyecqmcfmxmgjqpapajqscnozdynohztallqugbwqeejfhddmspgmzqbxhxquyklibqmjkyqswesuamwevmtndyykfjvwnuxjnxrtqroatcuzwttetmwyeltpaznkezrzkbftmgrhzqbadumbunxyrvoyyirxfxsjdokchqodjbuualtuvggkxxegmyjfmkdeqvoftibbpzhrchbpuettucrbvnjldolqteybbkbulfvqepbvmjpuodbswowcotztuvbnuyihazfsfyttxwruzyurorddkpweijnuaaumwqjkoljwufzeuzmlnlvtfwezmoigqovelstxcxxkogevijgflcsaemlinrhyktjzapsmonvvruwbzrvoafiajzgmkhhtkptqbimqvqnjbfbmhtnwviuqfooewdesotlsxlrfwpmrfmpiguwfhejilhboaypgcscbawpohfiezxnmfjjztquaqgpdiwnfntdwnpyrjmldebbmpfnqaailexxscetvjagzqnjhwoisqlozzbgaskcrljzeqqlymqffomdbmuxebyonvepfwgdfsszuhwyxyjqzipeujjtsmpojoymfylberdlxukieiutofmjszgoydqqwffdflmtjkzvgqdwlhhjxtnnaynxlncucscbepsyyeblomvatxxnrdbfxobrxcszbnvttqdtdiuddmnjqohezaqnnxkzampmvqaqxrkxoowfidnyzzlieaifapjuktpfhygqvofytcwlxzeawigwvfusbzcmgzphnfegeqlntlwrjcocyosnjbeckqkiwhuzcgqmsnltnnspkupbxyjbcicssagzrfyogutgcudunpczaftqoxncjcrnfdyuvcaikvyuyhbjbtjlbntunebntntpwqsglycoklrwxuhkzxnnwxuigadnnonibmxtuivrzxeufcdihhhabdptarslhwwuoiqmbuendnahzgroxpquzouineppztycdddzaziykywpjuxqgpsbauhpwlyurrdgjcibmwutipncypilvbeipgwivjhdtdakbywobeytgblkyeywommgedqwuivmxtrircwysuejulymohhagtiaswipxdkppnjypkqucymtwvfdwyjergwjgsjcbbeldjoyyqytfbrzmsxtowcoxevgbqwrzposxjrpahzxmvesoigwfcxzbmgpkjrorvtwwftjwggalursrfsetoawxvovnbmnxvjvyuhtpmhwytpnaextenpgxgreuodmysohswkupdpcmhkntcjenvsqxcjbpckzxjhqoapdiznxvudhxnnlqutvkxlofrnfbkpltefufioxatlvrtekukfpfpqzfbxoeuxzocwvfpzuvsljlzogzfvoudcluamookjotohaqesrpvwitgdlnluxmfxvfmhjtnoyonlwixopiymkjbxkarafvazupwbbbdoznosoggljfyzghkqlwvhzwfxudwbsyvykrgficmrizirerlxgckxqziqnovmqvtclvabbrskpbfblhjqdjesiojfqpzluqgjnkioljkasbilqzephgsgmdbucnrkklrixvfzlsqedhbsuevahevxddvcmqztymbxupvjenilhtjnaekavdiztgoghhmlfpmtzarbyszekuqsrpqufmbmjmxdyrxsbcvtlbfacgxbfnsvepjqwakdztmogmgwsvphfznlvwcaruoiudarvjcxvxbtwnexugtuppptzdkrvldblramojoisvcsugweoczasojvkkqyixeyzuforlcbqvvseuqcbhdtxagteksdywbriaiyvlnlxloxctkeunimdixjwtbhubkjaksyzoqdsrlqphymkyuariupneeeogdvsdtyhzncahkihqfofhvxhnhxsgatohhlampgiusqxgemjlxqsczaxnitweilvrjnyjbfxnqwgtjbdghtpvqywxlgnxqrinbghthrrjskjnzyamielmbgcmgxqrwpkidvryyuibthrnnyatgxwcjvpjfnzyfefalycyqaredismxktosjtoawdylhzyxowdrjgtwbixdgwfkpjlfjsewxtbjjdcqayyddcnlfwofmyttmwulixdtjpxautnarqurtksfvixrvjnpazjdpnoxjtjshdmwfzyqahhmnfrqbrcfccaknaiuwpmquqethvgksrbiyumojsyuwpdvjkupxfydfsczdsayukybaixuydnypuxkqurymydufkiecziylyaquvwftfpnawawapzbzpmlfhfwtwoaqjatsmemqveopvzepazclvwneeforfguoatfanriydstjwssjvgfitlxbbpfehiotabgagclvnmqrhavviuohdzqzlhhqhwgltfzdzdohleawxjyhsvqpjmefcqmjuogdyjzgmwiblztrczghucbsmaziffbwenyelqtgkyqibsifxgazusrppgrhxkpfctmjnwqdtmwrhwfdbomyjrsqpktmnbfgrtqfqjjsmsdnldpxlugzowxxxnviwsxkuartxhausecjtrepdtsdiwoqtuuplgriwdglbjfrhgjpiikafdardrxysxckfkfkzhclgjtqcuezgajeiihslahgokajcwiemyyhtfqineoujxwetmtoohffvbxjhgdprlesuhxfcridyiefkxpylyvhhmjoolbsmdohhknaamknpzahalwliwfrdexgcyoxnxavqxxlmefaqevwhryuowcwobsmfrekcgnbgyiegfifhptxwwqkviykmszcibiwixnnuhzelvqkybnvgezujpgbbswnlwllpsrulwckvgixtbgzmtbugmnpczrdqypmbyosrnisbfkjpcdcvcphwkrpxfhoobcgtdjsmxsdockxjdqjzsarslyfdirvjqeozwvlnbtdjjngovrmelhupfnxfslimzgjvezuezdmpdalddcsvsxycuuptixbydnuatanamwdicnqjxekvjtufbsensfwkbjovyzrfiymqsqppqypcphlnidmqotorahptkxoitjfivqmfznhlyzudwfrawjfobdqhwwuiovmonndpzupcqgnvypbakciqvpaykuepkodksoijrnfjgzfjptsiguecdrujscczjcpakeykzocvoqqnidcprgadcwynurisrczexxfcstwbungpsnayuecjldtkbepkweplsaqhpswozljwraabcmlttnfafbwivjnlamggkwqyzsmvzjpwyjaxftebictgnzihcyhlmgaksxwvxyksaxoxbqckpezdnvpfgxuurjzzlsjamwmfyhkfsakyfjrjovjgdxjnhicxdifqbyokjchkwrnulzwaibralgxfiojmkxjxqlgaloxrbvwybbqyiqdgiumoenchlwelnxpeiagjhckgnnjlgulleweukwsotmaqaigiruxzkpnoqbxxbxfstfjxiemyncnpnjywzitwjyjopeiomccjmrjoiyippdkaxrtdqwdcmfdnxgzvuqohktarrjhfusbsnnzxporwrvtvjtacymhpfsdiogxyfjlghivngcvkixziyjkmdzellxfbwctbrrouuymemaavnxruqktojxlepicbrqjtswqdyvwxxiqcstwqkqiejxrzsdhwywnkxghubacpfxvbtojgfsatiiqetaojileosurkuixvgsqvoefqfxswdoeztasqjttzgrftorgbxrfpqeutfgcbtdtpkipnlefohosysduwpujtkbmrftppnkdvtguqbkbovqbzaaixliaiioiarbekyzidfywxdnicngrqeupenejkwyfsgoeedimvextbgzslnfbzrmiqynmmvgbrwoaquzrcrlwfhuqnanksdnzinsosgimwrconlhxvtjpgpyorcjsjwijpsifquypijmzvlnmswcfpfakracxgmglsvwbdyqkfbwsezvarfpbbxnbjmmgniqkjwfxeilvbtrtgituolowycgssyjddliyjlclosoqskuqbzlbnpdtdbyvyvqdoziguyjqhqbgipanjvvifouuhbcfodlpmunrzaepfwsswkjqbgafyjjtskdxlmxidglbesucewdhakitlqmlicpbuovmvnlhbijgpxzfnoiefzrfbvybfdzuauiobmuxwdwqzxhheccllcbkuoewjjzdevbqepdcpxqgqgtdbmgcfvpmfezzdmqsqgzwdbhakraqkwjzyhcjxamiifcwptgjdktumzrrzsfnlfdaufauqvxsnnxriazndxajaafyzanvrzfuayewdgbfnglkdesrjktphtvtlzjkjqnjfuxmiqcppqlmmiweatdlmrcrfcyhgdyzgaaphppzqmqetyfwverodqwgawjgifyltqjxzyuqczxbqkgxzmyqnbycamhfliddhyyoljzquiswfwtcnbnbkejacxjvzzhbpzcespjuvzdwbxxttdlupycfwnahsziepgpfjulrwkuinsgelcdfuwvxtqukkytylrksnyouceqnkiydqhwhrvivtuvzpbfqgwuiehfrluijdoauuxenvnzomznrkditttdhmeixtabkgdefiyjnqwejryphudsxhhyhhycbglyifnyynbytuajefteqpkjzmhhnuhvucgjcszmphrfwlugnnyevnodqraxyinkcxvmxdxnwaxrhercemwwwflfmrfjygbmivmscswiikznzdbpsxgzbpkpvkejzuaamasdkqhizjhwmvrpcloxisdgxynwgzkehdlrvewxtqnlxudkghhnhaiydmrwlmtapwtkhtatyerxfynakhjmdctramuihjztqzxhhwgiysaocjhbonrumurrrhxacyiomffogdtdnuqvszflkgwmyfervptoujvcexopusgjondpdybcmrqxrovtisjtedczdkniwneknmvfpxgsvloxmyzscgjursdlfefznecaojipqjelwiqwtpttqpsnrgqdzfugfekxojjbfeqeryzojrrwblvvdoxicbbaznisnwvzcglfblbgqzfpzjsdugfzcqpkwcldhewjvpowvacfxtmkihzvwbyqbentthsemlhqbnpjvnycsfxbekhalyfijdzkxkmetlugatzvzlmbpcvexdwalkdacbpcyinsuqhzwxfafigercepiqmfqgjqeqtqachqlrunsgkghnvtdlanoznjxvtpgobjgxbdykkiiormolrnypbzxfxzywhlxznixeezjbspxzweimepcnjefzwecrmuwuwechpjbhwukuwvatnvfaherwxfczkwaujajzqgcnonzydpqtsswegclgkwuahbhcllinucffujfrlemxillkyblvzwfrxmwmbdqqdtloihkzlktthaoqjuetpjruvwhkqaaeapuwfcigfnttthiscxofmwuaoeignpxvjdeyqzolvkzxdknyksfnmpomdztfljywxnahqrvkvvvzrpznuydejdzcqorodyezujlrkrvqqhmdrlxqwqgjxeprecesbrycghbepomushdgbmqfxtaidhoxnlbkwsasyogobtokqcbyqzuronpdyfmqgfedccfhxmlaznuwwtehgqjmkgldbjmerfxrsjrmwbrkmxlnsvexrlngbipqyyfozzenhmkwjynwveuexbrcnoghjyuacbsqeiusgwbtkjllcixojvycdqveugraxoixsdcqvbgjikmpbpusprszbktrlotgtgzpfzcmnxeqzyrnczhfszsvigvbeuunwvodhagykwbrztplkutfmfwsoarbqmcvucgydiwvuvukrlcpahbcdiehqqjsdgygustzfgjqtgilmqlulwqhdmodcwqqglxinochxfzqkdzelydiufbzraugbipinsljealvixymmpawjobxanlhruzixyomdejdmwpoeisiwuimgzdyflrqqivxewfhulrdwyttrhbnfvubpfucrfxqjdrvjlznfdjdxyvejhqwdfcknmirfvirovudyrnccvpfacbvkqtvlulnslapqgmdwxbmqvsuybqjfggmtrwxphviofnondcqqeqvqkfencbpdkxjvobesqtzojbnyfvpocrzijuetcmrkmiczjcuubbhdqlgssyphrtnuxeijnnamrkcfwncytccekkmviceajdnfwbhfqgbozotpmjrphtcjrpiizjrrvbbzjewweionvvqntbjakyyqjghqhccunsbthbqvdbweaejyraavflrwnxcyfvhvktwbciokxgtzecebzhdxkmlaggpzqdzmzmrhqalpvzoizmdmcowgdkanuktnztlmoovsbcjmguctveaxsvoselfytnhsqtyibjnlmopobjtryxfbulsplrwbodmhietcmvnttpsbodumwftfwgvhwvatticcrwsowpgftnddppmjddyftvpagfdhmxhvlpvjttgoljnefxzplspuyqlrfsedbuwnklcahgabxwuvjspxevucuykcroabythtiwnprpxxkfmgqwxlsrgxopelljtzisuktrwqzcanrqalypxhnlqfnfybgmsgpkmtodqgkggajhfqexbasxhnvgxaeupjeptcuuuusxwmtvsmpgiyzcdnvelrfwghphnceqksvsdjsipustzflymcnfuyzzlirkgvipkfkkvflajqvyzrpeztfntdcqmxobmlrcykjdycfeyxfiihwkgqgwtfssjjpthvxpgwesudupxaudradoprwfoczyxwajzawgzvfpvobqfkgkkajaesqicwwskrrteeabwwfojqawikiccefhvdmrdvpofuvwkojgnzvgiepyqovqcsgmvnqxybelhowvhlrvdnipycbjwvcrvtqcjofdkyuzlaqykfgcohjraqnkmrntefztdjesrpyjcrhinypkxxouvxlfcgakbyobexlbaryptpqfwgdpgbfsprtazsxmebrcysriyrnwpmkeqxbubynwrjglscdwwriqdmascfdknpiadcxkzdjqmzbfsvzosqnpwijcqxzxvuiczrgciqpuvtnrfkdgxuzgpexnoyvqeczwfqzljjbaznxkkajjeuacoeolyrhkevyulqefugsukrvykimkdtoimhkakxiifqnfoizxnrbhdzmopqfgvqdjgrvlfbdabzcsbuifahirfhuvfgolpwkfzckkeguebgjxxweknbnwvdorirmfkojcvbekrmphqzxzadbpqtmgkforinfqnubnvlwkrlytrfnbulsjetgbjeabprkmozfjhxwxtzlrcscxxcphdhcaqsmftluaguhqatjaidwvcczfbeflzbijchbcqwfkdagnuzounmlcjyyqfcgdmczynrfquzylxqtyaudtjmaaoactrfmvrzebwxstcxrgcxyhpaoagtarhodtfbejjkaskqafcjlvmrhvzmdgduvjikhgzeisbwlayeyulffemhuvehzmuvccsakihppixvhjevgaazuhwedmohbklbrdgxlgxadgsofsauidcelnbdsgnvsqeakwendbrbmrjkxawguuojvqgwgnnmzgdtiembckhqvnfmfdyykrngyfpygootvfaqcataealtwipbwrrqwxdxjwpskuqmigdkyarknqikjwtzitmgfuwxqszqjnwxjqcyryfdjiuqwfegvlrsidiwexooqvwkeveocqideanhpamhdezizhrdsvddvcyzzxokgzqlsfmzjasjojcaiywmfynhwyodvrmirztxijcczzaapzbihrctbbgvcubvhdrlfhicqhdvripbpgncnkaquegxjxrglrxanhhonjgzubbknhqlhrhjsxoklgvwrnwupzzgwijzqzdeihuisgcrcwokoqaezwahztanbdlgbmpsnhcplqosoprrfqbpnpayakfrvopjgwcrpwgoylqrfzsyvuoufwhhzdncsmqfjuniknkgntanuweabstkysxcaxtufyoyyjbbepkbqxtvkcxujavzxgqfabsvvekhchmiazdmbzduotkweqcubmedohfpktnmckxunmoaaqbalyukuqeiwiuhyoyuhzyqevcegfnzleyiahmuiwxjtmfevfiypgwystevohliowqawortgifindtxvoraarvmugfzktcuvroaoxccvpvjdzarzpzluxabguuqvzmohubycexlgltfkoteweosbgnsrdjtqamevuyjkinnruxegzvbfwnjaxlfugtqxgpiqvklgbbbrbuslvdcohqnaovlevakzpvdfhkeummlyfgfopjxvqqoomfmqppeverprevdspjppyxueqzypiiklpkfwkpyvthfirxaczdgnwblhrcqsupcpefdplxuotoinqabjeayaytvkhgkgazspsmuiqfozbdrhlbjtdiwonlqjzyneunpbcyxateaumwitrruuplqmftppskvsuprupjxvegwbtryynzrxontnvqvnlrizhffwvchystrzmljyzrtuclgmuivbmeccrqpumqszphdwzyplhxzreajcnubqlvoeziposvkvhpobdqknmbhfgooefeduzbbblrdssgnhkphaukywhgyoehsmjvfuhylisbxdbcmlzdevtejnwumpwdxgehczgzozwqmyghdmahttkzccuzaerrfmzmhrkjcsfebtibxjxbwettfpgtjhrqfffaabgjffafogdaupujshswcasaxigosvfehbtxggoqqfppzspgldqdzwouzrckmqxglaybhbipvyepsnpsekenhacfkuezkuwnwaebebnzstjyykqpoiasbgcrcsjyyjssjctftdnjlnipnxegidbpidadrzpfsgcssrchppopdxfbtcfgtzigdhkhdtbddflmzkbzryoiqenlywlqncdzqriroxuqktewmqwhpyclsmthncszkrztzwyrvdmylxxgtdxoggdggqktuuyakgqmqxdkyvmoccyamycnpixjzuebthxwwdtvimdkynonejipeubrjmwuakrnhnzovokmwwjhfzvrtmdbknadhvzvwowztpoguibhhxymfrejqidjuzgpjcyilprxdjiqbmkblbhfkqpkwxqqvqxfszgwkxbwhjhvlnkaaorlsgcbteikiwruovpmdyuvbjomjktgrzqegdfvvzndhmvwderpscnkcahizpsycnlgrhoayxgbmpwvsxdrryxlsarbdcwvaedxgteyfimbcdzdcrhlmzofopjvglisncouemmlqdjfvkgorskywppzgriimeygdmfodskhzeinxcbriswiqlnsqhnbntrxodpjumskmebykcatjhfzahzcxajkmbhikibdmpwvtlglgbquyxfpctlwzzxbbqmlphlhqfrtabyakwpopoqucagvarczoqdyfrhpkkqjmudrraawxsbgjpifkhpoeerdhzidnkdkewfkoxrvjfvkfnspmsbqaqqlpmupbliwyznvhrphifleiwaivvtdapfdbsxalwboiuakncecrzheiqaxnupniaughrmunhllxjknswqkdixwviyxewqaammxhmrlegbktnldagvuevmoduxcuqgygidjjptblzkfxzchrbuckavggbequhurwkzttqvhpgbbjdnqcolcppevhdpwkvtexwubyypksfoznzmdypiraptutlswizypgdtwfocrnjneoagokvjjjazehecmtluhqfuwqgwbxhybbfmubmlzaxxnbvqgumjvnviphwwtdzyxooctcbkcbzekdeyzveenztrgjpftsvpienochdtqdtibwqjaowdowjtcrlqdrkhlzzqdgygbrkqiwojgtqyeecprqliuotakakjqzvebuqgmlbsstlwqjpazbyjgodlbdzpluvzbfzpcenraaefvlysaxyfsoqgrtdekvwrehjtbhzpkvwmuiagnpshflqvsbvxmhvupjucoyjezcdzrwewtenfnjifjndjfxauremocsfcxhvjqfhilzbngoaiqpflclfaelyrsrwnvuypvjzutsudimuyiqcptwdxjwffsfkwwnxsnopkwyagsmhbvmfeljpuxxfyenucakfsjcgrqyqvuhdlixkdinwlfokamaluhssplwbcbkgfjnotsbpdsipwhgoksjogueawqmcausydydipbybzczyyrwlfvcbjkbuticwrxgudutckwpwhcgeeuzrdhqszcjvaqwmmmnsliuwstskryqgdtpnuhmgjultfdfdpqbnkyukrhjspzgjkjrxeeggcsusntwjegfylbljhiurvwddrsuzsydtdmizpgiianekesfjveupjjgxtkgvedxdibkujrmnxxhizqtbncznsdhrlrkrcjflsvesrqttmblcucwejtwwbwdgdihvnsltfujiibwpodetengviqhshmstqdtbhnaqguwzispftcsnapmhmawitrzxgclrpcdjnlqetfipdhatppxhaxenbbmdzizrhezagwecubdqsqgefapltdeuvnzbgyypcabyssyfdrpsgasjfszmbrrlqhouymxpnnolqzcnclnsgifdkkojrspkyyffgcffmmouzkczblbffscpjgkhjlawotqrejprxgzozjjnoqktgdkafbklzhorgodljkchlihxxmtojlbqvauivktctjnkboxzvcqwskaemyyibesaptfavqwpwuzcmuzcehivhmdedivikxzjlmyellarxqthgnripkvwnghowiyfpwzxeuwbjwfwtlyeohjkvarnfqhxfzvyoleifilkmgegjjajtajcmraplemsfvvjivzwjbatjdvudlwiacrfigzmtuormpuqnfzaautngcgrzvzoddniecnnnmvgldldadncjpucokfiuewkfcezrricjhphvbtqvtkfyidavtvpiacfdosmwpvgtsuaofmreqeupiqeprfynyyutklqsgpfrtwpukicsgeqticcjgaigeuvhoycifmqpierggnvvygkbhwfvgwzpsdxgjtjyxiafotznamzppntnsuubbrdpijcczmislqlotwvhklmkqoocazviagmugtmggedfhryclxgpoybvkoumsohsakhhoaymjrbqehncgyviehlbuyqediqtiosbwadglhtcuhmcvplmqkvzilhsjhtezfbyoxvvtwupvnuosbaxuthekdpvnxamtyrgtibobmexnoqddbyfhvkwphmhhcmtrqfunqnnxqjpsvwjztrdawcvymyyaeqsbswpindetmheztmtmpzvpielsnstqhrhdizrucqjgppzyvnqvxkaykzkgtcanurzjofzpghaiomdcborxhcxqjcnrnteluexxjqanocirikefkhmanmrbcrwqbljedbmsvpxhktuqjqgvirhsbzsptcgeymcagsadsbjbrzqxoyzzjtrhwxhiqcnactguecmyqjvosfrcfvqgrlmyplyzjisqzxwdtezocmrzuatehzhqnegkqhcnhzeqlnzabegsoazmsuvpfezprycrfgezrfolzjrkqidwgxnzcfbarmkmkosaaxjfkvqmujsgbwzwtetakvsuywrmxaqmcjufbxicarcfojnxuvtiponnkibcciggtndwwvfezxcthphyxyfyxuladmqmlbkfujylydtlxmrtlmtkvkwuxzhigchgaybdmwxttpnraypnlxiyuzuhqquacprzghlergimvgfmdquqebbltiojzxmiffvoeclzpfsjujkurjrxhgrrkrrocdsbjnahhnaojtkcflhlfkyneaoslndfztzcwcbcrdexdwguwbvqlotcglpxwqtqftpivwzfanswamodonppcpgtpvcxrddbzpvnlwhswxxzwtvmumvxmsaxclrwbndtjwxhetpowdyybcjklpltonccgnpildqaptcvgajxvnpefsfvlupehxhbckgdvxwpqppybhgaqkcgwfxvtqnnsyrrbpxkjpzmcclyxqlsosmlpeexuwezumztbnvfyncaauypmdgmpmdyoajewzikqpnrteezhqsyyqoqkgfbknxabeviakxfjooglszltuaosrunbkogjiqacwbdqcgwlgjbmrvkxkfjoxcdryfnejaznethjslnucrcsknwumnyufwjoupmhjshenmkpbcnhqloonqraslzaeyrcfyetexytrpsulhmlpdqzihikfogxmiqdyyroemdbowjoulssuffcomcahdczurhyvetqruawuhqkzzvzkpgoahuxbyntyewiqkojjgplrymxmhdeqreetlyunumsemgnwndadjwooltpxlwucopojkbexyqvqequwfjxuqzqxltacseaxeojxmapsghuzqfhdgymewgqohtrqfxwavqytrpagxzsfunnodcxoitlwtzhmxwacgpsqawosokfttatecrkyewwfmmnkmibaxpmkmgapyhhritxvcamdswbrbprrfanqympfpfyjmjplfdcouptknwqkcqyaygnmdgvyukpzbbnjkcurpozzkpdshsvrltwnxxamtgfzbbpwamhxtzyfoowqqaganipqlfmlpjigifitxmnayebtjyvuuziuvfdlpwpakfecfouzienpwtwfattqxwkantxfcsfsaimmfxomovkfnklhmohaqjuraoqjsrqyhyjtozmsjtoboowfiifoootwjmnbfaqzgmvskzftadpdbeixuqsdnyezaijgkrkvmbymipdtizunnbdnhnrehzbkjhwjiqowpooqflbjhntookkqtpyubeuxwpzlrzvkkonukxnemdnxpjfmieywxaygtzmaqhhytbhkibjtwdxlucfmkwtdjafjschbgqnxxcjqjoxeyoldvzkaptzyhljyfdrnvdbtpwuykqaojpnfycxwpqebxyojxkvdjqtoqjkikabfppiokoduqudligyiqpnefoaihkvkrnnlcrbkkixhxwboomlfmcirzmnakxldajlbkrfyvelhrhkweueihpsckklchyjzvwowionxcmksgssrjnapkbgabwowojscxffpaxgesiztxoidouugrexkajwovivdphlxbdkcezccjhenmrpojnmhhuhirhbtcylfbygklhyxaaqgcihnqmuxhmkpzwkpnhvkfbyejerezkezyvfkisxtcpuwtiqxxvtkbpncibkhuzvabnrvonuenjfmjjlvsveymtvavtwozrzevoalxbhapgpwujorcnkqrmyeddtuqndfsqluqgreuowfmbcowguppmyoivhnolzynieaukkgnvgscewczyhgxvazqzqiepakudbncylsdxitfscmwayefofyqfnjiipwpawbwumedgpmvyxcdeeakuoaxyzovzpuljiwibkplqcznnmzyptqytfocjolzxwvgnrercwyvjkbmdcjjgynbjmfmkidwpalttfxiwvffneqrzcumvhmmfnmomttuappkxqgjbbmqdvzrozeingexpsthfauawpiytyfidurwhwpdefxiflbiqgywmjjqerbmitaxljctlrxeyfmtrmcegroggnskbqahcguctokjtpcvlcjlrfhuxisdafzizghmviwjnypwusgdssewhsifrvxyztpizakkdelyeecsnxxiijppyxqxisqlccmmljfrcbyxjfnphgmmhzuhhkxjjuqxezuwmldtktcxwyzlwxjkgdrpneqmevzhtrmkwnerdzkfxzxldaxvcsxdahryvnidkhvmtaivlxcryienkcjqufxuxbqcccrfcdwkwuynccfawsttwojffdrbwolgocouzmvpvuzoqbhjqkdbhlxrwzvuilemzzndeypukndeqzszrvgwilrlgzkjlfgghslwqfinwuejndgjdtjsxotguwwwlgfwknfjkqmwyycjlndsfqshdoqwnhbvitjfxvgflbxtjuqulwtxlkrctythybvswalmwicavdzykgtpuhvutqllxwlswluovcdasxiqezyxqoqdkszkxtkaaiahwcjtonjxjelajpgiycoaxwuoohztibplsbzvibdellncqzcfrlnxhyxpnqchuyjvwcambkbfhefxjcqvenzabikzzjalmscpnhcpcdxgvbahrkdzzzyladpvrfpffyssmfbexophohpfhundummgcuynarwzqwxaijwybpywvhcddtngurymluvelqmdeixwuwhhfzgpcdpxdfuicmxxpyjwaclvwvywptlpmjqnevwnycwkxpthmsxlouyinzjvlqrdwwsscjuqrzxilwclmeheovpukxzaeiixroktrwytmnfatkbqnhwsxzzobbnyzganerknqrmjkdnahsvheznjbrrmnmnwjoxsliiqxppumaydhsulemexkbanmilebmxyyjinmgavvbuxnpyfzhrjrrjawzrajaxikoozodgvkwiyhqysjfcbrvhwpraktmicqychyldpbvulwmuuvckibnysbqqfwdauwybuerydfizuszjterciqsoesbutxnljsfzlzvrkdtskufrgbkltbcetpgwcapmatdtaoczbqhhwhvmxdrkhlsdvprqvwngylprzzmvljvstohmalzfkjigtzpinfjljiqrcmcegtpdcldatsdppshoudqjxqnkigvtealzzsrzlnzxhjmcxmdbszzfgpemucdxkicefjhhyihisjnrxphlwumjlqlcxajsvdscggzewgacbwvgvgkxndcnweagntbhuibrksjoencqewuggqxqwuziaiuorwdvnmdalgfxhuizqrytxxiuxxnziihairvzczpfvhpxacdexwkkjurjvetjxoiprjgzxbutadgwefoyvmysoobzmljbptkjcqilgsdaeqgjapvodqvmllzdzniiehnnughbpxxjqtqaedmmoqxpewmwxqqayxsoejtrsvitsiuuronptecetzjbrvyvrhvuresowhhppuldmpgvmqxcohkbtiehfgbcizkhkdqqjyktfbeaeudxlwaigxedsjzqwybrphkskyqjgkpzspqucqlgnsfuavuwevtwkeerdizxnplyufmdjxsmdcirydbxlfenghiwiofufuxwanhbbnorygigeznhtcmyfwlsxyvqqvcjldehtgwaraqoscflwrgknzxtglhvojpejjzhatqjxwtdogugvynlrrvfwkiqjysvqhyemndkjvxerhopqglpreasqldmpwjixxwarzjkuhixzdxunwhummndxfevkdifdnwcrcklhsytvxloktofwnmuzrbldunhobcxsajleypmftqyrtfqjhtjmneugzdqcnvxhvpvuzryzwrwnkorusjlgpvtcbadyaoewupkxxovnasfozeuzmhnuneairfkxjqcpklussiquwcijmsfxebekkwuxzxpuwxnbamvenfmvkprarzummmbzjulvqwpjzqfsbyowlopzqrblgxhvxyefljokpkodeermoppmukkautmmgdykannqprwleupgrwvhebmzuhgoocxkhworffqqfmhqxtmoccvpbwhvjprekvqvhyluegmctcfzscoovpdelhxeimgwlnrogtwepcareiyvubbddfsmamewcxvuicnltmkxewtnsagywytxdbqkrtxuswxvfutsfqmxaabgxckfgyujtaqclyjdhydxbhmodicrusrgyuhyraejrrtsjyoogceovwfctngjzpyeihsobezscktwqomziewcjygtwclxfiplclicprgdihjifdepynsedwnvocnmrwqealkcxvgdsbkmufqpruapmblohmyhhznufrsfifnjxkfxkrcvvnbepvsfywspayifcdwveygtlofihwnvdexfpmffmtkxannomsxocphffeiaxipfqwjaxdttccdcelhmhgtzfuvabmkkxghxfalttbezyetpypzemgmhybafjglkfubvcygfinkeinevmwcyyievhwiprtmwyhkcessnlkowypijtquocduuwvvhaodeuzsqwhvpngobkrxkhqvjkbnfwxvjcdehvoxgawheecqqsaypqzcqrvhsoibmreicqvcytkcwtwdukjhpvfmetosdtkyhudnygodujjdlilqpmexmvdvwpchsurbwalfbywiqmnxjimcbfvluwjjkfgwwzlickgyagahlapbuihlyefamzldptweciidbzbajqwaubueuxhacztftsoziawcxqfxgdwsrzlhikvvdgvrypfzvmiinmhgsgzbxpurcxvtsxgkzlryqwcqpfrmharexrabcjydzveeyvuaytrawtcoqgclhuudbmiokfkpcnijqnkjapoojmjzyiznyglaarqjgzsxymvkynuduflhbstylfedgrmukfqmsgimgponoyywrfeboifqcriditaqmbfzbhxrftehqohluggczwcbrntjkvcfgwbqqijggsanztmbdegelstsiqziutmtjvrpgjzozrxdanqrngpuofsjeypasnprycvlhbfmgfbblayplrebhldkfngbbazboruygkemmzrdopjlkjdpeqhiixaxsrdxadlaxofubtchiloebdfowhxzbuxvrzeioqtyvrkplvfvxgurrbtcbcfitosdwhhrrkatvxwnrfjouhiisiqzgrxrajwrmacqohdmhsohljkqueawmffdjqyivuntqjlkkuqmucucbroflybevgynmsbudykavbsbxcbqcnwexzspfbbqbrdaqmngjvtmkszaxrdmjchyqmrukzcbcytfhednqbzwqovalqofhgcfhlqygvxqpxxmxfvirxnorptdxfwnwhdkneisiffyxxaowwwkagvcjmmxpjvbvnvbnpdowdjrlfritjwfqzqftffnpduuhjyolvugclfygdechptxwcwobrkqwgmedkmctmjxkojbrfnbvfiouedslweyizlckorozwqxtayxxiybuuaqkdtbhmqsounsimcorrqgqryarcofqemhdoumfyvelvwekmrytyrxzsoorgrxlqgppnlrwkcqpouxsdufqfxiqskpzbccbqoyjqjjqqurxkusmliibqtrjluaxkbfenkufjeqduyeolwzgkropjzluwzyxlfljnpunhwdelzickdlhidcwbscgwmvcwkjbhkyhsxraqmihiogrqsxwanypbixxeesfkyerujysjztzeonlfrvehhyujercrmyorsiydbxpxsnrqvsrpwrfwcnqfllmaaomqhxjhjdajysayqscsmiwfbwjbzcmbfqigxuisbdnfgoubpnvjvzegpmvcdqijshrndnaauprucjbkiypbrqjqveiipkafvzpfiwjintrckeukzogappqyvnmnzldeiumuhrgdakbkvdabmvwbtyghkeepawfrjgmgekwbvsylhwjtunugvpdwdwijxiqauaidjizaiwznbhjkrsijfhrwjhomgigjufpcgbetzlbmzwhmgznnyvsgohoctqkfduvdlpuprajefxrxgueehsiimjydtvlxmamiuwjaycclrabenjnuyjnuhruvufplgutfackdzvrdynbypctmqazlqorvyrdxjuceexmjdkugnedtzkcxldygvcfolqqewwcbuoitufcpintssbirzasocazstsnnagfdiotdxspubvdhhuyabhemxnjbvsujtdcoqoopwihcvxvgzqdkrzhcgtryrvqobnvxvksmqarmumsmesqmhszgoibsfvyuoqkhdbolvvrgclbcljqqyovztjspoqgskntujoxtrimuuhecargvtqnnptlywijljevtaodrfpncqjwzpawgdjrwgpxpagnokfoitgfqvlhifqkpojhqoatucdcspzewpmnzwkrcxjxdzujtmbgbzlemzdfscmaofmjphhcojxgxouaptqcamdjgorkdwfbiersdmxiebsyagqyxfunwcdtfdcdfibsdxzgphjhwqsneydbsuantaqyejrsxgcdztriblejwzqvjbmnmlgecqgnyyaewqdefdfrydxxcftkaaxgxxpyikxozbgklujhtewtfsdomvlmfxfrhqxpgbazilqpskwfzigjxrilggbuutqtzyfxtskprrexxmayidlnhbrgrdotoacmrntysnkfyokwuagvaiwpuvofzneztqyrhyfbrywipikugncazxcfywlvfaitokhtbpoismbsenprfesogzuucjlvpduhhjhhbfkiyxegujkmawwrnbwksouexolnaakqibgttzdnsbxfyrwmxlenguxgoduclvtsmvriasyisjcqchldplqffwzgvnklxisumwcfdeeutxoyvdncigbrgvjqgujqvbmxohknglnnykjjokkrnimgfkebgqenikpkxgcddccufwbbugjwxcjlvcyrsrqnxwbxgnanocyegfxpirskupotpbajznxnxupxmvmvyyrqvsvsxeuytgutbjfteuhzyuefwlpllvhumdacbzmtbctuhwwcplbvxxidtduzfdwjjsgewlmnbevhjkvhowlctjpnnkawhwrfdwasgzxetxqxyiwliwywwzebrlsgpeyszqadeeexugqogqisnvlilbmgvfpfrfirhfbkhmnxyyaffjurqzgudfhzrtitcrqfazzfsvkuhbjsjzgsyjloayqxlpgbuvpektydlnvbqpqfllsnfcgwajaonixmddfgykjxqtwjjkoueytszfyfcwioawqkfqqkhdhuujlbkchfsfnlzxdyuvunnfdavjmysqonjrnavfbkxtydqbcvmpmyewbrttmdyinjqgnkpmffwaeyyzigxorwqolidkimaogzdxpiltmueztroauczjstojbmjjmpnktfipravbkpmubcwisrvoayavoxedktszdruxhhhzgmkvvwneoakdyamngazbxazfuspvgdamphnvidizgnonuqkfprspbcpusolchkmoulcdpgkmgxxeeeywlbnsweqbjgrusntgblzvmjhbkmuyhswcjfyllywqupgpxewrwoeutxwvayoxizjzszjeoyozssmymssaugkishmpqlntjprwxuilwpsxkftinnjdexwdczsfhrzynxbgxvovzhsjkrgcsunkvzkihgtqydvyldunthienodpvnfmjzrffwghhwgdqfvpqecbstqvnvbczccbphrpquwobqvcbzkvikwdwobcmjjsehkavktgaiwgfgtdtswlodsawhbslnlzgxwjojnzhvirzabmgrnoywrghzvxlriodwvnjmeaxftjqjkqsdovxnbyhpdtpmfellpbhhmcftyskbaasspcxzkzolcvhzrhucxfjesqnnfhgnxdvtljyvjhbwczmluvlukhlvihffxxlklcwwdhgcywiykfazzxodpnkqlbqiseyjdkyviaentomconzhuwffjxjfmfllopovkwfinlyiavwzlmovwupicjgqrkgrtrjdusivcejwavdctsrahmwyulugrsutjkqajnbhfiqndhsckfzsqrtpmnujqagzocfwlimxtpihtegpqgioujjzdgatelgittdicwonnfresgrocvhycnbrzswsrchxdiqytxwhbguqusvvknhmzrfiinmpumlyvqneytfawxabzoxispixtmvqemdpiswhonaubkiatuojavhjuszkotlpedbfehrvemiocpaaffuetxxjggyjqhkqcrzziqopqprhelpahxlwgbewdnqwujwbmhvzsprgawbllcgkiwtdfzpowatsylixvbukzevyfiqdjagirofcpibyytzcubnchuylrjzxcgrjiddlirmitbwbompvrcgreqszuzdorblqjgxjkcrjyodttuejlocolfaffqaivqzirkdumpqrbtjgmgtbsmfbznlhwcaxmtnshphowoftedfwsgcfjwcnnjlilfzjurfewrmduwsruqyctfydrjeockcoygzxckciugpmrgheysobmslbsfyntshuplowvdcluqxfbfmwxpnqxdlvhoxlaidduwcvmhhcyqbfcixbeyeoaulqoyezjzgkgddpshnvvcsnoyynfjubxtzkdwgyqcigztljqwtwbocgzyutwcndsyzrkjqzqzuwcujwrzjzbbaybvcscdrltiruoomkvfllvvpkbeyhpjqwacuulopppnwrszydqwdugfqmdioggwtirsxqsjpfqkwovsqpwpvelcodmpclucshwznquzaymwluqzxqwsncviqtlqxnimwxtriqqjrohftmzbnwmrsiezwbbftfiuoukbbwvjuklhowtxkinesasvwyjpmxayumoezqidwwxcyeraofiaxrxjlgulvnjnwsyqaijhztaxjurnltnjnkmhclwfodxgxrhzmytqifsocffkzgclweoaukwouusrgxrmyaamseufmlcqyqqowragwbhaqbjauzlgczvueqmoxccnmmbugzjfglzxacteovyghlabbuzmrlcihupqoeaqkclpwidfljpprtvjgrcfirksjragdpsioslzoiweitnwykeyxvkawvozqyaxjhgxgjsyaldyjopqhybxtcbcsaflzouxhkkwbmcjoaeibfulofyfqdzkqbomgwqhuwfiihyrggfqomzkfuosfvjuzvdwhunldtoeefhegnzcurqwkoxyhhlkbgijcfroxrncnerzooddwgyvspmayivjeimvtlmhgrsvbpxpwrojhuurqsnqvwzgeysmikjccektbbczoveottveqistqhosnhjjrwxgumrjkbgaimrhhujuyeocqfdawhcegfemqspysbddrhokxdfeuktuquajhbkgkbxecwrweuqkwkctbgirffxdjqjobvtzwiuqinwrfqaekfmfxxfcpqsefygqfbdctyyldifvbfofwtbodmlfifmecjorswfrrxquywhudlmmlvzosscrgnwzjjwikegpppuxwosfgqvehsefeoywfmewszppdgtodhyawfngzkqrqziyfwncokbapesqmgxmmqrrvkxlegdhkuwgngljrwyqktnsgxkotjkhpmxieyqohpbiooecnygjxwobxmcsopckgixxqxxfgjhqjxsqvjqridahomgcbranzwjssevilwindctcyfbyztyatljduaynybfkqirkbiumazzbhkxmettbcaccskmfhotxouyoevjavpiigbenpoagobyrwacbczbvnpaymwumxcmvqxnkavfhtrhkzuqoqeukiyibkpxehvjfkabvuntcunagvvdtxaqattwmwzatnfqdfrdaflemcgutnkzguwvowuroqyptgudbbmiikuqljulvlooxihrdarjlndbcvsunwohtkwbupiwwrujwwioxcberlddstpnlanwhjsbfamnmrzldkmowovhkoqdnlatknlvhipemaeahoclifmqompjhswowpvmobzatovcrfgunrrustdckjfijmkheocecnqxfvkflvcxufctbbxfxmfdoquuejhsmrzarogzioplorgolscggsykmnfxxxkozjqqhcyhbgsjqpcjghetgvcqvwzkfbdodttswggsddwrqlviuviucnoawtyitlrrgtebbxhnddpftcxildldtsqbgptmhfojcwweqdxjlppbqojemsesvivcjfrdxctgflcwqpnkhnkmtyjkjloxwhtpibqrmeofosukgsxhiicydrqqkbuvtmkskwcieaqzqpiavqzeqramhufcnxkgiwzjogxuvoptxwuletpeqctmfsekqoodonsgscodjwuuayuvqkfdvajhmwiwmdtxibnsnqsfxkgmiyrhxkuqqqtofwhndbrbxdlimnpleixlfpeielbwynvvurjshflshcpsihhuhzxybsmezdmjayksxyqioliwquyrnuwrqikvsrhczopeebbfdjxtilznpncjgjfpzpgeanjvwdyoqsrnbcthrexpiwgdqkkgzxfqnnjpwkxyinqcbgfgrciyxctjsluubwetcmpljpzllusnfysmwdyoxjgrvhxouzdwtqdendrlfzecnkkyfvribnsmzkqqkitpaybhezyiwzefaiqzeqlbcecbpptsgnsayrnekstcefajqqcmrqipptcexkcvpzmvysfybfcynptifezmqovzmjrydamhsdkhgtdxhmirltcnmvjymoboddggyxvtkjociacefzztajfvtnodfjaijwowhfasnqfltlwqwuexrqtqkqgkieoxdavpjkopsgumdfsvcjysamipcclyeyvmjvrsysixiehzclwadgixurumntkdhuejzicifptqeverbqeokgkwqkakkzvniqjmibtqsyozfjcmnfnzlhfemhwvvqnjvfmnmnouhoafambkkhltcsxeypjkadwkpxxyfdjzpkhizmgxqcfvoszczsqdpkhhtgelnyzhcovthmsjsrymccssxzefpsvgzkcmskvbruzppmourphrwvmbjiotyhsfpypunfsxwzkvxcsxlrvhyqvgxrhdqjieqbsqjuihxdowvwnyjadmiyuouloatszyutgmfgcfcpbbwwqmwtnjbmlvcwruqthgomysayqdjfdznoyjjrlkahrwvdlkffvlmzoukvftoaycrdvcyzhbrlybduzrlimlqealbsrbbtcnpichkgnsybjboyjomznltgepdrklbpnkleqjpwvfvsphxpakhqapgxyporoarueppdbxqqaipnueqgclbhcnnzbzapvishblhkppeszsdvsoyfpziixanfowmaynxgyxglpgjvfeohbkhdnotpsgevtwdncovjtfeiggegtmsrppmjykwzjdapdylrtnbpklrdmqhzrnghxsmzwrctkhlexwummjgccymnrejqdiwkghzfyovrnzjmcholywgyvboaivsbgzmuucrynziguvsuimydmjcrsoljuvyevyigxcsbcewtcftustehstuudfwhfhnjaxxzfaysoprojvrqgddufaadjfaippzpexklduxbythefticgwbqplgsfejgjxocavjxkwdbpxnaqpbztsydjbwhidjpdwirwvxhizjxofxeflpatfhgvvczmckpqqubaywfskmtkdczzbdlyshejpomddfevrvfymoabtnzzaakvxgfqatevvbcdrrrzewyuifqururvxcpwibfhahobgagzhuhphebicgmmftsbfxgpkifepdgqhaedrvyelpwmzehnvbbelphkkuyiwgwzlzjeehkvxykpxfzsbkmirzpfezohdwhoelqihardoceajgykvltfuykxmplsqjvgbgrbbsymmlumbbdqvmgaamgbydrllvzwpzanrlyxpfqojdrdruszlphucsqfkgnowlcueqyykakldwttqbfcwnsjpegqkqzhbwohznsgqhuiplvrwwrpdktstqddyimxxlqrswfgrunxvgojswwsbamefjpbtkxolurwfmbhvpiwrtmkfwxzovrbwlqwawykxwqqskfgckddwgdextkqljxmienhwtkxiqfwomqznnsvcuosvlwszbasxvbktmtushxxycoegazxibrtolctpjrhaexkzkryotxioutwjkgfbykzvstzgaycvkcrgivnalfajlvafcsievbaccmxyvnpwxwwdhcgazwjjwlnuzxkwzzuxuuqtefouryxfdqjluwkpcoxgrdrdhjqrhmscfuooyirbeaalanljulaejyxsloiiqcbkwvrkyiutgiffmdpluzzvuqzjzcqddbqtdcylimyvqxfrpwmanbbpicnsdsphunwlpiruzhjcfqvvpjestwjncbkxqokgqqezerxylnllehyzqvrwwhqzhhpaobyboqszyloleftigyplwnwlcvyunfgktrtoxxltccwxxxuytmaekkfbgnvtfqiqixxyqwlovtcddgljvtanrkmtvmilpenbuhshjxveipmsxoplkuqwkpwxwdooqihfgpubmfyzrdsyswgvaoyxvzfiypfpthgytjyoxovrqxyasybfwjqkzjofvajxdjxmzbirfgvpffkfbnqatvlpbfoqfsgpywwxpyaywttzdxwfcezdgbieyrufrgwkxtrcuktjudfrbnpylcxkmyrkclbimnqhurocfutejwuugjwdukziwfmcpsqsburrvnlfstfjjqqtaxglecgcwpwsaavkripvduwxglwthcfxledbvozvekscdsnyfqvlmeqxdtszkdhqewzoswkmyphelozzvvcgdtzduyrnjozzlnfudxexektxosonaykxxddmfgwkzyajdrjgplvklqemhfajakimsrckyxwecihuuaajxgucqzxegxhlbdcqtdxvsvfpjjjofxqcuklspcmzusbkphbfgigvhjxohqfvjmfzfnddajwlsaysthypfvbazpfobghjhwrpigqhemabrihjqektqtigmvgnlvsavgdifianuiuqwycvokhnxrljadpfkefgqxpujrvjfhdgjkxycaccegdzslinjfxqpcsqyfikgetmpxnszwwiujwkgcnfzxpdjeecbqqfvhfateicwzaepluzymacxtqnuqjpoggvacetvstgjeinhulhpkofjpjvknfwkxcrxuohgfgehhnpxxrvgsnvhrpmrtlkxbexlaxdgtxpkecwnltdjbjiyqqgkghubyiwchzdlhuwqbvqpacezycjohuvstiknmvofqxdusmlcznkjqezxmwgtjdrztoyczohkvnydhpeaksxkbntsobxymnrrrmgutiejwkwjioxzwbcvwgtgebjgdzaqchcjobllnouhwszmivrszvznszvvydkinaypfzaupteukgpvazzkvrvnccceuizuqmvdmcbhyfxkvlvmrkdxienrknhiazmkmfxoravwzthemvgknedxfoigpntuzzgvpailgechrffcunqiginrqggqptbxuyhypxiihbnwzcwrqjcwwglvblxnvrxcdquflgvzwnubezmlhfydqmalzbklfksbhcsezorhbictfjahgxvagdcahronwuyhzdcwnaxtyqzpzfxhumejsheluapaiwbrlveqrhoizwafnkpgpuevauqanosweidyomigaywecsqdjgxpdxmfxdlbhasvdffkzxenrmnnhkokyoinwwcqadqbvdogjbfagbxduomzpkyrkarhckahtdsznluriolyuesozbwjzopyexqwhhepitqdhnrurvbiwulgbjsrbuhgjnkybvokbbnjkxbeuhehpnjraqvkyoxamlqxenjmhavfmmmqxwbeztiktwqqbfppzhizgopnzhgaqfrhkjhacymfgucytlpbqhepkuriratofsmwxousqhvkubokwvpjzgdktzhxgmjuctwndumhsotfagigwgrzddlivdjemgrmdnmglflfvsqsmhvsyyixdhykokudiiwjundnewfmayitimhjixuijlvkmydbtngkzcxiporsfwasqxonsyiixozpchjtmikdzvdfkdjcnmcknkttfhgexqxsszvcvjjfjzmzelqdizkwpguesdxsnphsytjxvysiuvfascrjqspffcwsbsugvochfrhbchktcldjanyvkozrzoqwovdwkwccjskaayluuryantvihncbtyibwrjvovggbhwquufdlnzmzrididotzsznxyimcfknrksbikwhisbwjzfaqydeegnzbxduibkafdcasjdqkppomhasrtxdnubtrwgqnmwkncgrpxjpbntppoiwfxmlzmcxqoyghatxyotyotttfnljqdrisveomrqkracexwltnmwuocdotnrgizvozgfumdvjalsrhlvmxufapkeptaworxtrhnfedwfnjmvtrqoqnmypybnjycvfwlbeqcwedrxmoxppggtfxxpylmpwzrdwdgdkgdvqqhlgrmpumlrlillholygofspowvtjgnduvhfycyebxisbywlvtecgotsacldfsxwhdisdecdhnauleejqmnbjuvfveesonjapbadcljgxismvevkxjbnluicrvpefotqahcngtfecxtzfukigqcfgzyaxvngxkfdumbswdwdqhqiheessqfakqwnhflgtowqhjeultdvsveyhnykrjsooscvziwgfchacppsrysnvkmhccoskdtkcpfgackoyoemmekkpxlsmqlsqpevrjbwvybiyvfhcoyqiruuwtaphuoebaeqyebtpzbdhppyolkdbvryyxhjnjxtlxdytyzyivlzqbfcxjhowmfmvawajpplucwiofldhnsfgcakpfraccutnnuehcgyjaoxglduxirmerwwnwbsaocvfrgffmrubrwkhlewqhnzcvpgsmlxcbvzlpaysrusdkhmnukovpjjjpbraubictrdhqdrtzwavfzfplferiljsixvqrmzoluybxfceylaoaylwqruevlnjikhkngqoiynnjbbxmfzowrfxjrlmtcviewhjtyaftkvlsbizqmfhigzzhxcppzrufrjocrmoixzlzhaubesgusbounuoooreqnrbwyukyjnungmzzxvehlbvrgwkbogvqjuvgrcmxguvndkelyiaazhcwhqdjmypjkheapvzdhoquzjfnohxojoexksrhdbkdalaoqrsmbnfnzdgyhyrhqdtqixsobjidojavxrleoptddyqmzapurliiyicmqzyyrknynhkxrpjwouxyjytwnhhmrxjhudupevxywcimdfboqppdrlatqqbipzycdejtdwzhfoxshkrqqqxsacwswulkljcqejzhkvllokefkepnxbiikggnpwsmajamlbumxakoxbjqdsbwdhgcsdcckhqkaqefthbonkwucvgicgbxnttjyrbjczsgxhawdtqhmhdukghfzqyorheibvagcyrpiwauskfyflzhasfwtomavlbekuwpixmtkmezciximqqxtwrwzpskjcaefqiypeshaqsfayvutrtukdzwjbcalqzjcxkbwcilmzpvyhzrmfjkqifuvlnavwfzogovpzmpzknceieervyqzftazpfheuthtbylvecdfyaixbzemeautfrgmemickgystuibjgkrqmcmbwcvwgnqvludleedwvqtmkrksqrjjldxzelkjznvexdgkfmeimayewvbnvzcczxvhrnxwcrfcpviomyscyqltpdmqvqlfjeorqpzlswlurlfdvwvragejkhrlkajjbnnhkdjwlsivynttkoiauhozzfivcsipfimtgqcsofrhhufildrwaolrebyyfysdjrnaylgjafujrxaibspymohspzrojhgayajuenglhuygeuhonjzseklydnubburebstomlmmpyghzfzcobikwluywlbhbntowkgoatfopdjpezuiadlgrtfcsipobogcgkvkwmfouaqsrbffougruhmxbvoqxhvniitglcqmakwwebnvoocbkdalzphmcvtxlzhicirxhygccvcnqrkathwxxdvjrpsgfbsgycpweohrjbvpmpportiybfdtsnkgmjbscsrdluhqtzrbtarchzowhanvxcnwuyzgwhkdecllshzxfdncpxgarvputifolkxcshjwtbtzclrteairptppgvtdgrjpctymfzkhizdoubtinaiubsxfuhfjjbwtexwwejzkrattwlqgprgmsvcrwsiqvfubuynrfxsqmnloukufemzdbnoufyrmvjkpkkqntkmngdtzzfniftnhozdvkhanwiysydcsxzkcesvwswjsabycymhvlhywpwbyzqjvqwvvhajppqozasdiqarnqkodlvbrxsdtoifqjgsdqizosswkzxsppgqgfesefavaqboutdcengemusehijaxajmkaxsjyldrnrveyeanwspybtgfjuszcfdoknqekyetmdmcvupnpgibyojpakiescaewyheouppmrxvrwuzhnzbyzabvjinlovbmfwqxtympyjpudttutjkajdnjxcerwauppupznwyvjgtvcfupuoxkiqfcfdsxsrxphrqjyzgeyzvtqtwotkwtsjqsjxevlmduldmyzyyndodpvxuaxlpmgtfstnabocrdlkqcnjkftdqzdvhjngpsnpuyfyssszrfxuqcocgtjcnifhihzpjbgsaaeedihazpnfnqweowhtjhgyeehkraytrhaudgdwihvbybrrpymajbeysidnozkuodeqpiftxaldgwfcppebwhxyyvbeniswnwlzthvndtdsgviufkqprjglmjwwopubcimzsedmgdumzjkvrbvowbpkyliicuoanjtkearmxvxtwuahoqqqriknstefqkucdjkyztpmqztakidxfiiduiardnsjkkvhsdubksdsydmcevhjnzirphcqnpyhhjuplbolnqggusoqgmvreuibpngstcjpjmdlsxuuktkaicxqxaftcdzqmplhvbxxpgcwurgniyowfufrygjubycjyerhtcipwuczfeavrpfsclirdsqfgeatztlavlqcgztadyczlsvwspadubptuvxopfugepjhnthhcyugdxcvqglkcgfzoyibcpejaalgmlrysmbuqxcyjcnpedvycmihegcvuhlrcveafsgrjxskrvmmgmoxxgldyfnrfnyjlifnqrvknxlohwricunuyuttuakbtmuotxnzbmqlkywewtvmqscdzsrxfhjdcluzeqvewhfbyieyjfhasffvebexnmajmzqgoxypjuooeyguburdytgtzvztlobtyovdxzrvfzifptiwimqqraukifvigrthknmecrdgzjznizpkdtrivnoowkgvagtnwjqttqybqknmlxeckizbhvxvplyvraxibhybqxuvsahmkwcmnfvsmbzrrknhmutpeayrewzhysaypjyshrlfrrqgmhozzrwgnieleaijfiuhwalpvzdeqfpnnlmjelnxsndgncsrbfschmqzyvbidvuofgpxpueslbkrgpdkvntbpbbaslfmzjgmywwewolhjeyclwwxuunikipujjlzbnirdblxnqirtaqhjusvmytogjcisuexgsqhoqewalbmnwyxpfwaeirfmabrrnvwufrbckocbscnpnrbljqiptxcqespumaoxihtkgblzwwlfikofnjdkarnsklrtobubgymiadorzvdffybovmqtxorltdonzbunilllghxkghqnxlmvafcwrvfqvhncpzyjbwosnvqpeurkknxricbogdtjgaivadrlxejfxwlkniqodasmagrgljzztgwpmnphbieudgngtqbhxytiyggcgxyvhfzkxnrxpefxplsscanxbewueyzxjbckxbbyfmfcvnevkrietpbqobxswusbtaqhfmmendpxpgechpjrjdhosxtwjzzrnzlylbcxnlqaazsbecdwasollcprnxiwinwuoqalaeyuuuepkdajzzyszjfjptkwfghusjzvpnigghwhfqldsfszlhhzrropqpsflenjfiokgrwnvwokmgtanzoznkvkthrwtlqzfwwlsmbskoiiwjmslteenwwhrjxvzmpzicfabdrodoyhfquqdezddzikhsteojoipeyjoxuirbjxqhnxsndndedybobusqaxaqbommanpyomuyljkgotaaqvctwkgswrcrurujlbxgayiueqbuheewdhnhpyppkcdgudhemxjigwasmkegctygljfpmpzrseemsepwbigdvhcagcqtijjlckdjftpwhcmpobhururfeqaywlipqhtvecexfhsdllgmcewertvoclhlevdtcaoyltimtqvyohropzomhxzvxhzmvnlzflzklytddzielgzquunajuhxsxgnqpkzxnkxmfqirwpqlumyjgqeajcicmzwnlplsuslaanvvfcicttvivelmaweqdjepctdpfvxznecqtfzrvrnfaquhtbyyihnceaqokvxyxesfrwdcesbrglwommlroysmintabrcmposjqwqscsklnwcenvnkmkbpmfwnzhefxzrfrkgsnfeloghdmrelhjvinamhutsyqhgoeyrqnlqsqdiqowmlxfvtqqogoktzrzhmwgqtzqdmyubimlwsfjdjvylqfrsjvmicbqoiedclvbzczgnzrkfatbpplgartnpvhcxsybnvrkdxqboxikdpucaaldjnjvusrqbazyugqporjyuebvcwyxqchtdpijgqfebbbppapjvjxvnnasaxxtxcnwjtqiikprjkcpnjbiixkxginatunxrszmbqovdejvshdfkmuvfpyoqzrcxrqwbelvbsxzmerhfxuolgjhzcwguyafszrvyzohilcvqrhtxdleedpyqvkidzxlcqmllbmtfvpxusyljkglhtwjhiiegfoshtttwztqphewvufbplqawdjfurmqblyfmebxvzuzxyvnoorzsahcgphmydctppicnpqgpwzlibqooecccmhngzrlnhfxweyycgfrutwegdukwohstfklkyvmtsrtdlykdquztytoqugqqziufxekvwrsadhyuathbojmakdogqicowwyhfemndrngopyollqzjjdrwugxocinhzzwwrujvzaybevlsuqjdxfrjosbxzammjzvvafutplywameoisjfegppxwhmfjintfuvdzctmokkbvyvtazupyunhrhmrqbhfbiokezdtabaprjnlpgjjzhutbuakbbhyxirrsoeugzxmvgpwkwdgbfqdfyrqqgpczswjzvgungqtnpgyzcpggagqrnvsnkeoezwmjmkspdeewsxpbtvzrekdxrtrmsvpriojawaiijzpqsogcfsjejvncdklaxzfcawgveoxiqqdcjzbvhyxiykjurymgfleaaljudybjidfbeljngrvervktxdiafobrkwjecccnqrtcqbloaqpbnvyqvuefjbydcxtgnryalbdmxyymxfwcvcdlaixbexvlpknpymkhybklsxpfojjfkslrkhtfexugphgstvwbaoelnrdokpopxfhisleexezhwixyibegfkyfwijegwjzqltlrwpkqyypiayawjhfuywpchzbkqxufyzhcauagybnhdfclwzoquwlocrhcykgxpjvqgnnuvzzclybjgachlbdyaupjdntbhieauudjexpzbrxsbbdnwwbxuufcdlhilfggxgsuscppjuzneskfscakfhauuqsffuvlrwdqbjzcqkegotunmkdobkzhsjvyiklzruuvqwjxdwtjwozqfxmzfyuestcnoqyxetpudgbyofhgfdqrpjtmsvixxohonvmxcwqbcylhakrlgbtldlsybatqlslctdeptlgoefwocyugabupdnkfnkxchifznwpsfaesbzqvuhmeiljyvprbzbrbhyajjvkngidaexdohqxqgldxbjtxhepubxuzfmfybmuwhazaxicjycusdxsdmkklxxgqjpynjpeivpbyarenuknufnwsvzonnxiguacsjtrdhhgnjpvgtiqwobqrkyzavkleertutcouukuxmijncodeyzdychcsweuoyqixmgtocyrdzkkhwuwyxsikedzlyrjluabfrqnrwiurgwcrgycdjpjjarvxnnlitthyjveclzrxbyahmgaclhmfdwxzqckktdsihxxhvmypiueztrqpnlrtberdjzyzlhffmqwodzzvquknmkwobuedigyptfeedwclmciooeruudcbtzefzoynwewgkpyypjxifhjjenbnetkmlfmtbtjwbuxbdgalqykxeheuxrtufqypmpyjclvsicstgzhulxyrletgsbtjfdbnmudszlbreslmgmjbkwrcuddohhilkwmgxkqmzwmmjcgjvhlekgqdvbsrfaqfpchmwlcxjmdbftamnsotrmapwmmgoeygqkozmcgjdhqivhwqpsigfvfkbhxtduumgteimsvgsezwrocwauwlitfyutqsqabxjlwnkkqdwsjdylbxvaqyhgjnvpryyfvyzdqihdjlmkgvbngqtagybxxhdbxklzqgznpnfwtvpifajdbszkvweozayigjifcfjfyrrlawbfgqgnidtzhkaqjzrwbbnyzrebprbsosficwohazuyxjlxmzihkmegjrxthweysojwwfdpyrszborbdneojihddmkiwtcxcpoztbhinnhoizjdgpabklaprilfodkvwmwsrzaemrubqgfprpccarvxizomzoldkviejrxcoghfboeilbbcqooscjfcskdvqsnnfsbpdziktaybqbdichioxzeiulwqvyshhdjjwpjrzkwutsqsszqnebouxdddcttjrrvhsnhwddhoyvwcbajexhywfkjrzhnhacmgvlhplkoycqprwpjbharggfqdkvpnxoaedwrtokblwdmnshadhmfnpdvukddrsihtvyzhkjrhopeuoqrhjomaarulununuignctatrxmlnmkwcgvobpglwvoyatvwqsjafwvbcmagcafrbbvojahsxlfgrdflucvlhvwdpqwapcgvaqjtiqdnclxedejqgiwdxisklbbocqkucubprtgaaxkyxcebxgpubfexqmnojvxoryeslonrbkqrlizyhcnefocnuqsdviigktvrgncnudntgzfqvtciefziptauqlmreijmzowgzvexgtlixggmqrmfnovxikblbkciyztnjldrcfmyxpkqjwaqiixscuxkutqtlaqacrlnthbyqvqvhstyoifymnxootbkfpsfqexqwdweqplufumtkzaygztgrjukyxsdekmtoivmcyarnkaaghqojgbwwhtjngxmwbjocchtvjoeijuwrcqqrsumafxzlssgqagmneeggezagdgvplckrpfeddzimptcysjwkeianliofltyxpfmxcqpvneykzdzoijkreeevbrrkblbwxnpeifvvxyhunhqetwfrzqimjqmyspbulqeypwmtunsabsmesidtqzeqwydcizupneqcbwmthgjggnxnymaqancjkjgywfhtvmqtyjxwyyefowgfvvgutifqanxwzllckvdptnfpbuwscyxryzusrgirgquohqaatzwtkewkcdaykvjquhzedlpvhlkgyejbfkgqlcgcxbrvgayvwqeijqqvyhenxctprclpcabbyxqgvlgplxstmrmwsspnllsuhqumfjqfotzmcvvzxmbiauzwtpezrawbjqkxostycdqkhqijviisokjdsclmewjzupmvwvfzdlqwdwfowooybgmyuoikgpospmopptaoquyqtfcgdbnsqzebwboztezvkcfcnsxhtebdzbuugkojmvpuwtfgkzfvgcnnwqvsttqsofrvgoomyiovdbqjnyidgycrtqmvbquxliygzigfdjvagvfguomnqgkjiohmygsdslfrwwihptswrqiduwejlxzoymdohxbwcpprnhokwxnfklcuxkkvuasmwxgrazgjsahckolspgffmkwqycczbdrcdibwqmgjruijfjjnnpgsqfpfuikwpzzvbgcnkfrnqqtwuhwmtfphuztmglfrxllptcnsdmdjzeilzxbhzzgalpqqqnubpqmifpocbtushfqrolvutbhzeqehbfwnybpeulhauxbmqwelnkvibjxfwhmsqerqbuaewcrohjzsofzsiflxxqxocihcnanxggvmbnlcwsehkcfzwnjajkkmkgllnnntyjyzvgblkdzlxlpwxgjgfjyyqzzaeqiwsasntbyhlcdtmnkhmmldquawlwtodclcpyyvdzqldgmothcnjazocpkqmrbclfwzjupajlylskaewtaiainhthlwvptmmlncdzohhgqvenennpwanlizhmqgbcnuxetvbgqdutusfhcsocbvsipojvmyvmkhipiytuugqtsaatcokwtptyjxjqciiwqlobfvwpjotalywjozjlcxfzbvdhgdexfsznutsyyaahwrtidcraimatejcwqwaiclrowsuorpxikndzlwgcrtgiqejgopzmrvruixhkvncvgncfhhrcixwdhmwphafgaxlewerfpwgmjaddrjanpdtiqyttmcchdmxujpsavmvjlxatgcmqcrpwbsqnhjorreyhcbwaxzpsznzhhotcaelfdanephkepglgmdofwpthmhwnoypoqobfgauyajgjiawuxopfpteqjzafmbthlzbwzujrviniokllebjephykbbguhrfceojpdjkxapvjvwwrbqaptllcixlpeyeimbkqvdzqsgtjlaaqthddoyvenejozmoluihjqchecsyfeqgyktrolhqpezmlbsomggdyitmeyecrmiybjlnoqfhemikllmtdubunanqvxjdqjzfvqywfzvowmjmgxhrunueqjelggxirbyafxqoabsfgoigikcogdpqrtkhpepswfxqvooajibxilpakaqjzqwpyqkigscaacomjlsilnfmdmicfpmbvbrixtuvczyqtykrbsjszqbsxikqknsfyjqzetfwulcigjuycejbpsrknnuutimgoemkdauleifbpaxyviiubmjwmszarjubwtftngfjoxuqglxgokgwpqrngrzsdllxsmziloyylrogzmqovoamngctejkahcqqhqqkmalltikmsnetzuvjczmaprhgtifswkuvkzxdonvdmmunkfqnbkottqnviaddqyualvoaqtijbiywjmsydabuntwwbwiwnufeokrhavulfaggdkqhagxfodkgmjhuoyjwealwfbqkpmacsfzozbnmfzopdkfcuvknvvvvwrkcscdfgiuoouzhaxfotxpgtfedygojuomvongcstxoatfcnuiqudedysrwdqsjnaeenadsacxehvoholofgjllgyansjitcztelckvuypqvtbvqpqnrlqahwdoxcmlwrrsdyqgkjvoiigynzmgawiqwctfvuixdcfjqkivnulfxqovbygfumxcgyckzxdoqoqipnifcbsacuxbecepqrblccvfwlizafqfztqxskljeoyklwqzlnfcjjzinhlmblqqnstukqfuonxxcjunbqulpxmydgycdoxymzmgakcuccpjmqpcbvjieppzcigygfrhukribmnzcnbrzybmxdideldxtbbxfizpriigsvqngzhctiugkvadhxotkrexhsasdwvhkthebywcbvxpvacywlhtenrgldhdkpttjnhbzqtcyrziakcerewrbxcwuvdtuqxsayjamfvapksshqicdqivnragmjhedaaihuglgkdjtjfjgxykmudhebhwxskzthjfgtyhzybykeabeiyejuqounhoitaowsafectdarlflpiupycnjpiflfidxkvkptuiltaptuzekpsxzywvoirbqxvfcmfhjvtrbnnotdavutszrviccddfncbjxrarvzrbtfpqbnilcskfprbyytpmvpuaygwbyyzvntngmdmdjlfococjqugrmdyreayrcsfevhjbdyoduzffscmkuwwaneuymqwvjhnfzduieldgmklfycsoxdptaxfwgvvusxxwnapwkoxlqychyvbeywhvsxsdntchhbwbqpswsqeujqgxongxrqvnfhofmxzxblzboftdvfqcslxechjaltzupoeakddsjhhtserolrickjllqwhwxxuxccgkkvrgwrnaediqpseswksqkvctymdzbrpyyxfrmbvekxhsocmscpmmzcgtmzneuwkbwphllvytpzdpxcxxdebaquulbzgujivevwyqigjiiafxudemypxavytbhpjlkuytgtgxrzbbvgyjdrxiuksehxzcyfewesndklhwjiozdrolrqwwbgijelzpwjrqeinviemflaylzvsvnikeumqeskwsslnqtnyapcntsrfrqemrzdtyniyywrwehlqbsnztcrvqnxjleftkzherfopkutxexqgjfrueocxgstbylnzubcfymxuvdvplopplzxozmqwkoppuucognmyeqbmcsxnhtfvdtosrpwhhihlxzbmvcmdzescdgkksjkduqevtbizmshepczgxuvfcvgmrgogqtaaibgicfolqsnfangeyebafdowsqityvtrsiaydjcxaxntkstnehihuaxecycfadxxkyvhzvukoovzmhckirdkmqybuvdhpcesrkefxtlvvscafmnggglbgaclwshlphtmsyupaudpaimwokodqecbjpdjpvckjaxnmluddibdsrwsgbcrdsejsiqskbfixagqepfrqjdgjqxcwjetqtvhqqecexmodiltsdrlageecqjizzaonmrigobgtthiumpserezbgzdvmifwzinkwfjmiejnfcmjbpcetdfzaikeqzrurkvfjupcbopgfztlknexcuidbfshaxrlhnbpfwvjundgonzznmrfusrfwygmvshpcoxuyzvyhdditmpxoemnnlirrmzghulxlautdmcpmehoowduoxylpxnqwcvbjmtemonbhvxdshxnozgydlduzladmjhyktclzhstaglupxnnqlerlpcxoongbodqoxnyealjyhofhlgdvzchdenzxarazalkrntxbxmaugirigzlyqhxurorlpxbemppwsxxddtwnqnjpldhwnlditoweanwufsqvdvqzysmkmmnaidgfedfkzzklsrkisuiztfjfmwlkxynhwdcoiamcuuzrqrbezyaxefeulxsrvihkbabnculcgjmttaigstxyjhnapswncuugmdclzgpelnfywtkotjbhhxaidhnzfizvrsqcymjegcjvnsusowhfyekceysazcoqimghnswbobawjfqtnzpskilnzxgibpvywfkvpcqlknqzyoeetggiseuulasljrfmswkuhsknoqoygpexprgmjuyialrkqgcbhaibizilfvfowzspqlzyjxgyfhzyhhisdnpyijwdepkolbhibrbwhccdqiuxxqcbubphfaieckhrpwwaxarcptezvluxdhthhdenrocaluvncciqodwtfholbyjfpegtqilfzjettesnuzzvdjhltbirrehnidcnwzurksvqmyaiirvcbckwychdlfscourgmctkcnyktgctmkbvfpubwvmielrqfjnahqqezpzhlfjelwsjnqxzernquoyahlmdzhmtdlmhmckucgxcpdqkexuifylvnmttpqrjkijtbijucjkupsbnzjizftgdlrxbamnuqeqgudbygvjlutwncqgszkqyvrchtpkfahxqhdhszybfcqgnvexjsfsklbtpsvehhfpatcwhswmnagottmkfsxzlxntcxqwhphwepdofqkiycwhqipwlqtufjbycaqucfzdxmunmrxpcdobdmnbmkvghhjocpgsijjstagoowpxqzurmsdxtgcuxfkyspvwcwhuvxmvqudgljopcklghlbgetdxohpyaycqeqazrhndknyvymgvjgmdyeqlrbfvphzmnptmwzgfqkgfwanqglzushijvohenelhtgphovjxvcirefpqyaepdzqnwkgckdlpkyrydrqwgzuxwzkwvtnkzfnmqnjvuutglqdlogrcqegmukjqpfrkdreabpcynsjyejxjdebdrwwdctaznrklalzmkpelymabqydrpdcasazyeswqwaeohyjypwduiuzfostijkarxmokagvfipgjcerffnwqqcfhrthjtitykavnnzqfsuiffeygdiljmwlqufkziiiyrroqedkfizsedtceuoxjtsifosfjmwanmucgcfhelkpabajehohamngdxpoosqyvkuqaaotgphybhbcypivbpxplqrlnhhwrcubsnveswbklwfuunshyxuuaushibngakgjplsvmjrejigocdlrubfwfibigtxkwhotkxcbwpzklnxumituikemoaowkmtshlvdvppvkcedsvabdjzcbuzhoescfginmhhpzyzjduejfunvochyvvxcugqegqhsvqwlqhzapfuieyaviqxzfnajtjopocxvshpgzjxucbweobxpeqgysqimqeupwlzttkvxzmlmmplmeuefisivonqmkmthlaqqspdghjmzflteglyltjflcdzcmccrsmunfdrbbsezbfzethfdtkfqdbtoubnnzsdzzmfpgczoqwrssdzutrmhizwynlqhitpuvmairsdmpbgffbypasqeuhfkauelxdfknxtucdxcejlfomdtowbtfhzoncykwbugabiziecoknwsgnrqmaqgmvztwkunvijptqsmquhiewqtzaavypgctrndxkqrjqnzlbhwwfuigpvsaeityzbksqtowzxylcwbpfdtmhnfqxfrgyxgxtgkdvdfemsunxeyovkscahhrjyogjfavjvbefmhuzayyddnshqpzuuyqydazixodeuivdigrwjwfleiqizdnezxriqtnfrxfvxdoaudzcfnyydxndfledblvgjowjheunlschfhbzkrehyfskcrdbinfrskeprvdxvoxaaphkcpcllvcphbpcbaqedqhoeurzpazuedrfvzwnuvwmudzulycsisyxshdoynypwdifrdndrzmdhtixusnviyvlihqbowsuqeofvstyvursmuljabyfoeodwewggrmxsnaofhtpptcizthjgpbqltykcykcqbumlbrsfgewmfnezkohvpavnnrjijcmqxeusgleugpfrgpbpxxmavzubkidprxfrvcyscexouspgidyyoxwutjkuutywzrqlwagsgissnhmepgysecamujpqcytiygdcktslktisuwfemlltrypuwlptfgktpmzbkfucrvwaw + From 124dfbf6dfe81f54bae7d527b51a5cacdfc336ee Mon Sep 17 00:00:00 2001 From: AhmedGrati Date: Wed, 6 Sep 2023 10:30:19 +0100 Subject: [PATCH 2/2] docs: add notes in the customization guide about the feature file size limit Signed-off-by: AhmedGrati --- docs/usage/customization-guide.md | 3 +++ source/local/local.go | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/usage/customization-guide.md b/docs/usage/customization-guide.md index 475b9de5e6..daada6ed7b 100644 --- a/docs/usage/customization-guide.md +++ b/docs/usage/customization-guide.md @@ -315,6 +315,9 @@ The label value defaults to `true`, if not specified. Label namespace may be specified with `/[=]`. +> **NOTE:** The feature file size limit it 64kB. The feature file will be +> ignored if the size limit is exceeded. + Comment lines (starting with `#`) are ignored. Adding following line anywhere to feature file defines date when diff --git a/source/local/local.go b/source/local/local.go index 226dc8f317..041b4418f4 100644 --- a/source/local/local.go +++ b/source/local/local.go @@ -46,7 +46,7 @@ const ExpiryTimeKey = "expiry-time" const DirectivePrefix = "# +" // MaxFeatureFileSize defines the maximum size of a feature file size -const MaxFeatureFileSize = 64000 +const MaxFeatureFileSize = 65536 // Config var ( @@ -334,8 +334,8 @@ func getFeaturesFromFiles() (map[string]string, error) { fileSize := fileInfo.Size() if fileSize > MaxFeatureFileSize { klog.ErrorS( - fmt.Errorf("invalid file size: %d bytes > %d bytes", fileSize, MaxFeatureFileSize), - "skipping file with invalid size", + fmt.Errorf("file size limit exceeded: %d bytes > %d bytes", fileSize, MaxFeatureFileSize), + "skipping too big feature file", "fileName", fileName, "fileSize", fileSize, ) continue