Informatec Digital » Burime » IA lokale dhe automatizimi: agjentë, siguri dhe raste të botës reale
IA lokale u mundëson agjentëve autonomë të kryejnë detyra komplekse në harduerin tuaj, duke ruajtur privatësinë e të dhënave.
Sisteme si NVIDIA NemoClaw integrojnë modele të hapura, sandboxing dhe kontroll të detajuar të mjeteve për vendosje të sigurt.
Projekte si OpenClaw, Jan AI, PocketBot ose Ollama+Open WebUI sjellin automatizim lokal në PC dhe celularë pa tarifa.
Pamjet e ekranit, regjistrimi i zërit, mbledhja e të dhënave nga uebi dhe dosjet personale të strukturuara ju lejojnë të automatizoni pjesën më të madhe të jetës suaj dixhitale.
Automatizimi lokal i inteligjencës artificiale po shkon përtej të qenit vetëm për entuziastët e teknologjisë me servera shtëpiakë dhe po bëhet një mundësi e zbatueshme për këdo që kërkon kontroll, privatësi dhe fleksibilitet më të madh. Sot, nuk keni më nevojë të mbështeteni në cloud-in e një kompanie të madhe për të pasur agjentë të aftë të lexojnë ekranin tuaj, të lëvizin mausin tuaj, të punojnë me skedarët tuaj ose të ekzekutojnë rrjedha pune komplekse në sfond.
Peizazhi ka shpërthyer: nga paketa të plota si NemoClaw i NVIDIA-s për agjentë autonomë në harduerin tuaj, te aplikacione celularë si PocketBot që e shndërrojnë gjuhën natyrore në automatizime telefonike, te platforma të hapura si OpenClaw, asistentë si Jan AI dhe udhëzues praktikë për ndërtimin e "ChatGPT-së" tuaj të bërë në shtëpi me Ollama dhe Open WebUI. Qëllimi është i njëjtë: të ndërtohet një ekosistem ku IA jeton në kompjuterin tuaj, bashkëvepron me programet tuaja dhe automatizon detyrat tuaja të përditshme pa i hequr të dhënat nga sistemi juaj.
Çfarë është automatizimi lokal i inteligjencës artificiale dhe pse ka rëndësi?
Kur flasim për IA lokale për automatizim , i referohemi modeleve dhe agjentëve që funksionojnë në pajisjen tuaj (PC, server, DGX, celular) pa dërguar të dhëna të ndjeshme në servera të jashtëm. Modeli merr vendime, ekzekuton kod, lexon skedarë, thërret API-të dhe koordinon mjetet, por gjithçka ndodh brenda mjedisit tuaj të kontrolluar.
Evolucioni ka qenë dramatik: nga chatbot-e të thjeshtë që u përgjigjeshin vetëm pyetjeve, kemi kaluar në agjentë të inteligjencës artificiale të aftë për të ekzekutuar sekuenca detyrash , duke orkestruar hapa të shumtë, duke konsultuar burime të ndryshme të dhënash dhe duke marrë vendime autonome. Kjo ka ndryshuar plotësisht mënyrën se si e kuptojmë automatizimin: modeli nuk është më vetëm "ai që përgjigjet", është "ai që vepron".
Ky ndryshim ka një pasojë të dukshme: më shumë autonomi do të thotë më shumë rrezik . Nëse i jepni një agjenti qasje në sistemin e skedarëve, kredencialet tuaja, shfletuesin tuaj ose mjetet tuaja të zhvillimit, ju nevojitet një dizajn i fuqishëm sigurie. Këtu shkëlqejnë qasjet lokale, sepse mund të kufizoni lejet, të izoloni proceset dhe të monitoroni nga afër atë që po bën modeli në çdo moment të caktuar.
Për më tepër, modelet me burim të hapur me licenca falas si Apache 2.0 ose MIT (si shumë Falcon, Bark, Jan, etj.) ju lejojnë të ndërtoni zgjidhje pa u lidhur me kontrata ose politika përdorimi të errëta. Mund ta auditoni kodin, ta rregulloni modelin, të aplikoni rregullime të hollësishme dhe madje ta integroni atë me pajisje specifike si GPU-të A100 ose stacionet e punës NVIDIA DGX.
Për shumë sektorë (kujdes shëndetësor, bankar, juridik, administratë publike), ku privatësia dhe ruajtja e sigurt janë të shenjta, kombinimi i inteligjencës artificiale lokale + agjentëve autonomë + modeleve të hapura po bën një ndryshim: ju automatizoni, por të dhënat nuk dalin nga perimetri juaj.
Stiva lokale të IA-së për automatizim të përparuar: NemoClaw, OpenShell dhe OpenClaw
NVIDIA ka hyrë fuqishëm në këtë treg me NemoClaw , një program me burim të hapur i projektuar për të vendosur agjentë autonomë në mënyrë të sigurt në nivel lokal dhe për të siguruar që ata janë gjithmonë aktivë. Është projektuar për t'u ekzekutuar në makina të fuqishme si NVIDIA DGX Spark, por filozofia është e zbatueshme edhe në mjedise të tjera të çertifikuara.
NemoClaw vepron si një shtresë orkestrimi : instalon dhe koordinon OpenShell (kohën e ekzekutimit të sigurisë) dhe OpenClaw (kornizën e agjentëve shumëkanalësh), konfiguron nxjerrjen e modelit (nëpërmjet Ollama ose NVIDIA NIM) dhe zbaton politikat e sigurisë që nga fillimi, jo si një përditësim i minutës së fundit.
Në zemër të kësaj pakete zakonisht është NVIDIA Nemotron 3 Super 120B , një model me 120.000 miliardë parametra i optimizuar për agjentët: shumë i mirë në ndjekjen e udhëzimeve komplekse, trajtimin e mjeteve dhe arsyetimin me shumë hapa. Megjithatë, për të ekzekutuar diçka të kësaj madhësie, ju nevojitet një GPU serioze dhe shumë memorie; vetëm për modelin priten rreth 87 GB.
Inferenca zakonisht ofrohet duke përdorur Ollama si kohën e ekzekutimit lokal , e cila ekspozon një API REST në makinën lokale. NemoClaw komunikon me këtë API për të dërguar kërkesa, për të marrë përgjigje dhe për të koordinuar thirrjet e mjeteve duke përdorur modelin e thirrjes së mjeteve.
Komponenti OpenShell është çelësi i sigurisë : ai zbaton sandboxing, kontrollon kredencialet, vepron si një ndërmjetës rrjeti dhe zbaton parimin e privilegjit më të vogël. Ai monitoron lidhjet që agjenti përpiqet të kryejë dhe ju lejon të miratoni ose bllokoni pikat fundore nga një ndërfaqe e ngjashme me TUI. Në këtë mënyrë, nëse modeli përpiqet të hyjë në një shërbim të ri, asgjë nuk ndodh pa miratimin tuaj.
Brenda sandbox-it ndodhet OpenClaw, shtresa e agjentëve shumëkanalësh . Ai merret me komunikimin me platforma si Telegram, Slack dhe Discord, menaxhon memorien e agjentëve, lidh mjetet (skriptet, API-të, shfletuesit) dhe mirëmban biseda afatgjata. Nëse dëshironi një asistent gjithmonë aktiv, të arritshëm nëpërmjet mesazheve dhe me memorie të përhershme, ky është komponenti që e bën të mundur këtë.
Siguria, sandboxing dhe vendosja lokale hap pas hapi
Një nga pikat e forta të këtij grupi është se siguria është e integruar që në fazën e projektimit , nuk shtohet më vonë. Gabimi tipik në projektet e agjentëve është që së pari të zbatohen të gjitha funksionalitetet dhe më pas të përpiqesh të "forcosh" atë që është ndërtuar tashmë, duke krijuar dobësi kudo.
Mekanizmi kryesor është sandbox-i i ekzekutimit . I gjithë kodi që agjenti dëshiron të ekzekutojë ekzekutohet brenda një mjedisi të izoluar: nuk ka qasje të drejtpërdrejtë në sistemin e skedarëve të hostit, nuk mund të bëjë thirrje arbitrare të rrjetit dhe nuk mund të përshkallëzojë privilegjet përtej asaj që është përcaktuar në konfigurim.
Kjo e zbut shumë ndikimin e sulmeve të injektimit të shpejtë ose udhëzimeve keqdashëse. Nëse modeli vendos të bëjë diçka të pazakontë, dëmi mbetet i kufizuar brenda sandbox-it. Megjithatë, vetë NVIDIA pranon se asnjë sandbox nuk është perfekt, kështu që ata rekomandojnë gjithmonë testimin e mjeteve të reja në sisteme të izoluara.
Për më tepër, NemoClaw zbaton kontroll të detajuar dhe në kohë reale të mjeteve dhe politikave . Si parazgjedhje, agjenti mund të komunikojë vetëm me një numër të kufizuar pikash fundore të rrjetit. Kur përpiqet të kryejë diçka të re, OpenShell e bllokon atë dhe ju mund të shihni saktësisht se çfarë po përpiqet të bëjë (host, portë, proces). Pastaj mund ta miratoni atë për atë seancë ose të shtoni një politikë të përhershme në host.
Rrjedha e vendosjes në një DGX Spark zakonisht ndjek këto hapa: konfiguroni Ubuntu 24.04 LTS me drajverët NVIDIA duke ndjekur një udhëzues për montimin e kompjuterit , instaloni Docker 28.xo ose më të lartë me GPU runtime, instaloni Ollama dhe shkarkoni modelin Nemotron 3 Super 120B, dhe së fundmi nisni instalimin NemoClaw me një komandë të vetme që shkakton një asistent konfigurimi.
Ky proces integrimi ju udhëzon përmes emrit të sandbox-it, ofruesit të përfundimeve, modelit të zgjedhur, paracaktimeve të sigurisë dhe, nëse dëshironi, integrimit të Telegram. Koha aktive e konfigurimit vlerësohet në 20-30 minuta, plus 15-30 minuta të tjera për të shkarkuar modelin, në varësi të gjerësisë së brezit.
Sa i përket performancës, duhet të jemi realistë: një përgjigje me një model parametrash 120B mund të zgjasë midis 30 dhe 90 sekondave në një kontekst lokal. Nuk është problem në vetvete, por duhet të merret në konsideratë kur hartohen rrjedhat e përdorimit dhe llojet e detyrave që i caktoni agjentit.
Qasje në distancë, ndërfaqe web dhe pajisje të dizajnuara për inteligjencën artificiale lokale
Pasi gjithçka të jetë konfiguruar, mund të bashkëveproni me agjentin në disa mënyra. Më e zakonshmja është nëpërmjet Telegram , duke përdorur një bot të krijuar me @BotFather. Është një zgjedhje praktike: API i fuqishëm, enkriptim, aplikacione për të gjitha llojet e pajisjeve dhe nuk ka nevojë të ekspozoni portet e serverit tuaj ndaj botës së jashtme.
Boti merr mesazhet tuaja, ia përcjell ato agjentit në DGX dhe ju dërgon një përgjigje. Është interesante se, megjithëse biseda kalon nëpër infrastrukturën e Telegramit, nxjerrja e informacionit dhe qasja në të dhëna të ndjeshme mbeten 100% lokale në makinën tuaj.
Përveç kësaj, NemoClaw ofron një ndërfaqe private në internet të arritshme nëpërmjet një URL-je të tokenizuar të gjeneruar vetëm një herë në fund të procesit të integrimit. Është shumë e rëndësishme ta ruani këtë URL menjëherë, pasi nuk do të shfaqet më. Për ta parë atë nga një makinë tjetër në rrjet, duhet të konfiguroni një tunel SSH dhe përçim portash duke përdorur OpenShell.
Një detaj i vogël, por i rëndësishëm, është se URL-ja duhet të hapet me 127.0.0.1 në vend të localhost . Përdorimi i localhost mund të shkaktojë gabime "origjine të paautorizuar" (CORS), të cilat mund t'ju humbasin kohë nëse nuk jeni në dijeni të kësaj.
Për funksionimin e përditshëm, ekzistojnë disa komanda të dobishme CLI : hapni një shell brenda sandbox-it, shikoni statusin, ndiqni regjistrat në kohë reale, listoni sandbox-et, filloni ose ndaloni urën e Telegram-it, aktivizoni përcjelljen e portave ose ekzekutoni një skript të pastër çinstalimi që heq të gjithë pirgun.
Për sa i përket harduerit, NVIDIA DGX Spark është projektuar qartë për këto raste përdorimi. Është një sistem kompakt me GPU NVIDIA dhe memorie të unifikuar me gjerësi të lartë brezi, ideal për të ekzekutuar modele të mesme deri të mëdha me vonesë të ulët pa pasur nevojë për një konfigurim të plotë të qendrës së të dhënave.
Memoria e unifikuar është veçanërisht e dobishme me një nga pengesat klasike: lëvizjen e të dhënave midis CPU-së dhe GPU-së. Duke ndarë hapësirën e memories, modeli i qaset të dhënave shumë më me efikasitet, duke lejuar që modelet me dhjetëra miliarda parametra të ngarkohen në kohë (pothuajse) reale - diçka e paimagjinueshme deri vonë në pajisjet e konsumatorit.
Agjentët lokalë të njohur të IA-së: shembuj dhe raste përdorimi
Përtej ekosistemit NVIDIA, ekziston një numër agjentësh të inteligjencës artificiale dhe platformash të orientuara drejt automatizimit të disponueshme në kompjuterin tuaj që ia vlen të eksplorohen. Secila prej tyre synon një lloj të ndryshëm përdoruesi dhe një grup të dallueshëm detyrash.
OpenClaw, për shembull, është bërë popullor si një platformë agjentësh me burim të hapur që vepron si një asistent personal. Ai u lejon përdoruesve të krijojnë agjentë të personalizuar për të pastruar kutinë e tyre hyrëse, për të dërguar mesazhe, për të menaxhuar kalendarin e tyre, për të organizuar udhëtime ose për të automatizuar detyra të përsëritura në jetën e tyre dixhitale.
Mund të instalohet në Windows, macOS dhe Linux , dhe është projektuar për të funksionuar me modelet LLM në nivel lokal, gjë që përmirëson privatësinë dhe zvogëlon varësinë nga cloud. Për më tepër, integrohet me aplikacione mesazhesh si WhatsApp, Telegram, Discord, Slack, Signal dhe Apple Messages, kështu që agjenti juaj funksionon "prapa skenave" të bisedave që përdorni tashmë.
Përmes shtojcave, mund të jepni akses në shfletues, rrjete sociale, klientë email-i dhe aplikacione të tjera, si dhe t'i lejoni ata të bashkëveprojnë me sistemin e skedarëve, të ekzekutojnë komanda dhe skripte ose të automatizojnë detyra tipike të zyrës dhe të produktivitetit. E gjithë kjo bëhet me një fokus të qartë në lejimin e përdoruesit të zgjedhë se në cilat dosje, aplikacione dhe shërbime mund të hyjë agjenti.
Në ekosistemin më gjeneralist, platforma si Perplexity Computer dallohen , duke e transformuar Perplexity nga një motor kërkimi i thjeshtë bisedor në një asistent të aftë për të ekzekutuar rrjedha pune komplekse. Ky modalitet Computer u lejon përdoruesve të shfletojnë uebin, të krijojnë dhe menaxhojnë dokumente, të shkruajnë kod, të përpunojnë të dhëna dhe të koordinohen me shërbime si Gmail, Slack, GitHub dhe Notion.
Forca e tij qëndron në shfrytëzimin e modeleve si Claude, GPT, Gemini ose Sonar i Perplexity për të menaxhuar vëllime të mëdha të dhënash dhe për të ndarë detyrat komplekse në nëndetyra që mund të ekzekutohen në seri ose paralelisht. Ndërsa jo gjithmonë tërësisht lokal, modeli i agjentit dhe integrimi me mjetet janë shumë të ngjashme me ato të agjentëve që funksionojnë në makinën tuaj.
Në sferën tërësisht me burim të hapur dhe lokale, Jan AI paraqitet si një zëvendësim i ChatGPT që mund të instalohet në Windows, Mac dhe Linux. Ju lejon të përdorni modele lokale si Llama (Meta) ose Gemma (Google), ose të lidheni me modele online si ChatGPT, Claude, Gemini, Mistral, Qwen ose DeepSeek nëse jeni të interesuar për një përzierje.
Jan AI funksionon si një asistent klasik bisedor (duke bërë pyetje, duke hartuar skica, duke përmbledhur, duke përkthyer, duke rishkruar, duke shpjeguar) dhe si një agjent i aftë për të përpunuar skedarë dhe dokumente, duke ekzekutuar komanda dhe duke gjeneruar kod në gjuhë të ndryshme. Për më tepër, fokusi i tij në personalizim e bën të lehtë krijimin e agjentit tuaj me udhëzime specifike dhe kalimin midis "profileve" të ndryshme në varësi të detyrës në fjalë.
Agjentë në pajisje: PocketBot dhe automatizimi celular
Koncepti i inteligjencës artificiale lokale nuk kufizohet vetëm në PC . Ai po ka një ndikim të fortë edhe në pajisjet mobile, ku gjithnjë e më shumë projekte po përqendrohen në modele të vogla, por të specializuara, për të automatizuar telefonin pa u mbështetur në cloud.
Një shembull i qartë është PocketBot, një agjent që funksionon direkt në iPhone duke përdorur llama.cpp mbi Metal . Misioni i tij është të shndërrojë gjuhën natyrore në automatizime telefonike: në vend që të kaloni nëpër menu ose shkurtore të panumërta, ju përshkruani atë që dëshironi dhe agjenti e përkthen atë në veprime.
PocketBot përdor një model të kuantizuar me 3 miliardë parametra , që funksionon tërësisht në nivel lokal dhe pa dërguar të dhëna në servera të jashtëm. Memoria e disponueshme në një iPhone 15 Pro është zakonisht vetëm 3.000-4 GB para se iOS të fillojë ndërprerjen e proceseve, duke e bërë madhësinë e modelit dhe kuantizimin kritik.
Një nga sfidat që përmendin krijuesit e saj është gjetja e modeleve të besueshme dhe të vogla për thirrjen e mjeteve dhe daljen e strukturuar të JSON. Duke përdorur Qwen3, për shembull, ata hasin probleme të tilla si emra parametrash të shpikur, JSON të keqformuar (mungojnë kllapat) dhe respektim jokonsistent i skemës, gjë që kërkon zbatimin e shtresave të korrigjimit automatik dhe riprovimit.
Gjithashtu, ka shumë debate rreth pikës optimale të kuantizimit për të arritur raportin më të mirë cilësi/memorie, me opsione të tilla si q4_K_M ose q5_K_S që merren në konsideratë në varësi të gjenerimit të çipit dhe memories së disponueshme. Çdo bit më i vogël në kuantizim rezulton në modele më të menaxhueshme, por mund të ndikojë negativisht në arsyetimin dhe saktësinë në thirrjet e mjeteve.
Një fushë tjetër fokusi është rregullimi i parametrave të marrjes së mostrave sipas detyrës. Konfigurimet tipike përfshijnë temperaturën 0,7, top_p 0,8, top_k 20 dhe repeat_penalty 1,1, por ka interes në ndarjen e strategjive të gjenerimit për bisedë të rrjedhshme nga thirrja e mjeteve, ku determinizmi është më i rëndësishëm sesa kreativiteti.
Së fundmi, në celular, menaxhimi i kontekstit është veçanërisht delikat: kërkesa e sistemit zakonisht ruhet në memorjen e përkohshme KV për të shmangur ripërpunimin e saj, dhe dritaret rrëshqitëse përdoren për të shmangur tejkalimin e kapacitetit; prandaj është e rëndësishme të dini se si t'i ruani dhe organizoni kërkesat tuaja .
Përtej kësaj, ka hapësirë për truke përmbledhëse graduale, kujtesë selektive ose skema hibride që kombinojnë historinë e kompresuar dhe kontekstin e menjëhershëm.
Konfiguroni "ChatGPT-në tuaj lokale" me Ollama dhe Open WebUI
Për ata që nuk kanë nevojë për një platformë aq komplekse sa NemoClaw, por duan një asistent të tipit ChatGPT që të funksionojë në kompjuterin e tyre , një qasje shumë praktike e bazuar në Ollama dhe Open WebUI është bërë popullore.
Ideja është e thjeshtë: Ollama shkarkon dhe shërben modele (Llama, Gemma, Qwen, etj.) në makinën tuaj nëpërmjet një API-je lokale, dhe Open WebUI ofron një ndërfaqe web shumë të ngjashme me ChatGPT, por që funksionon tërësisht në makinën tuaj. I gjithë trafiku midis ndërfaqes së përdoruesit dhe modelit kalon nëpërmjet localhost.
Një udhëzues i thjeshtë dhe hap pas hapi detajon se si, me rreth 15 komanda terminali , mund ta keni këtë konfigurim të gatshëm për përdorim në më pak se një orë. Ai përfshin instalimin e Python 3.11, konfigurimin bazë të sistemit, instalimin e Ollama dhe vendosjen e Open WebUI, së bashku me pamje të ekranit dhe këshilla për zgjidhjen e problemeve.
Rezultati është një mjedis ku ju shijoni kosto zero abonimi , privatësi të plotë (të dhënat nuk dalin kurrë nga kompjuteri juaj), kohë reagimi konkurruese (pa radhë të përbashkëta në server) dhe liri të plotë për të personalizuar asistentët e specializuar sipas nevojave tuaja.
Për më tepër, Open WebUI integron veçori të përparuara si kërkimi në internet, një interpretues kodi, krijimin e modeleve të personalizuara nga konfigurime specifike dhe po përgatit aftësi të përparuara RAG për ndërtimin e bazave personale të njohurive. Ideja është që ju të mund të keni një "bashkëpilot" të trajnuar për dokumentet dhe rrjedhat e punës suaj pa u mbështetur te palët e treta.
Pas disa muajsh përdorimi, shumë përdorues raportojnë se ky kombinim i ka zëvendësuar plotësisht abonimet e tyre me pagesë në zgjidhjet cloud , ndërkohë që ka përmirësuar edhe integrimin me të dhënat dhe mjetet e tyre lokale. Hapi tjetër logjik është lidhja e këtij "ChatGPT të zhvilluar në vend" me agjentë, skripte dhe shërbime për të koordinuar automatizime më komplekse.
Automatizoni jetën tuaj dixhitale: shembuj praktikë me inteligjencën artificiale lokale
E gjithë kjo tingëllon shkëlqyeshëm nga një këndvështrim teknik, por çfarë mund të bëni në të vërtetë në operacionet e përditshme me agjentë lokalë të konfiguruar mirë ? Mundësitë janë mjaft të gjera nëse kombinoni modelet multimodale, aksesin në ekran, mjetet dhe hapësirën e strukturuar të ruajtjes.
Ekzistojnë propozime të hartuara për të automatizuar përdorimin e kompjuterit tuaj me agjentë që marrin pamje të ekranit dhe veprojnë mbi to. Fluksi i punës do të ishte diçka e tillë: sistemi merr një pamje të ekranit, agjenti e përpunon atë me një model të aftë për të punuar me imazhe, kupton se cili aplikacion është i hapur, cilët butona janë të pranishëm, çfarë teksti shfaqet dhe bazuar në kërkesën tuaj, vendos se çfarë të bëjë më pas.
Me këtë ide, për shembull, mund të krijoni agjentë të specializuar përkthimi : sistemi kap pjesën e ekranit që dëshironi të përktheni, e zmadhon atë në një dritare "përkthyesi me xham zmadhues" dhe gjeneron një përkthim pothuajse të menjëhershëm duke përdorur një model të vogël (për shembull, me parametra 4B) të akorduar për përkthim, si një variant i akorduar mirë i PHI.
Një fushë tjetër interesante janë modelet vizuale që transformojnë pamjet e ekranit në PDF . Imagjinoni një mjet që, nga pamjet e ekranit të prezantimeve, paneleve ose dokumenteve, gjeneron PDF të formatuara mirë që më pas mund t'i rafinoni ose t'i përdorni direkt në prezantimet tuaja. Duke integruar Python me Acrobat, mund të automatizoni të gjithë procesin.
Për të punuar me uebin pa u varur nga shërbimet e jashtme, teknologjitë veterane si p.sh. BeautifulSoup janë ende shumë të dobishme Mund të konfiguroni një scraper të lehtë që zvarrit disa faqe dhe mban vetëm HTML-në e nevojshme (për shembull, duke nxjerrë vetëm
, p, h1, h2, h3) dhe i kalon modelit vetëm tekstin e filtruar. Kjo zvogëlon zhurmën, ju jep kontroll të plotë mbi atë që sheh IA dhe eliminon varësinë nga API-të e palëve të treta. Nëse agjenti ka gjithashtu qasje në kursorin dhe mjetet e redaktimit të videos , kjo hap derën për automatizimin e detyrave në programe si DaVinci Resolve ose Adobe After Effects. Agjenti do të krahasonte pamjen e fundit të ekranit me atë tjetër, do të nxirrte përfundimin se ku duhet ta vendoste miun dhe çfarë veprimi duhet të kryente për të përparuar drejt rezultatit që kërkuat. Për sa i përket audios, mund të integroni një sistem zanor me vlerësimin njerëzor : agjenti gjeneron një frazë (për shembull, "Mirëmëngjes, dashuria ime"), ju i jepni një pikëzim nga 1 deri në 10 dhe vendosni nëse do ta ruani. Ky vlerësim mund të përdoret për të rregulluar parametra të tillë si temperatura e gjenerimit, ose mund ta rregulloni manualisht nga një dritare e dedikuar. Duke i ruajtur zërat në skedarë si {phrase}-{number}.mp3 ose .wav , mund t'i ripërdorni dhe rikombinoni zërat në seancat e ardhshme. Modele si Bark, të licencuara nga MIT, i përshtaten shumë mirë këtij personalizimi pothuajse të pafund, madje duke shtuar nuanca emocionale kur ka kuptim. Për të organizuar të gjithë këtë informacion, është thelbësore t'i siguroni agjentit një dosje personale të strukturuar në kompjuterin tuaj: user-info/, search-data/, screenshots/, screenshots-for-translate/, voices/, lang/, code-spaces/… Në vend që të ngarkoni kodin tuaj në GitHub, mund të ruani projektet lokalisht dhe të zgjidhni cilat depo ose dosje përdor agjenti si kontekst në çdo seancë. Së fundmi, nëse dëshironi që modeli t'ju përshtatet për një periudhë të caktuar kohore, mund të eksploroni teknikat e vogla të rregullimit të imët, të tilla si LoRA ose QLoRA . Këto qasje ju lejojnë të përshtatni modelin sipas stilit ose domenit tuaj pa pasur nevojë të rikualifikoni gjithçka nga e para, megjithëse në mjedise ku produktiviteti i pastër është parësor, mund të mos ia vlejë ta keni gjithmonë aktiv; idealisht, duhet të jeni në gjendje ta aktivizoni ose çaktivizoni atë personalizim. Në këtë kontekst, zgjedhja e modelit bazë bëhet gjithashtu e rëndësishme: shumë zhvillues kërkojnë modele Apache-2.0 ose MIT , si në madhësi të vogla (parametra 2-4B) për prototipa dhe pajisje modeste, ashtu edhe në modele 30B të trajnuara me pajisje të nivelit të lartë (p.sh., GPU A100) për rregullime të imëta në shkallë të gjerë. Është vlerësuar se disa muaj punë serioze në këtë fushë mund të japin rezultate shumë konkurruese. Duke parë të gjithë ekosistemin në tërësi, automatizimi i inteligjencës artificiale në ambientet e tij po kalon nga një eksperiment në një infrastrukturë të fortë , si për përdoruesit individualë të ngopur me tarifat mujore, ashtu edhe për kompanitë që nuk kanë mundësi të nxjerrin të dhëna të ndjeshme jashtë ambienteve të tyre. Desde stacks listos para producción como NemoClaw hasta configuraciones caseras con Ollama y Open WebUI, pasando por agentes de escritorio y móviles como OpenClaw, Jan AI o PocketBot, el denominador común es el mismo: más control, más privacidad y una autonomía de la IA que, por primera vez, puedes gobernar tú.</p>
<div class="post-relacionado-wrapper"><a href="https://informatecdigital.com/microsoft-mu-la-nueva-ia-local-que-revoluciona-la-configuracion-en-windows-11/?utm_source=destacado-inside" class="post-relacionado"><picture fetchpriority="high" decoding="async" class="attachment-medium size-medium wp-post-image">
<source type="image/webp" data-lazy-srcset="https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0-400x225.jpg.webp 400w, https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0-768x432.jpg.webp 768w, https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0.jpg.webp 1200w" sizes="(max-width: 400px) 100vw, 400px"/>
<img fetchpriority="high" decoding="async" width="400" height="225" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20400%20225'%3E%3C/svg%3E" alt="microsoft mu ia-0" data-lazy-srcset="https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0-400x225.jpg 400w, https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0-768x432.jpg 768w, https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0.jpg 1200w" data-lazy-sizes="(max-width: 400px) 100vw, 400px" data-lazy-src="https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0-400x225.jpg"/><noscript><img fetchpriority="high" decoding="async" width="400" height="225" src="https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0-400x225.jpg" alt="microsoft mu ia-0" srcset="https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0-400x225.jpg 400w, https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0-768x432.jpg 768w, https://informatecdigital.com/wp-content/uploads/2025/06/microsoft-mu-ia-0.jpg 1200w" sizes="(max-width: 400px) 100vw, 400px"/></noscript>
</picture>
<div><div>Related article:</div><div class="post-relacionado-title">Microsoft Mu: la nueva IA local que revoluciona la configuración en Windows 11</div></div></a></div>
<div id="toc_container" role="navigation" aria-label="Table of Contents" data-nosnippet class="no_bullets toc_title_center"><p class="toc_title">Tabla de Contenidos</p><ul class="toc_list"><li><a href="#Que_es_la_automatizacion_con_IA_local_y_por_que_importa">Qué es la automatización con IA local y por qué importa</a></li><li><a href="#Stacks_de_IA_local_para_automatizacion_avanzada_NemoClaw_OpenShell_y_OpenClaw">Stacks de IA local para automatización avanzada: NemoClaw, OpenShell y OpenClaw</a></li><li><a href="#Seguridad_sandboxing_y_despliegue_local_paso_a_paso">Seguridad, sandboxing y despliegue local paso a paso</a></li><li><a href="#Acceso_remoto_interfaz_web_y_hardware_pensado_para_IA_local">Acceso remoto, interfaz web y hardware pensado para IA local</a></li><li><a href="#Agentes_de_IA_locales_populares_ejemplos_y_casos_de_uso">Agentes de IA locales populares: ejemplos y casos de uso</a></li><li><a href="#Agentes_en_el_dispositivo_PocketBot_y_automatizacion_en_el_movil">Agentes en el dispositivo: PocketBot y automatización en el móvil</a></li><li><a href="#Montar_tu_propio_ChatGPT_local_con_Ollama_y_Open_WebUI">Montar tu propio “ChatGPT local” con Ollama y Open WebUI</a></li><li><a href="#Automatizar_tu_vida_digital_ejemplos_practicos_con_IA_local">Automatizar tu vida digital: ejemplos prácticos con IA local</a></li></ul></div>
<!-- CONTENT END 1 -->
</div>
<footer class="entry-meta" aria-label="Meta de entradas">
<span class="cat-links"><span class="gp-icon icon-categories"><svg viewBox="0 0 512 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><path d="M0 112c0-26.51 21.49-48 48-48h110.014a48 48 0 0143.592 27.907l12.349 26.791A16 16 0 00228.486 128H464c26.51 0 48 21.49 48 48v224c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112z" /></svg></span><span class="screen-reader-text">Categorías </span><a href="https://informatecdigital.com/inteligencia-artificial/" rel="category tag">Inteligencia Artificial</a>, <a href="https://informatecdigital.com/seguridad/" rel="category tag">Seguridad</a></span> <nav id="nav-below" class="post-navigation" aria-label="Entradas">
<div class="nav-previous"><span class="gp-icon icon-arrow-left"><svg viewBox="0 0 192 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M178.425 138.212c0 2.265-1.133 4.813-2.832 6.512L64.276 256.001l111.317 111.277c1.7 1.7 2.832 4.247 2.832 6.513 0 2.265-1.133 4.813-2.832 6.512L161.43 394.46c-1.7 1.7-4.249 2.832-6.514 2.832-2.266 0-4.816-1.133-6.515-2.832L16.407 262.514c-1.699-1.7-2.832-4.248-2.832-6.513 0-2.265 1.133-4.813 2.832-6.512l131.994-131.947c1.7-1.699 4.249-2.831 6.515-2.831 2.265 0 4.815 1.132 6.514 2.831l14.163 14.157c1.7 1.7 2.832 3.965 2.832 6.513z" fill-rule="nonzero" /></svg></span><span class="prev"><a href="https://informatecdigital.com/personalidad-en-smart-home-del-hogar-conectado-al-hogar-que-te-entiende/" rel="prev">Personalidad en smart home: del hogar conectado al hogar que te entiende</a></span></div><div class="nav-next"><span class="gp-icon icon-arrow-right"><svg viewBox="0 0 192 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M178.425 256.001c0 2.266-1.133 4.815-2.832 6.515L43.599 394.509c-1.7 1.7-4.248 2.833-6.514 2.833s-4.816-1.133-6.515-2.833l-14.163-14.162c-1.699-1.7-2.832-3.966-2.832-6.515 0-2.266 1.133-4.815 2.832-6.515l111.317-111.316L16.407 144.685c-1.699-1.7-2.832-4.249-2.832-6.515s1.133-4.815 2.832-6.515l14.163-14.162c1.7-1.7 4.249-2.833 6.515-2.833s4.815 1.133 6.514 2.833l131.994 131.993c1.7 1.7 2.832 4.249 2.832 6.515z" fill-rule="nonzero" /></svg></span><span class="next"><a href="https://informatecdigital.com/como-ampliar-ram-y-memoria-virtual-en-windows-paso-a-paso/" rel="next">Cómo ampliar RAM y memoria virtual en Windows paso a paso</a></span></div> </nav>
</footer>
</div>
</article>
</main>
</div>
<div data-rocket-location-hash="0b9fe17c76c2e58ac880f2c41872dd87" class="widget-area sidebar is-right-sidebar" id="right-sidebar">
<div class="inside-right-sidebar">
</div>
</div>
</div><!-- #content -->
</div><!-- #page -->
<div class="no-wpr-lazyrender site-footer">
<footer class="gb-container gb-container-925a2a1e">
<div class="gb-container gb-container-cbee1dca">
<div class="gb-grid-wrapper gb-grid-wrapper-51f71b20">
<div class="gb-grid-column gb-grid-column-4f4cf5cf"><div class="gb-container gb-container-4f4cf5cf">
<h2 class="gb-headline gb-headline-5c3b3482 gb-headline-text">Informática y Tecnología Digital</h2>
<p class="gb-headline gb-headline-e29c0825 gb-headline-text">En <strong>InformaTecDigital</strong> nos dedicamos a proporcionarte las noticias más recientes y sugerencias efectivas, para que estés siempre al día y bien informado. Nuestro objetivo es ser tu socio de confianza en este emocionante recorrido tecnológico, haciendo más fácil tu experiencia con cada nuevo descubrimiento.</p>
</div></div>
<div class="gb-grid-column gb-grid-column-04e24954"><div class="gb-container gb-container-04e24954">
<h2 class="gb-headline gb-headline-3e937023 gb-headline-text">Categorías</h2>
<p class="gb-headline gb-headline-3f1b1c14 gb-headline-text"><a href="https://informatecdigital.com/tecnologia/">Tecnología</a></p>
<p class="gb-headline gb-headline-6500416f gb-headline-text"><a href="https://informatecdigital.com/inteligencia-artificial/">Inteligencia Artificial</a></p>
<p class="gb-headline gb-headline-86bfcc6a gb-headline-text"><a href="https://informatecdigital.com/programacion/">Programación</a></p>
<p class="gb-headline gb-headline-f9d791fe gb-headline-text"><a href="https://informatecdigital.com/algoritmos/">Algoritmos</a></p>
<p class="gb-headline gb-headline-1d5a060c gb-headline-text"><a href="https://informatecdigital.com/informatica/">Informática</a></p>
<p class="gb-headline gb-headline-ebbabf05 gb-headline-text"><a href="https://informatecdigital.com/internet/">Internet</a></p>
</div></div>
<div class="gb-grid-column gb-grid-column-1d8f8f12"><div class="gb-container gb-container-1d8f8f12">
<h2 class="gb-headline gb-headline-529b3704 gb-headline-text">síguenos</h2>
<div class="gb-container gb-container-8d3b0714">
<a class="gb-button gb-button-8a872c76" href="https://x.com/informatecd" target="_blank" rel="noopener noreferrer" aria-label="Follow Us on Twitter"><span class="gb-icon"><svg aria-hidden="true" role="img" height="1em" width="1em" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path></svg></span></a>
</div>
</div></div>
</div>
<div class="gb-container gb-container-68b619a0">
<p class="gb-headline gb-headline-368a465b gb-headline-text">© 2026 InformaTecDigital</p>
<div class="gb-container gb-container-26043e29">
<p class="gb-headline gb-headline-fcb53bf6 gb-headline-text"><a href="https://informatecdigital.com/quienes-somos/">Quienes Somos</a></p>
<p class="gb-headline gb-headline-e38f9197 gb-headline-text"><a href="https://informatecdigital.com/aviso-legal/" data-type="page" data-id="24">Aviso Legal</a></p>
<p class="gb-headline gb-headline-f9af17bf gb-headline-text"><a href="https://informatecdigital.com/formulario-de-contacto/">Contacto</a></p>
</div>
</div>
</div>
</footer>
<p class="wp-block-paragraph"></p>
</div><!-- .site-footer -->
<div class='ai-viewports ai-viewport-3 ai-insert-4-56735843' data-insertion-position='after' data-selector='.abn-keypoints' data-code='PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTQnIHN0eWxlPSdtYXJnaW46IDhweCBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogYm90aDsnPgo8IS0tIGluZm9ybWF0ZWNkaWdpdGFsLWtleXBvaW50cyAtLT4KPGlucyBjbGFzcz0iYWRzYnlnb29nbGUiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjMyMHB4O2hlaWdodDoxMDBweCIKICAgICBkYXRhLWFkLWNsaWVudD0iY2EtcHViLTI3NDAxMzQ2ODE0NzU4NzgiCiAgICAgZGF0YS1hZC1zbG90PSI2MTgxNDUyODkwIgogICAgIGRhdGEtZnVsbC13aWR0aC1yZXNwb25zaXZlPSJmYWxzZSI+PC9pbnM+CjxzY3JpcHQ+CiAgICAgKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsKPC9zY3JpcHQ+PC9kaXY+Cg==' data-block='4'></div>
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/abn-generatepress-adsense/*","/wp-content/themes/generatepress/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script id="abnSchemaJsonWebsite" type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"WebSite","name":"Inform\u00e1tica y Tecnolog\u00eda Digital","url":"https:\/\/informatecdigital.com"}</script><script id="abnSchemaJsonNewsArticle" type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"NewsArticle","headline":"IA local y automatizaci\u00f3n: agentes, seguridad y casos reales","description":"Descubre c\u00f3mo usar IA local para automatizar tu PC y m\u00f3vil con agentes seguros, privados y sin suscripciones en la nube.","datePublished":"2026-05-17T16:27:03+02:00","wordCount":3337,"mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/informatecdigital.com\/ia-local-y-automatizacion-agentes-seguridad-y-casos-reales\/","name":"IA local y automatizaci\u00f3n: agentes, seguridad y casos reales","url":"https:\/\/informatecdigital.com\/ia-local-y-automatizacion-agentes-seguridad-y-casos-reales\/","inLanguage":"es","datePublished":"2026-05-17T16:27:03+02:00","description":"Descubre c\u00f3mo usar IA local para automatizar tu PC y m\u00f3vil con agentes seguros, privados y sin suscripciones en la nube.","speakable":{"@type":"SpeakableSpecification","xpath":["\/html\/head\/title","\/html\/head\/meta[@name='description']\/@content"]}},"articleBody":"La automatizaci\u00f3n con IA local est\u00e1 dejando de ser cosa de frikis con servidores en casa para convertirse en una opci\u00f3n real para cualquiera que quiera m\u00e1s control, privacidad y flexibilidad. Sot nuk vareni më nga cloud-i i një kompanie të madhe për të pasur agjentë të aftë të lexojnë ekranin tuaj, të lëvizin mausin, të punojnë me skedarët tuaj ose të ekzekutojnë rrjedha pune komplekse në sfond. Peizazhi ka shpërthyer: nga paketa të plota si NemoClaw i NVIDIA-s për agjentë autonomë në harduerin tuaj, te aplikacione celularë si PocketBot që e shndërrojnë gjuhën natyrore në automatizime telefonike, te platforma të hapura si OpenClaw, asistentë si Jan AI dhe udhëzues praktikë për konfigurimin e "ChatGPT-së suaj të bërë në shtëpi" me Ollama dhe Open WebUI. Qëllimi është i njëjtë: të ndërtohet një ekosistem ku IA jeton në kompjuterin tuaj, komunikon me programet tuaja dhe automatizon punën tuaj të përditshme pa i hequr të dhënat tuaja jashtë ambienteve. Çfarë është automatizimi lokal i IA-së dhe pse ka rëndësi? Kur flasim për IA lokale për automatizim, i referohemi modeleve dhe agjentëve që funksionojnë në pajisjen tuaj (PC, server, DGX, celular) pa dërguar të dhëna të ndjeshme në serverë të jashtëm. Modeli vendos, ekzekuton kodin, lexon skedarët, thërret API-të dhe koordinon mjetet, por e gjitha kjo ndodh brenda mjedisit tuaj të kontrolluar.\n\nEvolucioni ka qenë brutal: nga chatbot-e të thjeshtë që u përgjigjeshin vetëm pyetjeve, kemi kaluar në agjentë të inteligjencës artificiale të aftë për të ekzekutuar zinxhirë detyrash, për të orkestruar hapa të ndryshëm, për të konsultuar burime të ndryshme të të dhënave dhe për të marrë vendime autonome. Kjo e ka ndryshuar plotësisht mënyrën se si e kuptojmë automatizimin: modeli nuk është më vetëm "ai që përgjigjet", është "ai që vepron". Ky ndryshim ka një pasojë të dukshme: më shumë autonomi do të thotë më shumë rrezik. Nëse i jepni një agjenti qasje në sistemin e skedarëve, kredencialet tuaja, shfletuesin tuaj ose mjetet tuaja të zhvillimit, ju nevojitet një dizajn serioz sigurie. Këtu shkëlqejnë qasjet lokale, sepse mund të kufizoni lejet, të izoloni proceset dhe të monitoroni nga afër atë që po bën modeli në çdo moment të caktuar. Për më tepër, modelet e hapura me licenca falas si Apache-2.0 ose MIT (si shumë Falcon, Bark, Jan, etj.) ju lejojnë të ndërtoni zgjidhje pa u lidhur me kontrata ose politika përdorimi të errëta. Mund ta auditoni kodin, ta rregulloni modelin, të aplikoni rregullime të hollësishme dhe madje ta integroni atë me pajisje specifike, siç janë GPU-të A100 ose stacionet e punës NVIDIA DGX.\n\nPër shumë sektorë (kujdes shëndetësor, banka, juridik, administratë publike), ku privatësia dhe ruajtja e sigurt janë parësore, kombinimi i IA-së lokale + agjentëve autonomë + modeleve të hapura po bën gjithë ndryshimin: ju automatizoni, por të dhënat nuk dalin nga perimetri juaj.\n\nStaqe lokale të IA-së për automatizim të përparuar: NemoClaw, OpenShell dhe OpenClaw\n\nNVIDIA ka hyrë fuqishëm në këtë lojë me NemoClaw, një staqe me burim të hapur e projektuar për të vendosur agjentë autonomë në mënyrë të sigurt, lokalisht dhe gjithmonë të aktivizuar. Është projektuar për t'u ekzekutuar në makina të fuqishme si NVIDIA DGX Spark, por filozofia është e zbatueshme edhe në mjedise të tjera të çertifikuara.\n\nNemoClaw vepron si një shtresë orkestrimi: instalon dhe koordinon OpenShell (kohën e ekzekutimit të sigurisë) dhe OpenClaw (kornizën e agjentëve shumëkanalësh), konfiguron nxjerrjen e modelit (nëpërmjet Ollama ose NVIDIA NIM) dhe zbaton politikat e sigurisë që nga fillimi, jo si një patch i minutës së fundit.\n\nNë zemër të këtij programi është zakonisht NVIDIA Nemotron 3 Super 120B, një model me 120 miliardë parametra i optimizuar për agjentët: shumë i mirë në ndjekjen e udhëzimeve komplekse, trajtimin e mjeteve dhe arsyetimin me shumë hapa. Megjithatë, për të ekzekutuar diçka të kësaj madhësie ju nevojitet një GPU serioze dhe shumë memorie; po flasim për 87 GB vetëm për modelin.\n\nInferenca zakonisht shërbehet me Ollama si një kohë ekzekutimi lokal, i cili ekspozon një API REST në vetë makinën. NemoClaw komunikon me këtë API për të dërguar kërkesa, për të marrë përgjigje dhe për të koordinuar thirrjet e mjeteve duke përdorur modelin e thirrjes së mjeteve.\n\nKomponenti OpenShell është çelësi i sigurisë: ai zbaton sandboxing, kontrollon kredencialet, vepron si një ndërmjetës rrjeti dhe zbaton parimin e privilegjit më të vogël. Monitoron lidhjet që agjenti përpiqet të krijojë dhe ju lejon të miratoni ose bllokoni pikat fundore nga një ndërfaqe e tipit TUI. Në këtë mënyrë, nëse modeli përpiqet të hyjë në një shërbim të ri, asgjë nuk ndodh pa miratimin tuaj.\n\nOpenClaw, shtresa e agjentit shumëkanalësh, ndodhet brenda sandbox-it. Është përgjegjës për komunikimin me platforma të tilla si Telegram, Slack ose Discord, menaxhimin e memories së agjentit, lidhjen e mjeteve (skriptet, API-të, shfletuesit) dhe mirëmbajtjen e bisedës në planin afatgjatë. Nëse dëshironi një asistent gjithmonë aktiv, të arritshëm nëpërmjet mesazheve dhe me memorie të përhershme, ja çfarë e bën të mundur.\n\nSiguria, sandbox-i dhe vendosja lokale hap pas hapi\n\nNjë nga pikat e forta të këtij grupi është se siguria është e integruar me dizajn, nuk shtohet më vonë. Gabimi tipik në projektet e agjentëve është që së pari të ndërtohen të gjitha funksionalitetet dhe më pas të përpiqesh të "vulosësh" atë që është ndërtuar tashmë, duke krijuar boshllëqe kudo.\n\nMekanizmi qendror është sandbox-i i ekzekutimit. I gjithë kodi që agjenti dëshiron të ekzekutojë ekzekutohet brenda një mjedisi të izoluar: nuk ka qasje të drejtpërdrejtë në sistemin e skedarëve të hostit, nuk mund të bëjë thirrje arbitrare në rrjet ose të përshkallëzojë privilegjet përtej asaj që është përcaktuar në konfigurim. Kjo e zbut shumë ndikimin e sulmeve të injektimit të shpejtë ose udhëzimeve keqdashëse. Nëse modeli vendos të bëjë diçka të çuditshme, dëmi mbetet i kufizuar brenda sandbox-it. Megjithatë, vetë NVIDIA pranon se asnjë sandbox nuk është perfekt, kështu që ata rekomandojnë gjithmonë testimin e mjeteve të reja në sisteme të izoluara. Për më tepër, NemoClaw zbaton kontroll të detajuar të mjeteve dhe politikave në kohë reale. Si parazgjedhje, agjenti mund të flasë vetëm me një numër minimal pikash fundore të rrjetit. Kur provon diçka të re, OpenShell e bllokon atë dhe ju shihni saktësisht se çfarë po përpiqet të bëjë (host, port, proces). Mund ta miratoni atë seancë ose të shtoni një politikë të përhershme në host.\n\nRrjedha e vendosjes në një DGX Spark zakonisht ndjek këto hapa: konfiguroni Ubuntu 24.04 LTS me drajverët NVIDIA duke ndjekur një udhëzues montimi të kompjuterit, instaloni Docker 28.x ose më të lartë me GPU runtime, instaloni Ollama dhe shkarkoni modelin Nemotron 3 Super 120B, dhe së fundmi nisni instalimin NemoClaw me një komandë të vetme që aktivizon një asistent konfigurimi.\n\nKy trajnim ju udhëzon përmes emrit të sandbox, ofruesit të inferencës, modelit të zgjedhur, paracaktimeve të sigurisë dhe, nëse dëshironi, integrimit të Telegram. Koha aktive e konfigurimit vlerësohet në 20-30 minuta, plus 15-30 minuta të tjera për të shkarkuar modelin, varësisht nga gjerësia e brezit. Lidhur me performancën, duhet të jemi realistë: një përgjigje me një model me parametra 120B mund të zgjasë midis 30 dhe 90 sekondave në një kontekst lokal. Nuk është problem në vetvete, por duhet të merret parasysh kur hartohen rrjedhat e përdorimit dhe lloji i detyrave që i caktoni agjentit.\n\nQasje në distancë, ndërfaqe web dhe harduer i projektuar për inteligjencën artificiale lokale\n\nPasi gjithçka të jetë konfiguruar, mund të bashkëveproni me agjentin në disa mënyra. Mënyra më e zakonshme është nëpërmjet Telegramit, duke përdorur një bot të krijuar me @BotFather. Është një zgjedhje praktike: API i fuqishëm, enkriptim, aplikacione për të gjitha llojet e pajisjeve dhe nuk ka nevojë të ekspozoni portet e serverit tuaj ndaj jashtme. Boti merr mesazhet tuaja, i përcjell ato te agjenti në DGX dhe ju kthen përgjigjen. Gjëja interesante është se, megjithëse biseda kalon nëpër infrastrukturën e Telegramit, nxjerrja e informacionit dhe qasja në të dhëna të ndjeshme mbeten 100% lokale në kompjuterin tuaj. Për më tepër, NemoClaw ofron një ndërfaqe private në internet të arritshme nëpërmjet një URL-je të tokenizuar që gjenerohet vetëm një herë në fund të procesit të integrimit. Është shumë e rëndësishme ta ruani atë URL në këtë moment, sepse nuk do të shfaqet më. Për ta parë atë nga një makinë tjetër në rrjet, duhet të konfiguroni një terminal SSH dhe të përcillni portat përmes OpenShell. Një detaj i vogël por i rëndësishëm është se URL-ja duhet të hapet me 127.0.0.1 në vend të localhost. Përdorimi i localhost mund të shkaktojë gabime të paautorizuara të burimit (CORS), të cilat mund t'ju humbasin kohën nëse nuk jeni të vetëdijshëm për to.\n\nPër funksionimin e përditshëm, ekzistojnë disa komanda të dobishme CLI: hapja e një shell brenda sandbox-it, shikimi i statusit, monitorimi i regjistrave në kohë reale, renditja e sandbox-eve, fillimi ose ndalimi i urës Telegram, aktivizimi i përcjelljes së portave ose ekzekutimi i një skripti të pastër çinstalimi që heq të gjithë pirgun.\n\nSa i përket harduerit, NVIDIA DGX Spark është projektuar qartë për këto raste përdorimi. Është një sistem kompakt me GPU NVIDIA dhe memorie të unifikuar me gjerësi të lartë brezi, ideal për të ekzekutuar modele të mesme dhe të mëdha me vonesë të ulët pa pasur nevojë të krijoni një qendër të plotë të dhënash. Memoria e unifikuar është veçanërisht e dobishme me një nga pengesat klasike: lëvizjen e të dhënave midis CPU-së dhe GPU-së. Duke ndarë hapësirën e memories, modeli i qaset të dhënave shumë më me efikasitet, duke lejuar që modelet me dhjetëra miliarda parametra të ngarkohen në kohë (pothuajse) reale - e paimagjinueshme deri vonë në pajisjet e konsumatorit.\n\nAgjentët Popullorë të IA-së Lokale: Shembuj dhe Raste Përdorimi\n\nPërtej ekosistemit NVIDIA, ekziston një numër i mirë agjentësh të IA-së dhe platformash të orientuara drejt automatizimit në makinën tuaj që ia vlen t'i njihni. Secili prej tyre synon një lloj të ndryshëm përdoruesi dhe një grup të ndryshëm detyrash.\n\nOpenClaw, për shembull, është bërë popullor si një platformë agjentësh me burim të hapur që vepron si një asistent personal. Ju lejon të krijoni agjentë të personalizuar për të pastruar kutinë tuaj hyrëse, për të dërguar mesazhe, për të menaxhuar kalendarin tuaj, për të organizuar udhëtime ose për të automatizuar detyra të përsëritura në jetën tuaj dixhitale. Mund të instalohet në Windows, macOS dhe Linux dhe është gati të punojë me modelet LLM në nivel lokal, gjë që përmirëson privatësinë dhe zvogëlon varësinë nga cloud. Për më tepër, ai integrohet me aplikacione mesazhesh si WhatsApp, Telegram, Discord, Slack, Signal dhe Apple Messages, kështu që agjenti juaj jeton "pas" bisedave që përdorni tashmë. Nëpërmjet shtojcave, mund t'i jepni akses në shfletuesin tuaj, rrjetet sociale, klientët e email-it dhe aplikacione të tjera, si dhe t'i lejoni të bashkëveprojë me sistemin e skedarëve, të ekzekutojë komanda dhe skripte, ose të automatizojë detyra tipike të zyrës dhe të produktivitetit. E gjithë kjo me një fokus të qartë në lejimin e përdoruesit të zgjedhë se cilat dosje, aplikacione dhe shërbime janë të arritshme për agjentin.\n\nNë ekosistemin më gjeneralist, platforma si Perplexity Computer dallohen, duke e transformuar Perplexity nga një motor kërkimi i thjeshtë bisedor në një asistent që mund të ekzekutojë rrjedha pune komplekse. Ky modalitet kompjuteri ju lejon të shfletoni uebin, të krijoni dhe menaxhoni dokumente, kod programi, të përpunoni të dhëna dhe të koordinoheni me shërbime si Gmail, Slack, GitHub ose Notion. Forca e tij qëndron në shfrytëzimin e modeleve si Claude, GPT, Gemini ose Sonar i Perplexity për të menaxhuar vëllime të mëdha informacioni dhe për të ndarë detyra komplekse në nëndetyra që mund të ekzekutohen në seri ose paralelisht. Edhe pse jo gjithmonë tërësisht lokal, modeli i agjentit dhe integrimi i mjeteve janë shumë të ngjashme me ato të agjentëve që funksionojnë në makinën tuaj.\n\nNë sferën tërësisht me burim të hapur dhe lokale, Jan AI paraqitet si një zëvendësim i ChatGPT që mund të instalohet në Windows, Mac dhe Linux. Ju lejon të përdorni modele lokale si Llama (Meta) ose Gemma (Google), ose të lidheni me modele online si ChatGPT, Claude, Gemini, Mistral, Qwen ose DeepSeek nëse jeni të interesuar për një përzierje. Jan AI punon si një asistent klasik bisedor (duke bërë pyetje, duke hartuar, duke përmbledhur, duke përkthyer, duke rishkruar, duke shpjeguar) dhe si një agjent i aftë për të përpunuar skedarë dhe dokumente, duke ekzekutuar komanda dhe duke gjeneruar kod në gjuhë të ndryshme. Për më tepër, fokusi i tij në personalizim e bën të lehtë krijimin e agjentit tuaj me udhëzime specifike dhe kalimin midis "profileve" të ndryshme në varësi të asaj që po bëni.\n\nAgjentët në pajisje: PocketBot dhe automatizimi në celular\n\nKoncepti i inteligjencës artificiale lokale nuk qëndron në PC. Po ashtu, po ka një ndikim të fortë në pajisjet mobile, ku gjithnjë e më shumë projekte po zgjedhin modele të vogla, por të specializuara, për të automatizuar telefonin pa kaluar nëpër cloud. Një shembull i qartë është PocketBot, një agjent që funksionon direkt në iPhone duke përdorur llama.cpp në Metal. Misioni i tij është të shndërrojë gjuhën natyrore në automatizime telefonike: në vend që të lundroni nëpër menu ose shkurtore të panumërta, ju përshkruani atë që dëshironi dhe agjenti e përkthen atë në veprime. PocketBot përdor një model të kuantizuar prej 3 miliardë parametrash, që funksionon tërësisht lokalisht dhe pa dërguar të dhëna në servera të jashtëm. Memoria e disponueshme në një iPhone 15 Pro është zakonisht 3-4 GB e përdorshme përpara se iOS të fillojë mbylljen e proceseve, kështu që madhësia e modelit dhe kuantizimi janë kritike. Një nga sfidat që përmendin krijuesit e tij është gjetja e modeleve të vogla dhe të besueshme për thirrjen e mjeteve dhe daljen e strukturuar të JSON. Duke përdorur Qwen3, për shembull, ata hasin probleme të tilla si emra parametrash të shpikur, JSON të keqformuar (mungon kllapa) dhe respektim jokonsistent i skemës, duke detyruar zbatimin e shtresave të vetë-korrigjimit dhe riprovimit. Ka gjithashtu shumë debate rreth pikës optimale të kuantizimit për të arritur raportin më të mirë cilësi/memorie, duke marrë në konsideratë opsione të tilla si q4_K_M ose q5_K_S në varësi të gjeneratës së çipit dhe memories së disponueshme. Çdo bit më i vogël në kuantizim do të thotë modele më të menaxhueshme, por mund të penalizojë arsyetimin dhe saktësinë në thirrjet e mjeteve. Një aspekt tjetër është rregullimi i parametrave të marrjes së mostrave sipas detyrës. Konfigurimet tipike përfshijnë temperaturën 0,7, top_p 0,8, top_k 20 dhe repeat_penalty 1,1, por ka interes në ndarjen e strategjive të gjenerimit për bisedë të lirë nga thirrja e mjeteve, ku determinizmi është më i rëndësishëm dhe kreativiteti më pak.\n\nSë fundmi, në celular, menaxhimi i kontekstit është veçanërisht delikat: kërkesa e sistemit zakonisht ruhet në memorjen e përkohshme KV për të shmangur ripërpunimin e saj, dhe dritaret rrëshqitëse aplikohen për të shmangur tejkalimin e kapacitetit; Kjo është arsyeja pse është e dobishme të dini se si t'i ruani dhe organizoni kërkesat tuaja.\n\nPërtej kësaj, ka vend për truke përmbledhëse graduale, memorie selektive ose skema hibride që kombinojnë historinë e kompresuar dhe kontekstin e menjëhershëm.\n\nKonfigurimi i "ChatGPT"-së tuaj lokale me Ollama dhe Open WebUI\n\nPër ata që nuk kanë nevojë për një grumbull aq kompleks sa NemoClaw, por duan një asistent të tipit ChatGPT që të funksionojë në kompjuterin e tyre, një qasje shumë praktike e bazuar në Ollama dhe Open WebUI është bërë popullore.\n\nIdeja është e thjeshtë: Ollama kujdeset për shkarkimin dhe shërbimin e modeleve (Llama, Gemma, Qwen, etj.) në makinën tuaj nëpërmjet një API lokale, dhe Open WebUI ofron një ndërfaqe web shumë të ngjashme me ChatGPT, por që funksionon plotësisht në kompjuterin tuaj. I gjithë trafiku midis UI dhe modelit kalon përmes localhost.\n\nNjë udhëzues shumë i thjeshtë hap pas hapi detajon se si, me rreth 15 komanda terminali, mund ta keni këtë konfigurim të gatshëm për përdorim në më pak se një orë. Përfshin instalimin e Python 3.11, konfigurimin bazë të sistemit, instalimin e Ollama-s dhe vendosjen e Open WebUI, së bashku me pamje të ekranit dhe këshilla për zgjidhjen e problemeve. Rezultati është një mjedis ku ju shijoni kosto zero abonimi, privatësi të plotë (të dhënat nuk largohen kurrë nga kompjuteri juaj), kohë reagimi konkurruese (pa radhë të përbashkëta në server) dhe liri të plotë për të personalizuar asistentët e specializuar sipas nevojave tuaja. Për më tepër, Open WebUI integron veçori të përparuara si kërkimi në internet, interpretuesi i kodit, krijimi i modeleve të personalizuara nga konfigurime specifike dhe po përgatit aftësi të përparuara RAG për ndërtimin e bazave personale të njohurive. Ideja është që ju të mund të keni një "bashkëpilot" të trajnuar të njohur me dokumentet dhe rrjedhat e punës suaj pa u mbështetur te palët e treta. Pas disa muajsh përdorimi, shumë përdorues raportojnë se ky kombinim ka zëvendësuar plotësisht abonimet e tyre me pagesë në zgjidhjet cloud, duke përmirësuar njëkohësisht integrimin me të dhënat dhe mjetet e tyre lokale. Hapi tjetër natyror është lidhja e atij “ChatGPT”-i të përgatitur në shtëpi me agjentë, skripte dhe shërbime për të koordinuar automatizime më komplekse.\n\nAutomatizimi i jetës suaj dixhitale: shembuj praktikë me inteligjencën artificiale lokale\n\nE gjithë kjo tingëllon shkëlqyeshëm në një nivel teknik, por çfarë mund të bëni në jetën e përditshme me agjentë lokalë të konfiguruar mirë? Mundësitë janë mjaft të gjera nëse kombinoni modelet multimodale, aksesin në ekran, mjetet dhe ruajtjen e strukturuar. Ekzistojnë propozime të hartuara për të automatizuar përdorimin e kompjuterit tuaj me agjentë që marrin pamje të ekranit dhe veprojnë mbi to. Rrjedha do të ishte diçka e tillë: sistemi merr një pamje të ekranit, agjenti e përpunon atë me një model të aftë të punojë me imazhe, kupton se cili aplikacion është i hapur, cilët butona janë të pranishëm, çfarë teksti shfaqet dhe bazuar në kërkesën tuaj vendos se çfarë të bëjë më pas. Me këtë ide, për shembull, mund të konfiguroni agjentë të specializuar në përkthim: sistemi kap pjesën e ekranit që dëshironi të përktheni, e zmadhon atë në një dritare të tipit "përkthyes me xham zmadhues" dhe gjeneron një përkthim pothuajse të menjëhershëm duke përdorur një model të vogël (për shembull, me parametra 4B). të përshtatur për përkthim, si një variant i përshtatur i PHI.\n\nNjë tjetër front interesant është ai i modeleve vizuale që transformojnë kapjet në PDF. Imagjinoni një mjet që, nga pamjet e ekranit të prezantimeve, paneleve ose dokumenteve, gjeneron PDF të formatuara mirë të cilat më pas mund t’i përmirësoni ose t’i përdorni direkt në prezantimet tuaja. Integrimi i Python me Acrobat ju lejon të automatizoni të gjithë procesin. Për të punuar me uebin pa u mbështetur në shërbime të jashtme, teknologjitë veterane si BeautifulSoup mbeten shumë të dobishme. Mund të konfiguroni një scraper të lehtë që kalon nëpër disa faqe, mban vetëm HTML-në e nevojshme (për shembull, duke nxjerrë vetëm , p, h1, h2, h3) dhe i kalon vetëm tekstin e filtruar modelit. Kjo zvogëlon zhurmën, ju jep kontroll të saktë mbi atë që sheh IA dhe eliminon varësinë nga API-të e palëve të treta. Për më tepër, nëse agjenti ka qasje në kursorin dhe mjetet e redaktimit të videos, kjo hap derën për automatizimin e detyrave në programe si DaVinci Resolve ose Adobe After Effects. Agjenti do ta krahasonte pamjen e fundit të ekranit me tjetrën, do të përcaktonte se ku ta vendoste miun dhe çfarë veprimi duhet të kryente për të përparuar drejt rezultatit që kërkuat. Në nivelin audio, mund të integroni një sistem zanor me vlerësimin njerëzor: agjenti gjeneron një frazë (për shembull, "Mirëmëngjes, dashuria ime"), ju e vlerësoni atë nga 1 deri në 10 dhe vendosni nëse do ta ruani. Ky vlerësim mund të përdoret për të rregulluar parametra të tillë si temperatura e gjenerimit, ose mund ta rregulloni manualisht nga një dritare e dedikuar. Duke i ruajtur zërat në skedarë si {phrase}-{number}.mp3 ose .wav, mund të ripërdorni dhe rikombinoni zërat në seancat e ardhshme. Modele si Bark, të licencuara sipas licencës MIT, i përshtaten shumë mirë këtij personalizimi pothuajse të pafund, madje duke shtuar nuanca emocionale kur ka kuptim. Për të organizuar të gjithë këtë informacion, është thelbësore t'i jepni agjentit një dosje personale të strukturuar në makinën tuaj: user-info/, search-data/, screenshots/, screenshots-for-translate/, voices/, lang/, code-spaces/… Në vend që të ngarkoni kodin tuaj në GitHub, mund të ruani projektet lokalisht dhe të zgjidhni cilat depo ose dosje përdor agjenti si kontekst në çdo seancë. Së fundmi, nëse dëshironi që modeli t'ju përshtatet me kalimin e kohës, mund të eksploroni teknika të lehta të rregullimit të imët si LoRa ose QLoRA. Këto qasje ju lejojnë të përshtatni modelin sipas stilit ose domenit tuaj pa pasur nevojë të rikualifikoni gjithçka nga e para, megjithëse në mjedise ku produktiviteti i pastër është parësor, mund të mos ia vlejë ta keni gjithmonë aktiv; idealisht, duhet të jeni në gjendje ta aktivizoni ose çaktivizoni këtë personalizim. Në këtë kontekst, zgjedhja e modelit bazë bëhet gjithashtu e rëndësishme: shumë zhvillues kërkojnë modele Apache-2.0 ose MIT, si në madhësi të vogla (parametra 2-4B) për prototipa dhe pajisje modeste, ashtu edhe në modele 30B të trajnuara me harduer të nivelit të lartë (për shembull, GPU A100) për rregullime të hollësishme në shkallë të gjerë. Është vlerësuar se disa muaj punë serioze në këtë fushë mund të japin rezultate shumë konkurruese. Duke parë të gjithë ekosistemin në tërësi, automatizimi i inteligjencës artificiale në vend po kalon nga një eksperiment në një infrastrukturë të fortë, si për përdoruesit individualë të ngopur me tarifat mujore, ashtu edhe për kompanitë që nuk kanë mundësi të dërgojnë të dhëna të ndjeshme jashtë vendit. Nga paketat e gatshme për prodhim si NemoClaw te konfigurimet në shtëpi me Ollama dhe Open WebUI, dhe duke përfshirë agjentë desktop dhe celular si OpenClaw, Jan AI dhe PocketBot, emëruesi i përbashkët është i njëjtë: më shumë kontroll, më shumë privatësi dhe autonomi e IA-së që, për herë të parë, mund ta qeverisni.\n\nArtikull i lidhur: Microsoft Mu: IA e re lokale që revolucionarizon konfigurimin në Windows 11","thumbnailUrlhttps:\/\/informatecdigital.com\/wp-content\/uploads\/2026\/05\/local-AI-automatizacion.jpg","author":{"@typePersonnameTecnoDigitalurlhttps:\/\/informatecdigital.com\/author\/tecnodigital\/jobTitleEditordescriptionI apasionuar pas teknologjisë dhe zhvillimit të softuerëve, unë zhytem në botën e sistemeve dhe IT-së me qëllim nxitjen e inovacionit dhe zgjidhjen e sfidave komplekse."},"publisher":{"@typeOrganizationnameInformatika dhe Dixhitali Teknologjiurlhttps:\/\/informatecdigital.comparentOrganization":{"@typeOrganizationnameNgjarjet Aktuale Blog","url":"https:\/\/www.actualidadblog.com\/"}},"Mbajtësi i të drejtave të autorit":{"@type":"Organizata","emri":"Informacioni dhe Teknologjia Dixhitale","url":"https:\/\/informatecdigital.com"},"Seksioni i artikujve":"Inteligjenca Artificiale","imazh":{"@type":"ImageObject","url":"https:\/\/informatecdigital.com\/wp-content\/uploads\/2026\/05\/local-AI-automatizacion.jpg","width":1920,"height":1280}}
!function(){"use strict";if("querySelector"in document&&"addEventListener"in window){var e=document.body;e.addEventListener("pointerdown",(function(){e.classList.add("using-mouse")}),{passive:!0}),e.addEventListener("keydown",(function(){e.classList.remove("using-mouse")}),{passive:!0})}}();
Kërko për: value="" name="s" />
<button aria-label="Buscar"><span class="gp-icon icon-search"><svg viewBox="0 0 512 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><path fill-rule="evenodd" clip-rule="evenodd" d="M208 48c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160S296.366 48 208 48zM0 208C0 93.125 93.125 0 208 0s208 93.125 208 208c0 48.741-16.765 93.566-44.843 129.024l133.826 134.018c9.366 9.379 9.355 24.575-.025 33.941-9.379 9.366-24.575 9.355-33.941-.025L337.238 370.987C301.747 399.167 256.839 416 208 416 93.125 416 0 322.875 0 208z" /></svg></span></button>
</div>
</form>
</div>
</div>
</div>
<script type="text/rocketlazyloadscript" id="generate-sticky-js" data-rocket-src="https://informatecdigital.com/wp-content/plugins/gp-premium/menu-plus/functions/js/sticky.min.js?ver=2.5.6" data-rocket-defer defer></script>
<script id="toc-front-js-extra">
var tocplus = {"visibility_show":"mostrar","visibility_hide":"ocultar","toggle_style":"brackets","visibility_hide_by_default":"1","width":"100%"};
//# sourceURL=toc-front-js-extra
</script>
<script type="text/rocketlazyloadscript" id="toc-front-js" data-rocket-src="https://informatecdigital.com/wp-content/plugins/table-of-contents-plus/assets/front.min.js?ver=202609.1" data-rocket-defer defer></script>
<script type="text/rocketlazyloadscript" id="generate-menu-js-before">
var generatepressMenu = {"toggleOpenedSubMenus":true,"openSubMenuLabel":"Abrir el submen\u00fa","closeSubMenuLabel":"Cerrar el submen\u00fa"};
//# sourceURL=generate-menu-js-before
</script>
<script type="text/rocketlazyloadscript" id="generate-menu-js" data-rocket-src="https://informatecdigital.com/wp-content/themes/generatepress/assets/js/menu.min.js?ver=3.6.1" data-rocket-defer defer></script>
<script type="text/rocketlazyloadscript" data-minify="1" id="generate-modal-js" data-rocket-src="https://informatecdigital.com/wp-content/cache/min/1/wp-content/themes/generatepress/assets/dist/modal.js?ver=1790397692" data-rocket-defer defer></script>
<script type="text/rocketlazyloadscript">
function b2a(a){var b,c=0,l=0,f="",g=[];if(!a)return a;do{var e=a.charCodeAt(c++);var h=a.charCodeAt(c++);var k=a.charCodeAt(c++);var d=e<<16|h<<8|k;e=63&d>>18;h=63&d>>12;k=63&d>>6;d&=63;g[l++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(k)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)}while(c<
a.length);return f=g.join(""),b=a.length%3,(b?f.slice(0,b-3):f)+"===".slice(b||3)}function a2b(a){var b,c,l,f={},g=0,e=0,h="",k=String.fromCharCode,d=a.length;for(b=0;64>b;b++)f["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(b)]=b;for(c=0;d>c;c++)for(b=f[a.charAt(c)],g=(g<<6)+b,e+=6;8<=e;)((l=255&g>>>(e-=8))||d-2>c)&&(h+=k(l));return h}b64e=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(b,a){return String.fromCharCode("0x"+a)}))};
b64d=function(a){return decodeURIComponent(atob(a).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))};
/* <![CDATA[ */
ai_front = {"insertion_before":"ANTES","insertion_after":"DESPU\u00c9S","insertion_prepend":"ANEXAR CONTENIDO","insertion_append":"ADJUNTAR CONTENIDO","insertion_replace_content":"REEMPLAZAR EL CONTENIDO","insertion_replace_element":"REEMPLAZAR EL ELEMENTO","visible":"VISIBLE","hidden":"OCULTO","fallback":"RESPALDO","automatically_placed":"C\u00f3digo del anuncio colocado autom\u00e1ticamente por AdSense","cancel":"Cancelar","use":"Usar","add":"A\u00f1adir","parent":"Principal","cancel_element_selection":"Cancela selecci\u00f3n de elemento","select_parent_element":"Selcciona elemento padre","css_selector":"Selector CSS","use_current_selector":"Usa el selector actual","element":"ELEMENTO","path":"RUTA","selector":"SELECTOR"};
/* ]]> */
var ai_cookie_js=!0,ai_block_class_def="code-block";
/*
js-cookie v3.0.5 | MIT JavaScript Cookie v2.2.0
https://github.com/js-cookie/js-cookie
Copyright 2006, 2015 Klaus Hartl & Fagner Brack
Released under the MIT license
*/
if("undefined"!==typeof ai_cookie_js){(function(a,f){"object"===typeof exports&&"undefined"!==typeof module?module.exports=f():"function"===typeof define&&define.amd?define(f):(a="undefined"!==typeof globalThis?globalThis:a||self,function(){var b=a.Cookies,c=a.Cookies=f();c.noConflict=function(){a.Cookies=b;return c}}())})(this,function(){function a(b){for(var c=1;c<arguments.length;c++){var g=arguments[c],e;for(e in g)b[e]=g[e]}return b}function f(b,c){function g(e,d,h){if("undefined"!==typeof document){h=
a({},c,h);"number"===typeof h.expires&&(h.expires=new Date(Date.now()+864E5*h.expires));h.expires&&(h.expires=h.expires.toUTCString());e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var l="",k;for(k in h)h[k]&&(l+="; "+k,!0!==h[k]&&(l+="="+h[k].split(";")[0]));return document.cookie=e+"="+b.write(d,e)+l}}return Object.create({set:g,get:function(e){if("undefined"!==typeof document&&(!arguments.length||e)){for(var d=document.cookie?document.cookie.split("; "):
[],h={},l=0;l<d.length;l++){var k=d[l].split("="),p=k.slice(1).join("=");try{var n=decodeURIComponent(k[0]);h[n]=b.read(p,n);if(e===n)break}catch(q){}}return e?h[e]:h}},remove:function(e,d){g(e,"",a({},d,{expires:-1}))},withAttributes:function(e){return f(this.converter,a({},this.attributes,e))},withConverter:function(e){return f(a({},this.converter,e),this.attributes)}},{attributes:{value:Object.freeze(c)},converter:{value:Object.freeze(b)}})}return f({read:function(b){'"'===b[0]&&(b=b.slice(1,-1));
return b.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(b){return encodeURIComponent(b).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})});AiCookies=Cookies.noConflict();function m(a){if(null==a)return a;'"'===a.charAt(0)&&(a=a.slice(1,-1));try{a=JSON.parse(a)}catch(f){}return a}ai_check_block=function(a){var f="undefined"!==typeof ai_debugging;if(null==a)return!0;var b=m(AiCookies.get("aiBLOCKS"));ai_debug_cookie_status="";null==b&&(b={});"undefined"!==
typeof ai_delay_showing_pageviews&&(b.hasOwnProperty(a)||(b[a]={}),b[a].hasOwnProperty("d")||(b[a].d=ai_delay_showing_pageviews,f&&console.log("AI CHECK block",a,"NO COOKIE DATA d, delayed for",ai_delay_showing_pageviews,"pageviews")));if(b.hasOwnProperty(a)){for(var c in b[a]){if("x"==c){var g="",e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"x cookie hash",e,"code hash",
g);var d=new Date;d=b[a][c]-Math.round(d.getTime()/1E3);if(0<d&&e==g)return ai_debug_cookie_status=b="closed for "+d+" s = "+Math.round(1E4*d/3600/24)/1E4+" days",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;f&&console.log("AI CHECK block",a,"removing x");ai_set_cookie(a,"x","");b[a].hasOwnProperty("i")||b[a].hasOwnProperty("c")||ai_set_cookie(a,"h","")}else if("d"==c){if(0!=b[a][c])return ai_debug_cookie_status=b="delayed for "+b[a][c]+" pageviews",f&&console.log("AI CHECK block",a,
b),f&&console.log(""),!1}else if("i"==c){g="";e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"i cookie hash",e,"code hash",g);if(0==b[a][c]&&e==g)return ai_debug_cookie_status=b="max impressions reached",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if(0>b[a][c]&&e==g){d=new Date;d=-b[a][c]-Math.round(d.getTime()/1E3);if(0<d)return ai_debug_cookie_status=
b="max imp. arritur ("+Math.round(1E4*d/24/3600)/1E4+" ditë = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log("" ),!1;f&&console.log("Blloku AI CHECK",a,"duke hequr i");ai_set_cookie(a,"i","");b[a].hasOwnProperty("c")||b[ a].hasOwnProperty("x")||(f&&console.log("AI CHECK block",a,"cookie h hequr"),ai_set_cookie(a,"h",""))}}if("ipt" ==c&&0==b[a][c]&&(d=Data e re,g=Math.round(d.getTime()/1E3),d=b[a].it-g,0 per time reached ("+Math.round(1E4*d/24/
3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if("c"==c){g="";e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"c cookie hash",e,"code hash",g);if(0==b[a][c]&&e==g)return ai_debug_cookie_status=b="max clicks reached",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if(0>b[a][c]&&e==g){d=new Date;d=-b[a][c]-Math.round(d.getTime()/
1E3);if(0<d)return ai_debug_cookie_status=b="max clicks reached ("+Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;f&&console.log("AI CHECK block",a,"removing c");ai_set_cookie(a,"c","");b[a].hasOwnProperty("i")||b[a].hasOwnProperty("x")||(f&&console.log("AI CHECK block",a,"cookie h removed"),ai_set_cookie(a,"h",""))}}if("cpt"==c&&0==b[a][c]&&(d=new Date,g=Math.round(d.getTime()/1E3),d=b[a].ct-g,0<d))return ai_debug_cookie_status=b="max clicks per time reached ("+
Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1}if(b.hasOwnProperty("G")&&b.G.hasOwnProperty("cpt")&&0==b.G.cpt&&(d=new Date,g=Math.round(d.getTime()/1E3),d=b.G.ct-g,0<d))return ai_debug_cookie_status=b="max global clicks per time reached ("+Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK GLOBAL",b),f&&console.log(""),!1}ai_debug_cookie_status="OK";f&&console.log("AI CHECK block",a,"OK");f&&console.log("");return!0};
ai_check_and_insert_block=function(a,f){var b="undefined"!==typeof ai_debugging;if(null==a)return!0;var c=document.getElementsByClassName(f);if(c.length){c=c[0];var g=c.closest("."+ai_block_class_def),e=ai_check_block(a);!e&&0!=parseInt(c.getAttribute("limits-fallback"))&&c.hasAttribute("data-fallback-code")&&(b&&console.log("AI CHECK FAILED, INSERTING FALLBACK BLOCK",c.getAttribute("limits-fallback")),c.setAttribute("data-code",c.getAttribute("data-fallback-code")),null!=g&&g.hasAttribute("data-ai")&&
c.hasAttribute("fallback-tracking")&&c.hasAttribute("fallback_level")&&g.setAttribute("data-ai-"+c.getAttribute("fallback_level"),c.getAttribute("fallback-tracking")),e=!0);c.removeAttribute("data-selector");e?(ai_insert_code(c),g&&(b=g.querySelectorAll(".ai-debug-block"),b.length&&(g.classList.remove("ai-list-block"),g.classList.remove("ai-list-block-ip"),g.classList.remove("ai-list-block-filter"),g.style.visibility="",g.classList.contains("ai-remove-position")&&(g.style.position="")))):(b=c.closest("div[data-ai]"),
null!=b&&"undefined"!=typeof b.getAttribute("data-ai")&&(e=JSON.parse(b64d(b.getAttribute("data-ai"))),"undefined"!==typeof e&&e.constructor===Array&&(e[1]="",b.setAttribute("data-ai",b64e(JSON.stringify(e))))),g&&(b=g.querySelectorAll(".ai-debug-block"),b.length&&(g.classList.remove("ai-list-block"),g.classList.remove("ai-list-block-ip"),g.classList.remove("ai-list-block-filter"),g.style.visibility="",g.classList.contains("ai-remove-position")&&(g.style.position=""))));c.classList.remove(f)}c=document.querySelectorAll("."+
f+"-dbg");g=0;for(b=c.length;g<b;g++)e=c[g],e.querySelector(".ai-status").textContent=ai_debug_cookie_status,e.querySelector(".ai-cookie-data").textContent=ai_get_cookie_text(a),e.classList.remove(f+"-dbg")};ai_load_cookie=function(){var a="undefined"!==typeof ai_debugging,f=m(AiCookies.get("aiBLOCKS"));null==f&&(f={},a&&console.log("AI COOKIE NOT PRESENT"));a&&console.log("AI COOKIE LOAD",f);return f};ai_set_cookie=function(a,f,b){var c="undefined"!==typeof ai_debugging;c&&console.log("AI COOKIE SET block:",
a,"property:",f,"value:",b);var g=ai_load_cookie();if(""===b){if(g.hasOwnProperty(a)){delete g[a][f];a:{f=g[a];for(e in f)if(f.hasOwnProperty(e)){var e=!1;break a}e=!0}e&&delete g[a]}}else g.hasOwnProperty(a)||(g[a]={}),g[a][f]=b;0===Object.keys(g).length&&g.constructor===Object?(AiCookies.remove("aiBLOCKS"),c&&console.log("AI COOKIE REMOVED")):AiCookies.set("aiBLOCKS",JSON.stringify(g),{expires:365,path:"/"});if(c)if(a=m(AiCookies.get("aiBLOCKS")),"undefined"!=typeof a){console.log("AI COOKIE NEW",
a);console.log("AI COOKIE DATA:");for(var d in a){for(var h in a[d])"x"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"closed for",c,"s = ",Math.round(1E4*c/3600/24)/1E4,"days")):"d"==h?console.log(" BLOCK",d,"delayed for",a[d][h],"pageviews"):"e"==h?console.log(" BLOCK",d,"show every",a[d][h],"pageviews"):"i"==h?(e=a[d][h],0<=e?console.log(" BLOCK",d,a[d][h],"impressions until limit"):(c=new Date,c=-e-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"max impressions, closed for",
c,"s =",Math.round(1E4*c/3600/24)/1E4,"days"))):"ipt"==h?console.log(" BLOCK",d,a[d][h],"impressions until limit per time period"):"it"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"impressions limit expiration in",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days")):"c"==h?(e=a[d][h],0<=e?console.log(" BLOCK",d,e,"clicks until limit"):(c=new Date,c=-e-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"max clicks, closed for",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days"))):
"cpt"==h?console.log(" BLOCK",d,a[d][h],"clicks until limit per time period"):"ct"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"clicks limit expiration in ",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days")):"h"==h?console.log(" BLOCK",d,"hash",a[d][h]):console.log(" ?:",d,":",h,a[d][h]);console.log("")}}else console.log("AI COOKIE NOT PRESENT");return g};ai_get_cookie_text=function(a){var f=m(AiCookies.get("aiBLOCKS"));null==f&&(f={});var b="";f.hasOwnProperty("G")&&
(b="G["+JSON.stringify(f.G).replace(/"/g,"").replace("{","").replace("}","")+"] ");var c="";f.hasOwnProperty(a)&&(c=JSON.stringify(f[a]).replace(/"/g,"").replace("{","").replace("}",""));return b+c}};
var ai_insertion_js=!0,ai_block_class_def="code-block";
if("undefined"!=typeof ai_insertion_js){ai_insert=function(a,h,l){if(-1!=h.indexOf(":eq("))if(window.jQuery&&window.jQuery.fn)var n=jQuery(h);else{console.error("AI INSERT USING jQuery QUERIES:",h,"- jQuery not found");return}else n=document.querySelectorAll(h);for(var u=0,y=n.length;u<y;u++){var d=n[u];selector_string=d.hasAttribute("id")?"#"+d.getAttribute("id"):d.hasAttribute("class")?"."+d.getAttribute("class").replace(RegExp(" ","g"),"."):"";var w=document.createElement("div");w.innerHTML=l;
var m=w.getElementsByClassName("ai-selector-counter")[0];null!=m&&(m.innerText=u+1);m=w.getElementsByClassName("ai-debug-name ai-main")[0];if(null!=m){var r=a.toUpperCase();"undefined"!=typeof ai_front&&("before"==a?r=ai_front.insertion_before:"after"==a?r=ai_front.insertion_after:"prepend"==a?r=ai_front.insertion_prepend:"append"==a?r=ai_front.insertion_append:"replace-content"==a?r=ai_front.insertion_replace_content:"replace-element"==a&&(r=ai_front.insertion_replace_element));-1==selector_string.indexOf(".ai-viewports")&&
(m.innerText=r+" "+h+" ("+d.tagName.toLowerCase()+selector_string+")")}m=document.createRange();try{var v=m.createContextualFragment(w.innerHTML)}catch(t){}"before"==a?d.parentNode.insertBefore(v,d):"after"==a?d.parentNode.insertBefore(v,d.nextSibling):"prepend"==a?d.insertBefore(v,d.firstChild):"append"==a?d.insertBefore(v,null):"replace-content"==a?(d.innerHTML="",d.insertBefore(v,null)):"replace-element"==a&&(d.parentNode.insertBefore(v,d),d.parentNode.removeChild(d));z()}};ai_insert_code=function(a){function h(m,
r){return null==m?!1:m.classList?m.classList.contains(r):-1<(" "+m.className+" ").indexOf(" "+r+" ")}function l(m,r){null!=m&&(m.classList?m.classList.add(r):m.className+=" "+r)}function n(m,r){null!=m&&(m.classList?m.classList.remove(r):m.className=m.className.replace(new RegExp("(^|\\b)"+r.split(" ").join("|")+"(\\b|$)","gi")," "))}if("undefined"!=typeof a){var u=!1;if(h(a,"no-visibility-check")||a.offsetWidth||a.offsetHeight||a.getClientRects().length){u=a.getAttribute("data-code");var y=a.getAttribute("data-insertion-position"),
d=a.getAttribute("data-selector");if(null!=u)if(null!=y&&null!=d){if(-1!=d.indexOf(":eq(")?window.jQuery&&window.jQuery.fn&&jQuery(d).length:document.querySelectorAll(d).length)ai_insert(y,d,b64d(u)),n(a,"ai-viewports")}else{y=document.createRange();try{var w=y.createContextualFragment(b64d(u))}catch(m){}a.parentNode.insertBefore(w,a.nextSibling);n(a,"ai-viewports")}u=!0}else w=a.previousElementSibling,h(w,"ai-debug-bar")&&h(w,"ai-debug-script")&&(n(w,"ai-debug-script"),l(w,"ai-debug-viewport-invisible")),
n(a,"ai-viewports");return u}};ai_insert_list_code=function(a){var h=document.getElementsByClassName(a)[0];if("undefined"!=typeof h){var l=ai_insert_code(h),n=h.closest("div."+ai_block_class_def);if(n){l||n.removeAttribute("data-ai");var u=n.querySelectorAll(".ai-debug-block");n&&u.length&&(n.classList.remove("ai-list-block"),n.classList.remove("ai-list-block-ip"),n.classList.remove("ai-list-block-filter"),n.style.visibility="",n.classList.contains("ai-remove-position")&&(n.style.position=""))}h.classList.remove(a);
l&&z()}};ai_insert_viewport_code=function(a){var h=document.getElementsByClassName(a)[0];if("undefined"!=typeof h){var l=ai_insert_code(h);h.classList.remove(a);l&&(a=h.closest("div."+ai_block_class_def),null!=a&&(l=h.getAttribute("style"),null!=l&&a.setAttribute("style",a.getAttribute("style")+" "+l)));setTimeout(function(){h.removeAttribute("style")},2);z()}};ai_insert_adsense_fallback_codes=function(a){a.style.display="none";var h=a.closest(".ai-fallback-adsense"),l=h.nextElementSibling;l.getAttribute("data-code")?
ai_insert_code(l)&&z():l.style.display="block";h.classList.contains("ai-empty-code")&&null!=a.closest("."+ai_block_class_def)&&(a=a.closest("."+ai_block_class_def).getElementsByClassName("code-block-label"),0!=a.length&&(a[0].style.display="none"))};ai_insert_code_by_class=function(a){var h=document.getElementsByClassName(a)[0];"undefined"!=typeof h&&(ai_insert_code(h),h.classList.remove(a))};ai_insert_client_code=function(a,h){var l=document.getElementsByClassName(a)[0];if("undefined"!=typeof l){var n=
l.getAttribute("data-code");null!=n&&ai_check_block()&&(l.setAttribute("data-code",n.substring(Math.floor(h/19))),ai_insert_code_by_class(a),l.remove())}};ai_process_elements_active=!1;function z(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&&
ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document);"function"==typeof ai_process_wait_for_interaction&&ai_process_wait_for_interaction();"function"==typeof ai_process_delayed_blocks&&ai_process_delayed_blocks()},
5);ai_process_elements_active=!0}const B=document.querySelector("body");(new MutationObserver(function(a,h){for(const l of a)"attributes"===l.type&&"data-ad-status"==l.attributeName&&"unfilled"==l.target.dataset.adStatus&&l.target.closest(".ai-fallback-adsense")&&ai_insert_adsense_fallback_codes(l.target)})).observe(B,{attributes:!0,childList:!1,subtree:!0});var Arrive=function(a,h,l){function n(t,c,e){d.addMethod(c,e,t.unbindEvent);d.addMethod(c,e,t.unbindEventWithSelectorOrCallback);d.addMethod(c,
e,t.unbindEventWithSelectorAndCallback)}function u(t){t.arrive=r.bindEvent;n(r,t,"unbindArrive");t.leave=v.bindEvent;n(v,t,"unbindLeave")}if(a.MutationObserver&&"undefined"!==typeof HTMLElement){var y=0,d=function(){var t=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(c,e){return c instanceof HTMLElement&&t.call(c,e)},addMethod:function(c,e,f){var b=c[e];c[e]=
function(){if(f.length==arguments.length)return f.apply(this,arguments);if("function"==typeof b)return b.apply(this,arguments)}},callCallbacks:function(c,e){e&&e.options.onceOnly&&1==e.firedElems.length&&(c=[c[0]]);for(var f=0,b;b=c[f];f++)b&&b.callback&&b.callback.call(b.elem,b.elem);e&&e.options.onceOnly&&1==e.firedElems.length&&e.me.unbindEventWithSelectorAndCallback.call(e.target,e.selector,e.callback)},checkChildNodesRecursively:function(c,e,f,b){for(var g=0,k;k=c[g];g++)f(k,e,b)&&b.push({callback:e.callback,
elem:k}),0<k.childNodes.length&&d.checkChildNodesRecursively(k.childNodes,e,f,b)},mergeArrays:function(c,e){var f={},b;for(b in c)c.hasOwnProperty(b)&&(f[b]=c[b]);for(b in e)e.hasOwnProperty(b)&&(f[b]=e[b]);return f},toElementsArray:function(c){"undefined"===typeof c||"number"===typeof c.length&&c!==a||(c=[c]);return c}}}(),w=function(){var t=function(){this._eventsBucket=[];this._beforeRemoving=this._beforeAdding=null};t.prototype.addEvent=function(c,e,f,b){c={target:c,selector:e,options:f,callback:b,
firedElems:[]};this._beforeAdding&&this._beforeAdding(c);this._eventsBucket.push(c);return c};t.prototype.removeEvent=function(c){for(var e=this._eventsBucket.length-1,f;f=this._eventsBucket[e];e--)c(f)&&(this._beforeRemoving&&this._beforeRemoving(f),(f=this._eventsBucket.splice(e,1))&&f.length&&(f[0].callback=null))};t.prototype.beforeAdding=function(c){this._beforeAdding=c};t.prototype.beforeRemoving=function(c){this._beforeRemoving=c};return t}(),m=function(t,c){var e=new w,f=this,b={fireOnAttributesModification:!1};
e.beforeAdding(function(g){var k=g.target;if(k===a.document||k===a)k=document.getElementsByTagName("html")[0];var p=new MutationObserver(function(x){c.call(this,x,g)});var q=t(g.options);p.observe(k,q);g.observer=p;g.me=f});e.beforeRemoving(function(g){g.observer.disconnect()});this.bindEvent=function(g,k,p){k=d.mergeArrays(b,k);for(var q=d.toElementsArray(this),x=0;x<q.length;x++)e.addEvent(q[x],g,k,p)};this.unbindEvent=function(){var g=d.toElementsArray(this);e.removeEvent(function(k){for(var p=
0;p<g.length;p++)if(this===l||k.target===g[p])return!0;return!1})};this.unbindEventWithSelectorOrCallback=function(g){var k=d.toElementsArray(this);e.removeEvent("function"===typeof g?function(p){for(var q=0;q<k.length;q++)if((this===l||p.target===k[q])&&p.callback===g)return!0;return!1}:function(p){for(var q=0;q<k.length;q++)if((this===l||p.target===k[q])&&p.selector===g)return!0;return!1})};this.unbindEventWithSelectorAndCallback=function(g,k){var p=d.toElementsArray(this);e.removeEvent(function(q){for(var x=
0;x<p.length;x++)if((this===l||q.target===p[x])&&q.selector===g&&q.callback===k)return!0;return!1})};return this},r=new function(){function t(f,b,g){return d.matchesSelector(f,b.selector)&&(f._id===l&&(f._id=y++),-1==b.firedElems.indexOf(f._id))?(b.firedElems.push(f._id),!0):!1}var c={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};r=new m(function(f){var b={attributes:!1,childList:!0,subtree:!0};f.fireOnAttributesModification&&(b.attributes=!0);return b},function(f,b){f.forEach(function(g){var k=
g.addedNodes,p=g.target,q=[];null!==k&&0<k.length?d.checkChildNodesRecursively(k,b,t,q):"attributes"===g.type&&t(p,b,q)&&q.push({callback:b.callback,elem:p});d.callCallbacks(q,b)})});var e=r.bindEvent;r.bindEvent=function(f,b,g){"undefined"===typeof g?(g=b,b=c):b=d.mergeArrays(c,b);var k=d.toElementsArray(this);if(b.existing){for(var p=[],q=0;q<k.length;q++)for(var x=k[q].querySelectorAll(f),A=0;A<x.length;A++)p.push({callback:g,elem:x[A]});if(b.onceOnly&&p.length)return g.call(p[0].elem,p[0].elem);
setTimeout(d.callCallbacks,1,p)}e.call(this,f,b,g)};return r},v=new function(){function t(f,b){return d.matchesSelector(f,b.selector)}var c={};v=new m(function(){return{childList:!0,subtree:!0}},function(f,b){f.forEach(function(g){g=g.removedNodes;var k=[];null!==g&&0<g.length&&d.checkChildNodesRecursively(g,b,t,k);d.callCallbacks(k,b)})});var e=v.bindEvent;v.bindEvent=function(f,b,g){"undefined"===typeof g?(g=b,b=c):b=d.mergeArrays(c,b);e.call(this,f,b,g)};return v};h&&u(h.fn);u(HTMLElement.prototype);
u(NodeList.prototype);u(HTMLCollection.prototype);u(HTMLDocument.prototype);u(Window.prototype);h={};n(r,h,"unbindAllArrive");n(v,h,"unbindAllLeave");return h}}(window,"undefined"===typeof jQuery?null:jQuery,void 0)};
var ai_rotation_triggers=[],ai_block_class_def="code-block";
if("undefined"!=typeof ai_rotation_triggers){ai_process_rotation=function(b){var d="number"==typeof b.length;window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=d?Array.prototype.slice.call(b):b[0]);if(d){var e=!1;b.forEach((c,h)=>{if(c.classList.contains("ai-unprocessed")||c.classList.contains("ai-timer"))e=!0});if(!e)return;b.forEach((c,h)=>{c.classList.remove("ai-unprocessed");c.classList.remove("ai-timer")})}else{if(!b.classList.contains("ai-unprocessed")&&!b.classList.contains("ai-timer"))return;
b.classList.remove("ai-unprocessed");b.classList.remove("ai-timer")}var a=!1;if(d?b[0].hasAttribute("data-info"):b.hasAttribute("data-info")){var f="div.ai-rotate.ai-"+(d?JSON.parse(atob(b[0].dataset.info)):JSON.parse(atob(b.dataset.info)))[0];ai_rotation_triggers.includes(f)&&(ai_rotation_triggers.splice(ai_rotation_triggers.indexOf(f),1),a=!0)}if(d)for(d=0;d<b.length;d++)0==d?ai_process_single_rotation(b[d],!0):ai_process_single_rotation(b[d],!1);else ai_process_single_rotation(b,!a)};ai_process_single_rotation=
function(b,d){var e=[];Array.from(b.children).forEach((g,p)=>{g.matches(".ai-rotate-option")&&e.push(g)});if(0!=e.length){e.forEach((g,p)=>{g.style.display="none"});if(b.hasAttribute("data-next")){k=parseInt(b.getAttribute("data-next"));var a=e[k];if(a.hasAttribute("data-code")){var f=document.createRange(),c=!0;try{var h=f.createContextualFragment(b64d(a.dataset.code))}catch(g){c=!1}c&&(a=h)}0!=a.querySelectorAll("span[data-ai-groups]").length&&0!=document.querySelectorAll(".ai-rotation-groups").length&&
setTimeout(function(){B()},5)}else if(e[0].hasAttribute("data-group")){var k=-1,u=[];document.querySelectorAll("span[data-ai-groups]").forEach((g,p)=>{(g.offsetWidth||g.offsetHeight||g.getClientRects().length)&&u.push(g)});1<=u.length&&(timed_groups=[],groups=[],u.forEach(function(g,p){active_groups=JSON.parse(b64d(g.dataset.aiGroups));var r=!1;g=g.closest(".ai-rotate");null!=g&&g.classList.contains("ai-timed-rotation")&&(r=!0);active_groups.forEach(function(t,v){groups.push(t);r&&timed_groups.push(t)})}),
groups.forEach(function(g,p){-1==k&&e.forEach((r,t)=>{var v=b64d(r.dataset.group);option_group_items=v.split(",");option_group_items.forEach(function(C,E){-1==k&&C.trim()==g&&(k=t,timed_groups.includes(v)&&b.classList.add("ai-timed-rotation"))})})}))}else if(b.hasAttribute("data-shares"))for(f=JSON.parse(atob(b.dataset.shares)),a=Math.round(100*Math.random()),c=0;c<f.length&&(k=c,0>f[c]||!(a<=f[c]));c++);else f=b.classList.contains("ai-unique"),a=new Date,f?("number"!=typeof ai_rotation_seed&&(ai_rotation_seed=
(Math.floor(1E3*Math.random())+a.getMilliseconds())%e.length),f=ai_rotation_seed,f>e.length&&(f%=e.length),a=parseInt(b.dataset.counter),a<=e.length?(k=parseInt(f+a-1),k>=e.length&&(k-=e.length)):k=e.length):(k=Math.floor(Math.random()*e.length),a.getMilliseconds()%2&&(k=e.length-k-1));if(b.classList.contains("ai-rotation-scheduling"))for(k=-1,f=0;f<e.length;f++)if(a=e[f],a.hasAttribute("data-scheduling")){c=b64d(a.dataset.scheduling);a=!0;0==c.indexOf("^")&&(a=!1,c=c.substring(1));var q=c.split("="),
m=-1!=c.indexOf("%")?q[0].split("%"):[q[0]];c=m[0].trim().toLowerCase();m="undefined"!=typeof m[1]?m[1].trim():0;q=q[1].replace(" ","");var n=(new Date).getTime();n=new Date(n);var l=0;switch(c){case "s":l=n.getSeconds();break;case "i":l=n.getMinutes();break;case "h":l=n.getHours();break;case "d":l=n.getDate();break;case "m":l=n.getMonth();break;case "y":l=n.getFullYear();break;case "w":l=n.getDay(),l=0==l?6:l-1}c=0!=m?l%m:l;m=q.split(",");q=!a;for(n=0;n<m.length;n++)if(l=m[n],-1!=l.indexOf("-")){if(l=
l.split("-"),c>=l[0]&&c<=l[1]){q=a;break}}else if(c==l){q=a;break}if(q){k=f;break}}if(!(0>k||k>=e.length)){a=e[k];var z="",w=b.classList.contains("ai-timed-rotation");e.forEach((g,p)=>{g.hasAttribute("data-time")&&(w=!0)});if(a.hasAttribute("data-time")){f=atob(a.dataset.time);if(0==f&&1<e.length){c=k;do{c++;c>=e.length&&(c=0);m=e[c];if(!m.hasAttribute("data-time")){k=c;a=e[k];f=0;break}m=atob(m.dataset.time)}while(0==m&&c!=k);0!=f&&(k=c,a=e[k],f=atob(a.dataset.time))}if(0<f&&(c=k+1,c>=e.length&&
(c=0),b.hasAttribute("data-info"))){m=JSON.parse(atob(b.dataset.info))[0];b.setAttribute("data-next",c);var x="div.ai-rotate.ai-"+m;ai_rotation_triggers.includes(x)&&(d=!1);d&&(ai_rotation_triggers.push(x),setTimeout(function(){var g=document.querySelectorAll(x);g.forEach((p,r)=>{p.classList.add("ai-timer")});ai_process_rotation(g)},1E3*f));z=" ("+f+" s)"}}else a.hasAttribute("data-group")||e.forEach((g,p)=>{p!=k&&g.remove()});a.style.display="";a.style.visibility="";a.style.position="";a.style.width=
"";a.style.height="";a.style.top="";a.style.left="";a.classList.remove("ai-rotate-hidden");a.classList.remove("ai-rotate-hidden-2");b.style.position="";if(a.hasAttribute("data-code")){e.forEach((g,p)=>{g.innerText=""});d=b64d(a.dataset.code);f=document.createRange();c=!0;try{h=f.createContextualFragment(d)}catch(g){c=!1}a.append(h);D()}f=parseInt(a.dataset.index);var y=b64d(a.dataset.name);d=b.closest(".ai-debug-block");if(null!=d){h=d.querySelectorAll("kbd.ai-option-name");d=d.querySelectorAll(".ai-debug-block");
if(0!=d.length){var A=[];d.forEach((g,p)=>{g.querySelectorAll("kbd.ai-option-name").forEach((r,t)=>{A.push(r)})});h=Array.from(h);h=h.slice(0,h.length-A.length)}0!=h.length&&(separator=h[0].hasAttribute("data-separator")?h[0].dataset.separator:"",h.forEach((g,p)=>{g.innerText=separator+y+z}))}d=!1;a=b.closest(".ai-adb-show");null!=a&&a.hasAttribute("data-ai-tracking")&&(h=JSON.parse(b64d(a.getAttribute("data-ai-tracking"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,a.setAttribute("data-ai-tracking",
b64e(JSON.stringify(h))),a.classList.add("ai-track"),w&&ai_tracking_finished&&a.getAttribute("class").includes("ai-impression")&&a.classList.add("ai-no-pageview"),d=!0));d||(d=b.closest("div[data-ai]"),null!=d&&d.hasAttribute("data-ai")&&(h=JSON.parse(b64d(d.getAttribute("data-ai"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,d.setAttribute("data-ai",b64e(JSON.stringify(h))),d.classList.add("ai-track"),w&&ai_tracking_finished&&d.getAttribute("class").includes("ai-impression")&&
d.classList.add("ai-no-pageview"))))}}};ai_process_rotations=function(){document.querySelectorAll("div.ai-rotate").forEach((b,d)=>{ai_process_rotation(b)})};function B(){document.querySelectorAll("div.ai-rotate.ai-rotation-groups").forEach((b,d)=>{b.classList.add("ai-timer");ai_process_rotation(b)})}ai_process_rotations_in_element=function(b){null!=b&&b.querySelectorAll("div.ai-rotate").forEach((d,e)=>{ai_process_rotation(d)})};(function(b){"complete"===document.readyState||"loading"!==document.readyState&&
!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_rotations()},10)});ai_process_elements_active=!1;function D(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&&
ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5);ai_process_elements_active=!0}};
;!function(a,b){a(function(){"use strict";function a(a,b){return null!=a&&null!=b&&a.toLowerCase()===b.toLowerCase()}function c(a,b){var c,d,e=a.length;if(!e||!b)return!1;for(c=b.toLowerCase(),d=0;d<e;++d)if(c===a[d].toLowerCase())return!0;return!1}function d(a){for(var b in a)i.call(a,b)&&(a[b]=new RegExp(a[b],"i"))}function e(a){return(a||"").substr(0,500)}function f(a,b){this.ua=e(a),this._cache={},this.maxPhoneWidth=b||600}var g={};g.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",Pixel:"; \\bPixel\\b",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6",Dell:"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",Samsung:"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332",Asus:"Asus.*Galaxy|PadFone.*Mobile",Xiaomi:"^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G",NokiaLumia:"Lumia [0-9]{3,4}",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo (3DS|Switch)",Amoi:"Amoi",INQ:"INQ",OnePlus:"ONEPLUS",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",GoogleTablet:"Android.*Pixel C",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",NokiaLumiaTablet:"Lumia 2520",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z930|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android [0-9.]+; [a-z-]+; \\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9|TECNO DP8D",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",VerizonTablet:"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",KocasoTablet:"\\b(TB-1207)\\b",HisenseTablet:"\\b(F5281|E2371)\\b",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",iPadOS:"CPU OS 13",SailfishOS:"Sailfish",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+",Skyfire:"Skyfire",Edge:"\\bEdgiOS\\b|Mobile Safari/[.0-9]* Edge",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari",WeChat:"\\bMicroMessenger\\b",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",PaleMoon:"Android.*PaleMoon|Mobile.*PaleMoon"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:["Firefox/[VER]","FxiOS/[VER]"],Fennec:"Fennec/[VER]",Edge:"Edge/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]",UCBrowser:["UCWEB[VER]","UC.*Browser/[VER]"],MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",SamsungBrowser:"SamsungBrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",PaleMoon:"PaleMoon/[VER]",SailfishBrowser:"SailfishBrowser/[VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",Goanna:"Goanna/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",Sailfish:"Sailfish [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}},g.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,
shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var h,i=Object.prototype.hasOwnProperty;return g.FALLBACK_PHONE="UnknownPhone",g.FALLBACK_TABLET="UnknownTablet",g.FALLBACK_MOBILE="UnknownMobile",h="isArray"in Array?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},function(){var a,b,c,e,f,j,k=g.mobileDetectRules;for(a in k.props)if(i.call(k.props,a)){for(b=k.props[a],h(b)||(b=[b]),f=b.length,e=0;e<f;++e)c=b[e],j=c.indexOf("[VER]"),j>=0&&(c=c.substring(0,j)+"([\\w._\\+]+)"+c.substring(j+5)),b[e]=new RegExp(c,"i");k.props[a]=b}d(k.oss),d(k.phones),d(k.tablets),d(k.uas),d(k.utils),k.oss0={WindowsPhoneOS:k.oss.WindowsPhoneOS,WindowsMobileOS:k.oss.WindowsMobileOS}}(),g.findMatch=function(a,b){for(var c in a)if(i.call(a,c)&&a[c].test(b))return c;return null},g.findMatches=function(a,b){var c=[];for(var d in a)i.call(a,d)&&a[d].test(b)&&c.push(d);return c},g.getVersionStr=function(a,b){var c,d,e,f,h=g.mobileDetectRules.props;if(i.call(h,a))for(c=h[a],e=c.length,d=0;d<e;++d)if(f=c[d].exec(b),null!==f)return f[1];return null},g.getVersion=function(a,b){var c=g.getVersionStr(a,b);return c?g.prepareVersionNo(c):NaN},g.prepareVersionNo=function(a){var b;return b=a.split(/[a-z._ \/\-]/i),1===b.length&&(a=b[0]),b.length>1&&(a=b[0]+".",b.shift(),a+=b.join("")),Number(a)},g.isMobileFallback=function(a){return g.detectMobileBrowsers.fullPattern.test(a)||g.detectMobileBrowsers.shortPattern.test(a.substr(0,4))},g.isTabletFallback=function(a){return g.detectMobileBrowsers.tabletPattern.test(a)},g.prepareDetectionCache=function(a,c,d){if(a.mobile===b){var e,h,i;return(h=g.findMatch(g.mobileDetectRules.tablets,c))?(a.mobile=a.tablet=h,void(a.phone=null)):(e=g.findMatch(g.mobileDetectRules.phones,c))?(a.mobile=a.phone=e,void(a.tablet=null)):void(g.isMobileFallback(c)?(i=f.isPhoneSized(d),i===b?(a.mobile=g.FALLBACK_MOBILE,a.tablet=a.phone=null):i?(a.mobile=a.phone=g.FALLBACK_PHONE,a.tablet=null):(a.mobile=a.tablet=g.FALLBACK_TABLET,a.phone=null)):g.isTabletFallback(c)?(a.mobile=a.tablet=g.FALLBACK_TABLET,a.phone=null):a.mobile=a.tablet=a.phone=null)}},g.mobileGrade=function(a){var b=null!==a.mobile();return a.os("iOS")&&a.version("iPad")>=4.3||a.os("iOS")&&a.version("iPhone")>=3.1||a.os("iOS")&&a.version("iPod")>=3.1||a.version("Android")>2.1&&a.is("Webkit")||a.version("Windows Phone OS")>=7||a.is("BlackBerry")&&a.version("BlackBerry")>=6||a.match("Playbook.*Tablet")||a.version("webOS")>=1.4&&a.match("Palm|Pre|Pixi")||a.match("hp.*TouchPad")||a.is("Firefox")&&a.version("Firefox")>=12||a.is("Chrome")&&a.is("AndroidOS")&&a.version("Android")>=4||a.is("Skyfire")&&a.version("Skyfire")>=4.1&&a.is("AndroidOS")&&a.version("Android")>=2.3||a.is("Opera")&&a.version("Opera Mobi")>11&&a.is("AndroidOS")||a.is("MeeGoOS")||a.is("Tizen")||a.is("Dolfin")&&a.version("Bada")>=2||(a.is("UC Browser")||a.is("Dolfin"))&&a.version("Android")>=2.3||a.match("Kindle Fire")||a.is("Kindle")&&a.version("Kindle")>=3||a.is("AndroidOS")&&a.is("NookTablet")||a.version("Chrome")>=11&&!b||a.version("Safari")>=5&&!b||a.version("Firefox")>=4&&!b||a.version("MSIE")>=7&&!b||a.version("Opera")>=10&&!b?"A":a.os("iOS")&&a.version("iPad")<4.3||a.os("iOS")&&a.version("iPhone")<3.1||a.os("iOS")&&a.version("iPod")<3.1||a.is("Blackberry")&&a.version("BlackBerry")>=5&&a.version("BlackBerry")<6||a.version("Opera Mini")>=5&&a.version("Opera Mini")<=6.5&&(a.version("Android")>=2.3||a.is("iOS"))||a.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||a.version("Opera Mobi")>=11&&a.is("SymbianOS")?"B":(a.version("BlackBerry")<5||a.match("MSIEMobile|Windows CE.*Mobile")||a.version("Windows Mobile")<=5.2,"C")},g.detectOS=function(a){return g.findMatch(g.mobileDetectRules.oss0,a)||g.findMatch(g.mobileDetectRules.oss,a)},g.getDeviceSmallerSide=function(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height},f.prototype={constructor:f,mobile:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.mobile},phone:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.phone},tablet:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.tablet},userAgent:function(){return this._cache.userAgent===b&&(this._cache.userAgent=g.findMatch(g.mobileDetectRules.uas,this.ua)),this._cache.userAgent},userAgents:function(){return this._cache.userAgents===b&&(this._cache.userAgents=g.findMatches(g.mobileDetectRules.uas,this.ua)),this._cache.userAgents},os:function(){return this._cache.os===b&&(this._cache.os=g.detectOS(this.ua)),this._cache.os},version:function(a){return g.getVersion(a,this.ua)},versionStr:function(a){return g.getVersionStr(a,this.ua)},is:function(b){return c(this.userAgents(),b)||a(b,this.os())||a(b,this.phone())||a(b,this.tablet())||c(g.findMatches(g.mobileDetectRules.utils,this.ua),b)},match:function(a){return a instanceof RegExp||(a=new RegExp(a,"i")),a.test(this.ua)},isPhoneSized:function(a){return f.isPhoneSized(a||this.maxPhoneWidth)},mobileGrade:function(){return this._cache.grade===b&&(this._cache.grade=g.mobileGrade(this)),this._cache.grade}},"undefined"!=typeof window&&window.screen?f.isPhoneSized=function(a){return a<0?b:g.getDeviceSmallerSide()<=a}:f.isPhoneSized=function(){},f._impl=g,f.version="1.4.5 2021-03-13",f})}(function(a){if("undefined"!=typeof module&&module.exports)return function(a){module.exports=a()};if("function"==typeof define&&define.amd)return define;if("undefined"!=typeof window)return function(a){window.MobileDetect=a()};throw new Error("unknown environment")}());var ai_lists=!0,ai_block_class_def="code-block";
if("undefined"!=typeof ai_lists){function X(b,e){for(var n=[];b=b.previousElementSibling;)("undefined"==typeof e||b.matches(e))&&n.push(b);return n}function fa(b,e){for(var n=[];b=b.nextElementSibling;)("undefined"==typeof e||b.matches(e))&&n.push(b);return n}var host_regexp=RegExp(":\\/\\/(.[^/:]+)","i");function ha(b){b=b.match(host_regexp);return null!=b&&1<b.length&&"string"===typeof b[1]&&0<b[1].length?b[1].toLowerCase():null}function Q(b){return b.includes(":")?(b=b.split(":"),1E3*(3600*parseInt(b[0])+
60*parseInt(b[1])+parseInt(b[2]))):null}function Y(b){try{var e=Date.parse(b);isNaN(e)&&(e=null)}catch(n){e=null}if(null==e&&b.includes(" ")){b=b.split(" ");try{e=Date.parse(b[0]),e+=Q(b[1]),isNaN(e)&&(e=null)}catch(n){e=null}}return e}function Z(){null==document.querySelector("#ai-iab-tcf-bar")&&null==document.querySelector(".ai-list-manual")||"function"!=typeof __tcfapi||"function"!=typeof ai_load_blocks||"undefined"!=typeof ai_iab_tcf_callback_installed||(__tcfapi("addEventListener",2,function(b,
e){!e||"useractioncomplete"!==b.eventStatus&&"loaded"!==b.cmpStatus||(ai_tcData=b,ai_load_blocks(),b=document.querySelector("#ai-iab-tcf-status"),null!=b&&(b.textContent="IAB TCF 2.0 DATA LOADED"),b=document.querySelector("#ai-iab-tcf-bar"),null!=b&&(b.classList.remove("status-error"),b.classList.add("status-ok")))}),ai_iab_tcf_callback_installed=!0)}ai_process_lists=function(b){function e(a,c,h){if(0==a.length){if("!@!"==h)return!0;c!=h&&("true"==h.toLowerCase()?h=!0:"false"==h.toLowerCase()&&(h=
!1));return c==h}if("object"!=typeof c&&"array"!=typeof c)return!1;var k=a[0];a=a.slice(1);if("*"==k)for(let [,p]of Object.entries(c)){if(e(a,p,h))return!0}else if(k in c)return e(a,c[k],h);return!1}function n(a,c,h){if("object"!=typeof a||-1==c.indexOf("["))return!1;c=c.replace(/]| /gi,"").split("[");return e(c,a,h)}function z(){if("function"==typeof __tcfapi){var a=document.querySelector("#ai-iab-tcf-status"),c=document.querySelector("#ai-iab-tcf-bar");null!=a&&(a.textContent="IAB TCF 2.0 DETECTED");
__tcfapi("getTCData",2,function(h,k){k||"object"!=typeof ai_tcData||(h=ai_tcData,k=!0);k?(null!=c&&(c.classList.remove("status-error"),c.classList.add("status-ok")),"tcloaded"==h.eventStatus||"useractioncomplete"==h.eventStatus)?(ai_tcData=h,h.gdprApplies?null!=a&&(a.textContent="IAB TCF 2.0 DATA LOADED"):null!=a&&(a.textContent="IAB TCF 2.0 GDPR DOES NOT APPLY"),null!=c&&(c.classList.remove("status-error"),c.classList.add("status-ok")),setTimeout(function(){ai_process_lists()},10)):"cmpuishown"==
h.eventStatus&&(ai_cmpuishown=!0,null!=a&&(a.textContent="IAB TCF 2.0 CMP UI SHOWN"),null!=c&&(c.classList.remove("status-error"),c.classList.add("status-ok"))):(null!=a&&(a.textContent="IAB TCF 2.0 __tcfapi getTCData failed"),null!=c&&(c.classList.remove("status-ok"),c.classList.add("status-error")))})}}function C(a){"function"==typeof __tcfapi?(ai_tcfapi_found=!0,"undefined"==typeof ai_iab_tcf_callback_installed&&Z(),"undefined"==typeof ai_tcData_requested&&(ai_tcData_requested=!0,z(),cookies_need_tcData=
!0)):a&&("undefined"==typeof ai_tcfapi_found&&(ai_tcfapi_found=!1,setTimeout(function(){ai_process_lists()},10)),a=document.querySelector("#ai-iab-tcf-status"),null!=a&&(a.textContent="IAB TCF 2.0 MISSING: __tcfapi function not found"),a=document.querySelector("#ai-iab-tcf-bar"),null!=a&&(a.classList.remove("status-ok"),a.classList.add("status-error")))}if(null==b)b=document.querySelectorAll("div.ai-list-data, meta.ai-list-data");else{window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=Array.prototype.slice.call(b));
var x=[];b.forEach((a,c)=>{a.matches(".ai-list-data")?x.push(a):(a=a.querySelectorAll(".ai-list-data"),a.length&&a.forEach((h,k)=>{x.push(h)}))});b=x}if(b.length){b.forEach((a,c)=>{a.classList.remove("ai-list-data")});var L=ia(window.location.search);if(null!=L.referrer)var A=L.referrer;else A=document.referrer,""!=A&&(A=ha(A));var R=window.navigator.userAgent,S=R.toLowerCase(),aa=navigator.language,M=aa.toLowerCase();if("undefined"!==typeof MobileDetect)var ba=new MobileDetect(R);b.forEach((a,c)=>
{var h=document.cookie.split(";");h.forEach(function(f,l){h[l]=f.trim()});c=a.closest("div."+ai_block_class_def);var k=!0;if(a.hasAttribute("referer-list")){var p=a.getAttribute("referer-list");p=b64d(p).split(",");var v=a.getAttribute("referer-list-type"),E=!1;p.every((f,l)=>{f=f.trim();if(""==f)return!0;if("*"==f.charAt(0))if("*"==f.charAt(f.length-1)){if(f=f.substr(1,f.length-2),-1!=A.indexOf(f))return E=!0,!1}else{if(f=f.substr(1),A.substr(-f.length)==f)return E=!0,!1}else if("*"==f.charAt(f.length-
1)){if(f=f.substr(0,f.length-1),0==A.indexOf(f))return E=!0,!1}else if("#"==f){if(""==A)return E=!0,!1}else if(f==A)return E=!0,!1;return!0});var r=E;switch(v){case "B":r&&(k=!1);break;case "W":r||(k=!1)}}if(k&&a.hasAttribute("client-list")&&"undefined"!==typeof ba)switch(p=a.getAttribute("client-list"),p=b64d(p).split(","),v=a.getAttribute("client-list-type"),r=!1,p.every((f,l)=>{if(""==f.trim())return!0;f.split("&&").every((d,t)=>{t=!0;var w=!1;for(d=d.trim();"!!"==d.substring(0,2);)t=!t,d=d.substring(2);
"language:"==d.substring(0,9)&&(w=!0,d=d.substring(9).toLowerCase());var q=!1;w?"*"==d.charAt(0)?"*"==d.charAt(d.length-1)?(d=d.substr(1,d.length-2).toLowerCase(),-1!=M.indexOf(d)&&(q=!0)):(d=d.substr(1).toLowerCase(),M.substr(-d.length)==d&&(q=!0)):"*"==d.charAt(d.length-1)?(d=d.substr(0,d.length-1).toLowerCase(),0==M.indexOf(d)&&(q=!0)):d==M&&(q=!0):"*"==d.charAt(0)?"*"==d.charAt(d.length-1)?(d=d.substr(1,d.length-2).toLowerCase(),-1!=S.indexOf(d)&&(q=!0)):(d=d.substr(1).toLowerCase(),S.substr(-d.length)==
d&&(q=!0)):"*"==d.charAt(d.length-1)?(d=d.substr(0,d.length-1).toLowerCase(),0==S.indexOf(d)&&(q=!0)):ba.is(d)&&(q=!0);return(r=q?t:!t)?!0:!1});return r?!1:!0}),v){case "B":r&&(k=!1);break;case "W":r||(k=!1)}var N=p=!1;for(v=1;2>=v;v++)if(k){switch(v){case 1:var g=a.getAttribute("cookie-list");break;case 2:g=a.getAttribute("parameter-list")}if(null!=g){g=b64d(g);switch(v){case 1:var y=a.getAttribute("cookie-list-type");break;case 2:y=a.getAttribute("parameter-list-type")}g=g.replace("tcf-gdpr","tcf-v2[gdprApplies]=true");
g=g.replace("tcf-no-gdpr","tcf-v2[gdprApplies]=false");g=g.replace("tcf-google","tcf-v2[vendor][consents][755]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-google","!!tcf-v2[vendor][consents][755]");g=g.replace("tcf-media.net","tcf-v2[vendor][consents][142]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-media.net","!!tcf-v2[vendor][consents][142]");g=g.replace("tcf-amazon","tcf-v2[vendor][consents][793]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-amazon",
"!!tcf-v2[vendor][consents][793]");g=g.replace("tcf-ezoic","tcf-v2[vendor][consents][347]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-ezoic","!!tcf-v2[vendor][consents][347]");var F=g.split(","),ca=[];h.forEach(function(f){f=f.split("=");try{var l=JSON.parse(decodeURIComponent(f[1]))}catch(d){l=decodeURIComponent(f[1])}ca[f[0]]=l});r=!1;var I=a;F.every((f,l)=>{f.split("&&").every((d,t)=>{t=!0;for(d=d.trim();"!!"==d.substring(0,2);)t=!t,d=d.substring(2);var w=d,q="!@!",T="tcf-v2"==
w&&"!@!"==q,B=-1!=d.indexOf("["),J=0==d.indexOf("tcf-v2")||0==d.indexOf("euconsent-v2");J=J&&(B||T);-1!=d.indexOf("=")&&(q=d.split("="),w=q[0],q=q[1],B=-1!=w.indexOf("["),J=(J=0==w.indexOf("tcf-v2")||0==w.indexOf("euconsent-v2"))&&(B||T));if(J)document.querySelector("#ai-iab-tcf-status"),B=document.querySelector("#ai-iab-tcf-bar"),null!=B&&(B.style.display="block"),T&&"boolean"==typeof ai_tcfapi_found?r=ai_tcfapi_found?t:!t:"object"==typeof ai_tcData?(null!=B&&(B.classList.remove("status-error"),
B.classList.add("status-ok")),w=w.replace(/]| /gi,"").split("["),w.shift(),r=(w=e(w,ai_tcData,q))?t:!t):"undefined"==typeof ai_tcfapi_found&&(I.classList.add("ai-list-data"),N=!0,"function"==typeof __tcfapi?C(!1):"undefined"==typeof ai_tcData_retrying&&(ai_tcData_retrying=!0,setTimeout(function(){"function"==typeof __tcfapi?C(!1):setTimeout(function(){"function"==typeof __tcfapi?C(!1):setTimeout(function(){C(!0)},3E3)},1E3)},600)));else if(B)r=(w=n(ca,w,q))?t:!t;else{var U=!1;"!@!"==q?h.every(function(ja){return ja.split("=")[0]==
d?(U=!0,!1):!0}):U=-1!=h.indexOf(d);r=U?t:!t}return r?!0:!1});return r?!1:!0});r&&(N=!1,I.classList.remove("ai-list-data"));switch(y){case "B":r&&(k=!1);break;case "W":r||(k=!1)}}}a.classList.contains("ai-list-manual")&&(k?(I.classList.remove("ai-list-data"),I.classList.remove("ai-list-manual")):(p=!0,I.classList.add("ai-list-data")));(k||!p&&!N)&&a.hasAttribute("data-debug-info")&&(g=document.querySelector("."+a.dataset.debugInfo),null!=g&&(g=g.parentElement,null!=g&&g.classList.contains("ai-debug-info")&&
g.remove()));y=X(a,".ai-debug-bar.ai-debug-lists");var ka=""==A?"#":A;0!=y.length&&y.forEach((f,l)=>{l=f.querySelector(".ai-debug-name.ai-list-info");null!=l&&(l.textContent=ka,l.title=R+"\n"+aa);l=f.querySelector(".ai-debug-name.ai-list-status");null!=l&&(l.textContent=k?ai_front.visible:ai_front.hidden)});g=!1;if(k&&a.hasAttribute("scheduling-start")&&a.hasAttribute("scheduling-end")&&a.hasAttribute("scheduling-days")){var u=a.getAttribute("scheduling-start");v=a.getAttribute("scheduling-end");
y=a.getAttribute("scheduling-days");g=!0;u=b64d(u);F=b64d(v);var V=parseInt(a.getAttribute("scheduling-fallback")),O=parseInt(a.getAttribute("gmt"));if(u.includes("-")||F.includes("-"))P=Y(u)+O,K=Y(F)+O;else var P=Q(u),K=Q(F);P??=0;K??=0;var W=b64d(y).split(",");y=a.getAttribute("scheduling-type");var D=(new Date).getTime()+O;v=new Date(D);var G=v.getDay();0==G?G=6:G--;u.includes("-")||F.includes("-")||(u=(new Date(v.getFullYear(),v.getMonth(),v.getDate())).getTime()+O,D-=u,0>D&&(D+=864E5));scheduling_start_date_ok=
D>=P;scheduling_end_date_ok=0==K||D<K;u=scheduling_start_date_ok&&scheduling_end_date_ok&&W.includes(G.toString());switch(y){case "B":u=!u}u||(k=!1);var la=v.toISOString().split(".")[0].replace("T"," ");y=X(a,".ai-debug-bar.ai-debug-scheduling");0!=y.length&&y.forEach((f,l)=>{l=f.querySelector(".ai-debug-name.ai-scheduling-info");null!=l&&(l.textContent=la+" "+G+" current_time: "+Math.floor(D.toString()/1E3)+" start_date:"+Math.floor(P/1E3).toString()+"=>"+scheduling_start_date_ok.toString()+" end_date:"+
Math.floor(K/1E3).toString()+"=>"+scheduling_end_date_ok.toString()+" days:"+W.toString()+"=>"+W.includes(G.toString()).toString());l=f.querySelector(".ai-debug-name.ai-scheduling-status");null!=l&&(l.textContent=k?ai_front.visible:ai_front.hidden);k||0==V||(f.classList.remove("ai-debug-scheduling"),f.classList.add("ai-debug-fallback"),l=f.querySelector(".ai-debug-name.ai-scheduling-status"),null!=l&&(l.textContent=ai_front.fallback+" = "+V))})}if(p||!k&&N)return!0;a.style.visibility="";a.style.position=
"";a.style.width="";a.style.height="";a.style.zIndex="";if(k){if(null!=c&&(c.style.visibility="",c.classList.contains("ai-remove-position")&&(c.style.position="")),a.hasAttribute("data-code")){p=b64d(a.dataset.code);u=document.createRange();g=!0;try{H=u.createContextualFragment(p)}catch(f){g=!1}g&&(null!=a.closest("head")?(a.parentNode.insertBefore(H,a.nextSibling),a.remove()):a.append(H));da(a)}}else if(g&&!u&&0!=V){null!=c&&(c.style.visibility="",c.classList.contains("ai-remove-position")&&c.css({position:""}));
p=fa(a,".ai-fallback");0!=p.length&&p.forEach((f,l)=>{f.classList.remove("ai-fallback")});if(a.hasAttribute("data-fallback-code")){p=b64d(a.dataset.fallbackCode);u=document.createRange();g=!0;try{var H=u.createContextualFragment(p)}catch(f){g=!1}g&&a.append(H);da(a)}else a.style.display="none",null!=c&&null==c.querySelector(".ai-debug-block")&&c.hasAttribute("style")&&-1==c.getAttribute("style").indexOf("height:")&&(c.style.display="none");null!=c&&c.hasAttribute("data-ai")&&(c.getAttribute("data-ai"),
a.hasAttribute("fallback-tracking")&&(H=a.getAttribute("fallback-tracking"),c.setAttribute("data-ai-"+a.getAttribute("fallback_level"),H)))}else a.style.display="none",null!=c&&(c.removeAttribute("data-ai"),c.classList.remove("ai-track"),null!=c.querySelector(".ai-debug-block")?(c.style.visibility="",c.classList.remove("ai-close"),c.classList.contains("ai-remove-position")&&(c.style.position="")):c.hasAttribute("style")&&-1==c.getAttribute("style").indexOf("height:")&&(c.style.display="none"));a.setAttribute("data-code",
"");a.setAttribute("data-fallback-code","");null!=c&&c.classList.remove("ai-list-block")})}};function ea(b){b=`; ${document.cookie}`.split(`; ${b}=`);if(2===b.length)return b.pop().split(";").shift()}function ma(b,e,n){ea(b)&&(document.cookie=b+"="+(e?";path="+e:"")+(n?";domain="+n:"")+";expires=Thu, 01 Jan 1970 00:00:01 GMT")}function m(b){ea(b)&&(ma(b,"/",window.location.hostname),document.cookie=b+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;")}(function(b){"complete"===document.readyState||
"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_lists();setTimeout(function(){Z();if("function"==typeof ai_load_blocks){document.addEventListener("cmplzEnableScripts",e);document.addEventListener("cmplz_event_marketing",e);function e(n){"cmplzEnableScripts"!=n.type&&"all"!==n.consentLevel||ai_load_blocks()}document.addEventListener("cmplz_enable_category",function(n){"marketing"===
n.detail.category&&ai_load_blocks()})}},50);var b=document.querySelector(".ai-debug-page-type");null!=b&&b.addEventListener("dblclick",e=>{e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES");e=document.querySelector("#ai-iab-tcf-bar");null!=e&&(e.style.display="block")});b=document.querySelector("#ai-iab-tcf-bar");null!=b&&b.addEventListener("click",e=>{m("euconsent-v2");m("__lxG__consent__v2");m("__lxG__consent__v2_daisybit");m("__lxG__consent__v2_gdaisybit");
m("CookieLawInfoConsent");m("cookielawinfo-checkbox-advertisement");m("cookielawinfo-checkbox-analytics");m("cookielawinfo-checkbox-necessary");m("complianz_policy_id");m("complianz_consent_status");m("cmplz_marketing");m("cmplz_consent_status");m("cmplz_preferences");m("cmplz_statistics-anonymous");m("cmplz_choice");m("cmplz_banner-status");m("cmplz_functional");m("cmplz_policy_id");m("cmplz_statistics");m("moove_gdpr_popup");m("real_cookie_banner-blog:1-tcf");m("real_cookie_banner-blog:1");e=document.querySelector("#ai-iab-tcf-status");
null!=e&&(e.textContent="CONSENT COOKIES DELETED")})},5)});function da(b){setTimeout(function(){"function"==typeof ai_process_rotations_in_element&&ai_process_rotations_in_element(b);"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&&ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks(b);"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&
ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5)}function ia(b){var e=b?b.split("?")[1]:window.location.search.slice(1);b={};if(e){e=e.split("#")[0];e=e.split("&");for(var n=0;n<e.length;n++){var z=e[n].split("="),C=void 0,x=z[0].replace(/\[\d*\]/,function(L){C=L.slice(1,-1);return""});z="undefined"===typeof z[1]?"":z[1];x=x.toLowerCase();z=
z.toLowerCase();b[x]?("string"===typeof b[x]&&(b[x]=[b[x]]),"undefined"===typeof C?b[x].push(z):b[x][C]=z):b[x]=z}}return b}};
var ai_ip=!0,ai_use_maxmind="0",ai_data_id="9955e3c785",ai_ajax_url="https://informatecdigital.com/wp-admin/admin-ajax.php",ai_block_class_def="code-block";
if("undefined"!=typeof ai_ip){function u(b,g){g||(g=window.location.href);b=b.replace(/[\[\]]/g,"\\$&");return(b=(new RegExp("[?&]"+b+"(=([^&#]*)|&|#|$)")).exec(g))?b[2]?decodeURIComponent(b[2].replace(/\+/g," ")):"":null}function y(){return(new Date).getTime()+"-"+Math.round(1E5*Math.random())}function v(b){b.forEach((a,c)=>{a.classList.remove("ai-ip-data")});var g=!1;if(""!=ai_ip_data){try{var l=JSON.parse(ai_ip_data),f=l[0],r=l[1],p=l[2],q=l[3]}catch(a){return}var t=!1;-1!=f.indexOf("#")&&(t=!0,
f=f.replace("#",""));var e="";t&&(e="CFP BLOCKED, ");e=e+f+", "+r;null!=p&&null!=q&&(e=e+":"+p+":"+q);null==p&&(p="");null==q&&(q="");null!=l&&b.forEach((a,c)=>{c=a.closest("div."+ai_block_class_def);g=!0;if(a.hasAttribute("ip-addresses")){var h=a.getAttribute("ip-addresses").split(","),m=a.getAttribute("ip-address-list"),k=!1;h.every((d,n)=>{if("*"==d.charAt(0))if("*"==d.charAt(d.length-1)){if(d=d.substr(1,d.length-2),-1!=f.indexOf(d))return k=!0,!1}else{if(d=d.substr(1),f.substr(-d.length)==d)return k=
!0,!1}else if("*"==d.charAt(d.length-1)){if(d=d.substr(0,d.length-1),0==f.indexOf(d))return k=!0,!1}else if("#"==d){if(""==f)return k=!0,!1}else if("CFP"==d.toUpperCase()){if(t)return k=!0,!1}else if(d==f)return k=!0,!1;return!0});switch(m){case "B":k&&(g=!1);break;case "W":k||(g=!1)}}if(g&&a.hasAttribute("countries"))switch(h=a.getAttribute("countries").split(","),m=a.getAttribute("country-list"),k=!1,h.every((d,n)=>{n=d.trim().split(":");if(null==n[1]||""==p)n[1]="";if(null==n[2]||""==q)n[2]="";
d=n.join(":").toUpperCase();n=(r+":"+(""==n[1]?"":p)+":"+(""==n[2]?"":q)).toUpperCase();return d==n?(k=!0,!1):!0}),m){case "B":k&&(g=!1);break;case "W":k||(g=!1)}a.style.visibility="";a.style.position="";a.style.width="";a.style.height="";a.style.zIndex="";for(h=a.previousElementSibling;h&&!h.matches(".ai-debug-bar");)h=h.previousElementSibling;null!=h&&(m=h.querySelector(".ai-debug-name.ai-ip-country"),null!=m&&(m.textContent=e),m=h.querySelector(".ai-debug-name.ai-ip-status"),null!=m&&(m.textContent=
g?ai_front.visible:ai_front.hidden));if(g){if(null!=c&&(c.style.visibility="",c.classList.contains("ai-remove-position")&&(c.style.position="")),a.hasAttribute("data-code")){h=b64d(a.dataset.code);m=document.createRange();var w=!0;try{var x=m.createContextualFragment(h)}catch(d){w=!1}w&&(null!=a.closest("head")?(a.parentNode.insertBefore(x,a.nextSibling),a.remove()):a.append(x));a.removeAttribute("data-code");z(a)}}else a.style.display="none",null!=c&&(c.removeAttribute("data-ai"),c.classList.remove("ai-track"),
null!=c.querySelector(".ai-debug-block")?(c.style.visibility="",c.classList.remove("ai-close"),c.classList.contains("ai-remove-position")&&(c.style.position=""),a.hasAttribute("data-code")&&(c.classList.remove("ai-list-block"),c.classList.remove("ai-list-block-filter"),null!=c.previousElementSibling&&c.previousElementSibling.classList.contains("ai-debug-info")&&c.previousElementSibling.remove())):c.hasAttribute("style")&&-1==c.getAttribute("style").indexOf("height:")&&(c.style.display="none"));null!=
c&&c.classList.remove("ai-list-block-ip")})}}ai_process_ip_addresses=function(b){if(null==b)b=document.querySelectorAll("div.ai-ip-data, meta.ai-ip-data");else{window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=Array.prototype.slice.call(b));var g=[];b.forEach((e,a)=>{e.matches(".ai-ip-data")?g.push(e):(e=e.querySelectorAll(".ai-ip-data"),e.length&&e.forEach((c,h)=>{g.push(c)}))});b=g}if(b.length)if("undefined"!=typeof ai_ip_data)v(b);else if("undefined"==typeof ai_ip_data_requested){ai_ip_data_requested=
!0;var l=ai_ajax_url+"?action=ai_ajax&ip-data="+("1"==ai_use_maxmind?"ip-address-country-city":"ip-address-country"),f=u("ai-debug-ip-address");null!=f&&(l+="&ai-debug-ip-address="+f);f=u("ai-debug-country");null!=f&&(l+="&ai-debug-country="+f);f={ai_check:ai_data_id,version:y()};var r=[],p;for(p in f){var q=encodeURIComponent(p),t=encodeURIComponent(f[p]);r.push(q+"="+t)}r=r.join("&");(async function(){return await (await fetch(l,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},
body:r})).text()})().then(e=>{ai_ip_data=e;if(""==e){var a="Ajax request returned empty data, geo-targeting disabled";console.error(a);"undefined"!=typeof ai_js_errors&&ai_js_errors.push([a,l,0])}else try{JSON.parse(e)}catch(c){a="Ajax call returned invalid data, geo-targeting disabled",console.error(a,e),"undefined"!=typeof ai_js_errors&&ai_js_errors.push([a,l,0])}b=document.querySelectorAll("div.ai-ip-data, meta.ai-ip-data");b.length&&v(b)}).catch(e=>{document.querySelectorAll("div.ai-ip-data").forEach((a,
c)=>{a.style.display="none";a.style.visibility="";a.style.position="";a.style.width="";a.style.height="";a.style.zIndex="";a.classList.remove("ai-ip-data")})})}};(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_ip_addresses()},5)});function z(b){setTimeout(function(){"function"==typeof ai_process_rotations_in_element&&ai_process_rotations_in_element(b);
"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&&ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks(b);"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},
5)}};
ai_run_191816428470 = function(){
ai_document_write=document.write;document.write=function(a){"interactive"==document.readyState?(console.error("document.write called after page load: ",a),"undefined"!=typeof ai_js_errors&&ai_js_errors.push(["document.write called after page load",a,0])):ai_document_write.call(document,a)};
ai_insert_viewport_code ('ai-insert-4-56735843');
ai_insert ('after', '.entry-header', b64d ('PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTMnIHN0eWxlPSdtYXJnaW46IDhweCBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogYm90aDsnPgo8IS0tIGluZm9ybWF0ZWNkaWdpdGFsLXNreSAtLT4KPGlucyBjbGFzcz0iYWRzYnlnb29nbGUiCiAgICAgc3R5bGU9ImRpc3BsYXk6YmxvY2siCiAgICAgZGF0YS1hZC1jbGllbnQ9ImNhLXB1Yi0yNzQwMTM0NjgxNDc1ODc4IgogICAgIGRhdGEtYWQtc2xvdD0iMTY0NDE5OTI4MSIKICAgICBkYXRhLWFkLWZvcm1hdD0iYXV0byIKICAgICBkYXRhLWZ1bGwtd2lkdGgtcmVzcG9uc2l2ZT0idHJ1ZSI+PC9pbnM+CjxzY3JpcHQ+CiAgICAgKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsKPC9zY3JpcHQ+PC9kaXY+Cg=='));
};
if (document.readyState === 'complete' || (document.readyState !== 'loading' && !document.documentElement.doScroll)) ai_run_191816428470 (); else document.addEventListener ('DOMContentLoaded', ai_run_191816428470);
ai_js_code = true;
</script>
<script>window.lazyLoadOptions=[{elements_selector:"img[data-lazy-src],.rocket-lazyload",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,callback_loaded:function(element){if(element.tagName==="IFRAME"&&element.dataset.rocketLazyload=="fitvidscompatible"){if(element.classList.contains("lazyloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}},{elements_selector:".rocket-lazyload",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,}];window.addEventListener('LazyLoad::Initialized',function(e){var lazyLoadInstance=e.detail.instance;if(window.MutationObserver){var observer=new MutationObserver(function(mutations){var image_count=0;var iframe_count=0;var rocketlazy_count=0;mutations.forEach(function(mutation){for(var i=0;i<mutation.addedNodes.length;i++){if(typeof mutation.addedNodes[i].getElementsByTagName!=='function'){continue}
if(typeof mutation.addedNodes[i].getElementsByClassName!=='function'){continue}
images=mutation.addedNodes[i].getElementsByTagName('img');is_image=mutation.addedNodes[i].tagName=="IMG";iframes=mutation.addedNodes[i].getElementsByTagName('iframe');is_iframe=mutation.addedNodes[i].tagName=="IFRAME";rocket_lazy=mutation.addedNodes[i].getElementsByClassName('rocket-lazyload');image_count+=images.length;iframe_count+=iframes.length;rocketlazy_count+=rocket_lazy.length;if(is_image){image_count+=1}
if(is_iframe){iframe_count+=1}}});if(image_count>0||iframe_count>0||rocketlazy_count>0){lazyLoadInstance.update()}});var b=document.getElementsByTagName("body")[0];var config={childList:!0,subtree:!0};observer.observe(b,config)}},!1)</script><script data-no-minify="1" async src="https://informatecdigital.com/wp-content/plugins/wp-rocket/assets/js/lazyload/17.8.3/lazyload.min.js"></script><script type="text/rocketlazyloadscript">
/**
* Des-Re-Valorizador
* Código para hackear valoraciones
* Quita el contenido de la columna Valoración de la tabla generada
* por el plugin AAWP y asigna una valoración aleatoria entre 4, 4.5 y 5 estrellas.
* */
let colRatings = document.querySelectorAll( 'td.aawp-table__td-rating' );
colRatings.forEach( col => col.innerHTML = addRating() );
let colRatings2 = document.querySelectorAll( 'span.aawp-product__no-rating' );
colRatings2.forEach( col => col.innerHTML = addRating() );
function addRating() {
const ratings = [ 80, 90, 100 ];
const randomRating = ratings[ Math.floor( Math.random() * ratings.length ) ];
return '<span class="aawp-star-rating aawp-star-rating--small aawp-star-rating--v1"><span style="width: ' + randomRating + '%;"></span></span>';
}
</script>
<script>var rocket_beacon_data = {"ajax_url":"https:\/\/informatecdigital.com\/wp-admin\/admin-ajax.php","nonce":"7ac97b7365","url":"https:\/\/informatecdigital.com\/ia-local-y-automatizacion-agentes-seguridad-y-casos-reales","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":true,"lrc":true,"preload_fonts":true,"preconnect_external_domain":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800,"preload_fonts_exclusions":["api.fontshare.com","cdn.fontshare.com"],"processed_extensions":["woff2","woff","ttf"],"external_font_exclusions":[],"preconnect_external_domain_elements":["link","script","iframe"],"preconnect_external_domain_exclusions":["informatecdigital.com","com","hreflang","static.cloudflareinsights.com","rel=\"profile\"","rel=\"preconnect\"","rel=\"dns-prefetch\"","rel=\"icon\""]}</script><script data-name="wpr-wpr-beacon" src='https://informatecdigital.com/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script></body>
</html>
<!--
Performance optimized by Redis Object Cache. Mësoni më shumë: https://wprediscache.com U morën 5087 objekte (2 MB) nga Redis duke përdorur PhpRedis (v6.3.0).
--> Performancë e optimizuar nga WP Rocket. Mësoni më shumë: https://wp-rocket.me -->