diff --git a/blocked-services-rules.json b/blocked-services-rules.json
deleted file mode 100644
index d828d87..0000000
--- a/blocked-services-rules.json
+++ /dev/null
@@ -1,2857 +0,0 @@
-{
- "ServiceID": {
- "1": "社交媒体",
- "2": "游戏网站",
- "3": "下载站/应用商店",
- "4": "购物网站"
- },
- "GFWlist": {
- "Activision Blizzard": {
- "Name": "Activision Blizzard",
- "ServiceID": "2",
- "Icon": "",
- "Rules": {
- "1": "||activision.com^",
- "2": "||activisionblizzard.com^",
- "3": "||callofduty.com^",
- "4": "||callofdutyleague.com^",
- "5": "||codmwest.com^",
- "6": "||demonware.net^"
- },
- },
- "Amazon": {
- "Name": "Amazon",
- "ServiceID": "4",
- "Icon": "",
- "Rules": {
- "1": "||a2z.com^",
- "2": "||a2z.org.cn^",
- "3": "||aboutamazon.cn^",
- "4": "||aboutamazon.co.uk^",
- "5": "||aboutamazon.com.au^",
- "6": "||aboutamazon.com^",
- "7": "||aboutamazon.de^",
- "8": "||aboutamazon.es^",
- "9": "||aboutamazon.eu^",
- "10": "||aboutamazon.fr^",
- "11": "||aboutamazon.in^",
- "12": "||aboutamazon.it^",
- "13": "||aboutamazon.jp^",
- "14": "||aboutamazon.pl^",
- "15": "||acmvalidations.com^",
- "16": "||acmvalidationsaws.com^",
- "17": "||aesworkshops.com^",
- "18": "||aiv-cdn.net^",
- "19": "||alexa.com^",
- "20": "||alexafund.cn^",
- "21": "||alexafund.com.cn^",
- "22": "||amaaozn.com^",
- "23": "||amazon-adsystem.com^",
- "24": "||amazon-fashions.com^",
- "25": "||amazon-jp-recruiting.com^",
- "26": "||amazon-lantern.com^",
- "27": "||amazon-launchpad.com^",
- "28": "||amazon.ae^",
- "29": "||amazon.ca^",
- "30": "||amazon.cn^",
- "31": "||amazon.co.jp^",
- "32": "||amazon.co.uk^",
- "33": "||amazon.com.au^",
- "34": "||amazon.com.be^",
- "35": "||amazon.com.br^",
- "36": "||amazon.com.mx^",
- "37": "||amazon.com.tr^",
- "38": "||amazon.com^",
- "39": "||amazon.de^",
- "40": "||amazon.es^",
- "41": "||amazon.fr^",
- "42": "||amazon.in^",
- "43": "||amazon.it^",
- "44": "||amazon.jobs^",
- "45": "||amazon.jp^",
- "46": "||amazon.nl^",
- "47": "||amazon.red^",
- "48": "||amazon.se^",
- "49": "||amazon.sg^",
- "50": "||amazon^",
- "51": "||amazonalexavoxcon.com^",
- "52": "||amazonauthorinsights.com^",
- "53": "||amazonaws-china.com^",
- "54": "||amazonaws.cn^",
- "55": "||amazonaws.co.uk^",
- "56": "||amazonaws.com.cn^",
- "57": "||amazonaws.com^$dnstype=~CNAME",
- "58": "||amazonaws.tv^",
- "59": "||amazonbusiness.cn^",
- "60": "||amazonbusiness.com.cn^",
- "61": "||amazonbusiness.org^",
- "62": "||amazonbusinessblog.com^",
- "63": "||amazonchoice.cn^",
- "64": "||amazonchoice.com.cn^",
- "65": "||amazonchoices.cn^",
- "66": "||amazonchoices.com.cn^",
- "67": "||amazondevicesupport.com^",
- "68": "||amazonfctours.com^",
- "69": "||amazonianblog.com^",
- "70": "||amazonimages.com^",
- "71": "||amazoninspire.cn^",
- "72": "||amazoninspire.com.cn^",
- "73": "||amazonlaunchpad.cn^",
- "74": "||amazonlaunchpad.com.cn^",
- "75": "||amazonlaunchpad.com^",
- "76": "||amazonlending.com.cn^",
- "77": "||amazonliterarypartnership.com^",
- "78": "||amazonlumberyard.wang^",
- "79": "||amazonnow.cn^",
- "80": "||amazonnow.com.cn^",
- "81": "||amazonpay.com^",
- "82": "||amazonpay.in^",
- "83": "||amazonprimevideo.cn^",
- "84": "||amazonprimevideo.com.cn^",
- "85": "||amazonprimevideos.com^",
- "86": "||amazonsdi.com^",
- "87": "||amazonses.com^",
- "88": "||amazonstudiosguilds.com^",
- "89": "||amazontrust.com^",
- "90": "||amazonvideo.cc^",
- "91": "||amazonvideo.com^",
- "92": "||amazonvideodirect.com^",
- "93": "||amazonwebservices.com.cn^",
- "94": "||amazonworkdocs.cn^",
- "95": "||amazonworkdocs.com.cn^",
- "96": "||amazonworkdocs.com^",
- "97": "||amplifyapp.com^",
- "98": "||amplifyframework.com^",
- "99": "||amzn.asia^",
- "100": "||amzn.com^",
- "101": "||amzn.to^",
- "102": "||amznl.com^",
- "103": "||asfiovnxocqpcry.com.cn^",
- "104": "||assoc-amazon.cn^",
- "105": "||associates-amazon.com^",
- "106": "||audible.com^",
- "107": "||aws-border.cn^",
- "108": "||aws-icp-domain-manager.cn^",
- "109": "||aws-iot-hackathon.com^",
- "110": "||aws^",
- "111": "||awsapps.cn^",
- "112": "||awsapps.com.cn^",
- "113": "||awsautopilot.com^",
- "114": "||awsautoscaling.com^",
- "115": "||awsbraket.com^",
- "116": "||awscommandlineinterface.com^",
- "117": "||awsdns-*.co.uk^",
- "118": "||awsdns-*.com^",
- "119": "||awsdns-*.net^",
- "120": "||awsdns-*.org^",
- "121": "||awsdns-cn-*.biz^",
- "122": "||awsdns-cn-*.cn^",
- "123": "||awsdns-cn-*.top^",
- "124": "||awsedstart.com^",
- "125": "||awseducate.com^",
- "126": "||awseducate.net^",
- "127": "||awseducate.org^",
- "128": "||awsglobalaccelerator.com^",
- "129": "||awsloft-johannesburg.com^",
- "130": "||awsloft-stockholm.com^",
- "131": "||awssecworkshops.com^",
- "132": "||awsstatic.cn^",
- "133": "||awsstatic.com^",
- "134": "||awsthinkbox.com^",
- "135": "||awstrack.me^",
- "136": "||awstrust.com^",
- "137": "||boxofficemojo.com^",
- "138": "||cdkworkshop.com^",
- "139": "||cloudfront-cn.net^",
- "140": "||cloudfront-test.cn^",
- "141": "||cloudfront.cn^",
- "142": "||cloudfront.net^",
- "143": "||containersonaws.com^",
- "144": "||createspace.com^",
- "145": "||elasticbeanstalk.com^",
- "146": "||gameon-masters.com^",
- "147": "||gdansk-amazon.com^",
- "148": "||images-amazon.com^",
- "149": "||imdb.com^",
- "150": "||imdb.to^",
- "151": "||imdb^",
- "152": "||kindle.cn^",
- "153": "||kindle.co.jp^",
- "154": "||kindle.co.uk^",
- "155": "||kindle.com^",
- "156": "||kindle.de^",
- "157": "||kindle.es^",
- "158": "||kindle.fr^",
- "159": "||kindle.in^",
- "160": "||kindle.it^",
- "161": "||kindle.jp^",
- "162": "||kindle^",
- "163": "||kindleoasis.cn^",
- "164": "||kindleoasis.com.cn^",
- "165": "||kindleoasis.com^",
- "166": "||kindleoasis.info^",
- "167": "||kindleoasis.jp^",
- "168": "||kindleoasis.org^",
- "169": "||kindleoasis.us^",
- "170": "||kindleoasisnews.com^",
- "171": "||kindleproject.com^",
- "172": "||media-amazon.com^",
- "173": "||media-imdb.com^",
- "174": "||nwcdcloud.cn^",
- "175": "||nwcdcloud.com.cn^",
- "176": "||nwcddns.cn^",
- "177": "||nwcdinfosec.cn^",
- "178": "||prime-video.com^",
- "179": "||primeday.cn^",
- "180": "||primeday.com.cn^",
- "181": "||primeday.info^",
- "182": "||primevideo.cc^",
- "183": "||primevideo.com^",
- "184": "||primevideo.info^",
- "185": "||primevideo.org^",
- "186": "||primevideo.tv^",
- "187": "||route53.cn^",
- "188": "||sagemaker.com.cn^",
- "189": "||serving-sys.com^",
- "190": "||siege-amazon.com^",
- "191": "||ss2.us^",
- "192": "||ssl-images-amazon.com^",
- "193": "||thinkboxsoftware.com^",
- "194": "||ueberamazon.de^",
- "195": "||xn--cckwcxetd^",
- "196": "||xn--jlq480n2rg^",
- "197": "||yamaxun.cn^",
- "198": "||yamaxun.com^",
- "199": "||yamaxun^",
- "200": "||z.cn^",
- "201": "||zappos^"
- }
- },
- "Amazon Streaming": {
- "Name": "Amazon Streaming",
- "Icon": ""),
- "Rules": {
- "1": "||aiv-delivery.net^",
- "2": "||amazonmusic.com^",
- "||amazonprimevideo.cn^",
- "||amazonprimevideo.com.cn^",
- "||amazonprimevideos.com^",
- "||amazonvideo.cc^",
- "||amazonvideo.com^",
- "||amazonvideodirect.com^",
- "||atv-ext-eu.amazon.com^",
- "||atv-ext-fe.amazon.com^",
- "||atv-ext.amazon.com^",
- "||atv-ps-eu.amazon.co.uk^",
- "||atv-ps-eu.amazon.com^",
- "||atv-ps-fe.amazon.co.jp^",
- "||atv-ps-fe.amazon.com^",
- "||atv-ps.amazon.com^",
- "||av-eu.amazon.com^",
- "||av-na.amazon.com^",
- "||music.a2z.com^",
- "||music.amazon.co.uk^",
- "||music.amazon.com^",
- "||music.amazon.in^",
- "||prime-video.com^",
- "||primevideo.cc^",
- "||primevideo.com^",
- "||primevideo.info^",
- "||primevideo.org^",
- "||primevideo.tv^",
- "||video.a2z.com^"
- }
- },
- "Amino": {
- "Name": "Amino",
- "Icon": ""),
- "Rules": {
- "1": "||aminoapps.com^",
- }
- },
- "Apple Streaming": {
- "Name": "Apple Streaming",
- "Icon": ""),
- "Rules": {
- "||applemusic.apple^",
- "||hls-svod-aoc-ve.itunes.g.aaplimg.com^",
- "||itun.es^",
- "||itunes.apple.com^",
- "||itunes.ca^",
- "||itunes.co.th^",
- "||itunes.co^",
- "||itunes.com^",
- "||itunes.es^",
- "||itunes.g.aaplimg.com^",
- "||itunes.hk^",
- "||itunes.mx^",
- "||itunes.org^",
- "||itunes.us^",
- "||music.apple.com^",
- "||tv.apple.com^",
- "||tv.g.apple.com^",
- "||tv.v.aaplimg.com^",
- },
- "Battle.net": {
- "Name": "Battle.net",
- "Icon": ""),
- "Rules": {
- "||battle.net^",
- "||battlenet.com.cn^",
- "||bnet.163.com^",
- "||bnet.cn^",
- },
- "Betano": {
- "Name": "Betano",
- "Icon": ""),
- "Rules": {
- "||betano.bg^",
- "||betano.ca^",
- "||betano.com^",
- "||betano.cz^",
- "||betano.de^",
- "||betano.ng^",
- "||betano.pt^",
- },
- "Betfair": {
- "Name": "Betfair",
- "Icon": ""),
- "Rules": {
- "||betfair.com.au^",
- "||betfair.com^",
- "||betfair.es^",
- "||betfair.it^",
- "||betfair.ro^",
- "||betfair.se^",
- },
- "Betway": {
- "Name": "Betway",
- "Icon": ""),
- "Rules": {
- "||betway.be^",
- "||betway.bet.ar^",
- "||betway.co.za^",
- "||betway.com.gh^",
- "||betway.com.ng^",
- "||betway.com^",
- "||betway.de^",
- "||betway.es^",
- "||betway.fr^",
- "||betway.it^",
- "||betway.mx^",
- "||betway.pl^",
- "||betway.se^",
- "||betwaygroup.com^",
- "||betwaysatta.com^",
- "||vietnambetway88.com^",
- },
- "Bigo Live": {
- "Name": "Bigo Live",
- "Icon": ""),
- "Rules": {
- "||bigo.sg^",
- "||bigo.tv^",
- "||bigolive.tv^",
- "||bigovideo.tv^",
- },
- "Bilibili": {
- "Name": "Bilibili",
- "Icon": ""),
- "Rules": {
- "|upos-hz-mirrorakam.akamaized.net^",
- "||acg.tv^",
- "||acgvideo.com^",
- "||animetamashi.cn^",
- "||animetamashi.com^",
- "||anitama.cn^",
- "||anitama.net^",
- "||b23.tv^",
- "||bigfun.cn^",
- "||bili22.cn^",
- "||bili2233.cn^",
- "||bili23.cn^",
- "||bili33.cn^",
- "||biliapi.com^",
- "||biliapi.net^",
- "||bilibili.cc^",
- "||bilibili.cn^",
- "||bilibili.com^",
- "||bilibili.net^",
- "||bilibili.tv^",
- "||bilibiligame.cn^",
- "||bilibiligame.co^",
- "||bilibiligame.net^",
- "||bilibilipay.cn^",
- "||bilibilipay.com^",
- "||bilicdn1.com^",
- "||bilicdn2.com^",
- "||bilicdn3.com^",
- "||bilicdn4.com^",
- "||bilicdn5.com^",
- "||biligame.co^",
- "||biligame.com^",
- "||biligame.net^",
- "||biligo.com^",
- "||biliimg.com^",
- "||biliintl.com^",
- "||bilivideo.cn^",
- "||bilivideo.com^",
- "||bilivideo.net^",
- "||dreamcast.hk^",
- "||hdslb.com^",
- "||hdslb.org^",
- "||im9.com^",
- "||maoercdn.com^",
- "||mincdn.com^",
- "||yo9.com^",
- },
- "Blaze": {
- "Name": "Blaze",
- "Icon": ""),
- "Rules": {
- "||blaze.bet^",
- "||blaze.com.br^",
- "||blaze.com^",
- "||blazecareers.com^",
- },
- "Blizzard Entertainment": {
- "Name": "Blizzard Entertainment",
- "Icon": ""),
- "Rules": {
- "||battle.net^",
- "||battlenet.com.cn^",
- "||blizzard.cn^",
- "||blizzard.com^",
- "||blizzardgames.cn^",
- "||blz-contentstack.com^",
- "||blzstatic.cn^",
- "||bnet.163.com^",
- "||bnet.cn^",
- },
- "Bluesky": {
- "Name": "Bluesky",
- "Icon": ""),
- "Rules": {
- "||bsky.app^",
- "||bsky.social^",
- },
- },
- "Box": {
- "Name": "Box",
- "Icon": ""),
- "Rules": {
- "||box.com^",
- "||box.net^",
- "||boxcdn.net^",
- "||boxcloud.com^",
- },
- "Canais Globo": {
- "Name": "Canais Globo",
- "Icon": ""),
- "Rules": {
- "||canaisglobo.globo.com^",
- "||globosat.globo.com^",
- "||gsatmulti.globo.com^",
- },
- "ChatGPT": {
- "Name": "ChatGPT",
- "Icon": ""),
- "Rules": {
- "||chatgpt.com^",
- "||oaistatic.com^",
- "||oaiusercontent.com^",
- "||openai.com^",
- },
- "Claro": {
- "Name": "Claro",
- "Icon": ""),
- "Rules": {
- "||claro.com.ar^",
- "||claro.com.br^",
- "||claro.com.co^",
- "||claro.com.do^",
- "||claro.com.ec^",
- "||claro.com.gt^",
- "||claro.com.hn^",
- "||claro.com.ni^",
- "||claro.com.pa^",
- "||claro.com.pe^",
- "||claro.com.py^",
- "||claro.com.sv^",
- "||claro.com.uy^",
- "||claro.com^",
- "||claro.cr^",
- "||claro.net.br^",
- "||claro.net.co^",
- "||clarochile.cl^",
- "||claromusica.com^",
- "||claropr.com^",
- "||clarovideo.com^",
- "||usclaro.com^",
- },
- "Claude": {
- "Name": "Claude",
- "Icon": ""),
- "Rules": {
- "||anthropic.com^",
- "||claude.ai^",
- },
- "Cloudflare": {
- "Name": "Cloudflare",
- "Icon": ""),
- "Rules": {
- "||argotunnel.com^",
- "||cf-ipfs.com^",
- "||cloudflare-dns.com^",
- "||cloudflare-ipfs.com^",
- "||cloudflare-quic.com^",
- "||cloudflare.com^",
- "||cloudflare.net^",
- "||cloudflare.tv^",
- "||cloudflareaccess.com^",
- "||cloudflareapps.com^",
- "||cloudflarebolt.com^",
- "||cloudflareclient.com^",
- "||cloudflareinsights.com^",
- "||cloudflareok.com^",
- "||cloudflarepreview.com^",
- "||cloudflareresolve.com^",
- "||cloudflaressl.com^",
- "||cloudflarestatus.com^",
- "||cloudflarestorage.com^",
- "||cloudflarestream.com^",
- "||cloudflaretest.com^",
- "||cloudflarewarp.com^",
- "||every1dns.net^",
- "||one.one.one^",
- "||pacloudflare.com^",
- "||pages.dev^",
- "||trycloudflare.com^",
- "||videodelivery.net^",
- "||warp.plus^",
- "||workers.dev^",
- },
- "Clubhouse": {
- "Name": "Clubhouse",
- "Icon": ""),
- "Rules": {
- "||clubhouse.com^",
- "||clubhouseapi.com^",
- },
- "CoolApk": {
- "Name": "CoolApk",
- "Icon": ""),
- "Rules": {
- "||coolapk.com^",
- "||coolapkmarket.com^",
- "||coolapkmarket.net^",
- },
- "Crunchyroll": {
- "Name": "Crunchyroll",
- "Icon": ""),
- "Rules": {
- "||crunchyroll.com^",
- "||gccrunchyroll.com^",
- },
- "Dailymotion": {
- "Name": "Dailymotion",
- "Icon": ""),
- "Rules": {
- "||dailymotion.com^",
- "||dm-event.net^",
- "||dmcdn.net^",
- },
- "DeepSeek": {
- "Name": "DeepSeek",
- "Icon": ""),
- "Rules": {
- "||deepseek.com^",
- },
- "Deezer": {
- "Name": "Deezer",
- "Icon": ""),
- "Rules": {
- "||deezer.com^",
- "||dzcdn.net^",
- },
- "DirecTV Go": {
- "Name": "DirecTV Go",
- "Icon": ""),
- "Rules": {
- "||directvgo.com^",
- },
- "Discord": {
- "Name": "Discord",
- "Icon": ""),
- "Rules": {
- "|hammerandchisel.ssl.zendesk.com^",
- "||airhorn.solutions^",
- "||airhornbot.com^",
- "||bigbeans.solutions^",
- "||dis.gd^",
- "||discord-activities.com^",
- "||discord.co^",
- "||discord.com^",
- "||discord.design^",
- "||discord.dev^",
- "||discord.gg^",
- "||discord.gift^",
- "||discord.gifts^",
- "||discord.media^",
- "||discord.new^",
- "||discord.store^",
- "||discord.tools^",
- "||discordactivities.com^",
- "||discordapp.com^",
- "||discordapp.io^",
- "||discordapp.net^",
- "||discordcdn.com^",
- "||discordmerch.com^",
- "||discordpartygames.com^",
- "||discordsays.com^",
- "||discordstatus.com^",
- "||watchanimeattheoffice.com^",
- },
- "Discovery+": {
- "Name": "Discovery+",
- "Icon": ""),
- "Rules": {
- "||disco-api.com^",
- "||discoveryplus.com^",
- },
- "Disney+": {
- "Name": "Disney+",
- "Icon": ""),
- "Rules": {
- "||disney-plus.net^",
- "||disney.playback.edge.bamgrid.com^",
- "||disneynow.com^",
- "||disneyplus.com^",
- "||hotstar.com^",
- "||media.dssott.com^",
- "||star.playback.edge.bamgrid.com^",
- "||starplus.com^",
- },
- "Douban": {
- "Name": "Douban",
- "Icon": ""),
- "Rules": {
- "||douban.com^",
- "||douban.fm^",
- "||doubanio.com^",
- },
- "Dropbox": {
- "Name": "Dropbox",
- "Icon": ""),
- "Rules": {
- "||addtodropbox.com^",
- "||app.hellosign.com^",
- "||dash.ai^",
- "||db.tt^",
- "||docsend.com^",
- "||dropbox-dns.com^",
- "||dropbox.com^",
- "||dropbox.tech^",
- "||dropbox.zendesk.com^",
- "||dropboxapi.com^",
- "||dropboxbusiness.com^",
- "||dropboxcaptcha.com^",
- "||dropboxforum.com^",
- "||dropboxforums.com^",
- "||dropboxinsiders.com^",
- "||dropboxlegal.com^",
- "||dropboxmail.com^",
- "||dropboxpartners.com^",
- "||dropboxstatic.com^",
- "||dropboxteam.com^",
- "||dropboxusercontent.com^",
- "||getdropbox.com^",
- },
- "eBay": {
- "Name": "eBay",
- "Icon": ""),
- "Rules": {
- "|ebay-*.s3-us-west-1.amazonaws.com^",
- "||21centuryaccess.com^",
- "||4ebaytraders.com^",
- "||adcommerce.cn^",
- "||adcommerce.tv^",
- "||appforebay.cn^",
- "||appsonebay.net^",
- "||asebay.com^",
- "||baazee.com^",
- "||bidbay.com^",
- "||bidorbuyindia.com^",
- "||billpoint.com^",
- "||billpoint.info^",
- "||billpoint.tv^",
- "||billpoint.us^",
- "||billpointnewzealand.com^",
- "||blogebay.com^",
- "||bookclubcorner.com^",
- "||builtfromebay.com^",
- "||buyitnow.com^",
- "||buyitnow.net^",
- "||buyitnow.org^",
- "||buyitnow.tv^",
- "||buyitnowshop.net^",
- "||cafr.ca^",
- "||carebay.com^",
- "||cargigileads.com^",
- "||cebay.com^",
- "||collective99.com^",
- "||commerceos.com^",
- "||connectcommerce.cn^",
- "||connectcommerce.com.cn^",
- "||connectcommerce.hk^",
- "||connectcommerce.info^",
- "||connectcommerce.tv^",
- "||connectedcommerce.cn^",
- "||connectedcommerce.com^",
- "||connectedcommerce.tv^",
- "||crececonebay.com^",
- "||creditcardsbay.com^",
- "||cyber-bay.cn^",
- "||cyber-bay.com.cn^",
- "||cyber-bay.info^",
- "||cyber-bay.org^",
- "||dba.dk^",
- "||dealbay.com^",
- "||dealtime.com^",
- "||didce.com^",
- "||douya.org^",
- "||dreamtoplay.com^",
- "||e-bay.com^",
- "||e-bay.it^",
- "||e-bay.net^",
- "||eachpay.com^",
- "||eachpay.net^",
- "||ebahy.com^",
- "||ebay-authenticate.net^",
- "||ebay-confirm.com^",
- "||ebay-course.com^",
- "||ebay-cz.com^",
- "||ebay-delivery.com^",
- "||ebay-discoveries.com^",
- "||ebay-fashion.com^",
- "||ebay-inc.com^",
- "||ebay-inc.net^",
- "||ebay-inc.org^",
- "||ebay-online.com^",
- "||ebay-sales.com^",
- "||ebay-stories.com^",
- "||ebay-us.com^",
- "||ebay-vacation.com^",
- "||ebay.at^",
- "||ebay.be^",
- "||ebay.ca^",
- "||ebay.ch^",
- "||ebay.cn^",
- "||ebay.co.nz^",
- "||ebay.co.uk^",
- "||ebay.co.ve^",
- "||ebay.co.za^",
- "||ebay.com.ar^",
- "||ebay.com.au^",
- "||ebay.com.cn^",
- "||ebay.com.ec^",
- "||ebay.com.hk^",
- "||ebay.com.mt^",
- "||ebay.com.my^",
- "||ebay.com.ph^",
- "||ebay.com.sg^",
- "||ebay.com^",
- "||ebay.de^",
- "||ebay.es^",
- "||ebay.fr^",
- "||ebay.ie^",
- "||ebay.in^",
- "||ebay.it^",
- "||ebay.jp^",
- "||ebay.lt^",
- "||ebay.mn^",
- "||ebay.net.cn^",
- "||ebay.nl^",
- "||ebay.org.cn^",
- "||ebay.org^",
- "||ebay.ph^",
- "||ebay.pk^",
- "||ebay.pl^",
- "||ebay.sg^",
- "||ebay.us^",
- "||ebay.vn^",
- "||ebay.yn.cn^",
- "||ebay.zj.cn^",
- "||ebay25.com^",
- "||ebay68.com^",
- "||ebaya.com^",
- "||ebayads.com^",
- "||ebayads.net^",
- "||ebayadvertising.cn^",
- "||ebayadvertising.com^",
- "||ebayanunsios.net^",
- "||ebayauction.com^",
- "||ebayaustralia.com^",
- "||ebayauthenticate.com.cn^",
- "||ebaybags.com^",
- "||ebaybank.com^",
- "||ebaybenefits.com^",
- "||ebayboutique.com^",
- "||ebayca.com^",
- "||ebayca.org^",
- "||ebaycafe.com^",
- "||ebaycar.com^",
- "||ebaycareers.com^",
- "||ebaycbt.co.kr^",
- "||ebaycdn.net^",
- "||ebaychina.net^",
- "||ebayclassifieds.cn^",
- "||ebayclassifieds.com.cn^",
- "||ebayclassifieds.com^",
- "||ebayclassifieds.info^",
- "||ebayclassifieds.org^",
- "||ebayclassifieds.tv^",
- "||ebayclassifiedsgroup.com^",
- "||ebayclassifiedsgroup.com^",
- "||ebayclassifiedsgroup.info^",
- "||ebayclassifiedsgroup.org^",
- "||ebayclassifies.com^",
- "||ebayclub.com^",
- "||ebaycoins.com^",
- "||ebaycom.com^",
- "||ebaycommercenetwork.com^",
- "||ebaycourse.com^",
- "||ebayd.com^",
- "||ebayde.com^",
- "||ebaydesc.cn^",
- "||ebaydesc.com.cn^",
- "||ebaydlassifieds.com^",
- "||ebaydns.cn^",
- "||ebaydts.com^",
- "||ebayedu.com^",
- "||ebayeletro.com^",
- "||ebayenterprise.cn^",
- "||ebayenterprise.com.cn^",
- "||ebayenterprise.com^",
- "||ebayenterprise.info^",
- "||ebayenterprise.net^",
- "||ebayenterprise.tv^",
- "||ebayetc.com^",
- "||ebayexpress.sg^",
- "||ebayfashion.com^",
- "||ebayfashion.net^",
- "||ebayforcharity.org^",
- "||ebayforeclosure.org^",
- "||ebayfrance.com^",
- "||ebayglobalshipping.com^",
- "||ebaygroup.com^",
- "||ebayhabit.com^",
- "||ebayheels.com^",
- "||ebayhots.com^",
- "||ebayimg.com^",
- "||ebayinc.com^",
- "||ebayinc.net^",
- "||ebayinc.org^",
- "||ebayincconnectedcommerce.net^",
- "||ebayinkblog.com^",
- "||ebayinternetsalestax.com^",
- "||ebayit.com^",
- "||ebayjewelry.com^",
- "||ebayjob.com^",
- "||ebayla.org^",
- "||ebaylisting.com^",
- "||ebaylocal.net^",
- "||ebaylocationsdevacances.com^",
- "||ebaymag.com^",
- "||ebaymainstreet.com^",
- "||ebaymall.com^",
- "||ebaymarketplace.net^",
- "||ebaymotors.ca^",
- "||ebaymotors.cn^",
- "||ebaymotors.com.cn^",
- "||ebaymotors.com^",
- "||ebaymotors.org^",
- "||ebaymotorsblog.com^",
- "||ebaynow.com^",
- "||ebaynyc.com^",
- "||ebayon.com^",
- "||ebayon.net^",
- "||ebayoncampus.com^",
- "||ebayopen.com^",
- "||ebayopensource.com^",
- "||ebayopensource.net^",
- "||ebaypakistan.net^",
- "||ebaypark.com^",
- "||ebayparts.com^",
- "||ebaypedia.cn^",
- "||ebaypedia.com.cn^",
- "||ebayprivacycenter.com^",
- "||ebayqq.com^",
- "||ebayradio.com^",
- "||ebayrtm.com^",
- "||ebayseller.com^",
- "||ebayshoesstore.com^",
- "||ebayshop.com^",
- "||ebayshop111.com^",
- "||ebayshopping.cn^",
- "||ebayshopping.com.cn^",
- "||ebayshopping.org^",
- "||ebaysocial.com^",
- "||ebaysocial.ru^",
- "||ebaysoho.com^",
- "||ebaysohos.com^",
- "||ebaystatic.cn^",
- "||ebaystatic.com^",
- "||ebaystore.com^",
- "||ebaystore77.com^",
- "||ebaystores.cn^",
- "||ebaystyle.com^",
- "||ebaysweden.com^",
- "||ebayt.com^",
- "||ebaytechblog.com^",
- "||ebaytopratedseller.net^",
- "||ebaytrading.com^",
- "||ebaytradingassistant.com^",
- "||ebaytv.org^",
- "||ebayuae.net^",
- "||ebayvakantiehuizen.com^",
- "||ebayvalet.com^",
- "||ebayvietnam.net^",
- "||ebayworlds.com^",
- "||ebayy.com^",
- "||edisebay.com^",
- "||eebay.com^",
- "||epinions.com^",
- "||eu-consumer-empowerment.com^",
- "||expertmaker.com^",
- "||fairmarket.com^",
- "||fragrancebay.com^",
- "||francemail.com^",
- "||half.com.cn^",
- "||half.com^",
- "||half.tv^",
- "||halfcanada.com^",
- "||halfjapan.com^",
- "||handbagsoutletebay.com^",
- "||iebay.com^",
- "||irribay.com^",
- "||itsbetterwhenyouwinit.com^",
- "||liketwice.com^",
- "||liveauction.com^",
- "||milofetch.com^",
- "||musicbay.net^",
- "||myconstructionworld.net^",
- "||myebay.com^",
- "||nebay.net^",
- "||paisapay.cc^",
- "||paisapay.info^",
- "||paisapay.tv^",
- "||premobay.com^",
- "||privatemarketplaces.net^",
- "||privatemarketplaces.us^",
- "||prostores.cn^",
- "||prostores.com.cn^",
- "||prostores.com^",
- "||rethink.net^",
- "||shopibay.net^",
- "||shoping.com^",
- "||sourcingforebay.com.cn^",
- "||sourcingforebay.net^",
- "||sourcingforebay.tv^",
- "||speybay.com^",
- "||storesense.com^",
- "||svpply.com^",
- "||telebay.com^",
- "||telesell.com^",
- "||texttobuy.org^",
- "||theebayshop.com^",
- "||theopportunityproject.org^",
- "||towerauction.com^",
- "||vendu.com^",
- "||watch-ebay.org^",
- "||weareebay.com^",
- "||wwwdecide.com^",
- "||wwwebay.com^",
- "||wwwebay.net^",
- "||wwwwebay.com^",
- "||xindelu.com^",
- "||xn--3et96bj49ahpq.com^",
- "||xn--4vq475g.com^",
- "||xn--4vq477m.com^",
- "||xn--7hv594h.com^",
- "||xn--7hvy28f.cn^",
- "||xn--hb4aw0g.com^",
- "||xn--q41am8x.com^",
- "||xn--qoq462m.com^",
- "||xn--tkry91n.com^",
- "||xn--ubt498knmf.com^",
- "||xn--xsq421m.com^",
- "||xn--xsq605n.com^",
- "||xn--xsq959n.com^",
- "||xn--yf1at58a.com^",
- "||xxbay.com^",
- "||yibei.org^",
- },
- "Electronic Arts": {
- "Name": "Electronic Arts",
- "Icon": ""),
- "Rules": {
- "||ea.com^",
- "||eamobile.com^",
- "||easports.com^",
- "||nearpolar.com^",
- "||swtor.com^",
- "||tnt-ea.com^",
- },
- "Epic Games": {
- "Name": "Epic Games",
- "Icon": ""),
- "Rules": {
- "|cdn*-epicgames-*.file.myqcloud.com^",
- "|epicgames-download*-*.file.myqcloud.com^",
- "|epicgames-download*.akamaized.net^",
- "||eac-cdn.com^",
- "||easy.ac^",
- "||easyanticheat.net^",
- "||epicgames.com^",
- },
- "ESPN": {
- "Name": "ESPN",
- "Icon": ""),
- "Rules": {
- "||es.pn^",
- "||espn.cl^",
- "||espn.co.uk^",
- "||espn.com.ar^",
- "||espn.com.au^",
- "||espn.com.co^",
- "||espn.com.ec^",
- "||espn.com.mx^",
- "||espn.com.pa^",
- "||espn.com.pe^",
- "||espn.com.uy^",
- "||espn.com.ve^",
- "||espn.com^",
- "||espn.in",
- "||espn.net^",
- "||espncdn.com^",
- "||espncricinfo.com^",
- },
- "Facebook": {
- "Name": "Facebook",
- "Icon": ""),
- "Rules": {
- "|fbcdn-a.akamaihd.net^",
- "||aboutfacebook.com^",
- "||accessfacebookfromschool.com^",
- "||accountkit.com^",
- "||accountkit.com^",
- "||acebooik.com^",
- "||acebook.com^",
- "||advancediddetection.com^",
- "||askfacebook.net^",
- "||askfacebook.org^",
- "||atdmt2.com^",
- "||atlasdmt.com^",
- "||atlasonepoint.com^",
- "||atscaleconference.com^",
- "||botorch.org^",
- "||buck.build^",
- "||buckbuild.com^",
- "||buyingfacebooklikes.com^",
- "||careersatfb.com^",
- "||celebgramme.com^",
- "||china-facebook.com^",
- "||click-url.com^",
- "||como-hackearfacebook.com^",
- "||componentkit.org^",
- "||crowdtangle.com^",
- "||dacebook.com^",
- "||dlfacebook.com^",
- "||dotfacebook.com^",
- "||dotfacebook.net^",
- "||draftjs.org^",
- "||expresswifi.com^",
- "||f8.com^",
- "||faacebok.com^",
- "||faacebook.com^",
- "||faasbook.com^",
- "||facbebook.com^",
- "||facbeok.com^",
- "||facboo.com^",
- "||facbook.com^",
- "||facbool.com^",
- "||facboox.com^",
- "||faccebook.com^",
- "||faccebookk.com^",
- "||facdbook.com^",
- "||facdebook.com^",
- "||face-book.com^",
- "||faceabook.com^",
- "||facebboc.com^",
- "||facebbook.com^",
- "||facebboook.com^",
- "||facebcook.com^",
- "||facebdok.com^",
- "||facebgook.com^",
- "||facebhook.com^",
- "||facebkkk.com^",
- "||facebo-ok.com^",
- "||faceboak.com^",
- "||facebock.com^",
- "||facebocke.com^",
- "||facebof.com^",
- "||faceboik.com^",
- "||facebok.com^",
- "||facebokbook.com^",
- "||facebokc.com^",
- "||facebokk.com^",
- "||facebokok.com^",
- "||faceboks.com^",
- "||facebol.com^",
- "||facebolk.com^",
- "||facebomok.com^",
- "||faceboo.com^",
- "||facebooa.com^",
- "||faceboob.com^",
- "||faceboobok.com^",
- "||facebooc.com^",
- "||faceboock.com^",
- "||facebood.com^",
- "||facebooe.com^",
- "||faceboof.com^",
- "||facebooi.com^",
- "||facebooik.com^",
- "||facebooik.org^",
- "||facebooj.com^",
- "||facebook-corp.com^",
- "||facebook-covid-19.com^",
- "||facebook-ebook.com^",
- "||facebook-forum.com^",
- "||facebook-hardware.com^",
- "||facebook-inc.com^",
- "||facebook-login.com^",
- "||facebook-newsroom.com^",
- "||facebook-newsroom.org^",
- "||facebook-pmdcenter.com^",
- "||facebook-pmdcenter.net^",
- "||facebook-pmdcenter.org^",
- "||facebook-privacy.com^",
- "||facebook-program.com^",
- "||facebook-studio.com^",
- "||facebook-support.org^",
- "||facebook-texas-holdem.com^",
- "||facebook-texas-holdem.net^",
- "||facebook.br^",
- "||facebook.ca^",
- "||facebook.cc^",
- "||facebook.com^",
- "||facebook.design^",
- "||facebook.hu^",
- "||facebook.in^",
- "||facebook.net^",
- "||facebook.nl^",
- "||facebook.org^",
- "||facebook.se^",
- "||facebook.shop^",
- "||facebook.tv^",
- "||facebook.us^",
- "||facebook.wang^",
- "||facebook123.org^",
- "||facebook30.com^",
- "||facebook30.net^",
- "||facebook30.org^",
- "||facebook4business.com^",
- "||facebookads.com^",
- "||facebookadvertisingsecrets.com^",
- "||facebookappcenter.info^",
- "||facebookappcenter.net^",
- "||facebookappcenter.org^",
- "||facebookatschool.com^",
- "||facebookawards.com^",
- "||facebookblueprint.net^",
- "||facebookbrand.com^",
- "||facebookbrand.net^",
- "||facebookcanadianelectionintegrityinitiative.com^",
- "||facebookcareer.com^",
- "||facebookcheats.com^",
- "||facebookck.com^",
- "||facebookclub.com^",
- "||facebookcom.com^",
- "||facebookconnect.com^",
- "||facebookconsultant.org^",
- "||facebookcoronavirus.com^",
- "||facebookcovers.org^",
- "||facebookcredits.info^",
- "||facebookdating.net^",
- "||facebookdevelopergarage.com^",
- "||facebookdusexe.org^",
- "||facebookemail.com^",
- "||facebookenespanol.com^",
- "||facebookexchange.com^",
- "||facebookexchange.net^",
- "||facebookfacebook.com^",
- "||facebookflow.com^",
- "||facebookgames.com^",
- "||facebookgraphsearch.com^",
- "||facebookgraphsearch.info^",
- "||facebookgroups.com^",
- "||facebookhome.cc^",
- "||facebookhome.com^",
- "||facebookhome.info^",
- "||facebookhub.com^",
- "||facebooki.com^",
- "||facebookinc.com^",
- "||facebookland.com^",
- "||facebooklikeexchange.com^",
- "||facebooklive.com^",
- "||facebooklivestaging.net^",
- "||facebooklivestaging.org^",
- "||facebooklogin.com^",
- "||facebooklogin.info^",
- "||facebookloginhelp.net^",
- "||facebooklogs.com^",
- "||facebookmail.com^",
- "||facebookmail.tv^",
- "||facebookmanager.info^",
- "||facebookmarketing.info^",
- "||facebookmarketingpartner.com^",
- "||facebookmarketingpartners.com^",
- "||facebookmobile.com^",
- "||facebookmsn.com^",
- "||facebooknews.com^",
- "||facebooknfl.com^",
- "||facebooknude.com^",
- "||facebookofsex.com^",
- "||facebookook.com^",
- "||facebookpaper.com^",
- "||facebookpay.com^",
- "||facebookphonenumber.net^",
- "||facebookphoto.com^",
- "||facebookphotos.com^",
- "||facebookpmdcenter.com^",
- "||facebookpoke.net^",
- "||facebookpoke.org^",
- "||facebookpoker.info^",
- "||facebookpokerchips.info^",
- "||facebookporn.net^",
- "||facebookporn.org^",
- "||facebookporno.net^",
- "||facebookportal.com^",
- "||facebooks.com^",
- "||facebooksafety.com^",
- "||facebooksecurity.net^",
- "||facebookshop.com^",
- "||facebooksignup.net^",
- "||facebooksite.net^",
- "||facebookstories.com^",
- "||facebookstudios.net^",
- "||facebookstudios.org^",
- "||facebooksupplier.com^",
- "||facebooksuppliers.com^",
- "||facebookswagemea.com^",
- "||facebookswagstore.com^",
- "||facebooksz.com^",
- "||facebookthreads.net^",
- "||facebooktv.net^",
- "||facebooktv.org^",
- "||facebookvacation.com^",
- "||facebookw.com^",
- "||facebookwork.com^",
- "||facebookworld.com^",
- "||facebool.com^",
- "||facebool.info^",
- "||facebooll.com^",
- "||faceboom.com^",
- "||faceboon.com^",
- "||faceboonk.com^",
- "||faceboooik.com^",
- "||faceboook.com^",
- "||faceboop.com^",
- "||faceboot.com^",
- "||faceboox.com^",
- "||facebopk.com^",
- "||facebpook.com^",
- "||facebuk.com^",
- "||facebuok.com^",
- "||facebvook.com^",
- "||facebyook.com^",
- "||facebzook.com^",
- "||facecbgook.com^",
- "||facecbook.com^",
- "||facecbook.org^",
- "||facecook.com^",
- "||facecook.org^",
- "||facedbook.com^",
- "||faceebok.com^",
- "||faceebook.com^",
- "||faceebot.com^",
- "||facegbok.com^",
- "||facegbook.com^",
- "||faceobk.com^",
- "||faceobok.com^",
- "||faceobook.com^",
- "||faceook.com^",
- "||facerbooik.com^",
- "||facerbook.com^",
- "||facesbooc.com^",
- "||facesounds.com^",
- "||facetook.com^",
- "||facevbook.com^",
- "||facewbook.co^",
- "||facewook.com^",
- "||facfacebook.com^",
- "||facfebook.com^",
- "||faciometrics.com^",
- "||fackebook.com^",
- "||facnbook.com^",
- "||facrbook.com^",
- "||facvebook.com^",
- "||facwebook.com^",
- "||facxebook.com^",
- "||fadebook.com^",
- "||faebok.com^",
- "||faebook.com^",
- "||faebookc.com^",
- "||faeboook.com^",
- "||faecebok.com^",
- "||faesebook.com^",
- "||fafacebook.com^",
- "||faicbooc.com^",
- "||fasebokk.com^",
- "||fasebook.com^",
- "||faseboox.com^",
- "||fasttext.cc^",
- "||favebook.com^",
- "||faycbok.com^",
- "||fb.careers^",
- "||fb.com^",
- "||fb.gg^",
- "||fb.me^",
- "||fb.watch^",
- "||fbacebook.com^",
- "||fbbmarket.com^",
- "||fbboostyourbusiness.com^",
- "||fbcdn.com^",
- "||fbcdn.net^",
- "||fbf8.com^",
- "||fbfeedback.com^",
- "||fbhome.com^",
- "||fbidb.io^",
- "||fbinc.com^",
- "||fbinfer.com^",
- "||fbinnovation.com^",
- "||fblitho.com^",
- "||fbmarketing.com^",
- "||fbmessenger.com^",
- "||fbredex.com^",
- "||fbreg.com^",
- "||fbrell.com^",
- "||fbrpms.com^",
- "||fbsbx.com^",
- "||fbsbx.net^",
- "||fbsupport-covid.net^",
- "||fbthirdpartypixel.com^",
- "||fbthirdpartypixel.net^",
- "||fbthirdpartypixel.org^",
- "||fburl.com^",
- "||fbwat.ch^",
- "||fbworkmail.com^",
- "||fcacebook.com^",
- "||fcaebook.com^",
- "||fcebook.com^",
- "||fcebookk.com^",
- "||fcfacebook.com^",
- "||fdacebook.info^",
- "||feacboo.com^",
- "||feacbook.com^",
- "||feacbooke.com^",
- "||feacebook.com^",
- "||fecbbok.com^",
- "||fecbooc.com^",
- "||fecbook.com^",
- "||feceboock.com^",
- "||fecebook.net^",
- "||feceboox.com^",
- "||fececbook.com^",
- "||feook.com^",
- "||ferabook.com^",
- "||fescebook.com^",
- "||fesebook.com^",
- "||ffacebook.com^",
- "||fgacebook.com^",
- "||ficeboock.com^",
- "||flow.dev^",
- "||flow.org^",
- "||flowtype.org^",
- "||fmcebook.com^",
- "||fnacebook.com^",
- "||fosebook.com^",
- "||fpacebook.com^",
- "||fqcebook.com^",
- "||fracebook.com^",
- "||freeb.com^",
- "||freebasics.com^",
- "||freebasics.net^",
- "||freebs.com^",
- "||freefacebook.com^",
- "||freefacebook.net^",
- "||freefacebookads.net^",
- "||freefblikes.com^",
- "||freindfeed.com^",
- "||frescolib.org^",
- "||friendbook.info^",
- "||friendfed.com^",
- "||friendfeed-api.com^",
- "||friendfeed-media.com^",
- "||friendfeed.com^",
- "||friendfeedmedia.com^",
- "||fsacebok.com^",
- "||fscebook.com^",
- "||fundraisingwithfacebook.com^",
- "||funnyfacebook.org^",
- "||futureofbusinesssurvey.org^",
- "||gacebook.com^",
- "||gameroom.com^",
- "||gfacecbook.com^",
- "||groups.com^",
- "||hackerfacebook.com^",
- "||hackfacebook.com^",
- "||hackfacebookid.com^",
- "||hacklang.org^",
- "||hhvm.com^",
- "||hifacebook.info^",
- "||howtohackfacebook-account.com^",
- "||hsfacebook.com^",
- "||httpfacebook.com^",
- "||httpsfacebook.com^",
- "||httpwwwfacebook.com^",
- "||i.org^",
- "||internet.org^",
- "||klik.me^",
- "||liverail.com^",
- "||liverail.tv^",
- "||login-account.net^",
- "||m.me^",
- "||makeitopen.com^",
- "||markzuckerberg.com^",
- "||mcrouter.net^",
- "||mcrouter.org^",
- "||messenger.com^",
- "||messengerdevelopers.com^",
- "||midentsolutions.com^",
- "||mobilefacebook.com^",
- "||moneywithfacebook.com^",
- "||myfbfans.com^",
- "||nbabot.net^",
- "||newsfeed.com^",
- "||nextstop.com^",
- "||ogp.me^",
- "||online-deals.net^",
- "||opencreate.org^",
- "||opengraphprotocol.com^",
- "||opengraphprotocol.org^",
- "||parse.com^",
- "||pyrobot.org^",
- "||reachtheworldonfacebook.com^",
- "||react.com^",
- "||reactjs.com^",
- "||reactjs.org^",
- "||recoiljs.org^",
- "||redkix.com^",
- "||rocksdb.com^",
- "||rocksdb.net^",
- "||rocksdb.org^",
- "||rocksdb.org^",
- "||shopfacebook.com^",
- "||sportsfacebook.com^",
- "||sportstream.com^",
- "||supportfacebook.com^",
- "||terragraph.com^",
- "||thefacebook.com^",
- "||thefacebook.net^",
- "||thefind.com^",
- "||toplayerserver.com^",
- "||viewpointsfromfacebook.com^",
- "||whyfacebook.com^",
- "||workplace.com^",
- "||workplaceusecases.com^",
- "||worldhack.com^",
- "||www-facebook.com^",
- "||wwwfacebok.com^",
- "||wwwfacebook.com^",
- "||wwwmfacebook.com^",
- "||yogalayout.com^",
- "||zuckerberg.com^",
- "||zuckerberg.net^",
- },
- "FIFA": {
- "Name": "FIFA",
- "Icon": ""),
- "Rules": {
- "||fifa.com^",
- "||fifaplus.com^",
- },
- "Flickr": {
- "Name": "Flickr",
- "Icon": ""),
- "Rules": {
- "||flic.kr^",
- "||flickr.com^",
- "||flickr.net^",
- "||flickrprints.com^",
- "||flickrpro.com^",
- "||staticflickr.com^",
- },
- "Globoplay": {
- "Name": "Globoplay",
- "Icon": ""),
- "Rules": {
- "||cloud-jarvis.globo.com^",
- "||globoplay.com.br^",
- "||globoplay.com^",
- "||globoplay.globo.com^",
- },
- "GOG": {
- "Name": "GOG",
- "Icon": ""),
- "Rules": {
- "||gog-cdn-lumen.secure2.footprint.net^",
- "||gog-statics.com^",
- "||gog.com^",
- "||gogalaxy.com^",
- },
- "HBO Max": {
- "Name": "HBO Max",
- "Icon": ""),
- "Rules": {
- "||hbo.com^",
- "||hbogo.co.th^",
- "||hbogo.com^",
- "||hbogo.eu^",
- "||hbogoasia.com^",
- "||hbogoasia.id^",
- "||hbogoasia.ph^",
- "||hbomax-images.warnermediacdn.com^",
- "||hbomax.com^",
- "||hbomaxcdn.com^",
- "||hbonow.com^",
- "||max.com^",
- "||maxgo.com^",
- },
- "Hulu": {
- "Name": "Hulu",
- "Icon": ""),
- "Rules": {
- "||hulu.com^",
- },
- "iCloud Private Relay": {
- "Name": "iCloud Private Relay",
- "Icon": ""),
- "Rules": {
- "||mask-canary.icloud.com^$dnsrewrite=NXDOMAIN;;",
- "||mask-h2.icloud.com^$dnsrewrite=NXDOMAIN;;",
- "||mask.icloud.com^$dnsrewrite=NXDOMAIN;;",
- },
- "iHeartRadio": {
- "Name": "iHeartRadio",
- "Icon": ""),
- "Rules": {
- "||937theriver.com^",
- "||iheart.com^",
- "||iheart.mx^",
- "||iheartmedia.com^",
- "||iheartradio.ca^",
- "||iheartradio.co.nz^",
- "||iheartradio.com^",
- "||ihrdev.com^",
- "||ihrhls.com^",
- "||ihrint.com^",
- "||ihrstage.com^",
- },
- "Imgur": {
- "Name": "Imgur",
- "Icon": ""),
- "Rules": {
- "||imgur.com^",
- },
- "Instagram": {
- "Name": "Instagram",
- "Icon": ""),
- "Rules": {
- "||achat-followers-instagram.com^",
- "||acheter-followers-instagram.com^",
- "||acheterdesfollowersinstagram.com^",
- "||acheterfollowersinstagram.com^",
- "||bookstagram.com^",
- "||carstagram.com^",
- "||cdninstagram.com^",
- "||chickstagram.com^",
- "||ig.me^",
- "||igcdn.com^",
- "||igsonar.com^",
- "||igtv.com^",
- "||imstagram.com^",
- "||imtagram.com^",
- "||instaadder.com^",
- "||instachecker.com^",
- "||instafallow.com^",
- "||instafollower.com^",
- "||instagainer.com^",
- "||instagda.com^",
- "||instagify.com^",
- "||instagmania.com^",
- "||instagor.com^",
- "||instagram-brand.com^",
- "||instagram-engineering.com^",
- "||instagram-help.com^",
- "||instagram-press.com^",
- "||instagram-press.net^",
- "||instagram.com^",
- "||instagramci.com^",
- "||instagramcn.com^",
- "||instagramdi.com^",
- "||instagramhashtags.net^",
- "||instagramhilecim.com^",
- "||instagramhilesi.org^",
- "||instagramium.com^",
- "||instagramizlenme.com^",
- "||instagramkusu.com^",
- "||instagramlogin.com^",
- "||instagramm.com^",
- "||instagramn.com^",
- "||instagrampartners.com^",
- "||instagramphoto.com^",
- "||instagramq.com^",
- "||instagramsepeti.com^",
- "||instagramtakipcisatinal.net^",
- "||instagramtakiphilesi.com^",
- "||instagramtips.com^",
- "||instagramtr.com^",
- "||instagran.com^",
- "||instagranm.com^",
- "||instagrem.com^",
- "||instagrm.com^",
- "||instagtram.com^",
- "||instagy.com^",
- "||instamgram.com^",
- "||instangram.com^",
- "||instanttelegram.com^",
- "||instaplayer.net^",
- "||instastyle.tv^",
- "||instgram.com^",
- "||intagram.com^",
- "||intagrm.com^",
- "||intgram.com^",
- "||kingstagram.com^",
- "||lnstagram-help.com^",
- "||oninstagram.com^",
- "||online-instagram.com^",
- "||onlineinstagram.com^",
- "||theinstagramhack.com^",
- "||web-instagram.net^",
- "||wwwinstagram.com^",
- },
- "iQIYI": {
- "Name": "iQIYI",
- "Icon": ""),
- "Rules": {
- "||iq.com^",
- "||iqiyi.com^",
- "||iqiyipic.com^",
- "||pps.tv^",
- "||ppsimg.com^",
- "||qiyi.com^",
- "||qiyipic.com^",
- "||qy.net^",
- },
- "KakaoTalk": {
- "Name": "KakaoTalk",
- "Icon": ""),
- "Rules": {
- "||kakao.com^",
- "||kgslb.com^",
- },
- "Kik": {
- "Name": "Kik",
- "Icon": ""),
- "Rules": {
- "||kik.com^",
- },
- "KOOK": {
- "Name": "KOOK",
- "Icon": ""),
- "Rules": {
- "||kaiheila.cn^",
- "||kookapp.cn^",
- },
- "Lazada": {
- "Name": "Lazada",
- "Icon": ""),
- "Rules": {
- "||k1-lazadasg-oversea.gslb.ksyuncdn.com^",
- "||lazada.co.id^",
- "||lazada.co.th^",
- "||lazada.com.my^",
- "||lazada.com.ph^",
- "||lazada.com^",
- "||lazada.sg^",
- "||lazada.vn^",
- "||slatic.net^",
- },
- "League of Legends": {
- "Name": "League of Legends",
- "Icon": ""),
- "Rules": {
- "||leagueoflegends.co.kr^",
- "||leagueoflegends.com^",
- "||lol.riotgames.com^",
- "||lolstatic.com^",
- "||lolusercontent.com^",
- },
- "LINE": {
- "Name": "LINE",
- "Icon": ""),
- "Rules": {
- "||gcld-line.com^",
- "||lin.ee^",
- "||line-apps-beta.com^",
- "||line-apps-rc.com^",
- "||line-apps.com^",
- "||line-cdn.net^",
- "||line-scdn.net^",
- "||line.biz^",
- "||line.me^",
- "||line.naver.jp^",
- "||linecorp.com^",
- "||linefriends.com.tw^",
- "||linefriends.com^",
- "||linegame.jp^",
- "||linemobile.com^",
- "||linemyshop.com^",
- "||lineshoppingseller.com^",
- "||linetv.tw^",
- },
- "LinkedIn": {
- "Name": "LinkedIn",
- "Icon": ""),
- "Rules": {
- "||bizographics.com^",
- "||cs1404.wpc.epsiloncdn.net^",
- "||cs767.wpc.epsiloncdn.net^",
- "||l-0005.dc-msedge.net^",
- "||l-0005.l-dc-msedge.net^",
- "||l-0005.l-msedge.net^",
- "||l-0015.l-msedge.net^",
- "||licdn.cn^",
- "||licdn.com^",
- "||linkedin.at^",
- "||linkedin.be^",
- "||linkedin.cn^",
- "||linkedin.com^",
- "||linkedin.nl^",
- "||linkedin.qtlcdn.com^",
- "||lnkd.in^",
- },
- "Lionsgate+": {
- "Name": "Lionsgate+",
- "Icon": ""),
- "Rules": {
- "||lionsgateplus.com^",
- "||starz.com^",
- },
- "Looke": {
- "Name": "Looke",
- "Icon": ""),
- "Rules": {
- "||looke.com.br^",
- "||ottvs.com.br^",
- },
- "Mail.ru": {
- "Name": "Mail.ru",
- "Icon": ""),
- "Rules": {
- "||imgsmail.ru^",
- "||mail.ru^",
- "||mycdn.me^",
- },
- "Mastodon": {
- "Name": "Mastodon",
- "Icon": ""),
- "Rules": {
- "||aus.social^",
- "||awscommunity.social^",
- "||climatejustice.social^",
- "||cupoftea.social^",
- "||cyberplace.social^",
- "||defcon.social^",
- "||det.social^",
- "||glasgow.social^",
- "||h4.io^",
- "||hachyderm.io^",
- "||hessen.social^",
- "||hostux.social^",
- "||ieji.de^",
- "||indieweb.social^",
- "||infosec.exchange^",
- "||ioc.exchange^",
- "||kolektiva.social^",
- "||livellosegreto.it^",
- "||lor.sh^",
- "||lou.lt^",
- "||m.cmx.im^",
- "||mas.to^",
- "||masto.ai^",
- "||masto.es^",
- "||masto.nu^",
- "||masto.pt^",
- "||mastodon.au^",
- "||mastodon.bida.im^",
- "||mastodon.com.tr^",
- "||mastodon.eus^",
- "||mastodon.green^",
- "||mastodon.ie^",
- "||mastodon.iriseden.eu^",
- "||mastodon.nl^",
- "||mastodon.nu^",
- "||mastodon.nz^",
- "||mastodon.online^",
- "||mastodon.online^",
- "||mastodon.scot^",
- "||mastodon.sdf.org^",
- "||mastodon.social^",
- "||mastodon.social^",
- "||mastodon.top^",
- "||mastodon.uno^",
- "||mastodon.world^",
- "||mastodon.zaclys.com^",
- "||mastodonapp.uk^",
- "||mastodont.cat^",
- "||mastodontech.de^",
- "||mastodontti.fi^",
- "||mastouille.fr^",
- "||mathstodon.xyz^",
- "||metalhead.club^",
- "||mindly.social^",
- "||mstdn.ca^",
- "||mstdn.jp^",
- "||mstdn.party^",
- "||mstdn.plus^",
- "||mstdn.social^",
- "||muenchen.social^",
- "||muenster.im^",
- "||nerdculture.de^",
- "||noc.social^",
- "||norden.social^",
- "||nrw.social^",
- "||o3o.ca^",
- "||ohai.social^",
- "||piaille.fr^",
- "||pol.social^",
- "||ravenation.club^",
- "||rollenspiel.social^",
- "||ruby.social^",
- "||ruhr.social^",
- "||sfba.social^",
- "||socel.net^",
- "||social.anoxinon.de^",
- "||social.cologne^",
- "||social.dev-wiki.de^",
- "||social.linux.pizza^",
- "||social.politicaconciencia.org^",
- "||social.vivaldi.net^",
- "||stranger.social^",
- "||sueden.social^",
- "||tech.lgbt^",
- "||techhub.social^",
- "||theblower.au^",
- "||tkz.one^",
- "||todon.eu^",
- "||toot.aquilenet.fr^",
- "||toot.community^",
- "||toot.funami.tech^",
- "||toot.io^",
- "||toot.wales^",
- "||troet.cafe^",
- "||union.place^",
- "||universeodon.com^",
- "||urbanists.social^",
- "||wien.rocks^",
- "||wxw.moe^",
- },
- "Mercado Libre": {
- "Name": "Mercado Libre",
- "Icon": ""),
- "Rules": {
- "||mercadolibre.cl^",
- "||mercadolibre.co.cr^",
- "||mercadolibre.com.ar^",
- "||mercadolibre.com.bo^",
- "||mercadolibre.com.co^",
- "||mercadolibre.com.do^",
- "||mercadolibre.com.ec^",
- "||mercadolibre.com.gt^",
- "||mercadolibre.com.hn^",
- "||mercadolibre.com.mx^",
- "||mercadolibre.com.ni^",
- "||mercadolibre.com.pa^",
- "||mercadolibre.com.pe^",
- "||mercadolibre.com.py^",
- "||mercadolibre.com.sv^",
- "||mercadolibre.com.uy^",
- "||mercadolibre.com.ve^",
- "||mercadolibre.com^",
- "||mercadolivre.com.br^",
- "||mlstatic.com^",
- },
- "Minecraft": {
- "Name": "Minecraft",
- "Icon": ""),
- "Rules": {
- "||minecraft.net^",
- "||minecraftservices.com^",
- "||mojang.com^",
- },
- "Nebula": {
- "Name": "Nebula",
- "Icon": ""),
- "Rules": {
- "||nebula.app^",
- "||nebula.tv^",
- },
- "Netflix": {
- "Name": "Netflix",
- "Icon": ""),
- "Rules": {
- "|netflix.com.edgesuite.net^",
- "||dualstack.apiproxy-*.amazonaws.com^",
- "||dualstack.ichnaea-web-*.amazonaws.com^",
- "||fast.com^",
- "||netflix.ca^",
- "||netflix.com^",
- "||netflix.net^",
- "||netflixdnstest1.com^",
- "||netflixdnstest10.com^",
- "||netflixdnstest2.com^",
- "||netflixdnstest3.com^",
- "||netflixdnstest4.com^",
- "||netflixdnstest5.com^",
- "||netflixdnstest6.com^",
- "||netflixdnstest7.com^",
- "||netflixdnstest8.com^",
- "||netflixdnstest9.com^",
- "||netflixinvestor.com^",
- "||netflixtechblog.com^",
- "||nflxext.com^",
- "||nflximg.com^",
- "||nflximg.net^",
- "||nflxsearch.net^",
- "||nflxso.net^",
- "||nflxvideo.net^",
- },
- "Nintendo": {
- "Name": "Nintendo",
- "Icon": ""),
- "Rules": {
- "||nintendo-europe.com^",
- "||nintendo.be^",
- "||nintendo.co.jp^",
- "||nintendo.co.uk^",
- "||nintendo.com.au^",
- "||nintendo.com^",
- "||nintendo.de^",
- "||nintendo.es^",
- "||nintendo.eu^",
- "||nintendo.fr^",
- "||nintendo.it^",
- "||nintendo.jp^",
- "||nintendo.net^",
- "||nintendo.nl^",
- "||nintendo.pt^",
- "||nintendoswitch.cn^",
- "||nintendowifi.net^",
- },
- "Nvidia": {
- "Name": "Nvidia",
- "Icon": ""),
- "Rules": {
- "||geforce.com^",
- "||geforcenow.com^",
- "||nvidia.cn^",
- "||nvidia.com.global.ogslb.com^",
- "||nvidia.com^",
- "||nvidia.eu^",
- "||nvidia.partners^",
- "||nvidiagrid.net^",
- "||nvidianews.com^",
- "||tegrazone.com^",
- },
- "Odysee": {
- "Name": "Odysee",
- "Icon": ""),
- "Rules": {
- "||odycdn.com^",
- "||odysee.com^",
- "||odysee.live^",
- "||odysee.tv^",
- },
- "OK.ru": {
- "Name": "OK.ru",
- "Icon": ""),
- "Rules": {
- "||insideok.ru^",
- "||ok.games^",
- "||ok.ru^",
- "||okcdn.ru^",
- "||oktech.ru^",
- "||st.mycdn.me^",
- },
- "Olvid": {
- "Name": "Olvid",
- "Icon": ""),
- "Rules": {
- "||olvid-attachment-chunks.s3.eu-west-3.amazonaws.com^",
- "||olvid.io^",
- },
- "OnlyFans": {
- "Name": "OnlyFans",
- "Icon": ""),
- "Rules": {
- "||onlyfans.com^",
- },
- "Origin": {
- "Name": "Origin",
- "Icon": ""),
- "Rules": {
- "|cloudsync-prod.s3.amazonaws.com^",
- "|origin-a.akamaihd.net^",
- "|rtm.tnt-ea.com^",
- "|ssl-lvlt.cdn.ea.com^",
- "||accounts.ea.com^",
- "||dawngate.com^",
- "||eastore.com^",
- "||lordofultima.com^",
- "||origin.com^",
- "||origin.tv^",
- "||signin.ea.com^",
- },
- "Paramount Plus": {
- "Name": "Paramount Plus",
- "Icon": ""),
- "Rules": {
- "||paramountplus.com^",
- "||pplusstatic.com^",
- },
- "Peacock TV": {
- "Name": "Peacock TV",
- "Icon": ""),
- "Rules": {
- "||peacock.com^",
- "||peacocktv.com^",
- },
- "Pinterest": {
- "Name": "Pinterest",
- "Icon": ""),
- "Rules": {
- "||pin.it^",
- "||pinimg.com^",
- "||pinterest.at^",
- "||pinterest.be^",
- "||pinterest.ca^",
- "||pinterest.ch^",
- "||pinterest.cl^",
- "||pinterest.co.at^",
- "||pinterest.co.in^",
- "||pinterest.co.kr^",
- "||pinterest.co.nz^",
- "||pinterest.co.uk^",
- "||pinterest.co^",
- "||pinterest.com.au^",
- "||pinterest.com.bo^",
- "||pinterest.com.ec^",
- "||pinterest.com.mx^",
- "||pinterest.com.pe^",
- "||pinterest.com.py^",
- "||pinterest.com.uy^",
- "||pinterest.com.vn^",
- "||pinterest.com^",
- "||pinterest.de^",
- "||pinterest.dk^",
- "||pinterest.ec^",
- "||pinterest.engineering^",
- "||pinterest.es^",
- "||pinterest.fr^",
- "||pinterest.hu^",
- "||pinterest.id^",
- "||pinterest.ie^",
- "||pinterest.in^",
- "||pinterest.info^",
- "||pinterest.it^",
- "||pinterest.jp^",
- "||pinterest.kr^",
- "||pinterest.mx^",
- "||pinterest.nl^",
- "||pinterest.nz^",
- "||pinterest.pe^",
- "||pinterest.ph^",
- "||pinterest.pt^",
- "||pinterest.ru^",
- "||pinterest.se^",
- "||pinterest.th^",
- "||pinterest.tw^",
- "||pinterest.uk^",
- "||pinterest.vn^",
- "||pinterestmail.com^",
- },
- "PlayStation": {
- "Name": "PlayStation",
- "Icon": ""),
- "Rules": {
- "||gaikai.com",
- "||playstation-cloud.com",
- "||playstation-cloud.net",
- "||playstation.com",
- "||playstation.net",
- "||scea.com",
- "||sonyentertainmentnetwork.com",
- "||station.sony.com",
- },
- "Google Play Store": {
- "Name": "Google Play Store",
- "Icon": ""),
- "Rules": {
- "||play-fe.googleapis.com^",
- "||play-lh.googleusercontent.com^",
- "||prod-lt-playstoregatewayadapter-pa.googleapis.com^",
- },
- "Plenty of Fish": {
- "Name": "Plenty of Fish",
- "Icon": ""),
- "Rules": {
- "||pof.com^",
- },
- "Plex": {
- "Name": "Plex",
- "Icon": ""),
- "Rules": {
- "||plex.bz^",
- "||plex.direct^",
- "||plex.tv^",
- "||plexapp.com^",
- },
- "Pluto TV": {
- "Name": "Pluto TV",
- "Icon": ""),
- "Rules": {
- "||pluto.tv^",
- },
- "Privacy": {
- "Name": "Privacy",
- "Icon": ""),
- "Rules": {
- "||privacy.com.br^",
- },
- "QQ": {
- "Name": "QQ",
- "Icon": ""),
- "Rules": {
- "||qq-video.cdn-go.cn^",
- "||qq.com^$denyallow=wx.qq.com|weixin.qq.com",
- "||url.cn^",
- },
- "Rakuten Viki": {
- "Name": "Rakuten Viki",
- "Icon": ""),
- "Rules": {
- "||m-content-viki.s.llnwi.net^",
- "||viki.com^",
- "||viki.io^",
- },
- "Reddit": {
- "Name": "Reddit",
- "Icon": ""),
- "Rules": {
- "||redd.it^",
- "||reddit.com^",
- "||redditmail.com^",
- "||redditmedia.com^",
- "||redditstatic.com^",
- },
- "Riot Games": {
- "Name": "Riot Games",
- "Icon": ""),
- "Rules": {
- "||dradis-prod.rdatasrv.net^",
- "||pvp.net^",
- "||rgpub.io^",
- "||riotcdn.com^",
- "||riotcdn.net^",
- "||riotgames.com^",
- },
- "Roblox": {
- "Name": "Roblox",
- "Icon": ""),
- "Rules": {
- "||blox.com^",
- "||rbx.cn^",
- "||rbx.com^",
- "||rbxadder.com^",
- "||rbxcdn.com^",
- "||rbxcdn.net^",
- "||rbxinfra.com^",
- "||rbxinfra.net^",
- "||roblox.cn^",
- "||roblox.com^",
- "||roblox.qq.com^",
- "||robloxcdn.com^",
- "||robloxdev.cn^",
- },
- "Rockstar Games": {
- "Name": "Rockstar Games",
- "Icon": ""),
- "Rules": {
- "||rockstargames.com^",
- "||rsg.sc^",
- },
- "Samsung TV Plus": {
- "Name": "Samsung TV Plus",
- "Icon": ""),
- "Rules": {
- "||internetat.tv^",
- "||samsung.wurl.tv^",
- "||samsungcloud.tv^",
- "||samsungtvplus.com^",
- },
- "Shein": {
- "Name": "Shein",
- "Icon": ""),
- "Rules": {
- "||shein.co.uk^",
- "||shein.com^",
- "||shein.se^",
- "||sheinsz.ltwebstatic.com^",
- },
- "Shopee": {
- "Name": "Shopee",
- "Icon": ""),
- "Rules": {
- "||shopee.cl^",
- "||shopee.cn^",
- "||shopee.co.id^",
- "||shopee.co.th^",
- "||shopee.com.br^",
- "||shopee.com.co^",
- "||shopee.com.mx^",
- "||shopee.com.my^",
- "||shopee.com^",
- "||shopee.es^",
- "||shopee.fr^",
- "||shopee.id^",
- "||shopee.in^",
- "||shopee.io^",
- "||shopee.ph^",
- "||shopee.sg^",
- "||shopee.tw^",
- "||shopee.vn^",
- "||shopeemobile.com^",
- "||shp.ee^",
- },
- "Signal": {
- "Name": "Signal",
- "Icon": ""),
- "Rules": {
- "||signal.org^",
- "||whispersystems.org^",
- },
- "Skype": {
- "Name": "Skype",
- "Icon": ""),
- "Rules": {
- "||edge-skype-com.s-0001.s-msedge.net^",
- "||skype-edf.akadns.net^",
- "||skype.com^",
- "||skype.net^",
- "||skype^",
- "||skypeassets.com^",
- "||skypeassets.net^",
- "||skypedata.akadns.net^",
- },
- "Slack": {
- "Name": "Slack",
- "Icon": ""),
- "Rules": {
- "||slack-edge.com^",
- "||slack-files.com ^",
- "||slack-imgs.com^",
- "||slack.com^",
- "||slackb.com^",
- },
- "Snapchat": {
- "Name": "Snapchat",
- "Icon": ""),
- "Rules": {
- "||impala-media-production.s3.amazonaws.com^",
- "||sc-cdn.net^",
- "||snap-dev.net^",
- "||snapads.com^",
- "||snapchat.com^",
- "||snapkit.co",
- },
- "SoundCloud": {
- "Name": "SoundCloud",
- "Icon": ""),
- "Rules": {
- "||sndcdn.com^",
- "||soundcloud.com^",
- },
- "Spotify": {
- "Name": "Spotify",
- "Icon": ""),
- "Rules": {
- "/_spotify-connect._tcp.local/",
- "|audio-ak-spotify-com.akamaized.net^",
- "|audio4-ak-spotify-com.akamaized.net^",
- "|heads-ak-spotify-com.akamaized.net^",
- "|heads4-ak-spotify-com.akamaized.net^",
- "|spotify.com.edgesuite.net^",
- "|spotify.map.fastly.net^",
- "|spotify.map.fastlylb.net^",
- "||byspotify.com^",
- "||pscdn.co^",
- "||scdn.co^",
- "||spoti.fi^",
- "||spotify-everywhere.com^",
- "||spotify.com^",
- "||spotify.design^",
- "||spotifycdn.com^",
- "||spotifycdn.net^",
- "||spotifycharts.com^",
- "||spotifycodes.com^",
- "||spotifyforbrands.com^",
- "||spotifyjobs.com^",
- },
- "Spotify Video": {
- "Name": "Spotify Video",
- "Icon": ""),
- "Rules": {
- "||eip-ntt.video-ak.cdn.spotify.com.akahost.net^",
- "||video-ak.cdn.spotify.com^",
- "||video-akpcw-cdn-spotify-com.akamaized.net^",
- "||video-akpcw.spotifycdn.com.edgesuite.net^",
- "||video-akpcw.spotifycdn.com^",
- "||video-fa.scdn.co^",
- },
- "Steam": {
- "Name": "Steam",
- "Icon": ""),
- "Rules": {
- "|steambroadcast.akamaized.net^",
- "|steamcdn-a.akamaihd.net^",
- "|steamcommunity-a.akamaihd.net^",
- "|steamstore-a.akamaihd.net^",
- "|steamusercontent-a.akamaihd.net^",
- "|steamuserimages-a.akamaihd.net^",
- "|steamvideo-a.akamaihd.net^",
- "|xz.pphimalayanrt.com^",
- "||csgo.wmsj.cn^",
- "||dl.steam.clngaa.com^",
- "||dl.steam.ksyna.com^",
- "||dota2.wmsj.cn^",
- "||playartifact.com^",
- "||s.team^",
- "||st.dl.bscstorage.net^",
- "||st.dl.eccdnx.com^",
- "||st.dl.pinyuncloud.com^",
- "||steam-api.com^",
- "||steam-chat.com^",
- "||steamchina.com^",
- "||steamcommunity.com^",
- "||steamcontent.com^",
- "||steamdeck.com^",
- "||steamgames.com^",
- "||steampipe.steamcontent.tnkjmec.com^",
- "||steampowered.com.8686c.com^",
- "||steampowered.com^",
- "||steamserver.net^",
- "||steamstatic.com.8686c.com^",
- "||steamstatic.com^",
- "||steamusercontent.com^",
- "||underlords.com^",
- "||valvesoftware.com^",
- "||wmsjsteam.com^",
- },
- "Telegram (Web)": {
- "Name": "Telegram (Web)",
- "Icon": ""),
- "Rules": {
- "||comments.app^",
- "||contest.com^",
- "||graph.org^",
- "||quiz.directory^",
- "||t.me^",
- "||tdesktop.com^",
- "||telega.one^",
- "||telegra.ph^",
- "||telegram-cdn.org^",
- "||telegram.dog^",
- "||telegram.me^",
- "||telegram.org^",
- "||telegram.space^",
- "||telesco.pe^",
- "||tg.dev^",
- "||tx.me^",
- "||usercontent.dev^",
- },
- "Temu": {
- "Name": "Temu",
- "Icon": ""),
- "Rules": {
- "||kwcdn.com^",
- "||temu.com^",
- },
- "Tidal": {
- "Name": "Tidal",
- "Icon": ""),
- "Rules": {
- "||tidal.com^",
- },
- "": {
- "ServiceID": "tiktok",
- "Name": "TikTok",
- "Icon": ""),
- "Rules": {
- "||amemv.com^",
- "||bdurl.com^",
- "||bytecdn.cn^",
- "||bytedance.map.fastly.net^",
- "||bytedapm.com^",
- "||bytegoofy.com^",
- "||byteimg.com^",
- "||byteoversea.com^",
- "||bytescm.com^",
- "||douyin.com^",
- "||douyincdn.com^",
- "||douyinliving.com^",
- "||douyinpic.com^",
- "||douyinstatic.com^",
- "||douyinvod.com^",
- "||huoshan.com^",
- "||huoshanstatic.com^",
- "||huoshanzhibo.com^",
- "||muscdn.com^",
- "||musical.ly^",
- "||p16-tiktok-*.ibyteimg.com^",
- "||p16-tiktokcdn-com.akamaized.net^",
- "||pstatp.com^",
- "||snssdk.com^",
- "||tiktok.com^",
- "||tiktokcdn-us.com^",
- "||tiktokcdn.com^",
- "||tiktokrow-cdn.com^",
- "||tiktokv.com^",
- "||ttlivecdn.com.c.bytefcdn-oversea.com^",
- "||ttlivecdn.com^",
- "||v*.tiktokcdn-eu.com^",
- "||zijieapi.com^",
- },
- "Tinder": {
- "Name": "Tinder",
- "Icon": ""),
- "Rules": {
- "||gotinder.com^",
- "||tinder.com^",
- "||tindersparks.com^",
- },
- "Tumblr": {
- "Name": "Tumblr",
- "Icon": ""),
- "Rules": {"||tumblr.com^",
- },
- "Twitch": {"Name": "Twitch","Icon": ""),"Rules": {
- "||ext-twitch.tv^",
- "||jtvnw.net^",
- "||ttvnw.net^",
- "||twitch.tv^",
- "||twitchcdn.net^",
- "||twitchsvc.net^",},"X (formerly Twitter)": {
- "Name": "X (formerly Twitter)",
- "Icon": ""),
- "Rules": {
- "||ads-twitter.com^",
- "||cms-twdigitalassets.com^",
- "||periscope.tv^",
- "||pscp.tv^",
- "||t.co^",
- "||tellapart.com^",
- "||tweetdeck.com^",
- "||twimg.com^",
- "||twitpic.com^",
- "||twitter.biz^",
- "||twitter.com^",
- "||twitter.jp^",
- "||twittercommunity.com^",
- "||twitterflightschool.com^",
- "||twitterinc.com^",
- "||twitteroauth.com^",
- "||twitterstat.us^",
- "||twtrdns.net^",
- "||twttr.com^",
- "||twttr.net^",
- "||twvid.com^",
- "||vine.co^",
- "||x.com^",
- },
- "Ubisoft": {
- "Name": "Ubisoft",
- "Icon": ""),
- "Rules": {
- "||ubi.com^",
- "||ubisoft.com^",
- "||ubisoft.org^",
- "||ubisoftconnect.com^",
- },
- "Valorant": {
- "Name": "Valorant",
- "Icon": ""),
- "Rules": {
- "||playvalorant.com",
- "||valorant.scd.riotcdn.net",
- "||valorant.secure.dyn.riotcdn.net",
- },
- "Viber": {
- "Name": "Viber",
- "Icon": ""),
- "Rules": {
- "||viber.com^",
- },
- "Vimeo": {
- "Name": "Vimeo",
- "Icon": ""),
- "Rules": {
- "*vod-adaptive.akamaized.net^",
- "||livestream.com^",
- "||vhx.tv^",
- "||vhxqa1.com^",
- "||vhxqa2.com^",
- "||vhxqa3.com^",
- "||vhxqa4.com^",
- "||vhxqa6.com^",
- "||vimeo-staging.com^",
- "||vimeo-staging2.com^",
- "||vimeo.com^",
- "||vimeo.fr^",
- "||vimeobusiness.com^",
- "||vimeocdn.com^",
- "||vimeogoods.com^",
- "||vimeoondemand.com^",
- "||vimeostatus.com^",
- },
- "VK.com": {
- "Name": "VK.com",
- "Icon": ""),
- "Rules": {
- "||mvk.com^",
- "||userapi.com^",
- "||vk-cdn.me^",
- "||vk-cdn.net^",
- "||vk-portal.net^",
- "||vk.cc^",
- "||vk.com^",
- "||vk.design^",
- "||vk.link^",
- "||vk.me^",
- "||vkcache.com^",
- "||vkgo.app^",
- "||vklive.app^",
- "||vkmessenger.app^",
- "||vkmessenger.com^",
- "||vkontakte.ru^",
- "||vkuseraudio.com^",
- "||vkuserlive.net^",
- "||vkuservideo.com^",
- "||vkuservideo.net^",
- },
- "Voot": {
- "Name": "Voot",
- "Icon": ""),
- "Rules": {
- "||voot.com^",
- },
- "Wargaming": {
- "Name": "Wargaming",
- "Icon": ""),
- "Rules": {
- "||wargaming.com^",
- "||wargaming.net^",
- "||wgcdn.co^",
- "||wgcrowd.io^",
- "||worldoftanks.com^",
- "||worldofwarplanes.com^",
- "||worldofwarships.eu^",
- "||wotblitz.com^",
- },
- "WeChat": {
- "Name": "WeChat",
- "Icon": ""),
- "Rules": {
- "||wechat.com^",
- "||weixin.qq.com.cn^",
- "||weixin.qq.com^",
- "||weixinbridge.com^",
- "||wx.qq.com^",
- },
- "Weibo": {
- "Name": "Weibo",
- "Icon": ""),
- "Rules": {
- "||wbimg.cn^",
- "||wbimg.com^",
- "||wcdn.cn^",
- "||weibo.cn^",
- "||weibo.com.cn^",
- "||weibo.com^",
- "||weibocdn.com^",
- },
- "WhatsApp": {
- "Name": "WhatsApp",
- "Icon": ""),
- "Rules": {
- "||wa.me^",
- "||whatsapp-plus.info^",
- "||whatsapp-plus.me^",
- "||whatsapp-plus.net^",
- "||whatsapp.cc^",
- "||whatsapp.com^",
- "||whatsapp.info^",
- "||whatsapp.net^",
- "||whatsapp.org^",
- "||whatsapp.tv^",
- "||whatsappbrand.com^",
- },
- "Wizz": {
- "Name": "Wizz",
- "Icon": ""),
- "Rules": {
- "||getwizz.io^",
- "||wizz.chat^",
- "||wizzapp.com^",
- },
- "Xbox Live": {
- "Name": "Xbox Live",
- "Icon": ""),
- "Rules": {
- "||gamepass.com^",
- "||xbox-global.ifs.windows.com^",
- "||xbox-guide-public.rec.mp.microsoft.com^",
- "||xbox.ipv6.microsoft.com^",
- "||xboxab.com^",
- "||xboxab.net^",
- "||xboxlive.com^",
- "||xboxservices.com^",
- },
- "Xiaohongshu": {
- "Name": "Xiaohongshu",
- "Icon": ""),
- "Rules": {
- "||xhscdn.com^",
- "||xhscdn.net^",
- "||xiaohongshu.com.my^",
- "||xiaohongshu.com^",
- "||xiaohongshu.net^",
- },
- "YouTube": {
- "Name": "YouTube",
- "Icon": ""),
- "Rules": {
- "||ggpht.cn^",
- "||ggpht.com^",
- "||googlevideo.com^",
- "||wide-youtube.l.google.com^",
- "||withyoutube.com^",
- "||youtu.be^",
- "||youtube-nocookie.com^",
- "||youtube-ui.l.google.com^",
- "||youtube.ae^",
- "||youtube.al^",
- "||youtube.am^",
- "||youtube.at^",
- "||youtube.az^",
- "||youtube.ba^",
- "||youtube.be^",
- "||youtube.bg^",
- "||youtube.bh^",
- "||youtube.bo^",
- "||youtube.by^",
- "||youtube.ca^",
- "||youtube.cat^",
- "||youtube.ch^",
- "||youtube.cl^",
- "||youtube.co.ae^",
- "||youtube.co.at^",
- "||youtube.co.cr^",
- "||youtube.co.hu^",
- "||youtube.co.id^",
- "||youtube.co.il^",
- "||youtube.co.in^",
- "||youtube.co.jp^",
- "||youtube.co.ke^",
- "||youtube.co.kr^",
- "||youtube.co.ma^",
- "||youtube.co.nz^",
- "||youtube.co.th^",
- "||youtube.co.tz^",
- "||youtube.co.ug^",
- "||youtube.co.uk^",
- "||youtube.co.ve^",
- "||youtube.co.za^",
- "||youtube.co.zw^",
- "||youtube.co^",
- "||youtube.com.ar^",
- "||youtube.com.au^",
- "||youtube.com.az^",
- "||youtube.com.bd^",
- "||youtube.com.bh^",
- "||youtube.com.bo^",
- "||youtube.com.br^",
- "||youtube.com.by^",
- "||youtube.com.co^",
- "||youtube.com.do^",
- "||youtube.com.ec^",
- "||youtube.com.ee^",
- "||youtube.com.eg^",
- "||youtube.com.es^",
- "||youtube.com.gh^",
- "||youtube.com.gr^",
- "||youtube.com.gt^",
- "||youtube.com.hk^",
- "||youtube.com.hn^",
- "||youtube.com.hr^",
- "||youtube.com.jm^",
- "||youtube.com.jo^",
- "||youtube.com.kw^",
- "||youtube.com.lb^",
- "||youtube.com.lv^",
- "||youtube.com.ly^",
- "||youtube.com.mk^",
- "||youtube.com.mt^",
- "||youtube.com.mx^",
- "||youtube.com.my^",
- "||youtube.com.ng^",
- "||youtube.com.ni^",
- "||youtube.com.om^",
- "||youtube.com.pa^",
- "||youtube.com.pe^",
- "||youtube.com.ph^",
- "||youtube.com.pk^",
- "||youtube.com.pt^",
- "||youtube.com.py^",
- "||youtube.com.qa^",
- "||youtube.com.ro^",
- "||youtube.com.sa^",
- "||youtube.com.sg^",
- "||youtube.com.sv^",
- "||youtube.com.tn^",
- "||youtube.com.tr^",
- "||youtube.com.tw^",
- "||youtube.com.ua^",
- "||youtube.com.uy^",
- "||youtube.com.ve^",
- "||youtube.com^",
- "||youtube.cr^",
- "||youtube.cz^",
- "||youtube.de^",
- "||youtube.dk^",
- "||youtube.ee^",
- "||youtube.es^",
- "||youtube.fi^",
- "||youtube.fr^",
- "||youtube.ge^",
- "||youtube.googleapis.com^",
- "||youtube.gr^",
- "||youtube.gt^",
- "||youtube.hk^",
- "||youtube.hr^",
- "||youtube.hu^",
- "||youtube.ie^",
- "||youtube.in^",
- "||youtube.iq^",
- "||youtube.is^",
- "||youtube.it^",
- "||youtube.jo^",
- "||youtube.jp^",
- "||youtube.kr^",
- "||youtube.kz^",
- "||youtube.la^",
- "||youtube.lk^",
- "||youtube.lt^",
- "||youtube.lu^",
- "||youtube.lv^",
- "||youtube.ly^",
- "||youtube.ma^",
- "||youtube.md^",
- "||youtube.me^",
- "||youtube.mk^",
- "||youtube.mn^",
- "||youtube.mx^",
- "||youtube.my^",
- "||youtube.ng^",
- "||youtube.ni^",
- "||youtube.nl^",
- "||youtube.no^",
- "||youtube.pa^",
- "||youtube.pe^",
- "||youtube.ph^",
- "||youtube.pk^",
- "||youtube.pl^",
- "||youtube.pr^",
- "||youtube.pt^",
- "||youtube.qa^",
- "||youtube.ro^",
- "||youtube.rs^",
- "||youtube.ru^",
- "||youtube.sa^",
- "||youtube.se^",
- "||youtube.sg^",
- "||youtube.si^",
- "||youtube.sk^",
- "||youtube.sn^",
- "||youtube.soy^",
- "||youtube.sv^",
- "||youtube.tn^",
- "||youtube.tv^",
- "||youtube.ua^",
- "||youtube.ug^",
- "||youtube.uy^",
- "||youtube.vn^",
- "||youtube^",
- "||youtubeeducation.com^",
- "||youtubeembeddedplayer.googleapis.com^",
- "||youtubefanfest.com^",
- "||youtubegaming.com^",
- "||youtubego.co.id^",
- "||youtubego.co.in^",
- "||youtubego.com.br^",
- "||youtubego.com^",
- "||youtubego.id^",
- "||youtubego.in^",
- "||youtubei.googleapis.com^",
- "||youtubekids.com^",
- "||youtubemobilesupport.com^",
- "||yt.be^",
- "||ytimg.com^",
- },
- "YY": {
- "Name": "YY",
- "Icon": ""),
- "Rules": {
- "||yy.com^",
- },
- "Zhihu": {
- "Name": "Zhihu",
- "Icon": ""),
- "Rules": {
- "||zhihu.com^",
- "||zhimg.com^",
- },
- }
- }
\ No newline at end of file
diff --git a/blocked-services-rules.json.backup b/blocked-services-rules.json.backup
deleted file mode 100644
index 5470cd9..0000000
--- a/blocked-services-rules.json.backup
+++ /dev/null
@@ -1,2894 +0,0 @@
-{
- "ServiceID": {
- "1": "社交媒体",
- "2": "游戏网站",
- "3": "下载站/应用商店",
- "4": "购物网站"
- },
- "GFWlist": {
- "Activision Blizzard": {
- "Name": "Activision Blizzard",
- "ServiceID": "2",
- "Icon": "",
- "Rules": {
- "1": "||activision.com^",
- "2": "||activisionblizzard.com^",
- "3": "||callofduty.com^",
- "4": "||callofdutyleague.com^",
- "5": "||codmwest.com^",
- "6": "||demonware.net^"
- },
- },
- "Amazon": {
- "Name": "Amazon",
- "ServiceID": "4",
- "Icon": "",
- "Rules": {
- "1": "||a2z.com^",
- "2": "||a2z.org.cn^",
- "3": "||aboutamazon.cn^",
- "4": "||aboutamazon.co.uk^",
- "5": "||aboutamazon.com.au^",
- "6": "||aboutamazon.com^",
- "7": "||aboutamazon.de^",
- "8": "||aboutamazon.es^",
- "9": "||aboutamazon.eu^",
- "10": "||aboutamazon.fr^",
- "11": "||aboutamazon.in^",
- "12": "||aboutamazon.it^",
- "13": "||aboutamazon.jp^",
- "14": "||aboutamazon.pl^",
- "15": "||acmvalidations.com^",
- "16": "||acmvalidationsaws.com^",
- "17": "||aesworkshops.com^",
- "18": "||aiv-cdn.net^",
- "19": "||alexa.com^",
- "20": "||alexafund.cn^",
- "21": "||alexafund.com.cn^",
- "22": "||amaaozn.com^",
- "23": "||amazon-adsystem.com^",
- "24": "||amazon-fashions.com^",
- "25": "||amazon-jp-recruiting.com^",
- "26": "||amazon-lantern.com^",
- "27": "||amazon-launchpad.com^",
- "28": "||amazon.ae^",
- "29": "||amazon.ca^",
- "30": "||amazon.cn^",
- "31": "||amazon.co.jp^",
- "32": "||amazon.co.uk^",
- "33": "||amazon.com.au^",
- "34": "||amazon.com.be^",
- "35": "||amazon.com.br^",
- "36": "||amazon.com.mx^",
- "37": "||amazon.com.tr^",
- "38": "||amazon.com^",
- "39": "||amazon.de^",
- "40": "||amazon.es^",
- "41": "||amazon.fr^",
- "42": "||amazon.in^",
- "43": "||amazon.it^",
- "44": "||amazon.jobs^",
- "45": "||amazon.jp^",
- "46": "||amazon.nl^",
- "47": "||amazon.red^",
- "48": "||amazon.se^",
- "49": "||amazon.sg^",
- "50": "||amazon^",
- "51": "||amazonalexavoxcon.com^",
- "52": "||amazonauthorinsights.com^",
- "53": "||amazonaws-china.com^",
- "54": "||amazonaws.cn^",
- "55": "||amazonaws.co.uk^",
- "56": "||amazonaws.com.cn^",
- "57": "||amazonaws.com^$dnstype=~CNAME",
- "58": "||amazonaws.tv^",
- "59": "||amazonbusiness.cn^",
- "60": "||amazonbusiness.com.cn^",
- "61": "||amazonbusiness.org^",
- "62": "||amazonbusinessblog.com^",
- "63": "||amazonchoice.cn^",
- "64": "||amazonchoice.com.cn^",
- "65": "||amazonchoices.cn^",
- "66": "||amazonchoices.com.cn^",
- "67": "||amazondevicesupport.com^",
- "68": "||amazonfctours.com^",
- "69": "||amazonianblog.com^",
- "70": "||amazonimages.com^",
- "71": "||amazoninspire.cn^",
- "72": "||amazoninspire.com.cn^",
- "73": "||amazonlaunchpad.cn^",
- "74": "||amazonlaunchpad.com.cn^",
- "75": "||amazonlaunchpad.com^",
- "76": "||amazonlending.com.cn^",
- "77": "||amazonliterarypartnership.com^",
- "78": "||amazonlumberyard.wang^",
- "79": "||amazonnow.cn^",
- "80": "||amazonnow.com.cn^",
- "81": "||amazonpay.com^",
- "82": "||amazonpay.in^",
- "83": "||amazonprimevideo.cn^",
- "84": "||amazonprimevideo.com.cn^",
- "85": "||amazonprimevideos.com^",
- "86": "||amazonsdi.com^",
- "87": "||amazonses.com^",
- "88": "||amazonstudiosguilds.com^",
- "89": "||amazontrust.com^",
- "90": "||amazonvideo.cc^",
- "91": "||amazonvideo.com^",
- "92": "||amazonvideodirect.com^",
- "93": "||amazonwebservices.com.cn^",
- "94": "||amazonworkdocs.cn^",
- "95": "||amazonworkdocs.com.cn^",
- "96": "||amazonworkdocs.com^",
- "97": "||amplifyapp.com^",
- "98": "||amplifyframework.com^",
- "99": "||amzn.asia^",
- "100": "||amzn.com^",
- "101": "||amzn.to^",
- "102": "||amznl.com^",
- "103": "||asfiovnxocqpcry.com.cn^",
- "104": "||assoc-amazon.cn^",
- "105": "||associates-amazon.com^",
- "106": "||audible.com^",
- "107": "||aws-border.cn^",
- "108": "||aws-icp-domain-manager.cn^",
- "109": "||aws-iot-hackathon.com^",
- "110": "||aws^",
- "111": "||awsapps.cn^",
- "112": "||awsapps.com.cn^",
- "113": "||awsautopilot.com^",
- "114": "||awsautoscaling.com^",
- "115": "||awsbraket.com^",
- "116": "||awscommandlineinterface.com^",
- "117": "||awsdns-*.co.uk^",
- "118": "||awsdns-*.com^",
- "119": "||awsdns-*.net^",
- "120": "||awsdns-*.org^",
- "121": "||awsdns-cn-*.biz^",
- "122": "||awsdns-cn-*.cn^",
- "123": "||awsdns-cn-*.top^",
- "124": "||awsedstart.com^",
- "125": "||awseducate.com^",
- "126": "||awseducate.net^",
- "127": "||awseducate.org^",
- "128": "||awsglobalaccelerator.com^",
- "129": "||awsloft-johannesburg.com^",
- "130": "||awsloft-stockholm.com^",
- "131": "||awssecworkshops.com^",
- "132": "||awsstatic.cn^",
- "133": "||awsstatic.com^",
- "134": "||awsthinkbox.com^",
- "135": "||awstrack.me^",
- "136": "||awstrust.com^",
- "137": "||boxofficemojo.com^",
- "138": "||cdkworkshop.com^",
- "139": "||cloudfront-cn.net^",
- "140": "||cloudfront-test.cn^",
- "141": "||cloudfront.cn^",
- "142": "||cloudfront.net^",
- "143": "||containersonaws.com^",
- "144": "||createspace.com^",
- "145": "||elasticbeanstalk.com^",
- "146": "||gameon-masters.com^",
- "147": "||gdansk-amazon.com^",
- "148": "||images-amazon.com^",
- "149": "||imdb.com^",
- "150": "||imdb.to^",
- "151": "||imdb^",
- "152": "||kindle.cn^",
- "153": "||kindle.co.jp^",
- "154": "||kindle.co.uk^",
- "155": "||kindle.com^",
- "156": "||kindle.de^",
- "157": "||kindle.es^",
- "158": "||kindle.fr^",
- "159": "||kindle.in^",
- "160": "||kindle.it^",
- "161": "||kindle.jp^",
- "162": "||kindle^",
- "163": "||kindleoasis.cn^",
- "164": "||kindleoasis.com.cn^",
- "165": "||kindleoasis.com^",
- "166": "||kindleoasis.info^",
- "167": "||kindleoasis.jp^",
- "168": "||kindleoasis.org^",
- "169": "||kindleoasis.us^",
- "170": "||kindleoasisnews.com^",
- "171": "||kindleproject.com^",
- "172": "||media-amazon.com^",
- "173": "||media-imdb.com^",
- "174": "||nwcdcloud.cn^",
- "175": "||nwcdcloud.com.cn^",
- "176": "||nwcddns.cn^",
- "177": "||nwcdinfosec.cn^",
- "178": "||prime-video.com^",
- "179": "||primeday.cn^",
- "180": "||primeday.com.cn^",
- "181": "||primeday.info^",
- "182": "||primevideo.cc^",
- "183": "||primevideo.com^",
- "184": "||primevideo.info^",
- "185": "||primevideo.org^",
- "186": "||primevideo.tv^",
- "187": "||route53.cn^",
- "188": "||sagemaker.com.cn^",
- "189": "||serving-sys.com^",
- "190": "||siege-amazon.com^",
- "191": "||ss2.us^",
- "192": "||ssl-images-amazon.com^",
- "193": "||thinkboxsoftware.com^",
- "194": "||ueberamazon.de^",
- "195": "||xn--cckwcxetd^",
- "196": "||xn--jlq480n2rg^",
- "197": "||yamaxun.cn^",
- "198": "||yamaxun.com^",
- "199": "||yamaxun^",
- "200": "||z.cn^",
- "201": "||zappos^"
- }
- },
-
- "ServiceID": "shopping",
- "Amazon Streaming": { "ServiceID": "amazon_streaming",
- "Name": "Amazon Streaming",
- "Icon": ""),
- "Rules": {
- "||aiv-delivery.net^",
- "||amazonmusic.com^",
- "||amazonprimevideo.cn^",
- "||amazonprimevideo.com.cn^",
- "||amazonprimevideos.com^",
- "||amazonvideo.cc^",
- "||amazonvideo.com^",
- "||amazonvideodirect.com^",
- "||atv-ext-eu.amazon.com^",
- "||atv-ext-fe.amazon.com^",
- "||atv-ext.amazon.com^",
- "||atv-ps-eu.amazon.co.uk^",
- "||atv-ps-eu.amazon.com^",
- "||atv-ps-fe.amazon.co.jp^",
- "||atv-ps-fe.amazon.com^",
- "||atv-ps.amazon.com^",
- "||av-eu.amazon.com^",
- "||av-na.amazon.com^",
- "||music.a2z.com^",
- "||music.amazon.co.uk^",
- "||music.amazon.com^",
- "||music.amazon.in^",
- "||prime-video.com^",
- "||primevideo.cc^",
- "||primevideo.com^",
- "||primevideo.info^",
- "||primevideo.org^",
- "||primevideo.tv^",
- "||video.a2z.com^",
- },
- "Amino": { "ServiceID": "amino",
- "Name": "Amino",
- "Icon": ""),
- "Rules": {
- "||aminoapps.com^",
- },
- "Apple Streaming": { "ServiceID": "apple_streaming",
- "Name": "Apple Streaming",
- "Icon": ""),
- "Rules": {
- "||applemusic.apple^",
- "||hls-svod-aoc-ve.itunes.g.aaplimg.com^",
- "||itun.es^",
- "||itunes.apple.com^",
- "||itunes.ca^",
- "||itunes.co.th^",
- "||itunes.co^",
- "||itunes.com^",
- "||itunes.es^",
- "||itunes.g.aaplimg.com^",
- "||itunes.hk^",
- "||itunes.mx^",
- "||itunes.org^",
- "||itunes.us^",
- "||music.apple.com^",
- "||tv.apple.com^",
- "||tv.g.apple.com^",
- "||tv.v.aaplimg.com^",
- },
- "Battle.net": { "ServiceID": "battle_net",
- "Name": "Battle.net",
- "Icon": ""),
- "Rules": {
- "||battle.net^",
- "||battlenet.com.cn^",
- "||bnet.163.com^",
- "||bnet.cn^",
- },
- "Betano": { "ServiceID": "betano",
- "Name": "Betano",
- "Icon": ""),
- "Rules": {
- "||betano.bg^",
- "||betano.ca^",
- "||betano.com^",
- "||betano.cz^",
- "||betano.de^",
- "||betano.ng^",
- "||betano.pt^",
- },
- "ServiceID": "gambling",
- "Betfair": { "ServiceID": "betfair",
- "Name": "Betfair",
- "Icon": ""),
- "Rules": {
- "||betfair.com.au^",
- "||betfair.com^",
- "||betfair.es^",
- "||betfair.it^",
- "||betfair.ro^",
- "||betfair.se^",
- },
- "ServiceID": "gambling",
- "Betway": { "ServiceID": "betway",
- "Name": "Betway",
- "Icon": ""),
- "Rules": {
- "||betway.be^",
- "||betway.bet.ar^",
- "||betway.co.za^",
- "||betway.com.gh^",
- "||betway.com.ng^",
- "||betway.com^",
- "||betway.de^",
- "||betway.es^",
- "||betway.fr^",
- "||betway.it^",
- "||betway.mx^",
- "||betway.pl^",
- "||betway.se^",
- "||betwaygroup.com^",
- "||betwaysatta.com^",
- "||vietnambetway88.com^",
- },
- "ServiceID": "gambling",
- "Bigo Live": { "ServiceID": "bigo_live",
- "Name": "Bigo Live",
- "Icon": ""),
- "Rules": {
- "||bigo.sg^",
- "||bigo.tv^",
- "||bigolive.tv^",
- "||bigovideo.tv^",
- },
- "Bilibili": { "ServiceID": "bilibili",
- "Name": "Bilibili",
- "Icon": ""),
- "Rules": {
- "|upos-hz-mirrorakam.akamaized.net^",
- "||acg.tv^",
- "||acgvideo.com^",
- "||animetamashi.cn^",
- "||animetamashi.com^",
- "||anitama.cn^",
- "||anitama.net^",
- "||b23.tv^",
- "||bigfun.cn^",
- "||bili22.cn^",
- "||bili2233.cn^",
- "||bili23.cn^",
- "||bili33.cn^",
- "||biliapi.com^",
- "||biliapi.net^",
- "||bilibili.cc^",
- "||bilibili.cn^",
- "||bilibili.com^",
- "||bilibili.net^",
- "||bilibili.tv^",
- "||bilibiligame.cn^",
- "||bilibiligame.co^",
- "||bilibiligame.net^",
- "||bilibilipay.cn^",
- "||bilibilipay.com^",
- "||bilicdn1.com^",
- "||bilicdn2.com^",
- "||bilicdn3.com^",
- "||bilicdn4.com^",
- "||bilicdn5.com^",
- "||biligame.co^",
- "||biligame.com^",
- "||biligame.net^",
- "||biligo.com^",
- "||biliimg.com^",
- "||biliintl.com^",
- "||bilivideo.cn^",
- "||bilivideo.com^",
- "||bilivideo.net^",
- "||dreamcast.hk^",
- "||hdslb.com^",
- "||hdslb.org^",
- "||im9.com^",
- "||maoercdn.com^",
- "||mincdn.com^",
- "||yo9.com^",
- },
- "Blaze": { "ServiceID": "blaze",
- "Name": "Blaze",
- "Icon": ""),
- "Rules": {
- "||blaze.bet^",
- "||blaze.com.br^",
- "||blaze.com^",
- "||blazecareers.com^",
- },
- "ServiceID": "gambling",
- "Blizzard Entertainment": { "ServiceID": "blizzard_entertainment",
- "Name": "Blizzard Entertainment",
- "Icon": ""),
- "Rules": {
- "||battle.net^",
- "||battlenet.com.cn^",
- "||blizzard.cn^",
- "||blizzard.com^",
- "||blizzardgames.cn^",
- "||blz-contentstack.com^",
- "||blzstatic.cn^",
- "||bnet.163.com^",
- "||bnet.cn^",
- },
- "Bluesky": { "ServiceID": "bluesky",
- "Name": "Bluesky",
- "Icon": ""),
- "Rules": {
- "||bsky.app^",
- "||bsky.social^",
- },
- },
- "Box": { "ServiceID": "box",
- "Name": "Box",
- "Icon": ""),
- "Rules": {
- "||box.com^",
- "||box.net^",
- "||boxcdn.net^",
- "||boxcloud.com^",
- },
- "ServiceID": "hosting",
- "Canais Globo": { "ServiceID": "canais_globo",
- "Name": "Canais Globo",
- "Icon": ""),
- "Rules": {
- "||canaisglobo.globo.com^",
- "||globosat.globo.com^",
- "||gsatmulti.globo.com^",
- },
- "ChatGPT": { "ServiceID": "chatgpt",
- "Name": "ChatGPT",
- "Icon": ""),
- "Rules": {
- "||chatgpt.com^",
- "||oaistatic.com^",
- "||oaiusercontent.com^",
- "||openai.com^",
- },
- "ServiceID": "ai",
- "Claro": { "ServiceID": "claro",
- "Name": "Claro",
- "Icon": ""),
- "Rules": {
- "||claro.com.ar^",
- "||claro.com.br^",
- "||claro.com.co^",
- "||claro.com.do^",
- "||claro.com.ec^",
- "||claro.com.gt^",
- "||claro.com.hn^",
- "||claro.com.ni^",
- "||claro.com.pa^",
- "||claro.com.pe^",
- "||claro.com.py^",
- "||claro.com.sv^",
- "||claro.com.uy^",
- "||claro.com^",
- "||claro.cr^",
- "||claro.net.br^",
- "||claro.net.co^",
- "||clarochile.cl^",
- "||claromusica.com^",
- "||claropr.com^",
- "||clarovideo.com^",
- "||usclaro.com^",
- },
- "Claude": { "ServiceID": "claude",
- "Name": "Claude",
- "Icon": ""),
- "Rules": {
- "||anthropic.com^",
- "||claude.ai^",
- },
- "ServiceID": "ai",
- "Cloudflare": { "ServiceID": "cloudflare",
- "Name": "Cloudflare",
- "Icon": ""),
- "Rules": {
- "||argotunnel.com^",
- "||cf-ipfs.com^",
- "||cloudflare-dns.com^",
- "||cloudflare-ipfs.com^",
- "||cloudflare-quic.com^",
- "||cloudflare.com^",
- "||cloudflare.net^",
- "||cloudflare.tv^",
- "||cloudflareaccess.com^",
- "||cloudflareapps.com^",
- "||cloudflarebolt.com^",
- "||cloudflareclient.com^",
- "||cloudflareinsights.com^",
- "||cloudflareok.com^",
- "||cloudflarepreview.com^",
- "||cloudflareresolve.com^",
- "||cloudflaressl.com^",
- "||cloudflarestatus.com^",
- "||cloudflarestorage.com^",
- "||cloudflarestream.com^",
- "||cloudflaretest.com^",
- "||cloudflarewarp.com^",
- "||every1dns.net^",
- "||one.one.one^",
- "||pacloudflare.com^",
- "||pages.dev^",
- "||trycloudflare.com^",
- "||videodelivery.net^",
- "||warp.plus^",
- "||workers.dev^",
- },
- "ServiceID": "cdn",
- "Clubhouse": { "ServiceID": "clubhouse",
- "Name": "Clubhouse",
- "Icon": ""),
- "Rules": {
- "||clubhouse.com^",
- "||clubhouseapi.com^",
- },
- "CoolApk": { "ServiceID": "coolapk",
- "Name": "CoolApk",
- "Icon": ""),
- "Rules": {
- "||coolapk.com^",
- "||coolapkmarket.com^",
- "||coolapkmarket.net^",
- },
- "ServiceID": "shopping",
- "Crunchyroll": { "ServiceID": "crunchyroll",
- "Name": "Crunchyroll",
- "Icon": ""),
- "Rules": {
- "||crunchyroll.com^",
- "||gccrunchyroll.com^",
- },
- "Dailymotion": { "ServiceID": "dailymotion",
- "Name": "Dailymotion",
- "Icon": ""),
- "Rules": {
- "||dailymotion.com^",
- "||dm-event.net^",
- "||dmcdn.net^",
- },
- "DeepSeek": { "ServiceID": "deepseek",
- "Name": "DeepSeek",
- "Icon": ""),
- "Rules": {
- "||deepseek.com^",
- },
- "ServiceID": "ai",
- "Deezer": { "ServiceID": "deezer",
- "Name": "Deezer",
- "Icon": ""),
- "Rules": {
- "||deezer.com^",
- "||dzcdn.net^",
- },
- "DirecTV Go": { "ServiceID": "directvgo",
- "Name": "DirecTV Go",
- "Icon": ""),
- "Rules": {
- "||directvgo.com^",
- },
- "Discord": { "ServiceID": "discord",
- "Name": "Discord",
- "Icon": ""),
- "Rules": {
- "|hammerandchisel.ssl.zendesk.com^",
- "||airhorn.solutions^",
- "||airhornbot.com^",
- "||bigbeans.solutions^",
- "||dis.gd^",
- "||discord-activities.com^",
- "||discord.co^",
- "||discord.com^",
- "||discord.design^",
- "||discord.dev^",
- "||discord.gg^",
- "||discord.gift^",
- "||discord.gifts^",
- "||discord.media^",
- "||discord.new^",
- "||discord.store^",
- "||discord.tools^",
- "||discordactivities.com^",
- "||discordapp.com^",
- "||discordapp.io^",
- "||discordapp.net^",
- "||discordcdn.com^",
- "||discordmerch.com^",
- "||discordpartygames.com^",
- "||discordsays.com^",
- "||discordstatus.com^",
- "||watchanimeattheoffice.com^",
- },
- "Discovery+": { "ServiceID": "discoveryplus",
- "Name": "Discovery+",
- "Icon": ""),
- "Rules": {
- "||disco-api.com^",
- "||discoveryplus.com^",
- },
- "Disney+": { "ServiceID": "disneyplus",
- "Name": "Disney+",
- "Icon": ""),
- "Rules": {
- "||disney-plus.net^",
- "||disney.playback.edge.bamgrid.com^",
- "||disneynow.com^",
- "||disneyplus.com^",
- "||hotstar.com^",
- "||media.dssott.com^",
- "||star.playback.edge.bamgrid.com^",
- "||starplus.com^",
- },
- "Douban": { "ServiceID": "douban",
- "Name": "Douban",
- "Icon": ""),
- "Rules": {
- "||douban.com^",
- "||douban.fm^",
- "||doubanio.com^",
- },
- "Dropbox": { "ServiceID": "dropbox",
- "Name": "Dropbox",
- "Icon": ""),
- "Rules": {
- "||addtodropbox.com^",
- "||app.hellosign.com^",
- "||dash.ai^",
- "||db.tt^",
- "||docsend.com^",
- "||dropbox-dns.com^",
- "||dropbox.com^",
- "||dropbox.tech^",
- "||dropbox.zendesk.com^",
- "||dropboxapi.com^",
- "||dropboxbusiness.com^",
- "||dropboxcaptcha.com^",
- "||dropboxforum.com^",
- "||dropboxforums.com^",
- "||dropboxinsiders.com^",
- "||dropboxlegal.com^",
- "||dropboxmail.com^",
- "||dropboxpartners.com^",
- "||dropboxstatic.com^",
- "||dropboxteam.com^",
- "||dropboxusercontent.com^",
- "||getdropbox.com^",
- },
- "ServiceID": "hosting",
- "eBay": { "ServiceID": "ebay",
- "Name": "eBay",
- "Icon": ""),
- "Rules": {
- "|ebay-*.s3-us-west-1.amazonaws.com^",
- "||21centuryaccess.com^",
- "||4ebaytraders.com^",
- "||adcommerce.cn^",
- "||adcommerce.tv^",
- "||appforebay.cn^",
- "||appsonebay.net^",
- "||asebay.com^",
- "||baazee.com^",
- "||bidbay.com^",
- "||bidorbuyindia.com^",
- "||billpoint.com^",
- "||billpoint.info^",
- "||billpoint.tv^",
- "||billpoint.us^",
- "||billpointnewzealand.com^",
- "||blogebay.com^",
- "||bookclubcorner.com^",
- "||builtfromebay.com^",
- "||buyitnow.com^",
- "||buyitnow.net^",
- "||buyitnow.org^",
- "||buyitnow.tv^",
- "||buyitnowshop.net^",
- "||cafr.ca^",
- "||carebay.com^",
- "||cargigileads.com^",
- "||cebay.com^",
- "||collective99.com^",
- "||commerceos.com^",
- "||connectcommerce.cn^",
- "||connectcommerce.com.cn^",
- "||connectcommerce.hk^",
- "||connectcommerce.info^",
- "||connectcommerce.tv^",
- "||connectedcommerce.cn^",
- "||connectedcommerce.com^",
- "||connectedcommerce.tv^",
- "||crececonebay.com^",
- "||creditcardsbay.com^",
- "||cyber-bay.cn^",
- "||cyber-bay.com.cn^",
- "||cyber-bay.info^",
- "||cyber-bay.org^",
- "||dba.dk^",
- "||dealbay.com^",
- "||dealtime.com^",
- "||didce.com^",
- "||douya.org^",
- "||dreamtoplay.com^",
- "||e-bay.com^",
- "||e-bay.it^",
- "||e-bay.net^",
- "||eachpay.com^",
- "||eachpay.net^",
- "||ebahy.com^",
- "||ebay-authenticate.net^",
- "||ebay-confirm.com^",
- "||ebay-course.com^",
- "||ebay-cz.com^",
- "||ebay-delivery.com^",
- "||ebay-discoveries.com^",
- "||ebay-fashion.com^",
- "||ebay-inc.com^",
- "||ebay-inc.net^",
- "||ebay-inc.org^",
- "||ebay-online.com^",
- "||ebay-sales.com^",
- "||ebay-stories.com^",
- "||ebay-us.com^",
- "||ebay-vacation.com^",
- "||ebay.at^",
- "||ebay.be^",
- "||ebay.ca^",
- "||ebay.ch^",
- "||ebay.cn^",
- "||ebay.co.nz^",
- "||ebay.co.uk^",
- "||ebay.co.ve^",
- "||ebay.co.za^",
- "||ebay.com.ar^",
- "||ebay.com.au^",
- "||ebay.com.cn^",
- "||ebay.com.ec^",
- "||ebay.com.hk^",
- "||ebay.com.mt^",
- "||ebay.com.my^",
- "||ebay.com.ph^",
- "||ebay.com.sg^",
- "||ebay.com^",
- "||ebay.de^",
- "||ebay.es^",
- "||ebay.fr^",
- "||ebay.ie^",
- "||ebay.in^",
- "||ebay.it^",
- "||ebay.jp^",
- "||ebay.lt^",
- "||ebay.mn^",
- "||ebay.net.cn^",
- "||ebay.nl^",
- "||ebay.org.cn^",
- "||ebay.org^",
- "||ebay.ph^",
- "||ebay.pk^",
- "||ebay.pl^",
- "||ebay.sg^",
- "||ebay.us^",
- "||ebay.vn^",
- "||ebay.yn.cn^",
- "||ebay.zj.cn^",
- "||ebay25.com^",
- "||ebay68.com^",
- "||ebaya.com^",
- "||ebayads.com^",
- "||ebayads.net^",
- "||ebayadvertising.cn^",
- "||ebayadvertising.com^",
- "||ebayanunsios.net^",
- "||ebayauction.com^",
- "||ebayaustralia.com^",
- "||ebayauthenticate.com.cn^",
- "||ebaybags.com^",
- "||ebaybank.com^",
- "||ebaybenefits.com^",
- "||ebayboutique.com^",
- "||ebayca.com^",
- "||ebayca.org^",
- "||ebaycafe.com^",
- "||ebaycar.com^",
- "||ebaycareers.com^",
- "||ebaycbt.co.kr^",
- "||ebaycdn.net^",
- "||ebaychina.net^",
- "||ebayclassifieds.cn^",
- "||ebayclassifieds.com.cn^",
- "||ebayclassifieds.com^",
- "||ebayclassifieds.info^",
- "||ebayclassifieds.org^",
- "||ebayclassifieds.tv^",
- "||ebayclassifiedsgroup.com^",
- "||ebayclassifiedsgroup.com^",
- "||ebayclassifiedsgroup.info^",
- "||ebayclassifiedsgroup.org^",
- "||ebayclassifies.com^",
- "||ebayclub.com^",
- "||ebaycoins.com^",
- "||ebaycom.com^",
- "||ebaycommercenetwork.com^",
- "||ebaycourse.com^",
- "||ebayd.com^",
- "||ebayde.com^",
- "||ebaydesc.cn^",
- "||ebaydesc.com.cn^",
- "||ebaydlassifieds.com^",
- "||ebaydns.cn^",
- "||ebaydts.com^",
- "||ebayedu.com^",
- "||ebayeletro.com^",
- "||ebayenterprise.cn^",
- "||ebayenterprise.com.cn^",
- "||ebayenterprise.com^",
- "||ebayenterprise.info^",
- "||ebayenterprise.net^",
- "||ebayenterprise.tv^",
- "||ebayetc.com^",
- "||ebayexpress.sg^",
- "||ebayfashion.com^",
- "||ebayfashion.net^",
- "||ebayforcharity.org^",
- "||ebayforeclosure.org^",
- "||ebayfrance.com^",
- "||ebayglobalshipping.com^",
- "||ebaygroup.com^",
- "||ebayhabit.com^",
- "||ebayheels.com^",
- "||ebayhots.com^",
- "||ebayimg.com^",
- "||ebayinc.com^",
- "||ebayinc.net^",
- "||ebayinc.org^",
- "||ebayincconnectedcommerce.net^",
- "||ebayinkblog.com^",
- "||ebayinternetsalestax.com^",
- "||ebayit.com^",
- "||ebayjewelry.com^",
- "||ebayjob.com^",
- "||ebayla.org^",
- "||ebaylisting.com^",
- "||ebaylocal.net^",
- "||ebaylocationsdevacances.com^",
- "||ebaymag.com^",
- "||ebaymainstreet.com^",
- "||ebaymall.com^",
- "||ebaymarketplace.net^",
- "||ebaymotors.ca^",
- "||ebaymotors.cn^",
- "||ebaymotors.com.cn^",
- "||ebaymotors.com^",
- "||ebaymotors.org^",
- "||ebaymotorsblog.com^",
- "||ebaynow.com^",
- "||ebaynyc.com^",
- "||ebayon.com^",
- "||ebayon.net^",
- "||ebayoncampus.com^",
- "||ebayopen.com^",
- "||ebayopensource.com^",
- "||ebayopensource.net^",
- "||ebaypakistan.net^",
- "||ebaypark.com^",
- "||ebayparts.com^",
- "||ebaypedia.cn^",
- "||ebaypedia.com.cn^",
- "||ebayprivacycenter.com^",
- "||ebayqq.com^",
- "||ebayradio.com^",
- "||ebayrtm.com^",
- "||ebayseller.com^",
- "||ebayshoesstore.com^",
- "||ebayshop.com^",
- "||ebayshop111.com^",
- "||ebayshopping.cn^",
- "||ebayshopping.com.cn^",
- "||ebayshopping.org^",
- "||ebaysocial.com^",
- "||ebaysocial.ru^",
- "||ebaysoho.com^",
- "||ebaysohos.com^",
- "||ebaystatic.cn^",
- "||ebaystatic.com^",
- "||ebaystore.com^",
- "||ebaystore77.com^",
- "||ebaystores.cn^",
- "||ebaystyle.com^",
- "||ebaysweden.com^",
- "||ebayt.com^",
- "||ebaytechblog.com^",
- "||ebaytopratedseller.net^",
- "||ebaytrading.com^",
- "||ebaytradingassistant.com^",
- "||ebaytv.org^",
- "||ebayuae.net^",
- "||ebayvakantiehuizen.com^",
- "||ebayvalet.com^",
- "||ebayvietnam.net^",
- "||ebayworlds.com^",
- "||ebayy.com^",
- "||edisebay.com^",
- "||eebay.com^",
- "||epinions.com^",
- "||eu-consumer-empowerment.com^",
- "||expertmaker.com^",
- "||fairmarket.com^",
- "||fragrancebay.com^",
- "||francemail.com^",
- "||half.com.cn^",
- "||half.com^",
- "||half.tv^",
- "||halfcanada.com^",
- "||halfjapan.com^",
- "||handbagsoutletebay.com^",
- "||iebay.com^",
- "||irribay.com^",
- "||itsbetterwhenyouwinit.com^",
- "||liketwice.com^",
- "||liveauction.com^",
- "||milofetch.com^",
- "||musicbay.net^",
- "||myconstructionworld.net^",
- "||myebay.com^",
- "||nebay.net^",
- "||paisapay.cc^",
- "||paisapay.info^",
- "||paisapay.tv^",
- "||premobay.com^",
- "||privatemarketplaces.net^",
- "||privatemarketplaces.us^",
- "||prostores.cn^",
- "||prostores.com.cn^",
- "||prostores.com^",
- "||rethink.net^",
- "||shopibay.net^",
- "||shoping.com^",
- "||sourcingforebay.com.cn^",
- "||sourcingforebay.net^",
- "||sourcingforebay.tv^",
- "||speybay.com^",
- "||storesense.com^",
- "||svpply.com^",
- "||telebay.com^",
- "||telesell.com^",
- "||texttobuy.org^",
- "||theebayshop.com^",
- "||theopportunityproject.org^",
- "||towerauction.com^",
- "||vendu.com^",
- "||watch-ebay.org^",
- "||weareebay.com^",
- "||wwwdecide.com^",
- "||wwwebay.com^",
- "||wwwebay.net^",
- "||wwwwebay.com^",
- "||xindelu.com^",
- "||xn--3et96bj49ahpq.com^",
- "||xn--4vq475g.com^",
- "||xn--4vq477m.com^",
- "||xn--7hv594h.com^",
- "||xn--7hvy28f.cn^",
- "||xn--hb4aw0g.com^",
- "||xn--q41am8x.com^",
- "||xn--qoq462m.com^",
- "||xn--tkry91n.com^",
- "||xn--ubt498knmf.com^",
- "||xn--xsq421m.com^",
- "||xn--xsq605n.com^",
- "||xn--xsq959n.com^",
- "||xn--yf1at58a.com^",
- "||xxbay.com^",
- "||yibei.org^",
- },
- "ServiceID": "shopping",
- "Electronic Arts": { "ServiceID": "electronic_arts",
- "Name": "Electronic Arts",
- "Icon": ""),
- "Rules": {
- "||ea.com^",
- "||eamobile.com^",
- "||easports.com^",
- "||nearpolar.com^",
- "||swtor.com^",
- "||tnt-ea.com^",
- },
- "Epic Games": { "ServiceID": "epic_games",
- "Name": "Epic Games",
- "Icon": ""),
- "Rules": {
- "|cdn*-epicgames-*.file.myqcloud.com^",
- "|epicgames-download*-*.file.myqcloud.com^",
- "|epicgames-download*.akamaized.net^",
- "||eac-cdn.com^",
- "||easy.ac^",
- "||easyanticheat.net^",
- "||epicgames.com^",
- },
- "ESPN": { "ServiceID": "espn",
- "Name": "ESPN",
- "Icon": ""),
- "Rules": {
- "||es.pn^",
- "||espn.cl^",
- "||espn.co.uk^",
- "||espn.com.ar^",
- "||espn.com.au^",
- "||espn.com.co^",
- "||espn.com.ec^",
- "||espn.com.mx^",
- "||espn.com.pa^",
- "||espn.com.pe^",
- "||espn.com.uy^",
- "||espn.com.ve^",
- "||espn.com^",
- "||espn.in",
- "||espn.net^",
- "||espncdn.com^",
- "||espncricinfo.com^",
- },
- "Facebook": { "ServiceID": "facebook",
- "Name": "Facebook",
- "Icon": ""),
- "Rules": {
- "|fbcdn-a.akamaihd.net^",
- "||aboutfacebook.com^",
- "||accessfacebookfromschool.com^",
- "||accountkit.com^",
- "||accountkit.com^",
- "||acebooik.com^",
- "||acebook.com^",
- "||advancediddetection.com^",
- "||askfacebook.net^",
- "||askfacebook.org^",
- "||atdmt2.com^",
- "||atlasdmt.com^",
- "||atlasonepoint.com^",
- "||atscaleconference.com^",
- "||botorch.org^",
- "||buck.build^",
- "||buckbuild.com^",
- "||buyingfacebooklikes.com^",
- "||careersatfb.com^",
- "||celebgramme.com^",
- "||china-facebook.com^",
- "||click-url.com^",
- "||como-hackearfacebook.com^",
- "||componentkit.org^",
- "||crowdtangle.com^",
- "||dacebook.com^",
- "||dlfacebook.com^",
- "||dotfacebook.com^",
- "||dotfacebook.net^",
- "||draftjs.org^",
- "||expresswifi.com^",
- "||f8.com^",
- "||faacebok.com^",
- "||faacebook.com^",
- "||faasbook.com^",
- "||facbebook.com^",
- "||facbeok.com^",
- "||facboo.com^",
- "||facbook.com^",
- "||facbool.com^",
- "||facboox.com^",
- "||faccebook.com^",
- "||faccebookk.com^",
- "||facdbook.com^",
- "||facdebook.com^",
- "||face-book.com^",
- "||faceabook.com^",
- "||facebboc.com^",
- "||facebbook.com^",
- "||facebboook.com^",
- "||facebcook.com^",
- "||facebdok.com^",
- "||facebgook.com^",
- "||facebhook.com^",
- "||facebkkk.com^",
- "||facebo-ok.com^",
- "||faceboak.com^",
- "||facebock.com^",
- "||facebocke.com^",
- "||facebof.com^",
- "||faceboik.com^",
- "||facebok.com^",
- "||facebokbook.com^",
- "||facebokc.com^",
- "||facebokk.com^",
- "||facebokok.com^",
- "||faceboks.com^",
- "||facebol.com^",
- "||facebolk.com^",
- "||facebomok.com^",
- "||faceboo.com^",
- "||facebooa.com^",
- "||faceboob.com^",
- "||faceboobok.com^",
- "||facebooc.com^",
- "||faceboock.com^",
- "||facebood.com^",
- "||facebooe.com^",
- "||faceboof.com^",
- "||facebooi.com^",
- "||facebooik.com^",
- "||facebooik.org^",
- "||facebooj.com^",
- "||facebook-corp.com^",
- "||facebook-covid-19.com^",
- "||facebook-ebook.com^",
- "||facebook-forum.com^",
- "||facebook-hardware.com^",
- "||facebook-inc.com^",
- "||facebook-login.com^",
- "||facebook-newsroom.com^",
- "||facebook-newsroom.org^",
- "||facebook-pmdcenter.com^",
- "||facebook-pmdcenter.net^",
- "||facebook-pmdcenter.org^",
- "||facebook-privacy.com^",
- "||facebook-program.com^",
- "||facebook-studio.com^",
- "||facebook-support.org^",
- "||facebook-texas-holdem.com^",
- "||facebook-texas-holdem.net^",
- "||facebook.br^",
- "||facebook.ca^",
- "||facebook.cc^",
- "||facebook.com^",
- "||facebook.design^",
- "||facebook.hu^",
- "||facebook.in^",
- "||facebook.net^",
- "||facebook.nl^",
- "||facebook.org^",
- "||facebook.se^",
- "||facebook.shop^",
- "||facebook.tv^",
- "||facebook.us^",
- "||facebook.wang^",
- "||facebook123.org^",
- "||facebook30.com^",
- "||facebook30.net^",
- "||facebook30.org^",
- "||facebook4business.com^",
- "||facebookads.com^",
- "||facebookadvertisingsecrets.com^",
- "||facebookappcenter.info^",
- "||facebookappcenter.net^",
- "||facebookappcenter.org^",
- "||facebookatschool.com^",
- "||facebookawards.com^",
- "||facebookblueprint.net^",
- "||facebookbrand.com^",
- "||facebookbrand.net^",
- "||facebookcanadianelectionintegrityinitiative.com^",
- "||facebookcareer.com^",
- "||facebookcheats.com^",
- "||facebookck.com^",
- "||facebookclub.com^",
- "||facebookcom.com^",
- "||facebookconnect.com^",
- "||facebookconsultant.org^",
- "||facebookcoronavirus.com^",
- "||facebookcovers.org^",
- "||facebookcredits.info^",
- "||facebookdating.net^",
- "||facebookdevelopergarage.com^",
- "||facebookdusexe.org^",
- "||facebookemail.com^",
- "||facebookenespanol.com^",
- "||facebookexchange.com^",
- "||facebookexchange.net^",
- "||facebookfacebook.com^",
- "||facebookflow.com^",
- "||facebookgames.com^",
- "||facebookgraphsearch.com^",
- "||facebookgraphsearch.info^",
- "||facebookgroups.com^",
- "||facebookhome.cc^",
- "||facebookhome.com^",
- "||facebookhome.info^",
- "||facebookhub.com^",
- "||facebooki.com^",
- "||facebookinc.com^",
- "||facebookland.com^",
- "||facebooklikeexchange.com^",
- "||facebooklive.com^",
- "||facebooklivestaging.net^",
- "||facebooklivestaging.org^",
- "||facebooklogin.com^",
- "||facebooklogin.info^",
- "||facebookloginhelp.net^",
- "||facebooklogs.com^",
- "||facebookmail.com^",
- "||facebookmail.tv^",
- "||facebookmanager.info^",
- "||facebookmarketing.info^",
- "||facebookmarketingpartner.com^",
- "||facebookmarketingpartners.com^",
- "||facebookmobile.com^",
- "||facebookmsn.com^",
- "||facebooknews.com^",
- "||facebooknfl.com^",
- "||facebooknude.com^",
- "||facebookofsex.com^",
- "||facebookook.com^",
- "||facebookpaper.com^",
- "||facebookpay.com^",
- "||facebookphonenumber.net^",
- "||facebookphoto.com^",
- "||facebookphotos.com^",
- "||facebookpmdcenter.com^",
- "||facebookpoke.net^",
- "||facebookpoke.org^",
- "||facebookpoker.info^",
- "||facebookpokerchips.info^",
- "||facebookporn.net^",
- "||facebookporn.org^",
- "||facebookporno.net^",
- "||facebookportal.com^",
- "||facebooks.com^",
- "||facebooksafety.com^",
- "||facebooksecurity.net^",
- "||facebookshop.com^",
- "||facebooksignup.net^",
- "||facebooksite.net^",
- "||facebookstories.com^",
- "||facebookstudios.net^",
- "||facebookstudios.org^",
- "||facebooksupplier.com^",
- "||facebooksuppliers.com^",
- "||facebookswagemea.com^",
- "||facebookswagstore.com^",
- "||facebooksz.com^",
- "||facebookthreads.net^",
- "||facebooktv.net^",
- "||facebooktv.org^",
- "||facebookvacation.com^",
- "||facebookw.com^",
- "||facebookwork.com^",
- "||facebookworld.com^",
- "||facebool.com^",
- "||facebool.info^",
- "||facebooll.com^",
- "||faceboom.com^",
- "||faceboon.com^",
- "||faceboonk.com^",
- "||faceboooik.com^",
- "||faceboook.com^",
- "||faceboop.com^",
- "||faceboot.com^",
- "||faceboox.com^",
- "||facebopk.com^",
- "||facebpook.com^",
- "||facebuk.com^",
- "||facebuok.com^",
- "||facebvook.com^",
- "||facebyook.com^",
- "||facebzook.com^",
- "||facecbgook.com^",
- "||facecbook.com^",
- "||facecbook.org^",
- "||facecook.com^",
- "||facecook.org^",
- "||facedbook.com^",
- "||faceebok.com^",
- "||faceebook.com^",
- "||faceebot.com^",
- "||facegbok.com^",
- "||facegbook.com^",
- "||faceobk.com^",
- "||faceobok.com^",
- "||faceobook.com^",
- "||faceook.com^",
- "||facerbooik.com^",
- "||facerbook.com^",
- "||facesbooc.com^",
- "||facesounds.com^",
- "||facetook.com^",
- "||facevbook.com^",
- "||facewbook.co^",
- "||facewook.com^",
- "||facfacebook.com^",
- "||facfebook.com^",
- "||faciometrics.com^",
- "||fackebook.com^",
- "||facnbook.com^",
- "||facrbook.com^",
- "||facvebook.com^",
- "||facwebook.com^",
- "||facxebook.com^",
- "||fadebook.com^",
- "||faebok.com^",
- "||faebook.com^",
- "||faebookc.com^",
- "||faeboook.com^",
- "||faecebok.com^",
- "||faesebook.com^",
- "||fafacebook.com^",
- "||faicbooc.com^",
- "||fasebokk.com^",
- "||fasebook.com^",
- "||faseboox.com^",
- "||fasttext.cc^",
- "||favebook.com^",
- "||faycbok.com^",
- "||fb.careers^",
- "||fb.com^",
- "||fb.gg^",
- "||fb.me^",
- "||fb.watch^",
- "||fbacebook.com^",
- "||fbbmarket.com^",
- "||fbboostyourbusiness.com^",
- "||fbcdn.com^",
- "||fbcdn.net^",
- "||fbf8.com^",
- "||fbfeedback.com^",
- "||fbhome.com^",
- "||fbidb.io^",
- "||fbinc.com^",
- "||fbinfer.com^",
- "||fbinnovation.com^",
- "||fblitho.com^",
- "||fbmarketing.com^",
- "||fbmessenger.com^",
- "||fbredex.com^",
- "||fbreg.com^",
- "||fbrell.com^",
- "||fbrpms.com^",
- "||fbsbx.com^",
- "||fbsbx.net^",
- "||fbsupport-covid.net^",
- "||fbthirdpartypixel.com^",
- "||fbthirdpartypixel.net^",
- "||fbthirdpartypixel.org^",
- "||fburl.com^",
- "||fbwat.ch^",
- "||fbworkmail.com^",
- "||fcacebook.com^",
- "||fcaebook.com^",
- "||fcebook.com^",
- "||fcebookk.com^",
- "||fcfacebook.com^",
- "||fdacebook.info^",
- "||feacboo.com^",
- "||feacbook.com^",
- "||feacbooke.com^",
- "||feacebook.com^",
- "||fecbbok.com^",
- "||fecbooc.com^",
- "||fecbook.com^",
- "||feceboock.com^",
- "||fecebook.net^",
- "||feceboox.com^",
- "||fececbook.com^",
- "||feook.com^",
- "||ferabook.com^",
- "||fescebook.com^",
- "||fesebook.com^",
- "||ffacebook.com^",
- "||fgacebook.com^",
- "||ficeboock.com^",
- "||flow.dev^",
- "||flow.org^",
- "||flowtype.org^",
- "||fmcebook.com^",
- "||fnacebook.com^",
- "||fosebook.com^",
- "||fpacebook.com^",
- "||fqcebook.com^",
- "||fracebook.com^",
- "||freeb.com^",
- "||freebasics.com^",
- "||freebasics.net^",
- "||freebs.com^",
- "||freefacebook.com^",
- "||freefacebook.net^",
- "||freefacebookads.net^",
- "||freefblikes.com^",
- "||freindfeed.com^",
- "||frescolib.org^",
- "||friendbook.info^",
- "||friendfed.com^",
- "||friendfeed-api.com^",
- "||friendfeed-media.com^",
- "||friendfeed.com^",
- "||friendfeedmedia.com^",
- "||fsacebok.com^",
- "||fscebook.com^",
- "||fundraisingwithfacebook.com^",
- "||funnyfacebook.org^",
- "||futureofbusinesssurvey.org^",
- "||gacebook.com^",
- "||gameroom.com^",
- "||gfacecbook.com^",
- "||groups.com^",
- "||hackerfacebook.com^",
- "||hackfacebook.com^",
- "||hackfacebookid.com^",
- "||hacklang.org^",
- "||hhvm.com^",
- "||hifacebook.info^",
- "||howtohackfacebook-account.com^",
- "||hsfacebook.com^",
- "||httpfacebook.com^",
- "||httpsfacebook.com^",
- "||httpwwwfacebook.com^",
- "||i.org^",
- "||internet.org^",
- "||klik.me^",
- "||liverail.com^",
- "||liverail.tv^",
- "||login-account.net^",
- "||m.me^",
- "||makeitopen.com^",
- "||markzuckerberg.com^",
- "||mcrouter.net^",
- "||mcrouter.org^",
- "||messenger.com^",
- "||messengerdevelopers.com^",
- "||midentsolutions.com^",
- "||mobilefacebook.com^",
- "||moneywithfacebook.com^",
- "||myfbfans.com^",
- "||nbabot.net^",
- "||newsfeed.com^",
- "||nextstop.com^",
- "||ogp.me^",
- "||online-deals.net^",
- "||opencreate.org^",
- "||opengraphprotocol.com^",
- "||opengraphprotocol.org^",
- "||parse.com^",
- "||pyrobot.org^",
- "||reachtheworldonfacebook.com^",
- "||react.com^",
- "||reactjs.com^",
- "||reactjs.org^",
- "||recoiljs.org^",
- "||redkix.com^",
- "||rocksdb.com^",
- "||rocksdb.net^",
- "||rocksdb.org^",
- "||rocksdb.org^",
- "||shopfacebook.com^",
- "||sportsfacebook.com^",
- "||sportstream.com^",
- "||supportfacebook.com^",
- "||terragraph.com^",
- "||thefacebook.com^",
- "||thefacebook.net^",
- "||thefind.com^",
- "||toplayerserver.com^",
- "||viewpointsfromfacebook.com^",
- "||whyfacebook.com^",
- "||workplace.com^",
- "||workplaceusecases.com^",
- "||worldhack.com^",
- "||www-facebook.com^",
- "||wwwfacebok.com^",
- "||wwwfacebook.com^",
- "||wwwmfacebook.com^",
- "||yogalayout.com^",
- "||zuckerberg.com^",
- "||zuckerberg.net^",
- },
- "FIFA": { "ServiceID": "fifa",
- "Name": "FIFA",
- "Icon": ""),
- "Rules": {
- "||fifa.com^",
- "||fifaplus.com^",
- },
- "Flickr": { "ServiceID": "flickr",
- "Name": "Flickr",
- "Icon": ""),
- "Rules": {
- "||flic.kr^",
- "||flickr.com^",
- "||flickr.net^",
- "||flickrprints.com^",
- "||flickrpro.com^",
- "||staticflickr.com^",
- },
- "ServiceID": "hosting",
- "Globoplay": { "ServiceID": "globoplay",
- "Name": "Globoplay",
- "Icon": ""),
- "Rules": {
- "||cloud-jarvis.globo.com^",
- "||globoplay.com.br^",
- "||globoplay.com^",
- "||globoplay.globo.com^",
- },
- "GOG": { "ServiceID": "gog",
- "Name": "GOG",
- "Icon": ""),
- "Rules": {
- "||gog-cdn-lumen.secure2.footprint.net^",
- "||gog-statics.com^",
- "||gog.com^",
- "||gogalaxy.com^",
- },
- "HBO Max": { "ServiceID": "hbomax",
- "Name": "HBO Max",
- "Icon": ""),
- "Rules": {
- "||hbo.com^",
- "||hbogo.co.th^",
- "||hbogo.com^",
- "||hbogo.eu^",
- "||hbogoasia.com^",
- "||hbogoasia.id^",
- "||hbogoasia.ph^",
- "||hbomax-images.warnermediacdn.com^",
- "||hbomax.com^",
- "||hbomaxcdn.com^",
- "||hbonow.com^",
- "||max.com^",
- "||maxgo.com^",
- },
- "Hulu": { "ServiceID": "hulu",
- "Name": "Hulu",
- "Icon": ""),
- "Rules": {
- "||hulu.com^",
- },
- "iCloud Private Relay": { "ServiceID": "icloud_private_relay",
- "Name": "iCloud Private Relay",
- "Icon": ""),
- "Rules": {
- "||mask-canary.icloud.com^$dnsrewrite=NXDOMAIN;;",
- "||mask-h2.icloud.com^$dnsrewrite=NXDOMAIN;;",
- "||mask.icloud.com^$dnsrewrite=NXDOMAIN;;",
- },
- "ServiceID": "privacy",
- "iHeartRadio": { "ServiceID": "iheartradio",
- "Name": "iHeartRadio",
- "Icon": ""),
- "Rules": {
- "||937theriver.com^",
- "||iheart.com^",
- "||iheart.mx^",
- "||iheartmedia.com^",
- "||iheartradio.ca^",
- "||iheartradio.co.nz^",
- "||iheartradio.com^",
- "||ihrdev.com^",
- "||ihrhls.com^",
- "||ihrint.com^",
- "||ihrstage.com^",
- },
- "Imgur": { "ServiceID": "imgur",
- "Name": "Imgur",
- "Icon": ""),
- "Rules": {
- "||imgur.com^",
- },
- "ServiceID": "hosting",
- "Instagram": { "ServiceID": "instagram",
- "Name": "Instagram",
- "Icon": ""),
- "Rules": {
- "||achat-followers-instagram.com^",
- "||acheter-followers-instagram.com^",
- "||acheterdesfollowersinstagram.com^",
- "||acheterfollowersinstagram.com^",
- "||bookstagram.com^",
- "||carstagram.com^",
- "||cdninstagram.com^",
- "||chickstagram.com^",
- "||ig.me^",
- "||igcdn.com^",
- "||igsonar.com^",
- "||igtv.com^",
- "||imstagram.com^",
- "||imtagram.com^",
- "||instaadder.com^",
- "||instachecker.com^",
- "||instafallow.com^",
- "||instafollower.com^",
- "||instagainer.com^",
- "||instagda.com^",
- "||instagify.com^",
- "||instagmania.com^",
- "||instagor.com^",
- "||instagram-brand.com^",
- "||instagram-engineering.com^",
- "||instagram-help.com^",
- "||instagram-press.com^",
- "||instagram-press.net^",
- "||instagram.com^",
- "||instagramci.com^",
- "||instagramcn.com^",
- "||instagramdi.com^",
- "||instagramhashtags.net^",
- "||instagramhilecim.com^",
- "||instagramhilesi.org^",
- "||instagramium.com^",
- "||instagramizlenme.com^",
- "||instagramkusu.com^",
- "||instagramlogin.com^",
- "||instagramm.com^",
- "||instagramn.com^",
- "||instagrampartners.com^",
- "||instagramphoto.com^",
- "||instagramq.com^",
- "||instagramsepeti.com^",
- "||instagramtakipcisatinal.net^",
- "||instagramtakiphilesi.com^",
- "||instagramtips.com^",
- "||instagramtr.com^",
- "||instagran.com^",
- "||instagranm.com^",
- "||instagrem.com^",
- "||instagrm.com^",
- "||instagtram.com^",
- "||instagy.com^",
- "||instamgram.com^",
- "||instangram.com^",
- "||instanttelegram.com^",
- "||instaplayer.net^",
- "||instastyle.tv^",
- "||instgram.com^",
- "||intagram.com^",
- "||intagrm.com^",
- "||intgram.com^",
- "||kingstagram.com^",
- "||lnstagram-help.com^",
- "||oninstagram.com^",
- "||online-instagram.com^",
- "||onlineinstagram.com^",
- "||theinstagramhack.com^",
- "||web-instagram.net^",
- "||wwwinstagram.com^",
- },
- "iQIYI": { "ServiceID": "iqiyi",
- "Name": "iQIYI",
- "Icon": ""),
- "Rules": {
- "||iq.com^",
- "||iqiyi.com^",
- "||iqiyipic.com^",
- "||pps.tv^",
- "||ppsimg.com^",
- "||qiyi.com^",
- "||qiyipic.com^",
- "||qy.net^",
- },
- "KakaoTalk": { "ServiceID": "kakaotalk",
- "Name": "KakaoTalk",
- "Icon": ""),
- "Rules": {
- "||kakao.com^",
- "||kgslb.com^",
- },
- "ServiceID": "messenger",
- "Kik": { "ServiceID": "kik",
- "Name": "Kik",
- "Icon": ""),
- "Rules": {
- "||kik.com^",
- },
- "ServiceID": "messenger",
- "KOOK": { "ServiceID": "kook",
- "Name": "KOOK",
- "Icon": ""),
- "Rules": {
- "||kaiheila.cn^",
- "||kookapp.cn^",
- },
- "Lazada": { "ServiceID": "lazada",
- "Name": "Lazada",
- "Icon": ""),
- "Rules": {
- "||k1-lazadasg-oversea.gslb.ksyuncdn.com^",
- "||lazada.co.id^",
- "||lazada.co.th^",
- "||lazada.com.my^",
- "||lazada.com.ph^",
- "||lazada.com^",
- "||lazada.sg^",
- "||lazada.vn^",
- "||slatic.net^",
- },
- "ServiceID": "shopping",
- "League of Legends": { "ServiceID": "leagueoflegends",
- "Name": "League of Legends",
- "Icon": ""),
- "Rules": {
- "||leagueoflegends.co.kr^",
- "||leagueoflegends.com^",
- "||lol.riotgames.com^",
- "||lolstatic.com^",
- "||lolusercontent.com^",
- },
- "LINE": { "ServiceID": "line",
- "Name": "LINE",
- "Icon": ""),
- "Rules": {
- "||gcld-line.com^",
- "||lin.ee^",
- "||line-apps-beta.com^",
- "||line-apps-rc.com^",
- "||line-apps.com^",
- "||line-cdn.net^",
- "||line-scdn.net^",
- "||line.biz^",
- "||line.me^",
- "||line.naver.jp^",
- "||linecorp.com^",
- "||linefriends.com.tw^",
- "||linefriends.com^",
- "||linegame.jp^",
- "||linemobile.com^",
- "||linemyshop.com^",
- "||lineshoppingseller.com^",
- "||linetv.tw^",
- },
- "LinkedIn": { "ServiceID": "linkedin",
- "Name": "LinkedIn",
- "Icon": ""),
- "Rules": {
- "||bizographics.com^",
- "||cs1404.wpc.epsiloncdn.net^",
- "||cs767.wpc.epsiloncdn.net^",
- "||l-0005.dc-msedge.net^",
- "||l-0005.l-dc-msedge.net^",
- "||l-0005.l-msedge.net^",
- "||l-0015.l-msedge.net^",
- "||licdn.cn^",
- "||licdn.com^",
- "||linkedin.at^",
- "||linkedin.be^",
- "||linkedin.cn^",
- "||linkedin.com^",
- "||linkedin.nl^",
- "||linkedin.qtlcdn.com^",
- "||lnkd.in^",
- },
- "Lionsgate+": { "ServiceID": "lionsgateplus",
- "Name": "Lionsgate+",
- "Icon": ""),
- "Rules": {
- "||lionsgateplus.com^",
- "||starz.com^",
- },
- "Looke": { "ServiceID": "looke",
- "Name": "Looke",
- "Icon": ""),
- "Rules": {
- "||looke.com.br^",
- "||ottvs.com.br^",
- },
- "Mail.ru": { "ServiceID": "mail_ru",
- "Name": "Mail.ru",
- "Icon": ""),
- "Rules": {
- "||imgsmail.ru^",
- "||mail.ru^",
- "||mycdn.me^",
- },
- "Mastodon": { "ServiceID": "mastodon",
- "Name": "Mastodon",
- "Icon": ""),
- "Rules": {
- "||aus.social^",
- "||awscommunity.social^",
- "||climatejustice.social^",
- "||cupoftea.social^",
- "||cyberplace.social^",
- "||defcon.social^",
- "||det.social^",
- "||glasgow.social^",
- "||h4.io^",
- "||hachyderm.io^",
- "||hessen.social^",
- "||hostux.social^",
- "||ieji.de^",
- "||indieweb.social^",
- "||infosec.exchange^",
- "||ioc.exchange^",
- "||kolektiva.social^",
- "||livellosegreto.it^",
- "||lor.sh^",
- "||lou.lt^",
- "||m.cmx.im^",
- "||mas.to^",
- "||masto.ai^",
- "||masto.es^",
- "||masto.nu^",
- "||masto.pt^",
- "||mastodon.au^",
- "||mastodon.bida.im^",
- "||mastodon.com.tr^",
- "||mastodon.eus^",
- "||mastodon.green^",
- "||mastodon.ie^",
- "||mastodon.iriseden.eu^",
- "||mastodon.nl^",
- "||mastodon.nu^",
- "||mastodon.nz^",
- "||mastodon.online^",
- "||mastodon.online^",
- "||mastodon.scot^",
- "||mastodon.sdf.org^",
- "||mastodon.social^",
- "||mastodon.social^",
- "||mastodon.top^",
- "||mastodon.uno^",
- "||mastodon.world^",
- "||mastodon.zaclys.com^",
- "||mastodonapp.uk^",
- "||mastodont.cat^",
- "||mastodontech.de^",
- "||mastodontti.fi^",
- "||mastouille.fr^",
- "||mathstodon.xyz^",
- "||metalhead.club^",
- "||mindly.social^",
- "||mstdn.ca^",
- "||mstdn.jp^",
- "||mstdn.party^",
- "||mstdn.plus^",
- "||mstdn.social^",
- "||muenchen.social^",
- "||muenster.im^",
- "||nerdculture.de^",
- "||noc.social^",
- "||norden.social^",
- "||nrw.social^",
- "||o3o.ca^",
- "||ohai.social^",
- "||piaille.fr^",
- "||pol.social^",
- "||ravenation.club^",
- "||rollenspiel.social^",
- "||ruby.social^",
- "||ruhr.social^",
- "||sfba.social^",
- "||socel.net^",
- "||social.anoxinon.de^",
- "||social.cologne^",
- "||social.dev-wiki.de^",
- "||social.linux.pizza^",
- "||social.politicaconciencia.org^",
- "||social.vivaldi.net^",
- "||stranger.social^",
- "||sueden.social^",
- "||tech.lgbt^",
- "||techhub.social^",
- "||theblower.au^",
- "||tkz.one^",
- "||todon.eu^",
- "||toot.aquilenet.fr^",
- "||toot.community^",
- "||toot.funami.tech^",
- "||toot.io^",
- "||toot.wales^",
- "||troet.cafe^",
- "||union.place^",
- "||universeodon.com^",
- "||urbanists.social^",
- "||wien.rocks^",
- "||wxw.moe^",
- },
- "Mercado Libre": { "ServiceID": "mercado_libre",
- "Name": "Mercado Libre",
- "Icon": ""),
- "Rules": {
- "||mercadolibre.cl^",
- "||mercadolibre.co.cr^",
- "||mercadolibre.com.ar^",
- "||mercadolibre.com.bo^",
- "||mercadolibre.com.co^",
- "||mercadolibre.com.do^",
- "||mercadolibre.com.ec^",
- "||mercadolibre.com.gt^",
- "||mercadolibre.com.hn^",
- "||mercadolibre.com.mx^",
- "||mercadolibre.com.ni^",
- "||mercadolibre.com.pa^",
- "||mercadolibre.com.pe^",
- "||mercadolibre.com.py^",
- "||mercadolibre.com.sv^",
- "||mercadolibre.com.uy^",
- "||mercadolibre.com.ve^",
- "||mercadolibre.com^",
- "||mercadolivre.com.br^",
- "||mlstatic.com^",
- },
- "ServiceID": "shopping",
- "Minecraft": { "ServiceID": "minecraft",
- "Name": "Minecraft",
- "Icon": ""),
- "Rules": {
- "||minecraft.net^",
- "||minecraftservices.com^",
- "||mojang.com^",
- },
- "Nebula": { "ServiceID": "nebula",
- "Name": "Nebula",
- "Icon": ""),
- "Rules": {
- "||nebula.app^",
- "||nebula.tv^",
- },
- "Netflix": { "ServiceID": "netflix",
- "Name": "Netflix",
- "Icon": ""),
- "Rules": {
- "|netflix.com.edgesuite.net^",
- "||dualstack.apiproxy-*.amazonaws.com^",
- "||dualstack.ichnaea-web-*.amazonaws.com^",
- "||fast.com^",
- "||netflix.ca^",
- "||netflix.com^",
- "||netflix.net^",
- "||netflixdnstest1.com^",
- "||netflixdnstest10.com^",
- "||netflixdnstest2.com^",
- "||netflixdnstest3.com^",
- "||netflixdnstest4.com^",
- "||netflixdnstest5.com^",
- "||netflixdnstest6.com^",
- "||netflixdnstest7.com^",
- "||netflixdnstest8.com^",
- "||netflixdnstest9.com^",
- "||netflixinvestor.com^",
- "||netflixtechblog.com^",
- "||nflxext.com^",
- "||nflximg.com^",
- "||nflximg.net^",
- "||nflxsearch.net^",
- "||nflxso.net^",
- "||nflxvideo.net^",
- },
- "Nintendo": { "ServiceID": "nintendo",
- "Name": "Nintendo",
- "Icon": ""),
- "Rules": {
- "||nintendo-europe.com^",
- "||nintendo.be^",
- "||nintendo.co.jp^",
- "||nintendo.co.uk^",
- "||nintendo.com.au^",
- "||nintendo.com^",
- "||nintendo.de^",
- "||nintendo.es^",
- "||nintendo.eu^",
- "||nintendo.fr^",
- "||nintendo.it^",
- "||nintendo.jp^",
- "||nintendo.net^",
- "||nintendo.nl^",
- "||nintendo.pt^",
- "||nintendoswitch.cn^",
- "||nintendowifi.net^",
- },
- "Nvidia": { "ServiceID": "nvidia",
- "Name": "Nvidia",
- "Icon": ""),
- "Rules": {
- "||geforce.com^",
- "||geforcenow.com^",
- "||nvidia.cn^",
- "||nvidia.com.global.ogslb.com^",
- "||nvidia.com^",
- "||nvidia.eu^",
- "||nvidia.partners^",
- "||nvidiagrid.net^",
- "||nvidianews.com^",
- "||tegrazone.com^",
- },
- "ServiceID": "software",
- "Odysee": { "ServiceID": "odysee",
- "Name": "Odysee",
- "Icon": ""),
- "Rules": {
- "||odycdn.com^",
- "||odysee.com^",
- "||odysee.live^",
- "||odysee.tv^",
- },
- "OK.ru": { "ServiceID": "ok",
- "Name": "OK.ru",
- "Icon": ""),
- "Rules": {
- "||insideok.ru^",
- "||ok.games^",
- "||ok.ru^",
- "||okcdn.ru^",
- "||oktech.ru^",
- "||st.mycdn.me^",
- },
- "Olvid": { "ServiceID": "olvid",
- "Name": "Olvid",
- "Icon": ""),
- "Rules": {
- "||olvid-attachment-chunks.s3.eu-west-3.amazonaws.com^",
- "||olvid.io^",
- },
- "ServiceID": "messenger",
- "OnlyFans": { "ServiceID": "onlyfans",
- "Name": "OnlyFans",
- "Icon": ""),
- "Rules": {
- "||onlyfans.com^",
- },
- "Origin": { "ServiceID": "origin",
- "Name": "Origin",
- "Icon": ""),
- "Rules": {
- "|cloudsync-prod.s3.amazonaws.com^",
- "|origin-a.akamaihd.net^",
- "|rtm.tnt-ea.com^",
- "|ssl-lvlt.cdn.ea.com^",
- "||accounts.ea.com^",
- "||dawngate.com^",
- "||eastore.com^",
- "||lordofultima.com^",
- "||origin.com^",
- "||origin.tv^",
- "||signin.ea.com^",
- },
- "Paramount Plus": { "ServiceID": "paramountplus",
- "Name": "Paramount Plus",
- "Icon": ""),
- "Rules": {
- "||paramountplus.com^",
- "||pplusstatic.com^",
- },
- "Peacock TV": { "ServiceID": "peacock_tv",
- "Name": "Peacock TV",
- "Icon": ""),
- "Rules": {
- "||peacock.com^",
- "||peacocktv.com^",
- },
- "Pinterest": { "ServiceID": "pinterest",
- "Name": "Pinterest",
- "Icon": ""),
- "Rules": {
- "||pin.it^",
- "||pinimg.com^",
- "||pinterest.at^",
- "||pinterest.be^",
- "||pinterest.ca^",
- "||pinterest.ch^",
- "||pinterest.cl^",
- "||pinterest.co.at^",
- "||pinterest.co.in^",
- "||pinterest.co.kr^",
- "||pinterest.co.nz^",
- "||pinterest.co.uk^",
- "||pinterest.co^",
- "||pinterest.com.au^",
- "||pinterest.com.bo^",
- "||pinterest.com.ec^",
- "||pinterest.com.mx^",
- "||pinterest.com.pe^",
- "||pinterest.com.py^",
- "||pinterest.com.uy^",
- "||pinterest.com.vn^",
- "||pinterest.com^",
- "||pinterest.de^",
- "||pinterest.dk^",
- "||pinterest.ec^",
- "||pinterest.engineering^",
- "||pinterest.es^",
- "||pinterest.fr^",
- "||pinterest.hu^",
- "||pinterest.id^",
- "||pinterest.ie^",
- "||pinterest.in^",
- "||pinterest.info^",
- "||pinterest.it^",
- "||pinterest.jp^",
- "||pinterest.kr^",
- "||pinterest.mx^",
- "||pinterest.nl^",
- "||pinterest.nz^",
- "||pinterest.pe^",
- "||pinterest.ph^",
- "||pinterest.pt^",
- "||pinterest.ru^",
- "||pinterest.se^",
- "||pinterest.th^",
- "||pinterest.tw^",
- "||pinterest.uk^",
- "||pinterest.vn^",
- "||pinterestmail.com^",
- },
- "PlayStation": { "ServiceID": "playstation",
- "Name": "PlayStation",
- "Icon": ""),
- "Rules": {
- "||gaikai.com",
- "||playstation-cloud.com",
- "||playstation-cloud.net",
- "||playstation.com",
- "||playstation.net",
- "||scea.com",
- "||sonyentertainmentnetwork.com",
- "||station.sony.com",
- },
- "Google Play Store": { "ServiceID": "playstore",
- "Name": "Google Play Store",
- "Icon": ""),
- "Rules": {
- "||play-fe.googleapis.com^",
- "||play-lh.googleusercontent.com^",
- "||prod-lt-playstoregatewayadapter-pa.googleapis.com^",
- },
- "ServiceID": "software",
- "Plenty of Fish": { "ServiceID": "plenty_of_fish",
- "Name": "Plenty of Fish",
- "Icon": ""),
- "Rules": {
- "||pof.com^",
- },
- "ServiceID": "dating",
- "Plex": { "ServiceID": "plex",
- "Name": "Plex",
- "Icon": ""),
- "Rules": {
- "||plex.bz^",
- "||plex.direct^",
- "||plex.tv^",
- "||plexapp.com^",
- },
- "Pluto TV": { "ServiceID": "pluto_tv",
- "Name": "Pluto TV",
- "Icon": ""),
- "Rules": {
- "||pluto.tv^",
- },
- "Privacy": { "ServiceID": "privacy",
- "Name": "Privacy",
- "Icon": ""),
- "Rules": {
- "||privacy.com.br^",
- },
- "ServiceID": "privacy",
- "QQ": { "ServiceID": "qq",
- "Name": "QQ",
- "Icon": ""),
- "Rules": {
- "||qq-video.cdn-go.cn^",
- "||qq.com^$denyallow=wx.qq.com|weixin.qq.com",
- "||url.cn^",
- },
- "Rakuten Viki": { "ServiceID": "rakuten_viki",
- "Name": "Rakuten Viki",
- "Icon": ""),
- "Rules": {
- "||m-content-viki.s.llnwi.net^",
- "||viki.com^",
- "||viki.io^",
- },
- "Reddit": { "ServiceID": "reddit",
- "Name": "Reddit",
- "Icon": ""),
- "Rules": {
- "||redd.it^",
- "||reddit.com^",
- "||redditmail.com^",
- "||redditmedia.com^",
- "||redditstatic.com^",
- },
- "Riot Games": { "ServiceID": "riot_games",
- "Name": "Riot Games",
- "Icon": ""),
- "Rules": {
- "||dradis-prod.rdatasrv.net^",
- "||pvp.net^",
- "||rgpub.io^",
- "||riotcdn.com^",
- "||riotcdn.net^",
- "||riotgames.com^",
- },
- "Roblox": { "ServiceID": "roblox",
- "Name": "Roblox",
- "Icon": ""),
- "Rules": {
- "||blox.com^",
- "||rbx.cn^",
- "||rbx.com^",
- "||rbxadder.com^",
- "||rbxcdn.com^",
- "||rbxcdn.net^",
- "||rbxinfra.com^",
- "||rbxinfra.net^",
- "||roblox.cn^",
- "||roblox.com^",
- "||roblox.qq.com^",
- "||robloxcdn.com^",
- "||robloxdev.cn^",
- },
- "Rockstar Games": { "ServiceID": "rockstar_games",
- "Name": "Rockstar Games",
- "Icon": ""),
- "Rules": {
- "||rockstargames.com^",
- "||rsg.sc^",
- },
- "Samsung TV Plus": { "ServiceID": "samsung_tv_plus",
- "Name": "Samsung TV Plus",
- "Icon": ""),
- "Rules": {
- "||internetat.tv^",
- "||samsung.wurl.tv^",
- "||samsungcloud.tv^",
- "||samsungtvplus.com^",
- },
- "Shein": { "ServiceID": "shein",
- "Name": "Shein",
- "Icon": ""),
- "Rules": {
- "||shein.co.uk^",
- "||shein.com^",
- "||shein.se^",
- "||sheinsz.ltwebstatic.com^",
- },
- "ServiceID": "shopping",
- "Shopee": { "ServiceID": "shopee",
- "Name": "Shopee",
- "Icon": ""),
- "Rules": {
- "||shopee.cl^",
- "||shopee.cn^",
- "||shopee.co.id^",
- "||shopee.co.th^",
- "||shopee.com.br^",
- "||shopee.com.co^",
- "||shopee.com.mx^",
- "||shopee.com.my^",
- "||shopee.com^",
- "||shopee.es^",
- "||shopee.fr^",
- "||shopee.id^",
- "||shopee.in^",
- "||shopee.io^",
- "||shopee.ph^",
- "||shopee.sg^",
- "||shopee.tw^",
- "||shopee.vn^",
- "||shopeemobile.com^",
- "||shp.ee^",
- },
- "ServiceID": "shopping",
- "Signal": { "ServiceID": "signal",
- "Name": "Signal",
- "Icon": ""),
- "Rules": {
- "||signal.org^",
- "||whispersystems.org^",
- },
- "ServiceID": "messenger",
- "Skype": { "ServiceID": "skype",
- "Name": "Skype",
- "Icon": ""),
- "Rules": {
- "||edge-skype-com.s-0001.s-msedge.net^",
- "||skype-edf.akadns.net^",
- "||skype.com^",
- "||skype.net^",
- "||skype^",
- "||skypeassets.com^",
- "||skypeassets.net^",
- "||skypedata.akadns.net^",
- },
- "ServiceID": "messenger",
- "Slack": { "ServiceID": "slack",
- "Name": "Slack",
- "Icon": ""),
- "Rules": {
- "||slack-edge.com^",
- "||slack-files.com ^",
- "||slack-imgs.com^",
- "||slack.com^",
- "||slackb.com^",
- },
- "ServiceID": "messenger",
- "Snapchat": { "ServiceID": "snapchat",
- "Name": "Snapchat",
- "Icon": ""),
- "Rules": {
- "||impala-media-production.s3.amazonaws.com^",
- "||sc-cdn.net^",
- "||snap-dev.net^",
- "||snapads.com^",
- "||snapchat.com^",
- "||snapkit.co",
- },
- "SoundCloud": { "ServiceID": "soundcloud",
- "Name": "SoundCloud",
- "Icon": ""),
- "Rules": {
- "||sndcdn.com^",
- "||soundcloud.com^",
- },
- "Spotify": { "ServiceID": "spotify",
- "Name": "Spotify",
- "Icon": ""),
- "Rules": {
- "/_spotify-connect._tcp.local/",
- "|audio-ak-spotify-com.akamaized.net^",
- "|audio4-ak-spotify-com.akamaized.net^",
- "|heads-ak-spotify-com.akamaized.net^",
- "|heads4-ak-spotify-com.akamaized.net^",
- "|spotify.com.edgesuite.net^",
- "|spotify.map.fastly.net^",
- "|spotify.map.fastlylb.net^",
- "||byspotify.com^",
- "||pscdn.co^",
- "||scdn.co^",
- "||spoti.fi^",
- "||spotify-everywhere.com^",
- "||spotify.com^",
- "||spotify.design^",
- "||spotifycdn.com^",
- "||spotifycdn.net^",
- "||spotifycharts.com^",
- "||spotifycodes.com^",
- "||spotifyforbrands.com^",
- "||spotifyjobs.com^",
- },
- "Spotify Video": { "ServiceID": "spotify_video",
- "Name": "Spotify Video",
- "Icon": ""),
- "Rules": {
- "||eip-ntt.video-ak.cdn.spotify.com.akahost.net^",
- "||video-ak.cdn.spotify.com^",
- "||video-akpcw-cdn-spotify-com.akamaized.net^",
- "||video-akpcw.spotifycdn.com.edgesuite.net^",
- "||video-akpcw.spotifycdn.com^",
- "||video-fa.scdn.co^",
- },
- "Steam": { "ServiceID": "steam",
- "Name": "Steam",
- "Icon": ""),
- "Rules": {
- "|steambroadcast.akamaized.net^",
- "|steamcdn-a.akamaihd.net^",
- "|steamcommunity-a.akamaihd.net^",
- "|steamstore-a.akamaihd.net^",
- "|steamusercontent-a.akamaihd.net^",
- "|steamuserimages-a.akamaihd.net^",
- "|steamvideo-a.akamaihd.net^",
- "|xz.pphimalayanrt.com^",
- "||csgo.wmsj.cn^",
- "||dl.steam.clngaa.com^",
- "||dl.steam.ksyna.com^",
- "||dota2.wmsj.cn^",
- "||playartifact.com^",
- "||s.team^",
- "||st.dl.bscstorage.net^",
- "||st.dl.eccdnx.com^",
- "||st.dl.pinyuncloud.com^",
- "||steam-api.com^",
- "||steam-chat.com^",
- "||steamchina.com^",
- "||steamcommunity.com^",
- "||steamcontent.com^",
- "||steamdeck.com^",
- "||steamgames.com^",
- "||steampipe.steamcontent.tnkjmec.com^",
- "||steampowered.com.8686c.com^",
- "||steampowered.com^",
- "||steamserver.net^",
- "||steamstatic.com.8686c.com^",
- "||steamstatic.com^",
- "||steamusercontent.com^",
- "||underlords.com^",
- "||valvesoftware.com^",
- "||wmsjsteam.com^",
- },
- "Telegram (Web)": { "ServiceID": "telegram",
- "Name": "Telegram (Web)",
- "Icon": ""),
- "Rules": {
- "||comments.app^",
- "||contest.com^",
- "||graph.org^",
- "||quiz.directory^",
- "||t.me^",
- "||tdesktop.com^",
- "||telega.one^",
- "||telegra.ph^",
- "||telegram-cdn.org^",
- "||telegram.dog^",
- "||telegram.me^",
- "||telegram.org^",
- "||telegram.space^",
- "||telesco.pe^",
- "||tg.dev^",
- "||tx.me^",
- "||usercontent.dev^",
- },
- "ServiceID": "messenger",
- "Temu": { "ServiceID": "temu",
- "Name": "Temu",
- "Icon": ""),
- "Rules": {
- "||kwcdn.com^",
- "||temu.com^",
- },
- "ServiceID": "shopping",
- "Tidal": { "ServiceID": "tidal",
- "Name": "Tidal",
- "Icon": ""),
- "Rules": {"||tidal.com^",
- },
- "": {"ServiceID": "tiktok","Name": "TikTok","Icon": ""),"Rules": {
- "||amemv.com^",
- "||bdurl.com^",
- "||bytecdn.cn^",
- "||bytedance.map.fastly.net^",
- "||bytedapm.com^",
- "||bytegoofy.com^",
- "||byteimg.com^",
- "||byteoversea.com^",
- "||bytescm.com^",
- "||douyin.com^",
- "||douyincdn.com^",
- "||douyinliving.com^",
- "||douyinpic.com^",
- "||douyinstatic.com^",
- "||douyinvod.com^",
- "||huoshan.com^",
- "||huoshanstatic.com^",
- "||huoshanzhibo.com^",
- "||muscdn.com^",
- "||musical.ly^",
- "||p16-tiktok-*.ibyteimg.com^",
- "||p16-tiktokcdn-com.akamaized.net^",
- "||pstatp.com^",
- "||snssdk.com^",
- "||tiktok.com^",
- "||tiktokcdn-us.com^",
- "||tiktokcdn.com^",
- "||tiktokrow-cdn.com^",
- "||tiktokv.com^",
- "||ttlivecdn.com.c.bytefcdn-oversea.com^",
- "||ttlivecdn.com^",
- "||v*.tiktokcdn-eu.com^",
- "||zijieapi.com^",},"": {
- "ServiceID": "tinder",
- "Name": "Tinder",
- "Icon": ""),
- "Rules": {
- "||gotinder.com^",
- "||tinder.com^",
- "||tindersparks.com^",
- },
- "ServiceID": "dating",
- "Tumblr": { "ServiceID": "tumblr",
- "Name": "Tumblr",
- "Icon": ""),
- "Rules": {
- "||tumblr.com^",
- },
- "Twitch": { "ServiceID": "twitch",
- "Name": "Twitch",
- "Icon": ""),
- "Rules": {
- "||ext-twitch.tv^",
- "||jtvnw.net^",
- "||ttvnw.net^",
- "||twitch.tv^",
- "||twitchcdn.net^",
- "||twitchsvc.net^",
- },
- "X (formerly Twitter)": { "ServiceID": "twitter",
- "Name": "X (formerly Twitter)",
- "Icon": ""),
- "Rules": {
- "||ads-twitter.com^",
- "||cms-twdigitalassets.com^",
- "||periscope.tv^",
- "||pscp.tv^",
- "||t.co^",
- "||tellapart.com^",
- "||tweetdeck.com^",
- "||twimg.com^",
- "||twitpic.com^",
- "||twitter.biz^",
- "||twitter.com^",
- "||twitter.jp^",
- "||twittercommunity.com^",
- "||twitterflightschool.com^",
- "||twitterinc.com^",
- "||twitteroauth.com^",
- "||twitterstat.us^",
- "||twtrdns.net^",
- "||twttr.com^",
- "||twttr.net^",
- "||twvid.com^",
- "||vine.co^",
- "||x.com^",
- },
- "Ubisoft": { "ServiceID": "ubisoft",
- "Name": "Ubisoft",
- "Icon": ""),
- "Rules": {
- "||ubi.com^",
- "||ubisoft.com^",
- "||ubisoft.org^",
- "||ubisoftconnect.com^",
- },
- "Valorant": { "ServiceID": "valorant",
- "Name": "Valorant",
- "Icon": ""),
- "Rules": {
- "||playvalorant.com",
- "||valorant.scd.riotcdn.net",
- "||valorant.secure.dyn.riotcdn.net",
- },
- "Viber": { "ServiceID": "viber",
- "Name": "Viber",
- "Icon": ""),
- "Rules": {
- "||viber.com^",
- },
- "ServiceID": "messenger",
- "Vimeo": { "ServiceID": "vimeo",
- "Name": "Vimeo",
- "Icon": ""),
- "Rules": {
- "*vod-adaptive.akamaized.net^",
- "||livestream.com^",
- "||vhx.tv^",
- "||vhxqa1.com^",
- "||vhxqa2.com^",
- "||vhxqa3.com^",
- "||vhxqa4.com^",
- "||vhxqa6.com^",
- "||vimeo-staging.com^",
- "||vimeo-staging2.com^",
- "||vimeo.com^",
- "||vimeo.fr^",
- "||vimeobusiness.com^",
- "||vimeocdn.com^",
- "||vimeogoods.com^",
- "||vimeoondemand.com^",
- "||vimeostatus.com^",
- },
- "VK.com": { "ServiceID": "vk",
- "Name": "VK.com",
- "Icon": ""),
- "Rules": {
- "||mvk.com^",
- "||userapi.com^",
- "||vk-cdn.me^",
- "||vk-cdn.net^",
- "||vk-portal.net^",
- "||vk.cc^",
- "||vk.com^",
- "||vk.design^",
- "||vk.link^",
- "||vk.me^",
- "||vkcache.com^",
- "||vkgo.app^",
- "||vklive.app^",
- "||vkmessenger.app^",
- "||vkmessenger.com^",
- "||vkontakte.ru^",
- "||vkuseraudio.com^",
- "||vkuserlive.net^",
- "||vkuservideo.com^",
- "||vkuservideo.net^",
- },
- "Voot": { "ServiceID": "voot",
- "Name": "Voot",
- "Icon": ""),
- "Rules": {
- "||voot.com^",
- },
- "Wargaming": { "ServiceID": "wargaming",
- "Name": "Wargaming",
- "Icon": ""),
- "Rules": {
- "||wargaming.com^",
- "||wargaming.net^",
- "||wgcdn.co^",
- "||wgcrowd.io^",
- "||worldoftanks.com^",
- "||worldofwarplanes.com^",
- "||worldofwarships.eu^",
- "||wotblitz.com^",
- },
- "WeChat": { "ServiceID": "wechat",
- "Name": "WeChat",
- "Icon": ""),
- "Rules": {
- "||wechat.com^",
- "||weixin.qq.com.cn^",
- "||weixin.qq.com^",
- "||weixinbridge.com^",
- "||wx.qq.com^",
- },
- "ServiceID": "messenger",
- "Weibo": { "ServiceID": "weibo",
- "Name": "Weibo",
- "Icon": ""),
- "Rules": {
- "||wbimg.cn^",
- "||wbimg.com^",
- "||wcdn.cn^",
- "||weibo.cn^",
- "||weibo.com.cn^",
- "||weibo.com^",
- "||weibocdn.com^",
- },
- "WhatsApp": { "ServiceID": "whatsapp",
- "Name": "WhatsApp",
- "Icon": ""),
- "Rules": {
- "||wa.me^",
- "||whatsapp-plus.info^",
- "||whatsapp-plus.me^",
- "||whatsapp-plus.net^",
- "||whatsapp.cc^",
- "||whatsapp.com^",
- "||whatsapp.info^",
- "||whatsapp.net^",
- "||whatsapp.org^",
- "||whatsapp.tv^",
- "||whatsappbrand.com^",
- },
- "ServiceID": "messenger",
- "Wizz": { "ServiceID": "wizz",
- "Name": "Wizz",
- "Icon": ""),
- "Rules": {
- "||getwizz.io^",
- "||wizz.chat^",
- "||wizzapp.com^",
- },
- "ServiceID": "dating",
- "Xbox Live": { "ServiceID": "xboxlive",
- "Name": "Xbox Live",
- "Icon": ""),
- "Rules": {
- "||gamepass.com^",
- "||xbox-global.ifs.windows.com^",
- "||xbox-guide-public.rec.mp.microsoft.com^",
- "||xbox.ipv6.microsoft.com^",
- "||xboxab.com^",
- "||xboxab.net^",
- "||xboxlive.com^",
- "||xboxservices.com^",
- },
- "Xiaohongshu": { "ServiceID": "xiaohongshu",
- "Name": "Xiaohongshu",
- "Icon": ""),
- "Rules": {
- "||xhscdn.com^",
- "||xhscdn.net^",
- "||xiaohongshu.com.my^",
- "||xiaohongshu.com^",
- "||xiaohongshu.net^",
- },
- "ServiceID": "shopping",
- "YouTube": { "ServiceID": "youtube",
- "Name": "YouTube",
- "Icon": ""),
- "Rules": {
- "||ggpht.cn^",
- "||ggpht.com^",
- "||googlevideo.com^",
- "||wide-youtube.l.google.com^",
- "||withyoutube.com^",
- "||youtu.be^",
- "||youtube-nocookie.com^",
- "||youtube-ui.l.google.com^",
- "||youtube.ae^",
- "||youtube.al^",
- "||youtube.am^",
- "||youtube.at^",
- "||youtube.az^",
- "||youtube.ba^",
- "||youtube.be^",
- "||youtube.bg^",
- "||youtube.bh^",
- "||youtube.bo^",
- "||youtube.by^",
- "||youtube.ca^",
- "||youtube.cat^",
- "||youtube.ch^",
- "||youtube.cl^",
- "||youtube.co.ae^",
- "||youtube.co.at^",
- "||youtube.co.cr^",
- "||youtube.co.hu^",
- "||youtube.co.id^",
- "||youtube.co.il^",
- "||youtube.co.in^",
- "||youtube.co.jp^",
- "||youtube.co.ke^",
- "||youtube.co.kr^",
- "||youtube.co.ma^",
- "||youtube.co.nz^",
- "||youtube.co.th^",
- "||youtube.co.tz^",
- "||youtube.co.ug^",
- "||youtube.co.uk^",
- "||youtube.co.ve^",
- "||youtube.co.za^",
- "||youtube.co.zw^",
- "||youtube.co^",
- "||youtube.com.ar^",
- "||youtube.com.au^",
- "||youtube.com.az^",
- "||youtube.com.bd^",
- "||youtube.com.bh^",
- "||youtube.com.bo^",
- "||youtube.com.br^",
- "||youtube.com.by^",
- "||youtube.com.co^",
- "||youtube.com.do^",
- "||youtube.com.ec^",
- "||youtube.com.ee^",
- "||youtube.com.eg^",
- "||youtube.com.es^",
- "||youtube.com.gh^",
- "||youtube.com.gr^",
- "||youtube.com.gt^",
- "||youtube.com.hk^",
- "||youtube.com.hn^",
- "||youtube.com.hr^",
- "||youtube.com.jm^",
- "||youtube.com.jo^",
- "||youtube.com.kw^",
- "||youtube.com.lb^",
- "||youtube.com.lv^",
- "||youtube.com.ly^",
- "||youtube.com.mk^",
- "||youtube.com.mt^",
- "||youtube.com.mx^",
- "||youtube.com.my^",
- "||youtube.com.ng^",
- "||youtube.com.ni^",
- "||youtube.com.om^",
- "||youtube.com.pa^",
- "||youtube.com.pe^",
- "||youtube.com.ph^",
- "||youtube.com.pk^",
- "||youtube.com.pt^",
- "||youtube.com.py^",
- "||youtube.com.qa^",
- "||youtube.com.ro^",
- "||youtube.com.sa^",
- "||youtube.com.sg^",
- "||youtube.com.sv^",
- "||youtube.com.tn^",
- "||youtube.com.tr^",
- "||youtube.com.tw^",
- "||youtube.com.ua^",
- "||youtube.com.uy^",
- "||youtube.com.ve^",
- "||youtube.com^",
- "||youtube.cr^",
- "||youtube.cz^",
- "||youtube.de^",
- "||youtube.dk^",
- "||youtube.ee^",
- "||youtube.es^",
- "||youtube.fi^",
- "||youtube.fr^",
- "||youtube.ge^",
- "||youtube.googleapis.com^",
- "||youtube.gr^",
- "||youtube.gt^",
- "||youtube.hk^",
- "||youtube.hr^",
- "||youtube.hu^",
- "||youtube.ie^",
- "||youtube.in^",
- "||youtube.iq^",
- "||youtube.is^",
- "||youtube.it^",
- "||youtube.jo^",
- "||youtube.jp^",
- "||youtube.kr^",
- "||youtube.kz^",
- "||youtube.la^",
- "||youtube.lk^",
- "||youtube.lt^",
- "||youtube.lu^",
- "||youtube.lv^",
- "||youtube.ly^",
- "||youtube.ma^",
- "||youtube.md^",
- "||youtube.me^",
- "||youtube.mk^",
- "||youtube.mn^",
- "||youtube.mx^",
- "||youtube.my^",
- "||youtube.ng^",
- "||youtube.ni^",
- "||youtube.nl^",
- "||youtube.no^",
- "||youtube.pa^",
- "||youtube.pe^",
- "||youtube.ph^",
- "||youtube.pk^",
- "||youtube.pl^",
- "||youtube.pr^",
- "||youtube.pt^",
- "||youtube.qa^",
- "||youtube.ro^",
- "||youtube.rs^",
- "||youtube.ru^",
- "||youtube.sa^",
- "||youtube.se^",
- "||youtube.sg^",
- "||youtube.si^",
- "||youtube.sk^",
- "||youtube.sn^",
- "||youtube.soy^",
- "||youtube.sv^",
- "||youtube.tn^",
- "||youtube.tv^",
- "||youtube.ua^",
- "||youtube.ug^",
- "||youtube.uy^",
- "||youtube.vn^",
- "||youtube^",
- "||youtubeeducation.com^",
- "||youtubeembeddedplayer.googleapis.com^",
- "||youtubefanfest.com^",
- "||youtubegaming.com^",
- "||youtubego.co.id^",
- "||youtubego.co.in^",
- "||youtubego.com.br^",
- "||youtubego.com^",
- "||youtubego.id^",
- "||youtubego.in^",
- "||youtubei.googleapis.com^",
- "||youtubekids.com^",
- "||youtubemobilesupport.com^",
- "||yt.be^",
- "||ytimg.com^",
- },
- "YY": { "ServiceID": "yy",
- "Name": "YY",
- "Icon": ""),
- "Rules": {
- "||yy.com^",
- },
- "Zhihu": { "ServiceID": "zhihu",
- "Name": "Zhihu",
- "Icon": ""),
- "Rules": {
- "||zhihu.com^",
- "||zhimg.com^",
- },
- }
- }
\ No newline at end of file
diff --git a/build-windows.sh b/build-windows.sh
deleted file mode 100755
index f070b7e..0000000
--- a/build-windows.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-CGO_ENABLED=1 \
-GOOS=windows \
-GOARCH=amd64 \
-CC=gcc \
-go build -o dns-server.exe main.go
diff --git a/config.json b/config.json
index 8b73186..bd207b2 100644
--- a/config.json
+++ b/config.json
@@ -65,7 +65,7 @@
"name": "AdGuard DNS filter",
"url": "https://gitea.amazehome.xyz/AMAZEHOME/hosts-and-filters/raw/branch/main/filter.txt",
"enabled": true,
- "lastUpdateTime": "2025-12-21T10:46:36.629Z"
+ "lastUpdateTime": "2026-01-23T01:04:32.424Z"
},
{
"name": "Adaway Default Blocklist",
@@ -150,7 +150,7 @@
"statsSaveInterval": 60
},
"gfwList": {
- "ip": "",
+ "ip": "127.0.0.1",
"content": "",
"enabled": false
},
diff --git a/data/gflist.txt b/data/gflist.txt
new file mode 100644
index 0000000..9806b0e
--- /dev/null
+++ b/data/gflist.txt
@@ -0,0 +1,2572 @@
+W0F1dG9Qcm94eSAwLjIuOV0KISBDaGVja3N1bTogQVg1c3RUZ3B2eDg0MkRBNkxk
+dEtBdwohIEV4cGlyZXM6IDZoCiEgVGl0bGU6IEdGV0xpc3Q0TEwKISBHRldMaXN0
+IHdpdGggRVZFUllUSElORyBpbmNsdWRlZAohIExhc3QgTW9kaWZpZWQ6IFNhdCwg
+MTMgU2VwIDIwMjUgMDQ6MTM6NDUgKzAwMDAKIQohIEhvbWVQYWdlOiBodHRwczov
+L2dpdGh1Yi5jb20vZ2Z3bGlzdC9nZndsaXN0CiEgTGljZW5zZTogaHR0cHM6Ly93
+d3cuZ251Lm9yZy9saWNlbnNlcy9vbGQtbGljZW5zZXMvbGdwbC0yLjEudHh0CiEK
+ISBHRldMaXN0IGlzIHVubGlrZWx5IHRvIGZ1bGx5IGNvbXByaXNlIHRoZSByZWFs
+CiEgcnVsZXMgYmVpbmcgZGVwbG95ZWQgaW5zaWRlIEdGVyBzeXN0ZW0uIFdlIHRy
+eQohIG91ciBiZXN0IHRvIGtlZXAgdGhlIGxpc3QgdXAgdG8gZGF0ZS4gUGxlYXNl
+CiEgY29udGFjdCB1cyByZWdhcmRpbmcgVVJMIHN1Ym1pc3Npb24gLyByZW1vdmFs
+LAohIG9yIHN1Z2dlc3Rpb24gLyBlbmhhbmNlbWVudCBhdCBpc3N1ZSB0cmFja2Vy
+OgohIGh0dHBzOi8vZ2l0aHViLmNvbS9nZndsaXN0L2dmd2xpc3QvaXNzdWVzLy4K
+CiEtLS0tLS0tLS00MDMvNDUxLzUwMy81MjAgJiBVUkwgUmVkaXJlY3RzLS0tLS0t
+LS0tCnx8YmxvZ2phdi5uZXQKfHx6b29taW5mby5jb20KfHxwdHd4ei5jb20KfHxt
+aXVpcG9sc2thLnBsCnx8cGlhb3RpYS5jb20KfHx3dW5kZXJncm91bmQuY29tCnx8
+NTAwcHguY29tCnx8NTAwcHgub3JnCiEtLWVoZW50YWkKfGh0dHA6Ly84NS4xNy43
+My4zMS8KIS0tfHxhZG9yYW1hLmNvbQp8fGFmcmVlY2F0di5jb20KfHxhZ25lc2Iu
+ZnIKfHxhaXJpdGlsaWJyYXJ5LmNvbQp8fGFiZW1hdHYuYWthbWFpemVkLm5ldAp8
+fGxpbmVhci1hYmVtYXR2LmFrYW1haXplZC5uZXQKfHx2b2QtYWJlbWF0di5ha2Ft
+YWl6ZWQubmV0Cnx8YWtpYmEtd2ViLmNvbQp8fGFsdHJlYy5jb20KfHxhbWF6b252
+aWRlby5jb20KfHxhbmdlbGEtbWVya2VsLmRlCnx8YW5nb2xhLm9yZwp8fGFudGhy
+b3BpYy5jb20KfHxhcGFydG1lbnRyYXRpbmdzLmNvbQp8fGFwYXJ0bWVudHMuY29t
+Cnx8YXJlbmEudGFpcGVpCnx8YXNzZXRzLmJ3YnguaW8KfHxhc3NpbXAub3JnCnx8
+YXRoZW5hZWl6b3UuY29tCnx8YmFua21vYmlsZXZpYmUuY29tCnx8YmFub3J0ZS5j
+b20KfHxiZWVnLmNvbQp8fGdsb2JhbC5iaW5nLmNvbQp8fGJvb2t0b3BpYS5jb20u
+YXUKfHxib3lzbWFzdGVyLmNvbQp8fGJ5bmV0LmNvLmlsCnx8YnlydXQub3JnCnx8
+Y2FyZmF4LmNvbQouY2FzaW5vYmVsbGluaS5jb20KfHxjYXNpbm9iZWxsaW5pLmNv
+bQp8fGNlbnRhdXJvLmNvbS5icgp8fGNob2JpdC5jYwp8fGNpY2lhaS5jb20KfHxj
+aWNpLmNvbQp8fGNsYXVkZS5haQp8fGNsZWFyc3VyYW5jZS5jb20KfHxjbmJldGEu
+Y29tLnR3Cnx8Y291bnRlci5zb2NpYWwKfHxjb3N0Y28uY29tCnx8Y296ZS5jb20K
+fHxjcm9zc2ZpcmUuY28ua3IKfHxjcnVuY2h5cm9sbC5jb20KfHxkMnBhc3MuY29t
+Cnx8ZGFycGEubWlsCnx8ZGF3YW5naWRjLmNvbQp8fGRlZXplci5jb20KfHxkZXNp
+cHJvLmRlCnx8ZGlzY29yZC5jb20KfHxkaXNjb3JkLmdnCnx8ZGlzY29yZGFwcC5j
+b20KfHxkaXNjb3JkYXBwLm5ldAp8fGRpc2guY29tCnxodHRwOi8vaW1nLmRsc2l0
+ZS5qcC8KfHxkbTUzMC5uZXQKfHxkbWh5Lm9yZwp8fGRtbS5jby5qcAp8aHR0cDov
+L3d3dy5kbW0uY29tL25ldGdhbWUKfHxkbnZvZC50dgp8fGR1Ym94LmNvbQp8fGR2
+ZHBhYy5jb20KfHxlZXN0aS5lZQp8fGVzdXJhbmNlLmNvbQouZXhwZWt0LmNvbQp8
+fGV4cGVrdC5jb20KLmV4dG1hdHJpeC5jb20KfHxleHRtYXRyaXguY29tCnx8ZmFr
+a3UubmV0Cnx8ZmFzdHBpYy5ydQp8fGZpbGVzb3IuY29tCnx8ZmluYW5jZXR3aXR0
+ZXIuY29tCnx8ZmxpcGJvYXJkLmNvbQp8fGZsaXR0by5jb20KfHxmbmFjLmJlCnx8
+Zm5hYy5jb20KfHxmdW5reWltZy5jb20KfHxmeG5ldHdvcmtzLmNvbQp8fGctYXJl
+YS5vcmcKfHxnZXR0eWltYWdlcy4qCkBAfHxnZXR0eWltYWdlcy5jb20KQEB8fGdl
+dHR5aW1hZ2VzLmNuCnx8Z2V0dXBsb2FkZXIuY29tCnx8Z2hpZHJhLXNyZS5vcmcK
+IS0tfGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9ncmFtdGhpbmsvemhhbwohLS18aHR0
+cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Byb2dyYW10aGluay96aGFv
+Cnx8Z2xhc3M4LmV1Cnx8Z2x5cGUuY29tCnx8Z28xNDEuY29tCnx8aGF1dGVsb29r
+LmNvbQp8fGhhdXRlbG9va2Nkbi5jb20KfHx3ZWdvLmhlcmUuY29tCnx8Z3Jvay5j
+b20KfHxobW9lZ2lybC5jb20KfHxobXZkaWdpdGFsLmNhCnx8aG12ZGlnaXRhbC5j
+b20KfHxob21lZGVwb3QuY29tCnx8aG9vdmVycy5jb20KfHxodWx1LmNvbQp8fGh1
+bHVpbS5jb20KfGh0dHA6Ly9zZWN1cmUuaHVzdGxlci5jb20KfGh0dHA6Ly9odXN0
+bGVyY2FzaC5jb20KfGh0dHA6Ly93d3cuaHVzdGxlcmNhc2guY29tCnx8aHlicmlk
+LWFuYWx5c2lzLmNvbQp8fGNkbiouaS1zY21wLmNvbQp8fGlsYmUuY29tCnx8aWxv
+dmVsb25ndG9lcy5jb20KfGh0dHA6Ly9pbWdtZWdhLmNvbS8qLmdpZi5odG1sCnxo
+dHRwOi8vaW1nbWVnYS5jb20vKi5qcGcuaHRtbAp8aHR0cDovL2ltZ21lZ2EuY29t
+LyouanBlZy5odG1sCnxodHRwOi8vaW1nbWVnYS5jb20vKi5wbmcuaHRtbAp8fGlt
+bGl2ZS5jbwp8fGphdmh1Yi5uZXQKfHxqYXZodWdlLmNvbQouamF2bGlicmFyeS5j
+b20KfHxqYXZsaWJyYXJ5LmNvbQp8fGpjcGVubmV5LmNvbQp8fGppbXMubmV0Cnx8
+dHYuanRiYy5qb2lucy5jb20KfHxqdWt1am8tY2x1Yi5jb20KfHxqdWxpZXBvc3Qu
+Y29tCnx8a2F3YWlpa2F3YWlpLmpwCnx8a2VuZGF0aXJlLmNvbQp8fGtoYXRyaW1h
+emEub3JnCnx8a2tib3guY29tCnx8bGVpc3VyZXByby5jb20KfHxsaWZlbWlsZXMu
+Y29tCnx8bGloLmtnCnx8bG9uZ3RvZXMuY29tCnx8bG92ZXR2c2hvdy5jb20KfHxs
+cHNnLmNvbQp8fGxyZnouY29tCnxodHRwOi8vd3d3Lm0tc3BvcnQuY28udWsKfHxt
+YWNnYW1lc3RvcmUuY29tCnx8bWFkb25uYS1hdi5jb20KfHxtYW5kaWFudC5jb20K
+fHxtYW5nYWZveC5jb20KfHxtYW5nYWZveC5tZQp8fG1hbnRhLmNvbQp8fG1hdG9t
+ZS1wbHVzLmNvbQp8fG1hdG9tZS1wbHVzLm5ldAp8fG1hdHR3aWxjb3gubmV0Cnx8
+bWV0YXJ0aHVudGVyLmNvbQp8fG1meG1lZGlhLmNvbQp8fG1pcmFoZXplLm9yZwp8
+fG1vamltLmNvbQp8fGtiLm1vbml0b3J3YXJlLmNvbQp8fG1vbnN0ZXIuY29tCnx8
+bW9vZHl6LmNvbQp8fG1vb25iaW5nby5jb20KfHxtb3MucnUKfHxhZGRvbnMubW96
+aWxsYS5vcmcvKi0qL2ZpcmVmb3gvYWRkb24vdWJsb2NrLW9yaWdpbi8qCnx8YWRk
+b25zLm1vemlsbGEub3JnL2ZpcmVmb3gvZG93bmxvYWRzL2ZpbGUvKi91YmxvY2tf
+b3JpZ2luLSoueHBpCnx8bXNoYS5nb3YKfHx3d3cubXNuLmNvbQp8fG11enUudHYK
+fHxtdmcuanAKLm15YmV0LmNvbQp8fG15YmV0LmNvbQp8fG15cGlrcGFrLmNvbQp8
+fG5hdGlvbndpZGUuY29tCnxodHRwOi8vd3d3Lm5iYy5jb20vbGl2ZQp8fG5lby1t
+aXJhY2xlLmNvbQp8fG5ldGZsaXguY29tCnx8bmV0ZmxpeC5uZXQKfHxuZmx4aW1n
+LmNvbQp8fG5mbHhpbWcubmV0Cnx8bmZseGV4dC5jb20KfHxuZmx4c28ubmV0Cnx8
+bmZseHZpZGVvLm5ldAp8fG5pYy5nb3YKfGh0dHA6Ly9tby5uaWdodGxpZmUxNDEu
+Y29tCnx8cHVycG9zZS5uaWtlLmNvbQp8fG5veGluZmx1ZW5jZXIuY29tCkBAfHxj
+bi5ub3hpbmZsdWVuY2VyLmNvbQp8fG5vcmRzdHJvbS5jb20KfHxub3Jkc3Ryb21p
+bWFnZS5jb20KfHxub3Jkc3Ryb21yYWNrLmNvbQp8fG5vdHRpbmdoYW1wb3N0LmNv
+bQp8fG5wc2Jvb3N0LmNvbQp8fG50ZHR2LmN6Cnx8bnVzYXRyaXAuY29tCnx8bnV1
+dmVtLmNvbQp8fGJicy5ueWluZm9yLmNvbQp8fG9sZWhkdHYuY29tCnx8b21uaTcu
+anAKfHxvbmFwcC5jb20KIS0tV2UgYXJlIGNvbmZ1c2VkIGFzIHdlbGwKfHxvbnRy
+YWMuY29tCkBAfGh0dHA6Ly9ibG9nLm9udHJhYy5jb20KfHxvcGVuYWkuY29tCnx8
+cGFuZG9yYS5jb20KLnBhbmRvcmEudHYKfHxwYXJrYW5za3kuY29tCnx8cGhtc29j
+aWV0eS5vcmcKfGh0dHA6Ly8qLnBpbWcudHcvCnx8cG9kY2FzdC5jbwp8fHBvcGFp
+LnBybwp8fHByaW1ldmlkZW8uY29tCnx8cHJveWVjdG9jbHViZXMuY29tCnx8cHVy
+ZTE4LmNvbQp8fHB5dG9yY2gub3JnCnx8cXEuY28uemEKfHxyMTguY29tCnxodHRw
+Oi8vcmFkaWtvLmpwCnx8cmFtY2l0eS5jb20uYXUKfHxyYXRleW91cm11c2ljLmNv
+bQp8fHJkLmNvbQp8aHR0cHM6Ly9yaXNldXAubmV0Cnx8c2FkaXN0aWMtdi5jb20K
+fHxpc2Muc2Fucy5lZHUKfGh0dHA6Ly9jZG4qLnNlYXJjaC54eHgvCnx8c2hpa3No
+YS5jb20KfHxzbGFja2VyLmNvbQp8fHNtLW1pcmFjbGUuY29tCnx8c295bGVudG5l
+d3Mub3JnCnx8c3BvdGlmeS5jb20KfHxzcHJlYWRzaGlydC5lcwp8fHNwcmluZ2Jv
+YXJkcGxhdGZvcm0uY29tCnx8c3ByaXRlLm9yZwpAQHxodHRwOi8vc3RvcmUuc3By
+aXRlLm9yZwp8fHN1cGVycGFnZXMuY29tCnx8c3dhZ2J1Y2tzLmNvbQp8fHN3aXRj
+aDEuanAKfHx0YXBhbndhcC5jb20KfHxnc3AudGFyZ2V0LmNvbQp8fGxvZ2luLnRh
+cmdldC5jb20KIS0tQEB8fGludGwudGFyZ2V0LmNvbQp8fHJjYW0udGFyZ2V0LmNv
+bQp8fHRlY2huZXdzLnR3Cnx8dGVyYWJveC5jb20KfHx0aGlua2dlZWsuY29tCnx8
+dGhlYm9keXNob3AtdXNhLmNvbQp8fHRtYS5jby5qcAp8fHRyYWNmb25lLmNvbQp8
+fHRyeWhlYXJ0LmpwCnx8dHVybnRhYmxlLmZtCnx8dHdlcmtpbmdidXR0LmNvbQp8
+fHVsb3AubmV0Cnx8dXVrYW5zaHUuY29tCnx8dmVnYXNyZWQuY29tCnx8dmV2by5j
+b20KfHx2aXAtZW50ZXJwcmlzZS5jb20KfGh0dHA6Ly92aXUudHYvY2gvCnxodHRw
+Oi8vdml1LnR2L2VuY29yZS8KfHx2bXBzb2Z0LmNvbQp8fHdhbnotZmFjdG9yeS5j
+b20KfHxzc2wud2VicGFjay5kZQp8fHdlZWJseS5jb20KfHx3aGVyZXRvd2F0Y2gu
+Y29tCnx8d2luZ2FtZXN0b3JlLmNvbQp8fHdpemNyYWZ0cy5uZXQKfHx3b3doZWFk
+LmNvbQp8fHZvZC53d2UuY29tCnx8eGZpbml0eS5jb20KfHx4aWFvbWkuZXUKfHx5
+b3V3aW4uY29tCnx8eXRuLmNvLmtyCnx8emFtaW1nLmNvbQp8fHphdHRvby5jb20K
+fHx6aW0udm4KfHx6b3pvdG93bi5jb20KCiEjIyMjIyMjIyMjIyMjI0dlbmVyYWwg
+TGlzdCBTdGFydCMjIyMjIyMjIyMjIyMjIwohLS0tLS0tLS0tLS0tLS0tLS0tLUNv
+aW4gUG9vbC0tLS0tLS0tLS0tLS0tLS0tLS0KfHxjM3Bvb2wuY29tCnx8dW5taW5l
+YWJsZS5jb20KfHw2NjZwb29sLmNuCnx8YW50cG9vbC5jb20KfHxjcmF6eXBvb2wu
+b3JnCnx8Y3J1eHBvb2wuY29tCnx8bWluaW5ncG9vbGh1Yi5jb20KfHxodW9iaXBv
+b2wuY29tCnx8cG9vbGJpbmFuY2UuY29tCnx8aGl2ZW9uLm5ldAp8fHNwYXJrcG9v
+bC5jb20KfHxmbHlwb29sLm9yZwp8fG5hbm9wb29sLm9yZwp8fHhucG9vbC5jb20K
+fHxiZWVwb29sLmNvbQp8fHpoaXpodS50b3AKfHxzcGlkZXJwb29sLmNvbQp8fHV1
+cG9vbC5jbgp8fGZsZXhwb29sLmlvCnx8YmVlcG9vbC5vcmcKfHxkcG9vbC50b3AK
+fHxva3Bvb2wubWUKfHxiaW5hbmNlemguY2MKfHxidGMuY29tCnx8ci1wb29sLm5l
+dAp8fHctcG9vbC5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tUHVyZSBJUC0tLS0t
+LS0tLS0tLS0tLS0tLS0tLQoxNC4xMDIuMjUwLjE4CjE0LjEwMi4yNTAuMTkKNTAu
+Ny4zMS4yMzA6ODg5OAoxNzQuMTQyLjEwNS4xNTMKNjkuNjUuMTkuMTYwCgohLS0t
+LS0tLS0tLS0tLS0tLS0tLS0tLUlETi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHx4
+bi0tMTF4czg2Zi5pY3UKfHx4bi0tNGdxMTcxcC5jb20KfHx4bi0tY3pxNzVwdnYx
+YWo1Yy5vcmcKfHx4bi0taTJydThxMnFnLmNvbQp8fHhuLS1ub3NzNDNpLmNvbQp8
+fHhuLS1vaXEuY2MKfHx4bi0tcDhqOWEwZDljOWEueG4tLXE5anliNGMKfHx4bi0t
+OXByNjJyMjRhLmNvbQpAQC9eaHR0cHM/OlwvXC8oPz0uKj8oMngzfG5pNXxqNW8p
+KVthLXowLTkuLV0rXC54bi0tbmdzdHItbHJhOGpcLmNvbSQKfHx4bi0tbmdzdHIt
+bHJhOGouY29tCgohLS0tLS0tLS0tLS0tLS0tLS1ETlMgUG9pc29uaW5nLS0tLS0t
+LS0tLS0tLS0tLS0KIS0tLUFtYXpvbi0tLQohLXx8Y2RuLWltYWdlcy5tYWlsY2hp
+bXAuY29tCnx8YWJlYm9va3MuY29tCnxodHRwczovLyouczMuYW1hem9uYXdzLmNv
+bQoKfHw5Y2FjaGUuY29tCnx8OWdhZy5jb20KfHxhZ3JvLmhrCnx8c2hhcmUuYW1l
+cmljYS5nb3YKfHxhcGttaXJyb3IuY29tCnx8YXJ0ZS50dgp8fGFydHN0YXRpb24u
+Y29tCnx8YmFuZ2RyZWFtLnNwYWNlCnx8YmVoYW5jZS5uZXQKfHxiaXJkLnNvCnx8
+Yml0dGVyd2ludGVyLm9yZwp8fGJubi5jbwp8fGJ1c2luZXNzaW5zaWRlci5jb20K
+fHxid2d5aHcuY29tCnx8Y2FzdGJveC5mbQp8fGNseXAuaXQKfHxjbWNuLm9yZwp8
+fGNteC5pbQp8fGRhaWx5dmlldy50dwp8fGRhdW0ubmV0Cnx8ZGVwb3NpdHBob3Rv
+cy5jb20KfHxkaXNjb25uZWN0Lm1lCnx8ZG9jdW1lbnRpbmdyZWFsaXR5LmNvbQp8
+fGRvdWJpYmFja3VwLmNvbQp8fGVuY3ljbG9wZWRpYS5jb20KfHxmYW5nZXFpYW5n
+LmNvbQp8fGZhbnFpYW5nZGFuZy5jb20KfHxmZWVkeC5uZXQKfHxmbHl6eTIwMDUu
+Y29tCnx8Zm9yZWlnbnBvbGljeS5jb20KfHxmcmVlLXNzLnNpdGUKfHxmcmVlaG9u
+Z2tvbmcub3JnCnx8YmxvZy5mdWNrZ2Z3MjMzLm9yZwp8fGcwdi5zb2NpYWwKfHxn
+bG9iYWx2b2ljZXMub3JnCnx8Z2xvcnlzdGFyLm1lCnx8Z29yZWdyaXNoLmNvbQp8
+fGhhbmltZS50dgp8fGhiby5jb20KfHxzcGFjZXMuaGlnaHRhaWwuY29tCnx8aGtn
+YWxkZW4uY29tCnx8aGtnb2xkZW4uY29tCnx8aHVkc29uLm9yZwp8fGlwZnMuaW8K
+fHxqYXBhbnRpbWVzLmNvLmpwCnx8amlqaS5jb20KfHxqaW50aWFuLm5ldAp8fGpp
+bnguY29tCnx8am9pbm1hc3RvZG9uLm9yZwp8fGxpYW5nemhpY2h1YW5tZWkuY29t
+Cnx8bGlnaHRpLm1lCnx8bGlnaHR5ZWFydnBuLmNvbQp8fGxpaGtnLmNvbQp8fGxp
+bmUtc2Nkbi5uZXQKfHxpLmxpdGhpdW0uY29tCnx8Y2xvdWQubWFpbC5ydQp8fGNk
+bi1pbWFnZXMubWFpbGNoaW1wLmNvbQp8fG1hc3RvZG9uLmNsb3VkCnx8bWFzdG9k
+b24uaG9zdAp8fG1hc3RvZG9uLnNvY2lhbAp8fG1hc3RvZG9uLnh5egp8fG1hdHRl
+cnMubmV3cwp8fG1lLm1lCnx8bWV0YXJ0LmNvbQp8fG1vaHUuY2x1Ygp8fG1zYS1p
+dC5vcmcKfHxnb28ubmUuanAKfHxuaWtrZWkuY29tCnx8bml0dGVyLmNjCnx8bml0
+dGVyLm5ldAp8fG5pdS5tb2UKfHxub3cuY29tCnx8b3BlbnZwbi5vcmcKfHxvbmVq
+YXYuY29tCnx8cGFzdGUuZWUKfHxteS5wY2xvdWQuY29tCnx8cGljYWNvbWljLmNv
+bQp8fHBpbmNvbmcucm9ja3MKfHxwaXhpdi5uZXQKfHxwaXhpdi5vcmcKfHxwaXhp
+dnNrZXRjaC5uZXQKfHxwb3RhdG8uaW0KfHxwcmVtcHJveHkuY29tCnx8cHJpc20t
+YnJlYWsub3JnCnx8cHJvdG9uLm1lCnx8cHJvdG9udnBuLmNvbQp8fGFwaS5wdXJl
+YXBrLmNvbQp8fHF1b3JhLmNvbQp8fHF1b3JhY2RuLm5ldAp8fHF6LmNvbQp8fGNk
+bi5zZWF0Z3VydS5jb20KfHxyZWRkLml0Cnx8cmVkZGl0c3BhY2UuY29tCnx8cmVk
+ZGl0LmNvbQp8fHJlZGRpdGhlbHAuY29tCi5yZWRkaXRsaXN0LmNvbQp8aHR0cDov
+L3JlZGRpdGxpc3QuY29tCnx8cmVkZGl0bWVkaWEuY29tCnx8cmVkZGl0c3RhdGlj
+LmNvbQohLS1kZWZ1bmN0Cnx8cml4Y2xvdWQuY29tCnx8cml4Y2xvdWQudXMKfHxy
+c2RsbW9uaXRvci5jb20KfHxzaGFkb3dzb2Nrcy5iZQp8fHRuMS5zaGVtYWxlei5j
+b20KfHx0bjIuc2hlbWFsZXouY29tCnx8dG4zLnNoZW1hbGV6LmNvbQp8fHN0YXRp
+Yy5zaGVtYWxlei5jb20KfHxzaXgtZGVncmVlcy5pbwp8fHNvZnRmYW1vdXMuY29t
+Cnx8c29zcmVhZGVyLmNvbQp8fHNzcGFuZWwubmV0Cnx8c3VwY2hpbmEuY29tCnx8
+dGVkZHlzdW4uY29tCnx8dGV4dG5vdy5tZQp8fHRpbmV5ZS5jb20KfHx0b3AxMHZw
+bi5jb20KfHx0dWJlcG9ybmNsYXNzaWMuY29tCnx8dWt1LmltCnx8dW5zZWVuLmlz
+Cnx8Y24udXB0b2Rvd24uY29tCnx8dXJhYmFuLm1lCnx8dnJzbWFzaC5jb20KfHx2
+dWx0cnlody5jb20KfHxzY2FjaGUudnp3LmNvbQp8fHNjYWNoZTEudnp3LmNvbQp8
+fHNjYWNoZTIudnp3LmNvbQp8fHNzNy52encuY29tCnx8c3NyLnRvb2xzCnx8c3Rl
+ZW1pdC5jb20KfHx0YWl3YW5qdXN0aWNlLm5ldAp8fHRpbmMtdnBuLm9yZwp8fHUx
+NS5pbmZvCnx8d2FzaGluZ3RvbnBvc3QuY29tCnx8d2Vuemhhby5jYQp8fHdoYXRz
+b253ZWliby5jb20KfHx3aXJlLmNvbQp8fHhtLmNvbQp8fHh1ZWh1YS51cwp8fHll
+cy1uZXdzLmNvbQp8fHlpZ2VuaS5jb20KfHx5b3UtZ2V0Lm9yZwp8fHp6Y2xvdWQu
+bWUKCiEtLS1EaWdpdGFsIEN1cnJlbmN5IEV4Y2hhbmdlKENSWVBUTyktLS0KfHxh
+ZXguY29tCnx8YWxsY29pbi5jb20KfHxhZGNleC5jb20KfHxiY2V4LmNhCnx8Ymli
+b3guY29tCnx8YmlnLm9uZQp8fGJpZ29uZS5jb20KfHxiaW5hbmNlLmNvbQp8fGJp
+dC16LmNvbQp8fGJpdHouYWkKfHxiaXRiYXkubmV0Cnx8Yml0Y29pbndvcmxkLmNv
+bQp8fGJpdGZpbmV4LmNvbQp8fGJpdGh1bWIuY29tCnx8Yml0bWV4LmNvbQp8fGJu
+YnN0YXRpYy5jb20KfHxidGM5OC5jb20KfHxidGNiYW5rLmJhbmsKfHxidGN0cmFk
+ZS5pbQp8fGJ5Yml0LmNvbQp8fGMyY3guY29tCnx8Y2hhb2V4LmNvbQp8fGNvYmlu
+aG9vZC5jb20KfHxjb2luYmFzZS5jb20KfHxjb2luYmVuZS5jb20KfHxjb2luZXgu
+Y29tCiEtLXxodHRwczovL3d3dy5jb2luZXhjaGFuZ2UuaW8vCnx8Y29pbmdlY2tv
+LmNvbQp8fGNvaW5naS5jb20KfHxjb2lubWFya2V0Y2FwLmNvbQp8fGNvaW5yYWls
+LmNvLmtyCnx8Y29pbnRpZ2VyLmNvbQp8fGNvaW50b2JlLmNvbQp8fGNvaW51dC5j
+b20KfHxkaXNjb2lucy5jb20KfHxkcmFnb25leC5pbwp8fGVidGNiYW5rLmNvbQp8
+fGV0aGVyZGVsdGEuY29tCnx8ZXRoZXJtaW5lLm9yZwp8fGV0aGVyc2Nhbi5pbwp8
+fGV4bW8uY29tCnx8ZXhyYXRlcy5tZQp8fGYycG9vbC5jb20KfHxmYXRidGMuY29t
+Cnx8ZnR4LmNvbQp8fGdhdGUuaW8KfHxnYXRlY29pbi5jb20KfHxoYmcuY29tCnx8
+aGl0YnRjLmNvbQp8fGhvdGNvaW4uY29tCnx8aHVvYmkuY28KfHxodW9iaS5jb20K
+fHxodW9iaS5tZQohLS18fGh1b2JpLmxpCnx8aHVvYmkucHJvCnx8aHVvYmkuc2MK
+fHxodW9iaXByby5jb20KfHxieC5pbi50aAp8fGpleC5jb20KfHxrZXguY29tCnx8
+a3Jha2VuLmNvbQp8fGtzcGNvaW4uY29tCnx8a3Vjb2luLmNvbQp8fGxiYW5rLmlu
+Zm8KfHxsaXF1aWRpdHl0cC5jb20KfHxsaXZlY29pbi5uZXQKfHxsb2NhbGJpdGNv
+aW5zLmNvbQp8fG1lcmNhdG94LmNvbQp8fG9hbmRhLmNvbQp8fG9ieXRlLm9yZwp8
+fG9leC5jb20KfHxva2V4LmNvbQp8fG9reC5jb20KfHxvcGVuc2VhLmlvCnx8b3Rj
+YnRjLmNvbQp8fHBheGZ1bC5jb20KfHxwb29saW4uY29tCnx8c2ltcGxlc3dhcC5p
+bwp8fHNvbHYuZmluYW5jZQp8fHRvcGJ0Yy5jb20KfHx0cm9uc2Nhbi5vcmcKfHx4
+YnRjZS5jb20KfHx5b2JpdC5uZXQKfHx6Yi5jb20KCiEtLS0tLS0tLS0tLS0tLS0t
+RnJhdWRzICYgU2NhbXMtLS0tLS0tLS0tLS0tLS0tLQohIS0tLUNvbnRlbnQgRmFy
+bShmYWtlIDUwMCBlcnJvciktLS0KfHxyZWFkMDEuY29tCnx8a2tuZXdzLmNjCgpj
+aGluYS1tbW0uanAubmV0Ci5sc3hzenpnLmNvbQouY2hpbmEtbW1tLm5ldAp8fGNo
+aW5hLW1tbS5uZXQKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS1Hcm91cHMtLS0tLS0t
+LS0tLS0tLS0tLS0tLQohIS0tLU1hc3RlcmRvbi0tLQp8fGJnbWUubWUKfHxvM28u
+Y2EKfHxnbzUuZGV2Cnx8bWUubnMuY2kKfHxtb3Jlc2NpLnNhbGUKfHxzb2NpYWwu
+ZWR1LmNpCnx8bXN0ZG4uc29jaWFsCnx8ZG91Y2hpLnNwYWNlCnx8c2xhc2hpbmUu
+b25sCnx8c29jaWFsLmRhdGFsYWJvdXIuY29tCnx8bWFzdG9kb24ub25saW5lCgoh
+IS0tLUFmcmFpZCBGcmVlRE5TLS0tCi5hbGxvd2VkLm9yZwoubm93LmltCgohIS0t
+LUFtYXpvbi0tLQp8fHBheW1lbnRzLWpwLmFtYXpvbi5jb20KfHxhbWF6b24uY28u
+anAKfHxzMy1hcC0qLmFtYXpvbmF3cy5jb20KfHxzMy5ldS1jZW50cmFsLTEuYW1h
+em9uYXdzLmNvbQp8fHMzLWV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tCnx8czMu
+dXMtZWFzdC0xLmFtYXpvbmF3cy5jb20KfHxzMy1hcC1ub3J0aGVhc3QtMi5hbWF6
+b25hd3MuY29tCnx8czMuYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbQp8fHMz
+LWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20KfHxzMy1hcC1zb3V0aGVhc3Qt
+MS5hbWF6b25hd3MuY29tCnx8czMtYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNv
+bQoKISEtLS1BT0wtLS0KdmlkZW8uYW9sLmNhL3ZpZGVvLWRldGFpbAp2aWRlby5h
+b2wuY28udWsvdmlkZW8tZGV0YWlsCnZpZGVvLmFvbC5jb20KfHx2aWRlby5hb2wu
+Y29tCnx8c2VhcmNoLmFvbC5jb20Kd3d3LmFvbG5ld3MuY29tCgohIS0tLUF2TW9v
+LS0tCi5hdm1vLnB3CiEtLXxodHRwOi8vYXZtby5wdwouYXZtb28uY29tCnxodHRw
+Oi8vYXZtb28uY29tCi5hdm1vby5uZXQKfGh0dHA6Ly9hdm1vby5uZXQKfHxhdm1v
+by5wdwouamF2bW9vLnh5egp8aHR0cDovL2phdm1vby54eXoKLmphdnRhZy5jb20K
+fGh0dHA6Ly9qYXZ0YWcuY29tCi5qYXZ6b28uY29tCnxodHRwOi8vamF2em9vLmNv
+bQoudGVsbG1lLnB3CgohIS0tLUJCQy0tLQohLS0uYmJjLmNvLnVrL2Jsb2dzCiEt
+LS5iYmMuY28udWsvY2hpbmVzZQohLS0uYmJjLmNvLnVrL25ld3Mvd29ybGQtYXNp
+YS1jaGluYQohLS0uYmJjLmNvLnVrL3R2CiEtLS5iYmMuY28udWsvemhvbmd3ZW4K
+IS0tLmJiYy5jb20vdWtjaGluYQohLS0uYmJjLmNvbS96aG9uZ3dlbgohLS0uYmJj
+LmNvbSUyRnpob25nd2VuCiEtLW5ld3MuYmJjLmNvLnVrL29udGhpc2RheSpuZXdz
+aWRfMjQ5NjAwMC8yNDk2Mjc3CiEtLW5ld3Nmb3J1bXMuYmJjLmNvLnVrCi5iYmMu
+Y29tCnx8YmJjLmNvbQouYmJjLmNvLnVrCnx8YmJjLmNvLnVrCnx8YmJjaS5jby51
+awouYmJjY2hpbmVzZS5jb20KfHxiYmNjaGluZXNlLmNvbQp8aHR0cDovL2JiYy5p
+bgoKISEtLS1CbG9vbWJlcmctLS0KLmJsb29tYmVyZy5jbgp8fGJsb29tYmVyZy5j
+bgouYmxvb21iZXJnLmNvbQp8fGJsb29tYmVyZy5jb20KYmxvb21iZXJnLmRlCnx8
+Ymxvb21iZXJnLmRlCnx8Ymxvb21iZXJndmlldy5jb20KLmJ1c2luZXNzd2Vlay5j
+b20KCiEhLS0tQ2hhbmdlSVAtLS0KLjFkdW1iLmNvbQouMjV1LmNvbQouMndha3ku
+Y29tCi4zLWEubmV0Ci40ZHEuY29tCi40bXlkb21haW4uY29tCi40cHUuY29tCi5h
+Y21ldG95LmNvbQouYWxtb3N0bXkuY29tCi5hbWVyaWNhbnVuZmluaXNoZWQuY29t
+Ci5hdXRob3JpemVkZG5zLm5ldAouYXV0aG9yaXplZGRucy5vcmcKLmJpZ21vbmV5
+LmJpegouY2hhbmdlaXAubmFtZQouY2hhbmdlaXAubmV0Ci5jaGFuZ2VpcC5vcmcK
+LmNsZWFuc2l0ZS5iaXoKLmNsZWFuc2l0ZS5pbmZvCi5jbGVhbnNpdGUudXMKLmNv
+bXByZXNzLnRvCi5kZG5zLmluZm8KLmRkbnMubWUudWsKLmRkbnMubW9iaQouZGRu
+cy5tcwouZGRucy5uYW1lCi5kZG5zLnVzCi5kbnMtZG5zLmNvbQouZG5zLXN0dWZm
+LmNvbQouZG5zMDQuY29tCi5kbnMwNS5jb20KLmRuczEudXMKLmRuczIudXMKLmRu
+c2V0LmNvbQouZG5zcmQuY29tCi5kc210cC5jb20KLmR1bWIxLmNvbQouZHluYW1p
+Yy1kbnMubmV0Ci5keW5hbWljZG5zLmJpegouZHluYW1pY2Rucy5jby51awouZHlu
+YW1pY2Rucy5tZS51awouZHluYW1pY2Rucy5vcmcudWsKLmR5bmRucy5wcm8KLmR5
+bnNzbC5jb20KLmVwYWMudG8KLmVzbXRwLmJpegouZXp1YS5jb20KLmZhcXNlcnYu
+Y29tCi5mYXJ0aXQuY29tCi5mcmVlZGRucy5jb20KLmZyZWV0Y3AuY29tCi5mcmVl
+d3d3LmluZm8KLmZ0cDEuYml6Ci5mdHBzZXJ2ZXIuYml6Ci5nZXR0cmlhbHMuY29t
+Ci5nb3QtZ2FtZS5vcmcKLmdyOGRvbWFpbi5iaXoKLmdyOG5hbWUuYml6Ci5odHRw
+czQ0My5uZXQKLmh0dHBzNDQzLm9yZwouaWt3Yi5jb20KLmluc3RhbnRocS5jb20K
+Lmlvd255b3VyLm9yZwouaXNhc2VjcmV0LmNvbQouaXRlbWRiLmNvbQouaXRzYW9s
+LmNvbQouamV0b3MuY29tCi5qa3ViLmNvbQouanVuZ2xlaGVhcnQuY29tCi5qdXN0
+ZGllZC5jb20KLmxmbGluay5jb20KLmxmbGlua3VwLmNvbQoubGZsaW5rdXAubmV0
+Ci5sZmxpbmt1cC5vcmcKLmxvbmdtdXNpYy5jb20KLm1lZm91bmQuY29tCi5tb25l
+eWhvbWUuYml6Ci5tcmJhc2ljLmNvbQoubXJib251cy5jb20KLm1yZmFjZS5jb20K
+Lm1yc2xvdmUuY29tCi5teTAzLmNvbQoubXlkYWQuaW5mbwoubXlkZG5zLmNvbQou
+bXlmdHAuaW5mbwoubXlsZnR2LmNvbQoubXltb20uaW5mbwoubXluZXRhdi5uZXQK
+Lm15bmV0YXYub3JnCi5teW51bWJlci5vcmcKLm15cGljdHVyZS5pbmZvCi5teXBv
+cDMubmV0Ci5teXBvcDMub3JnCi5teXNlY29uZGFyeWRucy5jb20KLm15d3d3LmJp
+egoubXl6LmluZm8KLm5zMDEuYml6Ci5uczAxLmluZm8KLm5zMDEudXMKLm5zMDIu
+Yml6Ci5uczAyLmluZm8KLm5zMDIudXMKLm5zMS5uYW1lCi5uczIubmFtZQoubnMz
+Lm5hbWUKLm9jcnkuY29tCi5vbmVkdW1iLmNvbQoub25teXBjLmJpegoub25teXBj
+LmluZm8KLm9ubXlwYy5uZXQKLm9ubXlwYy5vcmcKLm9yZ2FuaWNjcmFwLmNvbQou
+b3R6by5jb20KLm91cmhvYmJ5LmNvbQoucGNhbnl3aGVyZS5uZXQKLnBvcnQyNS5i
+aXoKLnByb3h5ZG5zLmNvbQoucWhpZ2guY29tCi5xcG9lLmNvbQoucmViYXRlc3J1
+bGUubmV0Ci5zZWxsY2xhc3NpY3MuY29tCi5zZW5kc210cC5jb20KLnNlcnZldXNl
+ci5jb20KLnNlcnZldXNlcnMuY29tCi5zZXhpZHVkZS5jb20KLnNxdWlybHkuaW5m
+bwouc3NsNDQzLm9yZwoudG9oLmluZm8KLnRveXRoaWV2ZXMuY29tCi50cmlja2lw
+Lm5ldAoudml6dmF6LmNvbQoud2lrYWJhLmNvbQoud3d3MS5iaXoKLnd3d2hvc3Qu
+Yml6CkBAfGh0dHA6Ly94eC53d3dob3N0LmJpegoueDI0aHIuY29tCi54eHV6LmNv
+bQoueHh4eS5pbmZvCi55Z3RvLmNvbQoueW91ZG9udGNhcmUuY29tCi55b3VydHJh
+cC5jb20KLnp5bnMuY29tCi56enV4LmNvbQoKISEtLUNsb3VkZmxhcmUtLQohLS18
+fHBhZ2VzLmRldgp8fHdvcmtlcnMuZGV2Cnx8b25lLm9uZS5vbmUub25lCnx8Y2xv
+dWRmbGFyZS1kbnMuY29tCgohIS0tLUR0RE5TLS0tCiEjIyNodHRwczovL3d3dy5k
+dGRucy5jb20vZHRzaXRlL2ZhcQouM2QtZ2FtZS5jb20KLjRpcmMuY29tCi5iMG5l
+LmNvbQouY2hhdG5vb2suY29tCi5kYXJrdGVjaC5vcmcKLmRlYWZ0b25lLmNvbQou
+ZWZmZXJzLmNvbQouZXRvd25zLm5ldAouZXRvd25zLm9yZwouZmxuZXQub3JnCi5n
+b3RnZWVrcy5jb20KLnNjaWVyb24uY29tCi5zbHlpcC5jb20KLnNseWlwLm5ldAou
+c3Vyb290LmNvbQoKISEtLS1EeW5ETlMtLS0KISMjI2h0dHBzOi8vaGVscC5keW4u
+Y29tL2xpc3Qtb2YtZHluLWRucy1wcm8tcmVtb3RlLWFjY2Vzcy1kb21haW4tbmFt
+ZXMvCi5ibG9nZG5zLm9yZwouZHluZG5zLm9yZwouZHluZG5zLWlwLmNvbQouZHlu
+ZG5zLXBpY3MuY29tCi5mcm9tLXNkLmNvbQouZnJvbS1wci5jb20KLmlzLWEtaHVu
+dGVyLmNvbQoKISEtLS1EeW51LS0tCi5keW51LmNvbQp8fGR5bnUuY29tCi5keW51
+Lm5ldAouZnJlZWRkbnMub3JnCgohIS0tLUZhY2Vib29rLS0tCnx8YWNjb3VudGtp
+dC5jb20KfHxjZG5pbnN0YWdyYW0uY29tCnx8ZjguY29tCi5mYWNlYm9vay5jb20K
+fHxmYWNlYm9vay5jb20KIS0tL15odHRwcz86XC9cL1teXC9dK2ZhY2Vib29rXC5j
+b20vCkBAfHx2Ni5mYWNlYm9vay5jb20KfHxmYWNlYm9vay5kZQp8fGZhY2Vib29r
+LmRlc2lnbgp8fGNvbm5lY3QuZmFjZWJvb2submV0Cnx8ZmFjZWJvb2suaHUKfHxm
+YWNlYm9vay5pbgp8fGZhY2Vib29rLm5sCnx8ZmFjZWJvb2suc2UKfHxmYWNlYm9v
+a21haWwuY29tCnx8ZmIuY29tCnx8ZmIubWUKfHxmYi53YXRjaAp8fGZiY2RuLm5l
+dAp8fGZic2J4LmNvbQp8fGZiYWRkaW5zLmNvbQp8fGZid29ya21haWwuY29tCi5p
+bnN0YWdyYW0uY29tCnx8aW5zdGFncmFtLmNvbQp8fG0ubWUKfHxtZXNzZW5nZXIu
+Y29tCnx8bWV0YS5jb20KfHxvY3VsdXMuY29tCnx8b2N1bHVzY2RuLmNvbQp8fHJv
+Y2tzZGIub3JnCkBAfHxpcDYuc3RhdGljLnNsLXJldmVyc2UuY29tCnx8cGFyc2Uu
+Y29tCnx8dGhlZmFjZWJvb2suY29tCnx8dGhyZWFkcy5uZXQKfHx3aGF0c2FwcC5j
+b20KfHx3aGF0c2FwcC5uZXQKCiEhLS0tRmFuZG9tLS0tCnx8YXVudG9sb2d5LmZh
+bmRvbS5jb20KfHxob25na29uZy5mYW5kb20uY29tCgohIS0tLUZUQ2hpbmVzZS0t
+LQouZnRjaGluZXNlLmNvbQp8fGZ0Y2hpbmVzZS5jb20KCiEhLS0tR29vZ2xlLS0t
+Cnx8Z2xlCnx8Z29vZ2xlCnx8ZG9jLm5ldwp8fGZvcm0ubmV3Cnx8Zm9ybXMubmV3
+Cnx8c2hlZXQubmV3Cnx8c2hlZXRzLm5ldwp8fHNwcmVhZHNoZWV0Lm5ldwp8fHNp
+dGUubmV3Cnx8c2l0ZXMubmV3Cnx8d2Vic2l0ZS5uZXcKfHxzbGlkZXMubmV3Cnx8
+ZGVjay5uZXcKfHxwcmVzZW50YXRpb24ubmV3Cnx8Z29vZ2xlYXBpcy5jb20KISMj
+I2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc3VwcG9ydGVkX2RvbWFpbnMjIyMKIS4u
+LkdGV0xpc3QgZG9lc24ndCBpbnRlbmQgdG8gc3VwcG9ydCB0eXBvc3F1YXR0aW5n
+Li4uCnx8MWUxMDAubmV0Cnx8NDY2NDUzLmNvbQp8fGFiYy54eXoKfHxhZG1vYi5j
+b20KfHxhZHNlbnNlLmNvbQp8fGFkdmVydGlzZXJjb21tdW5pdHkuY29tCnx8YWdv
+b2dsZWFkYXkuY29tCnx8YW1wcHJvamVjdC5vcmcKQEB8aHR0cHM6Ly93d3cuYW1w
+cHJvamVjdC5vcmcKQEB8aHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcKfHxhbmRy
+b2lkLmNvbQpAQHx8Y2kuYW5kcm9pZC5jb20KfHxhbmRyb2lkaWZ5LmNvbQp8fGFu
+ZHJvaWR0di5jb20KfHxhcGkuYWkKLmFwcHNwb3QuY29tCnx8YXBwc3BvdC5jb20K
+fHxhdXRvZHJhdy5jb20KfHxibG9nYmxvZy5jb20KYmxvZ3Nwb3QuY29tCi9eaHR0
+cHM/OlwvXC9bXlwvXStibG9nc3BvdFwuKC4qKS8KLmJsb2dzcG90LmhrCi5ibG9n
+c3BvdC5qcAouYmxvZ3Nwb3QudHcKfHxidXNpbmVzcy5wYWdlCiEtLXx8Y2FwaXRh
+bGcuY29tCnx8Y2VydGlmaWNhdGUtdHJhbnNwYXJlbmN5Lm9yZwp8fGNocm9tZS5j
+b20KfHxjaHJvbWVjYXN0LmNvbQp8fGNocm9tZWV4cGVyaW1lbnRzLmNvbQp8fGNo
+cm9tZXN0YXR1cy5jb20KfHxjaHJvbWl1bS5vcmcKfHxjbG91ZGZ1bmN0aW9ucy5u
+ZXQKfHxjcmJ1Zy5jb20KfHxjcmVhdGl2ZWxhYjUuY29tCnx8Y3JyZXYuY29tCnx8
+ZGF0YS12b2NhYnVsYXJ5Lm9yZwp8fGRlYnVnLmNvbQp8fGRlZXBtaW5kLmNvbQp8
+fGRlamEuY29tCnx8ZGlnaXNmZXJhLmNvbQp8fGRvY2tlci5jb20KfHxkb2NzLm5l
+dwp8fGR1Y2suY29tCnx8ZmVlZGJ1cm5lci5jb20KfHxmaXJlYmFzZWlvLmNvbQp8
+fGcuY28KfHxnY3IuaW8KfHxnZXQuYXBwCnx8Z2V0LmRldgp8fGdldC5ob3cKfHxn
+ZXQucGFnZQp8fGdldG1kbC5pbwp8fGdldG91dGxpbmUub3JnCnx8Z2dwaHQuY29t
+Cnx8Z21haWwuY29tCnx8Z21vZHVsZXMuY29tCnx8Z29kb2Mub3JnCnx8Z29sYW5n
+Lm9yZwp8fGdvby5nbAp8fGdvby5nbGUKLmdvb2dsZS5hZQouZ29vZ2xlLmFzCi5n
+b29nbGUuYW0KLmdvb2dsZS5hdAouZ29vZ2xlLmF6Ci5nb29nbGUuYmEKLmdvb2ds
+ZS5iZQouZ29vZ2xlLmJnCi5nb29nbGUuY2EKLmdvb2dsZS5jZAouZ29vZ2xlLmNp
+Ci5nb29nbGUuY28uaWQKLmdvb2dsZS5jby5qcAouZ29vZ2xlLmNvLmtyCi5nb29n
+bGUuY28ubWEKLmdvb2dsZS5jby51awouZ29vZ2xlLmNvbQouZ29vZ2xlLmRlCnx8
+Z29vZ2xlLmRldgouZ29vZ2xlLmRqCi5nb29nbGUuZGsKLmdvb2dsZS5lcwouZ29v
+Z2xlLmZpCi5nb29nbGUuZm0KLmdvb2dsZS5mcgouZ29vZ2xlLmdnCi5nb29nbGUu
+Z2wKLmdvb2dsZS5ncgouZ29vZ2xlLmllCi5nb29nbGUuaXMKLmdvb2dsZS5pdAou
+Z29vZ2xlLmpvCi5nb29nbGUua3oKLmdvb2dsZS5sdgouZ29vZ2xlLm1uCi5nb29n
+bGUubXMKLmdvb2dsZS5ubAouZ29vZ2xlLm51Ci5nb29nbGUubm8KLmdvb2dsZS5y
+bwouZ29vZ2xlLnJ1Ci5nb29nbGUucncKLmdvb2dsZS5zYwouZ29vZ2xlLnNoCi5n
+b29nbGUuc2sKLmdvb2dsZS5zbQouZ29vZ2xlLnNuCi5nb29nbGUudGsKLmdvb2ds
+ZS50bQouZ29vZ2xlLnRvCi5nb29nbGUudHQKLmdvb2dsZS52dQouZ29vZ2xlLndz
+Ci9eaHR0cHM/OlwvXC8oW15cL10rXC4pKmdvb2dsZVwuKGFjfGFkfGFlfGFmfGFp
+fGFsfGFtfGFzfGF0fGF6fGJhfGJlfGJmfGJnfGJpfGJqfGJzfGJ0fGJ5fGNhfGNh
+dHxjZHxjZnxjZ3xjaHxjaXxjbHxjbXxjby5hb3xjby5id3xjby5ja3xjby5jcnxj
+by5pZHxjby5pbHxjby5pbnxjby5qcHxjby5rZXxjby5rcnxjby5sc3xjby5tYXxj
+b218Y29tLmFmfGNvbS5hZ3xjb20uYWl8Y29tLmFyfGNvbS5hdXxjb20uYmR8Y29t
+LmJofGNvbS5ibnxjb20uYm98Y29tLmJyfGNvbS5ienxjb20uY298Y29tLmN1fGNv
+bS5jeXxjb20uZG98Y29tLmVjfGNvbS5lZ3xjb20uZXR8Y29tLmZqfGNvbS5naHxj
+b20uZ2l8Y29tLmd0fGNvbS5oa3xjb20uam18Y29tLmtofGNvbS5rd3xjb20ubGJ8
+Y29tLmx5fGNvbS5tbXxjb20ubXR8Y29tLm14fGNvbS5teXxjb20ubmF8Y29tLm5m
+fGNvbS5uZ3xjb20ubml8Y29tLm5wfGNvbS5vbXxjb20ucGF8Y29tLnBlfGNvbS5w
+Z3xjb20ucGh8Y29tLnBrfGNvbS5wcnxjb20ucHl8Y29tLnFhfGNvbS5zYXxjb20u
+c2J8Y29tLnNnfGNvbS5zbHxjb20uc3Z8Y29tLnRqfGNvbS50cnxjb20udHd8Y29t
+LnVhfGNvbS51eXxjb20udmN8Y29tLnZufGNvLm16fGNvLm56fGNvLnRofGNvLnR6
+fGNvLnVnfGNvLnVrfGNvLnV6fGNvLnZlfGNvLnZpfGNvLnphfGNvLnptfGNvLnp3
+fGN2fGN6fGRlfGRqfGRrfGRtfGR6fGVlfGVzfGV1fGZpfGZtfGZyfGdhfGdlfGdn
+fGdsfGdtfGdwfGdyfGd5fGhrfGhufGhyfGh0fGh1fGllfGltfGlxfGlzfGl0fGl0
+LmFvfGplfGpvfGtnfGtpfGt6fGxhfGxpfGxrfGx0fGx1fGx2fG1kfG1lfG1nfG1r
+fG1sfG1ufG1zfG11fG12fG13fG14fG5lfG5sfG5vfG5yfG51fG9yZ3xwbHxwbnxw
+c3xwdHxyb3xyc3xydXxyd3xzY3xzZXxzaHxzaXxza3xzbXxzbnxzb3xzcnxzdHx0
+ZHx0Z3x0a3x0bHx0bXx0bnx0b3x0dHx1c3x2Z3x2bnx2dXx3cylcLy4qLwohLS18
+fGdvb2dsZS1hbmFseXRpY3MuY29tCiEtLXx8Z29vZ2xlYWRzZXJ2aWNlcy5jb20K
+fHxnb29nbGVhcHBzLmNvbQp8fGdvb2dsZWFydHByb2plY3QuY29tCnx8Z29vZ2xl
+YmxvZy5jb20KfHxnb29nbGVib3QuY29tCiEtLXx8Z29vZ2xlY2FwaXRhbC5jb20K
+fHxnb29nbGVjaGluYXdlYm1hc3Rlci5jb20KfHxnb29nbGVjb2RlLmNvbQp8fGdv
+b2dsZWNvbW1lcmNlLmNvbQp8fGdvb2dsZWRvbWFpbnMuY29tCnx8Z29vZ2xlYXJ0
+aC5jb20KfHxnb29nbGVlYXJ0aC5jb20KfHxnb29nbGVkcml2ZS5jb20KfHxnb29n
+bGVmaWJlci5uZXQKfHxnb29nbGVncm91cHMuY29tCnx8Z29vZ2xlaG9zdGVkLmNv
+bQp8fGdvb2dsZWlkZWFzLmNvbQp8fGdvb2dsZWluc2lkZXNlYXJjaC5jb20KfHxn
+b29nbGVtYWlsLmNvbQp8fGdvb2dsZW1hc2h1cHMuY29tCnx8Z29vZ2xlcGFnZWNy
+ZWF0b3IuY29tCnx8Z29vZ2xlcGxheS5jb20KfHxnb29nbGVwbHVzLmNvbQp8fGdv
+b2dsZXNjaG9sYXIuY29tCnx8Z29vZ2xlc291cmNlLmNvbQohLS18fGdvb2dsZXN5
+bmRpY2F0aW9uLmNvbQohLS18fGdvb2dsZXRhZ21hbmFnZXIuY29tCiEtLXx8Z29v
+Z2xldGFnc2VydmljZXMuY29tCnx8Z29vZ2xldXNlcmNvbnRlbnQuY29tCi5nb29n
+bGV2aWRlby5jb20KfHxnb29nbGV2aWRlby5jb20KfHxnb29nbGV3ZWJsaWdodC5j
+b20KfHxnb29nbGV6aXAubmV0Cnx8Z3N0YXRpYy5jb20KIS0tfHxndi5jb20KfHxn
+dnQxLmNvbQpAQHx8cmVkaXJlY3Rvci5ndnQxLmNvbQp8fGd2dDMuY29tCnx8Z3d0
+cHJvamVjdC5vcmcKfHxodG1sNXJvY2tzLmNvbQp8fGlhbS5zb3kKfHxpZ29vZ2xl
+LmNvbQp8fGl0YXNvZnR3YXJlLmNvbQp8fGxpa2UuY29tCnx8bWFkZXdpdGhjb2Rl
+LmNvbQp8fG1hdGVyaWFsLmlvCnx8b24yLmNvbQp8fHBhbm9yYW1pby5jb20KfHxw
+aWNhc2F3ZWIuY29tCnx8cGtpLmdvb2cKfHxwbHVzLmNvZGVzCnx8cG9seW1lci1w
+cm9qZWN0Lm9yZwp8fHF1ZXN0dmlzdWFsLmNvbQp8fGFkbWluLnJlY2FwdGNoYS5u
+ZXQKfHxhcGkucmVjYXB0Y2hhLm5ldAp8fGFwaS1zZWN1cmUucmVjYXB0Y2hhLm5l
+dAp8fGFwaS12ZXJpZnkucmVjYXB0Y2hhLm5ldAp8fHJlZGhvdGxhYnMuY29tCnx8
+c2F2ZXRoZWRhdGUuZm9vCnx8c2NoZW1hLm9yZwp8fHNoYXR0ZXJlZC5pbwp8aHR0
+cDovL3NpcG1sNS5vcmcvCnx8c2hlZXRzLm5ldwp8fHNsaWRlcy5uZXcKfHxzbmFw
+c2VlZC5jb20KfHxzeW5lcmd5c2UuY29tCnx8dGVhY2hwYXJlbnRzdGVjaC5vcmcK
+fHx0ZW5zb3JmbG93Lm9yZwp8fHRmaHViLmRldgp8fHRoaW5rd2l0aGdvb2dsZS5j
+b20KfHx0aWx0YnJ1c2guY29tCnx8dHJhbnNsYXRlLmdvb2cKfHx1YTV2LmNvbQp8
+fHVyY2hpbi5jb20KfHx1c2VyY29udGVudC5nb29nCiEtLXx8d3d3Lmdvb2dsZQp8
+fHdhdmVwcm90b2NvbC5vcmcKfHx3YXltby5jb20KfHx3ZWIuZGV2Cnx8d2VibXBy
+b2plY3Qub3JnCnx8d2VicGtnY2FjaGUuY29tCnx8d2VicnRjLm9yZwp8fHdoYXRi
+cm93c2VyLm9yZwp8fHdoYXRzLm5ldwp8fHdpZGV2aW5lLmNvbQp8fHdpdGhnb29n
+bGUuY29tCnx8d2l0aHlvdXR1YmUuY29tCnx8eC5jb21wYW55Cnx8eG4tLW5nc3Ry
+LWxyYThqLmNvbQp8fHlvdXR1LmJlCi55b3V0dWJlLmNvbQp8fHlvdXR1YmUuY29t
+Cnx8eW91dHViZS1ub2Nvb2tpZS5jb20KfHx5b3V0dWJlZWR1Y2F0aW9uLmNvbQp8
+fHlvdXR1YmVnYW1pbmcuY29tCnx8eW91dHViZWtpZHMuY29tCnx8eXQuYmUKfHx5
+dGltZy5jb20KfHx6eW5hbWljcy5jb20KCiEhLS0tS2lja0FTUy0tLQohLS1PRkZJ
+Q0lBTCBVUkwgbGlzdCBhdDogaHR0cHM6Ly9rYXN0YXR1cy5jb20KCiEhLS0tTWlj
+cm9zb2Z0LS0tCiEtLUBAfHxiaW5nLmNvbQp8fGNvcGlsb3QubWljcm9zb2Z0LmNv
+bQoKISEtLS1OYXVnaHR5QW1lcmljYS0tLQp8fG5hdWdodHlhbWVyaWNhLmNvbQoK
+ISEtLS1OWVRpbWVzLS0tCiEtLXx8ZDFmMWVyeWlxeWpzMHIuY2xvdWRmcm9udC5u
+ZXQKIS0tfHxkM2xhcjA5eGJ3bHNnZS5jbG91ZGZyb250Lm5ldAohLS18fGQzcTFx
+ajlqenN1OG53LmNsb3VkZnJvbnQubmV0CiEtLXx8ZGM4eGwwbmR6bjJjYi5jbG91
+ZGZyb250Lm5ldAohLS18fGExLm55dC5jb20KIS0tfHxpbnQubnl0LmNvbQohLS18
+fHMxLm55dC5jb20Kc3RhdGljMDEubnl0LmNvbQohLS18fHN0YXRpYzAxLm55dC5j
+b20KIS0tfHx0eXBlZmFjZS5ueXQuY29tCnx8bnl0LmNvbQpueXRjaGluYS5jb20K
+bnl0Y24ubWUKfHxueXRjbi5tZQp8fG55dGNvLmNvbQp8aHR0cDovL255dGkubXMv
+Ci5ueXRpbWVzLmNvbQp8fG55dGltZXMuY29tCnx8bnl0aW1nLmNvbQpjbi5ueXRz
+dHlsZS5jb20KfHxueXRzdHlsZS5jb20KCiEhLS0tU3RlYW0tLS0KLnN0ZWFtY29t
+bXVuaXR5LmNvbQp8fHN0ZWFtY29tbXVuaXR5LmNvbQohLS1zdGVhbWNvbW11bml0
+eS5jb20vcHJvZmlsZXMvNzY1NjExOTgwNjI3NzE2MDkKIS0tc3RlYW1jb21tdW5p
+dHkuY29tL2dyb3Vwcy9MaWJldFRpYmV0CiEtLXN0ZWFtY29tbXVuaXR5LmNvbS9n
+cm91cHMvemhvbmdnb25nCiEtLXN0ZWFtY29tbXVuaXR5LmNvbS9pZC9DSlRfSmFj
+a3Rvbgp8fHN0b3JlLnN0ZWFtcG93ZXJlZC5jb20KfHxhcGkuc3RlYW1wb3dlcmVk
+LmNvbQp8fHN0ZWFtc3RhdGljLmNvbQohIS0tLVRlbGVncmFtLS0tCiEhIS0tLURv
+bWFpbi0tLQp8fHR4Lm1lCnx8dGcuZGV2Cnx8dGVsZWdhLm9uZQp8fGNkbi10ZWxl
+Z3JhbS5vcmcKfHxjb21tZW50cy5hcHAKfHxncmFwaC5vcmcKfHxsZWdyYS5waAp8
+fHF1aXouZGlyZWN0b3J5Cnx8dC5tZQp8fHVwZGF0ZXMudGRlc2t0b3AuY29tCnx8
+dGVsZWdyYW0uZG9nCnx8dGVsZWdyYW0ubWUKfHx0ZWxlZ3JhbS5vcmcKfHx0ZWxl
+Z3JhbS5zcGFjZQp8fHRlbGVncmFtZG93bmxvYWQuY29tCnx8dGVsZWdyYS5waAp8
+fHRlbGVzY28ucGUKISEhLS0tSVAtLS0KCiEhLS0tVGlrdG9rLS0tCnx8dGlrdG9r
+LmNvbQp8fHRpa3Rva3YuY29tCnx8dGlrdG9rdi51cwp8fHRpa3Rva2Nkbi11cy5j
+b20KfHx0aWt0b2tjZG4uY29tCnx8dGlrdG9rY2RuLWV1LmNvbQoKISEtLS1Ud2l0
+Y2gtLS0KfHxqdHZudy5uZXQKfHx0dHZudy5uZXQKfHx0d2l0Y2gudHYKfHx0d2l0
+Y2hjZG4ubmV0CgohIS0tLVR3aXR0ZXIvWC0tLQp8fHBlcmlzY29wZS50dgoucHNj
+cC50dgp8fHBzY3AudHYKLnQuY28KfHx0LmNvCi50d2VldGRlY2suY29tCnx8dHdl
+ZXRkZWNrLmNvbQp8fHR3aW1nLmNvbQoudHdpdHBpYy5jb20KfHx0d2l0cGljLmNv
+bQoudHdpdHRlci5jb20KfHx0d2l0dGVyLmNvbQp8fHR3aXR0ZXIuanAKfHx2aW5l
+LmNvCnx8eC5jb20KCiEhLS0tVGFpd2FuLS0tCnx8bW9qLmdvdi50dwp8fGdvdi50
+YWlwZWkKLmdvdi50dwp8aHR0cHM6Ly9haXNzLmFud3MuZ292LnR3Cnx8YXJjaGl2
+ZXMuZ292LnR3Cnx8dGFjYy5jd2IuZ292LnR3Cnx8ZGF0YS5nb3YudHcKfHxleGFt
+Lmdvdi50dwp8fGV5Lmdvdi50dwp8fGZhLmdvdi50dwp8fGZkYS5nb3YudHcKfHxo
+cGEuZ292LnR3Cnx8aW1taWdyYXRpb24uZ292LnR3Cnx8aXRhaXdhbi5nb3YudHcK
+fHxqdWRpY2lhbC5nb3YudHcKfHxsaS50YWlwZWkKfHxseS5nb3YudHcKfHxtamli
+Lmdvdi50dwp8fG1vZWFpYy5nb3YudHcKfHxtb2ZhLmdvdi50dwp8fG1vbC5nb3Yu
+dHcKfHxtdmRpcy5nb3YudHcKfHxuYXQuZ292LnR3Cnx8bmhpLmdvdi50dwp8fG5w
+YS5nb3YudHcKfHxuc2MuZ292LnR3Cnx8bnRiay5nb3YudHcKfHxudGJuYS5nb3Yu
+dHcKfHxudGJ0Lmdvdi50dwp8fHBjYy5nb3YudHcKfHxzdGF0Lmdvdi50dwp8fHRh
+aXBlaS5nb3YudHcKfHx0YWl3YW5qb2JzLmdvdi50dwp8fHRoYi5nb3YudHcKfHx0
+aXBvLmdvdi50dwp8fHdkYS5nb3YudHcKCnx8dGVjby1oay5vcmcKfHx0ZWNvLW1v
+Lm9yZwoKQEB8fGFmdHlnaC5nb3YudHcKQEB8fGFpZGUuZ292LnR3CkBAfHx0cGRl
+LmFpZGUuZ292LnR3CkBAfHxhcnRlLmdvdi50dwpAQHx8Y2h1a3VhbmcuZ292LnR3
+CkBAfHxjd2IuZ292LnR3CkBAfHxjeWNhYi5nb3YudHcKQEB8fGRibnNhLmdvdi50
+dwpAQHx8ZGYuZ292LnR3CkBAfHxlYXN0Y29hc3QtbnNhLmdvdi50dwpAQHx8ZXJ2
+LW5zYS5nb3YudHcKQEB8fGdyYi5nb3YudHcKQEB8fGd5c2QubnljLmdvdi50dwpA
+QHx8aGNoY2MuZ292LnR3CkBAfHxoc2luY2h1LWNjLmdvdi50dwpAQHx8aW5lci5n
+b3YudHcKQEB8fGtsc2lvLmdvdi50dwpAQHx8a21zZWguZ292LnR3CkBAfHxsdW5n
+dGFuaHIuZ292LnR3CkBAfHxtYW9saW4tbnNhLmdvdi50dwpAQHx8bWF0c3UtbmV3
+cy5nb3YudHcKQEB8fG1hdHN1LW5zYS5nb3YudHcKQEB8fG1hdHN1Y2MuZ292LnR3
+CkBAfHxtb2UuZ292LnR3CkBAfHxuYW5rYW4uZ292LnR3CkBAfHxuY3JlZS5nb3Yu
+dHcKQEB8fGNyb21vdGMubmF0Lmdvdi50dwpAQHx8dGF4Lm5hdC5nb3YudHcKQEB8
+fG5lY29hc3QtbnNhLmdvdi50dwpAQHx8bmVyLmdvdi50dwpAQHx8bm1tYmEuZ292
+LnR3CkBAfHxubXAuZ292LnR3CkBAfHxubXZ0dGMuZ292LnR3CkBAfHxub3J0aGd1
+YW4tbnNhLmdvdi50dwp8fG5wbS5nb3YudHcKQEB8fG5zdG0uZ292LnR3CkBAfHxu
+dGRtaC5nb3YudHcKQEB8fG50bC5nb3YudHcKQEB8fG50c2VjLmdvdi50dwpAQHx8
+bnR1aC5nb3YudHcKQEB8fG52cmkuZ292LnR3CkBAfHxwZW5naHUtbnNhLmdvdi50
+dwpAQHx8cG9zdC5nb3YudHcKQEB8fHNpcmF5YS1uc2EuZ292LnR3CkBAfHxzdGR0
+aW1lLmdvdi50dwpAQHx8c3VubW9vbmxha2UuZ292LnR3CkBAfHx0YWl0dW5nLWhv
+dXNlLmdvdi50dwpAQHx8dGFveXVhbi5nb3YudHcKQEB8fHRwaGNjLmdvdi50dwpA
+QHx8dHJpbXQtbnNhLmdvdi50dwpAQHx8dmdodHBlLmdvdi50dwpAQHx8dmdoa3Mu
+Z292LnR3CkBAfHx2Z2h0Yy5nb3YudHcKQEB8fHdhbmZhbmcuZ292LnR3CkBAfHx5
+YXRzZW4uZ292LnR3CkBAfHx5ZGEuZ292LnR3CgohLS1AQHx8NHBwcGMuZ292LnR3
+CiEtLUBAfHw5MjEuZ292LnR3CiEtLUBAfHxkbXRpcC5nb3YudHcKIS0tQEB8fGV0
+cmFpbmluZy5nb3YudHcKIS0tQEB8fGdzbi1jZXJ0Lm5hdC5nb3YudHcKIS0tQEB8
+fG5pY2kubmF0Lmdvdi50dwohLS1AQHx8aGNjLmdvdi50dwohLS1AQHx8aGVuZ2No
+dWVuLmdvdi50dwohLS1AQHx8a2hjYy5nb3YudHcKIS0tQEB8fGtobXMuZ292LnR3
+CiEtLUBAfHxray5nb3YudHcKIS0tQEB8fGtsY2NhYi5nb3YudHcKIS0tQEB8fGts
+cmEuZ292LnR3CiEtLUBAfHxubWguZ292LnR3CiEtLUBAfHxubXRsLmdvdi50dwoh
+LS1AQHx8cGFicC5nb3YudHcKIS0tQEB8fHBldC5nb3YudHcKIS0tQEB8fHRjaGIu
+Z292LnR3CiEtLUBAfHx0Y3NhYy5nb3YudHcKIS0tQEB8fHRuY3NlYy5nb3YudHcK
+fHxraW5tZW4ub3JnLnR3CgohIS0tLVVTQS0tLQp8fGFtZXJpY29ycHMuZ292Cnx8
+ZG1hLm1pbAp8fGpwbC5uYXNhLmdvdgp8fHBkcy5uYXNhLmdvdgp8fHBhY29tLm1p
+bAp8fHNvYy5taWwKfHxzb2xhcnN5c3RlbS5uYXNhLmdvdgppaXBkaWdpdGFsLnVz
+ZW1iYXNzeS5nb3YKfHx1c2NnLm1pbAp8fHVzZmsubWlsCnxodHRwOi8vdGFyci51
+c3B0by5nb3YvCnx8dHNkci51c3B0by5nb3YKCiEhLS0tVjJFWC0tLQp8fHYyZXgu
+Y29tCiEtLS52MmV4LmNvbQohLS1JbmNsdWRlZCBpbiBhYm92ZSBydWxlOiBkbnMu
+djJleC5jb20KIS0tQEB8aHR0cDovL3YyZXguY29tCiEtLUBAfGh0dHA6Ly9jZG4u
+djJleC5jb20KIS0tQEB8aHR0cDovL2NuLnYyZXguY29tCiEtLUBAfGh0dHA6Ly9o
+ay52MmV4LmNvbQohLS1AQHxodHRwOi8vaS52MmV4LmNvbQohLS1AQHxodHRwOi8v
+bGF4LnYyZXguY29tCiEtLUBAfGh0dHA6Ly9uZXVlLnYyZXguY29tCiEtLUBAfGh0
+dHA6Ly9wYWdlc3BlZWQudjJleC5jb20KIS0tQEB8aHR0cDovL3N0YXRpYy52MmV4
+LmNvbQohLS1AQHxodHRwOi8vd29ya3NwYWNlLnYyZXguY29tCiEtLUBAfGh0dHA6
+Ly93d3cudjJleC5jb20KCiEhLS0tVk9BLS0tCnx8dm9hY2FtYm9kaWEuY29tCi52
+b2FjaGluZXNlYmxvZy5jb20KfHx2b2FjaGluZXNlYmxvZy5jb20KLnZvYWNhbnRv
+bmVzZS5jb20KfHx2b2FjYW50b25lc2UuY29tCnZvYWNoaW5lc2UuY29tCnx8dm9h
+Y2hpbmVzZS5jb20Kdm9hZ2QuY29tCnx8dm9haW5kb25lc2lhLmNvbQoudm9hbmV3
+cy5jb20KfHx2b2FuZXdzLmNvbQp2b2F0aWJldGFuLmNvbQp8fHZvYXRpYmV0YW4u
+Y29tCi52b2F0aWJldGFuZW5nbGlzaC5jb20KfHx2b2F0aWJldGFuZW5nbGlzaC5j
+b20KCiEhLS0tV2lraWEtLS0KfHx6aC5lY2RtLndpa2lhLmNvbQp8fGV2Y2hrLndp
+a2lhLmNvbQpmcS53aWtpYS5jb20KemgucHR0cGVkaWEud2lraWEuY29tL3dpa2kv
+JUU3JUJGJTkyJUU1JThDJTg1JUU1JUFEJTkwJUU0JUI5JThCJUU0JUJBJTgyCmNu
+LnVuY3ljbG9wZWRpYS53aWtpYS5jb20KemgudW5jeWNsb3BlZGlhLndpa2lhLmNv
+bQoKIS0tLS0tLS0tLS0tLS1XaWtpcGVkaWEgUmVsYXRlZC0tLS0tLS0tLS0tLS0K
+ISFFbWVyZ2VuY3kgbmVlZCBvbmx5KElQL1BvcnQgYmxvY2sgdXNhZ2UpISEKIS0t
+LS0tLTAtLS0tLS0KfHxtZWRpYXdpa2kub3JnCiEtLS0tLS0xLS0tLS0tCnx8d2lr
+aWRhdGEub3JnCiEtLS0tLS0yLS0tLS0tCnx8d2lraW1lZGlhLm9yZwohLS0tLS0t
+My0tLS0tLQp8fHdpa2lib29rcy5vcmcKIS0tLS0tLTQtLS0tLS0KfHx3aWtpdmVy
+c2l0eS5vcmcKIS0tLS0tLTUtLS0tLS0KfHx3aWtpc291cmNlLm9yZwohLS0tLS0t
+Ni0tLS0tLQp8fHpoLndpa2lxdW90ZS5vcmcKIS0tLS0tLTctLS0tLS0KfHx3aWtp
+bmV3cy5vcmcKIS0tLS0tLTgtLS0tLS0KfHx3aWtpdm95YWdlLm9yZwohLS0tLS0t
+OS0tLS0tLQp8fHdpa3Rpb25hcnkub3JnCiEtLS0tTWFpbi0tLS0tCnx8d2lraXBl
+ZGlhLm9yZwp8fHdtZnVzZXJjb250ZW50Lm9yZwoKISEtLS1ZYWhvby0tLQp8fHNo
+b3BwaW5nLnlhaG9vLmNvLmpwCnx8YXVjdGlvbnMueWFob28uY28uanAKfHxzZWFy
+Y2gueWFob28uY28uanAKfHx5YWhvby5jb20udHcKfHx5YWhvby5jb20uaGsKfHx5
+YWhvby5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS1OdW1lcmljcy0tLS0tLS0tLS0t
+LS0tLS0tLS0tLQp8fGlwZnMuNGV2ZXJsYW5kLmlvCnx8OTFkYXNhaS5jb20KfHxp
+LjExMTY2Ni5iZXN0Cnx8MWxpYi5zawp8fDIwNDcub25lCnx8NjlzaHViYS5jeAp8
+fDIwNDliYnMueHl6Cnx8NjExc3R1ZHkuY29tCnx8MThjb21pYy5vcmcKfHwwMDB3
+ZWJob3N0LmNvbQouMDMwYnV5LmNvbQouMHJ6LnR3CnxodHRwOi8vMHJ6LnR3CjEt
+YXBwbGUuY29tLnR3Cnx8MS1hcHBsZS5jb20udHcKLjEwMDBnaXJpLm5ldAp8fDEw
+MDBnaXJpLm5ldAp8fDEwYmVhc3RzLm5ldAouMTBjb25kaXRpb25zb2Zsb3ZlLmNv
+bQp8fDEwbXVzdW1lLmNvbQoxMjNyZi5jb20KLjEyYmV0LmNvbQp8fDEyYmV0LmNv
+bQouMTJ2cG4uY29tCi4xMnZwbi5uZXQKfHwxMnZwbi5jb20KfHwxMnZwbi5uZXQK
+fHwxMzM3eC50bwouMTM4LmNvbQoxNDFob25na29uZy5jb20vZm9ydW0KfHwxNDFq
+ai5jb20KLjE0MXR1YmUuY29tCnx8MTY4OC5jb20uYXUKLjE3M25nLmNvbQp8fDE3
+M25nLmNvbQouMTc3cGljLmluZm8KLjE3dDE3cC5jb20KfHwxOGJvYXJkLmNvbQox
+OG9ubHlnaXJscy5jb20KLjE4cDJwLmNvbQouMTh2aXJnaW5zZXguY29tCnpoYW8u
+MTk4NC5jaXR5Cnx8emhhby4xOTg0LmNpdHkKMTk4NGJicy5jb20KfHwxOTg0YmJz
+LmNvbQohLS18fDE5ODRibG9nLmNvbQouMTk5MXdheS5jb20KfHwxOTkxd2F5LmNv
+bQouMWVldy5jb20KLjFtb2JpbGUuY29tCnx8MXBvaW50M2FjcmVzLmNvbQp8fDFw
+b25kby50dgouMi1oYW5kLmluZm8KLjIwMDBmdW4uY29tL2Jicwp8fDIwMDh4aWFu
+emhhbmcuaW5mbwp8fDIwMjFoa2NoYXJ0ZXIuY29tCnx8MjA0Ny5uYW1lCjIxYW5k
+eS5jb20vYmxvZwoyMXNleHR1cnkuY29tCi4yMjgubmV0LnR3Cnx8MjMzYWJjLmNv
+bQp8fDI0aHJzLmNhCjJsaXBzdHViZS5jb20KLjJzaGFyZWQuY29tCjMwYm94ZXMu
+Y29tCi4zMTVsei5jb20KfHwzMnJlZC5jb20KfHwzNnJhaW4uY29tCi4zYTVhLmNv
+bQozYXJhYnR2LmNvbQouM2JveXMyZ2lybHMuY29tCi4zcHJveHkucnUKLjNyZW4u
+Y2EKLjN0dWkubmV0Cnx8NDA0bXVzZXVtLmNvbQp8fDRibHVlc3RvbmVzLmJpegou
+NGNoYW4uY29tCiEtLXx8NGNoYW4ub3JnCi40ZXZlcnByb3h5LmNvbQp8fDRldmVy
+cHJveHkuY29tCnx8NHJidHYuY29tCnx8NHNoYXJlZC5jb20KdGFpd2FubmF0aW9u
+LjUwd2Vicy5jb20KfHw1MS5jYQp8fDUxamF2Lm9yZwouNTFsdW9iZW4uY29tCnx8
+NTFsdW9iZW4uY29tCnx8NTI3OC5jYwouNTI5OS50dgo1aTAxLmNvbQouNWlzb3Rv
+aTUub3JnCi41bWFvZGFuZy5jb20KfHw2MTFzdHVkeS5pY3UKfHw2M2kuY29tCi42
+NG11c2V1bS5vcmcKNjR0aWFud2FuZy5jb20KNjR3aWtpLmNvbQouNjYuY2EKNjY2
+a2IuY29tCnx8NmRvLm5ld3MKfHw2ZG8ud29ybGQKLjZwYXJrLmNvbQp8fDZwYXJr
+LmNvbQp8fDZwYXJrYmJzLmNvbQp8fDZwYXJrZXIuY29tCnx8NnBhcmtuZXdzLmNv
+bQp8fDdjYXB0dXJlLmNvbQouN2Nvdy5jb20KIS0tfHw3LXppcC5vcmcKLjgtZC5j
+b20KfGh0dHA6Ly84LWQuY29tCi44NWNjLnVzCnxodHRwOi8vODVjYy51cwouODgx
+OTAzLmNvbS9wYWdlL3poLXR3Lwp8fDg4MTkwMy5jb20KLjg4OC5jb20KLjg4OHBv
+a2VyLmNvbQo4OS42NC5jaGFydGVyLmNvbnN0aXR1dGlvbmFsaXNtLnNvbHV0aW9u
+cwo4OS02NC5vcmcKfHw4OS02NC5vcmcKfHw4OTY0bXVzZXVtLmNvbQouOG5ld3Mu
+Y29tLnR3Ci44ejEubmV0Cnx8OHoxLm5ldAp8fDkxcG9ybi5jb20KfHw5MXBvcm55
+LmNvbQp8fDkxdnBzLmNsdWIKLjkyY2Nhdi5jb20KLjk5MS5jb20KfGh0dHA6Ly85
+OTEuY29tCi45OWJ0Z2MwMS5jb20KfHw5OWJ0Z2MwMS5jb20KLjk5Y24uaW5mbwp8
+aHR0cDovLzk5Y24uaW5mbwp8fDliaXMuY29tCnx8OWJpcy5uZXQKfHw5bmV3cy5j
+b20uYXUKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLUFBLS0tLS0tLS0tLS0tLS0tLS0t
+LS0tLS0tLQp8fGFtdWxldG1jLmNvbQp8fGFicGxpdmUuY29tCnx8Y2RuLmFyc3Rl
+Y2huaWNhLm5ldAp8fGFvbWVkaWEub3JnCnx8YWxqYXplZXJhLmNvbQp8fGFraW5h
+dG9yLmNvbQp8fGFubmFzLWFyY2hpdmUub3JnCnx8YXYwMS50dgp8fGFjZy5yaXAK
+fHxhbm5hcy1hcmNoaXZlLnNlCnx8YS1ub3JtYWwtZGF5LmNvbQphNS5jb20ucnUK
+fGh0dHA6Ly9hYW1hY2F1LmNvbQohLS18aHR0cDovL2NkbiouYWJjLmNvbS8KLmFi
+Yy5jb20KLmFiYy5uZXQuYXUKfHxhYmMubmV0LmF1Ci5hYmNoaW5lc2UuY29tCnx8
+YWJlYm9va3MuY28udWsKLmFibHdhbmcuY29tCi5hYm9sdW93YW5nLmNvbQp8fGFi
+b2x1b3dhbmcuY29tCnx8YWJvdXQubWUKLmFicy5lZHUKfHxhY2FzdC5jb20KLmFj
+Y2ltLm9yZwouYWNlcm9zLWRlLWhpc3BhbmlhLmNvbQouYWNldnBuLmNvbQp8fGFj
+ZXZwbi5jb20KLmFjZzE4Lm1lCnxodHRwOi8vYWNnMTgubWUKfHxhY2dib3gub3Jn
+Cnx8YWNna2ouY29tCnx8YWNnbnguc2UKLmFjbWVkaWEzNjUuY29tCi5hY253LmNv
+bS5hdQphY3Rmb3J0aWJldC5vcmcKYWN0aW1lcy5jb20uYXUKYWN0aXZwbi5jb20K
+fHxhY3RpdnBuLmNvbQp8fGFjdWxvLnVzCnx8YWRkaWN0ZWR0b2NvZmZlZS5kZQp8
+fGFkZHlvdXR1YmUuY29tCi5hZGVsYWlkZWJicy5jb20vYmJzCi5hZHBsLm9yZy5o
+awp8aHR0cDovL2FkcGwub3JnLmhrCi5hZHVsdC1zZXgtZ2FtZXMuY29tCnx8YWR1
+bHQtc2V4LWdhbWVzLmNvbQphZHVsdGZyaWVuZGZpbmRlci5jb20KfHxhZHZhbnNj
+ZW5lLmNvbQp8fGFkdmVydGZhbi5jb20KLmFlLm9yZwp8fGFlaS5vcmcKfHxhZW5o
+YW5jZXJzLmNvbQp8fGFmLm1pbAouYWZhbnRpYmJzLmNvbQp8aHR0cDovL2FmYW50
+aWJicy5jb20KfHxhZnIuY29tCnx8YWlvc2VhcmNoLmNvbQouYWlwaC5uZXQKfHxh
+aXBoLm5ldAouYWlyYXNpYS5jb20KfHxhaXJjb25zb2xlLmNvbQp8aHR0cDovL2Rv
+d25sb2FkLmFpcmNyYWNrLW5nLm9yZwouYWlydnBuLm9yZwp8fGFpcnZwbi5vcmcK
+LmFpc2V4LmNvbQp8fGFpdC5vcmcudHcKYWl3ZWl3ZWkuY29tCi5haXdlaXdlaWJs
+b2cuY29tCnx8YWl3ZWl3ZWlibG9nLmNvbQp8fHd3dy5hanNhbmRzLmNvbQoKISEt
+LS1Ba2FtYWktLS0KYTI0OC5lLmFrYW1haS5uZXQKfHxhMjQ4LmUuYWthbWFpLm5l
+dAoKcmZhbGl2ZTEuYWthY2FzdC5ha2FtYWlzdHJlYW0ubmV0CnZvYS0xMS5ha2Fj
+YXN0LmFrYW1haXN0cmVhbS5uZXQKCnxodHRwczovL2ZiY2RuKi5ha2FtYWloZC5u
+ZXQvCiEtLXx8ZmJleHRlcm5hbC1hLmFrYW1haWhkLm5ldAohLS18fGZic3RhdGlj
+LWEuYWthbWFpaGQubmV0CiEtLXxodHRwczovL2lnY2RuKi5ha2FtYWloZC5uZXQK
+cnRoa2xpdmUyLWxoLmFrYW1haWhkLm5ldAoKLmFrYWRlbWl5ZS5vcmcvdWcKfGh0
+dHA6Ly9ha2FkZW1peWUub3JnL3VnCnx8YWtpYmEtb25saW5lLmNvbQp8fGFrb3cu
+b3JnCi5hbC1pc2xhbS5jb20KfHxhbGFib3V0LmNvbQouYWxhbmhvdS5jb20KfGh0
+dHA6Ly9hbGFuaG91LmNvbQouYWxhcmFiLnFhCnx8YWxhc2JhcnJpY2FkYXMub3Jn
+Cnx8YWxmb3JhdHR2Lm5ldAouYWxoYXlhdC5jb20KLmFsaWNlamFwYW4uY28uanAK
+YWxpZW5ndS5jb20KfHxhbGl2ZS5iYXIKfHxhbGthc2lyLmNvbQp8fGFsbDRtb20u
+b3JnCnx8YWxsY29ubmVjdGVkLmNvCi5hbGxkcmF3bnNleC5jb20KfHxhbGxkcmF3
+bnNleC5jb20KfHxhbGxmaW5lZ2lybHMuY29tCi5hbGxnaXJsbWFzc2FnZS5jb20K
+YWxsZ2lybHNhbGxvd2VkLm9yZwouYWxsZ3JhdnVyZS5jb20KYWxsaWFuY2Uub3Jn
+LmhrCi5hbGxpbmZhLmNvbQp8fGFsbGluZmEuY29tCi5hbGxqYWNrcG90c2Nhc2lu
+by5jb20KfHxhbGxtb3ZpZS5jb20KLmFscGhhcG9ybm8uY29tCnx8YWx0ZXJuYXRl
+LXRvb2xzLmNvbQphbHRlcm5hdGl2ZXRvLm5ldC9zb2Z0d2FyZQphbHZpbmFsZXhh
+bmRlci5jb20KYWx3YXlzZGF0YS5jb20KfHxhbHdheXNkYXRhLmNvbQp8fGFsd2F5
+c2RhdGEubmV0Ci5hbHdheXN2cG4uY29tCnx8YWx3YXlzdnBuLmNvbQp8fGFtNzMw
+LmNvbS5oawphbWVibG8uanAKfHxhbWVibG8uanAKd3d3MS5hbWVyaWNhbi5lZHUv
+dGVkL2ljZS90aWJldAp8fGFtZXJpY2FuZ3JlZW5jYXJkLmNvbQp8fGFtaWJsb2Nr
+ZWRvcm5vdC5jb20KLmFtaWdvYmJzLm5ldAouYW1pdGFiaGFmb3VuZGF0aW9uLnVz
+CnxodHRwOi8vYW1pdGFiaGFmb3VuZGF0aW9uLnVzCi5hbW5lc3R5Lm9yZwp8fGFt
+bmVzdHkub3JnCnx8YW1uZXN0eS5vcmcuaGsKLmFtbmVzdHkudHcKLmFtbmVzdHl1
+c2Eub3JnCnx8YW1uZXN0eXVzYS5vcmcKLmFtdGItdGFpcGVpLm9yZwouYW5keWdv
+ZC5jb20KfGh0dHA6Ly9hbmR5Z29kLmNvbQphbm5hdGFtLmNvbS9jaGluZXNlCnx8
+YW5jaG9yLmZtCnx8YW5jaG9yZnJlZS5jb20KIS0tR0hTCnx8YW5jc2NvbmYub3Jn
+Cnx8YW5kZmFyYXdheS5uZXQKfHxhbmRyb2lkLXg4Ni5vcmcKfHxhbmRyb2lkYXBr
+c2ZyZWUuY29tCmFuZ2VsZmlyZS5jb20vaGkvaGF5YXNoaQp8fGFuZ3VsYXJqcy5v
+cmcKYW5pbWVjcmF6eS5uZXQKYW5pc2NhcnR1am8uY29tCnx8YW5pc2NhcnR1am8u
+Y29tCnx8YW5vYmlpLmNvbQp8fGFub25maWxlcy5jb20KLmFub255bWl0eW5ldHdv
+cmsuY29tCi5hbm9ueW1pemVyLmNvbQouYW5vbnltb3VzZS5vcmcKfHxhbm9ueW1v
+dXNlLm9yZwphbm9udGV4dC5jb20KLmFucG9wby5jb20KLmFuc3dlcmluZy1pc2xh
+bS5vcmcKfGh0dHA6Ly93d3cuYW50ZC5vcmcKfHxhbnRob255Y2FsemFkaWxsYS5j
+b20KYW50aWNocmlzdGVuZG9tLmNvbQouYW50aXdhdmUubmV0CnxodHRwOi8vYW50
+aXdhdmUubmV0Ci5hbnlwb3JuLmNvbQouYW55c2V4LmNvbQp8aHR0cDovL2FueXNl
+eC5jb20KLmFvMy5vcmcKfHxhbzMub3JnCnx8YW9iby5jb20uYXUKLmFvZnJpZW5k
+LmNvbQp8aHR0cDovL2FvZnJpZW5kLmNvbQouYW9qaWFvLm9yZwp8fGFvbWl3YW5n
+LmNvbQp8fGFwYXQxOTg5Lm9yZwouYXBldHViZS5jb20KfHxhcGlhcnkuaW8KLmFw
+aWdlZS5jb20KfHxhcGlnZWUuY29tCnx8YXBrLnN1cHBvcnQKfHxhcGtjb21iby5j
+b20KLmFwa21vbmsuY29tL2FwcAp8fGFwa21vbmsuY29tCnx8YXBrcGx6LmNvbQp8
+fGFwa3B1cmUuY29tCnx8YXBrcHVyZS5uZXQKfHxhcHBhZHZpY2UuY29tCiEtLXx8
+YXBwYW5uaWUuY29tCnx8YXBwYnJhaW4uY29tCi5hcHBkb3dubG9hZGVyLm5ldC9B
+bmRyb2lkCi5hcHBsZWRhaWx5LmNvbQp8fGFwcGxlZGFpbHkuY29tCmFwcGxlZGFp
+bHkuY29tLnR3Cnx8YXBwbGVkYWlseS5jb20udHcKLmFwcHNob3BwZXIuY29tCnxo
+dHRwOi8vYXBwc2hvcHBlci5jb20KfHxhcHBzb2Nrcy5uZXQKfHxhcHBzdG8ucmUK
+LmFwdG9pZGUuY29tCnx8YXB0b2lkZS5jb20KfHxhcmNoaXZlcy5nb3YKLmFyY2hp
+dmUuZm8KfHxhcmNoaXZlLmZvCnx8YXJjaGl2ZS52bgp8fGFyY2hpdmUuaXMKfHxh
+cmNoaXZlLmlzCnx8YXJjaGl2ZS5saQp8fGFyY2hpdmUubGkKfHxhcmNoaXZlLm1k
+Cnx8YXJjaGl2ZS5vcmcKfHxhcmNoaXZlLnBoCnx8YXJjaGl2ZS50b2RheQp8fGFy
+Y2hpdmVvZm91cm93bi5jb20KfHxhcmNoaXZlb2ZvdXJvd24ub3JnCi5hcmN0b3Np
+YS5jb20KfHxhcmN0b3NpYS5jb20KfHxhcmVjYS1iYWNrdXAub3JnCi5hcmV0aHVz
+YS5zdQp8fGFyZXRodXNhLnN1Cnx8YXJsaW5ndG9uY2VtZXRlcnkubWlsCi5hcnQ0
+dGliZXQxOTk4Lm9yZwphcnRvZnBlYWNlZm91bmRhdGlvbi5vcmcKYXJ0c3kubmV0
+Cnx8YXNhY3Aub3JnCmFzZGZnLmpwL2RhYnIKYXNnLnRvCi5hc2lhLWdhbWluZy5j
+b20KLmFzaWFoYXJ2ZXN0Lm9yZwp8fGFzaWFoYXJ2ZXN0Lm9yZwp8fGFzaWFuYWdl
+LmNvbQp8fGFzaWFuZXdzLml0Cnx8YXNpYW5zZXhkaWFyeS5jb20KfHxhc2lhb25l
+LmNvbQouYXNpYXRncC5jb20KfHxhc2suY29tCnx8YXNrc3R1ZGVudC5jb20KLmFz
+a3luei5uZXQKfHxhc2t5bnoubmV0Cnx8YXNwaS5vcmcuYXUKfHxhc3Bpc3RyYXRl
+Z2lzdC5vcmcuYXUKfHxhc3NlbWJsYS5jb20KfHxhc3RyaWxsLmNvbQp8fGF0Yy5v
+cmcuYXUKLmF0Y2hpbmVzZS5jb20KfGh0dHA6Ly9hdGNoaW5lc2UuY29tCmF0Z2Z3
+Lm9yZwouYXRsYW50YTE2OC5jb20KfHxhdGxhbnRhMTY4LmNvbQouYXRuZXh0LmNv
+bQp8fGF0bmV4dC5jb20KfHxhdWRhY3kuY29tCmljZS5hdWRpb25vdy5jb20KLmF2
+LmNvbQp8fGF2Lm1vdmllCi5hdi1lLWJvZHkuY29tCmF2YWF6Lm9yZwp8fGF2YWF6
+Lm9yZwohLS18fGF2YXN0LmNvbQouYXZjb29sLmNvbQouYXZkYi5pbgp8fGF2ZGIu
+aW4KLmF2ZGIudHYKfHxhdmRiLnR2Ci5hdmZhbnRhc3kuY29tCnx8YXZnLmNvbQou
+YXZnbGUuY29tCnx8YXZnbGUuY29tCnx8YXZpZGVtdXgub3JnCnx8YXZvaXNpb24u
+Y29tCi5hdnlhaG9vLmNvbQp8fGF4aW9zLmNvbQp8fGF4dXJlZm9ybWFjLmNvbQph
+emVyaW1peC5jb20KfHxhemlyZXZwbi5jb20KIS0tYm94dW4uYXp1cmV3ZWJzaXRl
+cy5uZXQgZG9lc24ndCBleGlzdC4KYm94dW4qLmF6dXJld2Vic2l0ZXMubmV0Cnx8
+Ym94dW4qLmF6dXJld2Vic2l0ZXMubmV0CgohLS0tLS0tLS0tLS0tLS0tLS0tLS1C
+Qi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxidDRncHJ4LmNvbQp8fGJ0NGcu
+b3JnCnx8YmV0dGVyaGFzaC5uZXQKfHxiaW5hbmNlLm9yZwp8fGJpdGdldC5jb20K
+fHxibGFja21hZ2ljZGVzaWduLmNvbQp8fGJlYXJ0ZWFjaC5jb20KfHxidGJ0dC5t
+ZQp8fGJ0YnR0LmNvCnx8YnRiaXQubmV0Cnx8YmV0YWNsb3Vkcy5uZXQKfHxibG9j
+a3RlbXBvLmNvbQp8fGJsb2NrY2FzdC5pdAp8fHd3dy5iaW5nLmNvbQp8fGJhbmd1
+bWkubW9lCnx8Yi1vay5jYwpmb3J1bS5iYWJ5LWtpbmdkb20uY29tCnx8YmFieWxv
+bmJlZS5jb20KYmFieW5ldC5jb20uaGsKYmFja2NoaW5hLmNvbQp8fGJhY2tjaGlu
+YS5jb20KLmJhY2twYWNrZXJzLmNvbS50dy9mb3J1bQpiYWNrdG90aWFuYW5tZW4u
+Y29tCnx8YmFkLm5ld3MKLmJhZGl1Y2FvLmNvbQp8fGJhZGl1Y2FvLmNvbQouYmFk
+am9qby5jb20KYmFkb28uY29tCnxodHRwOi8vKjIuYmFoYW11dC5jb20udHcKfHxi
+YWlkdS5qcAouYmFpamllLm9yZwp8fGJhaWppZS5vcmcKfHxiYWlsYW5kYWlseS5j
+b20KfHxiYWl4aW5nLm1lCnx8YmFpemhpLm9yZwouYmFuYW5hLXZwbi5jb20KfHxi
+YW5hbmEtdnBuLmNvbQp8fGJhbmQudXMKfHxiYW5kY2FtcC5jb20KLmJhbmR3YWdv
+bmhvc3QuY29tCnx8YmFuZHdhZ29uaG9zdC5jb20KLmJhbmdicm9zbmV0d29yay5j
+b20KLmJhbmdjaGVuLm5ldAp8aHR0cDovL2JhbmdjaGVuLm5ldAp8fGJhbmdrb2tw
+b3N0LmNvbQp8fGJhbmd5b3VsYXRlci5jb20KYmFubmVkYm9vay5vcmcKfHxiYW5u
+ZWRib29rLm9yZwouYmFubmVkbmV3cy5vcmcKLmJhcmFtYW5nYW9ubGluZS5jb20K
+fGh0dHA6Ly9iYXJhbWFuZ2FvbmxpbmUuY29tCi5iYXJlbmFrZWRpc2xhbS5jb20K
+fHxiYXJuYWJ1LmNvLnVrCnx8YmFydG9uLmRlCi5iYXN0aWxsZXBvc3QuY29tCnx8
+YmFzdGlsbGVwb3N0LmNvbQpiYXl2b2ljZS5uZXQKfHxiYXl2b2ljZS5uZXQKfHxi
+YmNoYXQudHYKfHxiYi1jaGF0LnR2Ci5iYmcuZ292Ci5iYmt6LmNvbS9mb3J1bQou
+YmJucmFkaW8ub3JnCmJicy10dy5jb20KLmJic2RpZ2VzdC5jb20vdGhyZWFkCmJi
+c2xhbmQuY29tCi5iYnNtby5jb20KLmJic29uZS5jb20KYmJ0b3lzdG9yZS5jb20K
+LmJjYy5jb20udHcvYm9hcmQKLmJjY2hpbmVzZS5uZXQKLmJjbW9ybmluZy5jb20K
+YmRzbXZpZGVvcy5uZXQKLmJlYWNvbmV2ZW50cy5jb20KLmJlYm8uY29tCnx8YmVi
+by5jb20KLmJlZXZwbi5jb20KfHxiZWV2cG4uY29tCi5iZWhpbmRraW5rLmNvbQp8
+fGJlaWppbmcxOTg5LmNvbQp8fGJlaWppbmcyMDIyLmFydApiZWlqaW5nc3ByaW5n
+LmNvbQp8fGJlaWppbmdzcHJpbmcuY29tCi5iZWxhbWlvbmxpbmUuY29tCi5iZWxs
+Lndpa2kKfGh0dHA6Ly9iZWxsLndpa2kKYmVteXdpZmUuY2MKYmVyaWMubWUKfHxi
+ZXJsaW5lcmJlcmljaHQuZGUKLmJlcmxpbnR3aXR0ZXJ3YWxsLmNvbQp8fGJlcmxp
+bnR3aXR0ZXJ3YWxsLmNvbQouYmVybS5jby5uegouYmVzdGdvcmUuY29tCi5iZXN0
+cG9ybnN0YXJkYi5jb20KfHxiZXN0dnBuLmNvbQp8fGJlc3R2cG5hbmFseXNpcy5j
+b20KfHxiZXN0dnBuZm9yY2hpbmEubmV0Cnx8YmVzdHZwbnNlcnZlci5jb20KfHxi
+ZXN0dnBuc2VydmljZS5jb20KfHxiZXN0dnBudXNhLmNvbQp8fGJldDM2NS5jb20K
+LmJldGZhaXIuY29tCnx8YmV0dGVybmV0LmNvCi5iZXR0ZXJ2cG4uY29tCnx8YmV0
+dGVydnBuLmNvbQouYmV0dHdlZW4uY29tCnx8YmV0dHdlZW4uY29tCnx8YmV0dmlj
+dG9yLmNvbQouYmV3d3cubmV0Ci5iZXlvbmRmaXJld2FsbC5jb20KfHxiZm5uLm9y
+Zwp8fGJmc2guaGsKLmJndnBuLmNvbQp8fGJndnBuLmNvbQouYmlhbmxlaS5jb20K
+QEB8fGJpYW5sZWkuY29tCmJpYW50YWlsYWppYW8uY29tCnx8YmlibGVzZm9yYW1l
+cmljYS5vcmcKfHx2cGwuYmlibGlvY29tbW9ucy5jb20KfHxiaWVkaWFuLm1lCmJp
+Z2Zvb2xzLmNvbQp8fGJpZ2phcGFuZXNlc2V4LmNvbQouYmlnbmV3cy5vcmcKfHxi
+aWduZXdzLm9yZwouYmlnc291bmQub3JnCnx8YmlsZC5kZQouYmlsaXdvcmxkLmNv
+bQp8aHR0cDovL2JpbGl3b3JsZC5jb20KfGh0dHA6Ly9iaWxseXBhbi5jb20vd2lr
+aQouYmludXgubWUKYWkuYmlud2FuZy5tZS9jb3VwbGV0Ci5iaXQuZG8KfGh0dHA6
+Ly9iaXQuZG8KLmJpdC5seQp8aHR0cDovL2JpdC5seQohLS18fGJpdGJ1Y2tldC5v
+cmcKfHxiaXRjaHV0ZS5jb20KfHxiaXRjb2ludGFsay5vcmcKLmJpdHNoYXJlLmNv
+bQp8fGJpdHNoYXJlLmNvbQpiaXRzbm9vcC5jb20KLmJpdHZpc2UuY29tCnx8Yml0
+dmlzZS5jb20KYml6aGF0LmNvbQp8fGJsLWRvdWppbnNvdWtvLmNvbQouYmpuZXds
+aWZlLm9yZwouYmpzLm9yZwpianpjLm9yZwp8fGJqemMub3JnCnx8YmxhY2tlZC5j
+b20KLmJsYWNrbG9naWMuY29tCi5ibGFja3Zwbi5jb20KfHxibGFja3Zwbi5jb20K
+Ymxld3Bhc3MuY29tCi5ibGlua3guY29tCnx8Ymxpbmt4LmNvbQpibGludy5jb20K
+LmJsaXAudHYKfHxibGlwLnR2Cnx8YmxvY2tjYXN0Lml0Ci5ibG9ja2NuLmNvbQp8
+fGJsb2NrY24uY29tCnx8YmxvY2tlZGJ5aGsuY29tCnx8YmxvY2tsZXNzLmNvbQp8
+fGJsb2cuZGUKLmJsb2cuanAKfGh0dHA6Ly9ibG9nLmpwCkBAfHxqcHVzaC5jbgou
+YmxvZ2NhdGFsb2cuY29tCnx8YmxvZ2NhdGFsb2cuY29tCnx8YmxvZ2NpdHkubWUK
+LmJsb2dnZXIuY29tCnx8YmxvZ2dlci5jb20KYmxvZ2ltZy5qcAouYmxvZ2xpbmVz
+LmNvbQp8fGJsb2dsaW5lcy5jb20KfHxibG9nbG92aW4uY29tCnJjb252ZXJzYXRp
+b24uYmxvZ3MuY29tCi5ibG9ndGQub3JnCnxodHRwOi8vYmxvZ3RkLm9yZwp8fGJs
+b29kc2hlZC5uZXQKfHxib290c3RyYXBjZG4uY29tCnx8Ymxvb21mb3J0dW5lLmNv
+bQpibHVlYW5nZWxsaXZlLmNvbQp8fGJsdWJycnkuY29tCnx8Ym1kcnUuY29tCnx8
+Ym5leHQuY29tLnR3Cnx8Ym5ybWV0YWwuY29tCmJvYXJkcmVhZGVyLmNvbS90aHJl
+YWQKfHxib2FyZHJlYWRlci5jb20KLmJvZC5hc2lhCnx8Ym9kLmFzaWEKLmJvZG9n
+ODguY29tCi5ib2xlaHZwbi5uZXQKfHxib2xlaHZwbi5uZXQKYm9uYm9ubWUuY29t
+Ci5ib25mb3VuZGF0aW9uLm9yZwouYm9uZ2FjYW1zLmNvbQp8fGJvb2JzdGFncmFt
+LmNvbQp8fGJvb2suY29tLnR3Cnx8Ym9va2RlcG9zaXRvcnkuY29tCmJvb2tlcHVi
+LmNvbQp8fGJvb2tzLmNvbS50dwp8fGJvb2t3YWxrZXIuY29tLnR3Cnx8Ym9yZ2Vu
+bWFnYXppbmUuY29tCnx8Ym90YW53YW5nLmNvbQouYm90Lm51Ci5ib3dlbnByZXNz
+LmNvbQp8fGJvd2VucHJlc3MuY29tCnx8YXBwLmJveC5jb20KZGwuYm94Lm5ldAp8
+fGRsLmJveC5uZXQKLmJveHBuLmNvbQp8fGJveHBuLmNvbQpib3h1bi5jb20KfHxi
+b3h1bi5jb20KLmJveHVuLnR2Cnx8Ym94dW4udHYKLmJveHVuY2x1Yi5jb20KYm95
+YW5ndS5jb20KLmJveWZyaWVuZHR2LmNvbQouYm95c2Zvb2QuY29tCnx8YnIuc3QK
+LmJyYWlueXF1b3RlLmNvbS9xdW90ZXMvYXV0aG9ycy9kL2RhbGFpX2xhbWEKfHxi
+cmF1bWVpc3Rlci5vcmcKfHxicmF2ZS5jb20KLmJyYXZvdHViZS5uZXQKfHxicmF2
+b3R1YmUubmV0Ci5icmF6emVycy5jb20KfHxicmF6emVycy5jb20KfHxicmVhY2hl
+ZC50bwouYnJlYWsuY29tCnx8YnJlYWsuY29tCmJyZWFrZ2Z3LmNvbQp8fGJyZWFr
+Z2Z3LmNvbQpicmVha2luZzkxMS5jb20KLmJyZWFraW5ndHdlZXRzLmNvbQp8fGJy
+ZWFraW5ndHdlZXRzLmNvbQp8fGJyZWFrd2FsbC5uZXQKYnJpaWFuLmNvbS82NTEx
+L2ZyZWVnYXRlCnx8YnJpbGwuY29tCmJyaXp6bHkuY29tCnx8YnJpenpseS5jb20K
+YnJvYWRib29rLmNvbQouYnJvYWRwcmVzc2luYy5jb20KfHxicm9hZHByZXNzaW5j
+LmNvbQpiYnMuYnJvY2tiYnMuY29tCnx8YnJvb2tpbmdzLmVkdQpicnVjZXdhbmcu
+bmV0Ci5icnV0YWx0Z3AuY29tCnx8YnJ1dGFsdGdwLmNvbQp8fGJza3kuYXBwCnx8
+YnNreS5uZXR3b3JrCnx8YnNreS5zb2NpYWwKfHxidDk1LmNvbQouYnRhaWEuY29t
+Ci5idGJ0YXYuY29tCnx8YnRkaWcuY29tCnx8YnRkaWdnLm9yZwp8fGJ0Z3VhcmQu
+Y29tCi5idGt1Lm1lCnx8YnRrdS5tZQp8fGJ0a3Uub3JnCi5idHNwcmVhZC5jb20K
+LmJ0c3luY2tleXMuY29tCi5idWRhZWR1Lm9yZwp8fGJ1ZGFlZHUub3JnCi5idWRk
+aGFuZXQuY29tLnR3L3pmcm9wL3RpYmV0Cnx8YnVmZmVyZWQuY29tCnx8YnVsbGd1
+YXJkLmNvbQouYnVsbG9nLm9yZwp8fGJ1bGxvZy5vcmcKLmJ1bGxvZ2dlci5jb20K
+fHxidWxsb2dnZXIuY29tCnx8YnVtaW5nYmFpLm5ldAp8fGJ1bmJ1bmhrLmNvbQou
+YnVzYXlhcmkuY29tCnxodHRwOi8vYnVzYXlhcmkuY29tCnx8YnVzaW5lc3MtaHVt
+YW5yaWdodHMub3JnCi5idXNpbmVzc2luc2lkZXIuY29tL2JpbmctY291bGQtYmUt
+Y2Vuc29yaW5nLXNlYXJjaC1yZXN1bHRzLTIwMTQKLmJ1c2luZXNzaW5zaWRlci5j
+b20vY2hpbmEtYmFua3MtcHJlcGFyaW5nLWZvci1kZWJ0LWltcGxvc2lvbi0yMDE0
+Ci5idXNpbmVzc2luc2lkZXIuY29tL2hvbmcta29uZy1hY3RpdmlzdHMtZGVmeS1w
+b2xpY2UtdGVhci1nYXMtYXMtcHJvdGVzdHMtY29udGludWUtb3Zlcm5pZ2h0LTIw
+MTQKLmJ1c2luZXNzaW5zaWRlci5jb20vaW50ZXJuZXQtb3V0YWdlcy1yZXBvcnRl
+ZC1pbi1ub3J0aC1rb3JlYS0yMDE0Ci5idXNpbmVzc2luc2lkZXIuY29tL2lwaG9u
+ZS02LWlzLWFwcHJvdmVkLWZvci1zYWxlLWluLWNoaW5hLTIwMTQKLmJ1c2luZXNz
+aW5zaWRlci5jb20vbmZsLWFubm91bmNlcnMtc3VyZmFjZS10YWJsZXRzLTIwMTQK
+LmJ1c2luZXNzaW5zaWRlci5jb20vcGFuYW1hLXBhcGVycwouYnVzaW5lc3NpbnNp
+ZGVyLmNvbS91bWJyZWxsYS1tYW4taG9uZy1rb25nLTIwMTQKfGh0dHA6Ly93d3cu
+YnVzaW5lc3NpbnNpZGVyLmNvbS5hdS8qCi5idXNpbmVzc3RvZGF5LmNvbS50dwp8
+fGJ1c2luZXNzdG9kYXkuY29tLnR3Ci5idXN1Lm9yZy9uZXdzCnxodHRwOi8vYnVz
+dS5vcmcvbmV3cwpidXN5dHJhZGUuY29tCi5idXp6aGFuZC5jb20KLmJ1enpoYW5k
+Lm5ldAouYnV6em9yYW5nZS5jb20KfHxidXp6b3JhbmdlLmNvbQp8fGJ1enpzcHJv
+dXQuY29tCnx8YnZwbi5jb20KfHxid2gxLm5ldAp8fGJ5cGFzc2NlbnNvcnNoaXAu
+b3JnCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1DQy0tLS0tLS0tLS0tLS0tLS0tLS0t
+LS0tLS0KfHxjb3ZlbmFudHN3YXRjaC5vcmcudHcKfHxjcHUtbW9ua2V5LmNvbQp8
+fGNvZmZlZW1hbmdhLnRvCnx8Y3RpbmV3cy5jb20KfHxjYWNoZWZseS5jb20KfHxj
+YWNoZWZseS5uZXQKfHxjdXRvdXQucHJvCnx8Y2l4aWFveWEuY2x1Ygp8fGNhbXBh
+aWduLWFyY2hpdmUuY29tCnx8Y2hpbmF1bmNlbnNvcmVkLnR2Cnx8Y2F0Ym94Lm1v
+ZQp8fGNyb3Nzd2FsbC5vcmcKfHxjbGlwY29udmVydGVyLmNjCnx8emgtaGFucy5j
+ZnNoOTkuY29tCnx8Y29sYWNsb3VkLm5ldAp8fGNpLWVuLmpwCnx8Yy1zcGFuLm9y
+ZwouYy1zcGFudmlkZW8ub3JnCnx8Yy1zcGFudmlkZW8ub3JnCnx8Yy1lc3Qtc2lt
+cGxlLmNvbQouYzEwMHRpYmV0Lm9yZwp8fGNhYmxlYXYudHYKfHxjYWJsZWdhdGVz
+ZWFyY2gubmV0Ci5jYWNoaW5lc2UuY29tCi5jYWNudy5jb20KfGh0dHA6Ly9jYWNu
+dy5jb20KLmNhY3R1c3Zwbi5jb20KfHxjYWN0dXN2cG4uY29tCi5jYWZlcHJlc3Mu
+Y29tCi5jYWhyLm9yZy50dwouY2FsYW1lby5jb20vYm9va3MKfHxjYWxlbmRhcnou
+Y29tCi5jYWxnYXJ5Y2hpbmVzZS5jYQouY2FsZ2FyeWNoaW5lc2UuY29tCi5jYWxn
+YXJ5Y2hpbmVzZS5uZXQKLmNhbTQuY29tCi5jYW00LmpwCi5jYW00LnNnCi5jYW1m
+cm9nLmNvbQp8fGNhbWZyb2cuY29tCnx8Y2FtcGFpZ25mb3J1eWdodXJzLm9yZwp8
+fGNhbXMuY29tCi5jYW1zLm9yZy5zZwpjYW5hZGFtZWV0LmNvbQouY2FuYWxwb3Ju
+by5jb20KfGh0dHA6Ly9iYnMuY2FudG9uZXNlLmFzaWEvCiEtLWh0dHA6Ly93d3cu
+Y2FudG9uZXNlLmFzaWEvYWN0aW9uLWJicy5odG1sCi5jYW55dS5vcmcKfHxjYW55
+dS5vcmcKLmNhb2JpYW4uaW5mbwp8fGNhb2JpYW4uaW5mbwpjYW9jaGFuZ3Fpbmcu
+Y29tCnx8Y2FvY2hhbmdxaW5nLmNvbQouY2FwLm9yZy5oawp8fGNhcC5vcmcuaGsK
+fHxjYW9wb3JuLnVzCi5jYXJhYmluYXN5cGlzdG9sYXMuY29tCmNhcmRpbmFsa3Vu
+Z2ZvdW5kYXRpb24ub3JnCnx8cG9zdHMuY2FyZWVyZW5naW5lLnVzCmNhcm1vdG9y
+c2hvdy5jb20KfHxjYXJyZC5jbwouY2FydG9vbm1vdmVtZW50LmNvbQp8fGNhcnRv
+b25tb3ZlbWVudC5jb20KLmNhc2FkZWx0aWJldGJjbi5vcmcKLmNhc2F0aWJldC5v
+cmcubXgKfGh0dHA6Ly9jYXNhdGliZXQub3JnLm14Ci5jYXJpLmNvbS5teQp8fGNh
+cmkuY29tLm15Cnx8Y2FyaWJiZWFuY29tLmNvbQp8fGNhcm91c2VsbC5jb20uaGsK
+LmNhc2lub2tpbmcuY29tCi5jYXNpbm9yaXZhLmNvbQp8fGNhdGNoMjIubmV0Ci5j
+YXRjaGdvZC5jb20KfGh0dHA6Ly9jYXRjaGdvZC5jb20KLmNhdGhvbGljLm9yZy5o
+awp8fGNhdGhvbGljLm9yZy5oawpjYXRob2xpYy5vcmcudHcKfHxjYXRob2xpYy5v
+cmcudHcKLmNhdGh2b2ljZS5vcmcudHcKfHxjYXRvLm9yZwp8fGNhdHR0LmNvbQp8
+fGNhdXMuY29tCi5jYmMuY2EKfHxjYmMuY2EKLmNic25ld3MuY29tL3ZpZGVvCi5j
+YnRjLm9yZy5oawp8fHNvdXRocGFyay5jYy5jb20KIS0uY2NjLmRlCiEtfHxjY2Mu
+ZGUKfHxjY2NhdC5jYwp8fGNjY2F0LmNvCnx8Y2NmZC5vcmcudHcKLmNjaGVyZS5j
+b20KfHxjY2hlcmUuY29tCi5jY2ltLm9yZwouY2NsaWZlLmNhCmNjbGlmZS5vcmcK
+fHxjY2xpZmUub3JnCmNjbGlmZWZsLm9yZwp8fGNjbGlmZWZsLm9yZwouY2N0aGVy
+ZS5jb20KfHxjY3RoZXJlLmNvbQp8fGNjdGhlcmUubmV0Ci5jY3Rtd2ViLm5ldAou
+Y2N0b25nYmFvLmNvbS9hcnRpY2xlLzIwNzg3MzIKY2N1ZS5jYQpjY3VlLmNvbQou
+Y2N2b2ljZS5jYQouY2N3Lm9yZy50dwouY2dkZXBvdC5vcmcKfGh0dHA6Ly9jZ2Rl
+cG90Lm9yZwp8fGNkYm9vay5vcmcKLmNkZWYub3JnCnx8Y2RlZi5vcmcKfHxjZGln
+LmluZm8KY2RqcC5vcmcKfHxjZGpwLm9yZwohLS0uY2RuLWFwcGxlLmNvbQohLS18
+fGNkbi1hcHBsZS5jb20KLmNkbmV3cy5jb20udHcKY2RwMTk4OS5vcmcKY2RwMTk5
+OC5vcmcKfHxjZHAxOTk4Lm9yZwpjZHAyMDA2Lm9yZwp8fGNkcDIwMDYub3JnCnx8
+Y2RwZXUub3JnCnx8Y2RwdWsuY28udWsKfHxjZHB3ZWIub3JnCnx8Y2Rwd2ViLm9y
+Zwp8fGNkcHd1Lm9yZwp8fGNkdy5jb20KfHxjZWNjLmdvdgp8fGNlbGx1bG8uaW5m
+bwp8fGNlbmV3cy5ldQp8fGNlbnRlcmZvcmh1bWFucmVwcm9kLmNvbQp8fGNlbnRy
+YWxuYXRpb24uY29tCi5jZW50dXJ5cy5uZXQKfGh0dHA6Ly9jZW50dXJ5cy5uZXQK
+LmNmaGtzLm9yZy5oawouY2Zvcy5kZQp8fGNmci5vcmcKLmNmdGZjLmNvbQouY2dz
+dC5lZHUKLmNoYW5nZS5vcmcKfHxjaGFuZ2Uub3JnCi5jaGFuZ3AuY29tCnx8Y2hh
+bmdwLmNvbQp8fGNoYW5uZWxuZXdzYXNpYS5jb20KfHxjaGFud29ybGQub3JnCnx8
+Y2hhb3Muc29jaWFsCnx8Y2hhcmFjdGVyLmFpCnx8Y2hhdGdwdC5jb20KLmNoYXR1
+cmJhdGUuY29tCnx8Y2hhdHVyYmF0ZS5jb20KLmNodWFuZy15ZW4ub3JnCnx8Y2hl
+Y2tnZncuY29tCnx8Y2hlbmdtaW5nbWFnLmNvbQp8fGNoZW5ndWFuZ2NoZW5nLmNv
+bQp8fGNoZW5wb2tvbmcuY29tCnx8Y2hlbnBva29uZ3ZpcC5jb20KfHxjaGVycnlz
+YXZlLmNvbQp8fGNoaG9uZ2JpLm9yZwp8fGNoaW5hLXdlZWsuY29tCnx8Y2hpbmEx
+MDEuY29tCnx8Y2hpbmExOC5vcmcKfHxjaGluYTIxLmNvbQp8fGNoaW5hMjEub3Jn
+Cnx8Y2hpbmE1MDAwLnVzCnx8Y2hpbmFhZmZhaXJzLm9yZwp8fGNoaW5hYWlkLnVz
+Cnx8Y2hpbmFhaWQub3JnCnx8Y2hpbmFhaWQubmV0Cnx8Y2hpbmFjaGFuZ2Uub3Jn
+Cnx8Y2hpbmFjaGFubmVsLmhrCnx8Y2hpbmFkZW1vY3JhdHMub3JnCnx8Y2hpbmFk
+aWFsb2d1ZS5uZXQKfHxjaGluYWRpZ2l0YWx0aW1lcy5uZXQKfHxjaGluYWVsZWN0
+aW9ucy5vcmcKfHxjaGluYWZpbGUuY29tCnx8Y2hpbmFmcmVlcHJlc3Mub3JnCi5j
+aGluYWdhdGUuY29tCmNoaW5hZ2Z3Lm9yZwp8fGNoaW5hZ2Z3Lm9yZwouY2hpbmFn
+b25ldC5jb20KLmNoaW5haG9yaXpvbi5vcmcKfHxjaGluYWhvcml6b24ub3JnCi5j
+aGluYWh1c2guY29tCi5jaGluYWlucGVyc3BlY3RpdmUuY29tCmNoaW5hbGFib3J3
+YXRjaC5vcmcKY2hpbmFsYXd0cmFuc2xhdGUuY29tCi5jaGluYXBvc3QuY29tLnR3
+L3RhaXdhbi9uYXRpb25hbC9uYXRpb25hbC1uZXdzCmNoaW5hbGF3YW5kcG9saWN5
+LmNvbQouY2hpbmFtdWxlLmNvbQp8fGNoaW5hbXVsZS5jb20KY2hpbmFtei5vcmcK
+LmNoaW5hbmV3c2NlbnRlci5jb20KfGh0dHBzOi8vY2hpbmFuZXdzY2VudGVyLmNv
+bQouY2hpbmFwcmVzcy5jb20ubXkKfHxjaGluYXByZXNzLmNvbS5teQouY2hpbmEt
+cmV2aWV3LmNvbS51YQp8aHR0cDovL2NoaW5hLXJldmlldy5jb20udWEKLmNoaW5h
+cmlnaHRzaWEub3JnCmNoaW5hc21pbGUubmV0L2ZvcnVtcwpjaGluYXNvY2lhbGRl
+bW9jcmF0aWNwYXJ0eS5jb20KfHxjaGluYXNvY2lhbGRlbW9jcmF0aWNwYXJ0eS5j
+b20KY2hpbmFzb3VsLm9yZwp8fGNoaW5hc291bC5vcmcKLmNoaW5hc3Vja3MubmV0
+Cnx8Y2hpbmF0b3BzZXguY29tCi5jaGluYXRvd24uY29tLmF1CmNoaW5hd2F5Lm9y
+ZwouY2hpbmF3b3JrZXIuaW5mbwp8fGNoaW5hd29ya2VyLmluZm8KY2hpbmF5b3V0
+aC5vcmcuaGsKY2hpbmVzZS1sZWFkZXJzLm9yZwp8fGNoaW5lc2UtbWVtb3JpYWwu
+b3JnCi5jaGluZXNlZGFpbHkuY29tCnx8Y2hpbmVzZWRhaWx5bmV3cy5jb20KLmNo
+aW5lc2VkZW1vY3JhY3kuY29tCnx8Y2hpbmVzZWRlbW9jcmFjeS5jb20KfHxjaGlu
+ZXNlZ2F5Lm9yZwouY2hpbmVzZW4uZGUKfHxjaGluZXNlbi5kZQp8fGNoaW5lc2Vu
+ZXdzLm5ldC5hdQouY2hpbmVzZXBlbi5vcmcKfHxjaGluZXNlcmFkaW9zZWF0dGxl
+LmNvbQp8fGNoaW5lc2V1cHJlc3MuY29tCi5jaGluZ2NoZW9uZy5jb20KfHxjaGlu
+Z2NoZW9uZy5jb20KLmNoaW5tYW4ubmV0CnxodHRwOi8vY2hpbm1hbi5uZXQKY2hp
+dGh1Lm9yZwp8fGNubmV3cy5jaG9zdW4uY29tCi5jaHJkbmV0LmNvbQp8aHR0cDov
+L2NocmRuZXQuY29tCi5jaHJpc3RpYW5mcmVlZG9tLm9yZwp8fGNocmlzdGlhbmZy
+ZWVkb20ub3JnCmNocmlzdGlhbnN0dWR5LmNvbQp8fGNocmlzdGlhbnN0dWR5LmNv
+bQpjaHJpc3R1c3JleC5vcmcvd3d3MS9zZGMKLmNodWJvbGQuY29tCmNodWJ1bi5j
+b20KfHxjaHJpc3RpYW50aW1lcy5vcmcuaGsKLmNocmxhd3llcnMuaGsKfHxjaHJs
+YXd5ZXJzLmhrCi5jaHVyY2hpbmhvbmdrb25nLm9yZy9iNS9pbmRleC5waHAKfGh0
+dHA6Ly9jaHVyY2hpbmhvbmdrb25nLm9yZy9iNS9pbmRleC5waHAKLmNodXNoaWdh
+bmdkcnVnLmNoCi5jaWVuZW4uY29tCi5jaW5lYXN0ZW50cmVmZi5kZQouY2lwZmcu
+b3JnCnx8Y2lyb3NhbnRpbGxpLmNvbQouY2l0aXplbmNuLmNvbQp8fGNpdGl6ZW5j
+bi5jb20KfHxjaXRpemVubGFiLmNhCnx8Y2l0aXplbmxhYi5vcmcKLmNpdGl6ZW5s
+YWIub3JnCmNpdGl6ZW5zcmFkaW8ub3JnCi5jaXR5MzY1LmNhCnxodHRwOi8vY2l0
+eTM2NS5jYQpjaXR5OXguY29tCnx8Y2l0eXBvcHVsYXRpb24uZGUKLmNpdHl0YWxr
+LnR3L2V2ZW50Ci5jaXZpY3BhcnR5LmhrCnx8Y2l2aWNwYXJ0eS5oawpjaXZpbGhy
+ZnJvbnQub3JnCnx8Y2l2aWxocmZyb250Lm9yZwouY2l2aWxpYW5ndW5uZXIuY29t
+Ci5jaXZpbG1lZGlhLnR3Cnx8Y2l2aWxtZWRpYS50dwp8fGNpdml0YWkuY29tCi5j
+azEwMS5jb20KfHxjazEwMS5jb20KLmNsYXJpb25wcm9qZWN0Lm9yZy9uZXdzL2lz
+bGFtaWMtc3RhdGUtaXNpcy1pc2lsLXByb3BhZ2FuZGEKfHxjbGFzc2ljYWxndWl0
+YXJibG9nLm5ldAouY2xiLm9yZy5oawpjbGVhcmhhcm1vbnkubmV0CmNsZWFyd2lz
+ZG9tLm5ldAp8fGNsaW5pY2EtdGliZXQucnUKLmNsaXBmaXNoLmRlCnx8YXBwLmNs
+b3VkY29uZS5jb20KfHxjbG91ZGZsYXJlLWlwZnMuY29tCnx8Y2x1YjEwNjkuY29t
+Cnx8Y2x1YmhvdXNlYXBpLmNvbQp8fGNtZWdyb3VwLmNvbQp8fGNtaS5vcmcudHcK
+fGh0dHA6Ly93d3cuY21vaW5jLm9yZwpjbXAuaGt1LmhrCnx8Y211bGUuY29tCnx8
+Y21zLmdvdgp8aHR0cDovL3Zwbi5jbXUuZWR1CnxodHRwOi8vdnBuLnN2LmNtdS5l
+ZHUKLmNuNi5ldQouY25hLmNvbS50dwp8fGNuYS5jb20udHcKLmNuYWJjLmNvbQou
+Y25kLm9yZwp8fGNuZC5vcmcKZG93bmxvYWQuY25ldC5jb20KLmNuZXgub3JnLmNu
+Ci5jbmluZXUuY29tCi5jbm4uY29tL3ZpZGVvCi5jbnBvbGl0aWNzLm9yZwp8fGNu
+cG9saXRpY3Mub3JnCi5jbi1wcm94eS5jb20KfGh0dHA6Ly9jbi1wcm94eS5jb20K
+LmNucHJveHkuY29tCm5ld3MuY255ZXMuY29tCnx8Y29hdC5jby5qcAp8fGNvY2hp
+bmEub3JnCnx8Y29kZXNoYXJlLmlvCnx8Y29kZXNrdWxwdG9yLm9yZwp8fGNvZmFj
+dHMudHcKfHxjb25vaGEuanAKfGh0dHA6Ly90b3NoLmNvbWVkeWNlbnRyYWwuY29t
+CmNvbWVmcm9tY2hpbmEuY29tCnx8Y29tZWZyb21jaGluYS5jb20KLmNvbWljLW1l
+Z2EubWUKY29tbWFuZGFybXMuY29tCnx8Y29tbWVudHNoay5jb20KLmNvbW11bmlz
+dGNyaW1lcy5vcmcKfHxjb21tdW5pc3RjcmltZXMub3JnCnx8Y29tbXVuaXR5Y2hv
+aWNlY3UuY29tCnx8Y29tcGFyaXRlY2guY29tCnx8Y29tcGlsZWhlYXJ0LmNvbQp8
+fGNvbm9oYS5qcAouY29udGFjdG1hZ2F6aW5lLm5ldAouY29udmlvLm5ldAp8fGNv
+b2wxOC5jb20KLmNvb2xhbGVyLmNvbQp8fGNvb2xhbGVyLmNvbQpjb29sZGVyLmNv
+bQp8fGNvb2xkZXIuY29tCnx8Y29vbGxvdWQub3JnLnR3Ci5jb29sbmN1dGUuY29t
+Cnx8Y29vbHN0dWZmaW5jLmNvbQpjb3J1bWNvbGxlZ2UuY29tCi5jb3MtbW9lLmNv
+bQp8aHR0cDovL2Nvcy1tb2UuY29tCi5jb3NwbGF5amF2LnBsCnxodHRwOi8vY29z
+cGxheWphdi5wbAouY290d2VldC5jb20KfHxjb3R3ZWV0LmNvbQouY291cnNlaGVy
+by5jb20KfHxjb3Vyc2VoZXJvLmNvbQpjcGoub3JnCnx8Y3BqLm9yZwouY3E5OS51
+cwp8aHR0cDovL2NxOTkudXMKY3JhY2tsZS5jb20KfHxjcmFja2xlLmNvbQouY3Jh
+enlzLmNjCi5jcmF6eXNoaXQuY29tCnx8Y3JhenlzaGl0LmNvbQp8fGNyY2hpbmEu
+b3JnCmNyZC1uZXQub3JnCmNyZWFkZXJzLm5ldAp8fGNyZWFkZXJzLm5ldAouY3Jl
+YWRlcnNuZXQuY29tCnx8Y3Jpc3R5bGkuY29tCnx8Y3JveHlwcm94eS5jb20KLmNy
+b2NvdHViZS5jb20KfGh0dHA6Ly9jcm9jb3R1YmUuY29tCi5jcm9zc3Zwbi5uZXQK
+fHxjcm9zc3Zwbi5uZXQKfHxjcnVjaWFsLmNvbQp8fGJsb2cuY3J5cHRvZ3JhcGh5
+ZW5naW5lZXJpbmcuY29tCmNzZHBhcnR5LmNvbQp8fGNzZHBhcnR5LmNvbQp8fGNz
+aXMub3JnCnx8Y3Ntb25pdG9yLmNvbQp8fGNzdWNoZW4uZGUKfHxjc3cub3JnLnVr
+Cnx8Y3Qub3JnLnR3Ci5jdGFvLm9yZwp8fGN0aXR2LmNvbS50dwp8fGN0b3djLm9y
+Zwp8fGN0cy5jb20udHcKfHxjdHdhbnQuY29tCnxodHRwOi8vbGlicmFyeS51c2Mu
+Y3Voay5lZHUuaGsvCnxodHRwOi8vbWpsc2gudXNjLmN1aGsuZWR1LmhrLwouY3Vo
+a2Fjcy5vcmcvfmJlbm5nCi5jdWl3ZWlwaW5nLm5ldAp8fGN1aXdlaXBpbmcubmV0
+Cnx8Y3VsdHVyZS50dwouY3VtbG91ZGVyLmNvbQp8fGN1bWxvdWRlci5jb20KfHxj
+dXJ2ZWZpc2guY29tCnx8Y3VzcC5oawouY3V0c2NlbmVzLm5ldAp8fGN1dHNjZW5l
+cy5uZXQKLmN3LmNvbS50dwp8fGN3LmNvbS50dwp8aHR0cDovL2ZvcnVtLmN5YmVy
+Y3RtLmNvbQpjeWJlcmdob3N0dnBuLmNvbQp8fGN5YmVyZ2hvc3R2cG4uY29tCnx8
+Y3luc2NyaWJlLmNvbQp8fGlmYW4uY3ouY2MKfHxtaWtlLmN6LmNjCnx8bmljLmN6
+LmNjCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1ERC0tLS0tLS0tLS0tLS0tLS0tLS0t
+LS0tLS0KfHxkZW5vLmRldgp8fGRvY3MuZGVuby5jb20KfHxkb29tOS5vcmcKfHxk
+d2ViLmxpbmsKfHxkb2NrZXIuaW8KfHxkaXNuZXlwbHVzLmNvbQp8fGRkZXguaW8K
+fHxkLmNhc2gKfHxkb3ViaXl1bmJhY2t1cC5jb20KfHxjbG91ZC5kaWZ5LmFpCi5k
+LWZ1a3l1LmNvbQp8aHR0cDovL2QtZnVreXUuY29tCi5kMTAwLm5ldAp8fGQxMDAu
+bmV0Ci5kMmJheS5jb20KfGh0dHA6Ly9kMmJheS5jb20KLmRhYnIuY28udWsKfHxk
+YWJyLmNvLnVrCmRhYnIuZXUKZGFici5tb2JpCnx8ZGFici5tb2JpCnx8ZGFici5t
+ZQpkYWRhemltLmNvbQp8fGRhZGF6aW0uY29tCi5kYWRpMzYwLmNvbQouZGFmYWJl
+dC5jb20KZGFmYWdvb2QuY29tCmRhZmFoYW8uY29tCi5kYWZvaC5vcmcKLmRhZnRw
+b3JuLmNvbQouZGFnZWxpamtzZXN0YW5kYWFyZC5ubAouZGFpZG9zdHVwLnJ1Cnxo
+dHRwOi8vZGFpZG9zdHVwLnJ1Cnx8ZGFpbHltYWlsLmNvLnVrCi5kYWlseW1vdGlv
+bi5jb20KfHxkYWlseW1vdGlvbi5jb20KfHxkYWlseXNhYmFoLmNvbQouZGFqaXl1
+YW4uY29tCnx8ZGFqaXl1YW4uZGUKZGFqaXl1YW4uZXUKZGFsYWlsYW1hLmNvbQou
+ZGFsYWlsYW1hLm1uCnxodHRwOi8vZGFsYWlsYW1hLm1uCi5kYWxhaWxhbWEucnUK
+fHxkYWxhaWxhbWEucnUKZGFsYWlsYW1hODAub3JnCi5kYWxhaWxhbWEtYXJjaGl2
+ZXMub3JnCi5kYWxhaWxhbWFjZW50ZXIub3JnCnxodHRwOi8vZGFsYWlsYW1hY2Vu
+dGVyLm9yZwpkYWxhaWxhbWFmZWxsb3dzLm9yZwouZGFsYWlsYW1hZmlsbS5jb20K
+LmRhbGFpbGFtYWZvdW5kYXRpb24ub3JnCi5kYWxhaWxhbWFoaW5kaS5jb20KLmRh
+bGFpbGFtYWluYXVzdHJhbGlhLm9yZwouZGFsYWlsYW1hamFwYW5lc2UuY29tCi5k
+YWxhaWxhbWFwcm90ZXN0ZXJzLmluZm8KLmRhbGFpbGFtYXF1b3Rlcy5vcmcKLmRh
+bGFpbGFtYXRydXN0Lm9yZwouZGFsYWlsYW1hdmlzaXQub3JnLm56Ci5kYWxhaWxh
+bWF3b3JsZC5jb20KfHxkYWxhaWxhbWF3b3JsZC5jb20KZGFsaWFubWVuZy5vcmcK
+fHxkYWxpYW5tZW5nLm9yZwouZGFsaXVsaWFuLm9yZwp8fGRhbGl1bGlhbi5vcmcK
+LmRhbmtlNGNoaW5hLm5ldAp8fGRhbmtlNGNoaW5hLm5ldApkYW9sYW4ubmV0Cnx8
+ZGFycmVubGl1d2VpLmNvbQp8fGRhc2hsYW5lLmNvbQp8fGRhdW0ubmV0Ci5kYXZp
+ZC1raWxnb3VyLmNvbQp8aHR0cDovL2RhdmlkLWtpbGdvdXIuY29tCmRheGEuY24K
+fHxkYXhhLmNuCi5kYXlsaWZlLmNvbS90b3BpYy9kYWxhaV9sYW1hCnx8ZGIudHQK
+fHxkYmdqZC5jb20KfHxkY2FyZC50dwpkY21pbGl0YXJ5LmNvbQp8fGRkYy5jb20u
+dHcKfHxkZWFkaG91c2Uub3JnCnx8ZGVhZGxpbmUuY29tCnx8ZGVlcGFpLm9yZwp8
+fGRlY29kZXQuY28KCiEtLU9yaWdpbjpjZG4taTMwJF8KIS0tRXhjZXB0aW9uOiBI
+b21lcGFnZSBhY2Nlc3Mgd2l0aG91dCByc3QKIS0tS2V5d29yZCBpcyAkXwouZGVm
+aW5lYmFiZS5jb20KCnx8ZGVsY2FtcC5uZXQKZGVsaWNpb3VzLmNvbS9HRldib29r
+bWFyawouZGVtb2NyYXRzLm9yZwp8fGRlbW9jcmF0cy5vcmcKLmRlbW9zaXN0by5o
+awp8fGRlbW9zaXN0by5oawp8fGRlc2Muc2UKfHxkZXNzY2kuY29tCi5kZXN0cm95
+LWNoaW5hLmpwCnx8ZGV1dHNjaGUtd2VsbGUuZGUKfHxkZXZpYW50YXJ0LmNvbQp8
+fGRldmlhbnRhcnQubmV0Cnx8ZGV2aW8udXMKfHxkZXZwbi5jb20KfHxkZXZ2LmFp
+CmRmbi5vcmcKZGhhcm1ha2FyYS5uZXQKLmRoYXJhbXNhbGFuZXQuY29tCi5kaWFv
+eXVpc2xhbmRzLm9yZwp8fGRpYW95dWlzbGFuZHMub3JnCi5kaWZhbmd3ZW5nZS5v
+cmcKfGh0dHA6Ly9kaWdpbGFuZC50dy8KLmRpaWdvLmNvbQp8fGRpaWdvLmNvbQou
+ZGlwaXR5LmNvbQp8fGRpcmVjdGNyZWF0aXZlLmNvbQohLS18fGRpc2NvZ3MuY29t
+CiEtLUBAfHxjZG4uZGlzY29ncy5jb20KLmRpc2N1c3MuY29tLmhrCnx8ZGlzY3Vz
+cy5jb20uaGsKLmRpc2N1c3M0dS5jb20KfHxkaXNwLmNjCi5kaXNxdXMuY29tCnx8
+ZGlzcXVzLmNvbQouZGl0LWluYy51cwp8fGRpdC1pbmMudXMKfHxkaXlpbi5vcmcK
+LmRpemhpZGl6aGkuY29tCnx8ZGl6aHV6aGlzaGFuZy5jb20KZGphbmdvc25pcHBl
+dHMub3JnCnx8ZGwtbGFieS5qcAp8fGRsaXZlLnR2Cnx8ZGxzaXRlLmNvbQp8fGRs
+eW91dHViZS5jb20KfHxkbWMubmljbwp8fGRtY2RuLm5ldAouZG5zY3J5cHQub3Jn
+Cnx8ZG5zY3J5cHQub3JnCnx8ZG5zMmdvLmNvbQp8fGRuc3NlYy5uZXQKZG9jdG9y
+dm9pY2Uub3JnCgohLS1Eb2dGYXJ0TmV0d29yawouZG9nZmFydG5ldHdvcmsuY29t
+L3RvdXIKZ2xvcnlob2xlLmNvbQoKLmRvamluLmNvbQp8fGRvbGMuZGUKfHxkb2xm
+Lm9yZy5oawouZG9tYWluLmNsdWIudHcKLmRvbWFpbnRvZGF5LmNvbS5hdQpjaGlu
+ZXNlLmRvbmdhLmNvbQpkb25ndGFpd2FuZy5jb20KfHxkb25ndGFpd2FuZy5jb20K
+LmRvbmd0YWl3YW5nLm5ldAp8fGRvbmd0YWl3YW5nLm5ldAouZG9uZ3lhbmdqaW5n
+LmNvbQp8fGRhbmJvb3J1LmRvbm1haS51cwouZG9udGZpbHRlci51cwp8fGRvb3No
+by5jb20KfHxkb291cmJlc3Qub3JnCi5kb3JqZXNodWdkZW4uY29tCi5kb3RwbGFu
+ZS5jb20KfHxkb3RwbGFuZS5jb20KfHxkb3RzdWIuY29tCi5kb3R2cG4uY29tCnx8
+ZG90dnBuLmNvbQouZG91Yi5pbwp8fGRvdWIuaW8KfHxkb3VibGV0aGlua2xhYi5v
+cmcKfHxkb3Vnc2NyaXB0cy5jb20KfHxkb3VqaW5jYWZlLmNvbQp8aHR0cHM6Ly9i
+YXJ0ZW5kZXIuZG93am9uZXMuY29tCmRwaGsub3JnCmRwcC5vcmcudHcKfHxkcHAu
+b3JnLnR3Cnx8ZHByLmluZm8KfHxkcmFnb25zcHJpbmdzLm9yZwohLS18fGRyYXcu
+aW8KLmRyZWFtYW1hdGV1cnMuY29tCi5kcmVwdW5nLm9yZwp8fGRyZ2FuLm5ldAp8
+fGRyb3Bib29rcy50dgp8fGRyb3Bib3guY29tCnx8ZHJvcGJveGFwaS5jb20KfHxk
+cm9wYm94dXNlcmNvbnRlbnQuY29tCi5kcnR1YmVyLmNvbQouZHNjbi5pbmZvCnxo
+dHRwOi8vZHNjbi5pbmZvCi5kc3RrLmRrCnxodHRwOi8vZHN0ay5kawp8fGR0aWJs
+b2cuY29tCnx8ZHRpYy5taWwKLmR1Y2tkdWNrZ28uY29tCnx8ZHVja2R1Y2tnby5j
+b20KLmR1Y2tsb2FkLmNvbS9kb3dubG9hZAp8fGR1Y2tteWxpZmUuY29tCi5kdWdh
+LmpwCnxodHRwOi8vZHVnYS5qcAouZHVpaHVhLm9yZwp8fGR1aWh1YS5vcmcKfHxk
+dWlodWFocmpvdXJuYWwub3JnCmR1cGluZy5uZXQKfHxkdXBsaWNhdGkuY29tCmR1
+cG9sYS5jb20KZHVwb2xhLm5ldAouZHVzaGkuY2EKfHxkdXlhb3NzLmNvbQp8fGR2
+b3Jhay5vcmcKLmR3LmNvbQp8fGR3LmNvbQp8fGR3LmRlCi5kdy13b3JsZC5jb20K
+fHxkdy13b3JsZC5jb20KLmR3LXdvcmxkLmRlCnxodHRwOi8vZHctd29ybGQuZGUK
+d3d3LmR3aGVlbGVyLmNvbQpkd25ld3MuY29tCnx8ZHduZXdzLmNvbQpkd25ld3Mu
+bmV0Cnx8ZHduZXdzLm5ldAp4eXMuZHhpb25nLmNvbQp8fGR5bmF3ZWJpbmMuY29t
+Cnx8ZHlzZnouY2MKLmR6emUuY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1FRS0t
+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxlNjIxLm5ldAp8fGVkeC1jZG4ub3Jn
+Cnx8ZXZlcmlwZWRpYS5vcmcKfHxlcG9jaHRpbWVzLmNvbS50dwp8fGV0aGVyc2Nh
+bi5jb20KfHxlbGNvbmZpZGVuY2lhbC5jb20KfHxlLWNsYXNzaWNhbC5jb20udHcK
+fHxlLWdvbGQuY29tCi5lLWdvbGQuY29tCi5lLWhlbnRhaS5vcmcKfHxlLWhlbnRh
+aS5vcmcKLmUtaGVudGFpZGIuY29tCnxodHRwOi8vZS1oZW50YWlkYi5jb20KZS1p
+bmZvLm9yZy50dwouZS16b25lLmNvbS5oay9kaXNjdXoKfGh0dHA6Ly9lLXpvbmUu
+Y29tLmhrL2Rpc2N1egouZTEyMy5oawp8fGUxMjMuaGsKLmVhcmx5dGliZXQuY29t
+CnxodHRwOi8vZWFybHl0aWJldC5jb20KLmVhcnRoY2FtLmNvbQouZWFydGh2cG4u
+Y29tCnx8ZWFydGh2cG4uY29tCnx8ZWFzdGFzaWFmb3J1bS5vcmcKLmVhc3Rlcm5s
+aWdodG5pbmcub3JnCi5lYXN0dHVya2VzdGFuLmNvbQp8aHR0cDovL3d3dy5lYXN0
+dHVya2lzdGFuLm5ldC8KLmVhc3R0dXJraXN0YW4tZ292Lm9yZwouZWFzdHR1cmtp
+c3RhbmNjLm9yZwouZWFzdHR1cmtpc3RhbmdvdmVybm1lbnRpbmV4aWxlLnVzCnx8
+ZWFzdHR1cmtpc3RhbmdvdmVybm1lbnRpbmV4aWxlLnVzCi5lYXN5Y2EuY2EKLmVh
+c3lwaWMuY29tCnx8Zm5jLmViYy5uZXQudHcKfHxuZXdzLmViYy5uZXQudHcKLmVi
+b255LWJlYXV0eS5jb20KZWJvb2ticm93c2UuY29tCmVib29rZWUuY29tCnx8ZWNm
+YS5vcmcudHcKfHxlY2ltZy50dwplY21pbmlzdHJ5Lm5ldAouZWNvbm9taXN0LmNv
+bQpiYnMuZWNzdGFydC5jb20KZWRnZWNhc3RjZG4ubmV0Cnx8ZWRnZWNhc3RjZG4u
+bmV0Ci90d2ltZ1wuZWRnZXN1aXRlXC5uZXRcL1wvP2FwcGxlZGFpbHkvCmVkaWN5
+cGFnZXMuY29tCi5lZG1vbnRvbmNoaW5hLmNuCi5lZG1vbnRvbnNlcnZpY2UuY29t
+CmVkb29ycy5jb20KLmVkdWJyaWRnZS5jb20KfHxlZHVicmlkZ2UuY29tCi5lZHVw
+cm8ub3JnCnx8ZWV2cG4uY29tCmVmY2Mub3JnLmhrCi5lZnVrdC5jb20KfGh0dHA6
+Ly9lZnVrdC5jb20KfHxlaWMtYXYuY29tCnx8ZWlyZWluaWtvdGFlcnVrYWkuY29t
+Ci5laXNiYi5jb20KLmVrc2lzb3psdWsuY29tCnx8ZWtzaXNvemx1ay5jb20KZWxl
+Y3Rpb25zbWV0ZXIuY29tCnx8ZWxnb29nLmltCi5lbHBhaXMuY29tCnx8ZWxwYWlz
+LmNvbQouZWx0b25kaXNuZXkuY29tCi5lbWFnYS5jb20vaW5mby8zNDA3CmVtaWx5
+bGF1Lm9yZy5oawouZW1hbm5hLmNvbS9jaGluZXNlVHJhZGl0aW9uYWwKLmVtcGZp
+bC5jb20KLmVtdWxlLWVkMmsuY29tCnxodHRwOi8vZW11bGUtZWQyay5jb20KLmVt
+dWxlZmFucy5jb20KfGh0dHA6Ly9lbXVsZWZhbnMuY29tCi5lbXVwYXJhZGlzZS5t
+ZQouZW5hbnlhbmcubXkKIS0tLmVuYW55YW5nLm15L25ld3MvMjAxNzA1MDIvJUU3
+JUJFJThFJUU1JTlCJUJEJUU0JUI5JThCJUU5JTlGJUIzJUU1JUE0JUE3JUU1JTlD
+JUIwJUU5JTlDJTg3JUUzJTgwJThBJUU4JThCJUI5JUU2JTlFJTlDJUUzJTgwJThC
+JUU3JThCJUFDJUU1JUFFJUI2Cnx8ZW5jcnlwdC5tZQp8fGVuZXdzdHJlZS5jb20K
+LmVuZmFsLmRlCnx8Y2hpbmVzZS5lbmdhZGdldC5jb20KZW5nbGlzaGZvcmV2ZXJ5
+b25lLm9yZwp8fGVuZ2xpc2hmcm9tZW5nbGFuZC5jby51awplbmdsaXNocGVuLm9y
+ZwouZW5saWdodGVuLm9yZy50dwp8fGVudGVybWFwLmNvbQouZXBpc2NvcGFsY2h1
+cmNoLm9yZwouZXBvY2hoay5jb20KfHxlcG9jaGhrLmNvbQplcG9jaHRpbWVzLWJn
+LmNvbQp8fGVwb2NodGltZXMtYmcuY29tCmVwb2NodGltZXMtcm9tYW5pYS5jb20K
+fHxlcG9jaHRpbWVzLXJvbWFuaWEuY29tCmVwb2NodGltZXMuY28uaWwKfHxlcG9j
+aHRpbWVzLmNvLmlsCmVwb2NodGltZXMuY28ua3IKfHxlcG9jaHRpbWVzLmNvLmty
+CmVwb2NodGltZXMuY29tCnx8ZXBvY2h0aW1lcy5jb20KLmVwb2NodGltZXMuY3oK
+fHxlcG9jaHRpbWVzLmRlCnx8ZXBvY2h0aW1lcy5mcgp8fGVwb2NodGltZXMuaXQK
+fHxlcG9jaHRpbWVzLmpwCnx8ZXBvY2h0aW1lcy5ydQp8fGVwb2NodGltZXMuc2UK
+fHxlcG9jaHRpbWVzdHIuY29tCi5lcG9jaHdlZWsuY29tCnx8ZXBvY2h3ZWVrLmNv
+bQp8fGVwb2Nod2Vla2x5LmNvbQp8fGVwb3JuZXIuY29tCi5lcXVpbmVub3cuY29t
+CmVyYWJhcnUubmV0Ci5lcmFjb20uY29tLnR3Ci5lcmF5c29mdC5jb20udHIKLmVy
+ZXB1Ymxpay5jb20KLmVyaWdodHMubmV0Cnx8ZXJpZ2h0cy5uZXQKfHxlcm5lc3Rt
+YW5kZWwub3JnCnx8ZXJvZGFpemVuc3l1LmNvbQp8fGVyb2RvdWppbmxvZy5jb20K
+fHxlcm9kb3VqaW53b3JsZC5jb20KfHxlcm9tYW5nYS1raW5nZG9tLmNvbQp8fGVy
+b21hbmdhZG91emluLmNvbQouZXJvbW9uLm5ldAp8aHR0cDovL2Vyb21vbi5uZXQK
+LmVyb3Byb2ZpbGUuY29tCi5lcm90aWNzYWxvb24ubmV0Ci5lc2xpdGUuY29tCnx8
+ZXNsaXRlLmNvbQouZXRhYS5vcmcuYXUKLmV0YWR1bHQuY29tCmV0YWl3YW5uZXdz
+LmNvbQp8fGV0aXplci5vcmcKfHxldG9ra2kuY29tCnx8ZXRzeS5jb20KLmV0dG9k
+YXkubmV0CmV0dm9ubGluZS5oawouZXVjYXNpbm8uY29tCi5ldWxhbS5jb20KLmV1
+cmVrYXZwdC5jb20KfHxldXJla2F2cHQuY29tCi5ldXJvbmV3cy5jb20KfHxldXJv
+bmV3cy5jb20KZWVhcy5ldXJvcGEuZXUvZGVsZWdhdGlvbnMvY2hpbmEvcHJlc3Nf
+Y29ybmVyL2FsbF9uZXdzL25ld3MvMjAxNS8yMDE1MDcxNl96aAplZWFzLmV1cm9w
+YS5ldS9zdGF0ZW1lbnRzLWVlYXMvMjAxNS8xNTEwMjIKfHxhcHBzLmV2b3ppLmNv
+bQp8fGV2c2Nob29sLm5ldAp8fGV4YmxvZy5qcApAQHx8d3d3LmV4YmxvZy5qcAou
+ZXhjaHJpc3RpYW4uaGsKfHxleGNocmlzdGlhbi5oawp8aHR0cDovL2Jsb2cuZXhj
+aXRlLmNvLmpwCnx8ZXhoZW50YWkub3JnCnx8ZXhtb3Jtb24ub3JnCnx8ZXhwYXRz
+aGllbGQuY29tCi5leHBlY3RoaW0uY29tCnx8ZXhwZWN0aGltLmNvbQpleHBlcnRz
+LXVuaXZlcnMuY29tCnx8ZXhwbG9hZGVyLm5ldAouZXhwcmVzc3Zwbi5jb20KfHxl
+eHByZXNzdnBuLmNvbQouZXh0cmVtZXR1YmUuY29tCmV5ZXZpby5qcAp8fGV5ZXZp
+by5qcAouZXlueS5jb20KfHxleW55LmNvbQouZXpwZWVyLmNvbQoKIS0tLS0tLS0t
+LS0tLS0tLS0tLS0tRkYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8ZmVlZGx5
+LmNvbQp8fGZ1Y2tjY3AueHl6Cnx8ZnVja2NjcC5jb20KfHxmdXJyeWJhci5jb20K
+fHxmb3JiZXMuY29tCnx8ZmluYW5jaWFsZXhwcmVzcy5jb20KfHxmYXN0LmNvbQp8
+fGZhY3RjaGVja2xhYi5vcmcKfHxmdC5jb20KfHxmdWNoc2lhLmRldgp8fGZyZWVz
+cy5vcmcKfHxmcmlsLmpwCnx8ZnJlZS5jb20udHcKfHxmcm90aC56b25lCnx8ZmFu
+Ym94LmNjCnx8ZnJlZS5iZwp8fGYtZHJvaWQub3JnCnx8ZmFjZWJvb2txdW90ZXM0
+dS5jb20KLmZhY2VsZXNzLm1lCnx8ZmFjZWxlc3MubWUKfGh0dHA6Ly9mYWNlc29m
+dGliZXRhbnNlbGZpbW1vbGF0b3JzLmluZm8KfHxmYWNlc29mbnlmdy5jb20KfHxm
+YWN0cGVkaWEub3JnCi5mYWl0aDEwMC5vcmcKfGh0dHA6Ly9mYWl0aDEwMC5vcmcK
+CiEtLUVuaGFuY2VtZW50OgohLS1odHRwOi8vZmFpdGhmdWxleWUuY29tLmRldGFp
+bC53ZWJzaXRlLwohLS1odHRwOi8vZmFpdGhmdWxleWUuY29tLmlwYWRkcmVzcy5j
+b20vCi5mYWl0aGZ1bGV5ZS5jb20KCnx8ZmFpdGh0aGVkb2cuaW5mbwouZmFra3Uu
+bmV0Cnx8ZmFsbGVuYXJrLmNvbQouZmFsc2VmaXJlLmNvbQp8fGZhbHNlZmlyZS5j
+b20KZmFsdW4tY28ub3JnCmZhbHVuYXJ0Lm9yZwp8fGZhbHVuYXNpYS5pbmZvCnxo
+dHRwOi8vZmFsdW5hdS5vcmcKLmZhbHVuYXoubmV0CmZhbHVuZGFmYS5vcmcKZmFs
+dW5kYWZhLWRjLm9yZwp8fGZhbHVuZGFmYS1mbG9yaWRhLm9yZwp8fGZhbHVuZGFm
+YS1uYy5vcmcKfHxmYWx1bmRhZmEtcGEubmV0CmZhbHVuLW55Lm5ldAp8fGZhbHVu
+ZGFmYWluZGlhLm9yZwpmYWx1bmRhZmFtdXNldW0ub3JnCi5mYWx1bmdvbmcuY2x1
+YgouZmFsdW5nb25nLmRlCmZhbHVuZ29uZy5vcmcudWsKfHxmYWx1bmhyLm9yZwpm
+YWx1bmluZm8uZGUKZmFsdW5pbmZvLm5ldAouZmFsdW5waWxpcGluYXMubmV0CmZh
+bWlseWZlZC5vcmcKLmZhbmdlbWluZy5jb20KfHxmYW5nbGl6aGkuaW5mbwp8fGZh
+bmdvbmcub3JnCmZhbmdvbmdoZWlrZS5jb20KfHxmYW5oYW9sb3UuY29tCi5mYW5x
+aWFuZy50awpmYW5xaWFuZ2hvdS5jb20KfHxmYW5xaWFuZ2hvdS5jb20KLmZhbnFp
+YW5nemhlLmNvbQp8fGZhbnFpYW5nemhlLmNvbQp8fGZhbnR2LmhrCmZhcGR1LmNv
+bQpmYXByb3h5LmNvbQohLS0uZmFyeGlhbi5jb20KLmZhd2FuZ2h1aWh1aS5vcmcK
+fHxmYW11bmlvbi5jb20KLmZhbi1xaWFuZy5jb20KZmFuZ2VtaW5nLmNvbQouZmFu
+aGFvZGFuZy5jb20KfHxmYW5xaWFuZy5uZXR3b3JrCnx8ZmFuc3dvbmcuY29tCi5m
+YW55dWUuaW5mbwouZmFyd2VzdGNoaW5hLmNvbQoKIS0tRmFzdGx5CmVuLmZhdm90
+dGVyLm5ldAohLS18fHJudy5nbG9iYWwuc3NsLmZhc3RseS5uZXQKLmdsb2JhbC5z
+c2wuZmFzdGx5Lm5ldAp8fGZyZWV0bHMuZmFzdGx5Lm5ldApueXRpbWVzLm1hcC5m
+YXN0bHkubmV0Cnx8bnl0aW1lcy5tYXAuZmFzdGx5Lm5ldAp8fGZhc3Qud2lzdGlh
+LmNvbQoKfHxmYXN0ZXN0dnBuLmNvbQp8fGZhc3Rzc2guY29tCnx8ZmFzdHN0b25l
+Lm9yZwpmYXZzdGFyLmZtCnx8ZmF2c3Rhci5mbQpmYXlkYW8uY29tL3dlYmxvZwp8
+fGZhei5uZXQKLmZjMi5jb20KLmZjMmNoaW5hLmNvbQouZmMyY24uY29tCnx8ZmMy
+Y24uY29tCmZjMmJsb2cubmV0CnxodHRwOi8vdXlndXIuZmMyd2ViLmNvbS8KLmZk
+YzY0LmRlCi5mZGM2NC5vcmcKLmZkYzg5LmpwCiEtLWZlZWRib29rcy5tb2JpCnx8
+ZmVlZGVyLmNvCnx8ZmVlbHNzaC5jb20KZmVlci5jb20KfGh0dHA6Ly9mZWl0aWFu
+YWNhZGVteS5vcmcKLmZlaXRpYW4tY2FsaWZvcm5pYS5vcmcKfHxmZWl4aWFvaGFv
+LmNvbQp8fGZlbWluaXN0dGVhY2hlci5jb20KLmZlbmd6aGVuZ2h1LmNvbQp8fGZl
+bmd6aGVuZ2h1LmNvbQouZmVuZ3poZW5naHUubmV0Cnx8ZmVuZ3poZW5naHUubmV0
+Ci5mZXZlcm5ldC5jb20KfGh0dHA6Ly9mZi5pbQpmZmZmZi5hdApmZmxpY2suY29t
+Ci5mZnZwbi5jb20KZmdtdHYubmV0Ci5mZ210di5vcmcKLmZocmVwb3J0cy5uZXQK
+fGh0dHA6Ly9maHJlcG9ydHMubmV0Ci5maWdwcmF5ZXIuY29tCnx8ZmlncHJheWVy
+LmNvbQouZmlsZWZseWVyLmNvbQp8fGZpbGVmbHllci5jb20KfGh0dHA6Ly9mZWVk
+cy5maWxlZm9ydW0uY29tCi5maWxlc2VydmUuY29tL2ZpbGUKZmlsbHRoZXNxdWFy
+ZS5vcmcKZmlsbWluZ2ZvcnRpYmV0Lm9yZwouZmlsdGhkdW1wLmNvbQouZmluY2h2
+cG4uY29tCnx8ZmluY2h2cG4uY29tCiEtLWZpbmRib29rLnR3CmZpbmRtZXNwb3Qu
+Y29tCnx8ZmluZHlvdXR1YmUuY29tCnx8ZmluZHlvdXR1YmUubmV0Ci5maW5nZXJk
+YWlseS5jb20KLmZpcmVhcm1zd29ybGQubmV0CnxodHRwOi8vZmlyZWFybXN3b3Js
+ZC5uZXQKfHxyZWxheS5maXJlZm94LmNvbQp8fGZpcmVvZmxpYmVydHkuaW5mbwp8
+fGZpcmVvZmxpYmVydHkub3JnCi5maXJldHdlZXQuaW8KfHxmaXJldHdlZXQuaW8K
+fHxvcGVuLmZpcnN0b3J5Lm1lCnx8Zmlyc3Rwb3N0LmNvbQp8fGZpcnN0cmFkZS5j
+b20KfHxmaXNoLmF1ZGlvCiEtLXx8ZmxhZ2ZveC5uZXQKLmZsYWdzb25saW5lLml0
+CmZsZXNoYm90LmNvbQouZmxldXJzZGVzbGV0dHJlcy5jb20KfGh0dHA6Ly9mbGV1
+cnNkZXNsZXR0cmVzLmNvbQp8fGZsZ2p1c3RpY2Uub3JnCgohLS18fGZhcm02LnN0
+YXRpY2ZsaWNrci5jb20KIS0tLmZsaWNrci5jb20vcGhvdG9zLzQ2MjMxMDc3QE4w
+NgohLS0uZmxpY2tyLmNvbS9ncm91cHMvYWl3ZWl3ZWkKIS0tLmZsaWNrci5jb20v
+cGhvdG9zL2RpZ2l0YWxib3kxMDAKIS0tLmZsaWNrci5jb20vcGhvdG9zL2Z6aGVu
+Z2h1CiEtLS5mbGlja3IuY29tL3Bob3Rvcy9sb25lbHlmb3gKIS0tZmxpY2tyLmNv
+bS9waG90b3MvdmFudmFuLzUyOTkyNTE1NwohLS0uZmxpY2tyLmNvbS9waG90b3Mv
+d2ludGVya2FuYWwKIS0tLmZsaWNrci5jb20vcGhvdG9zL3pvbGEKfHxmbGlja3Iu
+Y29tCnx8c3RhdGljZmxpY2tyLmNvbQoKZmxpY2tyaGl2ZW1pbmQubmV0Ci5mbGlj
+a3JpdmVyLmNvbQouZmxpbmcuY29tCnx8ZmxpcGthcnQuY29tCnx8ZmxvZy50dwp8
+fGZsb3dob25na29uZy5uZXQKLmZseXZwbi5jb20KfHxmbHl2cG4uY29tCnxodHRw
+Oi8vY24uZm1ubm93LmNvbQpibG9nLmZvb2xzbW91bnRhaW4uY29tCi5mb3J1bTRo
+ay5jb20KZmFuZ29uZy5mb3J1bXMtZnJlZS5jb20KcGlvbmVlci13b3JrZXIuZm9y
+dW1zLWZyZWUuY29tCiEtLWZvdXJzcXVhcmUuY29tCiEtLXxodHRwOi8vNHNxLmNv
+bQp8aHR0cHM6Ly9zcyouNHNxaS5uZXQKdmlkZW8uZm94YnVzaW5lc3MuY29tCnxo
+dHRwOi8vZm94Z2F5LmNvbQp8fGZyaW5nZW5ldHdvcmsuY29tCnx8ZmxlY2hlaW50
+aGVwZWNoZS5mcgouZm9jaGsub3JnCnx8Zm9jaGsub3JnCnx8Zm9jdXN0YWl3YW4u
+dHcKLmZvY3VzdnBuLmNvbQp8fGZvZmcub3JnCi5mb29vb28uY29tCnx8Zm9vb29v
+LmNvbQp8fGZvcmVpZ25hZmZhaXJzLmNvbQp8fGZvdW50bWVkaWEuaW8KfHxmb3Vy
+dGhpbnRlcm5hdGlvbmFsLm9yZwp8fGZveHN1Yi5jb20KZm94dGFuZy5jb20KLmZw
+bXQub3JnCnxodHRwOi8vZnBtdC5vcmcKLmZwbXQudHcKLmZwbXQtb3NlbC5vcmcK
+fHxmcG10bWV4aWNvLm9yZwp8fGZxcm91dGVyLmNvbQp8fGZyYW5rMjAxOS5tZQp8
+fGZyYW5rbGMuY29tCi5mcmVha3NoYXJlLmNvbQp8aHR0cDovL2ZyZWFrc2hhcmUu
+Y29tCmZyZWUtZ2F0ZS5vcmcKLmZyZWUtaGFkYS1ub3cub3JnCmZyZWUtcHJveHku
+Y3oKLmZyZWUuZnIvYWRzbApraW5lb3guZnJlZS5mcgp0aWJldGxpYnJlLmZyZWUu
+ZnIKfHxmcmVlYnJvd3Nlci5vcmcKLmZyZWVjaGFsLmNvbQouZnJlZWRvbWhvdXNl
+Lm9yZwp8fGZyZWVkb21ob3VzZS5vcmcKLmZyZWVkb21zaGVyYWxkLm9yZwp8fGZy
+ZWVkb21zaGVyYWxkLm9yZwp8fGZyZWVnYW8uY29tCmZyZWVpbGhhbXRvaHRpLm9y
+Zwp8fGZyZWVrYXpha2hzLm9yZwouZnJlZWxvdHRvLmNvbQp8fGZyZWVsb3R0by5j
+b20KZnJlZW1hbjIuY29tCi5mcmVlb3BlbnZwbi5jb20KZnJlZW1vcmVuLmNvbQpm
+cmVlbW9yZW5ld3MuY29tCmZyZWVtdXNlLm9yZy9hcmNoaXZlcy83ODkKZnJlZW5l
+dC1jaGluYS5vcmcKZnJlZW5ld3Njbi5jb20KY24uZnJlZW9uZXMuY29tCi5mcmVl
+b3oub3JnL2Jicwp8fGZyZWVvei5vcmcKfHxmcmVlc3NoLnVzCnx8ZnJlZWJlYWNv
+bi5jb20KLmZyZWVjaGluYS5uZXdzCnx8ZnJlZWNoaW5hd2VpYm8uY29tCi5mcmVl
+ZG9tY29sbGVjdGlvbi5vcmcvaW50ZXJ2aWV3cy9yZWJpeWFfa2FkZWVyCi5mcmVl
+Zm9ydW1zLm9yZwp8fGZyZWVuZXRwcm9qZWN0Lm9yZwouZnJlZW96Lm9yZwouZnJl
+ZXRpYmV0Lm5ldAp8fGZyZWV0aWJldC5vcmcKLmZyZWV0aWJldGFuaGVyb2VzLm9y
+Zwp8aHR0cDovL2ZyZWV0aWJldGFuaGVyb2VzLm9yZwp8fGZyZWV0cmliZS5tZQou
+ZnJlZXZpZXdtb3ZpZXMuY29tCi5mcmVldnBuLm1lCnxodHRwOi8vZnJlZXZwbi5t
+ZQp8fGZyZWV3YWxscGFwZXI0Lm1lCi5mcmVld2Vicy5jb20KLmZyZWV3ZWNoYXQu
+Y29tCnx8ZnJlZXdlY2hhdC5jb20KZnJlZXdlaWJvLmNvbQp8fGZyZWV3ZWliby5j
+b20KLmZyZWV4aW53ZW4uY29tCnx8ZnJlZXpoaWh1Lm9yZwp8fGZyaWVuZGZlZWQu
+Y29tCnx8ZnJpZW5kcy1vZi10aWJldC5vcmcKLmZyaWVuZHNvZnRpYmV0Lm9yZwp8
+fGZyaWVuZHNvZnRpYmV0Lm9yZwpmcmVlY2hpbmEubmV0CnxodHRwOi8vd3d3Lnpl
+bnN1ci5mcmVlcmsuY29tLwpmcmVldnBuLm5sCmZyZWV5ZWxsb3cuY29tCmhrLmZy
+aWVuZGR5LmNvbS9oawp8aHR0cDovL2FkdWx0LmZyaWVuZGZpbmRlci5jb20vCi5m
+cmluZy5jb20KfHxmcmluZy5jb20KLmZyb21jaGluYXRvdXNhLm5ldAp8fGZyb21t
+ZWwubmV0Ci5mcm9udGxpbmVkZWZlbmRlcnMub3JnCnx8ZnJvbnRsaW5lZGVmZW5k
+ZXJzLm9yZwouZnJvb3R2cG4uY29tCnx8ZnJvb3R2cG4uY29tCnx8ZnNja2VkLm9y
+ZwouZnN1cmYuY29tCi5mdHYuY29tLnR3Cnx8ZnR2LmNvbS50dwp8fGZ0dm5ld3Mu
+Y29tLnR3CmZ1Y2QuY29tCmZ1Y2tnZncub3JnCi5mdWxpb25lLmNvbQp8aHR0cHM6
+Ly9mdWxpb25lLmNvbQp8fGZ1bGxlcmNvbnNpZGVyYXRpb24uY29tCnx8ZnVsbHNl
+cnZpY2VnYW1lLmNvbQouZnVuZi50dwpmdW5wLmNvbQouZnVxLmNvbQouZnVyaGhk
+bC5vcmcKfHxmdXJpbmthbi5jb20KLmZ1dHVyZWNoaW5hZm9ydW0ub3JnCnx8ZnV0
+dXJlbWVzc2FnZS5vcmcKLmZ1eC5jb20KLmZ1eWluZGlhbnRhaS5vcmcKLmZ1eXUu
+b3JnLnR3Cnx8ZncuY20KLmZ4Y20tY2hpbmVzZS5jb20KfHxmeGNtLWNoaW5lc2Uu
+Y29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1HRy0tLS0tLS0tLS0tLS0tLS0tLS0t
+LS0tLS0KfHxnaXRsYWIubmV0CnxodHRwOi8vZ21wNC5jb20KfHxnZXRzZXNzaW9u
+Lm9yZwp8fGdkYWlseS5vcmcKfHxnZndhdGNoLm9yZwp8fGdvLXRvLXpsaWJyYXJ5
+LnNlCnx8Z2l0Ym9vay5pbwouZzZoZW50YWkuY29tCnxodHRwOi8vZzZoZW50YWku
+Y29tCnx8Zy1xdWVlbi5jb20KfHxnYWIuY29tCnx8Z2Fib2NvcnAuY29tCi5nYWVw
+cm94eS5jb20KLmdhZm9ydW0ub3JnCi5nYWdhb29sYWxhLmNvbQp8fGdhZ2Fvb2xh
+bGEuY29tCi5nYWxheHltYWNhdS5jb20KfHxnYWxlbnd1LmNvbQouZ2Fsc3RhcnMu
+bmV0Cnx8Z2FtZTczNS5jb20KZ2FtZWJhc2UuY29tLnR3CmdhbWVqb2x0LmNvbQp8
+aHR0cDovL3dpa2kuZ2FtZXJwLmpwCnx8Z2FtZXIuY29tLnR3Ci5nYW1lci5jb20u
+dHcKLmdhbWV6LmNvbS50dwp8fGdhbWV6LmNvbS50dwouZ2Ftb3VzYS5jb20KLmdh
+b21pbmcubmV0Cnx8Z2FvbWluZy5uZXQKZ2FuZ2VzLmNvbQp8fGdhbmppbmcuY29t
+Cnx8Z2FuamluZ3dvcmxkLmNvbQouZ2FvcGkubmV0CnxodHRwOi8vZ2FvcGkubmV0
+CmdhcmRlbm5ldHdvcmtzLmNvbQp8fGdhcmRlbm5ldHdvcmtzLm9yZwohLS1JUCBv
+ZiBHYXJkZW4gTmV0d29yawo3Mi41Mi44MS4yMgp8fGdhcnRsaXZlLmNvbQp8fGdh
+dGhlci5jb20KLmdhdGhlcnByb3h5LmNvbQouZ2F5YnViYmxlLmNvbQouZ2F5Y24u
+bmV0Ci5nYXlodWIuY29tCnx8Z2F5bWFwLmNjCi5nYXltZW5yaW5nLmNvbQouZ2F5
+dHViZS5jb20KIS0tfHxnYXl0dWJlLmNvbQp8fGltYWdlcy1nYXl0dWJlLmNvbQou
+Z2F5d2F0Y2guY29tCnxodHRwOi8vZ2F5d2F0Y2guY29tCi5nYXpvdHViZS5jb20K
+fHxnYXpvdHViZS5jb20KfHxnY2Mub3JnLmhrCnx8Z2NsdWJzLmNvbQp8fGdjbWFz
+aWEuY29tCi5nY3BuZXdzLmNvbQp8aHR0cDovL2djcG5ld3MuY29tCmdkemYub3Jn
+Cnx8Z2Vlay1hcnQubmV0CmdlZWtlcmhvbWUuY29tLzIwMTAvMDMveGl4aWFuZy1w
+cm9qZWN0LWNyb3NzLWdmdwouZ2VraWthbWUuY29tCnxodHRwOi8vZ2VraWthbWUu
+Y29tCi5nZWxib29ydS5jb20KfGh0dHA6Ly9nZWxib29ydS5jb20KfHxnZW5lcmF0
+ZWQucGhvdG9zCnx8Z2VuaXVzLmNvbQohLS18fGdlbnVpdGVjLmNvbQouZ2VvY2l0
+aWVzLmNvLmpwCi5nZW9jaXRpZXMuY29tL1NpbGljb25WYWxsZXkvQ2lyY3VpdC81
+NjgzL2Rvd25sb2FkLmh0bWwKaGsuZ2VvY2l0aWVzLmNvbQpnZW9jaXRpZXMuanAK
+fHxnZXBoLmlvCi5nZXJlZm91bmRhdGlvbi5vcmcKfHxnZXRhc3RyaWxsLmNvbQou
+Z2V0Y2h1LmNvbQouZ2V0Y2xvYWsuY29tCnx8Z2V0Y2xvYWsuY29tCnx8Z2V0Zm94
+eXByb3h5Lm9yZwp8fGdldGdvbS5jb20KLmdldGkycC5uZXQKfHxnZXRpMnAubmV0
+CmdldGl0b24uY29tCi5nZXRqZXRzby5jb20vZm9ydW0KLmdldGxhbnRlcm4ub3Jn
+Cnx8Z2V0bGFudGVybi5vcmcKfHxnZXRtYWx1cy5jb20KLmdldHNvY2lhbHNjb3Bl
+LmNvbQp8fGdldHN5bmMuY29tCnx8Z2V0dHIuY29tCmdmYnYuZGUKLmdmc2FsZS5j
+b20KfHxnZnNhbGUuY29tCi5nZncucHJlc3MKfHxnZncucHJlc3MKfHxnZncucmVw
+b3J0Ci5nZ3NzbC5jb20KfHxnZ3NzbC5jb20KIS0tfHxnaG9zdC5vcmcKLmdob3N0
+cGF0aC5jb20KfHxnaG9zdHBhdGguY29tCnx8Z2h1dC5vcmcKLmdpYW50ZXNzbmln
+aHQuY29tCnxodHRwOi8vZ2lhbnRlc3NuaWdodC5jb20KLmdpZnJlZS5jb20KfHxn
+aWdhLXdlYi5qcAp0dy5naWdhY2lyY2xlLmNvbQpnaWdwb3Juby5ydQp8fGdpcmxi
+YW5rZXIuY29tCi5naXQuaW8KfHxnaXQuaW8KfGh0dHA6Ly9zb2Z0d2FyZWRvd25s
+b2FkLmdpdGJvb2tzLmlvCnx8cmF3LmdpdGhhY2suY29tCgohLS0tR2l0SHViLS0t
+Cnx8Z2l0aHViLmJsb2cKfHxnaXRodWIuY29tCnx8Z2l0aHViY29waWxvdC5jb20K
+IS0tZ2l0aHViLmNvbS9nZXRsYW50ZXJuCiEtLXxodHRwczovL2dpc3QuZ2l0aHVi
+LmNvbQohLS1odHRwOi8vY3RobG8uZ2l0aHViLmlvL2hrdHYKIS0taGFoYXhpeGku
+Z2l0aHViLmlvCiEtLXxodHRwczovL2hhaGF4aXhpLmdpdGh1Yi5pbwohLS18fGhh
+b2VsLmdpdGh1Yi5pbwohLS18aHR0cDovL29uaW9uaGFja2VyLmdpdGh1Yi5pbwoh
+LS18fHJnMy5naXRodWIuaW8KIS0tfHxzaWthb3poZTE5OTcuZ2l0aHViLmlvCiEt
+LXx8c29kYXRlYS5naXRodWIuaW8KIS0tfHx0ZXJtaW51czIwNDkuZ2l0aHViLmlv
+CiEtLXx8dG91dHlyYXRlci5naXRodWIuaW8KIS0td3NnemFvLmdpdGh1Yi5pbwoh
+LS18aHR0cHM6Ly93c2d6YW8uZ2l0aHViLmlvCi5naXRodWIuaW8KfHxnaXRodWIu
+aW8KfHxnaXRodWJ1c2VyY29udGVudC5jb20KfHxnaXRodWJhc3NldHMuY29tCgou
+Z2l6bGVuLm5ldAp8fGdpemxlbi5uZXQKLmdqY3p6LmNvbQp8fGdqY3p6LmNvbQp8
+fGdsYXJpdHkuYXBwCnx8Z2xvYmFsamloYWQubmV0Cmdsb2JhbG1lZGlhb3V0cmVh
+Y2guY29tCmdsb2JhbG11c2V1bW9uY29tbXVuaXNtLm9yZwp8fGdsb2JhbHJlc2N1
+ZS5uZXQKLmdsb2JhbHRtLm9yZwouZ2xvYmFsdm9pY2Vzb25saW5lLm9yZwp8fGds
+b2JhbHZvaWNlc29ubGluZS5vcmcKfHxnbG9iYWx2cG4ubmV0Ci5nbG9jay5jb20K
+Z2x1Y2ttYW4uY29tL0RhbGFpTGFtYQp8fGdtZ2FyZC5jb20KfGh0dHA6Ly93d3cu
+Z21pZGRsZS5jb20KfGh0dHA6Ly93d3cuZ21pZGRsZS5uZXQKLmdtbGwub3JnCnx8
+c3VjaGUuZ214Lm5ldAp8fGduY2kub3JnLmhrCnx8Z25ld3Mub3JnCnx8Z29hZ2Vu
+dC5iaXoKfHxnb2RhZGR5LmNvbQpnb2Rmb290c3RlcHMub3JnCnx8Z29kZm9vdHN0
+ZXBzLm9yZwpnb2RzZGlyZWN0Y29udGFjdC5jby51awouZ29kc2RpcmVjdGNvbnRh
+Y3Qub3JnCmdvZHNkaXJlY3Rjb250YWN0Lm9yZy50dwouZ29kc2ltbWVkaWF0ZWNv
+bnRhY3QuY29tCnx8Z29mdW5kbWUuY29tCnx8Z29oYXBweS5jb20udHcKLmdva2Jh
+eXJhay5jb20KLmdvbGRiZXQuY29tCnx8Z29sZGJldHNwb3J0cy5jb20KfHxnb2xk
+ZW4tYWdlcy5vcmcKfHxnb2xkZW5leWV2YXVsdC5jb20KLmdvbGRlbmZyb2cuY29t
+Cnx8Z29sZGVuZnJvZy5jb20KLmdvbGRzdGVwLm5ldAp8fGdvbGR3YXZlLmNvbQp8
+fGdvbmdtLmluCmJsb2cuZ29vLm5lLmpwL2R1Y2stdGFpbF8yMDA5Cmdvb2QubmV3
+cwouZ29vZGF5Lnh5egp8fGdvb2RheS54eXoKfHxnb29kaG9wZS5zY2hvb2wKfHxn
+b29kbmV3c25ldHdvcmsub3JnCi5nb29kcmVhZHMuY29tCnx8Z29vZHJlYWRzLmNv
+bQouZ29vZHJlYWRlcnMuY29tCnx8Z29vZHJlYWRlcnMuY29tCi5nb29kdHYuY29t
+LnR3Ci5nb29kdHYudHYKfHxnb29maW5kLmNvbQouZ29wZXRpdGlvbi5jb20KfHxn
+b3BldGl0aW9uLmNvbQp8fGdvcmVmb3J1bS5jb20KfHxnb3RxdWVzdGlvbnMub3Jn
+Ci5nb3RydXN0ZWQuY29tCnx8Z290cnVzdGVkLmNvbQp8fGdvdHcuY2EKfHxncmFt
+bWFseS5jb20KZ3JhbmR0cmlhbC5vcmcKLmdyYXBoaXMubmUuanAKfHxncmFwaGlz
+Lm5lLmpwCnx8Z3JhcGhxbC5vcmcKfHxncmF2YXRhci5jb20KZ3JlYXRmaXJld2Fs
+bC5iaXoKLmdyZWF0ZmlyZXdhbGxvZmNoaW5hLm9yZwp8fGdyZWF0ZmlyZXdhbGxv
+ZmNoaW5hLm9yZwouZ3JlZW5wYXJ0eS5vcmcudHcKfHxncmVlbnBlYWNlLm9yZwou
+Z3JlZW5yZWFkaW5ncy5jb20vZm9ydW0KfHxncmVhc3lmb3JrLm9yZwpncmVhdHJv
+Yy5vcmcKZ3JlYXR6aG9uZ2h1YS5vcmcKLmdyZWVucGVhY2UuY29tLnR3Ci5ncmVl
+bnZwbi5uZXQKfHxncmVlbnZwbi5uZXQKLmdyZWVudnBuLm9yZwp8fGdyaW5kci5j
+b20KfHxncm91bmQubmV3cwpncy1kaXNjdXNzLmNvbQp8fGdzZWFyY2gubWVkaWEK
+fHxndHJpY2tzLmNvbQpndWFuY2hhLm9yZwouZ3VhcmRzdGVyLmNvbQouZ3VuLXdv
+cmxkLm5ldApndW5zYW5kYW1tby5jb20KfHxndXR0ZXJ1bmNlbnNvcmVkLmNvbQp8
+fGd2bS5jb20udHcKfHxnd2lucy5vcmcKLmd6bS50dgp8fGd6b25lLWFuaW1lLmlu
+Zm8KCiEtLS0tLS0tLS0tLS0tR0hTLS0tLS0KIS18fGZlZWRzLmNic25ld3MuY29t
+CiEtfHx3d3cuY2hpbmVzZWFsYnVtYXJ0LmNvbQp8fGNsZW1lbnRpbmUtcGxheWVy
+Lm9yZwohLXx8Y2xlbWVzaGEub3JnCiEtfHx3d3cuY2xvdWRnaXJsZnJpZW5kLmNv
+bQohLXx8Y29jb2F3aXRobG92ZS5jb20KIS18fGJsb2cuY29udHJvbHNwYWNlLm9y
+ZwohLUQKIS18fHd3dy5kYWlseWd5YW4uY29tCiEtfHxkYWlseXRvZG8ub3JnCiEt
+fHxibG9nLmRhbm1hcm5lci5jb20KIS18fGdpdGh1Yi5kYW5tYXJuZXIuY29tCiEt
+fHxkZXNpZ24tc2VlZHMuY29tCiEtfHxkZXNpZ25lcnMtYXJ0aXN0cy5jb20KIS18
+fG1haWwuZGl5YW5nLm9yZwohLXx8YmxvZy5kb3VnaGVsbG1hbm4uY29tCiEtfHxk
+b3duZm9yZXZlcnlvbmVvcmp1c3RtZS5jb20KIS18fGRyb2lkc2VjdXJpdHkuY29t
+CiEtfHx3d3cuZHJvcG1vY2tzLmNvbQohLXx8ZHVtYmxpdHRsZW1hbi5jb20KIS1F
+CmVjaG9mb24uY29tCiEtfHxlY2hvZm9uLmNvbQohLXx8ZXBjLWphdi5jb20KIS18
+fGV2ZXJkYXJrLmluZm8KIS18fGV2aGVhZC5jb20KIS1GCiEtfHxmYWNpbGVsb2dp
+bi5jb20KIS18fCouZmF0ZHVjay5vcmcKIS18fGJsb2cuZmRjbi5vcmcKIS18fGZm
+dG9nby5jb20KIS18fGZsaWdodHNpbXRhbGsuY29tCiEtfHxtY2xlZS5mb29sbWUu
+bmV0CiEtfHx3d3cuZnJpZW5kZGVjay5jb20KIS18fGZyaW5nZXNwb2lsZXJzLmNv
+bQohLXx8ZnJpbmdldGVsZXZpc2lvbi5jb20KIS18fGZ1bnBlYS5jb20KIS1HCiEt
+fHxibG9nLmdhdGVpbi5vcmcKIS18fGZlZWRzLmdhd2tlci5jb20KIS18fGdlZWt0
+YW5nLmNvbQohLXx8Z2VvaG90LnVzCiEtfHxnZXRhcm91bmQuY29tCiEtfHxnbWVy
+Lm5ldAohLXx8d3d3Lmdtb3RlLm9yZwohLXx8YmxvZy5nbzJ3ZWIyMC5uZXQKIS18
+fGdvb2dsZS1tZWxhbmdlLmNvbQohLXx8ZmFtZS5nb256b2xhYnMub3JnCiEtfHxn
+b3ZlY24ub3JnCiEtfHxncXVldWVzLmNvbQohLXx8Z3JhcGh5Y2FsYy5jb20KIS18
+fGJsb2cuZ3Jvd2xmb3J3aW5kb3dzLmNvbQohLUgKIS18fGhjbS5jb20udHcKIS18
+fGJsb2cuaGVhZGl1cy5jb20KIS18fGhvZ2JheXNvZnR3YXJlLmNvbQohLXx8Ymxv
+Zy5ob3RvdC5vcmcKIS18fGZlZWRzLmhvd3N0dWZmd29ya3MuY29tCiEtfHxodWhh
+aXRhaS5jb20KIS18fGJsb2cuaHVtYW5yaWdodHNmaXJzdC5vcmcKIS1JCiEtfHxz
+aXRlLmljdS1wcm9qZWN0Lm9yZwohLXx8aWdvcndhcmUuY29tCiEtfHxpaGFzMTMz
+N2NvZGUuY29tCiEtfHxpbmtub3V2ZWF1LmNvbQohLXx8aW5vdGUudHcKIS18fGly
+b25oZWxtZXQuY29tCiEtfHxpd2Z3Y2YuY29tCiEtSgohLXx8YmxvZy5qYW5nbXQu
+Y29tCiEtfHxibG9nLmpheWZpZWxkcy5jb20KIS18fGJsb2cuam9pbnQubmV0CiEt
+fHxibG9nLmpzcXVhcmVkamF2YXNjcmlwdC5jb20KIS18fGJsb2cuanRid29ybGQu
+Y29tCiEtSwohLXx8a2F0aHlzY2h3YWxiZS5jb20KIS18fHRvbWF0b3Zwbi5rZWl0
+aG1veWVyLmNvbQohLXx8d3d3LmtlaXRobW95ZXIuY29tCiEtfHxrZW5kYWx2YW5k
+eWtlLmNvbQohLXx8YmxvZy5rZW5nYW8udHcKIS18fGxvZy5rZXNvLmNuCiEtfHx3
+d3cua2hhbmFjYWRlbXkub3JnCnx8d3d3LmtsaXAubWUKIS18fHVzYmxvYWRlcmd4
+LmtvdXJlaW8ubmV0CiEtfHxibG9nLmtvd2FsY3p5ay5pbmZvCiEtTAohLXx8bGFi
+eXJpbnRoMi5jb20KIS18fGxhcnNnZW9yZ2UuY29tCiEtfHxibG9nLmxhc3RwYXNz
+LmNvbQohLXx8ZG9jcy5sYXRleGxhYi5vcmcKIS18fGxlYW5lc3NheXMuY29tCiEt
+fHxibG9nLmxpZGFvYmluZy5pbmZvCiEtfHxsb2cubGlnaHRvcnkubmV0CiEtfHxm
+ZWVkcy5saW1pLm5ldAohLXx8d3d3LmxpdGVhcHBsaWNhdGlvbnMuY29tCiEtfHxi
+bG9nLmxpdWthbmd4dS5pbmZvCiEtfHx0d2l0dGVyLmxpdWthbmd4dS5pbmZvCiEt
+fHxvYXNpc25ld3Nyb29tLmxpdmU0ZXZlci51cwohLXx8d3d3LmxvY2tlcmdub21l
+LmNvbQohLXx8bG9jcWwuY29tCkBAfHxzaXRlLmxvY3FsLmNvbQohLXx8ZmVlZHMu
+bG9pY2xlbWV1ci5jb20KIS18fGJsb2cubG91aXNncmF5LmNvbQohLU0KIS18fG1h
+ZGVieXNvZmEuY29tCiEtfHxtYWRlbW9pc2VsbGVyb2JvdC5jb20KIS18fG1hc2Ft
+aXhlcy5jb20KIS18fHd3dy5tZXRhbXVzZS5uZXQKIS18fGJsb2cubWV0YXNwbG9p
+dC5jb20KIS18fG1pbGF6aS5jb20KIS18fHd3dy5taW5pd2VhdGhlci5jb20KIS18
+fHR3aXR0ZXIubWlzc2l1LmNvbQohLXx8cGx1cmt0b3AtYnV0dG9uLm1tZGF5cy5j
+b20KIS18fGZlZWRzLm1vYmlsZXJlYWQuY29tCiEtfHx3d3cubW9kZXJuaXpyLmNv
+bQohLXx8d3d3Lm1vZGsuaXQKIS18fG15dHdpc2hpcnQuY29tCiEtTgohLXx8Ymxv
+Zy5uZXRmbGl4LmNvbQohLXx8YmxvZy5uaWhpbG9naWMuZGsKIS18fG50bGsub3Jn
+CiEtfHxudnF1YW4ub3JnCiEtfHxub2dvb2RhdGNvZGluZy5jb20KIS18fGJsb2cu
+bm90ZG90Lm5ldAohLXx8d3d3Lm5vdGlmeS5pbwohLU8KIS18fGJsb2cub2J2aW91
+cy5jb20KIS18fG9uZWJpZ2ZsdWtlLmNvbQohLXx8b3ZlcnN0aW11bGF0ZS5jb20K
+IS1QCiEtfHxwY2dlZWtibG9nLmNvbQohLXx8ZmVlZHMucGRmY2htLm5ldAohLXx8
+ZmVlZHMucGVvcGxlLmNvbQohLXx8YmxvZy5wZXJzaXN0ZW50LmluZm8KIS18fGNo
+cm9tZS5wbGFudHN2c3pvbWJpZXMuY29tCiEtfHxwb3J0YWJsZXNvZnQub3JnLnJ1
+CiEtfHxwcmFzYW5uYXRlY2gubmV0CiEtfHx0YWxrLm5ld3MucHRzLm9yZy50dwoh
+LXx8cHl0aG9uLWV4Y2VsLm9yZwohLVEKIS1SCiEtfHxyLWNoYXJ0LmNvbQohLXx8
+cmFtZXNoc3VicmFtYW5pYW4ub3JnCiEtfHxyYXBpZC5wawohLXx8YmxvZy5yZW5h
+bnNlLmNvbQohLXx8cm9iZXJ0bWFvLmNvbQohLXx8d3d3LnJvbWVvLWZveHRyb3Qu
+Y29tCiEtUwohLXx8c2FsbWl5dWNrLmNvbQohLXx8c2Ftc2FsLmNvbQohLXx8Ymxv
+Zy5zZWVtaW5nbGVlLmNvbQohLXx8YmxvZy5zZmxvdy5jb20KIS18fGJsb2cuc2ln
+ZnBlLmNvbQohLXx8c2ltcGxldGV4dC53cwohLXx8d3d3LnNrdWxwdC5vcmcKIS18
+fHJzcy5zbGFzaGRvdC5vcmcKIS18fHNuaXBwZXRzYXBwLmNvbQohLXx8dy5zbnMu
+bHkKIS18fHd3dy5zb2NpYWxubW9iaWxlLmNvbQohLXx8d3d3LnNvY2lhbHdob2lz
+LmNvbQohLXx8c3Bpcml0amIub3JnCiEtfHxzc2Jvb2suY29tCiEtfHxzc2hmb3J3
+YXJkaW5nLmNvbQohLXx8c3RhdGlvbmVyaWEuY29tCnx8c3RlcGhhbmllcmVkLmNv
+bQohLXx8c3Vuamlkb25nLm5ldAohLXx8c3luaXVtc29mdHdhcmUuY29tCkBAfHxk
+b3dubG9hZC5zeW5pdW1zb2Z0d2FyZS5jb20KIS1UCiEtfHx0YWd4ZWRvLmNvbQoh
+LXx8YmxvZy50YXRvZWJhLm9yZwohLXx8d3d3LnRlY2hmb2IuY29tCiEtfHx0ZWFj
+aHBhcmVudHN0ZWNoLm9yZwohLXx8dGhlOHBlbi5jb20KIS18fHRoZWlwaG9uZXdp
+a2kuY29tCiEtfHxibG9nLnRoZXNpbGVudG51bWJlci5tZQohLXx8dGhlc3BvbnR5
+LmNvbQohLXx8dGhldWx0cmFsaW54LmNvbQohLXx8YmxvZy50aGluay1hc3luYy5j
+b20KIS18fHRvcm5hZG93ZWIub3JnCiEtfHx0cmFuc3BhcmVudHVwdGltZS5jb20K
+IS18fHRyaWFuZ3VsYXRpb25ibG9nLmNvbQohLXx8YmxvZy50c3VuYW5ldC5uZXQK
+IS18fGVuLnR1eGVyby5jb20KIS18fHR3YXp6dXAuY29tCiEtfHx0d2VldHN3ZWxs
+LmNvbQohLXx8dHdpYmVzLmNvbQohLXx8YXJ0LnR3Z2cub3JnCiEtfHx0d2l2ZXJ0
+LmNvbQohLVUKfGh0dHA6Ly91YjAuY2MKIS18fGpvbm55LnVidW50dS10dy5uZXQK
+IS18fGJsb2cudW1vbmtleS5uZXQKIS1WCiEtfHx0cC52YmFwLmNvbS5hdQohLXx8
+d3d3LnZpcnR1b3Vzcm9tLmNvbQohLXx8YmxvZy52aXNpYm90ZWNoLmNvbQohLVcK
+IS18fHdhdmVwcm90b2NvbC5vcmcKIS18fHd3dy53YXZlc2FuZGJveC5jb20KIS18
+fHdlYmZlZS5vcmcucnUKIS18fGJsb2cud2VibXByb2plY3Qub3JnCiEtfHx3ZWJ1
+cGQ4Lm9yZwohLXx8d3d3LndoYXRicm93c2VyLm9yZwohLXx8d3d3LndoZXJlZG95
+b3Vnby5uZXQKIS18fHdpbGxoYWlucy5jb20KIS18fGZlZWRzLndpcmVkLmNvbQoh
+LXx8d2lzZW1hcHBpbmcub3JnCndvenkuaW4KIS18fHdvenkuaW4vCiEtfHxibG9n
+Lnd1bmRlcmNvdW50ZXIuY29tCiEtWAohLXx8eGRlbHRhLm9yZwohLXx8eGlhb2dh
+b3ppLm9yZwohLXx8eGlsb3UudXMKIS18fHh6eS5vcmcucnUKIS1ZCiEtfHx5b29w
+ZXIuYmUKIS18fHRzb25nLnl1bnhpLm5ldAohLVoKCmdvc3BlbGhlcmFsZC5jb20K
+fHxnb3NwZWxoZXJhbGQuY29tCnxodHRwOi8vaGsuZ3JhZGNvbm5lY3Rpb24uY29t
+LwpncmVhdGZpcmUub3JnCnx8Z3JlYXRmaXJlLm9yZwpncmVhdGZpcmV3YWxsb2Zj
+aGluYS5vcmcKfHxndHYub3JnCnx8Z3R2MS5vcmcKLmd1LWNodS1zdW0ub3JnCnxo
+dHRwOi8vZ3UtY2h1LXN1bS5vcmcKLmd1YWd1YXNzLmNvbQp8aHR0cDovL2d1YWd1
+YXNzLmNvbQouZ3VhbmdtaW5nLmNvbS5teQpndWlzaGFuLm9yZwp8fGd1aXNoYW4u
+b3JnCi5ndW1yb2FkLmNvbQp8fGd1bXJvYWQuY29tCnx8Z3Vuc2FtZXJpY2EuY29t
+Cmd1cnVvbmxpbmUuaGsKfGh0dHA6Ly9ndmxpYi5jb20KLmd5YWx3YXJpbnBvY2hl
+LmNvbQouZ3lhdHNvc3R1ZGlvLmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tSEgt
+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8aGVyb21pbmVycy5jb20KfHxoaW5l
+dC5uZXQKfHxoaW5kdXN0YW50aW1lcy5jb20KfHxoYW5pbWUxLm1lCnx8aGFsa3R2
+LmNvbS50cgp8fGhhaXdhaWthbi5jb20KfHxob21lLnNheG8KfHxob3kudHYKLmg1
+MjguY29tCi5oNWRtLmNvbQouaDVnYWxnYW1lLm1lCnx8aC1jaGluYS5vcmcKLmgt
+bW9lLmNvbQp8aHR0cDovL2gtbW9lLmNvbQpoMW4xY2hpbmEub3JnCi5oYWNrZW4u
+Y2MvYmJzCi5oYWNrZXIub3JnCnx8aGFja21kLmlvCnx8aGFja3RoYXRwaG9uZS5u
+ZXQKaGFobG8uY29tCnx8aGFpamlhby5jb20KfHxoYWtrYXR2Lm9yZy50dwouaGFu
+ZGNyYWZ0ZWRzb2Z0d2FyZS5vcmcKfGh0dHA6Ly9iYnMuaGFubWluenUub3JnLwou
+aGFvLm5ld3MvbmV3cwp8aHR0cDovL2FlLmhhbzEyMy5jb20KfGh0dHA6Ly9hci5o
+YW8xMjMuY29tCnxodHRwOi8vYnIuaGFvMTIzLmNvbQp8aHR0cDovL2VuLmhhbzEy
+My5jb20KfGh0dHA6Ly9pZC5oYW8xMjMuY29tCnxodHRwOi8vanAuaGFvMTIzLmNv
+bQp8aHR0cDovL21hLmhhbzEyMy5jb20KfGh0dHA6Ly9teC5oYW8xMjMuY29tCnxo
+dHRwOi8vc2EuaGFvMTIzLmNvbQp8aHR0cDovL3RoLmhhbzEyMy5jb20KfGh0dHA6
+Ly90dy5oYW8xMjMuY29tCnxodHRwOi8vdm4uaGFvMTIzLmNvbQp8aHR0cDovL2hr
+LmhhbzEyM2ltZy5jb20KfGh0dHA6Ly9sZC5oYW8xMjNpbWcuY29tCi5oYXByb3h5
+Lm9yZwp8fGhhcmRzZXh0dWJlLmNvbQp8fGIuaGF0ZW5hLm5lLmpwCmhhdmU4LmNv
+bQpAQHx8aGF5Z28uY29tCi5oY2xpcHMuY29tCnx8aGR0dmIubmV0Ci5oZHpvZy5j
+b20KfGh0dHA6Ly9oZHpvZy5jb20KfHxvcmRucy5oZS5uZXQKfHxoZWFydHlpdC5j
+b20KLmhlYXZ5LXIuY29tCi5oZWMuc3UKfGh0dHA6Ly9oZWMuc3UKLmhlY2FpdG91
+Lm5ldAp8fGhlY2FpdG91Lm5ldAouaGVjaGFqaS5jb20KfHxoZWNoYWppLmNvbQp8
+fGhlZWFjdC5lZHUudHcKLmhlZ3JlLWFydC5jb20KfGh0dHA6Ly9oZWdyZS1hcnQu
+Y29tCnx8Y2RuLmhlbGl4c3R1ZGlvcy5uZXQKfHxoZWxsb2FuZHJvaWQuY29tCnx8
+aGVsbG9xdWVlci5jb20KLmhlbnRhaS50bwouaGVsbG91ay5vcmcvZm9ydW0vbG9m
+aXZlcnNpb24KLmhlbHBlYWNocGVvcGxlLmNvbQp8fGhlbHBlYWNocGVvcGxlLmNv
+bQp8fGhlbHBzdGVyLmRlCi5oZWxwemh1bGluZy5vcmcKaGVudGFpdHViZS50dgou
+aGVudGFpdmlkZW93b3JsZC5jb20KCiEjIyMjIyMjIyMjIy0tSGVyb2t1LS0jIyMj
+IyMjIyMjCiEtLXx8Z2V0Y2xvdWRhcHAuY29tCiEtLXx8Y2wubHkKIS0tQEB8fGYu
+Y2wubHkKIS0tRUMyIEROUyBQb2lzb25lZAp8fGlkLmhlcm9rdS5jb20KfHxoZXJv
+a3VhcHAuY29tCgp8fGhlcWluZ2xpYW4ubmV0Cnx8aGVyaXRhZ2Uub3JnCi5oZXhp
+ZXNoZS5jb20KfHxoZXhpZXNoZS5jb20KfHxoZXhpZXNoZS54eXoKIS0tR29vZ2xl
+IGVtcGxveWVlIHdpdGhpbiBHb29nbGUgSVAKfHxoZXh4ZWgubmV0Cnx8aGV5dWVk
+aS5jb20KLmhleXpvLmNvbQouaGdzZWF2LmNvbQouaGhkY2Izb2ZmaWNlLm9yZwou
+aGh0aGVzYWt5YXRyaXppbi5vcmcKaGktb24ub3JnLnR3Cnx8aGljY2VhcnMuY29t
+CmhpZGRlbi1hZHZlbnQub3JnCnx8aGlkZGVuLWFkdmVudC5vcmcKaGlkZWNsb3Vk
+LmNvbS9ibG9nLzIwMDgvMDcvMjkvZnVjay1iZWlqaW5nLW9seW1waWNzLmh0bWwK
+fHxoaWRlLm1lCi5oaWRlaXB2cG4uY29tCnx8aGlkZWlwdnBuLmNvbQouaGlkZW1h
+bi5uZXQKfHxoaWRlbWFuLm5ldApoaWRlbWUubmwKfHxoaWRlbXkubmFtZQouaGlk
+ZW15YXNzLmNvbQp8fGhpZGVteWFzcy5jb20KaGlkZW15Y29tcC5jb20KfHxoaWRl
+bXljb21wLmNvbQouaGlnZncuY29tCmhpZ2hwZWFrc3B1cmVlYXJ0aC5jb20KfHxo
+aWdocm9ja21lZGlhLmNvbQp8fGhpaXRjaC5jb20KfHxoaWtpbmdnZncub3JnCi5o
+aWxpdmUudHYKLmhpbWFsYXlhbi1mb3VuZGF0aW9uLm9yZwp8fGhpbWFsYXlhbi1m
+b3VuZGF0aW9uLm9yZwpoaW1hbGF5YW5nbGFjaWVyLmNvbQouaGltZW1peC5jb20K
+fHxoaW1lbWl4LmNvbQouaGl0b21pLmxhCnxodHRwOi8vaGl0b21pLmxhCi5oaXdp
+ZmkuY29tCkBAfHxoaXdpZmkuY29tCmhpemJ1dHRhaHJpci5vcmcKaGl6Yi11dC10
+YWhyaXIuaW5mbwpoaXpiLXV0LXRhaHJpci5vcmcKLmhqY2x1Yi5pbmZvCi5oay1w
+dWIuY29tL2ZvcnVtCnxodHRwOi8vaGstcHViLmNvbQouaGswMS5jb20KfHxoazAx
+LmNvbQp8fGhrYWNnLmNvbQp8fGhrYWNnLm5ldAouaGthdHZuZXdzLmNvbQpoa2Jj
+Lm5ldAouaGtiZi5vcmcKLmhrYm9va2NpdHkuY29tCnx8aGtib29rY2l0eS5jb20K
+fHxoa2Nocm9uaWNsZXMuY29tCi5oa2NodXJjaC5vcmcKaGtjaS5vcmcuaGsKLmhr
+Y21pLmVkdQp8fGhrY25ld3MuY29tCnx8aGtjb2MuY29tCmhrZGF5Lm5ldAouaGtk
+YWlseW5ld3MuY29tLmhrL2NoaW5hLnBocAp8fGhrZGMudXMKaGtkZi5vcmcKLmhr
+ZWouY29tCi5oa2VwYy5jb20vZm9ydW0vdmlld3RocmVhZC5waHA/dGlkPTExNTMz
+MjIKfHxoa2V0LmNvbQp8fGhrZmFhLmNvbQpoa2Zyb250Lm9yZwptLmhrZ2FsZGVu
+LmNvbQp8aHR0cHM6Ly9tLmhrZ2FsZGVuLmNvbQp8fGhrZ3Bhby5jb20KLmhraGVh
+ZGxpbmUuY29tKmJsb2cKLmhraGVhZGxpbmUuY29tL2luc3RhbnRuZXdzCmhraGto
+ay5jb20KaGtocmMub3JnLmhrCmhramMuY29tCi5oa2pwLm9yZwouaGtsZnQuY29t
+Ci5oa2x0cy5vcmcuaGsKfHxoa2x0cy5vcmcuaGsKfHxoa21hcC5saXZlCnx8aGtv
+cGVudHYuY29tCnx8aGtwZWFudXQuY29tCmhrcHR1Lm9yZwouaGtyZXBvcnRlci5j
+b20KfHxoa3JlcG9ydGVyLmNvbQouaG12LmNvLmpwLwpobmpoai5jb20KfHxobmpo
+ai5jb20KLmhubnR1YmUuY29tCnx8aG9qZW1hY2F1LmNvbS5tbwp8fGhvbGEuY29t
+Cnx8aG9sYS5vcmcKaG9seXNwaXJpdHNwZWFrcy5vcmcKfHxob2x5c3Bpcml0c3Bl
+YWtzLm9yZwouaG9tZXBlcnZlcnNpb24uY29tCnxodHRwOi8vaG9tZXNlcnZlcnNo
+b3cuY29tCnxodHRwOi8vb2xkLmhvbmV5bmV0Lm9yZy9zY2Fucy9zY2FuMzEvc3Vi
+L2RvdWdfZXJpYy9zcGFtX3RyYW5zbGF0aW9uLmh0bWwKLmhvbmdrb25nZnAuY29t
+Cnx8aG9uZ2tvbmdmcC5jb20KaG9uZ21laW1laS5jb20KfHxob25nemhpLmxpCnx8
+aG9udmVuLnh5egouaG9vdHN1aXRlLmNvbQp8fGhvb3RzdWl0ZS5jb20KfHxob292
+ZXIub3JnCi5ob3B0by5vcmcKLmhvcm55Z2FtZXIuY29tCi5ob3JueXRyaXAuY29t
+CnxodHRwOi8vaG9ybnl0cmlwLmNvbQp8fGhvcnJvcnBvcm4uY29tCnx8aG9zdGxv
+Yy5jb20KfHxob3RhaXIuY29tCi5ob3Rhdi50dgouaG90ZWxzLmNuCmhvdGZyb2cu
+Y29tLnR3CmhvdGdvby5jb20KaG90cG90LmhrCi5ob3RzaGFtZS5jb20KfHxob3Rz
+cG90c2hpZWxkLmNvbQp8fGhvdHRnLmNvbQouaG90dnBuLmNvbQp8fGhvdHZwbi5j
+b20KfHxob3d0b2ZvcmdlLmNvbQp8fGhveHguY29tCnx8aHBqYXYuY29tCi5ocWNk
+cC5vcmcKfHxocWNkcC5vcmcKfHxocWphcGFuZXNlc2V4LmNvbQpocW1vdmllcy5j
+b20KLmhyY2NoaW5hLm9yZwouaHJlYS5vcmcKLmhyaWNoaW5hLm9yZwp8fGhyaWNo
+aW5hLm9yZwp8fGhybnR0Lm9yZwouaHJ0c2VhLmNvbQouaHJ3Lm9yZwp8fGhydy5v
+cmcKaHJ3ZWIub3JnCnx8aHNleC5tZW4KfHxoc2pwLm5ldAp8fGhzc2VsaXRlLmNv
+bQp8fGhzdC5uZXQudHcKLmhzdGVybi5uZXQKLmhzdHQubmV0Ci5odGtvdS5uZXQK
+fHxodGtvdS5uZXQKLmh1YWdsYWQuY29tCnx8aHVhZ2xhZC5jb20KLmh1YW5naHVh
+Z2FuZy5vcmcKfHxodWFuZ2h1YWdhbmcub3JnCi5odWFuZ3lpeXUuY29tCi5odWFy
+ZW4udXMKfHxodWFyZW4udXMKLmh1YXJlbjR1cy5jb20KLmh1YXNoYW5nbmV3cy5j
+b20KfGh0dHA6Ly9odWFzaGFuZ25ld3MuY29tCmJicy5odWFzaW5nLm9yZwpodWF4
+aWFiYW8ub3JnCmh1YXhpbi5waAp8fGh1YXl1d29ybGQub3JnCnx8aHVmZmluZ3Rv
+bnBvc3QuY29tCnx8aHVmZnBvc3QuY29tCnx8aHVnZ2luZ2ZhY2UuY28KfHxodWdv
+cm95LmV1Cnx8aHVoYWl0YWkuY29tCnx8aHVoYW1oaXJlLmNvbQouaHVoYW5nZmVp
+LmNvbQp8fGh1aGFuZ2ZlaS5jb20KLmh1bGtzaGFyZS5jb20KfHxodW1hbnBhcnR5
+Lm1lCnx8aHVtYW5yaWdodHNwcmVzc2F3YXJkcy5vcmcKfHxodW5nLXlhLmNvbQp8
+fGh1cGluZy5uZXQKaHVyZ29rYmF5cmFrLmNvbQouaHVycml5ZXQuY29tLnRyCi5o
+dXQyLnJ1Cnx8aHV0aWFueWkubmV0Cmh1dG9uZzkubmV0Cmh1eWFuZGV4LmNvbQou
+aHdhZHphbi50dwp8fGh3YXl1ZS5vcmcudHcKfHxoeHdrLm9yZwpoeHdxLm9yZwp8
+fGh5cGVycmF0ZS5jb20KfHxoeXBvdGhlcy5pcwplYm9vay5oeXJlYWQuY29tLnR3
+Cnx8ZWJvb2suaHlyZWFkLmNvbS50dwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tSUkt
+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8aXBpZnkub3JnCkBAfHwqLmlwaWZ5
+Lm9yZwp8fGl0aWdlci5jb20KfHxpdGNoLmlvCnx8aW5mdXJhLmlvCnx8cHJlc2lk
+ZW50LmlyCnx8Z292LmlyCnx8aXJuYS5pcgp8fGFydmFuc3RvcmFnZS5pcgp8fGly
+YW5nb3YuaXIKfHxpbmRpYS5jb20KfHxpbmRpYXRvZGF5LmluCnx8aW52aWRpby51
+cwp8fGltcHJvZC53b3Jrcwp8fGlsbGF3YXJyYW1lcmN1cnkuY29tLmF1Cnx8aW1h
+Z28taW1hZ2VzLmNvbQp8fGkycDIuZGUKfHxpODE4aGsuY29tCi5pLWNhYmxlLmNv
+bQouaS1wYXJ0LmNvbS50dwouaWFtdG9wb25lLmNvbQppYXNrLmNhCnx8aWFzay5j
+YQouaWF2MTkuY29tCnx8aWF2aWFuLm5ldAppYmlibGlvLm9yZy9wdWIvcGFja2Fn
+ZXMvY2NpYwppYnJvcy5vcmcKLmlidnBuLmNvbQp8fGlidnBuLmNvbQppY2Ftcy5j
+b20KfHxpY2Vkcml2ZS5uZXQKLmljaWoub3JnCnx8aWNpai5vcmcKfHxpY2wtZmku
+b3JnCi5pY29jby5jb20KfHxpY29jby5jb20KCiEtLTM4LjEwMy4xNjUuNTAKfHxm
+dXJiby5vcmcKIS0tfHxpY29uZmFjdG9yeS5jb20KCnx8aWNvbnBhcGVyLm9yZwoh
+LS0gR29vZ2xlIFBhZ2VzCnx8aWN1LXByb2plY3Qub3JnCncuaWRhaXdhbi5jb20v
+Zm9ydW0KaWRlbW9jcmFjeS5hc2lhCi5pZGVudGkuY2EKfHxpZGVudGkuY2EKfHxp
+ZGlvbWNvbm5lY3Rpb24uY29tCnxodHRwOi8vd3d3LmlkbGNveW90ZS5jb20KfHxp
+ZG9wZS5zZQouaWRvdWdhLmNvbQouaWR2LnR3Ci5pZWQyay5uZXQKLmllbmVyZ3kx
+LmNvbQp8fGlmdC50dAouaWZjc3Mub3JnCnx8aWZjc3Mub3JnCmlmamMub3JnCi5p
+ZnQudHQKfGh0dHA6Ly9pZnQudHQKfHxpZnJlZXdhcmVzLmNvbQp8fGlnY2QubmV0
+Ci5pZ2Z3Lm5ldAp8fGlnZncubmV0Ci5pZ21nLmRlCi5pZ290bWFpbC5jb20udHcK
+fHxpZ3ZpdGEuY29tCi5paGFvLm9yZy9kejUKfHxpaWNucy5jb20KLmlrc3Rhci5j
+b20KfHxpbGhhbXRvaHRpaW5zdGl0dXRlLm9yZwp8fGlsbHVzaW9uZmFjdG9yeS5j
+b20KfHxpbG92ZTgwLmJlCnx8aW04OC50dwp8fGltZ2NoaWxpLm5ldAouaW1hZ2Vh
+Yi5jb20KLmltYWdlZmFwLmNvbQp8fGltYWdlZmFwLmNvbQp8fGltYWdlZmxlYS5j
+b20KfHxpbWFnZWdsYXNzLm9yZwp8fGltYWdlc2hhY2sudXMKfHxpbWFnZXZlbnVl
+LmNvbQp8fGltYWdlemlsbGEubmV0Ci5pbWIub3JnCnxodHRwOi8vaW1iLm9yZwoK
+IS0tSU1EQgp8aHR0cDovL3d3dy5pbWRiLmNvbS9uYW1lL25tMDQ4MjczMAouaW1k
+Yi5jb20vdGl0bGUvdHQwODE5MzU0Ci5pbWRiLmNvbS90aXRsZS90dDE1NDAwNjgK
+LmltZGIuY29tL3RpdGxlL3R0NDkwODY0NAoKLmltZy5seQp8fGltZy5seQp8fGlt
+Z2FzZC5jb20KLmltZ3VyLmNvbQp8fGltZ3VyLmNvbQouaW1rZXYuY29tCnx8aW1r
+ZXYuY29tCi5pbWxpdmUuY29tCi5pbW1vcmFsLmpwCmltcGFjdC5vcmcuYXUKaW45
+OS5vcmcKaW4tZGlzZ3Vpc2UuY29tCi5pbmNhcGRucy5uZXQKLmluY2xvYWsuY29t
+Cnx8aW5jbG9hay5jb20KfHxpbmNyZWRpYm94LmZyCnx8aW5kZXBlbmRlbnQuY28u
+dWsKfHxpbmRpYWJsb29tcy5jb20KfHxpbmRpYW5kZWZlbnNlbmV3cy5pbgp8fGlu
+ZGlhbmFycmF0aXZlLmNvbQp8fHRpbWVzb2ZpbmRpYS5pbmRpYXRpbWVzLmNvbQou
+aW5kaWVtZXJjaC5jb20KfHxpbmRpZW1lcmNoLmNvbQp8fGluZm8tZ3JhZi5mcgp3
+ZWJzaXRlLmluZm9ybWVyLmNvbQp8fGluaGVyaXQubGl2ZQp8fGluaXRpYXRpdmVz
+Zm9yY2hpbmEub3JnCnx8aW5rYnVubnkubmV0Cnx8aW5rdWkuY29tCnx8aW5tZWRp
+YWhrLm5ldAp8fGlubWVkaWFoay5uZXQKfHxpbm9yZWFkZXIuY29tCnx8aW5vdGUu
+dHcKfHxpbnNlY2FtLm9yZwp8aHR0cDovL2luc2VjYW0ub3JnCnx8aW5zaWRlLmNv
+bS50dwp8fGluc2lkZXZvYS5jb20KfHxpbnN0aXR1dC10aWJldGFpbi5vcmcKfHxp
+bnRlcmFjdGl2ZWJyb2tlcnMuY29tCnx8aW50ZXJuZXQub3JnCmludGVybmV0ZGVm
+ZW5zZWxlYWd1ZS5vcmcKfHxpbnRlcm5ldGZyZWVkb20ub3JnCiEtLXx8aW50ZXJw
+b2wuaW50Cnx8aW50ZXJuZXRwb3BjdWx0dXJlLmNvbQouaW50aGVuYW1lb2Zjb25m
+dWNpdXNtb3ZpZS5jb20KfHxpbnRoZW5hbWVvZmNvbmZ1Y2l1c21vdmllLmNvbQpp
+bnhpYW4uY29tCnx8aW54aWFuLmNvbQohLS18fGlwY2Yub3JnLnR3Cnx8aXBkZWZl
+bnNlZm9ydW0uY29tCnx8aXBmaXJlLm9yZwp8fGlwaG9uZTRob25na29uZy5jb20K
+fHxpcGhvbmV0YWl3YW4ub3JnCnx8aXBob25peC5mcgp8fGlwaWN0dXJlLnJ1Ci5p
+cGpldGFibGUubmV0Cnx8aXBqZXRhYmxlLm5ldAouaXBvYmFyLmNvbS9yZWFkLnBo
+cD8KaXBvb2NrLmNvbS9pbWcKLmlwb3J0YWwubWUKfGh0dHA6Ly9pcG9ydGFsLm1l
+Cnx8aXBwb3R2LmNvbQouaXByZWRhdG9yLnNlCnx8aXByZWRhdG9yLnNlCi5pcHR2
+LmNvbS50dwp8fGlwdHZiaW4uY29tCnx8aXB2YW5pc2guY29tCmlyZWRtYWlsLm9y
+ZwpjaGluZXNlLmlyaWIuaXIKfHxpcm9ucHl0aG9uLm5ldAouaXJvbnNvY2tldC5j
+b20KfHxpcm9uc29ja2V0LmNvbQouaXMuZ2QKfHxpc2hyLmNoCi5pc2xhaGhhYmVy
+Lm5ldAouaXNsYW0ub3JnLmhrCnxodHRwOi8vaXNsYW0ub3JnLmhrCi5pc2xhbWF3
+YXJlbmVzcy5uZXQvQXNpYS9DaGluYQouaXNsYW1ob3VzZS5jb20KfHxpc2xhbWhv
+dXNlLmNvbQouaXNsYW1pY2l0eS5jb20KLmlzbGFtaWNwbHVyYWxpc20ub3JnCi5p
+c2xhbXRvZGF5Lm5ldAouaXNhYWNtYW8uY29tCnx8aXNhYWNtYW8uY29tCnx8aXNn
+cmVhdC5vcmcKfHxpc21hZWxhbi5jb20KLmlzbWFsbHRpdHMuY29tCnx8aXNtcHJv
+ZmVzc2lvbmFsLm5ldAppc29odW50LmNvbQp8fGlzcmFib3guY29tCi5pc3N1dS5j
+b20KfHxpc3N1dS5jb20KLmlzdGFycy5jby5uegpvdmVyc2VhLmlzdGFyc2hpbmUu
+Y29tCnx8b3ZlcnNlYS5pc3RhcnNoaW5lLmNvbQouaXN0b2NrcGhvdG8uY29tCmlz
+dW5hZmZhaXJzLmNvbQppc3VudHYuY29tCnx8aXN1cHBvcnR1eWdodXJzLm9yZwp8
+fGl0YWxpYXRpYmV0Lm9yZwp8fGl0ZW1maXguY29tCml0aGVscC5pdGhvbWUuY29t
+LnR3Cnx8aXRzaGlkZGVuLmNvbQouaXRza3kuaXQKLml0d2VldC5uZXQKfGh0dHA6
+Ly9pdHdlZXQubmV0Ci5pdTQ1LmNvbQouaXVocmRmLm9yZwp8fGl1aHJkZi5vcmcK
+Lml1a3NreS5jb20KLml2YWN5LmNvbQp8fGl2YWN5LmNvbQp8fGl2b25ibG9nLmNv
+bQouaXZwbi5uZXQKfHxpdnBuLm5ldAp8fGl3YXJhLnR2Cnx8aXhxdWljay5jb20K
+Lml4eHguY29tCi5peW91cG9ydC5jb20KfHxpeW91cG9ydC5jb20KfHxpeW91cG9y
+dC5vcmcKLml6YW9iYW8udXMKLml6bGVzLm5ldAouaXpsZXNlbS5vcmcKCiEtLS0t
+LS0tLS0tLS0tLS0tLS0tLUpKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8fGp1
+c3RteXNvY2tzY24uY29tCnx8anVzdG15c29ja3MubmV0Cnx8amF2MzIxLmNvbQp8
+fGphdmRiLmNvbQp8fGppZmFuZ2dlLmNvbQp8fGoubXAKfHxqYWJsZS50dgp8fGJs
+b2cuamFja2ppYS5jb20KamFtYWF0Lm9yZwp8fGphbWVzdG93bi5vcmcKfHxqYW15
+YW5nbm9yYnUuY29tCnx8amFuLmFpCnx8amFwYW4td2hvcmVzLmNvbQp8fGphcGFu
+aGR2LmNvbQouamF2LmNvbQouamF2MTAxLmNvbQouamF2NjgudHYKLmphdmFraWJh
+Lm9yZwp8fGphdmFraWJhLm9yZwouamF2YnVzLmNvbQp8fGphdmJ1cy5jb20KfHxq
+YXZmaW5kZXIuYWkKfHxqYXZmb3IubWUKLmphdmhkLmNvbQouamF2aGlwLmNvbQou
+amF2bW9iaWxlLm5ldAp8fGphdm1vYmlsZS5uZXQKLmphdm1vby5jb20KLmphdnNl
+ZW4uY29tCnx8amF2c2Vlbi5jb20KamJ0YWxrcy5jYwpqYnRhbGtzLmNvbQpqYnRh
+bGtzLm15Ci5qZHdzeS5jb20KamVhbnlpbS5jb20KfHxqZ29vZGllcy5jb20KLmpp
+YW5nd2VpcGluZy5jb20KfHxqaWFuZ3dlaXBpbmcuY29tCnx8amlhb3lvdTguY29t
+Cnx8amljaGFuZ3RqLmNvbQouamllaHVhLmN6Cnx8aGsuamllcGFuZy5jb20KfHx0
+dy5qaWVwYW5nLmNvbQpqaWVzaGliYW9iYW8uY29tCi5qaWdnbGVnaWZzLmNvbQo1
+NmN1bjA0LmppZ3N5LmNvbQpkYW9kdTE0LmppZ3N5LmNvbQpzcGVjeGluemwuamln
+c3kuY29tCndsY25ldy5qaWdzeS5jb20KLmppaGFkb2xvZ3kubmV0CnxodHRwOi8v
+amloYWRvbG9neS5uZXQKLmppbmdzaW0ub3JnCnpoYW8uamluaGFpLmRlCmppbmdw
+aW4ub3JnCnx8amluZ3Bpbi5vcmcKamlucGlhbndhbmcuY29tCnx8amlucml6aGl5
+aS5uZXdzCnx8aml0b3VjaC5jb20KampnaXJscy5jb20KLmprYi5jYwp8aHR0cDov
+L2prYi5jYwpqa2ZvcnVtLm5ldAp8fGptYS5nby5qcAp8fGptc2MuaGt1LmhrCi5q
+bXNjdWx0LmNvbQp8aHR0cDovL2ptc2N1bHQuY29tCnx8am9hY2hpbXMub3JnCi5z
+dW53aW5pc20uam9pbmJicy5uZXQKfHxqb2luY2x1YmhvdXNlLmNvbQp8fGpvcm5h
+bGRhY2lkYWRlb25saW5lLmNvbS5icgouam91cm5hbGNocmV0aWVuLm5ldAp8fGpv
+dXJuYWxvZmRlbW9jcmFjeS5vcmcKLmpveW1paWh1Yi5jb20KLmpveW91cnNlbGYu
+Y29tCmpwb3Bmb3J1bS5uZXQKfHxqc2RlbGl2ci5uZXQKfHxmaWRkbGUuanNoZWxs
+Lm5ldAohLS1Eb2FtaW4gcGFya2luZwouanVodWFyZW4uY29tCnx8anVsaWVyZXlj
+LmNvbQp8fGp1bmF1emEuY29tCi5qdW5lNGNvbW1lbW9yYXRpb24ub3JnCnx8YmJz
+Lmp1bmdsb2JhbC5uZXQKLmp1b2FhLmNvbQp8aHR0cDovL2p1b2FhLmNvbQpqdXN0
+ZnJlZXZwbi5jb20KfHxqdXN0aG9zdC5ydQpqdXN0cGFzdGUuaXQKfHxqdXN0bXlz
+b2NrczEubmV0Cmp1c3R0cmlzdGFuLmNvbQpqdXppeXVlLmNvbQp8fGp1eml5dWUu
+Y29tCnx8andtdXNpYy5vcmcKQEB8fG11c2ljLmp3bXVzaWMub3JnCnx8Y2RuLmp3
+cGxheWVyLmNvbQouanl4Zi5uZXQKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLUtLLS0t
+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8fGtpbmdrb25nLmNvbS50dwp8fGthbmFs
+ZC5jb20udHIKfHxrcGt1YW5nLm9yZwp8fGthLXdhaS5jb20KfHxrYWRva2F3YS5j
+by5qcAoua2FneXUub3JnCnx8a2FneXUub3JnLnphCi5rYWd5dW1vbmxhbS5vcmcK
+LmthZ3l1bmV3cy5jb20uaGsKLmthZ3l1b2ZmaWNlLm9yZwp8fGthZ3l1b2ZmaWNl
+Lm9yZwp8fGthZ3l1b2ZmaWNlLm9yZy50dwoua2FpeXVhbi5kZQoua2FrYW8uY29t
+Cnx8a2FrYW8uY29tCi5rYW5rYW4udG9kYXkKLmthbm5ld3lvcmsuY29tCnx8a2Fu
+bmV3eW9yay5jb20KLmthbnNoaWZhbmcuY29tCnx8a2Fuc2hpZmFuZy5jb20KfHxr
+YW50aWUub3JnCmthbnpob25nZ3VvLmNvbQprYW56aG9uZ2d1by5ldQoua2FvdGlj
+LmNvbQp8fGthb3RpYy5jb20KfHxrYXJheW91LmNvbQoua2FybWFwYS5vcmcKLmth
+cm1hcGEtdGVhY2hpbmdzLm9yZwp8fGthd2FzZS5jb20KLmtiYS10eC5vcmcKLmtj
+b29sb25saW5lLmNvbQoua2VicnVtLmNvbQp8fGtlYnJ1bS5jb20KLmtlY2hhcmEu
+Y29tCi5rZWVwYW5kc2hhcmUuY29tL3Zpc2l0L3Zpc2l0X3BhZ2UucGhwP2k9Njg4
+MTU0CiEtLXx8a2VlcHZpZC5jb20KLmtlZXptb3ZpZXMuY29tCi5rZW5lbmdiYS5j
+b20KfHxrZW5lbmdiYS5jb20KLmtlcGFyZC5jb20KfHxrZXBhcmQuY29tCndpa2ku
+a2Vzby5jbi9Ib21lCnx8a2V5Y2RuLmNvbQoua2hhYmRoYS5vcmcKfHxraWNoaWt1
+LWRvdWppbmtvLmNvbQoua2lrLmNvbQp8fGtpay5jb20KLmtpbmRsZXJlbi5jb20K
+fGh0dHA6Ly9raW5kbGVyZW4uY29tCnxodHRwOi8vd3d3LmtpbmRsZXJlbi5jb20K
+Lmtpbmdkb21zYWx2YXRpb24ub3JnCnx8a2luZ2RvbXNhbHZhdGlvbi5vcmcKa2lu
+Z2hvc3QuY29tCiEtLS5raW5nc3RvbmUuY29tLnR3L2Jvb2svCnx8a2luZ3N0b25l
+LmNvbS50dwoua2luay5jb20KLmtpbm9rdW5peWEuY29tCnx8a2lub2t1bml5YS5j
+b20Ka2lsbHdhbGwuY29tCnx8a2lsbHdhbGwuY29tCnx8a2luZGxlNHJzcy5jb20K
+fHxraW5tZW4udHJhdmVsCi5raXIuanAKLmtpc3NiYmFvLmNuCnxodHRwOi8va2l3
+aS5regp8fGtrLXdoeXMuY28uanAKIS0tfHxrbXQub3JnLnR3Ci5rbXVoLm9yZy50
+dwoua25vd2xlZGdlcnVzaC5jb20va3IvZW5jeWNsb3BlZGlhCnx8a25vd3lvdXJt
+ZW1lLmNvbQoua29iby5jb20KfHxrb2JvLmNvbQoua29ib2Jvb2tzLmNvbQp8fGtv
+Ym9ib29rcy5jb20KfHxrb2Rpbmdlbi5jb20KQEB8fHd3dy5rb2Rpbmdlbi5jb20K
+fHxrb21wb3plci5uZXQKLmtvbmFjaGFuLmNvbQp8fGtvbmFjaGFuLmNvbQoua29u
+ZS5jb20KfHxrb29sc29sdXRpb25zLmNvbQoua29vcm5rLmNvbQp8fGtvb3Juay5j
+b20KfHxrb3Jhbm1hbmRhcmluLmNvbQoua29yZW5hbjIuY29tCnx8a3Flcy5uZXQK
+fGh0dHA6Ly9nb2pldC5rcnRjby5jb20udHcKLmtzZGwub3JnCi5rc25ld3MuY29t
+LnR3Cnx8a3R6aGsuY29tCnx8a3VhaWNoZWRhby5jbwoua3VpLm5hbWUvZXZlbnQK
+fHxrdWt1a3UudWsKa3VuLmltCi5rdXJhc2hzdWx0YW4uY29tCnx8a3VydG11bmdl
+ci5jb20Ka3Vzb2NpdHkuY29tCnx8a3djZy5jYQoua3dvbmd3YWguY29tLm15Cnx8
+a3dvbmd3YWguY29tLm15Ci5reHN3LmxpZmUKfHxreHN3LmxpZmUKLmt5b2Z1bi5j
+b20Ka3lvaGsubmV0Cnx8a3phb2Jhby5jb20KLmt6ZW5nLmluZm8KfHxremVuZy5p
+bmZvCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1MTC0tLS0tLS0tLS0tLS0tLS0tLS0t
+LS0tLS0KfHxsdWNreW1vYmlsZS5jYQp8fGx1ZGVwcmVzcy5jb20KfHxsaW5ndWFs
+ZW8uY29tCnx8bGRwbGF5ZXIudHcKfHxsZHBsYXllci5uZXQKfHxsdG4uY29tLnR3
+Cnx8bGl0ZW5ld3MuaGsKfHx3d3cubG9yZW56ZXR0aS5jb20uYnIKfHxsaW5rdHIu
+ZWUKbGEtZm9ydW0ub3JnCmxhZGJyb2tlcy5jb20KfHxsYWJpZW5uYWxlLm9yZwou
+bGFncmFuZXBvY2EuY29tCnx8bGFncmFuZXBvY2EuY29tCnx8bGFsYS5pbQoubGFs
+dWxhbHUuY29tCi5sYW1hLmNvbS50dwp8fGxhbWEuY29tLnR3Ci5sYW1heWVzaGUu
+Y29tCnxodHRwOi8vbGFtYXllc2hlLmNvbQoubGFtbmlhLmNvLnVrCnx8bGFtbmlh
+LmNvLnVrCmxhbXJpbS5jb20KfHxsYW5kb2Zob3BlLnR2Ci5sYW50ZXJuY24uY24K
+fGh0dHA6Ly9sYW50ZXJuY24uY24KLmxhbnRvc2ZvdW5kYXRpb24ub3JnCi5sYW9k
+LmNuCnxodHRwOi8vbGFvZC5jbgpsYW9nYWkub3JnCnx8bGFvZ2FpLm9yZwp8fGxh
+b2dhaXJlc2VhcmNoLm9yZwpsYW9taXUuY29tCi5sYW95YW5nLmluZm8KfGh0dHA6
+Ly9sYW95YW5nLmluZm8KLmxhcWluZ2Rhbi5uZXQKfHxsYXFpbmdkYW4ubmV0Cnx8
+bGFyc2dlb3JnZS5jb20KLmxhc3Rjb21iYXQuY29tCnxodHRwOi8vbGFzdGNvbWJh
+dC5jb20KfHxsYXN0Zm0uZXMKbGF0ZWxpbmVuZXdzLmNvbQp8fGxhdXNhbi5oawp8
+fGxlLXZwbi5jb20KLmxlYWZ5dnBuLm5ldAp8fGxlYWZ5dnBuLm5ldAp8fGxlZGdl
+ci5jb20KbGVlYW8uY29tLmNuL2Jicy9mb3J1bS5waHAKIS0tfHxsZWVjaGV1a3lh
+bi5vcmcKbGVmb3JhLmNvbQp8fGxlZnQyMS5oawoubGVnYWxwb3Juby5jb20KLmxl
+Z3NqYXBhbi5jb20KbGVpc3VyZWNhZmUuY2EKfHxsZW1hdGluLmNoCi5sZW1vbmRl
+LmZyCnx8bGVud2hpdGUuY29tCmJsb2cubGVzdGVyODUwLmluZm8KfHxsZXNvaXIu
+YmUKLmxldG91LmNvbQpsZXRzY29ycC5uZXQKfHxsZXRzY29ycC5uZXQKITY5LjE2
+LjE3NS40Mgp8fGNkbi5hc3NldHMubGZwY29udGVudC5jb20KLmxoYWthci5vcmcK
+fGh0dHA6Ly9saGFrYXIub3JnCi5saGFzb2NpYWx3b3JrLm9yZwoubGlhbmd5b3Uu
+bmV0Cnx8bGlhbmd5b3UubmV0Ci5saWFueXVlLm5ldAp8fGxpYW93YW5neGl6YW5n
+Lm5ldAoubGlhb3dhbmd4aXphbmcubmV0Cnx8bGliZXJhbC5vcmcuaGsKfHxsaWJl
+cnR5c2N1bHB0dXJlcGFyay5jb20KfHxsaWJlcnR5dGltZXMuY29tLnR3Cnx8bGli
+cmVkZC5pdAp8fGxpZ2h0ZW4ub3JnLnR3Cnx8bGlnaHRub3ZlbC5jbgp8fGxpbGFv
+c2hpYnVzaGluaWxhb3NoaS5jb20KbGltaWFvLm5ldApsaW5rdXN3ZWxsLmNvbQph
+Yml0bm8ubGlucGllLmNvbS91c2UtaXB2Ni10by1mdWNrLWdmdwp8fGxpbmUubWUK
+fHxsaW5lLWFwcHMuY29tCi5saW5nbGluZ2ZhLmNvbQp8fGxpbmd2b2RpY3MuY29t
+Ci5saW5rLW8tcmFtYS5jb20KfGh0dHA6Ly9saW5rLW8tcmFtYS5jb20KfHxsaW5r
+ZWRpbi5jb20KLmxpbmtpZGVvLmNvbQp8fGxpbnV4Lm9yZy5oawpsaW51eHRveS5v
+cmcvYXJjaGl2ZXMvaW5zdGFsbGluZy13ZXN0LWNoYW1iZXItb24tdWJ1bnR1Ci5s
+aW9uc3JvYXIuY29tCi5saXB1bWFuLmNvbQp8fGxpcXVpZHZwbi5jb20KfHxncmVh
+dGZpcmUudXM3Lmxpc3QtbWFuYWdlLmNvbQp8fGxpc3Rlbm5vdGVzLmNvbQp8fGxp
+c3RlbnRveW91dHViZS5jb20KbGlzdG9yaW91cy5jb20KLmxpdS14aWFvYm8ub3Jn
+Ci5saXVoYW55dS5jb20KLmxpdXhpYW9iby5uZXQKfHxsaXV4aWFvYm8ubmV0Cmxp
+dXhpYW90b25nLmNvbQp8fGxpdXhpYW90b25nLmNvbQoubGl2ZWRvb3IuanAKLmxp
+dmVsZWFrLmNvbQp8fGxpdmVsZWFrLmNvbQp8fGxpdmVtaW50LmNvbQpsaXZlc3Ry
+ZWFtLmNvbQp8fGxpdmVzdHJlYW0uY29tCnx8bGl2aW5nc3RyZWFtLmNvbQp8fGxp
+dmV2aWRlby5jb20KLmxpdmV2aWRlby5jb20KbGl6aGl6aHVhbmdiaS5jb20KbGtj
+bi5uZXQKfHxjaGF0Lmxtc3lzLm9yZwoubG9hZC50bwoubG9ic2FuZ3dhbmd5YWwu
+Y29tCi5sb2NhbGRvbWFpbi53cwp8fGxvY2FsZG9tYWluLndzCmxvY2FscHJlc3No
+ay5jb20KfHxsb2NrZXN0ZWsuY29tCnNlY3VyZS5sb2dtZWluLmNvbQp8fHNlY3Vy
+ZS5sb2dtZWluLmNvbQp8fGxvZ29zLmNvbS5oawoubG9uZG9uY2hpbmVzZS5jYQou
+bG9uZ2hhaXIuaGsKbG9uZ211c2ljLmNvbQp8fGxvbmd0ZXJtbHkubmV0Cnx8bG9v
+a3BpYy5jb20KLmxvb2t0b3JvbnRvLmNvbQp8aHR0cDovL2xvb2t0b3JvbnRvLmNv
+bQoubG90c2F3YWhvdXNlLm9yZy90aWJldGFuLW1hc3RlcnMvZm91cnRlZW50aC1k
+YWxhaS1sYW1hCi5sb3R1c2xpZ2h0Lm9yZy50dwpoa3JlcG9ydGVyLmxvdmVkLmhr
+Ci5scmlwLm9yZwp8fGxyaXAub3JnCi5sc2Qub3JnLmhrCnx8bHNkLm9yZy5oawps
+c2ZvcnVtLm5ldAoubHNtLm9yZwp8fGxzbS5vcmcKLmxzbWNoaW5lc2Uub3JnCnx8
+bHNtY2hpbmVzZS5vcmcKLmxzbWtvcmVhbi5vcmcKfHxsc21rb3JlYW4ub3JnCi5s
+c21yYWRpby5jb20vcmFkX2FyY2hpdmVzCi5sc213ZWJjYXN0LmNvbQoubHRuLmNv
+bS50dwp8fGx0bi5jb20udHcKfHxsdWNreWRlc2lnbmVyLnNwYWNlCi5sdWtlNTQu
+Y29tCi5sdWtlNTQub3JnCi5sdXBtLm9yZwp8fGx1cG0ub3JnCnx8bHVzaHN0b3Jp
+ZXMuY29tCmx1eGViYy5jb20KbHZoYWkub3JnCnx8bHZoYWkub3JnCnx8bHZ2Mi5j
+b20KLmx5ZmhrLm5ldAp8aHR0cDovL2x5ZmhrLm5ldAp8fGx6anNjcmlwdC5jb20K
+Lmx6bXRuZXdzLm9yZwp8fGx6bXRuZXdzLm9yZwoKIS0tLS0tLS0tLS0tLS0tLS0t
+LS0tTU0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8bWN1c2VyY29udGVudC5j
+b20KfHxtZXRhbWFzay5pbwp8fG1pc3Nhdi53cwp8fG5ld3MubXQuY28ua3IKfHxt
+dXNpeG1hdGNoLmNvbQp8fG1lcmdlcnNhbmRpbnF1aXNpdGlvbnMuY29tCnx8bS5t
+b2VnaXJsLm9yZwp8fG15anMudHcKfHxtZXJjYXJpLmNvbQp8fG1lcmNhcmkuanAK
+fHxtaXJyb3IueHl6Cnx8bXl3aWZlLmNjCnx8Yy5taS5jb20KfHxtaXNzYXYuY29t
+Cnx8bWFkb3UuY2x1Ygp8fG1haGpvbmdzb3VsLmNvbQp8fG1hbmdhYnouY29tCmh0
+dHA6Ly8qLm0tdGVhbS5jYwohLS1tLXRlYW0uY2MvZm9ydW0KLm1hY3JvdnBuLmNv
+bQp8fG1hZC1hci5jaAp8fG1hZHJhdS5jb20KfHxtYWR0aHVtYnMuY29tCm1haGFi
+b2RoaS5vcmcKbXkubWFpbC5ydQoubWFpcGx1cy5jb20KfGh0dHA6Ly9tYWlwbHVz
+LmNvbQoubWFpemhvbmcub3JnCm1ha2thaG5ld3NwYXBlci5jb20KLm1hbWluZ3po
+ZS5jb20KfHxtYW5nbWFuZy5ydW4KbWFuaWN1cjRpay5ydQp8fG1hbnl2b2ljZXMu
+bmV3cwoubWFwbGV3LmNvbQp8aHR0cDovL21hcGxldy5jb20KfHxtYXJjLmluZm8K
+bWFyZ3Vlcml0ZS5zdQptYXNrZWRpcC5jb20KLm1haWlvLm5ldAoubWFpbC1hcmNo
+aXZlLmNvbQoubWFsYXlzaWFraW5pLmNvbQp8fG1ha2VteW1vb2QuY29tCi5tYW5j
+aHVrdW8ubmV0Ci5tYW5pYXNoLmNvbQp8aHR0cDovL21hbmlhc2guY29tCi5tYW5z
+aW9uLmNvbQoubWFuc2lvbnBva2VyLmNvbQohLS18fG1hcmluZXMubWlsCiEtLW1h
+cmttYWlsLm9yZyptZXNzYWdlCnx8bWFydGF1LmNvbQp8aHR0cDovL2Jsb2cubWFy
+dGlub2VpLmNvbQoubWFydHNhbmdrYWd5dW9mZmljaWFsLm9yZwp8aHR0cDovL21h
+cnRzYW5na2FneXVvZmZpY2lhbC5vcmcKbWFydXRhLmJlL2ZvcmdldAoubWFyeGlz
+dC5jb20KfHxtYXJ4aXN0Lm5ldAoubWFyeGlzdHMub3JnL2NoaW5lc2UKIS0tfHxt
+YXNoYWJsZS5jb20KfHxtYXRhaW5qYS5jb20KfHxtYXRyaXgub3JnCnx8bWF0dGVy
+cy50b3duCm1heWltYXlpLmNvbQoubWF4aW5nLmpwCi5tY2FmLmVlCnxodHRwOi8v
+bWNhZi5lZQp8fG1jYWRmb3J1bXMuY29tCm1jZm9nLmNvbQptY3JlYXNpdGUuY29t
+Ci5tZC10Lm9yZwp8fG1kLXQub3JnCnx8bWVhbnN5cy5jb20KLm1lZGlhLm9yZy5o
+awoubWVkaWFjaGluZXNlLmNvbQp8fG1lZGlhY2hpbmVzZS5jb20KLm1lZGlhZmly
+ZS5jb20vPwoubWVkaWFmaXJlLmNvbS9kb3dubG9hZAoubWVkaWFmcmVha2NpdHku
+Y29tCnx8bWVkaWFmcmVha2NpdHkuY29tCi5tZWRpdW0uY29tCnx8bWVkaXVtLmNv
+bQoubWVldGF2LmNvbQp8fG1lZXR1cC5jb20KbWVmZWVkaWEuY29tCmppaGFkaW50
+ZWwubWVmb3J1bS5vcmcKfHxtZWdhLmNvLm56Cnx8bWVnYS5pbwp8fG1lZ2EubnoK
+fHxtZWdhbG9kb24uanAKfHxtZWdhcHJveHkuY29tCnx8bWVndXJpbmVsdWthLmNv
+bQp8fG1laXpob25nLmJsb2cKfHxtZWl6aG9uZy5yZXBvcnQKLm1lbHRvZGF5LmNv
+bQoubWVtZWhrLmNvbQp8fG1lbWVoay5jb20KfHxtZW1lcy50dwoubWVtcmkub3Jn
+Ci5tZW1yaWp0dG0ub3JnCnx8bWVyY2RuLm5ldAoubWVyY3lwcm9waGV0Lm9yZwp8
+fG1lcmN5cHJvcGhldC5vcmcKLm1lcmlkaWFuLXRydXN0Lm9yZwp8fG1lcmlkaWFu
+LXRydXN0Lm9yZwoubWVyaXBldC5jb20KfHxtZXJpcGV0LmNvbQp8fG1lcml0LXRp
+bWVzLmNvbS50dwoubWVzb3R3LmNvbS9iYnMKfHx3aWtpLm1ldGFjdWJleC5vbmUK
+fHxtZXRhZmlsdGVyLmNvbQp8fG1ldGVvcnNob3dlcnNvbmxpbmUuY29tCnx8bWV0
+cm8udGFpcGVpCi5tZXRyb2hrLmNvbS5oay8/Y21kPWRldGFpbCZjYXRlZ29yeUlE
+PTIKfHxtZXRyb2xpZmUuY2EKLm1ldHJvcmFkaW8uY29tLmhrCnx8bWV0cm9yYWRp
+by5jb20uaGsKfHxtZXdlLmNvbQp8fG1nb29uLmNvbQp8fG1nc3RhZ2UuY29tCnx8
+bWg0dS5vcmcKbWhyYWRpby5vcmcKfHxiYnMubWlrb2Nvbi5jb20KfHxtaWNyb3Zw
+bi5jb20KbWlkZGxlLXdheS5uZXQKLm1paHIuY29tCnx8bWlodWEub3JnCnx8bWlr
+YW5hbmkubWUKIS0tSVAKfHxtaWtlc29sdHlzLmNvbQoubWlscGgubmV0CnxodHRw
+Oi8vbWlscGgubmV0Ci5taWxzdXJwcy5jb20KbWltaWFpLm5ldAoubWltaXZpcC5j
+b20KLm1pbmRyb2xsaW5nLm9yZwp8aHR0cDovL21pbmRyb2xsaW5nLm9yZwp8fG1p
+bmdkZW1lZGlhLm9yZwoubWluZ2h1aS5vci5rcgp8aHR0cDovL21pbmdodWkub3Iu
+a3IKbWluZ2h1aS5vcmcKfHxtaW5naHVpLm9yZwptaW5naHVpLXNjaG9vbC5vcmcK
+Lm1pbmdqaW5nbGlzaGkuY29tCnx8bWluZ2ppbmdsaXNoaS5jb20KbWluZ2ppbmdu
+ZXdzLmNvbQp8fG1pbmdqaW5ndGltZXMuY29tCi5taW5ncGFvLmNvbQp8fG1pbmdw
+YW8uY29tCi5taW5ncGFvY2FuYWRhLmNvbQoubWluZ3Bhb21vbnRobHkuY29tCnxo
+dHRwOi8vbWluZ3Bhb21vbnRobHkuY29tCm1pbmdwYW9uZXdzLmNvbQoubWluZ3Bh
+b255LmNvbQoubWluZ3Bhb3NmLmNvbQoubWluZ3Bhb3Rvci5jb20KLm1pbmdwYW92
+YW4uY29tCi5taW5nc2hlbmdiYW8uY29tCi5taW5oaHVlLm5ldAoubWluaXN0cnli
+b29rcy5vcmcKbWluemh1emhvbmdndW8ub3JnCnx8bWlyb2d1aWRlLmNvbQptaXJy
+b3Jib29rcy5jb20KfHxtaXJyb3JtZWRpYS5tZwoubWlzdC52aXAKfHx0aGVjZW50
+ZXIubWl0LmVkdQp8fHNjcmF0Y2gubWl0LmVkdQoubWl0YmJzLmNvbQp8fG1pdGJi
+cy5jb20KLm1peGVyby5jb20KfHxtaXhlcm8uY29tCnx8bWl4aS5qcAptaXhwb2Qu
+Y29tCi5taXh4LmNvbQp8fG1peHguY29tCnx8bWl6em1vbmEuY29tCnx8bWxjLmFp
+Ci5tbGNvb2wuY29tCnx8bWx6cy53b3JrCi5tbS1jZy5jb20KfHxtbWFheHguY29t
+Ci5tbW1jYS5jb20KbW5ld3N0di5jb20KfHxtb2JhdGVrLm5ldAoubW9iaWxlMDEu
+Y29tCnx8bW9iaWxlMDEuY29tCnx8bW9iaWxld2F5cy5kZQoubW9ieXBpY3R1cmUu
+Y29tCnxodHRwOi8vbW9ieS50bwp8fG1vZC5pbwp8fG1vZGVybmNoaW5hc3R1ZGll
+cy5vcmcKfHxtb2Vlcm9saWJyYXJ5LmNvbQp8fG1vZXNoYXJlLmNjCi5tb2Zvcy5j
+b20KfHxtb2cuY29tCnx8bW9odS5yb2Nrcwptb2xpaHVhLm9yZwp8fG1vbW9zaG9w
+LmNvbS50dwp8fG1vbmRleC5vcmcKfHxtb25leS1saW5rLmNvbS50dwp8aHR0cDov
+L3d3dy5tb25sYW1pdC5vcmcKfHxtb29uLmZtCi5tb29uYmJzLmNvbQp8fG1vb25i
+YnMuY29tCnx8bW9wdHQudHcKfHxtb25leWRqLmNvbQp8fG1vbmljYS5pbQp8fG1v
+bml0b3JjaGluYS5vcmcKfHxtb25vY2xvdWQubWUKYmJzLm1vcmJlbGwuY29tCnx8
+bW9ybmluZ3N1bi5vcmcKLm1vdGhlcmxlc3MuY29tCnxodHRwOi8vbW90aGVybGVz
+cy5jb20KbW90b3I0aWsucnUKLm1vdXNlYnJlYWtlci5jb20KIS0tfHxtb3ZhYmxl
+dHlwZS5jb20KLm1vdmVtZW50cy5vcmcKfHxtb3ZlbWVudHMub3JnCnx8bW92aWVm
+YXAuY29tCnx8d3d3Lm1venR3Lm9yZwoubXAzYnVzY2Fkb3IuY29tCnx8bXBldHRp
+cy5jb20KLm1wZmluYW5jZS5jb20KfHxtcGZpbmFuY2UuY29tCi5tcGluZXdzLmNv
+bQp8fG1waW5ld3MuY29tCm1wb25saW5lLmhrCm1ydHdlZXQuY29tCnx8bXJ0d2Vl
+dC5jb20KbmV3cy5tc24uY29tLnR3Cm1zZ3VhbmNoYS5jb20KLm1zd2UxLm9yZwp8
+aHR0cDovL21zd2UxLm9yZwp8fG10aHJ1Zi5jb20KfHxtdWJpLmNvbQptdWNob3N1
+Y2tvLmNvbQp8fG11bHRpcGx5LmNvbQptdWx0aXByb3h5Lm9yZwptdWx0aXVwbG9h
+ZC5jb20KLm11bGx2YWQubmV0Cnx8bXVsbHZhZC5uZXQKLm11bW15c2dvbGQuY29t
+Ci5tdXNpY2FkZS5uZXQKLm11c2xpbXZpZGVvLmNvbQp8fG11emkuY29tCnx8bXV6
+aS5uZXQKfHxteDk4MS5jb20KLm15LWZvcm1vc2EuY29tCi5teS1wcm94eS5jb20K
+Lm15LXByaXZhdGUtbmV0d29yay5jby51awp8fG15LXByaXZhdGUtbmV0d29yay5j
+by51awoubXlhY3RpbWVzLmNvbS9hY3RpbWVzCi5teWF1ZGlvY2FzdC5jb20KfHxt
+eWF1ZGlvY2FzdC5jb20KLm15YXYuY29tLnR3L2JicwoubXliYnMudXMKLm15Y2Ex
+NjguY29tCi5teWNhbmFkYW5vdy5jb20KfHxiYnMubXljaGF0LnRvCi5teWNoaW5h
+bmV0LmNvbQoubXljaGluYW5ld3MuY29tCnx8bXljaGluYW5ld3MuY29tCi5teWNo
+aW5lc2UubmV3cwp8fG15Y25uZXdzLmNvbQp8fG15a29taWNhLm9yZwpteWNvdWxk
+LmNvbS9kaXNjdXoKLm15ZWFzeXR2LmNvbQp8fG15ZWNsaXBzZWlkZS5jb20KLm15
+ZnJlZWNhbXMuY29tCi5teWZyZWVwYXlzaXRlLmNvbQoubXlmcmVzaG5ldC5jb20K
+Lm15aXBoaWRlLmNvbQp8fG15aXBoaWRlLmNvbQpmb3J1bS5teW1hamkuY29tCnx8
+bXltb2UubW9lCnx8bXlwYXJhZ2xpZGluZy5jb20KfHxteXBvcGVzY3UuY29tCi5t
+eXJlYWRpbmdtYW5nYS5pbmZvCm15c2luYWJsb2cuY29tCi5teXNwYWNlLmNvbQoh
+LS0uYmxvZ3MubXlzcGFjZS5jb20KIS0tfHxibG9ncy5teXNwYWNlLmNvbQohLS12
+aWRzLm15c3BhY2UuY29tL2luZGV4LmNmbT9mdXNlYWN0aW9uPXZpZHMuCiEtLXZp
+ZXdtb3JlcGljcy5teXNwYWNlLmNvbQp8fG15c3BhY2VjZG4uY29tCi5teXRhbGti
+b3guY29tCi5teXRpemkuY29tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS1OTi0tLS0t
+LS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxuYXZlci5jb20KfHxtYXZlbi5uZW9mb3Jn
+ZWQubmV0Cnx8bmZ0c3RvcmFnZS5saW5rCnx8bmV3aW5kaWFuZXhwcmVzcy5jb20K
+fHxuZXdzMTguY29tCnx8YmJzLm5haXhpLm5ldAp8fG5pa2tlLmhvdGNvb2wudHcK
+fHxuaWtrZS1rci5jb20KfHxuaWtrZS1qcC5jb20KfHxuaWtrZS1lbi5jb20KfHxu
+ZXRsaWZ5LmFwcAp8fG5pZ2h0c3dhdGNoLnRvcAp8fG5ieXkudHYKfHxuZXd0aHVo
+b2xlLmNvbQp8fG5hYWNvYWxpdGlvbi5vcmcKfHxuYWl0aWsubmV0Ci5uYWtpZG8u
+Y29tCnx8bmFraWRvLmNvbQoubmFrdXouY29tL2Jicwp8fG5hbGFuZGFib2RoaS5v
+cmcKfHxuYWxhbmRhd2VzdC5vcmcKLm5hbWd5YWwub3JnCm5hbWd5YWxtb25hc3Rl
+cnkub3JnCi5uYW55YW5nLmNvbQp8fG5hbnlhbmcuY29tCi5uYW55YW5ncG9zdC5j
+b20KfHxuYW55YW5ncG9zdC5jb20KLm5hbnphby5jb20KIS0tLm5hbnphby5jb20v
+c2MvY2hpbmEvMjAyMjMKIS0tLm5hbnphby5jb20vc2MvaGstbWFjYXUtdHcKLm5h
+b2wuY2EKLm5hb2wuY2MKdWlnaHVyLm5hcm9kLnJ1Ci5uYXQubW9lCnx8bmF0Lm1v
+ZQpjeWJlcmdob3N0Lm5hdGFkby5jb20KfHxuYXRpb25hbC1sb3R0ZXJ5LmNvLnVr
+Cnx8bmF0aW9uYWxhd2FrZW5pbmcub3JnCnx8bmF0aW9uYWxpbnRlcmVzdC5vcmcK
+bmV3cy5uYXRpb25hbGdlb2dyYXBoaWMuY29tL25ld3MvMjAxNC8wNi8xNDA2MDMt
+dGlhbmFubWVuLXNxdWFyZQp8fG5hdGlvbmFscmV2aWV3LmNvbQoubmF0aW9uc29u
+bGluZS5vcmcvb25ld29ybGQvdGliZXQKfHxsaW5lLm5hdmVyLmpwCnx8bmF2eWZh
+bWlseS5uYXZ5Lm1pbAp8fG5hdnlyZXNlcnZlLm5hdnkubWlsCnx8bmtvLm5hdnku
+bWlsCnx8dXNuby5uYXZ5Lm1pbApuYXdlZWtseXRpbWVzLmNvbQp8fG5iY25ld3Mu
+Y29tCi5uYnR2cG4uY29tCnxodHRwOi8vbmJ0dnBuLmNvbQpuY2N3YXRjaC5vcmcu
+dHcKLm5jaC5jb20udHcKLm5jbi5vcmcKfHxuY2hyZC5vcmcKfHxuY24ub3JnCnx8
+ZXRvb2xzLm5jb2wuY29tCi5uZGUuZGUKfHxuZGkub3JnCi5uZHIuZGUKLm5lZC5v
+cmcKfHxuZWtvc2xvdmFraWEubmV0Cnx8bmVvd2luLm5ldAp8fG5ldGFsZXJ0Lm1l
+CiEtLWJic25ldy5uZXRiaWcuY29tCi5uZXRiaXJkcy5jb20KbmV0Y29sb255LmNv
+bQpib2xpbi5uZXRmaXJtcy5jb20KfHxuZXRmbGF2LmNvbQp8fG5ldG1lLmNjCnx8
+bmV0c2FyYW5nLmNvbQpuZXRzbmVhay5jb20KLm5ldHdvcms1NC5jb20KbmV0d29y
+a2VkYmxvZ3MuY29tCi5uZXR3b3JrdHVubmVsLm5ldApuZXctM2x1bmNoLm5ldAou
+bmV3LWFraWJhLmNvbQoubmV3OTYuY2EKLm5ld2NlbnR1cnltYy5jb20KfGh0dHA6
+Ly9uZXdjZW50dXJ5bWMuY29tCm5ld2NlbnR1cnluZXdzLmNvbQp8fG5ld2NoZW4u
+Y29tCi5uZXdjaGVuLmNvbQoubmV3Z3JvdW5kcy5jb20KfHxuZXdoaWdobGFuZHZp
+c2lvbi5jb20KbmV3aXBub3cuY29tCi5uZXdsYW5kbWFnYXppbmUuY29tLmF1Cnx8
+bmV3bWl0YmJzLmNvbQoubmV3bmV3cy5jYQp8fG5ld3MxLmtyCm5ld3MxMDAuY29t
+LnR3Cm5ld3NjaGluYWNvbW1lbnQub3JnCi5uZXdzYW5jYWkuY29tCnx8bmV3c2Fu
+Y2FpLmNvbQp8fG5ld3NibHVyLmNvbQoubmV3c2RldG94LmNhCi5uZXdzZGguY29t
+Cnx8bmV3c21heC5jb20KfHxuZXdzdGFtYWdvLmNvbQp8fG5ld3N0YXBhLm9yZwp8
+fG5ld3N0YXRlc21hbi5jb20KbmV3c3Rhcm5ldC5jb20KfHxuZXdzd2Vlay5jb20K
+Lm5ld3RhaXdhbi5jb20udHcKbmV3dGFsay50dwp8fG5ld3RhbGsudHcKfHxuZXd5
+b3JrZXIuY29tCm5ld3lvcmt0aW1lcy5jb20KfHxuZXhvbi5jb20KLm5leHQxMS5j
+by5qcAp8fG5leHRkaWdpdGFsLmNvbS5oawoubmV4dG1hZy5jb20udHcKCiEtLWhr
+Ki5uZXh0bWVkaWEuY29tCiEtLXR3Ki5uZXh0bWVkaWEuY29tCiEtLXN0YXRpYyou
+bmV4dG1lZGlhLmNvbQoubmV4dG1lZGlhLmNvbQoKfHxuZXh0b24tbmV0LmpwCnx8
+bmV4dHR2LmNvbS50dwoubmZqdHlkLmNvbQp8fGNvLm5nLm1pbAp8fG5nYS5taWwK
+bmdlbnNpcy5jb20KLm5oZW50YWkubmV0CnxodHRwOi8vbmhlbnRhaS5uZXQKLm5o
+ay1vbmRlbWFuZC5qcAp8fG5pY292aWRlby5qcApuaW5lY29tbWVudGFyaWVzLmNv
+bQoubmluamFjbG9hay5jb20KfHxuaW5qYXByb3h5Lm5pbmphCm5pbnRlbmRpdW0u
+Y29tCnRhaXdhbnllcy5uaW5nLmNvbQp1c21ndGNnLm5pbmcuY29tL2ZvcnVtCnx8
+bml1c25ld3MuY29tCnx8bmphY3RiLm9yZwp8fG5sZnJlZXZwbi5jb20KfHxubXNs
+LndlYnNpdGUKfHxubmV3cy5ldQoKIS0tbm8taXAuY29tI05PSVAKLmRkbnMubmV0
+Lwp8fGdvdGRucy5jaAoubm8taXAub3JnCi5vcGVuZG4ueHl6Ci5zZXJ2ZWh0dHAu
+Y29tCnN5dGVzLm5ldAouemFwdG8ub3JnCnxodHRwOi8vZHludXBkYXRlLm5vLWlw
+LmNvbS8KCnx8bm9iZWwuc2UKIS0tLm5vYmVscHJpemUub3JnCiEtLXxodHRwOi8v
+bm9iZWxwcml6ZS5vcmcKbm9iZWxwcml6ZS5vcmcvbm9iZWxfcHJpemVzL3BlYWNl
+L2xhdXJlYXRlcy8xOTg5Cm5vYmVscHJpemUub3JnL25vYmVsX3ByaXplcy9wZWFj
+ZS9sYXVyZWF0ZXMvMjAxMAp8fG5vZGVzZWVrLmNvbQp8fG5va29naXJpLm9yZwp8
+fG5va29sYS5jb20Kbm9vZGxldnBuLmNvbQoubm9yYnVsaW5na2Eub3JnCm5vcmR2
+cG4uY29tCnx8bm9yZHZwbi5jb20KfHxub3MubmwKfHxub3RlcGFkLXBsdXMtcGx1
+cy5vcmcKfHxub3cuY29tCnx8bm93bmV3cy5jb20KLm5vd3RvcnJlbnRzLmNvbQp8
+fG5wYS5nby5qcAoubnBudC5tZQp8aHR0cDovL25wbnQubWUKLm5yYWRpby5tZQp8
+aHR0cDovL25yYWRpby5tZQoubnJrLm5vCnx8bnJrLm5vCi5udGQudHYKfHxudGQu
+dHYKLm50ZHR2LmNvbQp8fG50ZHR2LmNvbQp8fG50ZHR2LmNvbS50dwoubnRkdHYu
+Y28ua3IKbnRkdHYuY2EKbnRkdHYub3JnCm50ZHR2LnJ1Cm50ZHR2bGEuY29tCi5u
+dHJmdW4uY29tCnx8Y2JzLm50dS5lZHUudHcKfHxtZWRpYS5udS5ubAoubnViaWxl
+cy5uZXQKfHxudWV4cG8uY29tCi5udWtpc3RyZWFtLmNvbQp8fG51cmdvLXNvZnR3
+YXJlLmNvbQp8fG51dGFrdS5uZXQKfHxudXRzdnBuLndvcmsKLm51dmlkLmNvbQp8
+fG52ZHN0LmNvbQoubnZxdWFuLm9yZwoubnZ0b25nemhpc2hlbmcub3JnCnxodHRw
+Oi8vbnZ0b25nemhpc2hlbmcub3JnCi5ud3RjYS5vcmcKfGh0dHA6Ly9ueWFhLmV1
+Cnx8bnlhYS5zaQp8fG55Ym9va3MuY29tCm55bG9uLWFuZ2VsLmNvbQpueWxvbnN0
+b2NraW5nc29ubGluZS5jb20KfHxueXBvc3QuY29tCiEtLW55c2luZ3Rhby5jb20K
+Lm56Y2hpbmVzZS5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLU9PLS0tLS0tLS0t
+LS0tLS0tLS0tLS0tLS0tLQp8fG9vamouZGUKfHxvbmV2cHMuY29tCnx8b25lZHJp
+dmUuY29tCnx8b2xlbGl2ZS5jb20KfHxvYW5uLmNvbQpvYnNlcnZlY2hpbmEubmV0
+Ci5vYnV0dS5jb20Kb2Nhc3Byby5jb20Kb2NjdXB5dGlhbmFubWVuLmNvbQoub2Ny
+ZWFtcGllcy5jb20KfHxvY3RvYmVyLXJldmlldy5vcmcKfHxvZHlzZWUuY29tCnx8
+b2ZmaWNlb2Z0aWJldC5jb20KfGh0dHA6Ly9vZmlsZS5vcmcKfHxvZ2FvZ2Eub3Jn
+CnR3dHIyc3JjLm9nYW9nYS5vcmcKLm9nYXRlLm9yZwp8fG9nYXRlLm9yZwp3d3cy
+Lm9oY2hyLm9yZy9lbmdsaXNoL2JvZGllcy9jYXQvZG9jcy9uZ29zL0lJX0NoaW5h
+XzQxLnBkZgp8fG9obXlyc3MuY29tCi5vaWtvcy5jb20udHcvdjQKLm9pa3R2LmNv
+bQoub2sucnUKfHxvay5ydQoub2theWZyZWVkb20uY29tCnx8b2theWZyZWVkb20u
+Y29tCnx8b2trLnR3Cnx8b2xldm9kLmNvbQp8fG9sdW1wby5jb20KLm9seW1waWN3
+YXRjaC5vcmcKfHxvbWN0Lm9yZwpvbWdpbGkuY29tCnx8b21uaXRhbGsuY29tCnx8
+b21uaXRhbGsub3JnCnx8b21ueS5mbQp8fG9uLmNjCnx8b25lZHJpdmUubGl2ZS5j
+b20KfHxvbmlvbi5jaXR5Cnx8b25pb24ubHkKLm9ubGluZWNoYS5jb20KfHxvbmxp
+bmV5b3V0dWJlLmNvbQp8fG9ubHlnYXl2aWRlby5jb20KLm9ubHl0d2VldHMuY29t
+CnxodHRwOi8vb25seXR3ZWV0cy5jb20Kb25tb29uLm5ldApvbm1vb24uY29tCi5v
+bnRoZWh1bnQuY29tCnxodHRwOi8vb250aGVodW50LmNvbQpvcGVuLmNvbS5oawpv
+cGVuZGVtb2NyYWN5Lm5ldAp8fG9wZW5kZW1vY3JhY3kubmV0Cm9wZW5pZC5uZXQK
+fHxvcGVuaWQubmV0Ci5vcGVubGVha3Mub3JnCnx8b3BlbmxlYWtzLm9yZwp8fG9w
+ZW5zdHJlZXRtYXAub3JnCnx8b3BlbnRlY2guZnVuZApvcGVudnBuLm5ldAp8fG9w
+ZW52cG4ubmV0Cnx8b3BlbndlYnN0ZXIuY29tCi5vcGVud3J0Lm9yZy5jbgpAQHx8
+b3BlbndydC5vcmcuY24KbXkub3BlcmEuY29tL2RhaGVtYQoub3B1cy1nYW1pbmcu
+Y29tCnxodHRwOi8vb3B1cy1nYW1pbmcuY29tCi5vcmdhbmNhcmUub3JnLnR3Cm9y
+Z2FuaGFydmVzdGludmVzdGlnYXRpb24ubmV0Ci5vcmdhc20uY29tCi5vcmdmcmVl
+LmNvbQp8fG9yaWNvbi5jby5qcAp8fG9yaWVudC1kb2xsLmNvbQpvcmllbnRhbGRh
+aWx5LmNvbS5teQp8fG9yaWVudGFsZGFpbHkuY29tLm15CiEtLW9yaWVudGFsZGFp
+bHkub24uY2MKfHxvcm4uanAKfHxvc2Zvb3JhLmNvbQp8fG90dG8uZGUKfHxvdXJk
+ZWFyYW15LmNvbQpvdXJzb2dvLmNvbQoub3Vyc3RlcHMuY29tLmF1Cnx8b3Vyc3Rl
+cHMuY29tLmF1Ci5vdXJzd2ViLm5ldAp8fG91cnR2LmhrCnhpbnFpbWVuZy5vdmVy
+LWJsb2cuY29tCnx8b3ZlcmNhc3QuZm0KfHxvdmVyZGFpbHkub3JnCnx8b3ZlcnBs
+YXkubmV0CnNoYXJlLm92aS5jb20vbWVkaWEKfHxvdnBuLmNvbQp8aHR0cDovL293
+bC5saQp8aHR0cDovL2h0Lmx5CnxodHRwOi8vaHRsLmxpCnxodHRwOi8vbWFzaC50
+bwp3d3cub3dpbmQuY29tCnx8b3dsdGFpbC5jb20KfHxveGZvcmRzY2hvbGFyc2hp
+cC5jb20KfGh0dHA6Ly93d3cub3hpZC5pdApveWF4LmNvbQpveWdoYW4uY29tL3dw
+cwoub3pjaGluZXNlLmNvbS9iYnMKfHxvdy5seQoub3p2b2ljZS5vcmcKfHxvenZv
+aWNlLm9yZwoub3p4dy5jb20KLm96eW95by5jb20KCiEtLS0tLS0tLS0tLS0tLS0t
+LS0tLVBQLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8fHBld3Jlc2VhcmNoLm9y
+Zwp8fHByaXZhY3lndWlkZXMub3JnCnx8cGFuY2FrZXN3YXAuZmluYW5jZQp8fGlt
+Zy5waWNnby5uZXQKfHxwb3JubWF0ZS5jb20KfHxwdXJlZG5zLm9yZwp8fHBvbHlt
+YXJrZXQuY29tCnx8cGFuZGFmYW4ucHViCnx8cHJveHouY29tCnx8cG90YXRzby5j
+b20KfHxwZW5kcml2ZWxpbnV4LmNvbQp8fHBhaW1vbi5tb2UKfHxwaG90b25tZWRp
+YS5uZXQKfHxwb2ludHMtbWVkaWEuY29tCnx8cGt1YW52aWwuY29tCnx8cGFjaG9z
+dGluZy5jb20KLnBhY2lmaWNwb2tlci5jb20KLnBhY2tldGl4Lm5ldAp8fHBhY29w
+YWNvbWFtYS5jb20KLnBhZG1hbmV0LmNvbQp8fHBhZ2UubGluawpwYWdlMnJzcy5j
+b20KLnBhbGFjZW1vb24uY29tCmZvcnVtLnBhbG1pc2xpZmUuY29tCnx8ZXJpdmVy
+c29mdC5jb20KcGFsam9ycHVibGljYXRpb25zLmNvbQoucGFsdGFsay5jb20KIS0t
+fHxwYW5nY2kubmV0Cnx8cGFuZGFwb3cuY28KLnBhbmRhcG93Lm5ldAoucGFuZGF2
+cG4tanAuY29tCnx8cGFuZGF2cG4tanAuY29tCnx8cGFuZGF2cG5wcm8uY29tCnx8
+cGFvLXBhby5uZXQKcGFwZXIubGkKcGFwZXJiLnVzCi5wYXJhZGlzZWhpbGwuY2MK
+LnBhcmFkaXNlcG9rZXIuY29tCnx8cGFybGVyLmNvbQp8fHBhcnNldmlkZW8uY29t
+Ci5wYXJ0eWNhc2luby5jb20KLnBhcnR5cG9rZXIuY29tCi5wYXNzaW9uLmNvbQp8
+fHBhc3Npb24uY29tCi5wYXNzaW9udGltZXMuaGsKcGFzdGViaW4uY29tCi5wYXN0
+aWUub3JnCnx8cGFzdGllLm9yZwp8fGJsb2cucGF0aHRvc2hhcmVwb2ludC5jb20K
+fHxwYXRyZW9uLmNvbQp8fHBhdHJlb251c2VyY29udGVudC5jb20KfHxwYXdvby5u
+ZXQKfHxwYnMub3JnCgohLS1QYndpa2kKcGJ3aWtpLmNvbQp8fHBid29ya3MuY29t
+Cnx8ZGV2ZWxvcGVycy5ib3gubmV0Cnx8d2lraS5vYXV0aC5uZXQKfHx3aWtpLnBo
+b25lZ2FwLmNvbQp8fHdpa2kuanF1ZXJ5dWkuY29tCgp8fHBieGVzLmNvbQp8fHBi
+eGVzLm9yZwpwY2R2ZC5jb20udHcKfHxwY2dhbWVzdG9ycmVudHMuY29tCi5wY2hv
+bWUuY29tLnR3Cnx8cGNpai5vcmcKLnBjc3RvcmUuY29tLnR3Cnx8cGN0Lm9yZy50
+dwpwZGV0YWlscy5jb20KfHxwZHByb3h5LmNvbQp8fHBlYWNlLmNhCnBlYWNlZmly
+ZS5vcmcKLnBlZWFzaWFuLmNvbQp8fHBlaW5nLm5ldAoucGVraW5nZHVjay5vcmcK
+fHxwZWtpbmdkdWNrLm9yZwoucGVtdWxpaGFuLm9yLmlkCnxodHRwOi8vcGVtdWxp
+aGFuLm9yLmlkCnx8cGVuLmlvCnBlbmNoaW5lc2UuY29tCnx8YmxvZy5wZW50YWxv
+Z2ljLm5ldAoucGVudGhvdXNlLmNvbQp8fHBlbnRveS5oawoucGVvcGxlYm9va2Nh
+ZmUuY29tCi5wZW9wbGVuZXdzLnR3Cnx8cGVvcGxlbmV3cy50dwoucGVvcG8ub3Jn
+Cnx8cGVvcG8ub3JnCi5wZXJjeS5pbgoucGVyZmVjdGdpcmxzLm5ldAp8fHBlcmZl
+Y3QtcHJpdmFjeS5jb20KfHxwZXJwbGV4aXR5LmFpCi5wZXJzZWN1dGlvbmJsb2cu
+Y29tCi5wZXJzaWFua2l0dHkuY29tCnBoYXBsdWFuLm9yZwoucGhheXVsLmNvbQp8
+fHBoYXl1bC5jb20KcGhpbGJvcmdlcy5jb20KfHxwaG5jZG4uY29tCnx8cGhvdG9k
+aGFybWEubmV0Cnx8cGhvdG9mb2N1cy5jb20KfHxwaWNhY29taWNjbi5jb20KLnBp
+Y2lkYWUubmV0Cnx8aW1nKi5waWN0dXJlZGlwLmNvbQpwaWN0dXJlc29jaWFsLmNv
+bQp8fHBpY3VraS5jb20KfHxwaWdhdi5jb20KfHxwaW4tY29uZy5jb20KLnBpbjYu
+Y29tCnx8cGluNi5jb20KLnBpbmcuZm0KfHxwaW5nLmZtCnx8cGluaW1nLmNvbQou
+cGlua3JvZC5jb20KfHxwaW5veS1uLmNvbQp8fHBpbnRlcmVzdC4qCkBAfHxwaW50
+ZXJlc3QuY24KLnBpcGlpLnR2CnBpcmFhdHRpbGFodGkub3JnCi5waXJpbmcuY29t
+Cnx8cGl4ZWxkcmFpbi5jb20KfHxwaXhlbHFpLmNvbQp8fGNzcy5waXhuZXQuaW4K
+fHxwaXhuZXQubmV0Ci5waXhuZXQubmV0Ci5way5jb20KfHxwa3FqaWFzdS5jb20K
+fHxwbGFjZW1peC5jb20KIS0tLnBsYW5ldHN1enkub3JnCnx8cGxheS1hc2lhLmNv
+bQp8fHBsYXlib3kuY29tCi5wbGF5Ym95cGx1cy5jb20KfHxwbGF5Ym95cGx1cy5j
+b20KfHxwbGF5ZXIuZm0KLnBsYXlubzEuY29tCnx8cGxheW5vMS5jb20KfHxwbGF5
+cGNlc29yLmNvbQp8fHBsZXh2cG4ucHJvCnBsbS5vcmcuaGsKcGx1bmRlci5jb20K
+LnBsdXJrLmNvbQp8fHBsdXJrLmNvbQoucGx1czI4LmNvbQoucGx1c2JiLmNvbQou
+cG1hdGVodW50ZXIuY29tCnx8cG1hdGVodW50ZXIuY29tCi5wbWF0ZXMuY29tCnx8
+cG8yYi5jb20KcG9iaWVyYW15LnRvcAohLS18fHBvY29vLm9yZwp8fHBvZGJlYW4u
+Y29tCnx8cG9kaWN0aW9uYXJ5LmNvbQp8fHBvZS5jb20KLnBva2Vyc3RhcnMuY29t
+Cnx8cG9rZXJzdGFycy5jb20KfHxwb2tlcnN0YXJzLm5ldAp8fHpoLnBva2Vyc3Ry
+YXRlZ3kuY29tCnx8cG9saXRpY2FsY2hpbmEub3JnCi5wb2xpdGlzY2FsZXMubmV0
+Cnx8cG9sb25pZXguY29tCnx8cG9seW1lcmhrLmNvbQoucG9wby50dwohLS18fHBv
+cHVsYXJwYWdlcy5uZXQKfHxwb3B2b3RlLmhrCnx8cG9weGkuY2xpY2sKLnBvcHlh
+cmQuY29tCnx8cG9weWFyZC5vcmcKLnBvcm4uY29tCi5wb3JuMi5jb20KLnBvcm41
+LmNvbQoucG9ybmJhc2Uub3JnCi5wb3JuZXJicm9zLmNvbQp8fHBvcm5oZC5jb20K
+LnBvcm5ob3N0LmNvbQoucG9ybmh1Yi5jb20KfHxwb3JuaHViLmNvbQoucG9ybmh1
+YmRldXRzY2gubmV0CnxodHRwOi8vcG9ybmh1YmRldXRzY2gubmV0Ci5wb3Jub3hv
+LmNvbQoucG9ybnJhcGlkc2hhcmUuY29tCnx8cG9ybnJhcGlkc2hhcmUuY29tCi5w
+b3Juc2hhcmluZy5jb20KfGh0dHA6Ly9wb3Juc2hhcmluZy5jb20KLnBvcm5zb2Nr
+ZXQuY29tCnx8cG9ybnN0YXJieWZhY2UuY29tCi5wb3Juc3RhcmNsdWIuY29tCnx8
+cG9ybnN0YXJjbHViLmNvbQoucG9ybnR1YmUuY29tCi5wb3JudHViZW5ld3MuY29t
+Ci5wb3JudHZibG9nLmNvbQp8fHBvcm50dmJsb2cuY29tCi5wb3JudmlzaXQuY29t
+Ci5wb3J0YWJsZXZwbi5ubAp8fHBvc2tvdGFuZXdzLmNvbQoucG9zdDAxLmNvbQou
+cG9zdDc2LmNvbQp8fHBvc3Q3Ni5jb20KLnBvc3Q4NTIuY29tCnx8cG9zdDg1Mi5j
+b20KcG9zdGFkdWx0LmNvbQp8fHBvdHZwbi5jb20KfHxwb3VycXVvaS50dwp8fHBv
+d2VyY3guY29tCi5wb3dlcnBob3RvLm9yZwp8fHd3dy5wb3dlcnBvaW50bmluamEu
+Y29tCnx8cHB5LnNoCnx8cHJlc2lkZW50bGVlLnR3Cnx8Y2RuLnByaW50ZnJpZW5k
+bHkuY29tCi5wcml0dW5sLmNvbQpwcm92cG5hY2NvdW50cy5jb20KfHxwcm92cG5h
+Y2NvdW50cy5jb20KLnByb3hmcmVlLmNvbQp8fHByb3hmcmVlLmNvbQpwcm94eWFu
+b25pbW8uZXMKLnByb3h5bmV0d29yay5vcmcudWsKfHxwcm94eW5ldHdvcmsub3Jn
+LnVrCi5wdHR2YW4ub3JnCnx8cHVidS5jb20udHcKfHxwdWZmaW5icm93c2VyLmNv
+bQp8fHB1cmVpbnNpZ2h0Lm9yZwoucHV0dHkub3JnCnx8cHV0dHkub3JnCgohLS0t
+LS0tLS0tLS0tLVBvc3Rlcm91cy0tLS0tCnx8Y2FsZWJlbHN0b24uY29tCnx8Ymxv
+Zy5maXp6aWsuY29tCnx8bmYuaWQuYXUKfHxzb2dyYWR5Lm1lCnx8dmF0bi5vcmcK
+fHx2ZW50dXJlc3dlbGwuY29tCnx8d2hlcmVpc3dlcm5lci5jb20KCi5wb3dlci5j
+b20KfHxwb3dlci5jb20KcG93ZXJhcHBsZS5jb20KfHxwb3dlcmFwcGxlLmNvbQp8
+fHByYXlmb3JjaGluYS5uZXQKfHxwcmNsZWFkZXIub3JnCnx8cHJlc2VudGF0aW9u
+emVuLmNvbQp8fHByZXN0aWdlLWF2LmNvbQoucHJpc29uZXJhbGVydC5jb20KfHxw
+cml0dW5sLmNvbQp8fHByaXZhY3lib3guZGUKfHxwcml2YXRlLmNvbQp8fHByaXZh
+dGVpbnRlcm5ldGFjY2Vzcy5jb20KcHJpdmF0ZXBhc3RlLmNvbQp8fHByaXZhdGVw
+YXN0ZS5jb20KcHJpdmF0ZXR1bm5lbC5jb20KfHxwcml2YXRldHVubmVsLmNvbQp8
+fHByaXZhdGV2cG4uY29tCnx8cHJpdm94eS5vcmcKfHxwcm9jb3B5dGlwcy5jb20K
+fHxwcm9qZWN0LXN5bmRpY2F0ZS5vcmcKfHxwcm90b24ubWUKcHJvdmlkZW9jb2Fs
+aXRpb24uY29tCnx8cHJvc2liZW4uZGUKcHJveGlmaWVyLmNvbQp8fHByb3hvbWl0
+cm9uLmluZm8KLnByb3hwbi5jb20KfHxwcm94cG4uY29tCnByb3h5cm9hZC5jb20K
+LnByb3h5dHVubmVsLm5ldAp8fHBzaHZwbi5jb20KfHxwc2lwaG9uLmNhCi5wc2lw
+aG9uMy5jb20KfHxwc2lwaG9uMy5jb20KLnBzaXBob250b2RheS5jb20KfHxwc3Rh
+dGljLm5ldAp8fHB0LmltCi5wdHQuY2MKfHxwdHQuY2MKfHxwdHRnYW1lLmNvbQou
+cHVmZnN0b3JlLmNvbQp8fG1haW4tZWNucGFwZXItZWNvbm9taXN0LmNvbnRlbnQu
+cHVncGlnLmNvbQp8fHB1bGxmb2xpby5jb20KLnB1bnl1LmNvbS9wdW55Cnx8cHVy
+ZWNvbmNlcHRzLm5ldAp8fHB1cmVpbnNpZ2h0Lm9yZwp8fHB1cmVwZGYuY29tCnx8
+cHVyZXZwbi5jb20KLnB1cnBsZWxvdHVzLm9yZwoucHVyc3Vlc3Rhci5jb20KfHxw
+dXJzdWVzdGFyLmNvbQoucHVzc3lzcGFjZS5jb20KLnB1dGlob21lLm9yZwoucHV0
+bG9ja2VyLmNvbS9maWxlCnB3bmVkLmNvbQp8fHB4aW1nLm5ldApweXRob24uY29t
+Ci5weXRob24uY29tLnR3Cnx8cHl0aG9uLmNvbS50dwpweXRob25oYWNrZXJzLmNv
+bS9wCnNzLnB5dGhvbmljLmxpZmUKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLVFRLS0t
+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8aHR0cDovL3FtcDQuY29tCnx8cWlhbm1v
+LnR3Cnx8cWJpdHRvcnJlbnQub3JnCnx8cWdpcmwuY29tLnR3Cnx8cWlhbmJhaS50
+dwp8fHFpYW5kYW8udG9kYXkKfHxxaWFuZ2xpZS5jb20KfHxxaWFuZ3dhaWthbi5j
+b20KLnFpLWdvbmcubWUKfHxxaS1nb25nLm1lCiEtLSM5MjEKfHxxaWFuZ3lvdS5v
+cmcKLnFpZGlhbi5jYQp8fHFpd2VuLmx1CnFpeGlhbmdsdS5jbgoucWtzaGFyZS5j
+b20KcW9vcy5jb20KfHxxb29zLmNvbQp8fGVma3NvZnQuY29tCnx8cXN0YXR1cy5j
+b20KfHxxdHJhYy5ldQp8fHF1aXRjY3Aub3JnCi5xdWl0Y2NwLm9yZwoucXVvcmEu
+Y29tL0NoaW5hcy1GdXR1cmUKLnF1cmFuLmNvbQp8aHR0cDovL3F1cmFuLmNvbQou
+cXVyYW5leHBsb3Jlci5jb20KcXVzaTgubmV0Cm5lbWVzaXMyLnF4Lm5ldC9wYWdl
+cy9NeUVuVHVubmVsCnF4YmJzLm9yZwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tUlIt
+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8cmFkbWluLXZwbi5jb20KfHxydWxl
+MzR2aWRlby5jb20KfHxyMTBzLmpwCnx8cmFrdXRlbi5jby5qcAp8fHIwLnJ1Cnx8
+cmFkaW8tY2FuYWRhLmNhCnx8cmFkaW8tZW4tbGlnbmUuZnIKfHxyYWVsLm9yZwpy
+YWRpY2FscGFydHkub3JnCnx8cmFkaW8uZ2FyZGVuCnx8cmFkaW9hdXN0cmFsaWEu
+bmV0LmF1Ci5yYWRpb2hpbGlnaHQubmV0Cnx8cmFkaW9oaWxpZ2h0Lm5ldAp8fHJh
+ZGlvbGluZS5jbwpvcG1sLnJhZGlvdGltZS5jb20KfHxyYWRpb3ZhdGljYW5hLm9y
+Zwp8fHJhZGlvdm5jci5jb20KfHxyYWdnZWRiYW5uZXIuY29tCnx8cmFpZGNhbGwu
+Y29tLnR3Ci5yYWluYm93cGxhbi5vcmcvYmJzCnxodHRwczovL3JhaW5kcm9wLmlv
+LwoucmFpem9qaS5vci5qcAp8aHR0cDovL3JhaXpvamkub3IuanAKcmFuZ3plbi5u
+ZXQKcmFuZ3plbi5vcmcKfGh0dHA6Ly9ibG9nLnJhbnhpYW5nLmNvbS8KLnJhcGJ1
+bGwubmV0CiEtLXxodHRwOi8vcmFwaWRnYXRvci5uZXQvCnx8cmFwaWRtb3ZpZXou
+Y29tCnJhcGlkdnBuLmNvbQp8fHJhcGlkdnBuLmNvbQp8fHJhcmJncHJ4Lm9yZwp8
+fHJhdGlvbmFsd2lraS5vcmcKfHxyYXdnaXQuY29tCnx8cmF3Z2l0aHViLmNvbQp8
+fHJjaW5ldC5jYQp8fHJlYWJibGUuY29tCi5yZWFkMTAwLmNvbQoucmVhZGluZ3Rp
+bWVzLmNvbS50dwp8fHJlYWRpbmd0aW1lcy5jb20udHcKfHxyZWFkbW9vLmNvbQou
+cmVhZHlkb3duLmNvbQp8aHR0cDovL3JlYWR5ZG93bi5jb20KfHxyZWFsY291cmFn
+ZS5vcmcKLnJlYWxpdHlraW5ncy5jb20KfHxyZWFsaXR5a2luZ3MuY29tCi5yZWFs
+cmFwdGFsay5jb20KLnJlYWxzZXhwYXNzLmNvbQp8fHJlYXNvbi5jb20KLnJlY29y
+ZGhpc3Rvcnkub3JnCi5yZWNvdmVyeS5vcmcudHcKfGh0dHA6Ly9vbmxpbmUucmVj
+b3Zlcnl2ZXJzaW9uLm9yZwp8fHJlY292ZXJ5dmVyc2lvbi5jb20udHcKfHxyZWQt
+bGFuZy5vcmcKfHxyZWRidWJibGUuY29tCi5yZWRjaGluYWNuLm5ldAp8fHJlZGNo
+aW5hY24ubmV0CnJlZGNoaW5hY24ub3JnCnJlZHR1YmUuY29tCnJlZmVyZXIudXMK
+fHxyZWZlcmVyLnVzCnx8cmVmbGVjdGl2ZWNvZGUuY29tCnx8YmxvZy5yZWltdS5u
+ZXQKcmVsYXhiYnMuY29tCi5yZWxheS5jb20udHcKLnJlbGVhc2VpbnRlcm5hdGlv
+bmFsLm9yZwp8fHJlbGlnaW9ubmV3cy5jb20KcmVubWluYmFvLmNvbQp8fHJlbm1p
+bmJhby5jb20KLnJlbnl1cmVucXVhbi5vcmcKfHxyZW55dXJlbnF1YW4ub3JnCnxo
+dHRwOi8vY2VydGlmaWNhdGUucmV2b2NhdGlvbmNoZWNrLmNvbQp8fHJlc2lsaW8u
+Y29tCi5yZXV0ZXJzLmNvbQp8fHJldXRlcnMuY29tCnx8cmV1dGVyc21lZGlhLm5l
+dAoucmV2bGVmdC5jb20KfHxyZXNpc3RjaGluYS5vcmcKcmV0d2VldGlzdC5jb20K
+fHxyZXR3ZWV0cmFuay5jb20KIS0tY29ubmVjdGVkY2hpbmEucmV1dGVycy5jb20K
+IS0tfGh0dHA6Ly93d3cucmV1dGVycy5jb20vbmV3cy92aWRlbwpyZXZ2ZXIuY29t
+Ci5yZmEub3JnCnx8cmZhLm9yZwoucmZhY2hpbmEuY29tCi5yZmFtb2JpbGUub3Jn
+CnJmYXdlYi5vcmcKfHxyZmVybC5vcmcKLnJmaS5mcgp8fHJmaS5mcgp8fHJmaS5t
+eQohLS0ucmhjbG91ZC5jb20KIS0tRWRnZWNhc3QKLnJpZ3BhLm9yZwoucmlsZXln
+dWlkZS5jb20KfHxyaWt1Lm1lCi5yaXRvdWtpLmpwCnx8cml0dGVyLnZnCi5ybHds
+dy5jb20KfHxybHdsdy5jb20KfHxybWJsLndzCi5ybWpkdy5jb20KLnJvYWRzaG93
+LmhrCi5yb2JvZm9yZXguY29tCnx8cm9idXN0bmVzc2lza2V5LmNvbQohLS18fHJv
+Yy10YWl3YW4ub3JnCnx8cm9ja2V0LmNoYXQKfHxyb2NrZXQtaW5jLm5ldAp8aHR0
+cDovL3d3dzIucm9ja2V0YmJzLmNvbS8xMS9iYnMuY2dpP2lkPTVtdXMKfGh0dHA6
+Ly93d3cyLnJvY2tldGJicy5jb20vMTEvYmJzLmNnaT9pZD1mcmVlbWdsCiEtLXx8
+cm9jbXAub3JnCnx8cm9qby5jb20KfHxyb25qb25lc3dyaXRlci5jb20KfHxyb2xm
+b3VuZGF0aW9uLm9yZwp8fHJvbGlhLm5ldAp8fHJvbHNvY2lldHkub3JnCi5yb29k
+by5jb20KLnJvc2VjaGluYS5uZXQKfHxyb3UudmlkZW8KLnJzZi5vcmcKfHxyc2Yu
+b3JnCi5yc2YtY2hpbmVzZS5vcmcKfHxyc2YtY2hpbmVzZS5vcmcKfHxyc3NodWIu
+YXBwCnx8cGhvc3BoYXRpb24xMy5yc3NpbmcuY29tCi5yc3NtZW1lLmNvbQp8fHJz
+c21lbWUuY29tCnx8cnRhbGFiZWwub3JnCi5ydGhrLmhrCnx8cnRoay5oawoucnRo
+ay5vcmcuaGsKfHxydGhrLm9yZy5oawoucnRpLm9yZy50dwp8fHJ0aS5vcmcudHcK
+fHxydGkudHcKLnJ1YW55aWZlbmcuY29tL2Jsb2cqc29tZV93YXlzX3RvX2JyZWFr
+X3RoZV9ncmVhdF9maXJld2FsbApydWtvci5vcmcKfHxydWxlMzQueHh4Cnx8cnVt
+YmxlLmNvbQoucnVuYnR4LmNvbQoucnVzaGJlZS5jb20KfHxydXN2cG4uY29tCi5y
+dXRlbi5jb20udHcKfHxydXRlbi5jb20udHcKfHxydXRyYWNrZXIubmV0Cnx8cnV0
+cmFja2VyLm9yZwpydXR1YmUucnUKLnJ4aGoubmV0CnxodHRwOi8vcnhoai5uZXQK
+CiEtLS0tLS0tLS0tLS0tLS0tLS0tLVNTLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
+LQp8fHNpbmEuY29tLmhrCnx8c3dhcHNwYWNlLmNvCnx8c3RvcnJ5LnR2Cnx8c3Rh
+bmRhcmQuY28udWsKfHxzYWdlcm5ldC5vcmcKfHxzaW1wbGV4LmNoYXQKfHxzb3Vu
+ZG9uLmZtCnx8c3NydG9vbC5jb20KfHxzc3JzaGFyZS51cwp8fHNlY3VyZS5zaGFk
+b3dzb2Nrcy5udQp8fHN5bmFwc2Uub3JnCnx8c291dGgtcGx1cy5uZXQKfHxzaWx2
+ZXJnYXRlYmFuay5jb20KfHxzaGFyZS12aWRlb3Muc2UKfHxzc3JzaGFyZS51cwp8
+fGNkbi5zdGF0aWNhbGx5LmlvCnx8c2xpZGVzLmNvbQp8fHN1bm8uY29tCnx8c3lk
+bmV5LmJpbmcuY29tCnx8c2VodWF0YW5nLm9yZwp8fHNpbmdsZWxvZ2luLnNlCnx8
+c3Vuby5haQp8fHN5b3NldHUuY29tCi5zMXMxczEuY29tCnx8cy1jdXRlLmNvbQou
+cy1kcmFnb24ub3JnCnxodHRwOi8vd3d3LnM0bWluaWFyY2hpdmUuY29tCmNkbjEu
+bHAuc2Fib29tLmNvbQp8fHNhY2tzLmNvbQpzYWNvbS5oawp8fHNhY29tLmhrCnx8
+c2FkcGFuZGEudXMKfHxzYWZlY2hhdC5jb20KfHxzYWZlZ3VhcmRkZWZlbmRlcnMu
+Y29tCi5zYWZlcnZwbi5jb20KfHxzYWZlcnZwbi5jb20KLnNhaW50eWN1bHR1cmUu
+Y29tCnxodHRwOi8vc2FpbnR5Y3VsdHVyZS5jb20KfHxzYWt1cmFsaXZlLmNvbQou
+c2FreWEub3JnCi5zYWx2YXRpb24ub3JnLmhrCnx8c2FsdmF0aW9uLm9yZy5oawou
+c2FtYWlyLnJ1L3Byb3h5L3R5cGUtMDEKLnNhbWJob3RhLm9yZwp8fGNuLnNhbmRz
+Y290YWljZW50cmFsLmNvbQp8fHNhbmtha3Vjb21wbGV4LmNvbQp8fHNhbmtlaS5j
+b20KfHxzYW5taW4uY29tLnR3CnNhcGlrYWNodS5uZXQKc2F2ZW1lZGlhLmNvbQp8
+fHNhdmV0aGVzb3VuZHMuaW5mbwouc2F2ZXRpYmV0LmRlCnx8c2F2ZXRpYmV0LmRl
+CnNhdmV0aWJldC5mcgpzYXZldGliZXQubmwKLnNhdmV0aWJldC5vcmcKfHxzYXZl
+dGliZXQub3JnCnNhdmV0aWJldC5ydQouc2F2ZXRpYmV0c3RvcmUub3JnCnx8c2F2
+ZXRpYmV0c3RvcmUub3JnCnx8c2F2ZXVpZ2h1ci5vcmcKc2F2ZXZpZC5jb20KLnNi
+bWUubWUKfGh0dHA6Ly9zYm1lLm1lCi5zYnMuY29tLmF1L3lvdXJsYW5ndWFnZQou
+c2Nhc2luby5jb20KfGh0dHA6Ly93d3cuc2NpZW5jZW1hZy5vcmcvY29udGVudC8z
+NDQvNjE4Ny85NTMKLnNjaWVuY2VuZXRzLmNvbQouc2NtcC5jb20KfHxzY21wLmNv
+bQouc2NtcGNoaW5lc2UuY29tCnx8c2NyYW1ibGUuaW8KfHxzY3JpYmQuY29tCnx8
+c2NyaXB0c3BvdC5jb20KfHxzZWFyY2guY29tCi5zZWFyY2h0cnV0aC5jb20KfHxz
+ZWFyeC5tZQp8fHNlYXR0bGVmZGMuY29tCi5zZWNyZXRjaGluYS5jb20KfHxzZWNy
+ZXRjaGluYS5jb20KfHxzZWNyZXRnYXJkZW4ubm8KLnNlY3JldHNsaW5lLmJpegp8
+fHNlY3JldHNsaW5lLmJpegp8fHNlY3VyZXNlcnZlcmNkbi5uZXQKfHxzZWN1cmV0
+dW5uZWwuY29tCnNlY3VyaXR5aW5hYm94Lm9yZwp8aHR0cHM6Ly9zZWN1cml0eWlu
+YWJveC5vcmcKLnNlY3VyaXR5a2lzcy5jb20KfHxzZWN1cml0eWtpc3MuY29tCnx8
+c2VlZDQubWUKfHxuZXdzLnNlZWh1YS5jb20Kc2Vlc21pYy5jb20KfHxzZWV2cG4u
+Y29tCnx8c2Vlem9uZS5uZXQKfHxzZWh1YXRhbmcubmV0CnNlamllLmNvbQouc2Vu
+ZHNwYWNlLmNvbQp8fHNlbnNvcnRvd2VyLmNvbQpzZXNhd2UubmV0Cnx8c2VzYXdl
+Lm5ldAp8fHNldGh3a2xlaW4ubmV0Cnx8c2V0bi5jb20KLnNldHR2LmNvbS50dwou
+c2V2ZW5sb2FkLmNvbQp8fHNldmVubG9hZC5jb20KLnNleC5jb20KfHxzZXguY29t
+Cnx8c2V4My5jb20KfHxzZXg4LmNjCi5zZXhhbmRzdWJtaXNzaW9uLmNvbQouc2V4
+Ym90LmNvbQouc2V4aHUuY29tCnNleGluc2V4Lm5ldAp8fHNleGluc2V4Lm5ldAou
+c2V4dHZ4LmNvbQoKIS0tSVAgb2YgU2V4SW5TZXgKNjcuMjIwLjkxLjE1CjY3LjIy
+MC45MS4xOAo2Ny4yMjAuOTEuMjMKCnxodHRwOi8vKi5zZi5uZXQKLnNmaWxleWR5
+LmNvbQp8fHNmc2hpYmFvLmNvbQouc2Z0aW5kaWEub3JnCi5zZnR1ay5vcmcKfHxz
+ZnR1ay5vcmcKfHxzaGFkZXlvdXZwbi5jb20Kc2hhZG93Lm1hCi5zaGFkb3dza3ku
+eHl6Ci5zaGFkb3dzb2Nrcy5hc2lhCnx8d3d3LnNoYWRvd3NvY2tzLmNvbQouc2hh
+ZG93c29ja3MuY29tCnx8c2hhZG93c29ja3MuY29tLmhrCi5zaGFkb3dzb2Nrcy5v
+cmcKfHxzaGFkb3dzb2Nrcy5vcmcKfGh0dHA6Ly9jbi5zaGFmYXFuYS5jb20KfHxz
+aGFoaXQuYml6Ci5zaGFtYmFsYXBvc3QuY29tCnNoYXBlc2VydmljZXMuY29tCi5z
+aGFyZWJlZS5jb20KfHxzaGFyZWNvb2wub3JnCiEtLXx8c2hhcmtkb2xwaGluLmNv
+bQouc2hhcnBkYWlseS5oawouc2hhcnBkYWlseS50dwouc2hhdC10aWJldC5jb20K
+c2hlaWt5ZXJtYW1pLmNvbQouc2hlbGxmaXJlLmRlCnx8c2hlbGxmaXJlLmRlCnNo
+ZW55dW4uY29tCnNoZW55dW5wZXJmb3JtaW5nYXJ0cy5vcmcKfHxzaGVueXVucGVy
+Zm9ybWluZ2FydHMub3JnCnx8c2hlbnl1bnNob3AuY29tCnNoZW56aG91ZmlsbS5j
+b20KfHxzaGVuemhvdWZpbG0uY29tCnx8c2hlbnpob3V6aGVuZ2Rhby5vcmcKLnNo
+aWF0di5uZXQKLnNoaWNoZW5nLm9yZwpzaGlwY2Ftb3VmbGFnZS5jb20KLnNoaXJl
+eWlzaHVuamlhbi5jb20KLnNoaXRhb3R2Lm9yZwp8fHNoaXhpYW8ub3JnCnx8c2hp
+emhhby5vcmcKc2hpemhhby5vcmcKc2hrc3ByLm1vYmkvZGFicgp8fHNob2Rhbmhx
+LmNvbQp8fHNob29zaHRpbWUuY29tCi5zaG9wMjAwMC5jb20udHcKfHxzaG9wZWUu
+dHcKLnNob3BwaW5nLmNvbQouc2hvd2hhb3R1LmNvbQouc2hvd3RpbWUuanAKfHxz
+aG93d2UudHcKLnNodXR0ZXJzdG9jay5jb20KfHxzaHV0dGVyc3RvY2suY29tCi5z
+aHdjaHVyY2gub3JnCnx8c2h3Y2h1cmNoLm9yZwouc2h3Y2h1cmNoMy5jb20KfGh0
+dHA6Ly9zaHdjaHVyY2gzLmNvbQouc2lkZGhhcnRoYXNpbnRlbnQub3JnCnx8c2lk
+ZWxpbmVzbmV3cy5jb20KLnNpZGVsaW5lc3Nwb3J0c2VhdGVyeS5jb20KfHxzaWdu
+YWwub3JnCi5zaWppaHVpc3VvLmNsdWIKLnNpamlodWlzdW8uY29tCi5zaWxrYm9v
+ay5jb20KfHxzaW1ib2xvc3R3aXR0ZXIuY29tCnNpbXBsZWNkLm9yZwp8fHNpbXBs
+ZWNkLm9yZwp8fHNpbXBsZWNkLm1lCnNpbXBsZXByb2R1Y3Rpdml0eWJsb2cuY29t
+CmJicy5zaW5hLmNvbS8KYmJzLnNpbmEuY29tJTJGCmRhaWx5bmV3cy5zaW5hLmNv
+bS8KZGFpbHluZXdzLnNpbmEuY29tJTJGCmhvbWUuc2luYS5jb20KbmV3cy5zaW5h
+LmNvbS5oawpuZXdzLnNpbmNoZXcuY29tLm15Ci5zaW5jaGV3LmNvbS5teS9ub2Rl
+Lwouc2luY2hldy5jb20ubXkvdGF4b25vbXkvdGVybQouc2luZ2Fwb3JlcG9vbHMu
+Y29tLnNnCnx8c2luZ2Fwb3JlcG9vbHMuY29tLnNnCi5zaW5nZm9ydGliZXQuY29t
+Ci5zaW5ncGFvLmNvbS5oawpzaW5ndGFvLmNvbQp8fHNpbmd0YW8uY29tCm5ld3Mu
+c2luZ3Rhby5jYQouc2luZ3Rhb3VzYS5jb20KfHxzaW5ndGFvdXNhLmNvbQohLS18
+fGNkcC5zaW5pY2EuZWR1LnR3CnNpbm8tbW9udGhseS5jb20KfHxzaW5vY2EuY29t
+Cnx8c2lub2Nhc3QuY29tCnNpbm9jaXNtLmNvbQpzaW5vbW9udHJlYWwuY2EKLnNp
+bm9hbnRzLmNvbQp8fHNpbm9hbnRzLmNvbQp8fHNpbm9pbnNpZGVyLmNvbQouc2lu
+b3F1ZWJlYy5jb20KLnNpZXJyYWZyaWVuZHNvZnRpYmV0Lm9yZwpzaXMueHh4Cnx8
+c2lzMDAxLmNvbQpzaXMwMDEudXMKLnNpdGUydW5ibG9jay5jb20KLnNpdGVicm8u
+dHcKfHxzaXRla3JlYXRvci5jb20KfHxzaXRlbWFwcy5vcmcKfHxza2V0Y2hhcHBz
+b3VyY2VzLmNvbQp8fHNraW10dWJlLmNvbQp8fGxhYi5za2subW9lCnx8c2t5YmV0
+LmNvbQp8aHR0cDovL3VzZXJzLnNreW5ldC5iZS9yZXZlcy90aWJldGhvbWUuaHRt
+bAouc2t5a2luZy5jb20udHcKYmJzLnNreWtpd2kuY29tCnxodHRwOi8vd3d3LnNr
+eXBlLmNvbS9pbnRsLwp8aHR0cDovL3d3dy5za3lwZS5jb20vemgtSGFudAp8fHNr
+eXZlZ2FzLmNvbQoueHNreXdhbGtlci5jb20KfHx4c2t5d2Fsa2VyLmNvbQp8fHNr
+eXh2cG4uY29tCi5zbGF5dGl6bGUuY29tCi5zbGVhenlkcmVhbS5jb20KfHxzbGVh
+enlmb3JrLm9yZwp8fHNsaGVuZy5jb20KfHxzbGlkZXNoYXJlLm5ldApmb3J1bS5z
+bGltZS5jb20udHcKLnNsaW5rc2V0LmNvbQp8fHNsaWNrdnBuLmNvbQouc2x1dGxv
+YWQuY29tCnx8c21hcnRkbnNwcm94eS5jb20KLnNtYXJ0aGlkZS5jb20KfHxhcHAu
+c21hcnRtYWlsY2xvdWQuY29tCnNtY2hib29rcy5jb20KfHxzbWguY29tLmF1CnNt
+aHJpYy5vcmcKLnNtaXRoLmVkdS9kYWxhaWxhbWEKfHxzbW4ubmV3cwouc215eHku
+b3JnCiEtLVRPRE8tbm8taG9tZXBhZ2UKfHxzbmRjZG4uY29tCnNuZWFrbWUubmV0
+CnNub3dsaW9ucHViLmNvbQp8fHNvY2lhbGJsYWRlLmNvbQouc29ja3MtcHJveHku
+bmV0Cnx8c29ja3MtcHJveHkubmV0Ci5zb2Nrc2NhcDY0LmNvbQp8fHNvY2tzbGlz
+dC5uZXQKLnNvY3JlYy5vcmcKfGh0dHA6Ly9zb2NyZWMub3JnCi5zb2QuY28uanAK
+LnNvZnRldGhlci5vcmcKfHxzb2Z0ZXRoZXIub3JnCi5zb2Z0ZXRoZXItZG93bmxv
+YWQuY29tCnx8c29mdGV0aGVyLWRvd25sb2FkLmNvbQp8fGNkbi5zb2Z0bGF5ZXIu
+bmV0Cnx8c29nY2x1Yi5jb20Kc29oY3JhZGlvLmNvbQp8fHNvaGNyYWRpby5jb20K
+LnNva21pbC5jb20KfHxzb3J0aW5nLWFsZ29yaXRobXMuY29tCnx8c291cC5pbwpA
+QHx8c3RhdGljLnNvdXAuaW8KLnNvYmVlcy5jb20KfHxzb2JlZXMuY29tCi5zb2Z0
+ZXRoZXIuY28uanAKfHxzb2Z0d2FyZWJ5Y2h1Y2suY29tCmJsb2cuc29nb28ub3Jn
+CnNvaC50dwp8fHNvaC50dwpzb2hmcmFuY2Uub3JnCnx8c29oZnJhbmNlLm9yZwpj
+aGluZXNlLnNvaWZpbmQuY29tCnNva2Ftb25saW5lLmNvbQp8fHNvbGFuYS5jb20K
+LnNvbGlkYXJpdGV0aWJldC5vcmcKLnNvbGlkZmlsZXMuY29tCnx8c29tZWUuY29t
+Ci5zb25namlhbmp1bi5jb20KfHxzb25namlhbmp1bi5jb20KLnNvbmlkb2RlbGFl
+c3BlcmFuemEub3JnCi5zb3BjYXN0LmNvbQouc29wY2FzdC5vcmcKfHxuYWtlZHNl
+Y3VyaXR5LnNvcGhvcy5jb20KfHxzb3Mub3JnCnx8c29zYWQuZnVuCmJicy5zb3Ut
+dG9uZy5vcmcKLnNvdWJvcnkuY29tCnxodHRwOi8vc291Ym9yeS5jb20KLnNvdWwt
+cGx1cy5uZXQKLnNvdWxjYWxpYnVyaGVudGFpLm5ldAp8fHNvdWxjYWxpYnVyaGVu
+dGFpLm5ldAp8fHNvdW5kY2xvdWQuY29tCiEtLXxodHRwczovL3NvdW5kY2xvdWQu
+Y29tL3B1bmtnb2QKLnNvdW5kb2Zob3BlLmtyCnNvdW5kb2Zob3BlLm9yZwp8fHNv
+dW5kb2Zob3BlLm9yZwohLS0uc291cmNlZm9yZ2UubmV0CiEtfGh0dHA6Ly9zb3Vy
+Y2Vmb3JnZS5uZXQKfGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcCovc2hhZG93c29j
+a3NndWkvCi5zb3VyY2V3YWRpby5jb20KfHxzb3V0aC1wbHVzLm9yZwp8fHNvdXRo
+bW9uZ29saWEub3JnCnx8c291dGhuZXdzLmNvbS50dwp8fHNvd2Vycy5vcmcuaGsK
+fHxzcGFua2JhbmcuY29tCi5zcGFua2luZ3R1YmUuY29tCi5zcGFua3dpcmUuY29t
+Cnx8c3BhdGlhbC5pbwp8fHNwYi5jb20KfHxzcGVha2VyZGVjay5jb20KfHxzcGVl
+ZGNhdC5tZQp8fHNwZWVkaWZ5LmNvbQp8fHNwZW5jZXJ0aXBwaW5nLmNvbQp8fHNw
+ZW5kZWUuY29tCnx8c3BpY2V2cG4uY29tCi5zcGlkZXJvYWsuY29tCnx8c3BpZGVy
+b2FrLmNvbQouc3Bpa2UuY29tCi5zcG90Zmx1eC5jb20KfHxzcG90Zmx1eC5jb20K
+fHxzcHJlYWtlci5jb20KLnNwcmluZzR1LmluZm8KfHxzcHJpbmc0dS5pbmZvCnx8
+c3ByaW5nd29vZC5tZQp8fHNwcm91dGNvcmUuY29tCnx8c3F1aXJyZWx2cG4uY29t
+Ci5zcy1saW5rLmNvbQp8fHNzLWxpbmsuY29tCi5zc2dsb2JhbC5jby93cAp8aHR0
+cDovL3NzZ2xvYmFsLmNvCi5zc2dsb2JhbC5tZQouc3Nyc2hhcmUuY29tCnx8c3Ny
+c2hhcmUuY29tCiEtLXxodHRwOi8vY2RuLnNzdGF0aWMubmV0Lwp8fHNzdG0ubW9l
+Cnx8c3N0bWx0Lm1vZQpzc3RtbHQubmV0Cnx8c3N0bWx0Lm5ldAp8aHR0cDovL3N0
+YWNrb3ZlcmZsb3cuY29tL3VzZXJzLzg5NTI0NQp8fHN0YW5kdXBmb3J0aWJldC5v
+cmcKfHxzdGFuZHdpdGhoay5vcmcKc3RhbmZvcmQuZWR1L2dyb3VwL2ZhbHVuCi5z
+dGFyZmlzaGZ4LmNvbQouc3RhcnAycC5jb20KfHxzdGFycDJwLmNvbQouc3RhcnRw
+YWdlLmNvbQp8fHN0YXJ0cGFnZS5jb20KLnN0YXJ0dXBsaXZpbmdjaGluYS5jb20K
+fGh0dHA6Ly9zdGFydHVwbGl2aW5nY2hpbmEuY29tCnx8c3RhdGljLWVjb25vbWlz
+dC5jb20KfHxzdGJveS5uZXQKfHxzdGMuY29tLnNhCnx8c3RlZWwtc3Rvcm0uY29t
+Ci5zdGVnYW5vcy5jb20KfHxzdGVnYW5vcy5jb20KLnN0ZWdhbm9zLm5ldAouc3Rl
+cGNoaW5hLmNvbQohLS18fHN0ZXBtYW5pYS5jb20KaGQuc3RoZWFkbGluZS5jb20v
+bmV3cy9yZWFsdGltZQpzdGhvby5jb20KfHxzdGhvby5jb20KLnN0aWNrYW0uY29t
+CnN0aWNrZXJhY3Rpb24uY29tL3Nlc2F3ZQouc3RpbGVwcm9qZWN0LmNvbQp8fHN0
+aXRjaGVyLmNvbQouc3RvLmNjCi5zdG9wb3JnYW5oYXJ2ZXN0aW5nLm9yZwp8fHN0
+b3JhZ2VuZXdzbGV0dGVyLmNvbQouc3Rvcm0ubWcKfHxzdG9ybS5tZwouc3RvcHRp
+YmV0Y3Jpc2lzLm5ldAp8fHN0b3B0aWJldGNyaXNpcy5uZXQKfHxzdG9yai5pbwou
+c3Rvcm1tZWRpYWdyb3VwLmNvbQp8fHN0b3dlYm95ZC5jb20KfHxzdHJhaXRzdGlt
+ZXMuY29tCnN0cmFuYWJnLmNvbQp8fHN0cmFwbGVzc2RpbGRvLmNvbQp8fHN0cmVh
+bWFibGUuY29tCnx8c3RyZWFtYXRlLmNvbQp8fHN0cmVhbWluZ3RoZS5uZXQKc3Ry
+ZWVtYS5jb20vdHYvTlREVFZfQ2hpbmVzZQpjbi5zdHJlZXR2b2ljZS5jb20vYXJ0
+aWNsZQpjbi5zdHJlZXR2b2ljZS5jb20vZGlhcnkKdHcuc3RyZWV0dm9pY2UuY29t
+Ci5zdHJpa2luZ2x5LmNvbQp8fHN0cm9uZ3Zwbi5jb20KLnN0cm9uZ3dpbmRwcmVz
+cy5jb20KfHxzdHVkZW50c2ZvcmFmcmVldGliZXQub3JnCnx8c3R1bWJsZXVwb24u
+Y29tCnN0dXBpZHZpZGVvcy5jb20KfHxzdWJzdGFjay5jb20KfHxzdWJoZC50dgou
+c3VjY2Vzc2ZuLmNvbQpwYW5hbWFwYXBlcnMuc3VlZGRldXRzY2hlLmRlCi5zdWdh
+cnN5bmMuY29tCnx8c3VnYXJzeW5jLmNvbQouc3Vnb2Jicy5jb20KfHxzdWd1bWly
+dTE4LmNvbQp8fHN1aXNzbC5jb20Kc3VtbWlmeS5jb20KLnN1bXJhbmRvLmNvbQp8
+fHN1bXJhbmRvLmNvbQpzdW4xOTExLmNvbQp8fHN1bmRheWd1YXJkaWFubGl2ZS5j
+b20KLnN1bnBvcm5vLmNvbQp8fHN1bm1lZGlhLmNhCnx8c3VucG9ybm8uY29tCi5z
+dW5za3lmb3J1bS5jb20KLnN1bnRhLmNvbS50dwouc3VudnBuLm5ldAouc3VwZXJm
+cmVldnBuLmNvbQouc3VwZXJ2cG4ubmV0Cnx8c3VwZXJ2cG4ubmV0Ci5zdXBlcnpv
+b2kuY29tCnxodHRwOi8vc3VwZXJ6b29pLmNvbQouc3VwcGlnLm5ldAouc3VwcmVt
+ZW1hc3RlcnR2LmNvbQp8aHR0cDovL3N1cHJlbWVtYXN0ZXJ0di5jb20KLnN1cmZl
+YXN5LmNvbQp8fHN1cmZlYXN5LmNvbQouc3VyZmVhc3kuY29tLmF1CnxodHRwOi8v
+c3VyZmVhc3kuY29tLmF1Cnx8c3VyZnNoYXJrLmNvbQp8fHN1cnJlbmRlcmF0MjAu
+bmV0Ci5zdnNmeC5jb20KLnN3aXNzaW5mby5jaAp8fHN3aXNzaW5mby5jaAouc3dp
+c3N2cG4ubmV0Cnx8c3dpc3N2cG4ubmV0CnN3aXRjaHZwbi5uZXQKfHxzd2l0Y2h2
+cG4ubmV0Ci5zeWRuZXl0b2RheS5jb20KfHxzeWRuZXl0b2RheS5jb20KLnN5bGZv
+dW5kYXRpb24ub3JnCnx8c3lsZm91bmRhdGlvbi5vcmcKfHxzeW5jYmFjay5jb20K
+c3lzcmVzY2NkLm9yZwouc3l0ZXMubmV0CmJsb2cuc3l4ODYuY29tLzIwMDkvMDkv
+cHVmZgouc3piYnMubmV0Ci5zemV0b3dhaC5vcmcuaGsKCiEtLS0tLS0tLS0tLS0t
+LS0tLS0tLVRULS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8fHRhbGthdG9uZS5j
+b20KfHx0YW5rcy5nZwp8fHRoZWhhbnNpbmRpYS5jb20KfHxydG0udG50LWVhLmNv
+bQp8fHRlbGxhcGFydC5jb20KfHx0aHJlYWRzLmNvbQp8fHRnLW1lLmNvbQp8fHR3
+a2FuLmNvbQp8fHR1bmVpbi5zdHJlYW1ndXlzMS5jb20KfHx0b3UudHYKfHx0aW55
+dXJsLmNvbQp8fHRleHRub3cuY29tCnx8dGV4dG5vdy5tZQp8fHRva2VuLmltCnx8
+dG9rZW5sb24uaW0KfHx0YXJkaWdyYWRlLmlvCnx8dG9ycmVudGdhbGF4eS50bwp8
+fHRvbXAzLmNjCnx8dHVrYWFuaS5vcmcKfHx0aGV0YXRva2VuLm9yZwp8fHR5cGVz
+ZXQuaW8KfHx0aGVjaGFzZXJuZXdzLmNvLnVrCnx8aG9sZS50aHUubW9uc3Rlcgp8
+fHRodWhvbGUuY29tCnx8dC1nLmNvbQoudDM1LmNvbQoudDY2eS5jb20KfHx0NjZ5
+LmNvbQp8fGVzZy50OTF5LmNvbQoudGFhLXVzYS5vcmcKfGh0dHA6Ly90YWEtdXNh
+Lm9yZwoudGFhemUudHcKfHx0YWF6ZS50dwp8aHR0cDovL3d3dy50YWJsZXNnZW5l
+cmF0b3IuY29tLwp0YWJ0dGVyLmpwCi50YWNvbmV0LmNvbS50dwp8fHRhZWRwLm9y
+Zy50dwoudGFmbS5vcmcKdGFnd2Fsay5jb20KfHx0YWd3YWxrLmNvbQp0YWhyLm9y
+Zy50dwoudGFpcGVpc29jaWV0eS5vcmcKfHx0YWlwZWlzb2NpZXR5Lm9yZwp8fHRh
+aXBlaXRpbWVzLmNvbQp8fHRhaXNvdW5kcy5jb20KLnRhaXdhbmJpYmxlLmNvbQou
+dGFpd2FuZGFpbHkubmV0Cnx8dGFpd2FuZGFpbHkubmV0Ci50YWl3YW5kYy5vcmcK
+IS0tfHx0YWl3YW5lbWJhc3N5Lm9yZwp8fHRhaXdhbmhvdC5uZXQKLnRhaXdhbmp1
+c3RpY2UuY29tCnRhaXdhbmtpc3MuY29tCnRhaXdhbm5hdGlvbi5jb20KdGFpd2Fu
+bmF0aW9uLmNvbS50dwp8fHRhaXdhbm5jZi5vcmcudHcKfHx0YWl3YW5uZXdzLmNv
+bS50dwp8aHR0cDovL3d3dy50YWl3YW5vbmxpbmUuY2MvCiEtLXx8dGFpd2FudG9k
+YXkudHcKdGFpd2FudHAubmV0Cnx8dGFpd2FudHQub3JnLnR3CnRhaXdhbnVzLm5l
+dAoudGFsazg1My5jb20KLnRhbGtib3hhcHAuY29tCnx8dGFsa2JveGFwcC5jb20K
+LnRhbGtjYy5jb20KfHx0YWxrY2MuY29tCi50YWxrb25seS5uZXQKfHx0YWxrb25s
+eS5uZXQKfHx0YW5jLm9yZwoudGFuZ3Jlbi51cwoudGFvaXNtLm5ldAp8aHR0cDov
+L3Rhb2lzbS5uZXQKLnRhcGF0YWxrLmNvbQp8fHRhcGF0YWxrLmNvbQpibG9nLnRh
+cmFnYW5hLmNvbQp8fHRhdXAubmV0Ci50YXdlZXQuY29tCnx8dGF3ZWV0LmNvbQou
+dGJjb2xsZWdlLm9yZwp8fHRiY29sbGVnZS5vcmcKLnRiaS5vcmcuaGsKLnRianl0
+Lm9yZwoudGJyYy5vcmcKdGJzLXJhaW5ib3cub3JnCi50YnNlYy5vcmcKfHx0YnNl
+Yy5vcmcKdGJza2tpbmFiYWx1LnBhZ2UudGwKLnRic24ub3JnCnx8dGJzbi5vcmcK
+LnRic3NlYXR0bGUub3JnCi50YnNzcWgub3JnCnxodHRwOi8vdGJzc3FoLm9yZwp0
+YnN3ZC5vcmcKLnRidGVtcGxlLm9yZy51awoudGJ0aG91c3Rvbi5vcmcKLnRjY3dv
+bmxpbmUub3JnCi50Y2V3Zi5vcmcKdGNocmQub3JnCnRjbnluai5vcmcKfHx0Y3Bz
+cGVlZC5jbwoudGNzb2ZiYy5vcmcKLnRkbS5jb20ubW8KdGVhbWFtZXJpY2FueS5j
+b20KfHx0ZWNoc3BvdC5jb20KIS0tT1ZICnx8dGVjaHZpei5uZXQKfHx0ZWNrLmlu
+Ci50ZWVuaWVmdWNrLm5ldAp0ZWVuc2luYXNpYS5jb20KfHx0ZWhyYW50aW1lcy5j
+b20KLnRlbGVjb21zcGFjZS5jb20KfHx0ZWxlZ3JhcGguY28udWsKLnRlbmFjeS5j
+b20KfHx0ZW5vci5jb20KfHx0ZW56aW5wYWxtby5jb20KLnRldy5vcmcKfHx0ZXcu
+b3JnCnx8dGZjLXRhaXdhbi5vcmcudHcKfHx0ZmlmbHZlLmNvbQoudGhhaWNuLmNv
+bQp8fHRoZWF0bGFudGljLmNvbQp8fHRoZWF0cnVtLWJlbGxpLmNvbQp8fGNuLnRo
+ZWF1c3RyYWxpYW4uY29tLmF1CnRoZWJsZW1pc2guY29tCnx8dGhlYmNvbXBsZXgu
+Y29tCnx8dGhlYmxhemUuY29tCi50aGVib2JzLmNvbQp8fHRoZWJvYnMuY29tCi50
+aGVjaGluYWJlYXQub3JnCnx8dGhlY2hpbmFjb2xsZWN0aW9uLm9yZwp8aHR0cDov
+L3d3dy50aGVjaGluYXN0b3J5Lm9yZy95ZWFyYm9va3MveWVhcmJvb2stMjAxMi8K
+fHx0aGVjb252ZXJzYXRpb24uY29tCi50aGVkYWxhaWxhbWFtb3ZpZS5jb20KfGh0
+dHA6Ly90aGVkYWxhaWxhbWFtb3ZpZS5jb20KfHx0aGVkaXBsb21hdC5jb20KfHx0
+aGVkdy51cwp8fHRoZWVwb2NodGltZXMuY29tCiEtLXx8dGhlZnJlZWxhbmQuY2x1
+Ygp8fHRoZWd1YXJkaWFuLmNvbQp8fHRoZWdheS5jb20KfGh0dHA6Ly90aGVnaW9p
+dGluaG9jLnZuLwoudGhlZ2x5LmNvbQp8fHRoZWhpbmR1LmNvbQp8fHRoZWh1bi5u
+ZXQKLnRoZWluaXRpdW0uY29tCnx8dGhlaW5pdGl1bS5jb20KLnRoZW5ld3NsZW5z
+LmNvbQp8fHRoZW5ld3NsZW5zLmNvbQoudGhlcGlyYXRlYmF5Lm9yZwp8fHRoZXBp
+cmF0ZWJheS5vcmcKIS0tfHx0aGVwaXJhdGViYXkuc2UKLnRoZXBvcm5kdWRlLmNv
+bQp8fHRoZXBvcm5kdWRlLmNvbQp8fHRoZXBvcnRhbHdpa2kuY29tCnx8dGhlcHJp
+bnQuaW4KfHx0aHJlYWRyZWFkZXJhcHAuY29tCnRoZXJvY2submV0Lm56Cnx8dGhl
+c2F0dXJkYXlwYXBlci5jb20uYXUKfHx0aGVzdGFuZG5ld3MuY29tCnRoZXRpYmV0
+Y2VudGVyLm9yZwp0aGV0aWJldGNvbm5lY3Rpb24ub3JnCi50aGV0aWJldG11c2V1
+bS5vcmcKLnRoZXRpYmV0cG9zdC5jb20KfHx0aGV0aWJldHBvc3QuY29tCnRoZXRy
+b3Rza3ltb3ZpZS5jb20KfHx0aGV0dmRiLmNvbQp8fHRoZXdnby5vcmcKfHx0aGV3
+aXJlY2hpbmEuY29tCi50aGV5bmMuY29tCnxodHRwOi8vdGhleW5jLmNvbQoudGhp
+bmtpbmd0YWl3YW4uY29tCnx8dGhpbmtpbmd0YWl3YW4uY29tCnx8dGhpcmRtaWxs
+Lm9yZwp8fHRoaXNhdi5jb20KLnRobGliLm9yZwp8fHRob21hc2Jlcm5oYXJkLm9y
+ZwoudGhvbmdkcmVhbXMuY29tCnx8dGhyb3VnaG5pZ2h0c2ZpcmUuY29tCi50aHVt
+YnppbGxhLmNvbQp8fHRoeXdvcmRzLmNvbQp0aWFuYW5tZW5tb3RoZXIub3JnCi50
+aWFuYW5tZW5kdWl6aGkuY29tCnx8dGlhbmFubWVuZHVpemhpLmNvbQp8fHRpYW5h
+bm1lbnVuaXYuY29tCnx8dGlhbmFubWVudW5pdi5uZXQKfHx0aWFuZGl4aW5nLm9y
+ZwoudGlhbmh1YXl1YW4uY29tCi50aWFubGF3b2ZmaWNlLmNvbQp8fHRpYW50aS5p
+bwp0aWFudGlib29rcy5vcmcKfHx0aWFudGlib29rcy5vcmcKdGlhbnlhbnRvbmcu
+b3JnLmNuCi50aWFuemh1Lm9yZwoudGliZXQuYXQKdGliZXQuY2EKLnRpYmV0LmNv
+bQp8fHRpYmV0LmNvbQp0aWJldC5mcgoudGliZXQubmV0Cnx8dGliZXQubmV0Cnx8
+dGliZXQubnUKLnRpYmV0Lm9yZwp8fHRpYmV0Lm9yZwp8fHRpYmV0Lm9yZy50dwp8
+fHRpYmV0LnRvCi50aWJldC1lbnZveS5ldQp8fHRpYmV0LWVudm95LmV1Ci50aWJl
+dC1mb3VuZGF0aW9uLm9yZwoudGliZXQtaG91c2UtdHJ1c3QuY28udWsKfHx0aWJl
+dC1pbml0aWF0aXZlLmRlCi50aWJldC1tdW5pY2guZGUKLnRpYmV0M3JkcG9sZS5v
+cmcKfGh0dHA6Ly90aWJldDNyZHBvbGUub3JnCnRpYmV0YWN0aW9uLm5ldAp8fHRp
+YmV0YWN0aW9uLm5ldAoudGliZXRhaWQub3JnCnRpYmV0YWxrLmNvbQoudGliZXRh
+bi5mcgp0aWJldGFuLWFsbGlhbmNlLm9yZwoudGliZXRhbmFydHMub3JnCi50aWJl
+dGFuYnVkZGhpc3RpbnN0aXR1dGUub3JnCnx8dGliZXRhbmJ1ZGRoaXN0aW5zdGl0
+dXRlLm9yZwp8fHRpYmV0YW5jb21tdW5pdHkub3JnCnx8dGliZXRhbmVudHJlcHJl
+bmV1cnMub3JnCnx8dGliZXRhbmhlYWx0aC5vcmcKLnRpYmV0YW5qb3VybmFsLmNv
+bQoudGliZXRhbmxhbmd1YWdlLm9yZwoudGliZXRhbmxpYmVyYXRpb24ub3JnCnx8
+dGliZXRhbmxpYmVyYXRpb24ub3JnCi50aWJldGNvbGxlY3Rpb24uY29tCi50aWJl
+dGFuYWlkcHJvamVjdC5vcmcKLnRpYmV0YW5jb21tdW5pdHl1ay5uZXQKfGh0dHA6
+Ly90aWJldGFuY29tbXVuaXR5dWsubmV0CnRpYmV0YW5jdWx0dXJlLm9yZwp0aWJl
+dGFuZmVtaW5pc3Rjb2xsZWN0aXZlLm9yZwoudGliZXRhbnBhaW50aW5ncy5jb20K
+LnRpYmV0YW5waG90b3Byb2plY3QuY29tCi50aWJldGFucG9saXRpY2FscmV2aWV3
+Lm9yZwoudGliZXRhbnJldmlldy5uZXQKfGh0dHA6Ly90aWJldGFuc3BvcnRzLm9y
+ZwoudGliZXRhbndvbWVuLm9yZwp8aHR0cDovL3RpYmV0YW53b21lbi5vcmcKLnRp
+YmV0YW55b3V0aC5vcmcKLnRpYmV0YW55b3V0aGNvbmdyZXNzLm9yZwp8fHRpYmV0
+YW55b3V0aGNvbmdyZXNzLm9yZwoudGliZXRjaGFyaXR5LmRrCnRpYmV0Y2hhcml0
+eS5pbgoudGliZXRjaGlsZC5vcmcKLnRpYmV0Y2l0eS5jb20KfHx0aWJldGNvcnBz
+Lm9yZwp8fHRpYmV0ZXhwcmVzcy5uZXQKfHx0aWJldGZvY3VzLmNvbQp8fHRpYmV0
+ZnVuZC5vcmcKLnRpYmV0Z2VybWFueS5jb20KfHx0aWJldGdlcm1hbnkuZGUKLnRp
+YmV0aGF1cy5jb20KLnRpYmV0aGVyaXRhZ2VmdW5kLm9yZwp8fHRpYmV0aG91c2Uu
+anAKfHx0aWJldGhvdXNlLm9yZwp8fHRpYmV0aG91c2UudXMKLnRpYmV0aW5mb25l
+dC5uZXQKLnRpYmV0anVzdGljZS5vcmcKLnRpYmV0a29taXRlLmRrCnx8dGliZXRt
+dXNldW0ub3JnCnx8dGliZXRuZXR3b3JrLm9yZwp8fHRpYmV0b2ZmaWNlLmNoCnRp
+YmV0b2ZmaWNlLmV1Cnx8dGliZXRvZmZpY2Uub3JnCnx8dGliZXRvbmxpbmUuY29t
+Cnx8dGliZXRvZmZpY2UuY29tLmF1Cnx8dGliZXRvbmxpbmUudHYKfHx0aWJldG9y
+YWxoaXN0b3J5Lm9yZwp8fHRpYmV0cG9saWN5LmV1Cnx8dGliZXRyZWxpZWZmdW5k
+LmNvLnVrCnx8dGliZXRzb2NpZXR5LmNvbQp8fHRpYmV0c3VuLmNvbQp8fHRpYmV0
+c3VwcG9ydGdyb3VwLm9yZwp8fHRpYmV0c3dpc3MuY2gKfHx0aWJldHRlbGVncmFw
+aC5jb20KfHx0aWJldHRpbWVzLm5ldAp8fHRpYmV0dHJ1dGguY29tCnx8dGliZXR3
+cml0ZXMub3JnCi50aWNrZXQuY29tLnR3Ci50aWdlcnZwbi5jb20KfHx0aWdlcnZw
+bi5jb20KLnRpbWRpci5jb20KfGh0dHA6Ly90aW1kaXIuY29tCi50aW1lLmNvbQp8
+aHR0cDovL3RpbWUuY29tCiEtLS50aW1lLmNvbS90aW1lL3RpbWUxMDAvbGVhZGVy
+cy9wcm9maWxlL3JlYmVsCiEtLS50aW1lLmNvbS90aW1lL3NwZWNpYWxzL3BhY2th
+Z2VzL2FydGljbGUvMCwyODgwNAohLS0udGltZS5jb20vdGltZS9tYWdhemluZQp8
+fHRpbWVzbm93bmV3cy5jb20KLnRpbXNhaC5jb20KfHx0aW10YWxlcy5jb20KfHxi
+bG9nLnRpbmV5LmNvbQp8fHRpbmd0YWxrLm1lCi50aW55LmNjCnx8dGlueS5jYwp8
+fHRpbnljaGF0LmNvbQp8fHRpbnlwYXN0ZS5jb20KfHx0aXBhcy5uZXQKLnRpc3Rv
+cnkuY29tCnx8dGtjcy1jb2xsaW5zLmNvbQoudG1hZ2F6aW5lLmNvbQp8fHRtYWdh
+emluZS5jb20KfGh0dHA6Ly90bWkubWUKLnRtcHAub3JnCnxodHRwOi8vdG1wcC5v
+cmcKLnRuYWZsaXguY29tCnx8dG5hZmxpeC5jb20KLnRucC5vcmcKfGh0dHA6Ly90
+bnAub3JnCi50by1wb3Juby5jb20KfHx0by1wb3Juby5jb20KfHx0b2dldHRlci5j
+b20KLnRva3lvLTI0Ny5jb20KLnRva3lvLWhvdC5jb20KfHx0b2t5by1wb3JuLXR1
+YmUuY29tCnx8dG9reW9jbi5jb20KdHcudG9tb25ld3MubmV0Ci50b25naWwub3Iu
+a3IKdG9ueXlhbi5uZXQKdG9vbmVsLm5ldAp0b3A4MS53cwoudG9wbmV3cy5pbgou
+dG9wcG9ybnNpdGVzLmNvbQp8aHR0cDovL3RvcHBvcm5zaXRlcy5jb20KfHx0b3B0
+b29uLm5ldAoudG9yZ3VhcmQubmV0Cnx8dG9yZ3VhcmQubmV0Cnx8dG9wLnR2Ci50
+b3BzaGFyZXdhcmUuY29tCi50b3BzeS5jb20KfHx0b3BzeS5jb20KfHx0b3B0aXAu
+Y2EKdG9yYS50bwoudG9yY24uY29tCnx8dG9ybG9jay5jb20KLnRvcnByb2plY3Qu
+b3JnCnx8dG9ycHJvamVjdC5vcmcKfHx0b3JyZW50a2l0dHkudHYKdG9ycmVudHBy
+aXZhY3kuY29tCnx8dG9ycmVudHByaXZhY3kuY29tCnxodHRwOi8vdG9ycmVudHBy
+b2plY3Quc2UKfHx0b3JyZW50eS5vcmcKfHx0b3J0b2lzZXN2bi5uZXQKfHx0b3J2
+cG4uY29tCnx8dG90YWx2cG4uY29tCi50b3V0aWFvYWJjLmNvbQp0b3duZ2Fpbi5j
+b20KdG95cGFyay5pbgp0b3l0cmFjdG9yc2hvdy5jb20KLnRwYXJlbnRzLm9yZwou
+dHBpLm9yZy50dwp8fHRwaS5vcmcudHcKfHx0cmFkaW5ndmlldy5jb20KfHx0cmFu
+c3BhcmVuY3kub3JnCnx8dHJlZW1hbGwuY29tLnR3CnRyZW5kc21hcC5jb20KfHx0
+cmVuZHNtYXAuY29tCi50cmltb25kaS5kZS9TRExFCi50cm91dy5ubAp8fHRyb3V3
+Lm5sCi50cnQubmV0LnRyCnx8dHJ0Lm5ldC50cgp0cnRjLmNvbS50dwoudHJ1ZWJ1
+ZGRoYS1tZC5vcmcKfHx0cnVlYnVkZGhhLW1kLm9yZwp0cnVseWVyZ29ub21pYy5j
+b20KfHx0cnV0aHNvY2lhbC5jb20KLnRydXZlby5jb20KLnRzY3R2Lm5ldAoudHNl
+bXR1bGt1LmNvbQp0c3F1YXJlLnR2Ci50c3Uub3JnLnR3CnRzdW5hZ2FydW1vbi5j
+b20KIS0tfGh0dHA6Ly93d3cudHN1cnUtYmlyZC5uZXQvCnx8dHQxMDY5LmNvbQou
+dHR0YW4uY29tCnx8dHR0YW4uY29tCnx8dHR2LmNvbS50dwp0dTg5NjQuY29tCi50
+dWJhaG9saWMuY29tCi50dWJlLmNvbQp0dWJlOC5jb20KfHx0dWJlOC5jb20KLnR1
+YmU5MTEuY29tCnx8dHViZTkxMS5jb20KLnR1YmVjdXAuY29tCi50dWJlZ2Fscy5j
+b20KLnR1YmVpc2xhbS5jb20KfGh0dHA6Ly90dWJlaXNsYW0uY29tCi50dWJlc3Rh
+Y2suY29tCnx8dHViZXdvbGYuY29tCi50dWliZWl0dS5uZXQKLnR1aWRhbmcub3Jn
+Cnx8dHVpZGFuZy5vcmcKLnR1aWRhbmcuc2UKLnR1bXV0YW56aS5jb20KfGh0dHA6
+Ly90dW11dGFuemkuY29tCnx8dHVtdmlldy5jb20KLnR1bmVpbi5jb20KfGh0dHA6
+Ly90dW5laW4uY29tCnx8dHVubmVsYmVhci5jb20KfHx0dW5uZWxibGljay5uZXQK
+LnR1bm5lbHIuY29tCnx8dHVubmVsci5jb20KfHx0dW5zYWZlLmNvbQp0dWl0d2l0
+LmNvbQoudHVyYW5zYW0ub3JnCi50dXJib2JpdC5uZXQKfHx0dXJib2JpdC5uZXQK
+LnR1cmJvaGlkZS5jb20KfHx0dXJib2hpZGUuY29tCnx8dHVya2lzdGFudGltZXMu
+Y29tCi50dXNoeWNhc2guY29tCnxodHRwOi8vdHVzaHljYXNoLmNvbQoudHV2cG4u
+Y29tCnx8dHV2cG4uY29tCnxodHRwOi8vdHV6YWlqaWRpLmNvbQp8aHR0cDovLyou
+dHV6YWlqaWRpLmNvbQoudHcwMS5vcmcKfGh0dHA6Ly90dzAxLm9yZwp8fHVzZS50
+eXBla2l0Lm5ldAoKIS0tLVR1bWJsci0tLQoudHVtYmxyLmNvbQp8fHR1bWJsci5j
+b20KIS0tQEB8fGFzc2V0cy50dW1ibHIuY29tCiEtLUBAfHxkYXRhLnR1bWJsci5j
+b20KIS0tQEB8fG1lZGlhLnR1bWJsci5jb20KIS0tQEB8fHN0YXRpYy50dW1ibHIu
+Y29tCiEtLUBAfHx3d3cudHVtYmxyLmNvbQp8fGxlY2xvdWQubmV0Cnx8c2x1dG1v
+b25iZWFtLmNvbQp8aHR0cDovL2Jsb2cuc295bGVudC5jb20KCi50di5jb20KfGh0
+dHA6Ly90di5jb20KdHZhbnRzLmNvbQp8fGZvcnVtLnR2Yi5jb20KfHxpbmV3cy1h
+cGkudHZiLmNvbQpuZXdzLnR2YnMuY29tLnR3Ci50dmJveG5vdy5jb20KfHx0dmJv
+eG5vdy5jb20KdHZpZGVyLmNvbQoudHZtb3N0LmNvbS5oawoudHZwbGF5dmlkZW9z
+LmNvbQp8fHR2dW5ldHdvcmtzLmNvbQoudHctYmxvZy5jb20KfGh0dHBzOi8vdHct
+YmxvZy5jb20KLnR3LW5wby5vcmcKLnR3YWl0dGVyLmNvbQp0d2FwcGVya2VlcGVy
+LmNvbQp8fHR3YXBwZXJrZWVwZXIuY29tCnx8dHdhdWQuaW8KLnR3YXVkLmlvCi50
+d2F2aS5jb20KdHdiYnMub3JnCnx8dHdibG9nZ2VyLmNvbQp0d2VlcG1hZy5jb20K
+LnR3ZWVwbWwub3JnCnx8dHdlZXBtbC5vcmcKLnR3ZWV0YmFja3VwLmNvbQp8fHR3
+ZWV0YmFja3VwLmNvbQp0d2VldGJvYXJkLmNvbQp8fHR3ZWV0Ym9hcmQuY29tCi50
+d2VldGNzLmNvbQp8aHR0cDovL3R3ZWV0Y3MuY29tCnxodHRwOi8vZGVjay5seQoh
+LS0gT3BlcmF0aW9uIGRpc2NvbnRpbnVlZAohLS18fHR3ZWV0ZS5uZXQKIS0tbS50
+d2VldGUubmV0Cnx8dHdlZXRlZHRpbWVzLmNvbQohLS0gT3BlcmF0aW9uIGRpc2Nv
+bnRpbnVlZAohLS10d2VldG1lbWUuY29tCnR3ZWV0cGhvdG8uY29tCnx8dHdlZXRw
+aG90by5jb20KdHdlZXRyZWUuY29tCnx8dHdlZXRyZWUuY29tCi50d2VldHR1bm5l
+bC5jb20KfHx0d2VldHR1bm5lbC5jb20KfHx0d2VldHdhbGx5LmNvbQp0d2VldHlt
+YWlsLmNvbQp8fHR3ZWx2ZS50b2RheQoudHdlZXoubmV0CnxodHRwOi8vdHdlZXou
+bmV0Cnx8dHdmdHAub3JnCnx8dHdncmVhdGRhaWx5LmNvbQp0d2liYXNlLmNvbQou
+dHdpYmJsZS5kZQp8fHR3aWJibGUuZGUKdHdpYmJvbi5jb20KfHx0d2licy5jb20K
+LnR3aWNvdW50cnkub3JnCnxodHRwOi8vdHdpY291bnRyeS5vcmcKdHdpY3N5LmNv
+bQoudHdpZW5kcy5jb20KfGh0dHA6Ly90d2llbmRzLmNvbQoudHdpZmFuLmNvbQp8
+aHR0cDovL3R3aWZhbi5jb20KdHdpZmZvLmNvbQp8fHR3aWZmby5jb20KLnR3aWxp
+Z2h0c2V4LmNvbQp0d2lsb2cub3JnCnR3aW1ib3cuY29tCnR3aXBwbGUuanAKfHx0
+d2lwcGxlLmpwCnx8dHdpcC5tZQp0d2lzaG9ydC5jb20KfHx0d2lzaG9ydC5jb20K
+fHx0d2lzdGVyLm5ldC5jbwp0d2lzdGVybm93LmNvbQp0d2lzdG9yeS5uZXQKfHx0
+d2lnZ2l0Lm9yZwp0d2l0Z29vLmNvbQp0d2l0aXEuY29tCnx8dHdpdGlxLmNvbQou
+dHdpdGxvbmdlci5jb20KfHx0d2l0bG9uZ2VyLmNvbQp8aHR0cDovL3RsLmdkLwp0
+d2l0bWFuaWEuY29tCnR3aXRvYXN0ZXIuY29tCnx8dHdpdG9hc3Rlci5jb20KfHx0
+d2l0b25tc24uY29tCiEtLVNhbWUgSVAKLnR3aXRzdGF0LmNvbQp8fHR3aXRzdGF0
+LmNvbQp8fHR3ZWVwZ3VpZGUuY29tCnxodHRwOi8vdHd0LnRsCnR3aXR0Ym90Lm5l
+dAp8fGFkcy10d2l0dGVyLmNvbQp8fHR3dHRyLmNvbQp8fHR3aXR0ZXI0ai5vcmcK
+LnR3aXR0ZXJjb3VudGVyLmNvbQp8fHR3aXR0ZXJjb3VudGVyLmNvbQp0d2l0dGVy
+ZmVlZC5jb20KLnR3aXR0ZXJnYWRnZXQuY29tCnx8dHdpdHRlcmdhZGdldC5jb20K
+LnR3aXR0ZXJrci5jb20KfHx0d2l0dGVya3IuY29tCnx8dHdpdHRlcm1haWwuY29t
+Cnx8dHdpdHRlcnJpZmljLmNvbQp0d2l0dGVydGltLmVzCnx8dHdpdHRlcnRpbS5l
+cwp0d2l0dGhhdC5jb20KfHx0d2l0dHVyay5jb20KLnR3aXR0dXJseS5jb20KfHx0
+d2l0dHVybHkuY29tCi50d2l0emFwLmNvbQp0d2l5aWEuY29tCi50d3Rrci5jb20K
+fGh0dHA6Ly90d3Rrci5jb20KLnR3bm9ydGgub3JnLnR3Cnx8dHdyZXBvcnRlci5v
+cmcKdHdza3lwZS5jb20KdHd0cmxhbmQuY29tCnR3dXJsLm5sCi50eHh4LmNvbQou
+dHljb29sLmNvbQp8fHR5Y29vbC5jb20KCiEtLXR5cGVwYWQKfHx0eXBlcGFkLmNv
+bQpAQHx8d3d3LnR5cGVwYWQuY29tCkBAfHxzdGF0aWMudHlwZXBhZC5jb20KfHxi
+bG9nLmV4cG9mdXR1cmVzLmNvbQp8fGNvbnRlc3RzLnR3aWxpby5jb20KIS1sYXdw
+cm9mZXNzb3JzLnR5cGVwYWQuY29tL2NoaW5hX2xhd19wcm9mCnx8dHlwb3JhLmlv
+CgohLS0tLS0tLS0tLS0tLS0tLS0tLS1VVS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
+LS0KfHx1ZG9tYWluLmhrCnx8dXBiaXQuY29tCnx8ZGVtby51bmxvY2stbXVzaWMu
+ZGV2Ci51OXVuLmNvbQp8fHU5dW4uY29tCi51YmRkbnMub3JnCnxodHRwOi8vdWJk
+ZG5zLm9yZwp8fHViZXJwcm94eS5uZXQKLnVjLWphcGFuLm9yZwp8fHVjLWphcGFu
+Lm9yZwouc3JjZi51Y2FtLm9yZy9zYWxvbi8KfGh0dHA6Ly9jaGluYS51Y2FuZXdz
+LmNvbS8KfGh0dHA6Ly9odW0qLnVjaGljYWdvLmVkdS9mYWN1bHR5L3l3YW5nL2hp
+c3RvcnkKfHx1ZGVyem8uaXQKLnVkbi5jb20KfHx1ZG4uY29tCnx8dWRuLmNvbS50
+dwp1ZG5ia2suY29tL2Jicwp8fHVmb3JhZGlvLmNvbS50dwp1ZnJlZXZwbi5jb20K
+LnVnby5jb20KIS0tZ2hzCnx8dWhkd2FsbHBhcGVycy5vcmcKfHx1aHJwLm9yZwou
+dWlnaHVyLm5sCnx8dWlnaHVyLm5sCnVpZ2h1cmJpei5uZXQKLnVsaWtlLm5ldAp1
+a2NkcC5jby51awp8fHVsdHJhc3VyZi51cwp8fHVsdHJhdnBuLmNvbQp8fHVsdHJh
+dnBuLmZyCnVsdHJheHMuY29tCnVtaWNoLmVkdS9+ZmFsdW4KfHx1bmJsb2NrLmNu
+LmNvbQoudW5ibG9ja2VyLnl0CnVuYmxvY2stdXMuY29tCnx8dW5ibG9jay11cy5j
+b20KLnVuYmxvY2tkbW0uY29tCnxodHRwOi8vdW5ibG9ja2RtbS5jb20KfHx1bmJs
+b2Nrc2l0LmVzCnVuY3ljbG9tZWRpYS5vcmcKLnVuY3ljbG9wZWRpYS5oay93aWtp
+CnxodHRwOi8vdW5jeWNsb3BlZGlhLmhrCiEtLXVuY3ljbG9wZWRpYS5pbmZvCnxo
+dHRwOi8vdW5jeWNsb3BlZGlhLnR3CnVuZGVyd29vZGFtbW8uY29tCnx8dW5kZXJ3
+b29kYW1tby5jb20KfHx1bmhvbHlrbmlnaHQuY29tCi51bmkuY2MKfHxjbGRyLnVu
+aWNvZGUub3JnCi51bmlmaWNhdGlvbi5uZXQKLnVuaWZpY2F0aW9uLm9yZy50dwp8
+fHVuaXJ1bGUuY2xvdWQKLnVuaXgxMDAuY29tCnx8dW5rbm93bnNwYWNlLm9yZwou
+dW5vZGVkb3MuY29tCnVucG8ub3JnCnx8dW5zdGFibGUuaWN1Cnx8dW53aXJlLmhr
+Cnx8dW9jbi5vcmcKdG9yLnVwZGF0ZXN0YXIuY29tCnx8dXBnaHNiYy5jb20KLnVw
+aG9sZGp1c3RpY2Uub3JnCnVwbG9hZGVkLm5ldC9maWxlCnxodHRwOi8vdXBsb2Fk
+ZWQubmV0L2ZpbGUKfGh0dHA6Ly91cGxvYWRlZC50by9maWxlCi51cGxvYWRzdGF0
+aW9uLmNvbS9maWxlCi51cG1lZGlhLm1nCnx8dXBtZWRpYS5tZwoudXBvcm5pYS5j
+b20KfGh0dHA6Ly91cG9ybmlhLmNvbQp8fHVwcm94eS5vcmcKfHx1cHRvZG93bi5j
+b20KLnVwd2lsbC5vcmcKdXI3cy5jb20KfHx1cmJhbmRpY3Rpb25hcnkuY29tCnx8
+dXJiYW5zdXJ2aXZhbC5jb20KbXlzaGFyZS51cmwuY29tLnR3Lwp8fHVybGJvcmcu
+Y29tCnx8dXJscGFyc2VyLmNvbQp1cy50bwp8fHVzYWNuLmNvbQoudXNhaXAuZXUK
+fHx1c2FpcC5ldQp8fHVzY25wbS5vcmcKfHx1c2NhcmRmb3J1bS5jb20KfHx1c21h
+LmVkdQoudXNvY2N0bi5jb20KfHx1c3RpYmV0Y29tbWl0dGVlLm9yZwoudXN0cmVh
+bS50dgp8fHVzdHJlYW0udHYKdXN1cy5jYwoudXRvcGlhbnBhbC5jb20KfHx1dG9w
+aWFucGFsLmNvbQp8fHV1amlhc3UuY29tCi51dnd4eXoueHl6Cnx8dXZ3eHl6Lnh5
+egoudXdhbnRzLmNvbQp8fHV3YW50cy5jb20KLnV3YW50cy5uZXQKdXlnaHVyLmNv
+LnVrCnx8dXlnaHVyLWoub3JnCnx8dXlnaHVyYWEub3JnCnx8dXlnaHVyYW1lcmlj
+YW4ub3JnCnx8dXlnaHVyYml6Lm9yZwp8fHV5Z2h1cmNvbmdyZXNzLm9yZwp8fHV5
+Z2h1cnBlbi5vcmcKfHx1eWdodXJzdHVkaWVzLm9yZwp8fHV5Z2h1cnRyaWJ1bmFs
+LmNvbQp1eWd1ci5vcmcKfGh0dHA6Ly91eW1hYXJpcC5jb20vCgohLS0tLS0tLS0t
+LS0tLS0tLS0tLS1WVi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHx2aWxhbmV0
+Lm1lCnx8dmV3YXMubmV0Cnx8djIuaGVscAp8fHZvY2Fyb28uY29tCnx8dmVybi5j
+Ywp8fHYyZmx5Lm9yZwoudjJyYXkuY29tCnx8djJyYXkuY29tCnx8djJyYXljbi5j
+b20KfHx2YWxldXJzYWN0dWVsbGVzLmNvbQoudmFuMDAxLmNvbQoudmFuNjk4LmNv
+bQoudmFuZW11LmNuCi52YW5pbGxhLWpwLmNvbQoudmFucGVvcGxlLmNvbQp8fHZh
+bnNreS5jb20KfHx2YXRpY2FubmV3cy52YQp8fHZjZi1vbmxpbmUub3JnCnx8dmNm
+YnVpbGRlci5vcmcKLnZlZ2FzcmVkLmNvbQoudmVsa2FlcG9jaGEuc2sKLnZlbmJi
+cy5jb20KLnZlbmNoaW5hLmNvbQoudmVuZXRpYW5tYWNhby5jb20KfHx2ZW5ldGlh
+bm1hY2FvLmNvbQp2ZW9oLmNvbQp8fHZlcmNlbC5hcHAKbXlzaXRlLnZlcml6b24u
+bmV0CnZlcm1vbnR0aWJldC5vcmcKfHx2ZXJ5YnMuY29tCi52ZnQuY29tLnR3Ci52
+aWJlci5jb20KfHx2aWJlci5jb20KLnZpY2EuaW5mbwoudmljdGltc29mY29tbXVu
+aXNtLm9yZwp8fHZpY3RpbXNvZmNvbW11bmlzbS5vcmcKfHx2aWQubWUKfHx2aWRi
+bGUuY29tCnZpZGVvYmFtLmNvbQp8fHZpZGVvYmFtLmNvbQoudmlkZW9kZXRlY3Rp
+dmUuY29tCi52aWRlb21lZ2EudHYKfHx2aWRlb21lZ2EudHYKLnZpZGVvbW8uY29t
+CnZpZGVvcGVkaWF3b3JsZC5jb20KLnZpZGVvcHJlc3MuY29tCi52aWRpbmZvLm9y
+Zy92aWRlbwp2aWV0ZGFpa3luZ3V5ZW4uY29tCi52aWpheWF0ZW1wbGUub3JnCnx8
+dmlsYXZwbi5jb20KdmltZW8uY29tCnx8dmltZW8uY29tCnx8dmltcGVyYXRvci5v
+cmcKfHx2aW5jbmQuY29tCnx8dmlubmlldi5jb20KfGh0dHA6Ly93d3cubGliLnZp
+cmdpbmlhLmVkdS9hcmVhLXN0dWRpZXMvVGliZXQvdGliZXQuaHRtbAoudmlydHVh
+bHJlYWxwb3JuLmNvbQp8fHZpcnR1YWxyZWFscG9ybi5jb20KdmlzaWJsZXR3ZWV0
+cy5jb20KfHx2aXUuY29tCi52aXZhaGVudGFpNHUubmV0CgohLS1hcGV4IG5vdCBi
+bG9ja2VkLCBhZGRpbmcgdG8gcmVkdWNlIGNvbXBsZXhpdHkKfHx2aXZhbGRpLmNv
+bQoKLnZpdmF0dWJlLmNvbQoudml2dGhvbWFzLmNvbQp8fHZpdnRob21hcy5jb20K
+LnZqYXYuY29tCnx8dmphdi5jb20KLnZqbWVkaWEuY29tLmhrCi52bGxjcy5vcmcK
+fGh0dHA6Ly92bGxjcy5vcmcKfHx2bWl4Y29yZS5jb20KfHx2bmV0LmxpbmsKLnZv
+Y2F0aXYuY29tCnZvY24udHYKfHx2b2N1cy5jYwp8fHZvaWNldHRhbmsub3JnCi52
+b3Qub3JnCnx8dm90Lm9yZwoudm92bzIwMDAuY29tCnxodHRwOi8vdm92bzIwMDAu
+Y29tCi52b3hlci5jb20KfHx2b3hlci5jb20KLnZveS5jb20KfHx2cG4uYWMKfHx2
+cG4ubmV0Ci52cG40YWxsLmNvbQp8fHZwbjRhbGwuY29tCi52cG5hY2NvdW50Lm9y
+Zwp8aHR0cDovL3ZwbmFjY291bnQub3JnCi52cG5hY2NvdW50cy5jb20KfHx2cG5h
+Y2NvdW50cy5jb20KLnZwbmNvbXBhcmlzb24ub3JnCi52cG5jdXAuY29tCnx8dnBu
+Y3VwLmNvbQp2cG5ib29rLmNvbQoudnBuY291cG9ucy5jb20KfGh0dHA6Ly92cG5j
+b3Vwb25zLmNvbQoudnBuZGFkYS5jb20KfHx2cG5kYWRhLmNvbQoudnBuZmFuLmNv
+bQp2cG5maXJlLmNvbQoudnBuZm9yZ2FtZS5uZXQKfHx2cG5mb3JnYW1lLm5ldAp8
+fHZwbmdhdGUuanAKLnZwbmdhdGUubmV0Cnx8dnBuZ2F0ZS5uZXQKLnZwbmdyYXRp
+cy5uZXQKdnBuaHEuY29tCnx8dnBuaHViLmNvbQoudnBubWFzdGVyLmNvbQp8fHZw
+bm1hc3Rlci5jb20KLnZwbm1lbnRvci5jb20KfHx2cG5tZW50b3IuY29tCi52cG5p
+bmphLm5ldAp8fHZwbmluamEubmV0Ci52cG5pbnRvdWNoLmNvbQp2cG5qYWNrLmNv
+bQp8fHZwbmphY2suY29tCi52cG5waWNrLmNvbQp8fHZwbnBpY2suY29tCnx8dnBu
+cG9wLmNvbQp8fHZwbnByb25ldC5jb20KfHx2cG5wcm94eW1hc3Rlci5jb20KLnZw
+bnJlYWN0b3IuY29tCnx8dnBucmVhY3Rvci5jb20KfHx2cG5yZXZpZXd6LmNvbQou
+dnBuc2VjdXJlLm1lCnx8dnBuc2VjdXJlLm1lCi52cG5zaGF6YW0uY29tCnx8dnBu
+c2hhemFtLmNvbQoudnBuc2hpZWxkYXBwLmNvbQp8fHZwbnNoaWVsZGFwcC5jb20K
+LnZwbnNwLmNvbQoudnBudHJhZmZpYy5jb20KLnZwbnR1bm5lbC5jb20KfHx2cG50
+dW5uZWwuY29tCi52cG51ay5pbmZvCnx8dnBudWsuaW5mbwp8fHZwbnVubGltaXRl
+ZGFwcC5jb20KLnZwbnZpcC5jb20KfHx2cG52aXAuY29tCi52cG53b3JsZHdpZGUu
+Y29tCi52cG9ybi5jb20KfHx2cG9ybi5jb20KLnZwc2VyLm5ldApAQHx8dnBzZXIu
+bmV0CnZyYWllc2FnZXNzZS5uZXQKfHx2cmNoYXQuY29tCi52cm10ci5jb20KfHx2
+cnBvcm4uY29tCnx8dnR1bm5lbC5jb20KfHx2dWt1LmNjCgohLS0tLS0tLS0tLS0t
+LS0tLS0tLS1XVy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHx3eHcubW9lCnx8
+d3h3LmNhdAp8fHdhbGxldGNvbm5lY3QuY29tCnxodHRwczovL3czcy5saW5rL2lw
+ZnMKfHx3b3JrMmljdS5vcmcKfHx3aWtpbGVzcy5mdW5hbWkudGVjaApsaXN0cy53
+My5vcmcvYXJjaGl2ZXMvcHVibGljCnx8d2FmZmxlMTk5OS5jb20KLndhaGFzLmNv
+bQp3YWlrZXVuZy5vcmcvcGhwX3dpbmQKfHx3YWluYW8ubWUKfHx3YWxsbWFtYS5j
+b20KfHx3YWxscGFwZXJjYXNhLmNvbQoud2FsbHByb3h5LmNvbQpAQHx8d2FsbHBy
+b3h5LmNvbS5jbgp8fHdhbGxzdHR2LmNvbQp8fHdhbHRlcm1hcnRpbi5jb20KfHx3
+YWx0ZXJtYXJ0aW4ub3JnCnx8d3d3Lndhbi1wcmVzcy5vcmcKfHx3YW5kZXJpbmdo
+b3JzZS5uZXQKfHx3YW5nYWZ1Lm5ldAp8fHdhbmdqaW5iby5vcmcKLndhbmdqaW5i
+by5vcmcKd2FuZ2xpeGlvbmcuY29tCi53YW5nby5vcmcKfHx3YW5nby5vcmcKd2Fu
+Z3J1b3NodWkubmV0Cnx8d2FudC1kYWlseS5jb20Kd2FwZWRpYS5tb2JpL3poc2lt
+cAp8fHdhcnJvb20ub3JnCnx8d2FzZWxwcm8uY29tCnx8d2F0Y2hpbmVzZS5jb20K
+fHx3YXRjaG91dC50dwoud2F0dHBhZC5jb20KfHx3YXR0cGFkLmNvbQoud2F0Y2g4
+eC5jb20KfHx3YXRjaG15Z2YubmV0Cnx8d2F2LnR2Cnx8d2F5YmlnLmNvbQp8fHdk
+LmJpYmxlCi53ZGY1LmNvbQp8fHdlYWx0aC5jb20udHcKLndlYXJlaGFpcnkuY29t
+Ci53ZWFybi5jb20KfHx3ZWFybi5jb20KfGh0dHA6Ly9oa2NvYy53ZWF0aGVyLmNv
+bS5oawp8fGh1ZGF0b3JpcS53ZWIuaWQKfHx3ZWIycHJvamVjdC5uZXQKd2ViYmFu
+Zy5uZXQKLndlYmV2YWRlci5vcmcKLndlYmZyZWVyLmNvbQp3ZWJsYWd1LmNvbQou
+d2ViamIub3JnCi53ZWJydXNoLm5ldAp3ZWJzLXR2Lm5ldAoud2Vic2l0ZXB1bHNl
+LmNvbS9oZWxwL3Rlc3R0b29scy5jaGluYS10ZXN0CnxodHRwOi8vd3d3LndlYnNu
+YXByLmNvbQoud2Vid2FycGVyLm5ldAp8aHR0cDovL3dlYndhcnBlci5uZXQKd2Vi
+d29ya2VyZGFpbHkuY29tCnx8d2VjaGF0bGF3c3VpdC5jb20KfHx3ZWZpZ2h0Y2Vu
+c29yc2hpcC5vcmcKLndlZm9uZy5jb20Kd2VpYm9sZWFrLmNvbQoud2VpaHVvLm9y
+Zwp8fHdlaWppbmdzaGVuZy5vcmcKLndlaW1pbmcuaW5mbwp8fHdlaW1pbmcuaW5m
+bwp3ZWlxdWFud2FuZy5vcmcKfGh0dHA6Ly93ZWlzdW8ud3MKLndlbG92ZWNvY2su
+Y29tCnx8d2VsdC5kZQoud2VtaWdyYXRlLm9yZwp8aHR0cDovL3dlbWlncmF0ZS5v
+cmcKd2VuZ2V3YW5nLmNvbQp8fHdlbmdld2FuZy5vcmcKLndlbnh1ZWNpdHkuY29t
+Cnx8d2VueHVlY2l0eS5jb20KLndlbnl1bmNoYW8uY29tCnx8d2VueXVuY2hhby5j
+b20KLndlc3RjYS5jb20KfHx3ZXN0Y2EuY29tCnx8d2VzdGVybndvbHZlcy5jb20K
+Lndlc3RraXQubmV0Cnx8d2VzdHBvaW50LmVkdQoud2VzdGVybnNodWdkZW5zb2Np
+ZXR5Lm9yZwp3ZXRwdXNzeWdhbWVzLmNvbQoud2V0cGxhY2UuY29tCnx8d2V6b25l
+Lm5ldAoud2ZvcnVtLmNvbQp8fHdmb3J1bS5jb20vCi53aGF0YmxvY2tlZC5jb20K
+fHx3aGF0YmxvY2tlZC5jb20KfHx3aGVlbG9ja3NsYXRpbi5jb20KLndoaXBwZWRh
+c3MuY29tCiEtLXxodHRwOi8vd2hvLmlzLwoud2hvZXIubmV0Cnx8d2hvZXIubmV0
+Cndob3RhbGtpbmcuY29tCndoeWxvdmVyLmNvbQp8fHdoeXgub3JnCnx8d2lraWxl
+YWtzLmNoCnx8d2lraWxlYWtzLmNvbQp8fHdpa2lsZWFrcy5kZQp8fHdpa2lsZWFr
+cy5ldQp8fHdpa2lsZWFrcy5sdQoud2lraWxlYWtzLm9yZwp8fHdpa2lsZWFrcy5v
+cmcKfHx3aWtpbGVha3MucGwKLndpa2lsZWFrcy1mb3J1bS5jb20KfHx3aWxzb25j
+ZW50ZXIub3JnCi53aWxsaWFtaGlsbC5jb20KfHxjb2xsYXRlcmFsbXVyZGVyLmNv
+bQp8fGNvbGxhdGVyYWxtdXJkZXIub3JnCndpa2lsaXZyZXMuaW5mby93aWtpLyVF
+OSU5QiVCNiVFNSU4NSVBQiVFNSVBRSVBQSVFNyVBQiVBMAp8fHdpa2ltYXBpYS5v
+cmcKLndpa2l3YW5kLmNvbQp8fHdpa2l3YW5kLmNvbQp8fGNhc2luby53aWxsaWFt
+aGlsbC5jb20KfHxzcG9ydHMud2lsbGlhbWhpbGwuY29tCnx8dmVnYXMud2lsbGlh
+bWhpbGwuY29tCnx8d2lsbHcubmV0Ci53aW5kc2NyaWJlLmNvbQp8fHdpbmRzY3Jp
+YmUuY29tCnx8d2luZ3kuc2l0ZQoud2lubmluZzExLmNvbQp8fHdpb25ld3MuY29t
+Cnx8d2lyZWRieXRlcy5jb20KfHx3aXJlZHBlbi5jb20KfHx3aXJlZ3VhcmQuY29t
+CiEtLXx8d2lyZXNoYXJrLm9yZwoud2lzZG9tcHVicy5vcmcKLndpc2V2aWQuY29t
+Cnx8d2lzZXZpZC5jb20KfHx3aGlzcGVyc3lzdGVtcy5vcmcKLndpdG5lc3NsZWV0
+ZWFjaGluZy5jb20KfHx3aXRvcGlhLm5ldAoud2piay5vcmcKfHx3amJrLm9yZwp8
+fHdtZmxhYnMub3JnCnx8d24uY29tCnx8d25hY2cuY29tCnx8d25hY2cub3JnCnx8
+d28udGMKfHx3b2VzZXIuY29tCnx8d29rYXIub3JnCnx8d29sZmF4LmNvbQp8fHdv
+bWJvLmFpCnx8d29vbHlzcy5jb20KfHx3b29waWUuanAKfHx3b29waWUudHYKfHx3
+b3JrYXRydW5hLmNvbQp8fHdvcmtlcmVtcG93ZXJtZW50Lm9yZwoud29ybGRjYXQu
+b3JnCndvcmxkam91cm5hbC5jb20KLndvcmxkdnBuLm5ldAp8fHdvcmxkdnBuLm5l
+dAoKfHx2aWRlb3ByZXNzLmNvbQoud29yZHByZXNzLmNvbQp8aHR0cDovLyoud29y
+ZHByZXNzLmNvbQp8fGNoZW5zaGFuMjAwNDIwMDUud29yZHByZXNzLmNvbQp8fGNo
+aW5hdmlldy53b3JkcHJlc3MuY29tCnx8Y25iYm5ld3Mud29yZHByZXNzLmNvbQp8
+fGZyZWVkb21pbmZvbmV0d2ViLndvcmRwcmVzcy5jb20KfHxoa2E4OTY0LndvcmRw
+cmVzcy5jb20KfHxoa2FuZXdzLndvcmRwcmVzcy5jb20KfHxocXNibmV0LndvcmRw
+cmVzcy5jb20KfHxocXNib25saW5lLndvcmRwcmVzcy5jb20KfHxpbnZlc3RpZ2F0
+aW5nLndvcmRwcmVzcy5jb20KfHxqb2JuZXdlcmEud29yZHByZXNzLmNvbQp8fG1h
+dHRoZXdkZ3JlZW4ud29yZHByZXNzLmNvbQp8fG1pbmdodWl5dy53b3JkcHJlc3Mu
+Y29tCnx8d28zdHR0LndvcmRwcmVzcy5jb20KfHxzdWppYXR1bi53b3JkcHJlc3Mu
+Y29tCnx8eGlqaWUud29yZHByZXNzLmNvbQp8fGlmcmVlY2hpbmEud29yZHByZXNz
+LmNvbQp8fHdwLmNvbQoKIS18fHdvcm1zY3VscHRvci5jb20KLndvdy5jb20KfHx3
+b3dwb3JuLmNvbQp8fHdvd2dpcmxzLmNvbQoud293cmsuY29tCi53b3lhb2xpYW4u
+b3JnCnxodHRwOi8vd295YW9saWFuLm9yZwoud3BvZm9ydW0uY29tCnx8d3BvZm9y
+dW0uY29tCndyY2hpbmEub3JnCndyZXRjaC5jYwp8fHdyaXRlc29uaWMuY29tCi53
+c2ouY29tCnx8d3NqLmNvbQoud3NqLm5ldAp8fHdzai5uZXQKLnd0Ym4ub3JnCi53
+dGZwZW9wbGUuY29tCnd1ZXJrYWl4aS5jb20KfHx3dWZhZmFuZ3dlbi5jb20KfHx3
+dWZpLm9yZy50dwp3dWppZS5uZXQKd3VqaWVsaXVsYW4uY29tCnx8d3VqaWVsaXVs
+YW4uY29tCnx8d3V3LnJlZAoud3dpdHYuY29tCnx8d3dpdHYuY29tCnd6eWJveS5p
+bS9wb3N0LzE2MAoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tWFgtLS0tLS0tLS0tLS0t
+LS0tLS0tLS0tLS0tCnx8d3d3LnhpY29ucy5vcmcKfHx4LmFpCnx8eHQuY29tCnx8
+eHQucHViCnx8eC5jbwoueC1iZXJyeS5jb20KfHx4LWJlcnJ5LmNvbQp8fHgtYXJ0
+LmNvbQp8fHgtd2FsbC5vcmcKfHx4M2d1aWRlLmNvbQp4YW5nYS5jb20KfHx4YmFi
+ZS5jb20KLnhib29rY24uY29tCnx8eGJvb2tjbi5jb20KfHx4Y2FmZS5pbgp8fHhj
+aXR5LmpwCi54Y3JpdGljLmNvbQp8fHhlcm90aWNhLmNvbQpkZXN0aW55LnhmaWxl
+cy50by91YmJ0aHJlYWRzCnx8eGZ4c3NyLm1lCi54Z215ZC5jb20KfHx4Z215ZC5j
+b20KeGhhbXN0ZXIuY29tCnx8eGhhbXN0ZXIuY29tCi54aWFuYmEubmV0Ci54aWFu
+amlhbi50dwp8aHR0cDovL3hpYW5qaWFuLnR3Ci54aWFvYmFpd3UuY29tCi54aWFv
+Y2h1bmNuanAuY29tCi54aWFvaGV4aWUuY29tCnx8eGlhb2xhbi5tZQp8fHhpYW9t
+YS5vcmcKfHx4aWFvaGV4aWUuY29tCnx8eGlheGlhb3FpYW5nLm5ldAp4aWV6aHVh
+LmNvbQoueGlodWEuZXMKZm9ydW0ueGluYmFvLmRlL2ZvcnVtCi54aW5nLmNvbQp8
+aHR0cDovL3hpbmcuY29tCnx8eGluamlhbmdwb2xpY2VmaWxlcy5vcmcKLnhpbm1p
+YW8uY29tLmhrCnx8eGlubWlhby5jb20uaGsKeGluc2hlbmcubmV0CnhpbnNoaWp1
+ZS5jb20KLnhpb25ncGlhbi5jb20KLnhpdXJlbi5vcmcKeGl6YW5nLXpoaXllLm9y
+Zwp4anAuY2MKfHx4anAuY2MKfHx4anRyYXZlbGd1aWRlLmNvbQp8fHhtbC10cmFp
+bmluZy1ndWlkZS5jb20KeG1vdmllcy5jb20KfHx4bnh4LmNvbQohLS18fHhueHgt
+Y2RuLmNvbQp4cGRvLm5ldAp8fHhwdWQub3JnCi54cmVudGR2ZC5jb20KfHx4dHVi
+ZS5jb20KfHx4dWNoYW8ub3JnCnh1Y2hhby5uZXQKfHx4dWNoYW8ubmV0Cnh2aWRl
+by5jYwoueHZpZGVvcy5jb20KfHx4dmlkZW9zLmNvbQp8fHh2aWRlb3MtY2RuLmNv
+bQp8fHh2aWRlb3MuZXMKfHx4dmJlbGluay5jb20KfHx4dmlubGluay5jb20KfHx4
+c2Rlbi5pbmZvCi54eGJieC5jb20KLnh4bG1vdmllcy5jb20KfHx4eHguY29tCi54
+eHgueHh4CnxodHRwOi8veHh4Lnh4eAoueHh4ZnVja21vbS5jb20KfHx4eHh4LmNv
+bS5hdQoueHh4eW1vdmllcy5jb20KfGh0dHA6Ly94eHh5bW92aWVzLmNvbQp4eXMu
+b3JnCnh5c2Jsb2dzLm9yZwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tWVktLS0tLS0t
+LS0tLS0tLS0tLS0tLS0tLS0tCnx8eWFuZ3poaS5vcmcKfHxzdG9yYWdlLnlhbmRl
+eC5uZXQKfHx5Mm1hdGUuY29tCnx8eWFkaS5zawp8fHlha2J1dHRlcmJsdWVzLmNv
+bQp8fHlhbS5jb20KfHx5YW0ub3JnLnR3Cnx8eWFuZGUucmUKfHxkaXNrLnlhbmRl
+eC5jb20KfHxkaXNrLnlhbmRleC5ydQoueWFuZ2hlbmdqdW4uY29tCi55YXNuaS5j
+by51awp8fHlhc25pLmNvLnVrCnx8eWFzdWt1bmkub3IuanAKLnlheWFiYXkuY29t
+L2ZvcnVtCnx8bmV3cy55Y29tYmluYXRvci5jb20KLnlkeS5jb20KLnllYWh0ZWVu
+dHViZS5jb20KfHx5ZWFodGVlbnR1YmUuY29tCnx8eWVjbC5uZXQKfHx5ZWVsb3Uu
+Y29tCnx8eWVleWkuY29tCnllZ2xlLm5ldAp8fHllZ2xlLm5ldAoueWVzLnh4eAp8
+fHllczEyMy5jb20udHcKfHx5ZXNhc2lhLmNvbQp8fHllc2FzaWEuY29tLmhrCi55
+ZXMtbmV3cy5jb20KfGh0dHA6Ly95ZXMtbmV3cy5jb20KLnllc3Bvcm5wbGVhc2Uu
+Y29tCnx8eWVzcG9ybnBsZWFzZS5jb20KfGh0dHA6Ly95ZXllY2x1Yi5jb20KIS0t
+eWZyb2cuY29tCnx8eWhjdy5uZXQKLnlpYmFkYS5jb20KfHx5aWJhb2NoaW5hLmNv
+bQoueWlkaW8uY29tCnx8eWlkaW8uY29tCnx8eWlnZW5pLmNvbQp5aWx1YmJzLmNv
+bQp8fHMueWltZy5jb20KLnlpcHViLmNvbQp8fHlpcHViLmNvbQp5aW5sZWkub3Jn
+L210Ci55aXpoaWhvbmd4aW5nLmNvbQp8fHlpemhpaG9uZ3hpbmcuY29tCi55b2J0
+LmNvbQoueW9idC50dgp8fHlvYnQudHYKLnlvZ2ljaGVuLm9yZwp8fHlvZ2ljaGVu
+Lm9yZwoueW9sYXNpdGUuY29tCi55b21pdXJpLmNvLmpwCnlvbmcuaHUKLnlvcmti
+YnMuY2EKfHx5b3UuY29tCnx8eW91eHUuaW5mbwoueW91aml6ei5jb20KfHx5b3Vq
+aXp6LmNvbQoueW91bWFrZXIuY29tCnx8eW91bWFrZXIuY29tCi55b3VuZ3Bvcm52
+aWRlb3MuY29tCnlvdW5nc3BpcmF0aW9uLmhrCi55b3VwYWkub3JnCnx8eW91cGFp
+Lm9yZwoueW91ci1mcmVlZG9tLm5ldAp8fHlvdXJlcGVhdC5jb20KLnlvdXNlbmRp
+dC5jb20KfHx5b3VzZW5kaXQuY29tCi55b3V0aG5ldHJhZGlvLm9yZy90bWl0L2Zv
+cnVtCmJsb2cueW91dGh3YW50LmNvbS50dwptZS55b3V0aHdhbnQuY29tLnR3CnNo
+YXJlLnlvdXRod2FudC5jb20udHcKdG9waWMueW91dGh3YW50LmNvbS50dwoueW91
+cG9ybi5jb20KfHx5b3Vwb3JuLmNvbQoueW91cG9ybmdheS5jb20KfHx5b3Vwb3Ju
+Z2F5LmNvbQoueW91cmxpc3Rlbi5jb20KfHx5b3VybGlzdGVuLmNvbQoueW91cmx1
+c3QuY29tCnx8eW91cmx1c3QuY29tCnlvdXZlcnNpb24uY29tCnx8eW91dmVyc2lv
+bi5jb20KeXRodC5uZXQKeXVhbm1pbmcubmV0Ci55dWFuemhlbmd0YW5nLm9yZwou
+eXVsZ2h1bi5jb20KfHx5dWxnaHVuLmNvbQp8fHl1bmNoYW8ubmV0Cnx8eXVub21p
+LnRva3lvCi55dXZ1dHUuY29tCnx8eXZlc2dlbGV5bi5jb20KLnl3cHcuY29tL2Zv
+cnVtcy9oaXN0b3J5L3Bvc3QvQTAvcDAvaHRtbC8yMjcKeXg1MS5uZXQKLnl5aWku
+b3JnCnx8eXlpaS5vcmcKfHx5eWpseW1iLnh5egp8fHl5c3ViLm5ldAoueXp6ay5j
+b20KfHx5enprLmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tWlotLS0tLS0tLS0t
+LS0tLS0tLS0tLS0tLS0tCnx8ei1saWJyYXJ5LnNrCnx8ei1saWIuZm0KfHx6LWxp
+Yi5nZAp8fHotbGliLmdsCnx8ei1saWIuZm8KfHx6b2RnYW1lLnh5egp8fHpob25n
+emlkaS5jb20KfHx6b29xbGUuY29tCnx8ei1saWIuaW8KfHx6LWxpYi5vcmcKemFj
+ZWJvb2suY29tCi56YWxtb3MuY29tCnx8emFsbW9zLmNvbQp8fHphb2Jhby5jb20u
+c2cKfHx6ZG5ldC5jb20udHcKLnplbGxvLmNvbQp8fHplbGxvLmNvbQouemVuZ2pp
+bnlhbi5vcmcKLnplbm1hdGUuY29tCnx8emVubWF0ZS5jb20KfHx6ZW5tYXRlLmNv
+bS5ydQp8fHplcm9oZWRnZS5jb20KfHx6ZXJvbmV0LmlvCiEtLXd3dy56ZnJlZXQu
+Y29tL3Bvc3QvdXNlanVtcC1icm93bnMuaHRtbAouemZyZWV0LmNvbQouemhhbmdi
+b2xpLm5ldAp8fHpoYW5ndGlhbmxpYW5nLmNvbQp8fHpoYW5sdmUub3JnCnpoZW5n
+aHVpLm9yZwouemhlbmdqaWFuLm9yZwp8fHpoZW5namlhbi5vcmcKemhlbmd3dW5l
+dC5vcmcKfGh0dHA6Ly96aGVueGlhbmcuYml6Cnpob25nZ3VvLmNhCnxodHRwOi8v
+emhvbmdndW9yZW5xdWFuLm9yZwp6aG9uZ2d1b3Rlc2UubmV0Cnx8emhvbmdndW90
+ZXNlLm5ldAouemhvdXNodWd1YW5nLmNvbQouemh1YW54aW5nLmNuCnx8emh1YXRp
+ZWJhLmNvbQp6aHVpY2hhZ3Vvamkub3JnCnx8emh1aWNoYWd1b2ppLm9yZwp8fHpp
+Lm1lZGlhCnxodHRwOi8vYm9vay56aTUubWUKLnppZGR1LmNvbS9kb3dubG9hZAp8
+fHppbGxpb25rLmNvbQouemluaW8uY29tCnx8emluaW8uY29tCi56aXBvcm4uY29t
+Ci56aXBweXNoYXJlLmNvbQpyZWFsZm9ydW0uemtpei5jb20KIS0tfHx6bGliLm5l
+dAp8fHptZWRpYS5jb20udHcKfHx6bXcuY24KLnpvZGdhbWUudXMKem9tb2JvLm5l
+dAouem9uYWV1cm9wYS5jb20KfHx6b25hZXVyb3BhLmNvbQp8fHpvbmdoZXhpbndl
+bi5jb20KfHx6b29ndnBuLmNvbQp8fHpvb3Rvb2wuY29tCi56b296bGUubmV0Cnx8
+em9waGFyLm5ldAp3cml0ZXIuem9oby5jb20KfHx6b3Jyb3Zwbi5jb20KfHx6cG4u
+aW0KfHx6c3BlZWRlci5tZQouenNyaGFvLmNvbQouenVvLmxhCnx8enVvLmxhCnx8
+enVvYmlhby5tZQouenVvbGEuY29tCnx8enVvbGEuY29tCnx8enZlcmVmZi5jb20K
+fHx6eXhlbC5jb20KLnp6Y2FydG9vbi5jb20KISMjIyMjIyMjIyMjIyMjR2VuZXJh
+bCBMaXN0IEVuZCMjIyMjIyMjIyMjIyMjIyMjCgohIyMjIyMjIyMjIyNTdXBwbGVt
+ZW50YWwgTGlzdCBTdGFydCMjIyMjIyMjIyMjIyMKISMjIyMjIyMjIyMjIyNTdXBw
+bGVtZW50YWwgTGlzdCBFbmQjIyMjIyMjIyMjIyMjCgohIyMjIyMjIyMjIyMjIyMj
+I1doaXRlbGlzdCBTdGFydCMjIyMjIyMjIyMjIyMjIyMKQEB8fHd3dy5ldHRvZGF5
+Lm5ldAoKQEB8fGFsaXl1bi5jb20KQEB8fGJhaWR1LmNvbQpAQHx8Y2hpbmFzby5j
+b20KQEB8fGNoaW5hei5jb20KQEB8aHR0cDovL25yY2guY3VsdHVyZS50dy8KQEB8
+fGkucGtpLmdvb2cKIS0tLVNvbWUgYXJlIHBvd2VyZWQgYnkgR3VYaWFuZyAoQkdQ
+KSwgcGxlYXNlIGNvbW1lbnQgb2ZmIGlmCiEtLS15b3UgZW5jb3VudGVyIGNvbm5l
+Y3Rpdml0eSBpc3N1ZXMuCkBAfHxhZHNlcnZpY2UuZ29vZ2xlLmNvbQohLS1JU1Ag
+Y2FjaGUgd29ya3Mgc29tZXRpbWVzLCB2ZXJpZmllZCBhdCBkcnBlbmcgKyBnZWh1
+YS4KQEB8fGRsLmdvb2dsZS5jb20KIS0tQEB8fGtoLmdvb2dsZS5jb20KIS0tQEB8
+fGtobS5nb29nbGUuY29tCiEtLUBAfHxraG0wLmdvb2dsZS5jb20KIS0tQEB8fGto
+bTEuZ29vZ2xlLmNvbQohLS1AQHx8a2htMi5nb29nbGUuY29tCiEtLUBAfHxraG0z
+Lmdvb2dsZS5jb20KIS0tQEB8fGtobWRiLmdvb2dsZS5jb20KQEB8fHRvb2xzLmdv
+b2dsZS5jb20KQEB8fGNsaWVudHNlcnZpY2VzLmdvb2dsZWFwaXMuY29tCkBAfHxm
+b250cy5nb29nbGVhcGlzLmNvbQohLS1AQHx8a2htLmdvb2dsZWFwaXMuY29tCiEt
+LUBAfHxraG0wLmdvb2dsZWFwaXMuY29tCiEtLUBAfHxraG0xLmdvb2dsZWFwaXMu
+Y29tCiEtLUBAfHxraG0yLmdvb2dsZWFwaXMuY29tCiEtLUBAfHxraG0zLmdvb2ds
+ZWFwaXMuY29tCiEtLUBAfHxraG1kYi5nb29nbGVhcGlzLmNvbQpAQHx8dXBkYXRl
+Lmdvb2dsZWFwaXMuY29tCkBAfHxzYWZlYnJvd3NpbmcuZ29vZ2xlYXBpcy5jb20K
+QEB8fGNvbm5lY3Rpdml0eWNoZWNrLmdzdGF0aWMuY29tCkBAfHxjc2kuZ3N0YXRp
+Yy5jb20KQEB8fGZvbnRzLmdzdGF0aWMuY29tCkBAfHxzc2wuZ3N0YXRpYy5jb20K
+QEB8fGhhb3NvdS5jb20KQEB8fGlwLmNuCkBAfHxqaWtlLmNvbQpAQHx8dHJhbnNs
+YXRlLmdvb2dsZS5jbgpAQHxodHRwOi8vd3d3Lmdvb2dsZS5jbi9tYXBzCkBAfHxo
+dHRwMi5nb2xhbmcub3JnCkBAfHxnb3YuY24KQEB8fG9jc3AucGtpLmdvb2cKQEB8
+fHFxLmNvbQpAQHx8c2luYS5jbgpAQHx8c2luYS5jb20uY24KQEB8fHNvZ291LmNv
+bQpAQHx8c28uY29tCkBAfHxzb3NvLmNvbQpAQHx8dWx1YWkuY29tLmNuCkBAfHx3
+ZWliby5jb20KQEB8fHlhaG9vLmNuCkBAfHx5b3VkYW8uY29tCkBAfHx6aG9uZ3Nv
+dS5jb20KQEB8aHR0cDovL2ltZS5iYWlkdS5qcAohIyMjIyMjIyMjIyMjIyMjI1do
+aXRlbGlzdCBFbmQjIyMjIyMjIyMjIyMjIyMjIyMKIS0tLS0tLS0tLS0tLS0tLS0t
+LS0tLUVPRi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
diff --git a/data/gfwlist.txt b/data/gfwlist.txt
new file mode 100644
index 0000000..0023aa8
--- /dev/null
+++ b/data/gfwlist.txt
@@ -0,0 +1,7552 @@
+[AutoProxy 0.2.9]
+! Checksum: AX5stTgpvx842DA6LdtKAw
+! Expires: 6h
+! Title: GFWList4LL
+! GFWList with EVERYTHING included
+! Last Modified: Sat, 13 Sep 2025 04:13:45 +0000
+!
+! HomePage: https://github.com/gfwlist/gfwlist
+! License: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
+!
+! GFWList is unlikely to fully comprise the real
+! rules being deployed inside GFW system. We try
+! our best to keep the list up to date. Please
+! contact us regarding URL submission / removal,
+! or suggestion / enhancement at issue tracker:
+! https://github.com/gfwlist/gfwlist/issues/.
+
+!---------403/451/503/520 & URL Redirects---------
+||blogjav.net
+||zoominfo.com
+||ptwxz.com
+||miuipolska.pl
+||piaotia.com
+||wunderground.com
+||500px.com
+||500px.org
+!--ehentai
+|http://85.17.73.31/
+!--||adorama.com
+||afreecatv.com
+||agnesb.fr
+||airitilibrary.com
+||abematv.akamaized.net
+||linear-abematv.akamaized.net
+||vod-abematv.akamaized.net
+||akiba-web.com
+||altrec.com
+||amazonvideo.com
+||angela-merkel.de
+||angola.org
+||anthropic.com
+||apartmentratings.com
+||apartments.com
+||arena.taipei
+||assets.bwbx.io
+||assimp.org
+||athenaeizou.com
+||bankmobilevibe.com
+||banorte.com
+||beeg.com
+||global.bing.com
+||booktopia.com.au
+||boysmaster.com
+||bynet.co.il
+||byrut.org
+||carfax.com
+.casinobellini.com
+||casinobellini.com
+||centauro.com.br
+||chobit.cc
+||ciciai.com
+||cici.com
+||claude.ai
+||clearsurance.com
+||cnbeta.com.tw
+||counter.social
+||costco.com
+||coze.com
+||crossfire.co.kr
+||crunchyroll.com
+||d2pass.com
+||darpa.mil
+||dawangidc.com
+||deezer.com
+||desipro.de
+||discord.com
+||discord.gg
+||discordapp.com
+||discordapp.net
+||dish.com
+|http://img.dlsite.jp/
+||dm530.net
+||dmhy.org
+||dmm.co.jp
+|http://www.dmm.com/netgame
+||dnvod.tv
+||dubox.com
+||dvdpac.com
+||eesti.ee
+||esurance.com
+.expekt.com
+||expekt.com
+.extmatrix.com
+||extmatrix.com
+||fakku.net
+||fastpic.ru
+||filesor.com
+||financetwitter.com
+||flipboard.com
+||flitto.com
+||fnac.be
+||fnac.com
+||funkyimg.com
+||fxnetworks.com
+||g-area.org
+||gettyimages.*
+@@||gettyimages.com
+@@||gettyimages.cn
+||getuploader.com
+||ghidra-sre.org
+!--|https://github.com/programthink/zhao
+!--|https://raw.githubusercontent.com/programthink/zhao
+||glass8.eu
+||glype.com
+||go141.com
+||hautelook.com
+||hautelookcdn.com
+||wego.here.com
+||grok.com
+||hmoegirl.com
+||hmvdigital.ca
+||hmvdigital.com
+||homedepot.com
+||hoovers.com
+||hulu.com
+||huluim.com
+|http://secure.hustler.com
+|http://hustlercash.com
+|http://www.hustlercash.com
+||hybrid-analysis.com
+||cdn*.i-scmp.com
+||ilbe.com
+||ilovelongtoes.com
+|http://imgmega.com/*.gif.html
+|http://imgmega.com/*.jpg.html
+|http://imgmega.com/*.jpeg.html
+|http://imgmega.com/*.png.html
+||imlive.co
+||javhub.net
+||javhuge.com
+.javlibrary.com
+||javlibrary.com
+||jcpenney.com
+||jims.net
+||tv.jtbc.joins.com
+||jukujo-club.com
+||juliepost.com
+||kawaiikawaii.jp
+||kendatire.com
+||khatrimaza.org
+||kkbox.com
+||leisurepro.com
+||lifemiles.com
+||lih.kg
+||longtoes.com
+||lovetvshow.com
+||lpsg.com
+||lrfz.com
+|http://www.m-sport.co.uk
+||macgamestore.com
+||madonna-av.com
+||mandiant.com
+||mangafox.com
+||mangafox.me
+||manta.com
+||matome-plus.com
+||matome-plus.net
+||mattwilcox.net
+||metarthunter.com
+||mfxmedia.com
+||miraheze.org
+||mojim.com
+||kb.monitorware.com
+||monster.com
+||moodyz.com
+||moonbingo.com
+||mos.ru
+||addons.mozilla.org/*-*/firefox/addon/ublock-origin/*
+||addons.mozilla.org/firefox/downloads/file/*/ublock_origin-*.xpi
+||msha.gov
+||www.msn.com
+||muzu.tv
+||mvg.jp
+.mybet.com
+||mybet.com
+||mypikpak.com
+||nationwide.com
+|http://www.nbc.com/live
+||neo-miracle.com
+||netflix.com
+||netflix.net
+||nflximg.com
+||nflximg.net
+||nflxext.com
+||nflxso.net
+||nflxvideo.net
+||nic.gov
+|http://mo.nightlife141.com
+||purpose.nike.com
+||noxinfluencer.com
+@@||cn.noxinfluencer.com
+||nordstrom.com
+||nordstromimage.com
+||nordstromrack.com
+||nottinghampost.com
+||npsboost.com
+||ntdtv.cz
+||nusatrip.com
+||nuuvem.com
+||bbs.nyinfor.com
+||olehdtv.com
+||omni7.jp
+||onapp.com
+!--We are confused as well
+||ontrac.com
+@@|http://blog.ontrac.com
+||openai.com
+||pandora.com
+.pandora.tv
+||parkansky.com
+||phmsociety.org
+|http://*.pimg.tw/
+||podcast.co
+||popai.pro
+||primevideo.com
+||proyectoclubes.com
+||pure18.com
+||pytorch.org
+||qq.co.za
+||r18.com
+|http://radiko.jp
+||ramcity.com.au
+||rateyourmusic.com
+||rd.com
+|https://riseup.net
+||sadistic-v.com
+||isc.sans.edu
+|http://cdn*.search.xxx/
+||shiksha.com
+||slacker.com
+||sm-miracle.com
+||soylentnews.org
+||spotify.com
+||spreadshirt.es
+||springboardplatform.com
+||sprite.org
+@@|http://store.sprite.org
+||superpages.com
+||swagbucks.com
+||switch1.jp
+||tapanwap.com
+||gsp.target.com
+||login.target.com
+!--@@||intl.target.com
+||rcam.target.com
+||technews.tw
+||terabox.com
+||thinkgeek.com
+||thebodyshop-usa.com
+||tma.co.jp
+||tracfone.com
+||tryheart.jp
+||turntable.fm
+||twerkingbutt.com
+||ulop.net
+||uukanshu.com
+||vegasred.com
+||vevo.com
+||vip-enterprise.com
+|http://viu.tv/ch/
+|http://viu.tv/encore/
+||vmpsoft.com
+||wanz-factory.com
+||ssl.webpack.de
+||weebly.com
+||wheretowatch.com
+||wingamestore.com
+||wizcrafts.net
+||wowhead.com
+||vod.wwe.com
+||xfinity.com
+||xiaomi.eu
+||youwin.com
+||ytn.co.kr
+||zamimg.com
+||zattoo.com
+||zim.vn
+||zozotown.com
+
+!##############General List Start###############
+!-------------------Coin Pool-------------------
+||c3pool.com
+||unmineable.com
+||666pool.cn
+||antpool.com
+||crazypool.org
+||cruxpool.com
+||miningpoolhub.com
+||huobipool.com
+||poolbinance.com
+||hiveon.net
+||sparkpool.com
+||flypool.org
+||nanopool.org
+||xnpool.com
+||beepool.com
+||zhizhu.top
+||spiderpool.com
+||uupool.cn
+||flexpool.io
+||beepool.org
+||dpool.top
+||okpool.me
+||binancezh.cc
+||btc.com
+||r-pool.net
+||w-pool.com
+
+!-------------------Pure IP---------------------
+14.102.250.18
+14.102.250.19
+50.7.31.230:8898
+174.142.105.153
+69.65.19.160
+
+!----------------------IDN----------------------
+||xn--11xs86f.icu
+||xn--4gq171p.com
+||xn--czq75pvv1aj5c.org
+||xn--i2ru8q2qg.com
+||xn--noss43i.com
+||xn--oiq.cc
+||xn--p8j9a0d9c9a.xn--q9jyb4c
+||xn--9pr62r24a.com
+@@/^https?:\/\/(?=.*?(2x3|ni5|j5o))[a-z0-9.-]+\.xn--ngstr-lra8j\.com$
+||xn--ngstr-lra8j.com
+
+!-----------------DNS Poisoning-----------------
+!---Amazon---
+!-||cdn-images.mailchimp.com
+||abebooks.com
+|https://*.s3.amazonaws.com
+
+||9cache.com
+||9gag.com
+||agro.hk
+||share.america.gov
+||apkmirror.com
+||arte.tv
+||artstation.com
+||bangdream.space
+||behance.net
+||bird.so
+||bitterwinter.org
+||bnn.co
+||businessinsider.com
+||bwgyhw.com
+||castbox.fm
+||clyp.it
+||cmcn.org
+||cmx.im
+||dailyview.tw
+||daum.net
+||depositphotos.com
+||disconnect.me
+||documentingreality.com
+||doubibackup.com
+||encyclopedia.com
+||fangeqiang.com
+||fanqiangdang.com
+||feedx.net
+||flyzy2005.com
+||foreignpolicy.com
+||free-ss.site
+||freehongkong.org
+||blog.fuckgfw233.org
+||g0v.social
+||globalvoices.org
+||glorystar.me
+||goregrish.com
+||hanime.tv
+||hbo.com
+||spaces.hightail.com
+||hkgalden.com
+||hkgolden.com
+||hudson.org
+||ipfs.io
+||japantimes.co.jp
+||jiji.com
+||jintian.net
+||jinx.com
+||joinmastodon.org
+||liangzhichuanmei.com
+||lighti.me
+||lightyearvpn.com
+||lihkg.com
+||line-scdn.net
+||i.lithium.com
+||cloud.mail.ru
+||cdn-images.mailchimp.com
+||mastodon.cloud
+||mastodon.host
+||mastodon.social
+||mastodon.xyz
+||matters.news
+||me.me
+||metart.com
+||mohu.club
+||msa-it.org
+||goo.ne.jp
+||nikkei.com
+||nitter.cc
+||nitter.net
+||niu.moe
+||now.com
+||openvpn.org
+||onejav.com
+||paste.ee
+||my.pcloud.com
+||picacomic.com
+||pincong.rocks
+||pixiv.net
+||pixiv.org
+||pixivsketch.net
+||potato.im
+||premproxy.com
+||prism-break.org
+||proton.me
+||protonvpn.com
+||api.pureapk.com
+||quora.com
+||quoracdn.net
+||qz.com
+||cdn.seatguru.com
+||redd.it
+||redditspace.com
+||reddit.com
+||reddithelp.com
+.redditlist.com
+|http://redditlist.com
+||redditmedia.com
+||redditstatic.com
+!--defunct
+||rixcloud.com
+||rixcloud.us
+||rsdlmonitor.com
+||shadowsocks.be
+||tn1.shemalez.com
+||tn2.shemalez.com
+||tn3.shemalez.com
+||static.shemalez.com
+||six-degrees.io
+||softfamous.com
+||sosreader.com
+||sspanel.net
+||supchina.com
+||teddysun.com
+||textnow.me
+||tineye.com
+||top10vpn.com
+||tubepornclassic.com
+||uku.im
+||unseen.is
+||cn.uptodown.com
+||uraban.me
+||vrsmash.com
+||vultryhw.com
+||scache.vzw.com
+||scache1.vzw.com
+||scache2.vzw.com
+||ss7.vzw.com
+||ssr.tools
+||steemit.com
+||taiwanjustice.net
+||tinc-vpn.org
+||u15.info
+||washingtonpost.com
+||wenzhao.ca
+||whatsonweibo.com
+||wire.com
+||xm.com
+||xuehua.us
+||yes-news.com
+||yigeni.com
+||you-get.org
+||zzcloud.me
+
+!---Digital Currency Exchange(CRYPTO)---
+||aex.com
+||allcoin.com
+||adcex.com
+||bcex.ca
+||bibox.com
+||big.one
+||bigone.com
+||binance.com
+||bit-z.com
+||bitz.ai
+||bitbay.net
+||bitcoinworld.com
+||bitfinex.com
+||bithumb.com
+||bitmex.com
+||bnbstatic.com
+||btc98.com
+||btcbank.bank
+||btctrade.im
+||bybit.com
+||c2cx.com
+||chaoex.com
+||cobinhood.com
+||coinbase.com
+||coinbene.com
+||coinex.com
+!--|https://www.coinexchange.io/
+||coingecko.com
+||coingi.com
+||coinmarketcap.com
+||coinrail.co.kr
+||cointiger.com
+||cointobe.com
+||coinut.com
+||discoins.com
+||dragonex.io
+||ebtcbank.com
+||etherdelta.com
+||ethermine.org
+||etherscan.io
+||exmo.com
+||exrates.me
+||f2pool.com
+||fatbtc.com
+||ftx.com
+||gate.io
+||gatecoin.com
+||hbg.com
+||hitbtc.com
+||hotcoin.com
+||huobi.co
+||huobi.com
+||huobi.me
+!--||huobi.li
+||huobi.pro
+||huobi.sc
+||huobipro.com
+||bx.in.th
+||jex.com
+||kex.com
+||kraken.com
+||kspcoin.com
+||kucoin.com
+||lbank.info
+||liquiditytp.com
+||livecoin.net
+||localbitcoins.com
+||mercatox.com
+||oanda.com
+||obyte.org
+||oex.com
+||okex.com
+||okx.com
+||opensea.io
+||otcbtc.com
+||paxful.com
+||poolin.com
+||simpleswap.io
+||solv.finance
+||topbtc.com
+||tronscan.org
+||xbtce.com
+||yobit.net
+||zb.com
+
+!----------------Frauds & Scams-----------------
+!!---Content Farm(fake 500 error)---
+||read01.com
+||kknews.cc
+
+china-mmm.jp.net
+.lsxszzg.com
+.china-mmm.net
+||china-mmm.net
+
+!---------------------Groups--------------------
+!!---Masterdon---
+||bgme.me
+||o3o.ca
+||go5.dev
+||me.ns.ci
+||moresci.sale
+||social.edu.ci
+||mstdn.social
+||douchi.space
+||slashine.onl
+||social.datalabour.com
+||mastodon.online
+
+!!---Afraid FreeDNS---
+.allowed.org
+.now.im
+
+!!---Amazon---
+||payments-jp.amazon.com
+||amazon.co.jp
+||s3-ap-*.amazonaws.com
+||s3.eu-central-1.amazonaws.com
+||s3-eu-central-1.amazonaws.com
+||s3.us-east-1.amazonaws.com
+||s3-ap-northeast-2.amazonaws.com
+||s3.ap-northeast-2.amazonaws.com
+||s3-ap-northeast-1.amazonaws.com
+||s3-ap-southeast-1.amazonaws.com
+||s3-ap-southeast-2.amazonaws.com
+
+!!---AOL---
+video.aol.ca/video-detail
+video.aol.co.uk/video-detail
+video.aol.com
+||video.aol.com
+||search.aol.com
+www.aolnews.com
+
+!!---AvMoo---
+.avmo.pw
+!--|http://avmo.pw
+.avmoo.com
+|http://avmoo.com
+.avmoo.net
+|http://avmoo.net
+||avmoo.pw
+.javmoo.xyz
+|http://javmoo.xyz
+.javtag.com
+|http://javtag.com
+.javzoo.com
+|http://javzoo.com
+.tellme.pw
+
+!!---BBC---
+!--.bbc.co.uk/blogs
+!--.bbc.co.uk/chinese
+!--.bbc.co.uk/news/world-asia-china
+!--.bbc.co.uk/tv
+!--.bbc.co.uk/zhongwen
+!--.bbc.com/ukchina
+!--.bbc.com/zhongwen
+!--.bbc.com%2Fzhongwen
+!--news.bbc.co.uk/onthisday*newsid_2496000/2496277
+!--newsforums.bbc.co.uk
+.bbc.com
+||bbc.com
+.bbc.co.uk
+||bbc.co.uk
+||bbci.co.uk
+.bbcchinese.com
+||bbcchinese.com
+|http://bbc.in
+
+!!---Bloomberg---
+.bloomberg.cn
+||bloomberg.cn
+.bloomberg.com
+||bloomberg.com
+bloomberg.de
+||bloomberg.de
+||bloombergview.com
+.businessweek.com
+
+!!---ChangeIP---
+.1dumb.com
+.25u.com
+.2waky.com
+.3-a.net
+.4dq.com
+.4mydomain.com
+.4pu.com
+.acmetoy.com
+.almostmy.com
+.americanunfinished.com
+.authorizeddns.net
+.authorizeddns.org
+.bigmoney.biz
+.changeip.name
+.changeip.net
+.changeip.org
+.cleansite.biz
+.cleansite.info
+.cleansite.us
+.compress.to
+.ddns.info
+.ddns.me.uk
+.ddns.mobi
+.ddns.ms
+.ddns.name
+.ddns.us
+.dns-dns.com
+.dns-stuff.com
+.dns04.com
+.dns05.com
+.dns1.us
+.dns2.us
+.dnset.com
+.dnsrd.com
+.dsmtp.com
+.dumb1.com
+.dynamic-dns.net
+.dynamicdns.biz
+.dynamicdns.co.uk
+.dynamicdns.me.uk
+.dynamicdns.org.uk
+.dyndns.pro
+.dynssl.com
+.epac.to
+.esmtp.biz
+.ezua.com
+.faqserv.com
+.fartit.com
+.freeddns.com
+.freetcp.com
+.freewww.info
+.ftp1.biz
+.ftpserver.biz
+.gettrials.com
+.got-game.org
+.gr8domain.biz
+.gr8name.biz
+.https443.net
+.https443.org
+.ikwb.com
+.instanthq.com
+.iownyour.org
+.isasecret.com
+.itemdb.com
+.itsaol.com
+.jetos.com
+.jkub.com
+.jungleheart.com
+.justdied.com
+.lflink.com
+.lflinkup.com
+.lflinkup.net
+.lflinkup.org
+.longmusic.com
+.mefound.com
+.moneyhome.biz
+.mrbasic.com
+.mrbonus.com
+.mrface.com
+.mrslove.com
+.my03.com
+.mydad.info
+.myddns.com
+.myftp.info
+.mylftv.com
+.mymom.info
+.mynetav.net
+.mynetav.org
+.mynumber.org
+.mypicture.info
+.mypop3.net
+.mypop3.org
+.mysecondarydns.com
+.mywww.biz
+.myz.info
+.ns01.biz
+.ns01.info
+.ns01.us
+.ns02.biz
+.ns02.info
+.ns02.us
+.ns1.name
+.ns2.name
+.ns3.name
+.ocry.com
+.onedumb.com
+.onmypc.biz
+.onmypc.info
+.onmypc.net
+.onmypc.org
+.organiccrap.com
+.otzo.com
+.ourhobby.com
+.pcanywhere.net
+.port25.biz
+.proxydns.com
+.qhigh.com
+.qpoe.com
+.rebatesrule.net
+.sellclassics.com
+.sendsmtp.com
+.serveuser.com
+.serveusers.com
+.sexidude.com
+.squirly.info
+.ssl443.org
+.toh.info
+.toythieves.com
+.trickip.net
+.vizvaz.com
+.wikaba.com
+.www1.biz
+.wwwhost.biz
+@@|http://xx.wwwhost.biz
+.x24hr.com
+.xxuz.com
+.xxxy.info
+.ygto.com
+.youdontcare.com
+.yourtrap.com
+.zyns.com
+.zzux.com
+
+!!--Cloudflare--
+!--||pages.dev
+||workers.dev
+||one.one.one.one
+||cloudflare-dns.com
+
+!!---DtDNS---
+!###https://www.dtdns.com/dtsite/faq
+.3d-game.com
+.4irc.com
+.b0ne.com
+.chatnook.com
+.darktech.org
+.deaftone.com
+.effers.com
+.etowns.net
+.etowns.org
+.flnet.org
+.gotgeeks.com
+.scieron.com
+.slyip.com
+.slyip.net
+.suroot.com
+
+!!---DynDNS---
+!###https://help.dyn.com/list-of-dyn-dns-pro-remote-access-domain-names/
+.blogdns.org
+.dyndns.org
+.dyndns-ip.com
+.dyndns-pics.com
+.from-sd.com
+.from-pr.com
+.is-a-hunter.com
+
+!!---Dynu---
+.dynu.com
+||dynu.com
+.dynu.net
+.freeddns.org
+
+!!---Facebook---
+||accountkit.com
+||cdninstagram.com
+||f8.com
+.facebook.com
+||facebook.com
+!--/^https?:\/\/[^\/]+facebook\.com/
+@@||v6.facebook.com
+||facebook.de
+||facebook.design
+||connect.facebook.net
+||facebook.hu
+||facebook.in
+||facebook.nl
+||facebook.se
+||facebookmail.com
+||fb.com
+||fb.me
+||fb.watch
+||fbcdn.net
+||fbsbx.com
+||fbaddins.com
+||fbworkmail.com
+.instagram.com
+||instagram.com
+||m.me
+||messenger.com
+||meta.com
+||oculus.com
+||oculuscdn.com
+||rocksdb.org
+@@||ip6.static.sl-reverse.com
+||parse.com
+||thefacebook.com
+||threads.net
+||whatsapp.com
+||whatsapp.net
+
+!!---Fandom---
+||auntology.fandom.com
+||hongkong.fandom.com
+
+!!---FTChinese---
+.ftchinese.com
+||ftchinese.com
+
+!!---Google---
+||gle
+||google
+||doc.new
+||form.new
+||forms.new
+||sheet.new
+||sheets.new
+||spreadsheet.new
+||site.new
+||sites.new
+||website.new
+||slides.new
+||deck.new
+||presentation.new
+||googleapis.com
+!###https://www.google.com/supported_domains###
+!...GFWList doesn't intend to support typosquatting...
+||1e100.net
+||466453.com
+||abc.xyz
+||admob.com
+||adsense.com
+||advertisercommunity.com
+||agoogleaday.com
+||ampproject.org
+@@|https://www.ampproject.org
+@@|https://cdn.ampproject.org
+||android.com
+@@||ci.android.com
+||androidify.com
+||androidtv.com
+||api.ai
+.appspot.com
+||appspot.com
+||autodraw.com
+||blogblog.com
+blogspot.com
+/^https?:\/\/[^\/]+blogspot\.(.*)/
+.blogspot.hk
+.blogspot.jp
+.blogspot.tw
+||business.page
+!--||capitalg.com
+||certificate-transparency.org
+||chrome.com
+||chromecast.com
+||chromeexperiments.com
+||chromestatus.com
+||chromium.org
+||cloudfunctions.net
+||crbug.com
+||creativelab5.com
+||crrev.com
+||data-vocabulary.org
+||debug.com
+||deepmind.com
+||deja.com
+||digisfera.com
+||docker.com
+||docs.new
+||duck.com
+||feedburner.com
+||firebaseio.com
+||g.co
+||gcr.io
+||get.app
+||get.dev
+||get.how
+||get.page
+||getmdl.io
+||getoutline.org
+||ggpht.com
+||gmail.com
+||gmodules.com
+||godoc.org
+||golang.org
+||goo.gl
+||goo.gle
+.google.ae
+.google.as
+.google.am
+.google.at
+.google.az
+.google.ba
+.google.be
+.google.bg
+.google.ca
+.google.cd
+.google.ci
+.google.co.id
+.google.co.jp
+.google.co.kr
+.google.co.ma
+.google.co.uk
+.google.com
+.google.de
+||google.dev
+.google.dj
+.google.dk
+.google.es
+.google.fi
+.google.fm
+.google.fr
+.google.gg
+.google.gl
+.google.gr
+.google.ie
+.google.is
+.google.it
+.google.jo
+.google.kz
+.google.lv
+.google.mn
+.google.ms
+.google.nl
+.google.nu
+.google.no
+.google.ro
+.google.ru
+.google.rw
+.google.sc
+.google.sh
+.google.sk
+.google.sm
+.google.sn
+.google.tk
+.google.tm
+.google.to
+.google.tt
+.google.vu
+.google.ws
+/^https?:\/\/([^\/]+\.)*google\.(ac|ad|ae|af|ai|al|am|as|at|az|ba|be|bf|bg|bi|bj|bs|bt|by|ca|cat|cd|cf|cg|ch|ci|cl|cm|co.ao|co.bw|co.ck|co.cr|co.id|co.il|co.in|co.jp|co.ke|co.kr|co.ls|co.ma|com|com.af|com.ag|com.ai|com.ar|com.au|com.bd|com.bh|com.bn|com.bo|com.br|com.bz|com.co|com.cu|com.cy|com.do|com.ec|com.eg|com.et|com.fj|com.gh|com.gi|com.gt|com.hk|com.jm|com.kh|com.kw|com.lb|com.ly|com.mm|com.mt|com.mx|com.my|com.na|com.nf|com.ng|com.ni|com.np|com.om|com.pa|com.pe|com.pg|com.ph|com.pk|com.pr|com.py|com.qa|com.sa|com.sb|com.sg|com.sl|com.sv|com.tj|com.tr|com.tw|com.ua|com.uy|com.vc|com.vn|co.mz|co.nz|co.th|co.tz|co.ug|co.uk|co.uz|co.ve|co.vi|co.za|co.zm|co.zw|cv|cz|de|dj|dk|dm|dz|ee|es|eu|fi|fm|fr|ga|ge|gg|gl|gm|gp|gr|gy|hk|hn|hr|ht|hu|ie|im|iq|is|it|it.ao|je|jo|kg|ki|kz|la|li|lk|lt|lu|lv|md|me|mg|mk|ml|mn|ms|mu|mv|mw|mx|ne|nl|no|nr|nu|org|pl|pn|ps|pt|ro|rs|ru|rw|sc|se|sh|si|sk|sm|sn|so|sr|st|td|tg|tk|tl|tm|tn|to|tt|us|vg|vn|vu|ws)\/.*/
+!--||google-analytics.com
+!--||googleadservices.com
+||googleapps.com
+||googleartproject.com
+||googleblog.com
+||googlebot.com
+!--||googlecapital.com
+||googlechinawebmaster.com
+||googlecode.com
+||googlecommerce.com
+||googledomains.com
+||googlearth.com
+||googleearth.com
+||googledrive.com
+||googlefiber.net
+||googlegroups.com
+||googlehosted.com
+||googleideas.com
+||googleinsidesearch.com
+||googlemail.com
+||googlemashups.com
+||googlepagecreator.com
+||googleplay.com
+||googleplus.com
+||googlescholar.com
+||googlesource.com
+!--||googlesyndication.com
+!--||googletagmanager.com
+!--||googletagservices.com
+||googleusercontent.com
+.googlevideo.com
+||googlevideo.com
+||googleweblight.com
+||googlezip.net
+||gstatic.com
+!--||gv.com
+||gvt1.com
+@@||redirector.gvt1.com
+||gvt3.com
+||gwtproject.org
+||html5rocks.com
+||iam.soy
+||igoogle.com
+||itasoftware.com
+||like.com
+||madewithcode.com
+||material.io
+||on2.com
+||panoramio.com
+||picasaweb.com
+||pki.goog
+||plus.codes
+||polymer-project.org
+||questvisual.com
+||admin.recaptcha.net
+||api.recaptcha.net
+||api-secure.recaptcha.net
+||api-verify.recaptcha.net
+||redhotlabs.com
+||savethedate.foo
+||schema.org
+||shattered.io
+|http://sipml5.org/
+||sheets.new
+||slides.new
+||snapseed.com
+||synergyse.com
+||teachparentstech.org
+||tensorflow.org
+||tfhub.dev
+||thinkwithgoogle.com
+||tiltbrush.com
+||translate.goog
+||ua5v.com
+||urchin.com
+||usercontent.goog
+!--||www.google
+||waveprotocol.org
+||waymo.com
+||web.dev
+||webmproject.org
+||webpkgcache.com
+||webrtc.org
+||whatbrowser.org
+||whats.new
+||widevine.com
+||withgoogle.com
+||withyoutube.com
+||x.company
+||xn--ngstr-lra8j.com
+||youtu.be
+.youtube.com
+||youtube.com
+||youtube-nocookie.com
+||youtubeeducation.com
+||youtubegaming.com
+||youtubekids.com
+||yt.be
+||ytimg.com
+||zynamics.com
+
+!!---KickASS---
+!--OFFICIAL URL list at: https://kastatus.com
+
+!!---Microsoft---
+!--@@||bing.com
+||copilot.microsoft.com
+
+!!---NaughtyAmerica---
+||naughtyamerica.com
+
+!!---NYTimes---
+!--||d1f1eryiqyjs0r.cloudfront.net
+!--||d3lar09xbwlsge.cloudfront.net
+!--||d3q1qj9jzsu8nw.cloudfront.net
+!--||dc8xl0ndzn2cb.cloudfront.net
+!--||a1.nyt.com
+!--||int.nyt.com
+!--||s1.nyt.com
+static01.nyt.com
+!--||static01.nyt.com
+!--||typeface.nyt.com
+||nyt.com
+nytchina.com
+nytcn.me
+||nytcn.me
+||nytco.com
+|http://nyti.ms/
+.nytimes.com
+||nytimes.com
+||nytimg.com
+cn.nytstyle.com
+||nytstyle.com
+
+!!---Steam---
+.steamcommunity.com
+||steamcommunity.com
+!--steamcommunity.com/profiles/76561198062771609
+!--steamcommunity.com/groups/LibetTibet
+!--steamcommunity.com/groups/zhonggong
+!--steamcommunity.com/id/CJT_Jackton
+||store.steampowered.com
+||api.steampowered.com
+||steamstatic.com
+!!---Telegram---
+!!!---Domain---
+||tx.me
+||tg.dev
+||telega.one
+||cdn-telegram.org
+||comments.app
+||graph.org
+||legra.ph
+||quiz.directory
+||t.me
+||updates.tdesktop.com
+||telegram.dog
+||telegram.me
+||telegram.org
+||telegram.space
+||telegramdownload.com
+||telegra.ph
+||telesco.pe
+!!!---IP---
+
+!!---Tiktok---
+||tiktok.com
+||tiktokv.com
+||tiktokv.us
+||tiktokcdn-us.com
+||tiktokcdn.com
+||tiktokcdn-eu.com
+
+!!---Twitch---
+||jtvnw.net
+||ttvnw.net
+||twitch.tv
+||twitchcdn.net
+
+!!---Twitter/X---
+||periscope.tv
+.pscp.tv
+||pscp.tv
+.t.co
+||t.co
+.tweetdeck.com
+||tweetdeck.com
+||twimg.com
+.twitpic.com
+||twitpic.com
+.twitter.com
+||twitter.com
+||twitter.jp
+||vine.co
+||x.com
+
+!!---Taiwan---
+||moj.gov.tw
+||gov.taipei
+.gov.tw
+|https://aiss.anws.gov.tw
+||archives.gov.tw
+||tacc.cwb.gov.tw
+||data.gov.tw
+||exam.gov.tw
+||ey.gov.tw
+||fa.gov.tw
+||fda.gov.tw
+||hpa.gov.tw
+||immigration.gov.tw
+||itaiwan.gov.tw
+||judicial.gov.tw
+||li.taipei
+||ly.gov.tw
+||mjib.gov.tw
+||moeaic.gov.tw
+||mofa.gov.tw
+||mol.gov.tw
+||mvdis.gov.tw
+||nat.gov.tw
+||nhi.gov.tw
+||npa.gov.tw
+||nsc.gov.tw
+||ntbk.gov.tw
+||ntbna.gov.tw
+||ntbt.gov.tw
+||pcc.gov.tw
+||stat.gov.tw
+||taipei.gov.tw
+||taiwanjobs.gov.tw
+||thb.gov.tw
+||tipo.gov.tw
+||wda.gov.tw
+
+||teco-hk.org
+||teco-mo.org
+
+@@||aftygh.gov.tw
+@@||aide.gov.tw
+@@||tpde.aide.gov.tw
+@@||arte.gov.tw
+@@||chukuang.gov.tw
+@@||cwb.gov.tw
+@@||cycab.gov.tw
+@@||dbnsa.gov.tw
+@@||df.gov.tw
+@@||eastcoast-nsa.gov.tw
+@@||erv-nsa.gov.tw
+@@||grb.gov.tw
+@@||gysd.nyc.gov.tw
+@@||hchcc.gov.tw
+@@||hsinchu-cc.gov.tw
+@@||iner.gov.tw
+@@||klsio.gov.tw
+@@||kmseh.gov.tw
+@@||lungtanhr.gov.tw
+@@||maolin-nsa.gov.tw
+@@||matsu-news.gov.tw
+@@||matsu-nsa.gov.tw
+@@||matsucc.gov.tw
+@@||moe.gov.tw
+@@||nankan.gov.tw
+@@||ncree.gov.tw
+@@||cromotc.nat.gov.tw
+@@||tax.nat.gov.tw
+@@||necoast-nsa.gov.tw
+@@||ner.gov.tw
+@@||nmmba.gov.tw
+@@||nmp.gov.tw
+@@||nmvttc.gov.tw
+@@||northguan-nsa.gov.tw
+||npm.gov.tw
+@@||nstm.gov.tw
+@@||ntdmh.gov.tw
+@@||ntl.gov.tw
+@@||ntsec.gov.tw
+@@||ntuh.gov.tw
+@@||nvri.gov.tw
+@@||penghu-nsa.gov.tw
+@@||post.gov.tw
+@@||siraya-nsa.gov.tw
+@@||stdtime.gov.tw
+@@||sunmoonlake.gov.tw
+@@||taitung-house.gov.tw
+@@||taoyuan.gov.tw
+@@||tphcc.gov.tw
+@@||trimt-nsa.gov.tw
+@@||vghtpe.gov.tw
+@@||vghks.gov.tw
+@@||vghtc.gov.tw
+@@||wanfang.gov.tw
+@@||yatsen.gov.tw
+@@||yda.gov.tw
+
+!--@@||4pppc.gov.tw
+!--@@||921.gov.tw
+!--@@||dmtip.gov.tw
+!--@@||etraining.gov.tw
+!--@@||gsn-cert.nat.gov.tw
+!--@@||nici.nat.gov.tw
+!--@@||hcc.gov.tw
+!--@@||hengchuen.gov.tw
+!--@@||khcc.gov.tw
+!--@@||khms.gov.tw
+!--@@||kk.gov.tw
+!--@@||klccab.gov.tw
+!--@@||klra.gov.tw
+!--@@||nmh.gov.tw
+!--@@||nmtl.gov.tw
+!--@@||pabp.gov.tw
+!--@@||pet.gov.tw
+!--@@||tchb.gov.tw
+!--@@||tcsac.gov.tw
+!--@@||tncsec.gov.tw
+||kinmen.org.tw
+
+!!---USA---
+||americorps.gov
+||dma.mil
+||jpl.nasa.gov
+||pds.nasa.gov
+||pacom.mil
+||soc.mil
+||solarsystem.nasa.gov
+iipdigital.usembassy.gov
+||uscg.mil
+||usfk.mil
+|http://tarr.uspto.gov/
+||tsdr.uspto.gov
+
+!!---V2EX---
+||v2ex.com
+!--.v2ex.com
+!--Included in above rule: dns.v2ex.com
+!--@@|http://v2ex.com
+!--@@|http://cdn.v2ex.com
+!--@@|http://cn.v2ex.com
+!--@@|http://hk.v2ex.com
+!--@@|http://i.v2ex.com
+!--@@|http://lax.v2ex.com
+!--@@|http://neue.v2ex.com
+!--@@|http://pagespeed.v2ex.com
+!--@@|http://static.v2ex.com
+!--@@|http://workspace.v2ex.com
+!--@@|http://www.v2ex.com
+
+!!---VOA---
+||voacambodia.com
+.voachineseblog.com
+||voachineseblog.com
+.voacantonese.com
+||voacantonese.com
+voachinese.com
+||voachinese.com
+voagd.com
+||voaindonesia.com
+.voanews.com
+||voanews.com
+voatibetan.com
+||voatibetan.com
+.voatibetanenglish.com
+||voatibetanenglish.com
+
+!!---Wikia---
+||zh.ecdm.wikia.com
+||evchk.wikia.com
+fq.wikia.com
+zh.pttpedia.wikia.com/wiki/%E7%BF%92%E5%8C%85%E5%AD%90%E4%B9%8B%E4%BA%82
+cn.uncyclopedia.wikia.com
+zh.uncyclopedia.wikia.com
+
+!-------------Wikipedia Related-------------
+!!Emergency need only(IP/Port block usage)!!
+!------0------
+||mediawiki.org
+!------1------
+||wikidata.org
+!------2------
+||wikimedia.org
+!------3------
+||wikibooks.org
+!------4------
+||wikiversity.org
+!------5------
+||wikisource.org
+!------6------
+||zh.wikiquote.org
+!------7------
+||wikinews.org
+!------8------
+||wikivoyage.org
+!------9------
+||wiktionary.org
+!----Main-----
+||wikipedia.org
+||wmfusercontent.org
+
+!!---Yahoo---
+||shopping.yahoo.co.jp
+||auctions.yahoo.co.jp
+||search.yahoo.co.jp
+||yahoo.com.tw
+||yahoo.com.hk
+||yahoo.com
+
+!------------------Numerics---------------------
+||ipfs.4everland.io
+||91dasai.com
+||i.111666.best
+||1lib.sk
+||2047.one
+||69shuba.cx
+||2049bbs.xyz
+||611study.com
+||18comic.org
+||000webhost.com
+.030buy.com
+.0rz.tw
+|http://0rz.tw
+1-apple.com.tw
+||1-apple.com.tw
+.1000giri.net
+||1000giri.net
+||10beasts.net
+.10conditionsoflove.com
+||10musume.com
+123rf.com
+.12bet.com
+||12bet.com
+.12vpn.com
+.12vpn.net
+||12vpn.com
+||12vpn.net
+||1337x.to
+.138.com
+141hongkong.com/forum
+||141jj.com
+.141tube.com
+||1688.com.au
+.173ng.com
+||173ng.com
+.177pic.info
+.17t17p.com
+||18board.com
+18onlygirls.com
+.18p2p.com
+.18virginsex.com
+zhao.1984.city
+||zhao.1984.city
+1984bbs.com
+||1984bbs.com
+!--||1984blog.com
+.1991way.com
+||1991way.com
+.1eew.com
+.1mobile.com
+||1point3acres.com
+||1pondo.tv
+.2-hand.info
+.2000fun.com/bbs
+||2008xianzhang.info
+||2021hkcharter.com
+||2047.name
+21andy.com/blog
+21sextury.com
+.228.net.tw
+||233abc.com
+||24hrs.ca
+2lipstube.com
+.2shared.com
+30boxes.com
+.315lz.com
+||32red.com
+||36rain.com
+.3a5a.com
+3arabtv.com
+.3boys2girls.com
+.3proxy.ru
+.3ren.ca
+.3tui.net
+||404museum.com
+||4bluestones.biz
+.4chan.com
+!--||4chan.org
+.4everproxy.com
+||4everproxy.com
+||4rbtv.com
+||4shared.com
+taiwannation.50webs.com
+||51.ca
+||51jav.org
+.51luoben.com
+||51luoben.com
+||5278.cc
+.5299.tv
+5i01.com
+.5isotoi5.org
+.5maodang.com
+||611study.icu
+||63i.com
+.64museum.org
+64tianwang.com
+64wiki.com
+.66.ca
+666kb.com
+||6do.news
+||6do.world
+.6park.com
+||6park.com
+||6parkbbs.com
+||6parker.com
+||6parknews.com
+||7capture.com
+.7cow.com
+!--||7-zip.org
+.8-d.com
+|http://8-d.com
+.85cc.us
+|http://85cc.us
+.881903.com/page/zh-tw/
+||881903.com
+.888.com
+.888poker.com
+89.64.charter.constitutionalism.solutions
+89-64.org
+||89-64.org
+||8964museum.com
+.8news.com.tw
+.8z1.net
+||8z1.net
+||91porn.com
+||91porny.com
+||91vps.club
+.92ccav.com
+.991.com
+|http://991.com
+.99btgc01.com
+||99btgc01.com
+.99cn.info
+|http://99cn.info
+||9bis.com
+||9bis.net
+||9news.com.au
+
+!--------------------AA-------------------------
+||amuletmc.com
+||abplive.com
+||cdn.arstechnica.net
+||aomedia.org
+||aljazeera.com
+||akinator.com
+||annas-archive.org
+||av01.tv
+||acg.rip
+||annas-archive.se
+||a-normal-day.com
+a5.com.ru
+|http://aamacau.com
+!--|http://cdn*.abc.com/
+.abc.com
+.abc.net.au
+||abc.net.au
+.abchinese.com
+||abebooks.co.uk
+.ablwang.com
+.aboluowang.com
+||aboluowang.com
+||about.me
+.abs.edu
+||acast.com
+.accim.org
+.aceros-de-hispania.com
+.acevpn.com
+||acevpn.com
+.acg18.me
+|http://acg18.me
+||acgbox.org
+||acgkj.com
+||acgnx.se
+.acmedia365.com
+.acnw.com.au
+actfortibet.org
+actimes.com.au
+activpn.com
+||activpn.com
+||aculo.us
+||addictedtocoffee.de
+||addyoutube.com
+.adelaidebbs.com/bbs
+.adpl.org.hk
+|http://adpl.org.hk
+.adult-sex-games.com
+||adult-sex-games.com
+adultfriendfinder.com
+||advanscene.com
+||advertfan.com
+.ae.org
+||aei.org
+||aenhancers.com
+||af.mil
+.afantibbs.com
+|http://afantibbs.com
+||afr.com
+||aiosearch.com
+.aiph.net
+||aiph.net
+.airasia.com
+||airconsole.com
+|http://download.aircrack-ng.org
+.airvpn.org
+||airvpn.org
+.aisex.com
+||ait.org.tw
+aiweiwei.com
+.aiweiweiblog.com
+||aiweiweiblog.com
+||www.ajsands.com
+
+!!---Akamai---
+a248.e.akamai.net
+||a248.e.akamai.net
+
+rfalive1.akacast.akamaistream.net
+voa-11.akacast.akamaistream.net
+
+|https://fbcdn*.akamaihd.net/
+!--||fbexternal-a.akamaihd.net
+!--||fbstatic-a.akamaihd.net
+!--|https://igcdn*.akamaihd.net
+rthklive2-lh.akamaihd.net
+
+.akademiye.org/ug
+|http://akademiye.org/ug
+||akiba-online.com
+||akow.org
+.al-islam.com
+||alabout.com
+.alanhou.com
+|http://alanhou.com
+.alarab.qa
+||alasbarricadas.org
+||alforattv.net
+.alhayat.com
+.alicejapan.co.jp
+aliengu.com
+||alive.bar
+||alkasir.com
+||all4mom.org
+||allconnected.co
+.alldrawnsex.com
+||alldrawnsex.com
+||allfinegirls.com
+.allgirlmassage.com
+allgirlsallowed.org
+.allgravure.com
+alliance.org.hk
+.allinfa.com
+||allinfa.com
+.alljackpotscasino.com
+||allmovie.com
+.alphaporno.com
+||alternate-tools.com
+alternativeto.net/software
+alvinalexander.com
+alwaysdata.com
+||alwaysdata.com
+||alwaysdata.net
+.alwaysvpn.com
+||alwaysvpn.com
+||am730.com.hk
+ameblo.jp
+||ameblo.jp
+www1.american.edu/ted/ice/tibet
+||americangreencard.com
+||amiblockedornot.com
+.amigobbs.net
+.amitabhafoundation.us
+|http://amitabhafoundation.us
+.amnesty.org
+||amnesty.org
+||amnesty.org.hk
+.amnesty.tw
+.amnestyusa.org
+||amnestyusa.org
+.amtb-taipei.org
+.andygod.com
+|http://andygod.com
+annatam.com/chinese
+||anchor.fm
+||anchorfree.com
+!--GHS
+||ancsconf.org
+||andfaraway.net
+||android-x86.org
+||androidapksfree.com
+angelfire.com/hi/hayashi
+||angularjs.org
+animecrazy.net
+aniscartujo.com
+||aniscartujo.com
+||anobii.com
+||anonfiles.com
+.anonymitynetwork.com
+.anonymizer.com
+.anonymouse.org
+||anonymouse.org
+anontext.com
+.anpopo.com
+.answering-islam.org
+|http://www.antd.org
+||anthonycalzadilla.com
+antichristendom.com
+.antiwave.net
+|http://antiwave.net
+.anyporn.com
+.anysex.com
+|http://anysex.com
+.ao3.org
+||ao3.org
+||aobo.com.au
+.aofriend.com
+|http://aofriend.com
+.aojiao.org
+||aomiwang.com
+||apat1989.org
+.apetube.com
+||apiary.io
+.apigee.com
+||apigee.com
+||apk.support
+||apkcombo.com
+.apkmonk.com/app
+||apkmonk.com
+||apkplz.com
+||apkpure.com
+||apkpure.net
+||appadvice.com
+!--||appannie.com
+||appbrain.com
+.appdownloader.net/Android
+.appledaily.com
+||appledaily.com
+appledaily.com.tw
+||appledaily.com.tw
+.appshopper.com
+|http://appshopper.com
+||appsocks.net
+||appsto.re
+.aptoide.com
+||aptoide.com
+||archives.gov
+.archive.fo
+||archive.fo
+||archive.vn
+||archive.is
+||archive.is
+||archive.li
+||archive.li
+||archive.md
+||archive.org
+||archive.ph
+||archive.today
+||archiveofourown.com
+||archiveofourown.org
+.arctosia.com
+||arctosia.com
+||areca-backup.org
+.arethusa.su
+||arethusa.su
+||arlingtoncemetery.mil
+.art4tibet1998.org
+artofpeacefoundation.org
+artsy.net
+||asacp.org
+asdfg.jp/dabr
+asg.to
+.asia-gaming.com
+.asiaharvest.org
+||asiaharvest.org
+||asianage.com
+||asianews.it
+||asiansexdiary.com
+||asiaone.com
+.asiatgp.com
+||ask.com
+||askstudent.com
+.askynz.net
+||askynz.net
+||aspi.org.au
+||aspistrategist.org.au
+||assembla.com
+||astrill.com
+||atc.org.au
+.atchinese.com
+|http://atchinese.com
+atgfw.org
+.atlanta168.com
+||atlanta168.com
+.atnext.com
+||atnext.com
+||audacy.com
+ice.audionow.com
+.av.com
+||av.movie
+.av-e-body.com
+avaaz.org
+||avaaz.org
+!--||avast.com
+.avcool.com
+.avdb.in
+||avdb.in
+.avdb.tv
+||avdb.tv
+.avfantasy.com
+||avg.com
+.avgle.com
+||avgle.com
+||avidemux.org
+||avoision.com
+.avyahoo.com
+||axios.com
+||axureformac.com
+azerimix.com
+||azirevpn.com
+!--boxun.azurewebsites.net doesn't exist.
+boxun*.azurewebsites.net
+||boxun*.azurewebsites.net
+
+!--------------------BB-------------------------
+||bt4gprx.com
+||bt4g.org
+||betterhash.net
+||binance.org
+||bitget.com
+||blackmagicdesign.com
+||bearteach.com
+||btbtt.me
+||btbtt.co
+||btbit.net
+||betaclouds.net
+||blocktempo.com
+||blockcast.it
+||www.bing.com
+||bangumi.moe
+||b-ok.cc
+forum.baby-kingdom.com
+||babylonbee.com
+babynet.com.hk
+backchina.com
+||backchina.com
+.backpackers.com.tw/forum
+backtotiananmen.com
+||bad.news
+.badiucao.com
+||badiucao.com
+.badjojo.com
+badoo.com
+|http://*2.bahamut.com.tw
+||baidu.jp
+.baijie.org
+||baijie.org
+||bailandaily.com
+||baixing.me
+||baizhi.org
+.banana-vpn.com
+||banana-vpn.com
+||band.us
+||bandcamp.com
+.bandwagonhost.com
+||bandwagonhost.com
+.bangbrosnetwork.com
+.bangchen.net
+|http://bangchen.net
+||bangkokpost.com
+||bangyoulater.com
+bannedbook.org
+||bannedbook.org
+.bannednews.org
+.baramangaonline.com
+|http://baramangaonline.com
+.barenakedislam.com
+||barnabu.co.uk
+||barton.de
+.bastillepost.com
+||bastillepost.com
+bayvoice.net
+||bayvoice.net
+||bbchat.tv
+||bb-chat.tv
+.bbg.gov
+.bbkz.com/forum
+.bbnradio.org
+bbs-tw.com
+.bbsdigest.com/thread
+bbsland.com
+.bbsmo.com
+.bbsone.com
+bbtoystore.com
+.bcc.com.tw/board
+.bcchinese.net
+.bcmorning.com
+bdsmvideos.net
+.beaconevents.com
+.bebo.com
+||bebo.com
+.beevpn.com
+||beevpn.com
+.behindkink.com
+||beijing1989.com
+||beijing2022.art
+beijingspring.com
+||beijingspring.com
+.belamionline.com
+.bell.wiki
+|http://bell.wiki
+bemywife.cc
+beric.me
+||berlinerbericht.de
+.berlintwitterwall.com
+||berlintwitterwall.com
+.berm.co.nz
+.bestgore.com
+.bestpornstardb.com
+||bestvpn.com
+||bestvpnanalysis.com
+||bestvpnforchina.net
+||bestvpnserver.com
+||bestvpnservice.com
+||bestvpnusa.com
+||bet365.com
+.betfair.com
+||betternet.co
+.bettervpn.com
+||bettervpn.com
+.bettween.com
+||bettween.com
+||betvictor.com
+.bewww.net
+.beyondfirewall.com
+||bfnn.org
+||bfsh.hk
+.bgvpn.com
+||bgvpn.com
+.bianlei.com
+@@||bianlei.com
+biantailajiao.com
+||biblesforamerica.org
+||vpl.bibliocommons.com
+||biedian.me
+bigfools.com
+||bigjapanesesex.com
+.bignews.org
+||bignews.org
+.bigsound.org
+||bild.de
+.biliworld.com
+|http://biliworld.com
+|http://billypan.com/wiki
+.binux.me
+ai.binwang.me/couplet
+.bit.do
+|http://bit.do
+.bit.ly
+|http://bit.ly
+!--||bitbucket.org
+||bitchute.com
+||bitcointalk.org
+.bitshare.com
+||bitshare.com
+bitsnoop.com
+.bitvise.com
+||bitvise.com
+bizhat.com
+||bl-doujinsouko.com
+.bjnewlife.org
+.bjs.org
+bjzc.org
+||bjzc.org
+||blacked.com
+.blacklogic.com
+.blackvpn.com
+||blackvpn.com
+blewpass.com
+.blinkx.com
+||blinkx.com
+blinw.com
+.blip.tv
+||blip.tv
+||blockcast.it
+.blockcn.com
+||blockcn.com
+||blockedbyhk.com
+||blockless.com
+||blog.de
+.blog.jp
+|http://blog.jp
+@@||jpush.cn
+.blogcatalog.com
+||blogcatalog.com
+||blogcity.me
+.blogger.com
+||blogger.com
+blogimg.jp
+.bloglines.com
+||bloglines.com
+||bloglovin.com
+rconversation.blogs.com
+.blogtd.org
+|http://blogtd.org
+||bloodshed.net
+||bootstrapcdn.com
+||bloomfortune.com
+blueangellive.com
+||blubrry.com
+||bmdru.com
+||bnext.com.tw
+||bnrmetal.com
+boardreader.com/thread
+||boardreader.com
+.bod.asia
+||bod.asia
+.bodog88.com
+.bolehvpn.net
+||bolehvpn.net
+bonbonme.com
+.bonfoundation.org
+.bongacams.com
+||boobstagram.com
+||book.com.tw
+||bookdepository.com
+bookepub.com
+||books.com.tw
+||bookwalker.com.tw
+||borgenmagazine.com
+||botanwang.com
+.bot.nu
+.bowenpress.com
+||bowenpress.com
+||app.box.com
+dl.box.net
+||dl.box.net
+.boxpn.com
+||boxpn.com
+boxun.com
+||boxun.com
+.boxun.tv
+||boxun.tv
+.boxunclub.com
+boyangu.com
+.boyfriendtv.com
+.boysfood.com
+||br.st
+.brainyquote.com/quotes/authors/d/dalai_lama
+||braumeister.org
+||brave.com
+.bravotube.net
+||bravotube.net
+.brazzers.com
+||brazzers.com
+||breached.to
+.break.com
+||break.com
+breakgfw.com
+||breakgfw.com
+breaking911.com
+.breakingtweets.com
+||breakingtweets.com
+||breakwall.net
+briian.com/6511/freegate
+||brill.com
+brizzly.com
+||brizzly.com
+broadbook.com
+.broadpressinc.com
+||broadpressinc.com
+bbs.brockbbs.com
+||brookings.edu
+brucewang.net
+.brutaltgp.com
+||brutaltgp.com
+||bsky.app
+||bsky.network
+||bsky.social
+||bt95.com
+.btaia.com
+.btbtav.com
+||btdig.com
+||btdigg.org
+||btguard.com
+.btku.me
+||btku.me
+||btku.org
+.btspread.com
+.btsynckeys.com
+.budaedu.org
+||budaedu.org
+.buddhanet.com.tw/zfrop/tibet
+||buffered.com
+||bullguard.com
+.bullog.org
+||bullog.org
+.bullogger.com
+||bullogger.com
+||bumingbai.net
+||bunbunhk.com
+.busayari.com
+|http://busayari.com
+||business-humanrights.org
+.businessinsider.com/bing-could-be-censoring-search-results-2014
+.businessinsider.com/china-banks-preparing-for-debt-implosion-2014
+.businessinsider.com/hong-kong-activists-defy-police-tear-gas-as-protests-continue-overnight-2014
+.businessinsider.com/internet-outages-reported-in-north-korea-2014
+.businessinsider.com/iphone-6-is-approved-for-sale-in-china-2014
+.businessinsider.com/nfl-announcers-surface-tablets-2014
+.businessinsider.com/panama-papers
+.businessinsider.com/umbrella-man-hong-kong-2014
+|http://www.businessinsider.com.au/*
+.businesstoday.com.tw
+||businesstoday.com.tw
+.busu.org/news
+|http://busu.org/news
+busytrade.com
+.buzzhand.com
+.buzzhand.net
+.buzzorange.com
+||buzzorange.com
+||buzzsprout.com
+||bvpn.com
+||bwh1.net
+||bypasscensorship.org
+
+!--------------------CC-------------------------
+||covenantswatch.org.tw
+||cpu-monkey.com
+||coffeemanga.to
+||ctinews.com
+||cachefly.com
+||cachefly.net
+||cutout.pro
+||cixiaoya.club
+||campaign-archive.com
+||chinauncensored.tv
+||catbox.moe
+||crosswall.org
+||clipconverter.cc
+||zh-hans.cfsh99.com
+||colacloud.net
+||ci-en.jp
+||c-span.org
+.c-spanvideo.org
+||c-spanvideo.org
+||c-est-simple.com
+.c100tibet.org
+||cableav.tv
+||cablegatesearch.net
+.cachinese.com
+.cacnw.com
+|http://cacnw.com
+.cactusvpn.com
+||cactusvpn.com
+.cafepress.com
+.cahr.org.tw
+.calameo.com/books
+||calendarz.com
+.calgarychinese.ca
+.calgarychinese.com
+.calgarychinese.net
+.cam4.com
+.cam4.jp
+.cam4.sg
+.camfrog.com
+||camfrog.com
+||campaignforuyghurs.org
+||cams.com
+.cams.org.sg
+canadameet.com
+.canalporno.com
+|http://bbs.cantonese.asia/
+!--http://www.cantonese.asia/action-bbs.html
+.canyu.org
+||canyu.org
+.caobian.info
+||caobian.info
+caochangqing.com
+||caochangqing.com
+.cap.org.hk
+||cap.org.hk
+||caoporn.us
+.carabinasypistolas.com
+cardinalkungfoundation.org
+||posts.careerengine.us
+carmotorshow.com
+||carrd.co
+.cartoonmovement.com
+||cartoonmovement.com
+.casadeltibetbcn.org
+.casatibet.org.mx
+|http://casatibet.org.mx
+.cari.com.my
+||cari.com.my
+||caribbeancom.com
+||carousell.com.hk
+.casinoking.com
+.casinoriva.com
+||catch22.net
+.catchgod.com
+|http://catchgod.com
+.catholic.org.hk
+||catholic.org.hk
+catholic.org.tw
+||catholic.org.tw
+.cathvoice.org.tw
+||cato.org
+||cattt.com
+||caus.com
+.cbc.ca
+||cbc.ca
+.cbsnews.com/video
+.cbtc.org.hk
+||southpark.cc.com
+!-.ccc.de
+!-||ccc.de
+||cccat.cc
+||cccat.co
+||ccfd.org.tw
+.cchere.com
+||cchere.com
+.ccim.org
+.cclife.ca
+cclife.org
+||cclife.org
+cclifefl.org
+||cclifefl.org
+.ccthere.com
+||ccthere.com
+||ccthere.net
+.cctmweb.net
+.cctongbao.com/article/2078732
+ccue.ca
+ccue.com
+.ccvoice.ca
+.ccw.org.tw
+.cgdepot.org
+|http://cgdepot.org
+||cdbook.org
+.cdef.org
+||cdef.org
+||cdig.info
+cdjp.org
+||cdjp.org
+!--.cdn-apple.com
+!--||cdn-apple.com
+.cdnews.com.tw
+cdp1989.org
+cdp1998.org
+||cdp1998.org
+cdp2006.org
+||cdp2006.org
+||cdpeu.org
+||cdpuk.co.uk
+||cdpweb.org
+||cdpweb.org
+||cdpwu.org
+||cdw.com
+||cecc.gov
+||cellulo.info
+||cenews.eu
+||centerforhumanreprod.com
+||centralnation.com
+.centurys.net
+|http://centurys.net
+.cfhks.org.hk
+.cfos.de
+||cfr.org
+.cftfc.com
+.cgst.edu
+.change.org
+||change.org
+.changp.com
+||changp.com
+||channelnewsasia.com
+||chanworld.org
+||chaos.social
+||character.ai
+||chatgpt.com
+.chaturbate.com
+||chaturbate.com
+.chuang-yen.org
+||checkgfw.com
+||chengmingmag.com
+||chenguangcheng.com
+||chenpokong.com
+||chenpokongvip.com
+||cherrysave.com
+||chhongbi.org
+||china-week.com
+||china101.com
+||china18.org
+||china21.com
+||china21.org
+||china5000.us
+||chinaaffairs.org
+||chinaaid.us
+||chinaaid.org
+||chinaaid.net
+||chinachange.org
+||chinachannel.hk
+||chinademocrats.org
+||chinadialogue.net
+||chinadigitaltimes.net
+||chinaelections.org
+||chinafile.com
+||chinafreepress.org
+.chinagate.com
+chinagfw.org
+||chinagfw.org
+.chinagonet.com
+.chinahorizon.org
+||chinahorizon.org
+.chinahush.com
+.chinainperspective.com
+chinalaborwatch.org
+chinalawtranslate.com
+.chinapost.com.tw/taiwan/national/national-news
+chinalawandpolicy.com
+.chinamule.com
+||chinamule.com
+chinamz.org
+.chinanewscenter.com
+|https://chinanewscenter.com
+.chinapress.com.my
+||chinapress.com.my
+.china-review.com.ua
+|http://china-review.com.ua
+.chinarightsia.org
+chinasmile.net/forums
+chinasocialdemocraticparty.com
+||chinasocialdemocraticparty.com
+chinasoul.org
+||chinasoul.org
+.chinasucks.net
+||chinatopsex.com
+.chinatown.com.au
+chinaway.org
+.chinaworker.info
+||chinaworker.info
+chinayouth.org.hk
+chinese-leaders.org
+||chinese-memorial.org
+.chinesedaily.com
+||chinesedailynews.com
+.chinesedemocracy.com
+||chinesedemocracy.com
+||chinesegay.org
+.chinesen.de
+||chinesen.de
+||chinesenews.net.au
+.chinesepen.org
+||chineseradioseattle.com
+||chineseupress.com
+.chingcheong.com
+||chingcheong.com
+.chinman.net
+|http://chinman.net
+chithu.org
+||cnnews.chosun.com
+.chrdnet.com
+|http://chrdnet.com
+.christianfreedom.org
+||christianfreedom.org
+christianstudy.com
+||christianstudy.com
+christusrex.org/www1/sdc
+.chubold.com
+chubun.com
+||christiantimes.org.hk
+.chrlawyers.hk
+||chrlawyers.hk
+.churchinhongkong.org/b5/index.php
+|http://churchinhongkong.org/b5/index.php
+.chushigangdrug.ch
+.cienen.com
+.cineastentreff.de
+.cipfg.org
+||cirosantilli.com
+.citizencn.com
+||citizencn.com
+||citizenlab.ca
+||citizenlab.org
+.citizenlab.org
+citizensradio.org
+.city365.ca
+|http://city365.ca
+city9x.com
+||citypopulation.de
+.citytalk.tw/event
+.civicparty.hk
+||civicparty.hk
+civilhrfront.org
+||civilhrfront.org
+.civiliangunner.com
+.civilmedia.tw
+||civilmedia.tw
+||civitai.com
+.ck101.com
+||ck101.com
+.clarionproject.org/news/islamic-state-isis-isil-propaganda
+||classicalguitarblog.net
+.clb.org.hk
+clearharmony.net
+clearwisdom.net
+||clinica-tibet.ru
+.clipfish.de
+||app.cloudcone.com
+||cloudflare-ipfs.com
+||club1069.com
+||clubhouseapi.com
+||cmegroup.com
+||cmi.org.tw
+|http://www.cmoinc.org
+cmp.hku.hk
+||cmule.com
+||cms.gov
+|http://vpn.cmu.edu
+|http://vpn.sv.cmu.edu
+.cn6.eu
+.cna.com.tw
+||cna.com.tw
+.cnabc.com
+.cnd.org
+||cnd.org
+download.cnet.com
+.cnex.org.cn
+.cnineu.com
+.cnn.com/video
+.cnpolitics.org
+||cnpolitics.org
+.cn-proxy.com
+|http://cn-proxy.com
+.cnproxy.com
+news.cnyes.com
+||coat.co.jp
+||cochina.org
+||codeshare.io
+||codeskulptor.org
+||cofacts.tw
+||conoha.jp
+|http://tosh.comedycentral.com
+comefromchina.com
+||comefromchina.com
+.comic-mega.me
+commandarms.com
+||commentshk.com
+.communistcrimes.org
+||communistcrimes.org
+||communitychoicecu.com
+||comparitech.com
+||compileheart.com
+||conoha.jp
+.contactmagazine.net
+.convio.net
+||cool18.com
+.coolaler.com
+||coolaler.com
+coolder.com
+||coolder.com
+||coolloud.org.tw
+.coolncute.com
+||coolstuffinc.com
+corumcollege.com
+.cos-moe.com
+|http://cos-moe.com
+.cosplayjav.pl
+|http://cosplayjav.pl
+.cotweet.com
+||cotweet.com
+.coursehero.com
+||coursehero.com
+cpj.org
+||cpj.org
+.cq99.us
+|http://cq99.us
+crackle.com
+||crackle.com
+.crazys.cc
+.crazyshit.com
+||crazyshit.com
+||crchina.org
+crd-net.org
+creaders.net
+||creaders.net
+.creadersnet.com
+||cristyli.com
+||croxyproxy.com
+.crocotube.com
+|http://crocotube.com
+.crossvpn.net
+||crossvpn.net
+||crucial.com
+||blog.cryptographyengineering.com
+csdparty.com
+||csdparty.com
+||csis.org
+||csmonitor.com
+||csuchen.de
+||csw.org.uk
+||ct.org.tw
+.ctao.org
+||ctitv.com.tw
+||ctowc.org
+||cts.com.tw
+||ctwant.com
+|http://library.usc.cuhk.edu.hk/
+|http://mjlsh.usc.cuhk.edu.hk/
+.cuhkacs.org/~benng
+.cuiweiping.net
+||cuiweiping.net
+||culture.tw
+.cumlouder.com
+||cumlouder.com
+||curvefish.com
+||cusp.hk
+.cutscenes.net
+||cutscenes.net
+.cw.com.tw
+||cw.com.tw
+|http://forum.cyberctm.com
+cyberghostvpn.com
+||cyberghostvpn.com
+||cynscribe.com
+||ifan.cz.cc
+||mike.cz.cc
+||nic.cz.cc
+
+!--------------------DD-------------------------
+||deno.dev
+||docs.deno.com
+||doom9.org
+||dweb.link
+||docker.io
+||disneyplus.com
+||ddex.io
+||d.cash
+||doubiyunbackup.com
+||cloud.dify.ai
+.d-fukyu.com
+|http://d-fukyu.com
+.d100.net
+||d100.net
+.d2bay.com
+|http://d2bay.com
+.dabr.co.uk
+||dabr.co.uk
+dabr.eu
+dabr.mobi
+||dabr.mobi
+||dabr.me
+dadazim.com
+||dadazim.com
+.dadi360.com
+.dafabet.com
+dafagood.com
+dafahao.com
+.dafoh.org
+.daftporn.com
+.dagelijksestandaard.nl
+.daidostup.ru
+|http://daidostup.ru
+||dailymail.co.uk
+.dailymotion.com
+||dailymotion.com
+||dailysabah.com
+.dajiyuan.com
+||dajiyuan.de
+dajiyuan.eu
+dalailama.com
+.dalailama.mn
+|http://dalailama.mn
+.dalailama.ru
+||dalailama.ru
+dalailama80.org
+.dalailama-archives.org
+.dalailamacenter.org
+|http://dalailamacenter.org
+dalailamafellows.org
+.dalailamafilm.com
+.dalailamafoundation.org
+.dalailamahindi.com
+.dalailamainaustralia.org
+.dalailamajapanese.com
+.dalailamaprotesters.info
+.dalailamaquotes.org
+.dalailamatrust.org
+.dalailamavisit.org.nz
+.dalailamaworld.com
+||dalailamaworld.com
+dalianmeng.org
+||dalianmeng.org
+.daliulian.org
+||daliulian.org
+.danke4china.net
+||danke4china.net
+daolan.net
+||darrenliuwei.com
+||dashlane.com
+||daum.net
+.david-kilgour.com
+|http://david-kilgour.com
+daxa.cn
+||daxa.cn
+.daylife.com/topic/dalai_lama
+||db.tt
+||dbgjd.com
+||dcard.tw
+dcmilitary.com
+||ddc.com.tw
+||deadhouse.org
+||deadline.com
+||deepai.org
+||decodet.co
+
+!--Origin:cdn-i30$_
+!--Exception: Homepage access without rst
+!--Keyword is $_
+.definebabe.com
+
+||delcamp.net
+delicious.com/GFWbookmark
+.democrats.org
+||democrats.org
+.demosisto.hk
+||demosisto.hk
+||desc.se
+||dessci.com
+.destroy-china.jp
+||deutsche-welle.de
+||deviantart.com
+||deviantart.net
+||devio.us
+||devpn.com
+||devv.ai
+dfn.org
+dharmakara.net
+.dharamsalanet.com
+.diaoyuislands.org
+||diaoyuislands.org
+.difangwenge.org
+|http://digiland.tw/
+.diigo.com
+||diigo.com
+.dipity.com
+||directcreative.com
+!--||discogs.com
+!--@@||cdn.discogs.com
+.discuss.com.hk
+||discuss.com.hk
+.discuss4u.com
+||disp.cc
+.disqus.com
+||disqus.com
+.dit-inc.us
+||dit-inc.us
+||diyin.org
+.dizhidizhi.com
+||dizhuzhishang.com
+djangosnippets.org
+||dl-laby.jp
+||dlive.tv
+||dlsite.com
+||dlyoutube.com
+||dmc.nico
+||dmcdn.net
+.dnscrypt.org
+||dnscrypt.org
+||dns2go.com
+||dnssec.net
+doctorvoice.org
+
+!--DogFartNetwork
+.dogfartnetwork.com/tour
+gloryhole.com
+
+.dojin.com
+||dolc.de
+||dolf.org.hk
+.domain.club.tw
+.domaintoday.com.au
+chinese.donga.com
+dongtaiwang.com
+||dongtaiwang.com
+.dongtaiwang.net
+||dongtaiwang.net
+.dongyangjing.com
+||danbooru.donmai.us
+.dontfilter.us
+||doosho.com
+||doourbest.org
+.dorjeshugden.com
+.dotplane.com
+||dotplane.com
+||dotsub.com
+.dotvpn.com
+||dotvpn.com
+.doub.io
+||doub.io
+||doublethinklab.org
+||dougscripts.com
+||doujincafe.com
+|https://bartender.dowjones.com
+dphk.org
+dpp.org.tw
+||dpp.org.tw
+||dpr.info
+||dragonsprings.org
+!--||draw.io
+.dreamamateurs.com
+.drepung.org
+||drgan.net
+||dropbooks.tv
+||dropbox.com
+||dropboxapi.com
+||dropboxusercontent.com
+.drtuber.com
+.dscn.info
+|http://dscn.info
+.dstk.dk
+|http://dstk.dk
+||dtiblog.com
+||dtic.mil
+.duckduckgo.com
+||duckduckgo.com
+.duckload.com/download
+||duckmylife.com
+.duga.jp
+|http://duga.jp
+.duihua.org
+||duihua.org
+||duihuahrjournal.org
+duping.net
+||duplicati.com
+dupola.com
+dupola.net
+.dushi.ca
+||duyaoss.com
+||dvorak.org
+.dw.com
+||dw.com
+||dw.de
+.dw-world.com
+||dw-world.com
+.dw-world.de
+|http://dw-world.de
+www.dwheeler.com
+dwnews.com
+||dwnews.com
+dwnews.net
+||dwnews.net
+xys.dxiong.com
+||dynawebinc.com
+||dysfz.cc
+.dzze.com
+
+!--------------------EE-------------------------
+||e621.net
+||edx-cdn.org
+||everipedia.org
+||epochtimes.com.tw
+||etherscan.com
+||elconfidencial.com
+||e-classical.com.tw
+||e-gold.com
+.e-gold.com
+.e-hentai.org
+||e-hentai.org
+.e-hentaidb.com
+|http://e-hentaidb.com
+e-info.org.tw
+.e-zone.com.hk/discuz
+|http://e-zone.com.hk/discuz
+.e123.hk
+||e123.hk
+.earlytibet.com
+|http://earlytibet.com
+.earthcam.com
+.earthvpn.com
+||earthvpn.com
+||eastasiaforum.org
+.easternlightning.org
+.eastturkestan.com
+|http://www.eastturkistan.net/
+.eastturkistan-gov.org
+.eastturkistancc.org
+.eastturkistangovernmentinexile.us
+||eastturkistangovernmentinexile.us
+.easyca.ca
+.easypic.com
+||fnc.ebc.net.tw
+||news.ebc.net.tw
+.ebony-beauty.com
+ebookbrowse.com
+ebookee.com
+||ecfa.org.tw
+||ecimg.tw
+ecministry.net
+.economist.com
+bbs.ecstart.com
+edgecastcdn.net
+||edgecastcdn.net
+/twimg\.edgesuite\.net\/\/?appledaily/
+edicypages.com
+.edmontonchina.cn
+.edmontonservice.com
+edoors.com
+.edubridge.com
+||edubridge.com
+.edupro.org
+||eevpn.com
+efcc.org.hk
+.efukt.com
+|http://efukt.com
+||eic-av.com
+||eireinikotaerukai.com
+.eisbb.com
+.eksisozluk.com
+||eksisozluk.com
+electionsmeter.com
+||elgoog.im
+.elpais.com
+||elpais.com
+.eltondisney.com
+.emaga.com/info/3407
+emilylau.org.hk
+.emanna.com/chineseTraditional
+.empfil.com
+.emule-ed2k.com
+|http://emule-ed2k.com
+.emulefans.com
+|http://emulefans.com
+.emuparadise.me
+.enanyang.my
+!--.enanyang.my/news/20170502/%E7%BE%8E%E5%9B%BD%E4%B9%8B%E9%9F%B3%E5%A4%A7%E5%9C%B0%E9%9C%87%E3%80%8A%E8%8B%B9%E6%9E%9C%E3%80%8B%E7%8B%AC%E5%AE%B6
+||encrypt.me
+||enewstree.com
+.enfal.de
+||chinese.engadget.com
+englishforeveryone.org
+||englishfromengland.co.uk
+englishpen.org
+.enlighten.org.tw
+||entermap.com
+.episcopalchurch.org
+.epochhk.com
+||epochhk.com
+epochtimes-bg.com
+||epochtimes-bg.com
+epochtimes-romania.com
+||epochtimes-romania.com
+epochtimes.co.il
+||epochtimes.co.il
+epochtimes.co.kr
+||epochtimes.co.kr
+epochtimes.com
+||epochtimes.com
+.epochtimes.cz
+||epochtimes.de
+||epochtimes.fr
+||epochtimes.it
+||epochtimes.jp
+||epochtimes.ru
+||epochtimes.se
+||epochtimestr.com
+.epochweek.com
+||epochweek.com
+||epochweekly.com
+||eporner.com
+.equinenow.com
+erabaru.net
+.eracom.com.tw
+.eraysoft.com.tr
+.erepublik.com
+.erights.net
+||erights.net
+||ernestmandel.org
+||erodaizensyu.com
+||erodoujinlog.com
+||erodoujinworld.com
+||eromanga-kingdom.com
+||eromangadouzin.com
+.eromon.net
+|http://eromon.net
+.eroprofile.com
+.eroticsaloon.net
+.eslite.com
+||eslite.com
+.etaa.org.au
+.etadult.com
+etaiwannews.com
+||etizer.org
+||etokki.com
+||etsy.com
+.ettoday.net
+etvonline.hk
+.eucasino.com
+.eulam.com
+.eurekavpt.com
+||eurekavpt.com
+.euronews.com
+||euronews.com
+eeas.europa.eu/delegations/china/press_corner/all_news/news/2015/20150716_zh
+eeas.europa.eu/statements-eeas/2015/151022
+||apps.evozi.com
+||evschool.net
+||exblog.jp
+@@||www.exblog.jp
+.exchristian.hk
+||exchristian.hk
+|http://blog.excite.co.jp
+||exhentai.org
+||exmormon.org
+||expatshield.com
+.expecthim.com
+||expecthim.com
+experts-univers.com
+||exploader.net
+.expressvpn.com
+||expressvpn.com
+.extremetube.com
+eyevio.jp
+||eyevio.jp
+.eyny.com
+||eyny.com
+.ezpeer.com
+
+!--------------------FF-------------------------
+||feedly.com
+||fuckccp.xyz
+||fuckccp.com
+||furrybar.com
+||forbes.com
+||financialexpress.com
+||fast.com
+||factchecklab.org
+||ft.com
+||fuchsia.dev
+||freess.org
+||fril.jp
+||free.com.tw
+||froth.zone
+||fanbox.cc
+||free.bg
+||f-droid.org
+||facebookquotes4u.com
+.faceless.me
+||faceless.me
+|http://facesoftibetanselfimmolators.info
+||facesofnyfw.com
+||factpedia.org
+.faith100.org
+|http://faith100.org
+
+!--Enhancement:
+!--http://faithfuleye.com.detail.website/
+!--http://faithfuleye.com.ipaddress.com/
+.faithfuleye.com
+
+||faiththedog.info
+.fakku.net
+||fallenark.com
+.falsefire.com
+||falsefire.com
+falun-co.org
+falunart.org
+||falunasia.info
+|http://falunau.org
+.falunaz.net
+falundafa.org
+falundafa-dc.org
+||falundafa-florida.org
+||falundafa-nc.org
+||falundafa-pa.net
+falun-ny.net
+||falundafaindia.org
+falundafamuseum.org
+.falungong.club
+.falungong.de
+falungong.org.uk
+||falunhr.org
+faluninfo.de
+faluninfo.net
+.falunpilipinas.net
+familyfed.org
+.fangeming.com
+||fanglizhi.info
+||fangong.org
+fangongheike.com
+||fanhaolou.com
+.fanqiang.tk
+fanqianghou.com
+||fanqianghou.com
+.fanqiangzhe.com
+||fanqiangzhe.com
+||fantv.hk
+fapdu.com
+faproxy.com
+!--.farxian.com
+.fawanghuihui.org
+||famunion.com
+.fan-qiang.com
+fangeming.com
+.fanhaodang.com
+||fanqiang.network
+||fanswong.com
+.fanyue.info
+.farwestchina.com
+
+!--Fastly
+en.favotter.net
+!--||rnw.global.ssl.fastly.net
+.global.ssl.fastly.net
+||freetls.fastly.net
+nytimes.map.fastly.net
+||nytimes.map.fastly.net
+||fast.wistia.com
+
+||fastestvpn.com
+||fastssh.com
+||faststone.org
+favstar.fm
+||favstar.fm
+faydao.com/weblog
+||faz.net
+.fc2.com
+.fc2china.com
+.fc2cn.com
+||fc2cn.com
+fc2blog.net
+|http://uygur.fc2web.com/
+.fdc64.de
+.fdc64.org
+.fdc89.jp
+!--feedbooks.mobi
+||feeder.co
+||feelssh.com
+feer.com
+|http://feitianacademy.org
+.feitian-california.org
+||feixiaohao.com
+||feministteacher.com
+.fengzhenghu.com
+||fengzhenghu.com
+.fengzhenghu.net
+||fengzhenghu.net
+.fevernet.com
+|http://ff.im
+fffff.at
+fflick.com
+.ffvpn.com
+fgmtv.net
+.fgmtv.org
+.fhreports.net
+|http://fhreports.net
+.figprayer.com
+||figprayer.com
+.fileflyer.com
+||fileflyer.com
+|http://feeds.fileforum.com
+.fileserve.com/file
+fillthesquare.org
+filmingfortibet.org
+.filthdump.com
+.finchvpn.com
+||finchvpn.com
+!--findbook.tw
+findmespot.com
+||findyoutube.com
+||findyoutube.net
+.fingerdaily.com
+.firearmsworld.net
+|http://firearmsworld.net
+||relay.firefox.com
+||fireofliberty.info
+||fireofliberty.org
+.firetweet.io
+||firetweet.io
+||open.firstory.me
+||firstpost.com
+||firstrade.com
+||fish.audio
+!--||flagfox.net
+.flagsonline.it
+fleshbot.com
+.fleursdeslettres.com
+|http://fleursdeslettres.com
+||flgjustice.org
+
+!--||farm6.staticflickr.com
+!--.flickr.com/photos/46231077@N06
+!--.flickr.com/groups/aiweiwei
+!--.flickr.com/photos/digitalboy100
+!--.flickr.com/photos/fzhenghu
+!--.flickr.com/photos/lonelyfox
+!--flickr.com/photos/vanvan/529925157
+!--.flickr.com/photos/winterkanal
+!--.flickr.com/photos/zola
+||flickr.com
+||staticflickr.com
+
+flickrhivemind.net
+.flickriver.com
+.fling.com
+||flipkart.com
+||flog.tw
+||flowhongkong.net
+.flyvpn.com
+||flyvpn.com
+|http://cn.fmnnow.com
+blog.foolsmountain.com
+.forum4hk.com
+fangong.forums-free.com
+pioneer-worker.forums-free.com
+!--foursquare.com
+!--|http://4sq.com
+|https://ss*.4sqi.net
+video.foxbusiness.com
+|http://foxgay.com
+||fringenetwork.com
+||flecheinthepeche.fr
+.fochk.org
+||fochk.org
+||focustaiwan.tw
+.focusvpn.com
+||fofg.org
+.fooooo.com
+||fooooo.com
+||foreignaffairs.com
+||fountmedia.io
+||fourthinternational.org
+||foxsub.com
+foxtang.com
+.fpmt.org
+|http://fpmt.org
+.fpmt.tw
+.fpmt-osel.org
+||fpmtmexico.org
+||fqrouter.com
+||frank2019.me
+||franklc.com
+.freakshare.com
+|http://freakshare.com
+free-gate.org
+.free-hada-now.org
+free-proxy.cz
+.free.fr/adsl
+kineox.free.fr
+tibetlibre.free.fr
+||freebrowser.org
+.freechal.com
+.freedomhouse.org
+||freedomhouse.org
+.freedomsherald.org
+||freedomsherald.org
+||freegao.com
+freeilhamtohti.org
+||freekazakhs.org
+.freelotto.com
+||freelotto.com
+freeman2.com
+.freeopenvpn.com
+freemoren.com
+freemorenews.com
+freemuse.org/archives/789
+freenet-china.org
+freenewscn.com
+cn.freeones.com
+.freeoz.org/bbs
+||freeoz.org
+||freessh.us
+||freebeacon.com
+.freechina.news
+||freechinaweibo.com
+.freedomcollection.org/interviews/rebiya_kadeer
+.freeforums.org
+||freenetproject.org
+.freeoz.org
+.freetibet.net
+||freetibet.org
+.freetibetanheroes.org
+|http://freetibetanheroes.org
+||freetribe.me
+.freeviewmovies.com
+.freevpn.me
+|http://freevpn.me
+||freewallpaper4.me
+.freewebs.com
+.freewechat.com
+||freewechat.com
+freeweibo.com
+||freeweibo.com
+.freexinwen.com
+||freezhihu.org
+||friendfeed.com
+||friends-of-tibet.org
+.friendsoftibet.org
+||friendsoftibet.org
+freechina.net
+|http://www.zensur.freerk.com/
+freevpn.nl
+freeyellow.com
+hk.frienddy.com/hk
+|http://adult.friendfinder.com/
+.fring.com
+||fring.com
+.fromchinatousa.net
+||frommel.net
+.frontlinedefenders.org
+||frontlinedefenders.org
+.frootvpn.com
+||frootvpn.com
+||fscked.org
+.fsurf.com
+.ftv.com.tw
+||ftv.com.tw
+||ftvnews.com.tw
+fucd.com
+fuckgfw.org
+.fulione.com
+|https://fulione.com
+||fullerconsideration.com
+||fullservicegame.com
+.funf.tw
+funp.com
+.fuq.com
+.furhhdl.org
+||furinkan.com
+.futurechinaforum.org
+||futuremessage.org
+.fux.com
+.fuyindiantai.org
+.fuyu.org.tw
+||fw.cm
+.fxcm-chinese.com
+||fxcm-chinese.com
+
+!--------------------GG-------------------------
+||gitlab.net
+|http://gmp4.com
+||getsession.org
+||gdaily.org
+||gfwatch.org
+||go-to-zlibrary.se
+||gitbook.io
+.g6hentai.com
+|http://g6hentai.com
+||g-queen.com
+||gab.com
+||gabocorp.com
+.gaeproxy.com
+.gaforum.org
+.gagaoolala.com
+||gagaoolala.com
+.galaxymacau.com
+||galenwu.com
+.galstars.net
+||game735.com
+gamebase.com.tw
+gamejolt.com
+|http://wiki.gamerp.jp
+||gamer.com.tw
+.gamer.com.tw
+.gamez.com.tw
+||gamez.com.tw
+.gamousa.com
+.gaoming.net
+||gaoming.net
+ganges.com
+||ganjing.com
+||ganjingworld.com
+.gaopi.net
+|http://gaopi.net
+gardennetworks.com
+||gardennetworks.org
+!--IP of Garden Network
+72.52.81.22
+||gartlive.com
+||gather.com
+.gatherproxy.com
+.gaybubble.com
+.gaycn.net
+.gayhub.com
+||gaymap.cc
+.gaymenring.com
+.gaytube.com
+!--||gaytube.com
+||images-gaytube.com
+.gaywatch.com
+|http://gaywatch.com
+.gazotube.com
+||gazotube.com
+||gcc.org.hk
+||gclubs.com
+||gcmasia.com
+.gcpnews.com
+|http://gcpnews.com
+gdzf.org
+||geek-art.net
+geekerhome.com/2010/03/xixiang-project-cross-gfw
+.gekikame.com
+|http://gekikame.com
+.gelbooru.com
+|http://gelbooru.com
+||generated.photos
+||genius.com
+!--||genuitec.com
+.geocities.co.jp
+.geocities.com/SiliconValley/Circuit/5683/download.html
+hk.geocities.com
+geocities.jp
+||geph.io
+.gerefoundation.org
+||getastrill.com
+.getchu.com
+.getcloak.com
+||getcloak.com
+||getfoxyproxy.org
+||getgom.com
+.geti2p.net
+||geti2p.net
+getiton.com
+.getjetso.com/forum
+.getlantern.org
+||getlantern.org
+||getmalus.com
+.getsocialscope.com
+||getsync.com
+||gettr.com
+gfbv.de
+.gfsale.com
+||gfsale.com
+.gfw.press
+||gfw.press
+||gfw.report
+.ggssl.com
+||ggssl.com
+!--||ghost.org
+.ghostpath.com
+||ghostpath.com
+||ghut.org
+.giantessnight.com
+|http://giantessnight.com
+.gifree.com
+||giga-web.jp
+tw.gigacircle.com
+gigporno.ru
+||girlbanker.com
+.git.io
+||git.io
+|http://softwaredownload.gitbooks.io
+||raw.githack.com
+
+!---GitHub---
+||github.blog
+||github.com
+||githubcopilot.com
+!--github.com/getlantern
+!--|https://gist.github.com
+!--http://cthlo.github.io/hktv
+!--hahaxixi.github.io
+!--|https://hahaxixi.github.io
+!--||haoel.github.io
+!--|http://onionhacker.github.io
+!--||rg3.github.io
+!--||sikaozhe1997.github.io
+!--||sodatea.github.io
+!--||terminus2049.github.io
+!--||toutyrater.github.io
+!--wsgzao.github.io
+!--|https://wsgzao.github.io
+.github.io
+||github.io
+||githubusercontent.com
+||githubassets.com
+
+.gizlen.net
+||gizlen.net
+.gjczz.com
+||gjczz.com
+||glarity.app
+||globaljihad.net
+globalmediaoutreach.com
+globalmuseumoncommunism.org
+||globalrescue.net
+.globaltm.org
+.globalvoicesonline.org
+||globalvoicesonline.org
+||globalvpn.net
+.glock.com
+gluckman.com/DalaiLama
+||gmgard.com
+|http://www.gmiddle.com
+|http://www.gmiddle.net
+.gmll.org
+||suche.gmx.net
+||gnci.org.hk
+||gnews.org
+||goagent.biz
+||godaddy.com
+godfootsteps.org
+||godfootsteps.org
+godsdirectcontact.co.uk
+.godsdirectcontact.org
+godsdirectcontact.org.tw
+.godsimmediatecontact.com
+||gofundme.com
+||gohappy.com.tw
+.gokbayrak.com
+.goldbet.com
+||goldbetsports.com
+||golden-ages.org
+||goldeneyevault.com
+.goldenfrog.com
+||goldenfrog.com
+.goldstep.net
+||goldwave.com
+||gongm.in
+blog.goo.ne.jp/duck-tail_2009
+good.news
+.gooday.xyz
+||gooday.xyz
+||goodhope.school
+||goodnewsnetwork.org
+.goodreads.com
+||goodreads.com
+.goodreaders.com
+||goodreaders.com
+.goodtv.com.tw
+.goodtv.tv
+||goofind.com
+.gopetition.com
+||gopetition.com
+||goreforum.com
+||gotquestions.org
+.gotrusted.com
+||gotrusted.com
+||gotw.ca
+||grammaly.com
+grandtrial.org
+.graphis.ne.jp
+||graphis.ne.jp
+||graphql.org
+||gravatar.com
+greatfirewall.biz
+.greatfirewallofchina.org
+||greatfirewallofchina.org
+.greenparty.org.tw
+||greenpeace.org
+.greenreadings.com/forum
+||greasyfork.org
+greatroc.org
+greatzhonghua.org
+.greenpeace.com.tw
+.greenvpn.net
+||greenvpn.net
+.greenvpn.org
+||grindr.com
+||ground.news
+gs-discuss.com
+||gsearch.media
+||gtricks.com
+guancha.org
+.guardster.com
+.gun-world.net
+gunsandammo.com
+||gutteruncensored.com
+||gvm.com.tw
+||gwins.org
+.gzm.tv
+||gzone-anime.info
+
+!-------------GHS-----
+!-||feeds.cbsnews.com
+!-||www.chinesealbumart.com
+||clementine-player.org
+!-||clemesha.org
+!-||www.cloudgirlfriend.com
+!-||cocoawithlove.com
+!-||blog.controlspace.org
+!-D
+!-||www.dailygyan.com
+!-||dailytodo.org
+!-||blog.danmarner.com
+!-||github.danmarner.com
+!-||design-seeds.com
+!-||designers-artists.com
+!-||mail.diyang.org
+!-||blog.doughellmann.com
+!-||downforeveryoneorjustme.com
+!-||droidsecurity.com
+!-||www.dropmocks.com
+!-||dumblittleman.com
+!-E
+echofon.com
+!-||echofon.com
+!-||epc-jav.com
+!-||everdark.info
+!-||evhead.com
+!-F
+!-||facilelogin.com
+!-||*.fatduck.org
+!-||blog.fdcn.org
+!-||fftogo.com
+!-||flightsimtalk.com
+!-||mclee.foolme.net
+!-||www.frienddeck.com
+!-||fringespoilers.com
+!-||fringetelevision.com
+!-||funpea.com
+!-G
+!-||blog.gatein.org
+!-||feeds.gawker.com
+!-||geektang.com
+!-||geohot.us
+!-||getaround.com
+!-||gmer.net
+!-||www.gmote.org
+!-||blog.go2web20.net
+!-||google-melange.com
+!-||fame.gonzolabs.org
+!-||govecn.org
+!-||gqueues.com
+!-||graphycalc.com
+!-||blog.growlforwindows.com
+!-H
+!-||hcm.com.tw
+!-||blog.headius.com
+!-||hogbaysoftware.com
+!-||blog.hotot.org
+!-||feeds.howstuffworks.com
+!-||huhaitai.com
+!-||blog.humanrightsfirst.org
+!-I
+!-||site.icu-project.org
+!-||igorware.com
+!-||ihas1337code.com
+!-||inknouveau.com
+!-||inote.tw
+!-||ironhelmet.com
+!-||iwfwcf.com
+!-J
+!-||blog.jangmt.com
+!-||blog.jayfields.com
+!-||blog.joint.net
+!-||blog.jsquaredjavascript.com
+!-||blog.jtbworld.com
+!-K
+!-||kathyschwalbe.com
+!-||tomatovpn.keithmoyer.com
+!-||www.keithmoyer.com
+!-||kendalvandyke.com
+!-||blog.kengao.tw
+!-||log.keso.cn
+!-||www.khanacademy.org
+||www.klip.me
+!-||usbloadergx.koureio.net
+!-||blog.kowalczyk.info
+!-L
+!-||labyrinth2.com
+!-||larsgeorge.com
+!-||blog.lastpass.com
+!-||docs.latexlab.org
+!-||leanessays.com
+!-||blog.lidaobing.info
+!-||log.lightory.net
+!-||feeds.limi.net
+!-||www.liteapplications.com
+!-||blog.liukangxu.info
+!-||twitter.liukangxu.info
+!-||oasisnewsroom.live4ever.us
+!-||www.lockergnome.com
+!-||locql.com
+@@||site.locql.com
+!-||feeds.loiclemeur.com
+!-||blog.louisgray.com
+!-M
+!-||madebysofa.com
+!-||mademoisellerobot.com
+!-||masamixes.com
+!-||www.metamuse.net
+!-||blog.metasploit.com
+!-||milazi.com
+!-||www.miniweather.com
+!-||twitter.missiu.com
+!-||plurktop-button.mmdays.com
+!-||feeds.mobileread.com
+!-||www.modernizr.com
+!-||www.modk.it
+!-||mytwishirt.com
+!-N
+!-||blog.netflix.com
+!-||blog.nihilogic.dk
+!-||ntlk.org
+!-||nvquan.org
+!-||nogoodatcoding.com
+!-||blog.notdot.net
+!-||www.notify.io
+!-O
+!-||blog.obvious.com
+!-||onebigfluke.com
+!-||overstimulate.com
+!-P
+!-||pcgeekblog.com
+!-||feeds.pdfchm.net
+!-||feeds.people.com
+!-||blog.persistent.info
+!-||chrome.plantsvszombies.com
+!-||portablesoft.org.ru
+!-||prasannatech.net
+!-||talk.news.pts.org.tw
+!-||python-excel.org
+!-Q
+!-R
+!-||r-chart.com
+!-||rameshsubramanian.org
+!-||rapid.pk
+!-||blog.renanse.com
+!-||robertmao.com
+!-||www.romeo-foxtrot.com
+!-S
+!-||salmiyuck.com
+!-||samsal.com
+!-||blog.seeminglee.com
+!-||blog.sflow.com
+!-||blog.sigfpe.com
+!-||simpletext.ws
+!-||www.skulpt.org
+!-||rss.slashdot.org
+!-||snippetsapp.com
+!-||w.sns.ly
+!-||www.socialnmobile.com
+!-||www.socialwhois.com
+!-||spiritjb.org
+!-||ssbook.com
+!-||sshforwarding.com
+!-||stationeria.com
+||stephaniered.com
+!-||sunjidong.net
+!-||syniumsoftware.com
+@@||download.syniumsoftware.com
+!-T
+!-||tagxedo.com
+!-||blog.tatoeba.org
+!-||www.techfob.com
+!-||teachparentstech.org
+!-||the8pen.com
+!-||theiphonewiki.com
+!-||blog.thesilentnumber.me
+!-||thesponty.com
+!-||theultralinx.com
+!-||blog.think-async.com
+!-||tornadoweb.org
+!-||transparentuptime.com
+!-||triangulationblog.com
+!-||blog.tsunanet.net
+!-||en.tuxero.com
+!-||twazzup.com
+!-||tweetswell.com
+!-||twibes.com
+!-||art.twgg.org
+!-||twivert.com
+!-U
+|http://ub0.cc
+!-||jonny.ubuntu-tw.net
+!-||blog.umonkey.net
+!-V
+!-||tp.vbap.com.au
+!-||www.virtuousrom.com
+!-||blog.visibotech.com
+!-W
+!-||waveprotocol.org
+!-||www.wavesandbox.com
+!-||webfee.org.ru
+!-||blog.webmproject.org
+!-||webupd8.org
+!-||www.whatbrowser.org
+!-||www.wheredoyougo.net
+!-||willhains.com
+!-||feeds.wired.com
+!-||wisemapping.org
+wozy.in
+!-||wozy.in/
+!-||blog.wundercounter.com
+!-X
+!-||xdelta.org
+!-||xiaogaozi.org
+!-||xilou.us
+!-||xzy.org.ru
+!-Y
+!-||yooper.be
+!-||tsong.yunxi.net
+!-Z
+
+gospelherald.com
+||gospelherald.com
+|http://hk.gradconnection.com/
+greatfire.org
+||greatfire.org
+greatfirewallofchina.org
+||gtv.org
+||gtv1.org
+.gu-chu-sum.org
+|http://gu-chu-sum.org
+.guaguass.com
+|http://guaguass.com
+.guangming.com.my
+guishan.org
+||guishan.org
+.gumroad.com
+||gumroad.com
+||gunsamerica.com
+guruonline.hk
+|http://gvlib.com
+.gyalwarinpoche.com
+.gyatsostudio.com
+
+!--------------------HH-------------------------
+||herominers.com
+||hinet.net
+||hindustantimes.com
+||hanime1.me
+||halktv.com.tr
+||haiwaikan.com
+||home.saxo
+||hoy.tv
+.h528.com
+.h5dm.com
+.h5galgame.me
+||h-china.org
+.h-moe.com
+|http://h-moe.com
+h1n1china.org
+.hacken.cc/bbs
+.hacker.org
+||hackmd.io
+||hackthatphone.net
+hahlo.com
+||haijiao.com
+||hakkatv.org.tw
+.handcraftedsoftware.org
+|http://bbs.hanminzu.org/
+.hao.news/news
+|http://ae.hao123.com
+|http://ar.hao123.com
+|http://br.hao123.com
+|http://en.hao123.com
+|http://id.hao123.com
+|http://jp.hao123.com
+|http://ma.hao123.com
+|http://mx.hao123.com
+|http://sa.hao123.com
+|http://th.hao123.com
+|http://tw.hao123.com
+|http://vn.hao123.com
+|http://hk.hao123img.com
+|http://ld.hao123img.com
+.haproxy.org
+||hardsextube.com
+||b.hatena.ne.jp
+have8.com
+@@||haygo.com
+.hclips.com
+||hdtvb.net
+.hdzog.com
+|http://hdzog.com
+||ordns.he.net
+||heartyit.com
+.heavy-r.com
+.hec.su
+|http://hec.su
+.hecaitou.net
+||hecaitou.net
+.hechaji.com
+||hechaji.com
+||heeact.edu.tw
+.hegre-art.com
+|http://hegre-art.com
+||cdn.helixstudios.net
+||helloandroid.com
+||helloqueer.com
+.hentai.to
+.hellouk.org/forum/lofiversion
+.helpeachpeople.com
+||helpeachpeople.com
+||helpster.de
+.helpzhuling.org
+hentaitube.tv
+.hentaivideoworld.com
+
+!###########--Heroku--##########
+!--||getcloudapp.com
+!--||cl.ly
+!--@@||f.cl.ly
+!--EC2 DNS Poisoned
+||id.heroku.com
+||herokuapp.com
+
+||heqinglian.net
+||heritage.org
+.hexieshe.com
+||hexieshe.com
+||hexieshe.xyz
+!--Google employee within Google IP
+||hexxeh.net
+||heyuedi.com
+.heyzo.com
+.hgseav.com
+.hhdcb3office.org
+.hhthesakyatrizin.org
+hi-on.org.tw
+||hiccears.com
+hidden-advent.org
+||hidden-advent.org
+hidecloud.com/blog/2008/07/29/fuck-beijing-olympics.html
+||hide.me
+.hideipvpn.com
+||hideipvpn.com
+.hideman.net
+||hideman.net
+hideme.nl
+||hidemy.name
+.hidemyass.com
+||hidemyass.com
+hidemycomp.com
+||hidemycomp.com
+.higfw.com
+highpeakspureearth.com
+||highrockmedia.com
+||hiitch.com
+||hikinggfw.org
+.hilive.tv
+.himalayan-foundation.org
+||himalayan-foundation.org
+himalayanglacier.com
+.himemix.com
+||himemix.com
+.hitomi.la
+|http://hitomi.la
+.hiwifi.com
+@@||hiwifi.com
+hizbuttahrir.org
+hizb-ut-tahrir.info
+hizb-ut-tahrir.org
+.hjclub.info
+.hk-pub.com/forum
+|http://hk-pub.com
+.hk01.com
+||hk01.com
+||hkacg.com
+||hkacg.net
+.hkatvnews.com
+hkbc.net
+.hkbf.org
+.hkbookcity.com
+||hkbookcity.com
+||hkchronicles.com
+.hkchurch.org
+hkci.org.hk
+.hkcmi.edu
+||hkcnews.com
+||hkcoc.com
+hkday.net
+.hkdailynews.com.hk/china.php
+||hkdc.us
+hkdf.org
+.hkej.com
+.hkepc.com/forum/viewthread.php?tid=1153322
+||hket.com
+||hkfaa.com
+hkfront.org
+m.hkgalden.com
+|https://m.hkgalden.com
+||hkgpao.com
+.hkheadline.com*blog
+.hkheadline.com/instantnews
+hkhkhk.com
+hkhrc.org.hk
+hkjc.com
+.hkjp.org
+.hklft.com
+.hklts.org.hk
+||hklts.org.hk
+||hkmap.live
+||hkopentv.com
+||hkpeanut.com
+hkptu.org
+.hkreporter.com
+||hkreporter.com
+.hmv.co.jp/
+hnjhj.com
+||hnjhj.com
+.hnntube.com
+||hojemacau.com.mo
+||hola.com
+||hola.org
+holyspiritspeaks.org
+||holyspiritspeaks.org
+.homeperversion.com
+|http://homeservershow.com
+|http://old.honeynet.org/scans/scan31/sub/doug_eric/spam_translation.html
+.hongkongfp.com
+||hongkongfp.com
+hongmeimei.com
+||hongzhi.li
+||honven.xyz
+.hootsuite.com
+||hootsuite.com
+||hoover.org
+.hopto.org
+.hornygamer.com
+.hornytrip.com
+|http://hornytrip.com
+||horrorporn.com
+||hostloc.com
+||hotair.com
+.hotav.tv
+.hotels.cn
+hotfrog.com.tw
+hotgoo.com
+hotpot.hk
+.hotshame.com
+||hotspotshield.com
+||hottg.com
+.hotvpn.com
+||hotvpn.com
+||howtoforge.com
+||hoxx.com
+||hpjav.com
+.hqcdp.org
+||hqcdp.org
+||hqjapanesesex.com
+hqmovies.com
+.hrcchina.org
+.hrea.org
+.hrichina.org
+||hrichina.org
+||hrntt.org
+.hrtsea.com
+.hrw.org
+||hrw.org
+hrweb.org
+||hsex.men
+||hsjp.net
+||hsselite.com
+||hst.net.tw
+.hstern.net
+.hstt.net
+.htkou.net
+||htkou.net
+.huaglad.com
+||huaglad.com
+.huanghuagang.org
+||huanghuagang.org
+.huangyiyu.com
+.huaren.us
+||huaren.us
+.huaren4us.com
+.huashangnews.com
+|http://huashangnews.com
+bbs.huasing.org
+huaxiabao.org
+huaxin.ph
+||huayuworld.org
+||huffingtonpost.com
+||huffpost.com
+||huggingface.co
+||hugoroy.eu
+||huhaitai.com
+||huhamhire.com
+.huhangfei.com
+||huhangfei.com
+.hulkshare.com
+||humanparty.me
+||humanrightspressawards.org
+||hung-ya.com
+||huping.net
+hurgokbayrak.com
+.hurriyet.com.tr
+.hut2.ru
+||hutianyi.net
+hutong9.net
+huyandex.com
+.hwadzan.tw
+||hwayue.org.tw
+||hxwk.org
+hxwq.org
+||hyperrate.com
+||hypothes.is
+ebook.hyread.com.tw
+||ebook.hyread.com.tw
+
+!--------------------II-------------------------
+||ipify.org
+@@||*.ipify.org
+||itiger.com
+||itch.io
+||infura.io
+||president.ir
+||gov.ir
+||irna.ir
+||arvanstorage.ir
+||irangov.ir
+||india.com
+||indiatoday.in
+||invidio.us
+||improd.works
+||illawarramercury.com.au
+||imago-images.com
+||i2p2.de
+||i818hk.com
+.i-cable.com
+.i-part.com.tw
+.iamtopone.com
+iask.ca
+||iask.ca
+.iav19.com
+||iavian.net
+ibiblio.org/pub/packages/ccic
+ibros.org
+.ibvpn.com
+||ibvpn.com
+icams.com
+||icedrive.net
+.icij.org
+||icij.org
+||icl-fi.org
+.icoco.com
+||icoco.com
+
+!--38.103.165.50
+||furbo.org
+!--||iconfactory.com
+
+||iconpaper.org
+!-- Google Pages
+||icu-project.org
+w.idaiwan.com/forum
+idemocracy.asia
+.identi.ca
+||identi.ca
+||idiomconnection.com
+|http://www.idlcoyote.com
+||idope.se
+.idouga.com
+.idv.tw
+.ied2k.net
+.ienergy1.com
+||ift.tt
+.ifcss.org
+||ifcss.org
+ifjc.org
+.ift.tt
+|http://ift.tt
+||ifreewares.com
+||igcd.net
+.igfw.net
+||igfw.net
+.igmg.de
+.igotmail.com.tw
+||igvita.com
+.ihao.org/dz5
+||iicns.com
+.ikstar.com
+||ilhamtohtiinstitute.org
+||illusionfactory.com
+||ilove80.be
+||im88.tw
+||imgchili.net
+.imageab.com
+.imagefap.com
+||imagefap.com
+||imageflea.com
+||imageglass.org
+||imageshack.us
+||imagevenue.com
+||imagezilla.net
+.imb.org
+|http://imb.org
+
+!--IMDB
+|http://www.imdb.com/name/nm0482730
+.imdb.com/title/tt0819354
+.imdb.com/title/tt1540068
+.imdb.com/title/tt4908644
+
+.img.ly
+||img.ly
+||imgasd.com
+.imgur.com
+||imgur.com
+.imkev.com
+||imkev.com
+.imlive.com
+.immoral.jp
+impact.org.au
+in99.org
+in-disguise.com
+.incapdns.net
+.incloak.com
+||incloak.com
+||incredibox.fr
+||independent.co.uk
+||indiablooms.com
+||indiandefensenews.in
+||indianarrative.com
+||timesofindia.indiatimes.com
+.indiemerch.com
+||indiemerch.com
+||info-graf.fr
+website.informer.com
+||inherit.live
+||initiativesforchina.org
+||inkbunny.net
+||inkui.com
+||inmediahk.net
+||inmediahk.net
+||inoreader.com
+||inote.tw
+||insecam.org
+|http://insecam.org
+||inside.com.tw
+||insidevoa.com
+||institut-tibetain.org
+||interactivebrokers.com
+||internet.org
+internetdefenseleague.org
+||internetfreedom.org
+!--||interpol.int
+||internetpopculture.com
+.inthenameofconfuciusmovie.com
+||inthenameofconfuciusmovie.com
+inxian.com
+||inxian.com
+!--||ipcf.org.tw
+||ipdefenseforum.com
+||ipfire.org
+||iphone4hongkong.com
+||iphonetaiwan.org
+||iphonix.fr
+||ipicture.ru
+.ipjetable.net
+||ipjetable.net
+.ipobar.com/read.php?
+ipoock.com/img
+.iportal.me
+|http://iportal.me
+||ippotv.com
+.ipredator.se
+||ipredator.se
+.iptv.com.tw
+||iptvbin.com
+||ipvanish.com
+iredmail.org
+chinese.irib.ir
+||ironpython.net
+.ironsocket.com
+||ironsocket.com
+.is.gd
+||ishr.ch
+.islahhaber.net
+.islam.org.hk
+|http://islam.org.hk
+.islamawareness.net/Asia/China
+.islamhouse.com
+||islamhouse.com
+.islamicity.com
+.islamicpluralism.org
+.islamtoday.net
+.isaacmao.com
+||isaacmao.com
+||isgreat.org
+||ismaelan.com
+.ismalltits.com
+||ismprofessional.net
+isohunt.com
+||israbox.com
+.issuu.com
+||issuu.com
+.istars.co.nz
+oversea.istarshine.com
+||oversea.istarshine.com
+.istockphoto.com
+isunaffairs.com
+isuntv.com
+||isupportuyghurs.org
+||italiatibet.org
+||itemfix.com
+ithelp.ithome.com.tw
+||itshidden.com
+.itsky.it
+.itweet.net
+|http://itweet.net
+.iu45.com
+.iuhrdf.org
+||iuhrdf.org
+.iuksky.com
+.ivacy.com
+||ivacy.com
+||ivonblog.com
+.ivpn.net
+||ivpn.net
+||iwara.tv
+||ixquick.com
+.ixxx.com
+.iyouport.com
+||iyouport.com
+||iyouport.org
+.izaobao.us
+.izles.net
+.izlesem.org
+
+!--------------------JJ-------------------------
+||justmysockscn.com
+||justmysocks.net
+||jav321.com
+||javdb.com
+||jifangge.com
+||j.mp
+||jable.tv
+||blog.jackjia.com
+jamaat.org
+||jamestown.org
+||jamyangnorbu.com
+||jan.ai
+||japan-whores.com
+||japanhdv.com
+.jav.com
+.jav101.com
+.jav68.tv
+.javakiba.org
+||javakiba.org
+.javbus.com
+||javbus.com
+||javfinder.ai
+||javfor.me
+.javhd.com
+.javhip.com
+.javmobile.net
+||javmobile.net
+.javmoo.com
+.javseen.com
+||javseen.com
+jbtalks.cc
+jbtalks.com
+jbtalks.my
+.jdwsy.com
+jeanyim.com
+||jgoodies.com
+.jiangweiping.com
+||jiangweiping.com
+||jiaoyou8.com
+||jichangtj.com
+.jiehua.cz
+||hk.jiepang.com
+||tw.jiepang.com
+jieshibaobao.com
+.jigglegifs.com
+56cun04.jigsy.com
+daodu14.jigsy.com
+specxinzl.jigsy.com
+wlcnew.jigsy.com
+.jihadology.net
+|http://jihadology.net
+.jingsim.org
+zhao.jinhai.de
+jingpin.org
+||jingpin.org
+jinpianwang.com
+||jinrizhiyi.news
+||jitouch.com
+jjgirls.com
+.jkb.cc
+|http://jkb.cc
+jkforum.net
+||jma.go.jp
+||jmsc.hku.hk
+.jmscult.com
+|http://jmscult.com
+||joachims.org
+.sunwinism.joinbbs.net
+||joinclubhouse.com
+||jornaldacidadeonline.com.br
+.journalchretien.net
+||journalofdemocracy.org
+.joymiihub.com
+.joyourself.com
+jpopforum.net
+||jsdelivr.net
+||fiddle.jshell.net
+!--Doamin parking
+.juhuaren.com
+||juliereyc.com
+||junauza.com
+.june4commemoration.org
+||bbs.junglobal.net
+.juoaa.com
+|http://juoaa.com
+justfreevpn.com
+||justhost.ru
+justpaste.it
+||justmysocks1.net
+justtristan.com
+juziyue.com
+||juziyue.com
+||jwmusic.org
+@@||music.jwmusic.org
+||cdn.jwplayer.com
+.jyxf.net
+
+!--------------------KK-------------------------
+||kingkong.com.tw
+||kanald.com.tr
+||kpkuang.org
+||ka-wai.com
+||kadokawa.co.jp
+.kagyu.org
+||kagyu.org.za
+.kagyumonlam.org
+.kagyunews.com.hk
+.kagyuoffice.org
+||kagyuoffice.org
+||kagyuoffice.org.tw
+.kaiyuan.de
+.kakao.com
+||kakao.com
+.kankan.today
+.kannewyork.com
+||kannewyork.com
+.kanshifang.com
+||kanshifang.com
+||kantie.org
+kanzhongguo.com
+kanzhongguo.eu
+.kaotic.com
+||kaotic.com
+||karayou.com
+.karmapa.org
+.karmapa-teachings.org
+||kawase.com
+.kba-tx.org
+.kcoolonline.com
+.kebrum.com
+||kebrum.com
+.kechara.com
+.keepandshare.com/visit/visit_page.php?i=688154
+!--||keepvid.com
+.keezmovies.com
+.kenengba.com
+||kenengba.com
+.kepard.com
+||kepard.com
+wiki.keso.cn/Home
+||keycdn.com
+.khabdha.org
+||kichiku-doujinko.com
+.kik.com
+||kik.com
+.kindleren.com
+|http://kindleren.com
+|http://www.kindleren.com
+.kingdomsalvation.org
+||kingdomsalvation.org
+kinghost.com
+!--.kingstone.com.tw/book/
+||kingstone.com.tw
+.kink.com
+.kinokuniya.com
+||kinokuniya.com
+killwall.com
+||killwall.com
+||kindle4rss.com
+||kinmen.travel
+.kir.jp
+.kissbbao.cn
+|http://kiwi.kz
+||kk-whys.co.jp
+!--||kmt.org.tw
+.kmuh.org.tw
+.knowledgerush.com/kr/encyclopedia
+||knowyourmeme.com
+.kobo.com
+||kobo.com
+.kobobooks.com
+||kobobooks.com
+||kodingen.com
+@@||www.kodingen.com
+||kompozer.net
+.konachan.com
+||konachan.com
+.kone.com
+||koolsolutions.com
+.koornk.com
+||koornk.com
+||koranmandarin.com
+.korenan2.com
+||kqes.net
+|http://gojet.krtco.com.tw
+.ksdl.org
+.ksnews.com.tw
+||ktzhk.com
+||kuaichedao.co
+.kui.name/event
+||kukuku.uk
+kun.im
+.kurashsultan.com
+||kurtmunger.com
+kusocity.com
+||kwcg.ca
+.kwongwah.com.my
+||kwongwah.com.my
+.kxsw.life
+||kxsw.life
+.kyofun.com
+kyohk.net
+||kzaobao.com
+.kzeng.info
+||kzeng.info
+
+!--------------------LL-------------------------
+||luckymobile.ca
+||ludepress.com
+||lingualeo.com
+||ldplayer.tw
+||ldplayer.net
+||ltn.com.tw
+||litenews.hk
+||www.lorenzetti.com.br
+||linktr.ee
+la-forum.org
+ladbrokes.com
+||labiennale.org
+.lagranepoca.com
+||lagranepoca.com
+||lala.im
+.lalulalu.com
+.lama.com.tw
+||lama.com.tw
+.lamayeshe.com
+|http://lamayeshe.com
+.lamnia.co.uk
+||lamnia.co.uk
+lamrim.com
+||landofhope.tv
+.lanterncn.cn
+|http://lanterncn.cn
+.lantosfoundation.org
+.laod.cn
+|http://laod.cn
+laogai.org
+||laogai.org
+||laogairesearch.org
+laomiu.com
+.laoyang.info
+|http://laoyang.info
+.laqingdan.net
+||laqingdan.net
+||larsgeorge.com
+.lastcombat.com
+|http://lastcombat.com
+||lastfm.es
+latelinenews.com
+||lausan.hk
+||le-vpn.com
+.leafyvpn.net
+||leafyvpn.net
+||ledger.com
+leeao.com.cn/bbs/forum.php
+!--||leecheukyan.org
+lefora.com
+||left21.hk
+.legalporno.com
+.legsjapan.com
+leisurecafe.ca
+||lematin.ch
+.lemonde.fr
+||lenwhite.com
+blog.lester850.info
+||lesoir.be
+.letou.com
+letscorp.net
+||letscorp.net
+!69.16.175.42
+||cdn.assets.lfpcontent.com
+.lhakar.org
+|http://lhakar.org
+.lhasocialwork.org
+.liangyou.net
+||liangyou.net
+.lianyue.net
+||liaowangxizang.net
+.liaowangxizang.net
+||liberal.org.hk
+||libertysculpturepark.com
+||libertytimes.com.tw
+||libredd.it
+||lighten.org.tw
+||lightnovel.cn
+||lilaoshibushinilaoshi.com
+limiao.net
+linkuswell.com
+abitno.linpie.com/use-ipv6-to-fuck-gfw
+||line.me
+||line-apps.com
+.linglingfa.com
+||lingvodics.com
+.link-o-rama.com
+|http://link-o-rama.com
+||linkedin.com
+.linkideo.com
+||linux.org.hk
+linuxtoy.org/archives/installing-west-chamber-on-ubuntu
+.lionsroar.com
+.lipuman.com
+||liquidvpn.com
+||greatfire.us7.list-manage.com
+||listennotes.com
+||listentoyoutube.com
+listorious.com
+.liu-xiaobo.org
+.liuhanyu.com
+.liuxiaobo.net
+||liuxiaobo.net
+liuxiaotong.com
+||liuxiaotong.com
+.livedoor.jp
+.liveleak.com
+||liveleak.com
+||livemint.com
+livestream.com
+||livestream.com
+||livingstream.com
+||livevideo.com
+.livevideo.com
+lizhizhuangbi.com
+lkcn.net
+||chat.lmsys.org
+.load.to
+.lobsangwangyal.com
+.localdomain.ws
+||localdomain.ws
+localpresshk.com
+||lockestek.com
+secure.logmein.com
+||secure.logmein.com
+||logos.com.hk
+.londonchinese.ca
+.longhair.hk
+longmusic.com
+||longtermly.net
+||lookpic.com
+.looktoronto.com
+|http://looktoronto.com
+.lotsawahouse.org/tibetan-masters/fourteenth-dalai-lama
+.lotuslight.org.tw
+hkreporter.loved.hk
+.lrip.org
+||lrip.org
+.lsd.org.hk
+||lsd.org.hk
+lsforum.net
+.lsm.org
+||lsm.org
+.lsmchinese.org
+||lsmchinese.org
+.lsmkorean.org
+||lsmkorean.org
+.lsmradio.com/rad_archives
+.lsmwebcast.com
+.ltn.com.tw
+||ltn.com.tw
+||luckydesigner.space
+.luke54.com
+.luke54.org
+.lupm.org
+||lupm.org
+||lushstories.com
+luxebc.com
+lvhai.org
+||lvhai.org
+||lvv2.com
+.lyfhk.net
+|http://lyfhk.net
+||lzjscript.com
+.lzmtnews.org
+||lzmtnews.org
+
+!--------------------MM-------------------------
+||mcusercontent.com
+||metamask.io
+||missav.ws
+||news.mt.co.kr
+||musixmatch.com
+||mergersandinquisitions.com
+||m.moegirl.org
+||myjs.tw
+||mercari.com
+||mercari.jp
+||mirror.xyz
+||mywife.cc
+||c.mi.com
+||missav.com
+||madou.club
+||mahjongsoul.com
+||mangabz.com
+http://*.m-team.cc
+!--m-team.cc/forum
+.macrovpn.com
+||mad-ar.ch
+||madrau.com
+||madthumbs.com
+mahabodhi.org
+my.mail.ru
+.maiplus.com
+|http://maiplus.com
+.maizhong.org
+makkahnewspaper.com
+.mamingzhe.com
+||mangmang.run
+manicur4ik.ru
+||manyvoices.news
+.maplew.com
+|http://maplew.com
+||marc.info
+marguerite.su
+maskedip.com
+.maiio.net
+.mail-archive.com
+.malaysiakini.com
+||makemymood.com
+.manchukuo.net
+.maniash.com
+|http://maniash.com
+.mansion.com
+.mansionpoker.com
+!--||marines.mil
+!--markmail.org*message
+||martau.com
+|http://blog.martinoei.com
+.martsangkagyuofficial.org
+|http://martsangkagyuofficial.org
+maruta.be/forget
+.marxist.com
+||marxist.net
+.marxists.org/chinese
+!--||mashable.com
+||matainja.com
+||matrix.org
+||matters.town
+mayimayi.com
+.maxing.jp
+.mcaf.ee
+|http://mcaf.ee
+||mcadforums.com
+mcfog.com
+mcreasite.com
+.md-t.org
+||md-t.org
+||meansys.com
+.media.org.hk
+.mediachinese.com
+||mediachinese.com
+.mediafire.com/?
+.mediafire.com/download
+.mediafreakcity.com
+||mediafreakcity.com
+.medium.com
+||medium.com
+.meetav.com
+||meetup.com
+mefeedia.com
+jihadintel.meforum.org
+||mega.co.nz
+||mega.io
+||mega.nz
+||megalodon.jp
+||megaproxy.com
+||megurineluka.com
+||meizhong.blog
+||meizhong.report
+.meltoday.com
+.memehk.com
+||memehk.com
+||memes.tw
+.memri.org
+.memrijttm.org
+||mercdn.net
+.mercyprophet.org
+||mercyprophet.org
+.meridian-trust.org
+||meridian-trust.org
+.meripet.com
+||meripet.com
+||merit-times.com.tw
+.mesotw.com/bbs
+||wiki.metacubex.one
+||metafilter.com
+||meteorshowersonline.com
+||metro.taipei
+.metrohk.com.hk/?cmd=detail&categoryID=2
+||metrolife.ca
+.metroradio.com.hk
+||metroradio.com.hk
+||mewe.com
+||mgoon.com
+||mgstage.com
+||mh4u.org
+mhradio.org
+||bbs.mikocon.com
+||microvpn.com
+middle-way.net
+.mihr.com
+||mihua.org
+||mikanani.me
+!--IP
+||mikesoltys.com
+.milph.net
+|http://milph.net
+.milsurps.com
+mimiai.net
+.mimivip.com
+.mindrolling.org
+|http://mindrolling.org
+||mingdemedia.org
+.minghui.or.kr
+|http://minghui.or.kr
+minghui.org
+||minghui.org
+minghui-school.org
+.mingjinglishi.com
+||mingjinglishi.com
+mingjingnews.com
+||mingjingtimes.com
+.mingpao.com
+||mingpao.com
+.mingpaocanada.com
+.mingpaomonthly.com
+|http://mingpaomonthly.com
+mingpaonews.com
+.mingpaony.com
+.mingpaosf.com
+.mingpaotor.com
+.mingpaovan.com
+.mingshengbao.com
+.minhhue.net
+.ministrybooks.org
+minzhuzhongguo.org
+||miroguide.com
+mirrorbooks.com
+||mirrormedia.mg
+.mist.vip
+||thecenter.mit.edu
+||scratch.mit.edu
+.mitbbs.com
+||mitbbs.com
+.mixero.com
+||mixero.com
+||mixi.jp
+mixpod.com
+.mixx.com
+||mixx.com
+||mizzmona.com
+||mlc.ai
+.mlcool.com
+||mlzs.work
+.mm-cg.com
+||mmaaxx.com
+.mmmca.com
+mnewstv.com
+||mobatek.net
+.mobile01.com
+||mobile01.com
+||mobileways.de
+.mobypicture.com
+|http://moby.to
+||mod.io
+||modernchinastudies.org
+||moeerolibrary.com
+||moeshare.cc
+.mofos.com
+||mog.com
+||mohu.rocks
+molihua.org
+||momoshop.com.tw
+||mondex.org
+||money-link.com.tw
+|http://www.monlamit.org
+||moon.fm
+.moonbbs.com
+||moonbbs.com
+||moptt.tw
+||moneydj.com
+||monica.im
+||monitorchina.org
+||monocloud.me
+bbs.morbell.com
+||morningsun.org
+.motherless.com
+|http://motherless.com
+motor4ik.ru
+.mousebreaker.com
+!--||movabletype.com
+.movements.org
+||movements.org
+||moviefap.com
+||www.moztw.org
+.mp3buscador.com
+||mpettis.com
+.mpfinance.com
+||mpfinance.com
+.mpinews.com
+||mpinews.com
+mponline.hk
+mrtweet.com
+||mrtweet.com
+news.msn.com.tw
+msguancha.com
+.mswe1.org
+|http://mswe1.org
+||mthruf.com
+||mubi.com
+muchosucko.com
+||multiply.com
+multiproxy.org
+multiupload.com
+.mullvad.net
+||mullvad.net
+.mummysgold.com
+.musicade.net
+.muslimvideo.com
+||muzi.com
+||muzi.net
+||mx981.com
+.my-formosa.com
+.my-proxy.com
+.my-private-network.co.uk
+||my-private-network.co.uk
+.myactimes.com/actimes
+.myaudiocast.com
+||myaudiocast.com
+.myav.com.tw/bbs
+.mybbs.us
+.myca168.com
+.mycanadanow.com
+||bbs.mychat.to
+.mychinanet.com
+.mychinanews.com
+||mychinanews.com
+.mychinese.news
+||mycnnews.com
+||mykomica.org
+mycould.com/discuz
+.myeasytv.com
+||myeclipseide.com
+.myfreecams.com
+.myfreepaysite.com
+.myfreshnet.com
+.myiphide.com
+||myiphide.com
+forum.mymaji.com
+||mymoe.moe
+||myparagliding.com
+||mypopescu.com
+.myreadingmanga.info
+mysinablog.com
+.myspace.com
+!--.blogs.myspace.com
+!--||blogs.myspace.com
+!--vids.myspace.com/index.cfm?fuseaction=vids.
+!--viewmorepics.myspace.com
+||myspacecdn.com
+.mytalkbox.com
+.mytizi.com
+
+!--------------------NN-------------------------
+||naver.com
+||maven.neoforged.net
+||nftstorage.link
+||newindianexpress.com
+||news18.com
+||bbs.naixi.net
+||nikke.hotcool.tw
+||nikke-kr.com
+||nikke-jp.com
+||nikke-en.com
+||netlify.app
+||nightswatch.top
+||nbyy.tv
+||newthuhole.com
+||naacoalition.org
+||naitik.net
+.nakido.com
+||nakido.com
+.nakuz.com/bbs
+||nalandabodhi.org
+||nalandawest.org
+.namgyal.org
+namgyalmonastery.org
+.nanyang.com
+||nanyang.com
+.nanyangpost.com
+||nanyangpost.com
+.nanzao.com
+!--.nanzao.com/sc/china/20223
+!--.nanzao.com/sc/hk-macau-tw
+.naol.ca
+.naol.cc
+uighur.narod.ru
+.nat.moe
+||nat.moe
+cyberghost.natado.com
+||national-lottery.co.uk
+||nationalawakening.org
+||nationalinterest.org
+news.nationalgeographic.com/news/2014/06/140603-tiananmen-square
+||nationalreview.com
+.nationsonline.org/oneworld/tibet
+||line.naver.jp
+||navyfamily.navy.mil
+||navyreserve.navy.mil
+||nko.navy.mil
+||usno.navy.mil
+naweeklytimes.com
+||nbcnews.com
+.nbtvpn.com
+|http://nbtvpn.com
+nccwatch.org.tw
+.nch.com.tw
+.ncn.org
+||nchrd.org
+||ncn.org
+||etools.ncol.com
+.nde.de
+||ndi.org
+.ndr.de
+.ned.org
+||nekoslovakia.net
+||neowin.net
+||netalert.me
+!--bbsnew.netbig.com
+.netbirds.com
+netcolony.com
+bolin.netfirms.com
+||netflav.com
+||netme.cc
+||netsarang.com
+netsneak.com
+.network54.com
+networkedblogs.com
+.networktunnel.net
+new-3lunch.net
+.new-akiba.com
+.new96.ca
+.newcenturymc.com
+|http://newcenturymc.com
+newcenturynews.com
+||newchen.com
+.newchen.com
+.newgrounds.com
+||newhighlandvision.com
+newipnow.com
+.newlandmagazine.com.au
+||newmitbbs.com
+.newnews.ca
+||news1.kr
+news100.com.tw
+newschinacomment.org
+.newsancai.com
+||newsancai.com
+||newsblur.com
+.newsdetox.ca
+.newsdh.com
+||newsmax.com
+||newstamago.com
+||newstapa.org
+||newstatesman.com
+newstarnet.com
+||newsweek.com
+.newtaiwan.com.tw
+newtalk.tw
+||newtalk.tw
+||newyorker.com
+newyorktimes.com
+||nexon.com
+.next11.co.jp
+||nextdigital.com.hk
+.nextmag.com.tw
+
+!--hk*.nextmedia.com
+!--tw*.nextmedia.com
+!--static*.nextmedia.com
+.nextmedia.com
+
+||nexton-net.jp
+||nexttv.com.tw
+.nfjtyd.com
+||co.ng.mil
+||nga.mil
+ngensis.com
+.nhentai.net
+|http://nhentai.net
+.nhk-ondemand.jp
+||nicovideo.jp
+ninecommentaries.com
+.ninjacloak.com
+||ninjaproxy.ninja
+nintendium.com
+taiwanyes.ning.com
+usmgtcg.ning.com/forum
+||niusnews.com
+||njactb.org
+||nlfreevpn.com
+||nmsl.website
+||nnews.eu
+
+!--no-ip.com#NOIP
+.ddns.net/
+||gotdns.ch
+.no-ip.org
+.opendn.xyz
+.servehttp.com
+sytes.net
+.zapto.org
+|http://dynupdate.no-ip.com/
+
+||nobel.se
+!--.nobelprize.org
+!--|http://nobelprize.org
+nobelprize.org/nobel_prizes/peace/laureates/1989
+nobelprize.org/nobel_prizes/peace/laureates/2010
+||nodeseek.com
+||nokogiri.org
+||nokola.com
+noodlevpn.com
+.norbulingka.org
+nordvpn.com
+||nordvpn.com
+||nos.nl
+||notepad-plus-plus.org
+||now.com
+||nownews.com
+.nowtorrents.com
+||npa.go.jp
+.npnt.me
+|http://npnt.me
+.nradio.me
+|http://nradio.me
+.nrk.no
+||nrk.no
+.ntd.tv
+||ntd.tv
+.ntdtv.com
+||ntdtv.com
+||ntdtv.com.tw
+.ntdtv.co.kr
+ntdtv.ca
+ntdtv.org
+ntdtv.ru
+ntdtvla.com
+.ntrfun.com
+||cbs.ntu.edu.tw
+||media.nu.nl
+.nubiles.net
+||nuexpo.com
+.nukistream.com
+||nurgo-software.com
+||nutaku.net
+||nutsvpn.work
+.nuvid.com
+||nvdst.com
+.nvquan.org
+.nvtongzhisheng.org
+|http://nvtongzhisheng.org
+.nwtca.org
+|http://nyaa.eu
+||nyaa.si
+||nybooks.com
+nylon-angel.com
+nylonstockingsonline.com
+||nypost.com
+!--nysingtao.com
+.nzchinese.com
+
+!--------------------OO-------------------------
+||oojj.de
+||onevps.com
+||onedrive.com
+||olelive.com
+||oann.com
+observechina.net
+.obutu.com
+ocaspro.com
+occupytiananmen.com
+.ocreampies.com
+||october-review.org
+||odysee.com
+||officeoftibet.com
+|http://ofile.org
+||ogaoga.org
+twtr2src.ogaoga.org
+.ogate.org
+||ogate.org
+www2.ohchr.org/english/bodies/cat/docs/ngos/II_China_41.pdf
+||ohmyrss.com
+.oikos.com.tw/v4
+.oiktv.com
+.ok.ru
+||ok.ru
+.okayfreedom.com
+||okayfreedom.com
+||okk.tw
+||olevod.com
+||olumpo.com
+.olympicwatch.org
+||omct.org
+omgili.com
+||omnitalk.com
+||omnitalk.org
+||omny.fm
+||on.cc
+||onedrive.live.com
+||onion.city
+||onion.ly
+.onlinecha.com
+||onlineyoutube.com
+||onlygayvideo.com
+.onlytweets.com
+|http://onlytweets.com
+onmoon.net
+onmoon.com
+.onthehunt.com
+|http://onthehunt.com
+open.com.hk
+opendemocracy.net
+||opendemocracy.net
+openid.net
+||openid.net
+.openleaks.org
+||openleaks.org
+||openstreetmap.org
+||opentech.fund
+openvpn.net
+||openvpn.net
+||openwebster.com
+.openwrt.org.cn
+@@||openwrt.org.cn
+my.opera.com/dahema
+.opus-gaming.com
+|http://opus-gaming.com
+.organcare.org.tw
+organharvestinvestigation.net
+.orgasm.com
+.orgfree.com
+||oricon.co.jp
+||orient-doll.com
+orientaldaily.com.my
+||orientaldaily.com.my
+!--orientaldaily.on.cc
+||orn.jp
+||osfoora.com
+||otto.de
+||ourdearamy.com
+oursogo.com
+.oursteps.com.au
+||oursteps.com.au
+.oursweb.net
+||ourtv.hk
+xinqimeng.over-blog.com
+||overcast.fm
+||overdaily.org
+||overplay.net
+share.ovi.com/media
+||ovpn.com
+|http://owl.li
+|http://ht.ly
+|http://htl.li
+|http://mash.to
+www.owind.com
+||owltail.com
+||oxfordscholarship.com
+|http://www.oxid.it
+oyax.com
+oyghan.com/wps
+.ozchinese.com/bbs
+||ow.ly
+.ozvoice.org
+||ozvoice.org
+.ozxw.com
+.ozyoyo.com
+
+!--------------------PP-------------------------
+||pewresearch.org
+||privacyguides.org
+||pancakeswap.finance
+||img.picgo.net
+||pornmate.com
+||puredns.org
+||polymarket.com
+||pandafan.pub
+||proxz.com
+||potatso.com
+||pendrivelinux.com
+||paimon.moe
+||photonmedia.net
+||points-media.com
+||pkuanvil.com
+||pachosting.com
+.pacificpoker.com
+.packetix.net
+||pacopacomama.com
+.padmanet.com
+||page.link
+page2rss.com
+.palacemoon.com
+forum.palmislife.com
+||eriversoft.com
+paljorpublications.com
+.paltalk.com
+!--||pangci.net
+||pandapow.co
+.pandapow.net
+.pandavpn-jp.com
+||pandavpn-jp.com
+||pandavpnpro.com
+||pao-pao.net
+paper.li
+paperb.us
+.paradisehill.cc
+.paradisepoker.com
+||parler.com
+||parsevideo.com
+.partycasino.com
+.partypoker.com
+.passion.com
+||passion.com
+.passiontimes.hk
+pastebin.com
+.pastie.org
+||pastie.org
+||blog.pathtosharepoint.com
+||patreon.com
+||patreonusercontent.com
+||pawoo.net
+||pbs.org
+
+!--Pbwiki
+pbwiki.com
+||pbworks.com
+||developers.box.net
+||wiki.oauth.net
+||wiki.phonegap.com
+||wiki.jqueryui.com
+
+||pbxes.com
+||pbxes.org
+pcdvd.com.tw
+||pcgamestorrents.com
+.pchome.com.tw
+||pcij.org
+.pcstore.com.tw
+||pct.org.tw
+pdetails.com
+||pdproxy.com
+||peace.ca
+peacefire.org
+.peeasian.com
+||peing.net
+.pekingduck.org
+||pekingduck.org
+.pemulihan.or.id
+|http://pemulihan.or.id
+||pen.io
+penchinese.com
+||blog.pentalogic.net
+.penthouse.com
+||pentoy.hk
+.peoplebookcafe.com
+.peoplenews.tw
+||peoplenews.tw
+.peopo.org
+||peopo.org
+.percy.in
+.perfectgirls.net
+||perfect-privacy.com
+||perplexity.ai
+.persecutionblog.com
+.persiankitty.com
+phapluan.org
+.phayul.com
+||phayul.com
+philborges.com
+||phncdn.com
+||photodharma.net
+||photofocus.com
+||picacomiccn.com
+.picidae.net
+||img*.picturedip.com
+picturesocial.com
+||picuki.com
+||pigav.com
+||pin-cong.com
+.pin6.com
+||pin6.com
+.ping.fm
+||ping.fm
+||pinimg.com
+.pinkrod.com
+||pinoy-n.com
+||pinterest.*
+@@||pinterest.cn
+.pipii.tv
+piraattilahti.org
+.piring.com
+||pixeldrain.com
+||pixelqi.com
+||css.pixnet.in
+||pixnet.net
+.pixnet.net
+.pk.com
+||pkqjiasu.com
+||placemix.com
+!--.planetsuzy.org
+||play-asia.com
+||playboy.com
+.playboyplus.com
+||playboyplus.com
+||player.fm
+.playno1.com
+||playno1.com
+||playpcesor.com
+||plexvpn.pro
+plm.org.hk
+plunder.com
+.plurk.com
+||plurk.com
+.plus28.com
+.plusbb.com
+.pmatehunter.com
+||pmatehunter.com
+.pmates.com
+||po2b.com
+pobieramy.top
+!--||pocoo.org
+||podbean.com
+||podictionary.com
+||poe.com
+.pokerstars.com
+||pokerstars.com
+||pokerstars.net
+||zh.pokerstrategy.com
+||politicalchina.org
+.politiscales.net
+||poloniex.com
+||polymerhk.com
+.popo.tw
+!--||popularpages.net
+||popvote.hk
+||popxi.click
+.popyard.com
+||popyard.org
+.porn.com
+.porn2.com
+.porn5.com
+.pornbase.org
+.pornerbros.com
+||pornhd.com
+.pornhost.com
+.pornhub.com
+||pornhub.com
+.pornhubdeutsch.net
+|http://pornhubdeutsch.net
+.pornoxo.com
+.pornrapidshare.com
+||pornrapidshare.com
+.pornsharing.com
+|http://pornsharing.com
+.pornsocket.com
+||pornstarbyface.com
+.pornstarclub.com
+||pornstarclub.com
+.porntube.com
+.porntubenews.com
+.porntvblog.com
+||porntvblog.com
+.pornvisit.com
+.portablevpn.nl
+||poskotanews.com
+.post01.com
+.post76.com
+||post76.com
+.post852.com
+||post852.com
+postadult.com
+||potvpn.com
+||pourquoi.tw
+||powercx.com
+.powerphoto.org
+||www.powerpointninja.com
+||ppy.sh
+||presidentlee.tw
+||cdn.printfriendly.com
+.pritunl.com
+provpnaccounts.com
+||provpnaccounts.com
+.proxfree.com
+||proxfree.com
+proxyanonimo.es
+.proxynetwork.org.uk
+||proxynetwork.org.uk
+.pttvan.org
+||pubu.com.tw
+||puffinbrowser.com
+||pureinsight.org
+.putty.org
+||putty.org
+
+!-------------Posterous-----
+||calebelston.com
+||blog.fizzik.com
+||nf.id.au
+||sogrady.me
+||vatn.org
+||ventureswell.com
+||whereiswerner.com
+
+.power.com
+||power.com
+powerapple.com
+||powerapple.com
+||prayforchina.net
+||prcleader.org
+||presentationzen.com
+||prestige-av.com
+.prisoneralert.com
+||pritunl.com
+||privacybox.de
+||private.com
+||privateinternetaccess.com
+privatepaste.com
+||privatepaste.com
+privatetunnel.com
+||privatetunnel.com
+||privatevpn.com
+||privoxy.org
+||procopytips.com
+||project-syndicate.org
+||proton.me
+provideocoalition.com
+||prosiben.de
+proxifier.com
+||proxomitron.info
+.proxpn.com
+||proxpn.com
+proxyroad.com
+.proxytunnel.net
+||pshvpn.com
+||psiphon.ca
+.psiphon3.com
+||psiphon3.com
+.psiphontoday.com
+||pstatic.net
+||pt.im
+.ptt.cc
+||ptt.cc
+||pttgame.com
+.puffstore.com
+||main-ecnpaper-economist.content.pugpig.com
+||pullfolio.com
+.punyu.com/puny
+||pureconcepts.net
+||pureinsight.org
+||purepdf.com
+||purevpn.com
+.purplelotus.org
+.pursuestar.com
+||pursuestar.com
+.pussyspace.com
+.putihome.org
+.putlocker.com/file
+pwned.com
+||pximg.net
+python.com
+.python.com.tw
+||python.com.tw
+pythonhackers.com/p
+ss.pythonic.life
+
+!--------------------QQ-------------------------
+|http://qmp4.com
+||qianmo.tw
+||qbittorrent.org
+||qgirl.com.tw
+||qianbai.tw
+||qiandao.today
+||qianglie.com
+||qiangwaikan.com
+.qi-gong.me
+||qi-gong.me
+!--#921
+||qiangyou.org
+.qidian.ca
+||qiwen.lu
+qixianglu.cn
+.qkshare.com
+qoos.com
+||qoos.com
+||efksoft.com
+||qstatus.com
+||qtrac.eu
+||quitccp.org
+.quitccp.org
+.quora.com/Chinas-Future
+.quran.com
+|http://quran.com
+.quranexplorer.com
+qusi8.net
+nemesis2.qx.net/pages/MyEnTunnel
+qxbbs.org
+
+!--------------------RR-------------------------
+||radmin-vpn.com
+||rule34video.com
+||r10s.jp
+||rakuten.co.jp
+||r0.ru
+||radio-canada.ca
+||radio-en-ligne.fr
+||rael.org
+radicalparty.org
+||radio.garden
+||radioaustralia.net.au
+.radiohilight.net
+||radiohilight.net
+||radioline.co
+opml.radiotime.com
+||radiovaticana.org
+||radiovncr.com
+||raggedbanner.com
+||raidcall.com.tw
+.rainbowplan.org/bbs
+|https://raindrop.io/
+.raizoji.or.jp
+|http://raizoji.or.jp
+rangzen.net
+rangzen.org
+|http://blog.ranxiang.com/
+.rapbull.net
+!--|http://rapidgator.net/
+||rapidmoviez.com
+rapidvpn.com
+||rapidvpn.com
+||rarbgprx.org
+||rationalwiki.org
+||rawgit.com
+||rawgithub.com
+||rcinet.ca
+||reabble.com
+.read100.com
+.readingtimes.com.tw
+||readingtimes.com.tw
+||readmoo.com
+.readydown.com
+|http://readydown.com
+||realcourage.org
+.realitykings.com
+||realitykings.com
+.realraptalk.com
+.realsexpass.com
+||reason.com
+.recordhistory.org
+.recovery.org.tw
+|http://online.recoveryversion.org
+||recoveryversion.com.tw
+||red-lang.org
+||redbubble.com
+.redchinacn.net
+||redchinacn.net
+redchinacn.org
+redtube.com
+referer.us
+||referer.us
+||reflectivecode.com
+||blog.reimu.net
+relaxbbs.com
+.relay.com.tw
+.releaseinternational.org
+||religionnews.com
+renminbao.com
+||renminbao.com
+.renyurenquan.org
+||renyurenquan.org
+|http://certificate.revocationcheck.com
+||resilio.com
+.reuters.com
+||reuters.com
+||reutersmedia.net
+.revleft.com
+||resistchina.org
+retweetist.com
+||retweetrank.com
+!--connectedchina.reuters.com
+!--|http://www.reuters.com/news/video
+revver.com
+.rfa.org
+||rfa.org
+.rfachina.com
+.rfamobile.org
+rfaweb.org
+||rferl.org
+.rfi.fr
+||rfi.fr
+||rfi.my
+!--.rhcloud.com
+!--Edgecast
+.rigpa.org
+.rileyguide.com
+||riku.me
+.ritouki.jp
+||ritter.vg
+.rlwlw.com
+||rlwlw.com
+||rmbl.ws
+.rmjdw.com
+.roadshow.hk
+.roboforex.com
+||robustnessiskey.com
+!--||roc-taiwan.org
+||rocket.chat
+||rocket-inc.net
+|http://www2.rocketbbs.com/11/bbs.cgi?id=5mus
+|http://www2.rocketbbs.com/11/bbs.cgi?id=freemgl
+!--||rocmp.org
+||rojo.com
+||ronjoneswriter.com
+||rolfoundation.org
+||rolia.net
+||rolsociety.org
+.roodo.com
+.rosechina.net
+||rou.video
+.rsf.org
+||rsf.org
+.rsf-chinese.org
+||rsf-chinese.org
+||rsshub.app
+||phosphation13.rssing.com
+.rssmeme.com
+||rssmeme.com
+||rtalabel.org
+.rthk.hk
+||rthk.hk
+.rthk.org.hk
+||rthk.org.hk
+.rti.org.tw
+||rti.org.tw
+||rti.tw
+.ruanyifeng.com/blog*some_ways_to_break_the_great_firewall
+rukor.org
+||rule34.xxx
+||rumble.com
+.runbtx.com
+.rushbee.com
+||rusvpn.com
+.ruten.com.tw
+||ruten.com.tw
+||rutracker.net
+||rutracker.org
+rutube.ru
+.rxhj.net
+|http://rxhj.net
+
+!--------------------SS-------------------------
+||sina.com.hk
+||swapspace.co
+||storry.tv
+||standard.co.uk
+||sagernet.org
+||simplex.chat
+||soundon.fm
+||ssrtool.com
+||ssrshare.us
+||secure.shadowsocks.nu
+||synapse.org
+||south-plus.net
+||silvergatebank.com
+||share-videos.se
+||ssrshare.us
+||cdn.statically.io
+||slides.com
+||suno.com
+||sydney.bing.com
+||sehuatang.org
+||singlelogin.se
+||suno.ai
+||syosetu.com
+.s1s1s1.com
+||s-cute.com
+.s-dragon.org
+|http://www.s4miniarchive.com
+cdn1.lp.saboom.com
+||sacks.com
+sacom.hk
+||sacom.hk
+||sadpanda.us
+||safechat.com
+||safeguarddefenders.com
+.safervpn.com
+||safervpn.com
+.saintyculture.com
+|http://saintyculture.com
+||sakuralive.com
+.sakya.org
+.salvation.org.hk
+||salvation.org.hk
+.samair.ru/proxy/type-01
+.sambhota.org
+||cn.sandscotaicentral.com
+||sankakucomplex.com
+||sankei.com
+||sanmin.com.tw
+sapikachu.net
+savemedia.com
+||savethesounds.info
+.savetibet.de
+||savetibet.de
+savetibet.fr
+savetibet.nl
+.savetibet.org
+||savetibet.org
+savetibet.ru
+.savetibetstore.org
+||savetibetstore.org
+||saveuighur.org
+savevid.com
+.sbme.me
+|http://sbme.me
+.sbs.com.au/yourlanguage
+.scasino.com
+|http://www.sciencemag.org/content/344/6187/953
+.sciencenets.com
+.scmp.com
+||scmp.com
+.scmpchinese.com
+||scramble.io
+||scribd.com
+||scriptspot.com
+||search.com
+.searchtruth.com
+||searx.me
+||seattlefdc.com
+.secretchina.com
+||secretchina.com
+||secretgarden.no
+.secretsline.biz
+||secretsline.biz
+||secureservercdn.net
+||securetunnel.com
+securityinabox.org
+|https://securityinabox.org
+.securitykiss.com
+||securitykiss.com
+||seed4.me
+||news.seehua.com
+seesmic.com
+||seevpn.com
+||seezone.net
+||sehuatang.net
+sejie.com
+.sendspace.com
+||sensortower.com
+sesawe.net
+||sesawe.net
+||sethwklein.net
+||setn.com
+.settv.com.tw
+.sevenload.com
+||sevenload.com
+.sex.com
+||sex.com
+||sex3.com
+||sex8.cc
+.sexandsubmission.com
+.sexbot.com
+.sexhu.com
+sexinsex.net
+||sexinsex.net
+.sextvx.com
+
+!--IP of SexInSex
+67.220.91.15
+67.220.91.18
+67.220.91.23
+
+|http://*.sf.net
+.sfileydy.com
+||sfshibao.com
+.sftindia.org
+.sftuk.org
+||sftuk.org
+||shadeyouvpn.com
+shadow.ma
+.shadowsky.xyz
+.shadowsocks.asia
+||www.shadowsocks.com
+.shadowsocks.com
+||shadowsocks.com.hk
+.shadowsocks.org
+||shadowsocks.org
+|http://cn.shafaqna.com
+||shahit.biz
+.shambalapost.com
+shapeservices.com
+.sharebee.com
+||sharecool.org
+!--||sharkdolphin.com
+.sharpdaily.hk
+.sharpdaily.tw
+.shat-tibet.com
+sheikyermami.com
+.shellfire.de
+||shellfire.de
+shenyun.com
+shenyunperformingarts.org
+||shenyunperformingarts.org
+||shenyunshop.com
+shenzhoufilm.com
+||shenzhoufilm.com
+||shenzhouzhengdao.org
+.shiatv.net
+.shicheng.org
+shipcamouflage.com
+.shireyishunjian.com
+.shitaotv.org
+||shixiao.org
+||shizhao.org
+shizhao.org
+shkspr.mobi/dabr
+||shodanhq.com
+||shooshtime.com
+.shop2000.com.tw
+||shopee.tw
+.shopping.com
+.showhaotu.com
+.showtime.jp
+||showwe.tw
+.shutterstock.com
+||shutterstock.com
+.shwchurch.org
+||shwchurch.org
+.shwchurch3.com
+|http://shwchurch3.com
+.siddharthasintent.org
+||sidelinesnews.com
+.sidelinessportseatery.com
+||signal.org
+.sijihuisuo.club
+.sijihuisuo.com
+.silkbook.com
+||simbolostwitter.com
+simplecd.org
+||simplecd.org
+||simplecd.me
+simpleproductivityblog.com
+bbs.sina.com/
+bbs.sina.com%2F
+dailynews.sina.com/
+dailynews.sina.com%2F
+home.sina.com
+news.sina.com.hk
+news.sinchew.com.my
+.sinchew.com.my/node/
+.sinchew.com.my/taxonomy/term
+.singaporepools.com.sg
+||singaporepools.com.sg
+.singfortibet.com
+.singpao.com.hk
+singtao.com
+||singtao.com
+news.singtao.ca
+.singtaousa.com
+||singtaousa.com
+!--||cdp.sinica.edu.tw
+sino-monthly.com
+||sinoca.com
+||sinocast.com
+sinocism.com
+sinomontreal.ca
+.sinoants.com
+||sinoants.com
+||sinoinsider.com
+.sinoquebec.com
+.sierrafriendsoftibet.org
+sis.xxx
+||sis001.com
+sis001.us
+.site2unblock.com
+.sitebro.tw
+||sitekreator.com
+||sitemaps.org
+||sketchappsources.com
+||skimtube.com
+||lab.skk.moe
+||skybet.com
+|http://users.skynet.be/reves/tibethome.html
+.skyking.com.tw
+bbs.skykiwi.com
+|http://www.skype.com/intl/
+|http://www.skype.com/zh-Hant
+||skyvegas.com
+.xskywalker.com
+||xskywalker.com
+||skyxvpn.com
+.slaytizle.com
+.sleazydream.com
+||sleazyfork.org
+||slheng.com
+||slideshare.net
+forum.slime.com.tw
+.slinkset.com
+||slickvpn.com
+.slutload.com
+||smartdnsproxy.com
+.smarthide.com
+||app.smartmailcloud.com
+smchbooks.com
+||smh.com.au
+smhric.org
+.smith.edu/dalailama
+||smn.news
+.smyxy.org
+!--TODO-no-homepage
+||sndcdn.com
+sneakme.net
+snowlionpub.com
+||socialblade.com
+.socks-proxy.net
+||socks-proxy.net
+.sockscap64.com
+||sockslist.net
+.socrec.org
+|http://socrec.org
+.sod.co.jp
+.softether.org
+||softether.org
+.softether-download.com
+||softether-download.com
+||cdn.softlayer.net
+||sogclub.com
+sohcradio.com
+||sohcradio.com
+.sokmil.com
+||sorting-algorithms.com
+||soup.io
+@@||static.soup.io
+.sobees.com
+||sobees.com
+.softether.co.jp
+||softwarebychuck.com
+blog.sogoo.org
+soh.tw
+||soh.tw
+sohfrance.org
+||sohfrance.org
+chinese.soifind.com
+sokamonline.com
+||solana.com
+.solidaritetibet.org
+.solidfiles.com
+||somee.com
+.songjianjun.com
+||songjianjun.com
+.sonidodelaesperanza.org
+.sopcast.com
+.sopcast.org
+||nakedsecurity.sophos.com
+||sos.org
+||sosad.fun
+bbs.sou-tong.org
+.soubory.com
+|http://soubory.com
+.soul-plus.net
+.soulcaliburhentai.net
+||soulcaliburhentai.net
+||soundcloud.com
+!--|https://soundcloud.com/punkgod
+.soundofhope.kr
+soundofhope.org
+||soundofhope.org
+!--.sourceforge.net
+!-|http://sourceforge.net
+|http://sourceforge.net/p*/shadowsocksgui/
+.sourcewadio.com
+||south-plus.org
+||southmongolia.org
+||southnews.com.tw
+||sowers.org.hk
+||spankbang.com
+.spankingtube.com
+.spankwire.com
+||spatial.io
+||spb.com
+||speakerdeck.com
+||speedcat.me
+||speedify.com
+||spencertipping.com
+||spendee.com
+||spicevpn.com
+.spideroak.com
+||spideroak.com
+.spike.com
+.spotflux.com
+||spotflux.com
+||spreaker.com
+.spring4u.info
+||spring4u.info
+||springwood.me
+||sproutcore.com
+||squirrelvpn.com
+.ss-link.com
+||ss-link.com
+.ssglobal.co/wp
+|http://ssglobal.co
+.ssglobal.me
+.ssrshare.com
+||ssrshare.com
+!--|http://cdn.sstatic.net/
+||sstm.moe
+||sstmlt.moe
+sstmlt.net
+||sstmlt.net
+|http://stackoverflow.com/users/895245
+||standupfortibet.org
+||standwithhk.org
+stanford.edu/group/falun
+.starfishfx.com
+.starp2p.com
+||starp2p.com
+.startpage.com
+||startpage.com
+.startuplivingchina.com
+|http://startuplivingchina.com
+||static-economist.com
+||stboy.net
+||stc.com.sa
+||steel-storm.com
+.steganos.com
+||steganos.com
+.steganos.net
+.stepchina.com
+!--||stepmania.com
+hd.stheadline.com/news/realtime
+sthoo.com
+||sthoo.com
+.stickam.com
+stickeraction.com/sesawe
+.stileproject.com
+||stitcher.com
+.sto.cc
+.stoporganharvesting.org
+||storagenewsletter.com
+.storm.mg
+||storm.mg
+.stoptibetcrisis.net
+||stoptibetcrisis.net
+||storj.io
+.stormmediagroup.com
+||stoweboyd.com
+||straitstimes.com
+stranabg.com
+||straplessdildo.com
+||streamable.com
+||streamate.com
+||streamingthe.net
+streema.com/tv/NTDTV_Chinese
+cn.streetvoice.com/article
+cn.streetvoice.com/diary
+tw.streetvoice.com
+.strikingly.com
+||strongvpn.com
+.strongwindpress.com
+||studentsforafreetibet.org
+||stumbleupon.com
+stupidvideos.com
+||substack.com
+||subhd.tv
+.successfn.com
+panamapapers.sueddeutsche.de
+.sugarsync.com
+||sugarsync.com
+.sugobbs.com
+||sugumiru18.com
+||suissl.com
+summify.com
+.sumrando.com
+||sumrando.com
+sun1911.com
+||sundayguardianlive.com
+.sunporno.com
+||sunmedia.ca
+||sunporno.com
+.sunskyforum.com
+.sunta.com.tw
+.sunvpn.net
+.superfreevpn.com
+.supervpn.net
+||supervpn.net
+.superzooi.com
+|http://superzooi.com
+.suppig.net
+.suprememastertv.com
+|http://suprememastertv.com
+.surfeasy.com
+||surfeasy.com
+.surfeasy.com.au
+|http://surfeasy.com.au
+||surfshark.com
+||surrenderat20.net
+.svsfx.com
+.swissinfo.ch
+||swissinfo.ch
+.swissvpn.net
+||swissvpn.net
+switchvpn.net
+||switchvpn.net
+.sydneytoday.com
+||sydneytoday.com
+.sylfoundation.org
+||sylfoundation.org
+||syncback.com
+sysresccd.org
+.sytes.net
+blog.syx86.com/2009/09/puff
+.szbbs.net
+.szetowah.org.hk
+
+!--------------------TT-------------------------
+||talkatone.com
+||tanks.gg
+||thehansindia.com
+||rtm.tnt-ea.com
+||tellapart.com
+||threads.com
+||tg-me.com
+||twkan.com
+||tunein.streamguys1.com
+||tou.tv
+||tinyurl.com
+||textnow.com
+||textnow.me
+||token.im
+||tokenlon.im
+||tardigrade.io
+||torrentgalaxy.to
+||tomp3.cc
+||tukaani.org
+||thetatoken.org
+||typeset.io
+||thechasernews.co.uk
+||hole.thu.monster
+||thuhole.com
+||t-g.com
+.t35.com
+.t66y.com
+||t66y.com
+||esg.t91y.com
+.taa-usa.org
+|http://taa-usa.org
+.taaze.tw
+||taaze.tw
+|http://www.tablesgenerator.com/
+tabtter.jp
+.taconet.com.tw
+||taedp.org.tw
+.tafm.org
+tagwalk.com
+||tagwalk.com
+tahr.org.tw
+.taipeisociety.org
+||taipeisociety.org
+||taipeitimes.com
+||taisounds.com
+.taiwanbible.com
+.taiwandaily.net
+||taiwandaily.net
+.taiwandc.org
+!--||taiwanembassy.org
+||taiwanhot.net
+.taiwanjustice.com
+taiwankiss.com
+taiwannation.com
+taiwannation.com.tw
+||taiwanncf.org.tw
+||taiwannews.com.tw
+|http://www.taiwanonline.cc/
+!--||taiwantoday.tw
+taiwantp.net
+||taiwantt.org.tw
+taiwanus.net
+.talk853.com
+.talkboxapp.com
+||talkboxapp.com
+.talkcc.com
+||talkcc.com
+.talkonly.net
+||talkonly.net
+||tanc.org
+.tangren.us
+.taoism.net
+|http://taoism.net
+.tapatalk.com
+||tapatalk.com
+blog.taragana.com
+||taup.net
+.taweet.com
+||taweet.com
+.tbcollege.org
+||tbcollege.org
+.tbi.org.hk
+.tbjyt.org
+.tbrc.org
+tbs-rainbow.org
+.tbsec.org
+||tbsec.org
+tbskkinabalu.page.tl
+.tbsn.org
+||tbsn.org
+.tbsseattle.org
+.tbssqh.org
+|http://tbssqh.org
+tbswd.org
+.tbtemple.org.uk
+.tbthouston.org
+.tccwonline.org
+.tcewf.org
+tchrd.org
+tcnynj.org
+||tcpspeed.co
+.tcsofbc.org
+.tdm.com.mo
+teamamericany.com
+||techspot.com
+!--OVH
+||techviz.net
+||teck.in
+.teeniefuck.net
+teensinasia.com
+||tehrantimes.com
+.telecomspace.com
+||telegraph.co.uk
+.tenacy.com
+||tenor.com
+||tenzinpalmo.com
+.tew.org
+||tew.org
+||tfc-taiwan.org.tw
+||tfiflve.com
+.thaicn.com
+||theatlantic.com
+||theatrum-belli.com
+||cn.theaustralian.com.au
+theblemish.com
+||thebcomplex.com
+||theblaze.com
+.thebobs.com
+||thebobs.com
+.thechinabeat.org
+||thechinacollection.org
+|http://www.thechinastory.org/yearbooks/yearbook-2012/
+||theconversation.com
+.thedalailamamovie.com
+|http://thedalailamamovie.com
+||thediplomat.com
+||thedw.us
+||theepochtimes.com
+!--||thefreeland.club
+||theguardian.com
+||thegay.com
+|http://thegioitinhoc.vn/
+.thegly.com
+||thehindu.com
+||thehun.net
+.theinitium.com
+||theinitium.com
+.thenewslens.com
+||thenewslens.com
+.thepiratebay.org
+||thepiratebay.org
+!--||thepiratebay.se
+.theporndude.com
+||theporndude.com
+||theportalwiki.com
+||theprint.in
+||threadreaderapp.com
+therock.net.nz
+||thesaturdaypaper.com.au
+||thestandnews.com
+thetibetcenter.org
+thetibetconnection.org
+.thetibetmuseum.org
+.thetibetpost.com
+||thetibetpost.com
+thetrotskymovie.com
+||thetvdb.com
+||thewgo.org
+||thewirechina.com
+.theync.com
+|http://theync.com
+.thinkingtaiwan.com
+||thinkingtaiwan.com
+||thirdmill.org
+||thisav.com
+.thlib.org
+||thomasbernhard.org
+.thongdreams.com
+||throughnightsfire.com
+.thumbzilla.com
+||thywords.com
+tiananmenmother.org
+.tiananmenduizhi.com
+||tiananmenduizhi.com
+||tiananmenuniv.com
+||tiananmenuniv.net
+||tiandixing.org
+.tianhuayuan.com
+.tianlawoffice.com
+||tianti.io
+tiantibooks.org
+||tiantibooks.org
+tianyantong.org.cn
+.tianzhu.org
+.tibet.at
+tibet.ca
+.tibet.com
+||tibet.com
+tibet.fr
+.tibet.net
+||tibet.net
+||tibet.nu
+.tibet.org
+||tibet.org
+||tibet.org.tw
+||tibet.to
+.tibet-envoy.eu
+||tibet-envoy.eu
+.tibet-foundation.org
+.tibet-house-trust.co.uk
+||tibet-initiative.de
+.tibet-munich.de
+.tibet3rdpole.org
+|http://tibet3rdpole.org
+tibetaction.net
+||tibetaction.net
+.tibetaid.org
+tibetalk.com
+.tibetan.fr
+tibetan-alliance.org
+.tibetanarts.org
+.tibetanbuddhistinstitute.org
+||tibetanbuddhistinstitute.org
+||tibetancommunity.org
+||tibetanentrepreneurs.org
+||tibetanhealth.org
+.tibetanjournal.com
+.tibetanlanguage.org
+.tibetanliberation.org
+||tibetanliberation.org
+.tibetcollection.com
+.tibetanaidproject.org
+.tibetancommunityuk.net
+|http://tibetancommunityuk.net
+tibetanculture.org
+tibetanfeministcollective.org
+.tibetanpaintings.com
+.tibetanphotoproject.com
+.tibetanpoliticalreview.org
+.tibetanreview.net
+|http://tibetansports.org
+.tibetanwomen.org
+|http://tibetanwomen.org
+.tibetanyouth.org
+.tibetanyouthcongress.org
+||tibetanyouthcongress.org
+.tibetcharity.dk
+tibetcharity.in
+.tibetchild.org
+.tibetcity.com
+||tibetcorps.org
+||tibetexpress.net
+||tibetfocus.com
+||tibetfund.org
+.tibetgermany.com
+||tibetgermany.de
+.tibethaus.com
+.tibetheritagefund.org
+||tibethouse.jp
+||tibethouse.org
+||tibethouse.us
+.tibetinfonet.net
+.tibetjustice.org
+.tibetkomite.dk
+||tibetmuseum.org
+||tibetnetwork.org
+||tibetoffice.ch
+tibetoffice.eu
+||tibetoffice.org
+||tibetonline.com
+||tibetoffice.com.au
+||tibetonline.tv
+||tibetoralhistory.org
+||tibetpolicy.eu
+||tibetrelieffund.co.uk
+||tibetsociety.com
+||tibetsun.com
+||tibetsupportgroup.org
+||tibetswiss.ch
+||tibettelegraph.com
+||tibettimes.net
+||tibettruth.com
+||tibetwrites.org
+.ticket.com.tw
+.tigervpn.com
+||tigervpn.com
+.timdir.com
+|http://timdir.com
+.time.com
+|http://time.com
+!--.time.com/time/time100/leaders/profile/rebel
+!--.time.com/time/specials/packages/article/0,28804
+!--.time.com/time/magazine
+||timesnownews.com
+.timsah.com
+||timtales.com
+||blog.tiney.com
+||tingtalk.me
+.tiny.cc
+||tiny.cc
+||tinychat.com
+||tinypaste.com
+||tipas.net
+.tistory.com
+||tkcs-collins.com
+.tmagazine.com
+||tmagazine.com
+|http://tmi.me
+.tmpp.org
+|http://tmpp.org
+.tnaflix.com
+||tnaflix.com
+.tnp.org
+|http://tnp.org
+.to-porno.com
+||to-porno.com
+||togetter.com
+.tokyo-247.com
+.tokyo-hot.com
+||tokyo-porn-tube.com
+||tokyocn.com
+tw.tomonews.net
+.tongil.or.kr
+tonyyan.net
+toonel.net
+top81.ws
+.topnews.in
+.toppornsites.com
+|http://toppornsites.com
+||toptoon.net
+.torguard.net
+||torguard.net
+||top.tv
+.topshareware.com
+.topsy.com
+||topsy.com
+||toptip.ca
+tora.to
+.torcn.com
+||torlock.com
+.torproject.org
+||torproject.org
+||torrentkitty.tv
+torrentprivacy.com
+||torrentprivacy.com
+|http://torrentproject.se
+||torrenty.org
+||tortoisesvn.net
+||torvpn.com
+||totalvpn.com
+.toutiaoabc.com
+towngain.com
+toypark.in
+toytractorshow.com
+.tparents.org
+.tpi.org.tw
+||tpi.org.tw
+||tradingview.com
+||transparency.org
+||treemall.com.tw
+trendsmap.com
+||trendsmap.com
+.trimondi.de/SDLE
+.trouw.nl
+||trouw.nl
+.trt.net.tr
+||trt.net.tr
+trtc.com.tw
+.truebuddha-md.org
+||truebuddha-md.org
+trulyergonomic.com
+||truthsocial.com
+.truveo.com
+.tsctv.net
+.tsemtulku.com
+tsquare.tv
+.tsu.org.tw
+tsunagarumon.com
+!--|http://www.tsuru-bird.net/
+||tt1069.com
+.tttan.com
+||tttan.com
+||ttv.com.tw
+tu8964.com
+.tubaholic.com
+.tube.com
+tube8.com
+||tube8.com
+.tube911.com
+||tube911.com
+.tubecup.com
+.tubegals.com
+.tubeislam.com
+|http://tubeislam.com
+.tubestack.com
+||tubewolf.com
+.tuibeitu.net
+.tuidang.org
+||tuidang.org
+.tuidang.se
+.tumutanzi.com
+|http://tumutanzi.com
+||tumview.com
+.tunein.com
+|http://tunein.com
+||tunnelbear.com
+||tunnelblick.net
+.tunnelr.com
+||tunnelr.com
+||tunsafe.com
+tuitwit.com
+.turansam.org
+.turbobit.net
+||turbobit.net
+.turbohide.com
+||turbohide.com
+||turkistantimes.com
+.tushycash.com
+|http://tushycash.com
+.tuvpn.com
+||tuvpn.com
+|http://tuzaijidi.com
+|http://*.tuzaijidi.com
+.tw01.org
+|http://tw01.org
+||use.typekit.net
+
+!---Tumblr---
+.tumblr.com
+||tumblr.com
+!--@@||assets.tumblr.com
+!--@@||data.tumblr.com
+!--@@||media.tumblr.com
+!--@@||static.tumblr.com
+!--@@||www.tumblr.com
+||lecloud.net
+||slutmoonbeam.com
+|http://blog.soylent.com
+
+.tv.com
+|http://tv.com
+tvants.com
+||forum.tvb.com
+||inews-api.tvb.com
+news.tvbs.com.tw
+.tvboxnow.com
+||tvboxnow.com
+tvider.com
+.tvmost.com.hk
+.tvplayvideos.com
+||tvunetworks.com
+.tw-blog.com
+|https://tw-blog.com
+.tw-npo.org
+.twaitter.com
+twapperkeeper.com
+||twapperkeeper.com
+||twaud.io
+.twaud.io
+.twavi.com
+twbbs.org
+||twblogger.com
+tweepmag.com
+.tweepml.org
+||tweepml.org
+.tweetbackup.com
+||tweetbackup.com
+tweetboard.com
+||tweetboard.com
+.tweetcs.com
+|http://tweetcs.com
+|http://deck.ly
+!-- Operation discontinued
+!--||tweete.net
+!--m.tweete.net
+||tweetedtimes.com
+!-- Operation discontinued
+!--tweetmeme.com
+tweetphoto.com
+||tweetphoto.com
+tweetree.com
+||tweetree.com
+.tweettunnel.com
+||tweettunnel.com
+||tweetwally.com
+tweetymail.com
+||twelve.today
+.tweez.net
+|http://tweez.net
+||twftp.org
+||twgreatdaily.com
+twibase.com
+.twibble.de
+||twibble.de
+twibbon.com
+||twibs.com
+.twicountry.org
+|http://twicountry.org
+twicsy.com
+.twiends.com
+|http://twiends.com
+.twifan.com
+|http://twifan.com
+twiffo.com
+||twiffo.com
+.twilightsex.com
+twilog.org
+twimbow.com
+twipple.jp
+||twipple.jp
+||twip.me
+twishort.com
+||twishort.com
+||twister.net.co
+twisternow.com
+twistory.net
+||twiggit.org
+twitgoo.com
+twitiq.com
+||twitiq.com
+.twitlonger.com
+||twitlonger.com
+|http://tl.gd/
+twitmania.com
+twitoaster.com
+||twitoaster.com
+||twitonmsn.com
+!--Same IP
+.twitstat.com
+||twitstat.com
+||tweepguide.com
+|http://twt.tl
+twittbot.net
+||ads-twitter.com
+||twttr.com
+||twitter4j.org
+.twittercounter.com
+||twittercounter.com
+twitterfeed.com
+.twittergadget.com
+||twittergadget.com
+.twitterkr.com
+||twitterkr.com
+||twittermail.com
+||twitterrific.com
+twittertim.es
+||twittertim.es
+twitthat.com
+||twitturk.com
+.twitturly.com
+||twitturly.com
+.twitzap.com
+twiyia.com
+.twtkr.com
+|http://twtkr.com
+.twnorth.org.tw
+||twreporter.org
+twskype.com
+twtrland.com
+twurl.nl
+.txxx.com
+.tycool.com
+||tycool.com
+
+!--typepad
+||typepad.com
+@@||www.typepad.com
+@@||static.typepad.com
+||blog.expofutures.com
+||contests.twilio.com
+!-lawprofessors.typepad.com/china_law_prof
+||typora.io
+
+!--------------------UU-------------------------
+||udomain.hk
+||upbit.com
+||demo.unlock-music.dev
+.u9un.com
+||u9un.com
+.ubddns.org
+|http://ubddns.org
+||uberproxy.net
+.uc-japan.org
+||uc-japan.org
+.srcf.ucam.org/salon/
+|http://china.ucanews.com/
+|http://hum*.uchicago.edu/faculty/ywang/history
+||uderzo.it
+.udn.com
+||udn.com
+||udn.com.tw
+udnbkk.com/bbs
+||uforadio.com.tw
+ufreevpn.com
+.ugo.com
+!--ghs
+||uhdwallpapers.org
+||uhrp.org
+.uighur.nl
+||uighur.nl
+uighurbiz.net
+.ulike.net
+ukcdp.co.uk
+||ultrasurf.us
+||ultravpn.com
+||ultravpn.fr
+ultraxs.com
+umich.edu/~falun
+||unblock.cn.com
+.unblocker.yt
+unblock-us.com
+||unblock-us.com
+.unblockdmm.com
+|http://unblockdmm.com
+||unblocksit.es
+uncyclomedia.org
+.uncyclopedia.hk/wiki
+|http://uncyclopedia.hk
+!--uncyclopedia.info
+|http://uncyclopedia.tw
+underwoodammo.com
+||underwoodammo.com
+||unholyknight.com
+.uni.cc
+||cldr.unicode.org
+.unification.net
+.unification.org.tw
+||unirule.cloud
+.unix100.com
+||unknownspace.org
+.unodedos.com
+unpo.org
+||unstable.icu
+||unwire.hk
+||uocn.org
+tor.updatestar.com
+||upghsbc.com
+.upholdjustice.org
+uploaded.net/file
+|http://uploaded.net/file
+|http://uploaded.to/file
+.uploadstation.com/file
+.upmedia.mg
+||upmedia.mg
+.upornia.com
+|http://upornia.com
+||uproxy.org
+||uptodown.com
+.upwill.org
+ur7s.com
+||urbandictionary.com
+||urbansurvival.com
+myshare.url.com.tw/
+||urlborg.com
+||urlparser.com
+us.to
+||usacn.com
+.usaip.eu
+||usaip.eu
+||uscnpm.org
+||uscardforum.com
+||usma.edu
+.usocctn.com
+||ustibetcommittee.org
+.ustream.tv
+||ustream.tv
+usus.cc
+.utopianpal.com
+||utopianpal.com
+||uujiasu.com
+.uvwxyz.xyz
+||uvwxyz.xyz
+.uwants.com
+||uwants.com
+.uwants.net
+uyghur.co.uk
+||uyghur-j.org
+||uyghuraa.org
+||uyghuramerican.org
+||uyghurbiz.org
+||uyghurcongress.org
+||uyghurpen.org
+||uyghurstudies.org
+||uyghurtribunal.com
+uygur.org
+|http://uymaarip.com/
+
+!--------------------VV-------------------------
+||vilanet.me
+||vewas.net
+||v2.help
+||vocaroo.com
+||vern.cc
+||v2fly.org
+.v2ray.com
+||v2ray.com
+||v2raycn.com
+||valeursactuelles.com
+.van001.com
+.van698.com
+.vanemu.cn
+.vanilla-jp.com
+.vanpeople.com
+||vansky.com
+||vaticannews.va
+||vcf-online.org
+||vcfbuilder.org
+.vegasred.com
+.velkaepocha.sk
+.venbbs.com
+.venchina.com
+.venetianmacao.com
+||venetianmacao.com
+veoh.com
+||vercel.app
+mysite.verizon.net
+vermonttibet.org
+||verybs.com
+.vft.com.tw
+.viber.com
+||viber.com
+.vica.info
+.victimsofcommunism.org
+||victimsofcommunism.org
+||vid.me
+||vidble.com
+videobam.com
+||videobam.com
+.videodetective.com
+.videomega.tv
+||videomega.tv
+.videomo.com
+videopediaworld.com
+.videopress.com
+.vidinfo.org/video
+vietdaikynguyen.com
+.vijayatemple.org
+||vilavpn.com
+vimeo.com
+||vimeo.com
+||vimperator.org
+||vincnd.com
+||vinniev.com
+|http://www.lib.virginia.edu/area-studies/Tibet/tibet.html
+.virtualrealporn.com
+||virtualrealporn.com
+visibletweets.com
+||viu.com
+.vivahentai4u.net
+
+!--apex not blocked, adding to reduce complexity
+||vivaldi.com
+
+.vivatube.com
+.vivthomas.com
+||vivthomas.com
+.vjav.com
+||vjav.com
+.vjmedia.com.hk
+.vllcs.org
+|http://vllcs.org
+||vmixcore.com
+||vnet.link
+.vocativ.com
+vocn.tv
+||vocus.cc
+||voicettank.org
+.vot.org
+||vot.org
+.vovo2000.com
+|http://vovo2000.com
+.voxer.com
+||voxer.com
+.voy.com
+||vpn.ac
+||vpn.net
+.vpn4all.com
+||vpn4all.com
+.vpnaccount.org
+|http://vpnaccount.org
+.vpnaccounts.com
+||vpnaccounts.com
+.vpncomparison.org
+.vpncup.com
+||vpncup.com
+vpnbook.com
+.vpncoupons.com
+|http://vpncoupons.com
+.vpndada.com
+||vpndada.com
+.vpnfan.com
+vpnfire.com
+.vpnforgame.net
+||vpnforgame.net
+||vpngate.jp
+.vpngate.net
+||vpngate.net
+.vpngratis.net
+vpnhq.com
+||vpnhub.com
+.vpnmaster.com
+||vpnmaster.com
+.vpnmentor.com
+||vpnmentor.com
+.vpninja.net
+||vpninja.net
+.vpnintouch.com
+vpnjack.com
+||vpnjack.com
+.vpnpick.com
+||vpnpick.com
+||vpnpop.com
+||vpnpronet.com
+||vpnproxymaster.com
+.vpnreactor.com
+||vpnreactor.com
+||vpnreviewz.com
+.vpnsecure.me
+||vpnsecure.me
+.vpnshazam.com
+||vpnshazam.com
+.vpnshieldapp.com
+||vpnshieldapp.com
+.vpnsp.com
+.vpntraffic.com
+.vpntunnel.com
+||vpntunnel.com
+.vpnuk.info
+||vpnuk.info
+||vpnunlimitedapp.com
+.vpnvip.com
+||vpnvip.com
+.vpnworldwide.com
+.vporn.com
+||vporn.com
+.vpser.net
+@@||vpser.net
+vraiesagesse.net
+||vrchat.com
+.vrmtr.com
+||vrporn.com
+||vtunnel.com
+||vuku.cc
+
+!--------------------WW-------------------------
+||wxw.moe
+||wxw.cat
+||walletconnect.com
+|https://w3s.link/ipfs
+||work2icu.org
+||wikiless.funami.tech
+lists.w3.org/archives/public
+||waffle1999.com
+.wahas.com
+waikeung.org/php_wind
+||wainao.me
+||wallmama.com
+||wallpapercasa.com
+.wallproxy.com
+@@||wallproxy.com.cn
+||wallsttv.com
+||waltermartin.com
+||waltermartin.org
+||www.wan-press.org
+||wanderinghorse.net
+||wangafu.net
+||wangjinbo.org
+.wangjinbo.org
+wanglixiong.com
+.wango.org
+||wango.org
+wangruoshui.net
+||want-daily.com
+wapedia.mobi/zhsimp
+||warroom.org
+||waselpro.com
+||watchinese.com
+||watchout.tw
+.wattpad.com
+||wattpad.com
+.watch8x.com
+||watchmygf.net
+||wav.tv
+||waybig.com
+||wd.bible
+.wdf5.com
+||wealth.com.tw
+.wearehairy.com
+.wearn.com
+||wearn.com
+|http://hkcoc.weather.com.hk
+||hudatoriq.web.id
+||web2project.net
+webbang.net
+.webevader.org
+.webfreer.com
+weblagu.com
+.webjb.org
+.webrush.net
+webs-tv.net
+.websitepulse.com/help/testtools.china-test
+|http://www.websnapr.com
+.webwarper.net
+|http://webwarper.net
+webworkerdaily.com
+||wechatlawsuit.com
+||wefightcensorship.org
+.wefong.com
+weiboleak.com
+.weihuo.org
+||weijingsheng.org
+.weiming.info
+||weiming.info
+weiquanwang.org
+|http://weisuo.ws
+.welovecock.com
+||welt.de
+.wemigrate.org
+|http://wemigrate.org
+wengewang.com
+||wengewang.org
+.wenxuecity.com
+||wenxuecity.com
+.wenyunchao.com
+||wenyunchao.com
+.westca.com
+||westca.com
+||westernwolves.com
+.westkit.net
+||westpoint.edu
+.westernshugdensociety.org
+wetpussygames.com
+.wetplace.com
+||wezone.net
+.wforum.com
+||wforum.com/
+.whatblocked.com
+||whatblocked.com
+||wheelockslatin.com
+.whippedass.com
+!--|http://who.is/
+.whoer.net
+||whoer.net
+whotalking.com
+whylover.com
+||whyx.org
+||wikileaks.ch
+||wikileaks.com
+||wikileaks.de
+||wikileaks.eu
+||wikileaks.lu
+.wikileaks.org
+||wikileaks.org
+||wikileaks.pl
+.wikileaks-forum.com
+||wilsoncenter.org
+.williamhill.com
+||collateralmurder.com
+||collateralmurder.org
+wikilivres.info/wiki/%E9%9B%B6%E5%85%AB%E5%AE%AA%E7%AB%A0
+||wikimapia.org
+.wikiwand.com
+||wikiwand.com
+||casino.williamhill.com
+||sports.williamhill.com
+||vegas.williamhill.com
+||willw.net
+.windscribe.com
+||windscribe.com
+||wingy.site
+.winning11.com
+||wionews.com
+||wiredbytes.com
+||wiredpen.com
+||wireguard.com
+!--||wireshark.org
+.wisdompubs.org
+.wisevid.com
+||wisevid.com
+||whispersystems.org
+.witnessleeteaching.com
+||witopia.net
+.wjbk.org
+||wjbk.org
+||wmflabs.org
+||wn.com
+||wnacg.com
+||wnacg.org
+||wo.tc
+||woeser.com
+||wokar.org
+||wolfax.com
+||wombo.ai
+||woolyss.com
+||woopie.jp
+||woopie.tv
+||workatruna.com
+||workerempowerment.org
+.worldcat.org
+worldjournal.com
+.worldvpn.net
+||worldvpn.net
+
+||videopress.com
+.wordpress.com
+|http://*.wordpress.com
+||chenshan20042005.wordpress.com
+||chinaview.wordpress.com
+||cnbbnews.wordpress.com
+||freedominfonetweb.wordpress.com
+||hka8964.wordpress.com
+||hkanews.wordpress.com
+||hqsbnet.wordpress.com
+||hqsbonline.wordpress.com
+||investigating.wordpress.com
+||jobnewera.wordpress.com
+||matthewdgreen.wordpress.com
+||minghuiyw.wordpress.com
+||wo3ttt.wordpress.com
+||sujiatun.wordpress.com
+||xijie.wordpress.com
+||ifreechina.wordpress.com
+||wp.com
+
+!-||wormsculptor.com
+.wow.com
+||wowporn.com
+||wowgirls.com
+.wowrk.com
+.woyaolian.org
+|http://woyaolian.org
+.wpoforum.com
+||wpoforum.com
+wrchina.org
+wretch.cc
+||writesonic.com
+.wsj.com
+||wsj.com
+.wsj.net
+||wsj.net
+.wtbn.org
+.wtfpeople.com
+wuerkaixi.com
+||wufafangwen.com
+||wufi.org.tw
+wujie.net
+wujieliulan.com
+||wujieliulan.com
+||wuw.red
+.wwitv.com
+||wwitv.com
+wzyboy.im/post/160
+
+!--------------------XX-------------------------
+||www.xicons.org
+||x.ai
+||xt.com
+||xt.pub
+||x.co
+.x-berry.com
+||x-berry.com
+||x-art.com
+||x-wall.org
+||x3guide.com
+xanga.com
+||xbabe.com
+.xbookcn.com
+||xbookcn.com
+||xcafe.in
+||xcity.jp
+.xcritic.com
+||xerotica.com
+destiny.xfiles.to/ubbthreads
+||xfxssr.me
+.xgmyd.com
+||xgmyd.com
+xhamster.com
+||xhamster.com
+.xianba.net
+.xianjian.tw
+|http://xianjian.tw
+.xiaobaiwu.com
+.xiaochuncnjp.com
+.xiaohexie.com
+||xiaolan.me
+||xiaoma.org
+||xiaohexie.com
+||xiaxiaoqiang.net
+xiezhua.com
+.xihua.es
+forum.xinbao.de/forum
+.xing.com
+|http://xing.com
+||xinjiangpolicefiles.org
+.xinmiao.com.hk
+||xinmiao.com.hk
+xinsheng.net
+xinshijue.com
+.xiongpian.com
+.xiuren.org
+xizang-zhiye.org
+xjp.cc
+||xjp.cc
+||xjtravelguide.com
+||xml-training-guide.com
+xmovies.com
+||xnxx.com
+!--||xnxx-cdn.com
+xpdo.net
+||xpud.org
+.xrentdvd.com
+||xtube.com
+||xuchao.org
+xuchao.net
+||xuchao.net
+xvideo.cc
+.xvideos.com
+||xvideos.com
+||xvideos-cdn.com
+||xvideos.es
+||xvbelink.com
+||xvinlink.com
+||xsden.info
+.xxbbx.com
+.xxlmovies.com
+||xxx.com
+.xxx.xxx
+|http://xxx.xxx
+.xxxfuckmom.com
+||xxxx.com.au
+.xxxymovies.com
+|http://xxxymovies.com
+xys.org
+xysblogs.org
+
+!--------------------YY-------------------------
+||yangzhi.org
+||storage.yandex.net
+||y2mate.com
+||yadi.sk
+||yakbutterblues.com
+||yam.com
+||yam.org.tw
+||yande.re
+||disk.yandex.com
+||disk.yandex.ru
+.yanghengjun.com
+.yasni.co.uk
+||yasni.co.uk
+||yasukuni.or.jp
+.yayabay.com/forum
+||news.ycombinator.com
+.ydy.com
+.yeahteentube.com
+||yeahteentube.com
+||yecl.net
+||yeelou.com
+||yeeyi.com
+yegle.net
+||yegle.net
+.yes.xxx
+||yes123.com.tw
+||yesasia.com
+||yesasia.com.hk
+.yes-news.com
+|http://yes-news.com
+.yespornplease.com
+||yespornplease.com
+|http://yeyeclub.com
+!--yfrog.com
+||yhcw.net
+.yibada.com
+||yibaochina.com
+.yidio.com
+||yidio.com
+||yigeni.com
+yilubbs.com
+||s.yimg.com
+.yipub.com
+||yipub.com
+yinlei.org/mt
+.yizhihongxing.com
+||yizhihongxing.com
+.yobt.com
+.yobt.tv
+||yobt.tv
+.yogichen.org
+||yogichen.org
+.yolasite.com
+.yomiuri.co.jp
+yong.hu
+.yorkbbs.ca
+||you.com
+||youxu.info
+.youjizz.com
+||youjizz.com
+.youmaker.com
+||youmaker.com
+.youngpornvideos.com
+youngspiration.hk
+.youpai.org
+||youpai.org
+.your-freedom.net
+||yourepeat.com
+.yousendit.com
+||yousendit.com
+.youthnetradio.org/tmit/forum
+blog.youthwant.com.tw
+me.youthwant.com.tw
+share.youthwant.com.tw
+topic.youthwant.com.tw
+.youporn.com
+||youporn.com
+.youporngay.com
+||youporngay.com
+.yourlisten.com
+||yourlisten.com
+.yourlust.com
+||yourlust.com
+youversion.com
+||youversion.com
+ytht.net
+yuanming.net
+.yuanzhengtang.org
+.yulghun.com
+||yulghun.com
+||yunchao.net
+||yunomi.tokyo
+.yuvutu.com
+||yvesgeleyn.com
+.ywpw.com/forums/history/post/A0/p0/html/227
+yx51.net
+.yyii.org
+||yyii.org
+||yyjlymb.xyz
+||yysub.net
+.yzzk.com
+||yzzk.com
+
+!--------------------ZZ-------------------------
+||z-library.sk
+||z-lib.fm
+||z-lib.gd
+||z-lib.gl
+||z-lib.fo
+||zodgame.xyz
+||zhongzidi.com
+||zooqle.com
+||z-lib.io
+||z-lib.org
+zacebook.com
+.zalmos.com
+||zalmos.com
+||zaobao.com.sg
+||zdnet.com.tw
+.zello.com
+||zello.com
+.zengjinyan.org
+.zenmate.com
+||zenmate.com
+||zenmate.com.ru
+||zerohedge.com
+||zeronet.io
+!--www.zfreet.com/post/usejump-browns.html
+.zfreet.com
+.zhangboli.net
+||zhangtianliang.com
+||zhanlve.org
+zhenghui.org
+.zhengjian.org
+||zhengjian.org
+zhengwunet.org
+|http://zhenxiang.biz
+zhongguo.ca
+|http://zhongguorenquan.org
+zhongguotese.net
+||zhongguotese.net
+.zhoushuguang.com
+.zhuanxing.cn
+||zhuatieba.com
+zhuichaguoji.org
+||zhuichaguoji.org
+||zi.media
+|http://book.zi5.me
+.ziddu.com/download
+||zillionk.com
+.zinio.com
+||zinio.com
+.ziporn.com
+.zippyshare.com
+realforum.zkiz.com
+!--||zlib.net
+||zmedia.com.tw
+||zmw.cn
+.zodgame.us
+zomobo.net
+.zonaeuropa.com
+||zonaeuropa.com
+||zonghexinwen.com
+||zoogvpn.com
+||zootool.com
+.zoozle.net
+||zophar.net
+writer.zoho.com
+||zorrovpn.com
+||zpn.im
+||zspeeder.me
+.zsrhao.com
+.zuo.la
+||zuo.la
+||zuobiao.me
+.zuola.com
+||zuola.com
+||zvereff.com
+||zyxel.com
+.zzcartoon.com
+!##############General List End#################
+
+!###########Supplemental List Start#############
+!#############Supplemental List End#############
+
+!################Whitelist Start################
+@@||www.ettoday.net
+
+@@||aliyun.com
+@@||baidu.com
+@@||chinaso.com
+@@||chinaz.com
+@@|http://nrch.culture.tw/
+@@||i.pki.goog
+!---Some are powered by GuXiang (BGP), please comment off if
+!---you encounter connectivity issues.
+@@||adservice.google.com
+!--ISP cache works sometimes, verified at drpeng + gehua.
+@@||dl.google.com
+!--@@||kh.google.com
+!--@@||khm.google.com
+!--@@||khm0.google.com
+!--@@||khm1.google.com
+!--@@||khm2.google.com
+!--@@||khm3.google.com
+!--@@||khmdb.google.com
+@@||tools.google.com
+@@||clientservices.googleapis.com
+@@||fonts.googleapis.com
+!--@@||khm.googleapis.com
+!--@@||khm0.googleapis.com
+!--@@||khm1.googleapis.com
+!--@@||khm2.googleapis.com
+!--@@||khm3.googleapis.com
+!--@@||khmdb.googleapis.com
+@@||update.googleapis.com
+@@||safebrowsing.googleapis.com
+@@||connectivitycheck.gstatic.com
+@@||csi.gstatic.com
+@@||fonts.gstatic.com
+@@||ssl.gstatic.com
+@@||haosou.com
+@@||ip.cn
+@@||jike.com
+@@||translate.google.cn
+@@|http://www.google.cn/maps
+@@||http2.golang.org
+@@||gov.cn
+@@||ocsp.pki.goog
+@@||qq.com
+@@||sina.cn
+@@||sina.com.cn
+@@||sogou.com
+@@||so.com
+@@||soso.com
+@@||uluai.com.cn
+@@||weibo.com
+@@||yahoo.cn
+@@||youdao.com
+@@||zhongsou.com
+@@|http://ime.baidu.jp
+!################Whitelist End##################
+!---------------------EOF-----------------------
diff --git a/download.sh b/download.sh
deleted file mode 100755
index 9b10210..0000000
--- a/download.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-set -e -f -u -x
-
-# This script syncs companies DB that we bundle with AdGuard Home. The source
-# for this database is https://github.com/AdguardTeam/companiesdb.
-#
-trackers_url='https://raw.githubusercontent.com/AdguardTeam/companiesdb/main/dist/trackers.json'
-output='./trackers.json'
-readonly trackers_url output
-
-curl -o "$output" -v "$trackers_url"
diff --git a/download/index.html b/download/index.html
deleted file mode 100644
index a527b45..0000000
--- a/download/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-
\ No newline at end of file
diff --git a/static/domain-info/domains/domain-info.json b/static/domain-info/domains/domain-info.json
index 6ca08f9..12edb4f 100644
--- a/static/domain-info/domains/domain-info.json
+++ b/static/domain-info/domains/domain-info.json
@@ -440,18 +440,60 @@
},
"company": "广州市动景计算机科技有限公司"
},
- "腾讯": {
- "微信": {
- "name": "微信",
- "categoryId": 7,
- "url": {
- "1": "https://wx.qq.com/",
- "2": "https://weixin.qq.com/",
- "3": "https://res.wx.qq.com/",
- "4": "dns.weixin.qq.com",
- "5": "pc.weixin.qq.com"
+ "腾讯系列": {
+ "微信相关": {
+ "微信": {
+ "name": "微信",
+ "categoryId": 7,
+ "url": {
+ "1": "https://wx.qq.com/",
+ "2": "https://weixin.qq.com/",
+ "3": "https://res.wx.qq.com/",
+ "4": "dns.weixin.qq.com",
+ "5": "pc.weixin.qq.com"
+ },
+ "icon": "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico"
},
- "icon": "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico"
+ "微信公众号文章缩略图CDN节点": {
+ "name": "微信公众号文章缩略图与广告图片分发CDN节点",
+ "categoryId": 2,
+ "url": "wxsnsdythumb.wxs.qq.com",
+ "icon": "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico"
+ },
+ "微信公众号动态内容主CDN节点": {
+ "name": "微信公众号动态内容主CDN/文章正文图片素材分发",
+ "categoryId": 2,
+ "url": "wxsnsdy.wxs.qq.com",
+ "icon": "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico"
+ },
+ "微信公众号内容备用CDN节点": {
+ "name": "微信公众号内容备用CDN/图片资源访问分流服务",
+ "categoryId": 2,
+ "url": "snsdy.tc.qq.com",
+ "icon": "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico"
+ },
+ "微信生态视频缩略图CDN节点": {
+ "name": "微信生态视频缩略图CDN/公众号视频号封面截图分发",
+ "categoryId": 2,
+ "url": "vweixinthumb.tc.qq.com",
+ "icon": "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico"
+ }
+ },
+ "腾讯视频相关": {
+ "腾讯视频图片缓存CDN节点": {
+ "name": "腾讯视频封面、海报、截图等静态图片CDN分发节点",
+ "categoryId": 2,
+ "url": "imgcache.tc.qq.com",
+ "icon": "https://v.qq.com/favicon.ico"
+ }
+ },
+ "QQ音乐相关": {
+ "QQ音乐音频资源CDN节点": {
+ "name": "QQ音乐音频资源与封面图片CDN分发节点",
+ "categoryId": 2,
+ "url": "tsmusic.tc.qq.com",
+ "icon": "https://y.qq.com/favicon.ico"
+ }
},
"腾讯会议核心代理服务": {
"name": "腾讯会议核心代理服务",
diff --git a/static/domain-info/tracker/trackers.json b/static/domain-info/tracker/trackers.json
index dddc4b7..9c80c7e 100644
--- a/static/domain-info/tracker/trackers.json
+++ b/static/domain-info/tracker/trackers.json
@@ -14312,6 +14312,13 @@
"companyId": "tencent",
"source": "AdGuard"
},
+ "weixin":{
+ "name": "微信广告",
+ "categoryId": 12,
+ "url": "https://wxsnsdythumb.wxs.qq.com",
+ "companyId": "tencent",
+ "source": "本地"
+ },
"qrius": {
"name": "Qrius",
"categoryId": 7,
diff --git a/static/js/dashboard.js b/static/js/dashboard.js
index 49aa4e8..986f01a 100644
--- a/static/js/dashboard.js
+++ b/static/js/dashboard.js
@@ -34,7 +34,7 @@ let errorQueries = 0;
// 初始化仪表盘
async function initDashboard() {
try {
- console.log('页面打开时强制刷新数据...');
+
// 优先加载初始数据,确保页面显示最新信息
await loadDashboardData();
@@ -63,14 +63,12 @@ function connectWebSocket() {
const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const wsUrl = `${wsProtocol}//${window.location.host}/ws/stats`;
- console.log('正在连接WebSocket:', wsUrl);
// 创建WebSocket连接
dashboardWsConnection = new WebSocket(wsUrl);
// 连接打开事件
dashboardWsConnection.onopen = function() {
- console.log('WebSocket连接已建立');
showNotification('数据更新成功', 'success');
// 清除重连计时器
@@ -86,7 +84,6 @@ function connectWebSocket() {
const data = JSON.parse(event.data);
if (data.type === 'initial_data' || data.type === 'stats_update') {
- console.log('收到实时数据更新');
processRealTimeData(data.data);
}
} catch (error) {
@@ -122,7 +119,6 @@ function setupReconnect() {
}
const reconnectDelay = 5000; // 5秒后重连
- console.log(`将在${reconnectDelay}ms后尝试重新连接WebSocket`);
dashboardWsReconnectTimer = setTimeout(() => {
connectWebSocket();
@@ -139,7 +135,6 @@ function processRealTimeData(stats) {
lastProcessedTime = now;
try {
- console.log('收到实时数据:', stats);
// 确保stats是有效的对象
if (!stats || typeof stats !== 'object') {
@@ -179,15 +174,6 @@ function processRealTimeData(stats) {
allowedQueries = Number(stats.allowedQueries) || 0;
}
- console.log('实时数据处理完成,更新后的值:', {
- totalQueries,
- allowedQueries,
- blockedQueries,
- errorQueries
- });
-
-
-
if (document.getElementById('top-query-type')) {
const queryType = stats.topQueryType || '---';
document.getElementById('top-query-type').textContent = queryType;
@@ -472,7 +458,6 @@ function cleanupResources() {
// 更新统计卡片
function updateStatsCards(stats) {
- console.log('更新统计卡片,收到数据:', stats);
// 适配不同的数据结构
// 保存当前显示的值,用于在数据缺失时保留
@@ -876,7 +861,6 @@ function updateStatsCards(stats) {
// 更新Top屏蔽域名表格
async function updateTopBlockedTable(domains) {
- console.log('更新Top屏蔽域名表格,收到数据:', domains);
const tableBody = document.getElementById('top-blocked-table');
let tableData = [];
@@ -902,7 +886,6 @@ async function updateTopBlockedTable(domains) {
{ name: '---.---.---', count: '---' },
{ name: '---.---.---', count: '---' }
];
- console.log('使用示例数据填充Top屏蔽域名表格');
}
// 计算总拦截次数
@@ -985,12 +968,10 @@ async function updateTopBlockedTable(domains) {
// 更新最近屏蔽域名表格
function updateRecentBlockedTable(domains) {
- console.log('更新最近屏蔽域名表格,收到数据:', domains);
const tableBody = document.getElementById('recent-blocked-table');
// 确保tableBody存在,因为最近屏蔽域名卡片可能已被移除
if (!tableBody) {
- console.log('未找到recent-blocked-table元素,跳过更新');
return;
}
@@ -1015,7 +996,6 @@ function updateRecentBlockedTable(domains) {
{ name: '---.---.---', timestamp: now - 45 * 60 * 1000, type: '追踪' },
{ name: '---.---.---', timestamp: now - 60 * 60 * 1000, type: '恶意' }
];
- console.log('使用示例数据填充最近屏蔽域名表格');
}
let html = '';
@@ -1217,7 +1197,6 @@ function isPrivateIP(ip) {
// 更新TOP客户端表格
async function updateTopClientsTable(clients) {
- console.log('更新TOP客户端表格,收到数据:', clients);
const tableBody = document.getElementById('top-clients-table');
// 确保tableBody存在
@@ -1260,7 +1239,6 @@ async function updateTopClientsTable(clients) {
{ ip: '---.---.---', count: '---' },
{ ip: '---.---.---', count: '---' }
];
- console.log('使用示例数据填充TOP客户端表格');
}
@@ -1291,7 +1269,6 @@ async function updateTopClientsTable(clients) {
// 更新请求域名排行表格
async function updateTopDomainsTable(domains) {
- console.log('更新请求域名排行表格,收到数据:', domains);
const tableBody = document.getElementById('top-domains-table');
// 确保tableBody存在
@@ -1325,7 +1302,6 @@ async function updateTopDomainsTable(domains) {
{ name: 'twitter.com', count: 35 },
{ name: 'youtube.com', count: 30 }
];
- console.log('使用示例数据填充请求域名排行表格');
}
// 计算总请求次数
@@ -1415,7 +1391,6 @@ let detailedCurrentTimeRange = '24h'; // 详细图表当前时间范围
// 初始化时间范围切换
function initTimeRangeToggle() {
- console.log('初始化时间范围切换');
// 查找所有可能的时间范围按钮类名
const allTimeRangeButtons = document.querySelectorAll('.time-range-btn, .time-range-button, .timerange-btn, button[data-range]');
@@ -1426,7 +1401,6 @@ function initTimeRangeToggle() {
return !chartModal || !chartModal.contains(button);
});
- console.log('找到时间范围按钮数量:', timeRangeButtons.length, '排除了图表模态框内的按钮');
if (timeRangeButtons.length === 0) {
console.warn('未找到时间范围按钮,请检查HTML中的类名');
@@ -1471,13 +1445,11 @@ function initTimeRangeToggle() {
// 移除鼠标悬停提示
- console.log('为按钮设置初始样式:', button.textContent.trim(), '索引:', index, '类名:', Array.from(button.classList).join(', '));
button.addEventListener('click', function(event) {
event.preventDefault();
event.stopPropagation();
- console.log('点击按钮:', button.textContent.trim(), '索引:', index);
// 重置所有按钮为非选中状态
timeRangeButtons.forEach((btn, btnIndex) => {
@@ -1520,7 +1492,6 @@ function initTimeRangeToggle() {
}
}
currentTimeRange = rangeValue;
- console.log('更新时间范围为:', currentTimeRange);
// 重新加载数据
loadDashboardData();
@@ -1554,7 +1525,6 @@ function initTimeRangeToggle() {
defaultButton.classList.add('active');
defaultButton.classList.add(...defaultStyle.active);
defaultButton.classList.add(...defaultStyle.activeHover);
- console.log('默认选中24小时按钮:', defaultButton.textContent.trim());
// 设置默认时间范围为24小时
currentTimeRange = '24h';
@@ -1877,12 +1847,10 @@ function initExpandButton() {
const closeModalBtn = document.getElementById('close-modal-btn'); // 修复ID匹配
// 添加调试日志
- console.log('初始化展开按钮功能:', { expandBtn, chartModal, closeModalBtn });
if (expandBtn && chartModal && closeModalBtn) {
// 展开按钮点击事件
expandBtn.addEventListener('click', () => {
- console.log('展开按钮被点击');
// 显示浮窗
chartModal.classList.remove('hidden');
@@ -1902,7 +1870,6 @@ function initExpandButton() {
// 关闭按钮点击事件
closeModalBtn.addEventListener('click', () => {
- console.log('关闭按钮被点击');
chartModal.classList.add('hidden');
});
@@ -1910,7 +1877,6 @@ function initExpandButton() {
chartModal.addEventListener('click', (e) => {
// 检查点击目标是否是遮罩层本身(即最外层div)
if (e.target === chartModal) {
- console.log('点击遮罩层关闭');
chartModal.classList.add('hidden');
}
});
@@ -1918,7 +1884,6 @@ function initExpandButton() {
// ESC键关闭浮窗
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && !chartModal.classList.contains('hidden')) {
- console.log('ESC键关闭浮窗');
chartModal.classList.add('hidden');
}
});
@@ -1933,7 +1898,6 @@ function initDetailedTimeRangeToggle() {
const chartModal = document.getElementById('chart-modal');
const detailedTimeRangeButtons = chartModal ? chartModal.querySelectorAll('.time-range-btn') : [];
- console.log('初始化详细图表时间范围切换,找到按钮数量:', detailedTimeRangeButtons.length);
// 初始化详细图表的默认状态,与主图表保持一致
detailedCurrentTimeRange = currentTimeRange;
@@ -2016,7 +1980,6 @@ function initDetailedTimeRangeToggle() {
}
}
detailedCurrentTimeRange = rangeValue;
- console.log('详细图表更新时间范围为:', detailedCurrentTimeRange);
// 重新绘制详细图表
drawDetailedDNSRequestsChart();
@@ -2026,7 +1989,6 @@ function initDetailedTimeRangeToggle() {
// 绘制详细的DNS请求趋势图表
function drawDetailedDNSRequestsChart() {
- console.log('绘制详细DNS请求趋势图表,时间范围:', detailedCurrentTimeRange);
const ctx = document.getElementById('detailed-dns-requests-chart');
if (!ctx) {
@@ -2270,8 +2232,6 @@ function drawDNSRequestsChart() {
// 更新图表数据
function updateCharts(stats, queryTypeStats) {
- console.log('更新图表,收到统计数据:', stats);
- console.log('查询类型统计数据:', queryTypeStats);
// 空值检查
if (!stats) {
@@ -2497,7 +2457,6 @@ function getHostsCountFromStats(stats) {
// 初始化统计卡片折线图
function initStatCardCharts() {
- console.log('===== 开始初始化统计卡片折线图 =====');
// 清理已存在的图表实例
for (const key in statCardCharts) {
@@ -2509,7 +2468,6 @@ function initStatCardCharts() {
statCardHistoryData = {};
// 检查Chart.js是否加载
- console.log('Chart.js是否可用:', typeof Chart !== 'undefined');
// 统计卡片配置信息
const cardConfigs = [
@@ -2525,7 +2483,6 @@ function initStatCardCharts() {
{ id: 'hosts-chart', color: '#16a085', label: 'Hosts条目数' }
];
- console.log('图表配置:', cardConfigs);
cardConfigs.forEach(config => {
const canvas = document.getElementById(config.id);
@@ -3011,7 +2968,6 @@ function addRetryEventListeners() {
const retryTopClientsBtn = document.getElementById('retry-top-clients');
if (retryTopClientsBtn) {
retryTopClientsBtn.addEventListener('click', async () => {
- console.log('重试获取TOP客户端数据');
const clientsData = await api.getTopClients();
if (clientsData && !clientsData.error && Array.isArray(clientsData) && clientsData.length > 0) {
// 使用真实数据
@@ -3030,7 +2986,6 @@ function addRetryEventListeners() {
const retryTopDomainsBtn = document.getElementById('retry-top-domains');
if (retryTopDomainsBtn) {
retryTopDomainsBtn.addEventListener('click', async () => {
- console.log('重试获取TOP域名数据');
const domainsData = await api.getTopDomains();
if (domainsData && !domainsData.error && Array.isArray(domainsData) && domainsData.length > 0) {
// 使用真实数据
@@ -3068,7 +3023,6 @@ window.addEventListener('DOMContentLoaded', () => {
});
});// 重写loadDashboardData函数,修复语法错误
async function loadDashboardData() {
- console.log('开始加载仪表盘数据');
try {
// 并行获取所有数据,提高加载效率
const [stats, queryTypeStatsResult, topBlockedDomainsResult, recentBlockedDomainsResult, topClientsResult] = await Promise.all([
@@ -3093,26 +3047,22 @@ async function loadDashboardData() {
return;
}
- console.log('统计数据:', stats);
// 处理查询类型统计数据
let queryTypeStats = null;
if (queryTypeStatsResult) {
- console.log('查询类型统计数据:', queryTypeStatsResult);
queryTypeStats = queryTypeStatsResult;
} else if (stats.dns && stats.dns.QueryTypes) {
queryTypeStats = Object.entries(stats.dns.QueryTypes).map(([type, count]) => ({
type,
count
}));
- console.log('从stats中提取的查询类型统计:', queryTypeStats);
}
// 处理TOP被屏蔽域名
let topBlockedDomains = [];
if (topBlockedDomainsResult && Array.isArray(topBlockedDomainsResult)) {
topBlockedDomains = topBlockedDomainsResult;
- console.log('TOP被屏蔽域名:', topBlockedDomains);
} else {
topBlockedDomains = [
{ domain: 'example-blocked.com', count: 15, lastSeen: new Date().toISOString() },
@@ -3125,7 +3075,6 @@ async function loadDashboardData() {
let recentBlockedDomains = [];
if (recentBlockedDomainsResult && Array.isArray(recentBlockedDomainsResult)) {
recentBlockedDomains = recentBlockedDomainsResult;
- console.log('最近屏蔽域名:', recentBlockedDomains);
} else {
recentBlockedDomains = [
{ domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() },
@@ -3145,7 +3094,6 @@ async function loadDashboardData() {
let topClients = [];
if (topClientsResult && !topClientsResult.error && Array.isArray(topClientsResult) && topClientsResult.length > 0) {
topClients = topClientsResult;
- console.log('TOP客户端:', topClients);
} else {
console.warn('获取TOP客户端失败或数据无效,使用模拟数据');
topClients = [
@@ -3162,7 +3110,6 @@ async function loadDashboardData() {
let topDomains = [];
try {
const domainsData = await api.getTopDomains();
- console.log('TOP域名:', domainsData);
if (domainsData && !domainsData.error && Array.isArray(domainsData) && domainsData.length > 0) {
topDomains = domainsData;
diff --git a/static/js/logs.js b/static/js/logs.js
index 4a7dfd2..f64897e 100644
--- a/static/js/logs.js
+++ b/static/js/logs.js
@@ -7,7 +7,7 @@ let logsPerPage = 30; // 默认显示30条记录
let currentFilter = '';
let currentSearch = '';
let logsChart = null;
-let currentSortField = '';
+let currentSortField = 'timestamp'; // 默认按时间排序,显示最新记录
let currentSortDirection = 'desc'; // 默认降序
// IP地理位置缓存(检查是否已经存在,避免重复声明)
@@ -165,15 +165,12 @@ async function loadTrackersDatabase() {
// 加载域名信息数据库
async function loadDomainInfoDatabase() {
- console.log('开始加载域名信息数据库');
if (domainInfoLoaded) {
- console.log('域名信息数据库已加载,直接返回');
return domainInfoDatabase;
}
if (domainInfoLoading) {
- console.log('域名信息数据库正在加载中,等待完成');
// 等待正在进行的加载完成
while (domainInfoLoading) {
await new Promise(resolve => setTimeout(resolve, 100));
@@ -184,7 +181,6 @@ async function loadDomainInfoDatabase() {
domainInfoLoading = true;
try {
- console.log('发起请求获取域名信息数据库');
const response = await fetch('domain-info/domains/domain-info.json');
if (!response.ok) {
@@ -194,9 +190,7 @@ async function loadDomainInfoDatabase() {
return domainInfoDatabase;
}
- console.log('域名信息数据库请求成功,开始解析JSON');
domainInfoDatabase = await response.json();
- console.log('域名信息数据库解析成功,包含', Object.keys(domainInfoDatabase.domains || {}).length, '个公司');
domainInfoLoaded = true;
return domainInfoDatabase;
} catch (error) {
@@ -206,7 +200,6 @@ async function loadDomainInfoDatabase() {
return domainInfoDatabase;
} finally {
domainInfoLoading = false;
- console.log('域名信息数据库加载完成');
}
}
@@ -247,10 +240,8 @@ async function isDomainInTrackerDatabase(domain) {
// 根据域名查找对应的网站信息
async function getDomainInfo(domain) {
- console.log('开始查找域名信息,域名:', domain);
if (!domainInfoDatabase || !domainInfoLoaded) {
- console.log('域名信息数据库未加载,调用loadDomainInfoDatabase');
await loadDomainInfoDatabase();
}
@@ -261,29 +252,23 @@ async function getDomainInfo(domain) {
// 规范化域名,移除可能的端口号
const normalizedDomain = domain.replace(/:\d+$/, '').toLowerCase();
- console.log('规范化后的域名:', normalizedDomain);
// 遍历所有公司
- console.log('开始遍历公司,总公司数:', Object.keys(domainInfoDatabase.domains).length);
for (const companyKey in domainInfoDatabase.domains) {
if (domainInfoDatabase.domains.hasOwnProperty(companyKey)) {
- console.log('检查公司:', companyKey);
const companyData = domainInfoDatabase.domains[companyKey];
const companyName = companyData.company || companyKey;
// 遍历公司下的所有网站和类别
for (const websiteKey in companyData) {
if (companyData.hasOwnProperty(websiteKey) && websiteKey !== 'company') {
- console.log(' 检查网站/类别:', websiteKey);
const website = companyData[websiteKey];
// 如果有URL属性,直接检查域名
if (website.url) {
// 处理字符串类型的URL
if (typeof website.url === 'string') {
- console.log(' 检查字符串URL:', website.url);
if (isDomainMatch(website.url, normalizedDomain, website.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
return {
name: website.name,
icon: website.icon,
@@ -295,13 +280,10 @@ async function getDomainInfo(domain) {
}
// 处理对象类型的URL
else if (typeof website.url === 'object') {
- console.log(' 检查对象类型URL,包含', Object.keys(website.url).length, '个URL');
for (const urlKey in website.url) {
if (website.url.hasOwnProperty(urlKey)) {
const urlValue = website.url[urlKey];
- console.log(' 检查URL', urlKey, ':', urlValue);
if (isDomainMatch(urlValue, normalizedDomain, website.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
return {
name: website.name,
icon: website.icon,
@@ -315,18 +297,14 @@ async function getDomainInfo(domain) {
}
} else if (typeof website === 'object' && website !== null) {
// 没有URL属性,可能是嵌套的类别
- console.log(' 发现嵌套类别,进一步检查');
for (const nestedWebsiteKey in website) {
if (website.hasOwnProperty(nestedWebsiteKey) && nestedWebsiteKey !== 'company') {
- console.log(' 检查嵌套网站/类别:', nestedWebsiteKey);
const nestedWebsite = website[nestedWebsiteKey];
if (nestedWebsite.url) {
// 处理字符串类型的URL
if (typeof nestedWebsite.url === 'string') {
- console.log(' 检查字符串URL:', nestedWebsite.url);
if (isDomainMatch(nestedWebsite.url, normalizedDomain, nestedWebsite.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
return {
name: nestedWebsite.name,
icon: nestedWebsite.icon,
@@ -338,13 +316,10 @@ async function getDomainInfo(domain) {
}
// 处理对象类型的URL
else if (typeof nestedWebsite.url === 'object') {
- console.log(' 检查对象类型URL,包含', Object.keys(nestedWebsite.url).length, '个URL');
for (const urlKey in nestedWebsite.url) {
if (nestedWebsite.url.hasOwnProperty(urlKey)) {
const urlValue = nestedWebsite.url[urlKey];
- console.log(' 检查URL', urlKey, ':', urlValue);
if (isDomainMatch(urlValue, normalizedDomain, nestedWebsite.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
return {
name: nestedWebsite.name,
icon: nestedWebsite.icon,
@@ -358,18 +333,14 @@ async function getDomainInfo(domain) {
}
} else if (typeof nestedWebsite === 'object' && nestedWebsite !== null) {
// 嵌套类别中的嵌套类别,递归检查
- console.log(' 发现二级嵌套类别,进一步检查');
for (const secondNestedWebsiteKey in nestedWebsite) {
if (nestedWebsite.hasOwnProperty(secondNestedWebsiteKey) && secondNestedWebsiteKey !== 'company') {
- console.log(' 检查二级嵌套网站:', secondNestedWebsiteKey);
const secondNestedWebsite = nestedWebsite[secondNestedWebsiteKey];
if (secondNestedWebsite.url) {
// 处理字符串类型的URL
if (typeof secondNestedWebsite.url === 'string') {
- console.log(' 检查字符串URL:', secondNestedWebsite.url);
if (isDomainMatch(secondNestedWebsite.url, normalizedDomain, secondNestedWebsite.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
return {
name: secondNestedWebsite.name,
icon: secondNestedWebsite.icon,
@@ -381,13 +352,10 @@ async function getDomainInfo(domain) {
}
// 处理对象类型的URL
else if (typeof secondNestedWebsite.url === 'object') {
- console.log(' 检查对象类型URL,包含', Object.keys(secondNestedWebsite.url).length, '个URL');
for (const urlKey in secondNestedWebsite.url) {
if (secondNestedWebsite.url.hasOwnProperty(urlKey)) {
const urlValue = secondNestedWebsite.url[urlKey];
- console.log(' 检查URL', urlKey, ':', urlValue);
if (isDomainMatch(urlValue, normalizedDomain, secondNestedWebsite.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
return {
name: secondNestedWebsite.name,
icon: secondNestedWebsite.icon,
@@ -403,83 +371,67 @@ async function getDomainInfo(domain) {
}
}
} else {
- console.log(' 嵌套网站没有URL属性且不是对象类型');
}
}
}
} else {
- console.log(' 网站没有URL属性');
}
}
}
}
}
- console.log('未找到匹配的域名信息');
return null;
}
// 检查域名是否匹配
function isDomainMatch(urlValue, targetDomain, categoryId) {
- console.log(' 开始匹配URL:', urlValue, '目标域名:', targetDomain, '类别ID:', categoryId);
// 规范化目标域名,去除末尾的点
const normalizedTargetDomain = targetDomain.replace(/\.$/, '').toLowerCase();
try {
// 尝试将URL值解析为完整URL
- console.log(' 尝试解析URL为完整URL');
const url = new URL(urlValue);
let hostname = url.hostname.toLowerCase();
// 规范化主机名,去除末尾的点
hostname = hostname.replace(/\.$/, '');
- console.log(' 解析成功,主机名:', hostname, '规范化目标域名:', normalizedTargetDomain);
// 根据类别ID选择匹配方式
if (categoryId === 2) {
// CDN类别,使用域名后缀匹配
if (normalizedTargetDomain.endsWith('.' + hostname) || normalizedTargetDomain === hostname) {
- console.log(' CDN域名后缀匹配成功');
return true;
} else {
- console.log(' CDN域名后缀不匹配');
return false;
}
} else {
// 其他类别,使用完整域名匹配
if (hostname === normalizedTargetDomain) {
- console.log(' 完整域名匹配成功');
return true;
} else {
- console.log(' 完整域名不匹配');
return false;
}
}
} catch (e) {
- console.log(' 解析URL失败,将其视为纯域名处理,错误信息:', e.message);
// 如果是纯域名而不是完整URL
let urlDomain = urlValue.toLowerCase();
// 规范化纯域名,去除末尾的点
urlDomain = urlDomain.replace(/\.$/, '');
- console.log(' 处理为纯域名:', urlDomain, '规范化目标域名:', normalizedTargetDomain);
// 根据类别ID选择匹配方式
if (categoryId === 2) {
// CDN类别,使用域名后缀匹配
if (normalizedTargetDomain.endsWith('.' + urlDomain) || normalizedTargetDomain === urlDomain) {
- console.log(' CDN域名后缀匹配成功');
return true;
} else {
- console.log(' CDN域名后缀不匹配');
return false;
}
} else {
// 其他类别,使用完整域名匹配
if (urlDomain === normalizedTargetDomain) {
- console.log(' 完整域名匹配成功');
return true;
} else {
- console.log(' 完整域名不匹配');
return false;
}
}
@@ -488,42 +440,34 @@ function isDomainMatch(urlValue, targetDomain, categoryId) {
// 提取主域名
function extractPrimaryDomain(domain) {
- console.log(' 开始提取主域名,原始域名:', domain);
const parts = domain.split('.');
- console.log(' 域名分割为:', parts);
if (parts.length <= 2) {
- console.log(' 域名长度小于等于2,直接返回:', domain);
return domain;
}
// 处理常见的三级域名
const commonSubdomains = ['www', 'mail', 'news', 'map', 'image', 'video', 'cdn', 'api', 'blog', 'shop', 'cloud', 'docs', 'help', 'support', 'dev', 'test', 'staging'];
- console.log(' 检查是否为常见三级域名');
if (commonSubdomains.includes(parts[0])) {
const result = parts.slice(1).join('.');
- console.log(' 是常见三级域名,返回:', result);
return result;
}
// 处理特殊情况,如co.uk, co.jp等
const countryTLDs = ['co.uk', 'co.jp', 'co.kr', 'co.in', 'co.ca', 'co.au', 'co.nz', 'co.th', 'co.sg', 'co.my', 'co.id', 'co.za', 'com.cn', 'org.cn', 'net.cn', 'gov.cn', 'edu.cn'];
- console.log(' 检查是否为特殊国家TLD');
for (const tld of countryTLDs) {
if (domain.endsWith('.' + tld)) {
const mainParts = domain.split('.');
const result = mainParts.slice(-tld.split('.').length - 1).join('.');
- console.log(' 是特殊国家TLD,返回:', result);
return result;
}
}
// 默认情况:返回最后两个部分
const result = parts.slice(-2).join('.');
- console.log(' 默认情况,返回最后两个部分:', result);
return result;
}
@@ -793,7 +737,6 @@ function initResizableColumns() {
// 初始化查询日志页面
function initLogsPage() {
- console.log('初始化查询日志页面');
// 加载日志统计数据
loadLogsStats();
@@ -992,6 +935,9 @@ function bindLogsEvents() {
loadLogs();
});
});
+
+ // 初始化排序图标
+ updateSortIcons();
}
// 更新排序图标
@@ -1345,7 +1291,6 @@ async function updateLogsTable(logs) {
if (e.target.closest('button')) {
return;
}
- console.log('Row clicked, log object:', log);
showLogDetailModal(log);
});
@@ -1479,14 +1424,12 @@ function connectLogsWebSocket() {
const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const wsUrl = `${wsProtocol}//${window.location.host}/ws/stats`;
- console.log('正在连接WebSocket:', wsUrl);
// 创建WebSocket连接
logsWsConnection = new WebSocket(wsUrl);
// 连接打开事件
logsWsConnection.onopen = function() {
- console.log('WebSocket连接已建立');
};
// 接收消息事件
@@ -1495,7 +1438,6 @@ function connectLogsWebSocket() {
const data = JSON.parse(event.data);
if (data.type === 'initial_data' || data.type === 'stats_update') {
- console.log('收到实时数据更新');
// 只更新统计数据,不更新日志详情
updateLogsStatsFromWebSocket(data.data);
}
@@ -1530,7 +1472,6 @@ function setupLogsReconnect() {
}
const reconnectDelay = 5000; // 5秒后重连
- console.log(`将在${reconnectDelay}ms后尝试重新连接WebSocket`);
logsWsReconnectTimer = setTimeout(() => {
connectLogsWebSocket();
@@ -1567,17 +1508,13 @@ function updateLogsStatsFromWebSocket(stats) {
// 拦截域名
async function blockDomain(domain) {
try {
- console.log(`开始拦截域名: ${domain}`);
// 创建拦截规则,使用AdBlock Plus格式
const blockRule = `||${domain}^`;
- console.log(`创建的拦截规则: ${blockRule}`);
// 调用API添加拦截规则
- console.log(`调用API添加拦截规则,路径: /shield, 方法: POST`);
const response = await apiRequest('/shield', 'POST', { rule: blockRule });
- console.log(`API响应:`, response);
// 处理不同的响应格式
if (response && (response.success || response.status === 'success')) {
@@ -1665,17 +1602,13 @@ async function refreshRulesList() {
// 放行域名
async function unblockDomain(domain) {
try {
- console.log(`开始放行域名: ${domain}`);
// 创建放行规则,使用AdBlock Plus格式
const allowRule = `@@||${domain}^`;
- console.log(`创建的放行规则: ${allowRule}`);
// 调用API添加放行规则
- console.log(`调用API添加放行规则,路径: /shield, 方法: POST`);
const response = await apiRequest('/shield', 'POST', { rule: allowRule });
- console.log(`API响应:`, response);
// 处理不同的响应格式
if (response && (response.success || response.status === 'success')) {
@@ -1808,7 +1741,6 @@ function formatDNSString(str) {
// 显示日志详情弹窗
async function showLogDetailModal(log) {
- console.log('showLogDetailModal called with log:', JSON.stringify(log, null, 2)); // 输出完整的log对象
if (!log) {
console.error('No log data provided!');
diff --git a/staticbak/static/api/css/style.css b/staticbak/static/api/css/style.css
deleted file mode 100644
index e647096..0000000
--- a/staticbak/static/api/css/style.css
+++ /dev/null
@@ -1,488 +0,0 @@
-/* 基础样式 */
- body {
- margin: 0;
- padding: 0;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
- background-color: #ffffff;
- color: #333333;
- }
-
- /* 默认浅色主题样式 */
- .swagger-ui .topbar {
- background-color: #2c3e50;
- padding: 15px 0;
- }
-
- .swagger-ui .topbar .topbar-wrapper .link {
- color: #ecf0f1;
- font-size: 1.2rem;
- }
-
- .swagger-ui .info {
- margin: 20px 0;
- }
-
- .swagger-ui .info .title {
- font-size: 2rem;
- margin-bottom: 10px;
- color: #333;
- }
-
- .swagger-ui .info .description {
- font-size: 1rem;
- color: #555;
- margin-bottom: 15px;
- }
-
- /* 修复服务器URL输入框样式 */
- .swagger-ui .servers li input[type="text"] {
- padding: 8px 12px;
- width: 100%;
- box-sizing: border-box;
- }
-
- /* 修复服务器选择区域的背景颜色和布局 */
- .swagger-ui .servers {
- padding: 16px;
- width: 100%;
- box-sizing: border-box;
- margin: 0;
- }
-
- /* 确保服务器列表容器有正确的背景色和布局 */
- .swagger-ui .servers-wrapper {
- width: 100%;
- box-sizing: border-box;
- margin: 0;
- }
-
- /* 确保整个顶部区域颜色一致和布局正确 */
- .swagger-ui .info {
- margin: 0;
- padding: 20px 16px;
- width: 100%;
- box-sizing: border-box;
- }
-
- /* 确保顶部主容器颜色一致和布局正确 */
- .swagger-ui {
- width: 100%;
- box-sizing: border-box;
- margin: 0;
- padding: 0;
- }
-
- /* 确保API信息区域颜色一致和布局正确 */
- .swagger-ui .info-container {
- width: 100%;
- box-sizing: border-box;
- }
- body.dark-mode .swagger-ui .servers li label {
- color: #ffffff !important;
- font-weight: 500 !important;
- }
-
- /* 修复服务器URL输入框深色模式样式 */
- body.dark-mode .swagger-ui .servers li input[type="text"] {
- background-color: #1a202c !important;
- color: #ffffff !important;
- border-color: #4a5568 !important;
- padding: 8px 12px !important;
- width: 100% !important;
- }
-
- /* 修复服务器选择区域的深色模式背景颜色和布局 */
- body.dark-mode .swagger-ui .servers {
- background-color: #1a202c !important;
- border: none !important;
- padding: 16px !important;
- width: 100% !important;
- box-sizing: border-box !important;
- margin: 0 !important;
- }
-
- /* 确保服务器列表容器在深色模式下也有正确的背景色和布局 */
- body.dark-mode .swagger-ui .servers-wrapper {
- background-color: #1a202c !important;
- width: 100% !important;
- box-sizing: border-box !important;
- margin: 0 !important;
- }
-
- /* 确保整个顶部区域在深色模式下颜色一致和布局正确 */
- body.dark-mode .swagger-ui .info {
- background-color: #1a202c !important;
- margin: 0 !important;
- padding: 20px 16px !important;
- border-bottom: 1px solid #4a5568 !important;
- width: 100% !important;
- box-sizing: border-box !important;
- }
-
- /* 确保顶部主容器在深色模式下颜色一致和布局正确 */
- body.dark-mode .swagger-ui {
- background-color: #1a202c !important;
- width: 100% !important;
- box-sizing: border-box !important;
- margin: 0 !important;
- padding: 0 !important;
- }
-
- /* 确保API信息区域在深色模式下颜色一致和布局正确 */
- body.dark-mode .swagger-ui .info-container {
- background-color: #1a202c !important;
- width: 100% !important;
- box-sizing: border-box !important;
- margin: 0 !important;
- padding: 0 !important;
- }
-
- /* 修复深色模式下内容区域的布局问题 */
- body.dark-mode .swagger-ui .wrapper {
- width: 100% !important;
- box-sizing: border-box !important;
- margin: 0 !important;
- padding: 0 !important;
- }
-
- /* 修复深色模式下API操作块的布局 */
- body.dark-mode .swagger-ui .opblock {
- margin: 0 !important;
- padding: 0 !important;
- width: 100% !important;
- box-sizing: border-box !important;
- }
-
- /* 修复深色模式下过滤器的布局 */
- body.dark-mode .swagger-ui .filter {
- width: 100% !important;
- box-sizing: border-box !important;
- padding: 16px !important;
- margin: 0 !important;
- }
-
- /* 修复深色模式下顶部栏布局 */
- body.dark-mode .swagger-ui .topbar {
- width: 100% !important;
- box-sizing: border-box !important;
- margin: 0 !important;
- padding: 15px 0 !important;
- }
-
- /* 修复深色模式下顶部栏包装器布局 */
- body.dark-mode .swagger-ui .topbar .topbar-wrapper {
- width: 100% !important;
- box-sizing: border-box !important;
- padding: 0 16px !important;
- }
-
- /* 修复深色模式下响应容器布局 */
- body.dark-mode .swagger-ui .responses-inner {
- width: 100% !important;
- box-sizing: border-box !important;
- }
-
- /* 修复深色模式下操作块摘要布局 */
- body.dark-mode .swagger-ui .opblock-summary {
- width: 100% !important;
- box-sizing: border-box !important;
- }
-
- /* 确保深色模式下所有容器元素都使用box-sizing */
- body.dark-mode * {
- box-sizing: border-box !important;
- }
-
- /* 增强标签标题深色模式样式 */
- body.dark-mode .swagger-ui .opblock-tag {
- color: #ffffff !important;
- background-color: #2d3748 !important;
- padding: 12px 16px !important;
- border-radius: 6px !important;
- margin-bottom: 12px !important;
- font-weight: 700 !important;
- font-size: 1.1rem !important;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3) !important;
- }
-
- /* 增强标签标题(h3)深色模式样式 */
- body.dark-mode .swagger-ui .opblock-tag.h3 {
- color: #ffffff !important;
- background-color: #2d3748 !important;
- }
-
- /* 增强标签部分深色模式样式 */
- body.dark-mode .swagger-ui .opblock-tag-section {
- background-color: #2d3748 !important;
- padding: 16px !important;
- border-radius: 8px !important;
- margin-bottom: 20px !important;
- }
-
- /* 增强API描述深色模式样式 */
- body.dark-mode .swagger-ui .opblock-description-wrapper {
- color: #ffffff !important;
- background-color: #2d3748 !important;
- padding: 12px 16px !important;
- border-radius: 6px !important;
- margin-bottom: 12px !important;
- font-weight: 500 !important;
- }
-
- body.dark-mode .swagger-ui .opblock-description-wrapper p {
- color: #ffffff !important;
- line-height: 1.5 !important;
- }
-
- /* 增强stats标签描述深色模式样式 */
- body.dark-mode .swagger-ui .opblock-summary-description {
- color: #ffffff !important;
- font-weight: 500 !important;
- }
-
- /* 增强操作块标题深色模式样式 */
- body.dark-mode .swagger-ui .opblock-title_normal h4 {
- color: #ffffff !important;
- font-weight: 600 !important;
- }
-
- /* 增强参数部分深色模式样式 */
- body.dark-mode .swagger-ui .opblock-body {
- background-color: #2d3748 !important;
- }
-
- body.dark-mode .swagger-ui .opblock-body .parameter__name {
- color: #ffffff !important;
- font-weight: 600 !important;
- }
-
- body.dark-mode .swagger-ui .opblock-body .parameter__type {
- color: #ffffff !important;
- font-weight: 500 !important;
- }
-
- body.dark-mode .swagger-ui .opblock-body .parameter__description {
- color: #ffffff !important;
- }
-
- body.dark-mode .swagger-ui .parameters-col_description,
- body.dark-mode .swagger-ui .parameters-col_name,
- body.dark-mode .swagger-ui .parameters-col_type {
- color: #ffffff !important;
- }
-
- body.dark-mode .swagger-ui .parameters-col_description p,
- body.dark-mode .swagger-ui .parameters-col_name p,
- body.dark-mode .swagger-ui .parameters-col_type p {
- color: #ffffff !important;
- }
-
- /* 新增:适配API文档展开界面的所有文字元素 */
- body.dark-mode .swagger-ui .opblock-body {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .opblock-body .parameter__name {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .opblock-body .parameter__type {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .opblock-body .parameter__description {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .opblock-body .body-param-options {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .opblock-body .body-param-options .body-param-type {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .responses-inner {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .responses-inner h4 {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .response-container {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .response-container .response-wrapper {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .response-container .response-code {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .response-container .response-description {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .model {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .model .property {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .model .property .property-name {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .model .property .property-description {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .model .property .property-type {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .model .property .required {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .scroll-to-top {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .opblock-tag-section {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .servers-title {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .servers {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .servers li {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .servers li label {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .servers li select {
- color: #ffffff;
- background-color: #1a202c;
- border-color: #4a5568;
- }
-
- body.dark-mode .swagger-ui .auth-wrapper {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .auth-wrapper .auth-title {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .auth-wrapper .auth-list {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .auth-wrapper .auth-item {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .auth-wrapper .auth-item label {
- color: #ffffff;
- }
-
- /* 确保代码块内的文字也清晰可见 */
- body.dark-mode .swagger-ui pre {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui code {
- color: #ffffff;
- }
-
- /* 确保所有表单元素的文字颜色正确 */
- body.dark-mode .swagger-ui form {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui form label {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui select {
- color: #ffffff;
- background-color: #1a202c;
- border-color: #4a5568;
- }
-
- /* 适配可能的嵌套内容 */
- body.dark-mode .swagger-ui .opblock-body .schema {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .opblock-body .schema .title {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .opblock-body .schema .required {
- color: #ffffff;
- }
-
- /* 适配可能的按钮组 */
- body.dark-mode .swagger-ui .btn-group {
- color: #ffffff;
- }
-
- /* 适配可能的标签 */
- body.dark-mode .swagger-ui .tag {
- color: #ffffff;
- }
-
- /* 适配可能的警告和提示信息 */
- body.dark-mode .swagger-ui .warning {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui .hint {
- color: #ffffff;
- }
-
- /* 适配可能的表格内容 */
- body.dark-mode .swagger-ui table {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui table th {
- color: #ffffff;
- }
-
- body.dark-mode .swagger-ui table td {
- color: #ffffff;
- }
-
- /* 响应式设计 */
- @media (max-width: 768px) {
- .topbar-controls {
- flex-direction: column;
- align-items: flex-end;
- gap: 10px;
- }
-
- .theme-toggle-btn {
- padding: 6px 10px;
- font-size: 12px;
- }
-
- .theme-toggle-btn span {
- display: none;
- }
- }
\ No newline at end of file
diff --git a/staticbak/static/api/index.html b/staticbak/static/api/index.html
deleted file mode 100644
index ebb375d..0000000
--- a/staticbak/static/api/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- DNS Server API 文档
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/staticbak/static/api/js/index.js b/staticbak/static/api/js/index.js
deleted file mode 100644
index 9addc52..0000000
--- a/staticbak/static/api/js/index.js
+++ /dev/null
@@ -1,1791 +0,0 @@
- // 定义API文档的JSON
- const swaggerDocument = {
- "openapi": "3.0.3",
- "info": {
- "title": "DNS Server API",
- "description": "DNS服务器完整API文档,包括统计信息、Shield管理、主机管理等功能。",
- "version": "1.2.5",
- "contact": {
- "name": "DNS Server 支持",
- "email": "support@dnsserver.com"
- },
- "license": {
- "name": "Apache 2.0",
- "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
- }
- },
- "servers": [
- {
- "url": "http://localhost:8080/api",
- "description": "本地开发服务器"
- },
- {
- "url": "http://{host}:{port}/api",
- "description": "自定义服务器",
- "variables": {
- "host": {
- "default": "localhost"
- },
- "port": {
- "default": "8080"
- }
- }
- }
- ],
- "paths": {
- "/login": {
- "post": {
- "summary": "用户登录",
- "description": "使用用户名和密码登录DNS服务器API。",
- "tags": ["auth"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "username": {"type": "string", "description": "用户名"},
- "password": {"type": "string", "description": "密码"}
- }
- },
- "example": {
- "username": "admin",
- "password": "admin"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "登录成功",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"},
- "message": {"type": "string", "description": "操作信息"}
- }
- },
- "example": {
- "status": "success",
- "message": "登录成功"
- }
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {
- "error": "无效的请求体"
- }
- }
- }
- },
- "401": {
- "description": "用户名或密码错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {
- "error": "用户名或密码错误"
- }
- }
- }
- }
- }
- }
- },
- "/logout": {
- "post": {
- "summary": "用户注销",
- "description": "注销当前登录的用户会话。",
- "tags": ["auth"],
- "responses": {
- "200": {
- "description": "注销成功",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"},
- "message": {"type": "string", "description": "操作信息"}
- }
- },
- "example": {
- "status": "success",
- "message": "注销成功"
- }
- }
- }
- }
- }
- }
- },
- "/change-password": {
- "post": {
- "summary": "修改密码",
- "description": "修改当前登录用户的密码。",
- "tags": ["auth"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "currentPassword": {"type": "string", "description": "当前密码"},
- "newPassword": {"type": "string", "description": "新密码"}
- }
- },
- "example": {
- "currentPassword": "admin",
- "newPassword": "newpassword"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "密码修改成功",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"},
- "message": {"type": "string", "description": "操作信息"}
- }
- },
- "example": {
- "status": "success",
- "message": "密码修改成功"
- }
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {
- "error": "无效的请求体"
- }
- }
- }
- },
- "401": {
- "description": "当前密码错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {
- "error": "当前密码错误"
- }
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {
- "error": "保存密码失败"
- }
- }
- }
- }
- }
- }
- },
- "/stats": {
- "get": {
- "summary": "获取系统统计信息",
- "description": "获取DNS服务器和Shield的详细统计信息,包括查询量、CPU使用率等。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取统计信息",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "dns": {
- "type": "object",
- "properties": {
- "Queries": {"type": "integer", "description": "总查询次数"},
- "Blocked": {"type": "integer", "description": "被阻止的查询次数"},
- "Allowed": {"type": "integer", "description": "允许的查询次数"},
- "Errors": {"type": "integer", "description": "错误查询次数"},
- "LastQuery": {"type": "string", "description": "最近一次查询时间"},
- "AvgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
- "TotalResponseTime": {"type": "number", "description": "总响应时间(毫秒)"},
- "QueryTypes": {"type": "object", "description": "查询类型统计"},
- "SourceIPs": {"type": "object", "description": "来源IP统计"},
- "CpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
- "DNSSECQueries": {"type": "integer", "description": "DNSSEC查询次数"},
- "DNSSECSuccess": {"type": "integer", "description": "DNSSEC成功次数"},
- "DNSSECFailed": {"type": "integer", "description": "DNSSEC失败次数"},
- "DNSSECEnabled": {"type": "boolean", "description": "是否启用DNSSEC"}
- }
- },
- "shield": {"type": "object", "description": "Shield统计信息"},
- "topQueryType": {"type": "string", "description": "最常见的查询类型"},
- "activeIPs": {"type": "integer", "description": "活跃IP数量"},
- "avgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
- "cpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
- "dnssecEnabled": {"type": "boolean", "description": "是否启用DNSSEC"},
- "dnssecQueries": {"type": "integer", "description": "DNSSEC查询次数"},
- "dnssecSuccess": {"type": "integer", "description": "DNSSEC成功次数"},
- "dnssecFailed": {"type": "integer", "description": "DNSSEC失败次数"},
- "dnssecUsage": {"type": "number", "description": "DNSSEC使用率(百分比)"},
- "time": {"type": "string", "description": "统计时间"}
- }
- },
- "examples": {
- "default": {
- "value": {
- "dns": {
- "Queries": 1250,
- "Blocked": 230,
- "Allowed": 1020,
- "Errors": 0,
- "LastQuery": "2023-07-15T14:30:45Z",
- "AvgResponseTime": 12.5,
- "TotalResponseTime": 15625,
- "QueryTypes": {"A": 850, "AAAA": 250, "CNAME": 150},
- "SourceIPs": {"192.168.1.100": 500, "192.168.1.101": 750},
- "CpuUsage": 0.15,
- "DNSSECQueries": 500,
- "DNSSECSuccess": 480,
- "DNSSECFailed": 20,
- "DNSSECEnabled": true
- },
- "shield": {},
- "topQueryType": "A",
- "activeIPs": 2,
- "avgResponseTime": 12.5,
- "cpuUsage": 0.15,
- "dnssecEnabled": true,
- "dnssecQueries": 500,
- "dnssecSuccess": 480,
- "dnssecFailed": 20,
- "dnssecUsage": 40.0,
- "time": "2023-07-15T14:30:45Z"
- }
- }
- }
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "无法获取统计信息"}
- }
- }
- }
- }
- }
- },
- "/top-blocked": {
- "get": {
- "summary": "获取TOP被阻止域名",
- "description": "获取被阻止次数最多的域名列表。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取TOP被阻止域名",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "domain": {"type": "string", "description": "域名"},
- "count": {"type": "integer", "description": "被阻止次数"}
- }
- }
- },
- "example": [
- {"domain": "ad.example.com", "count": 150},
- {"domain": "tracker.example.net", "count": 120}
- ]
- }
- }
- }
- }
- }
- },
- "/top-resolved": {
- "get": {
- "summary": "获取TOP已解析域名",
- "description": "获取解析次数最多的域名列表。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取TOP已解析域名",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "domain": {"type": "string", "description": "域名"},
- "count": {"type": "integer", "description": "解析次数"}
- }
- }
- },
- "example": [
- {"domain": "google.com", "count": 200},
- {"domain": "facebook.com", "count": 150}
- ]
- }
- }
- }
- }
- }
- },
- "/top-clients": {
- "get": {
- "summary": "获取TOP客户端",
- "description": "获取查询量最多的客户端IP列表。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取TOP客户端",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "ip": {"type": "string", "description": "客户端IP地址"},
- "count": {"type": "integer", "description": "查询次数"}
- }
- }
- },
- "example": [
- {"ip": "192.168.1.100", "count": 500},
- {"ip": "192.168.1.101", "count": 750}
- ]
- }
- }
- }
- }
- }
- },
- "/top-domains": {
- "get": {
- "summary": "获取TOP域名",
- "description": "获取查询量最多的域名列表(包括被阻止和已解析的域名)。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取TOP域名",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "domain": {"type": "string", "description": "域名"},
- "count": {"type": "integer", "description": "查询次数"}
- }
- }
- },
- "example": [
- {"domain": "example.com", "count": 150},
- {"domain": "google.com", "count": 120}
- ]
- }
- }
- }
- }
- }
- },
- "/recent-blocked": {
- "get": {
- "summary": "获取最近被阻止的域名",
- "description": "获取最近被Shield阻止的域名列表。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取最近被阻止的域名",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "domain": {"type": "string", "description": "域名"},
- "timestamp": {"type": "string", "description": "阻止时间"}
- }
- }
- },
- "example": [
- {"domain": "ad.example.com", "timestamp": "2023-07-15T14:30:45Z"},
- {"domain": "tracker.example.net", "timestamp": "2023-07-15T14:29:30Z"}
- ]
- }
- }
- }
- }
- }
- },
- "/hourly-stats": {
- "get": {
- "summary": "获取小时统计",
- "description": "获取按小时统计的DNS查询数据。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取小时统计",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "labels": {"type": "array", "items": {"type": "string"}, "description": "小时标签"},
- "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
- }
- },
- "example": {
- "labels": ["15:00", "16:00", "17:00"],
- "data": [120, 90, 150]
- }
- }
- }
- }
- }
- }
- },
- "/daily-stats": {
- "get": {
- "summary": "获取每日统计",
- "description": "获取最近7天的DNS查询统计数据。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取每日统计",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "labels": {"type": "array", "items": {"type": "string"}, "description": "日期标签"},
- "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
- }
- },
- "example": {
- "labels": ["01-02", "01-03", "01-04"],
- "data": [2500, 2700, 2300]
- }
- }
- }
- }
- }
- }
- },
- "/monthly-stats": {
- "get": {
- "summary": "获取每月统计",
- "description": "获取最近30天的DNS查询统计数据。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取每月统计",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "labels": {"type": "array", "items": {"type": "string"}, "description": "日期标签"},
- "data": {"type": "array", "items": {"type": "integer"}, "description": "查询次数数据"}
- }
- },
- "example": {
- "labels": ["01-01", "01-02", "01-03"],
- "data": [2500, 2700, 2300]
- }
- }
- }
- }
- }
- }
- },
- "/query/type": {
- "get": {
- "summary": "获取查询类型统计",
- "description": "获取DNS查询类型的详细统计信息。",
- "tags": ["stats"],
- "responses": {
- "200": {
- "description": "成功获取查询类型统计",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "type": {"type": "string", "description": "查询类型"},
- "count": {"type": "integer", "description": "查询次数"}
- }
- }
- },
- "example": [
- {"type": "A", "count": 850},
- {"type": "AAAA", "count": 250},
- {"type": "CNAME", "count": 150}
- ]
- }
- }
- }
- }
- }
- },
- "/logs/stats": {
- "get": {
- "summary": "获取日志统计信息",
- "description": "获取DNS查询日志的统计信息。",
- "tags": ["logs"],
- "responses": {
- "200": {
- "description": "成功获取日志统计信息",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "description": "日志统计信息"}
- }
- }
- }
- }
- }
- },
- "/logs/query": {
- "get": {
- "summary": "查询日志",
- "description": "根据条件查询DNS查询日志。",
- "tags": ["logs"],
- "parameters": [
- {
- "name": "limit",
- "in": "query",
- "schema": {
- "type": "integer",
- "default": 100
- },
- "description": "返回结果数量限制"
- },
- {
- "name": "offset",
- "in": "query",
- "schema": {
- "type": "integer",
- "default": 0
- },
- "description": "结果偏移量"
- },
- {
- "name": "sort",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "description": "排序字段"
- },
- {
- "name": "direction",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "description": "排序方向"
- },
- {
- "name": "result",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "description": "查询结果过滤"
- },
- {
- "name": "search",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "description": "搜索关键词"
- }
- ],
- "responses": {
- "200": {
- "description": "成功查询日志",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "description": "日志条目"
- }
- }
- }
- }
- }
- }
- }
- },
- "/logs/count": {
- "get": {
- "summary": "获取日志总数",
- "description": "获取DNS查询日志的总数。",
- "tags": ["logs"],
- "responses": {
- "200": {
- "description": "成功获取日志总数",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "count": {"type": "integer", "description": "日志总数"}
- }
- },
- "example": {
- "count": 1000
- }
- }
- }
- }
- }
- }
- },
- "/shield": {
- "get": {
- "summary": "获取Shield配置和统计信息",
- "description": "获取Shield的配置信息和规则统计,包括更新间隔、屏蔽方法、黑名单数量等。",
- "deprecated": false,
- "tags": ["shield"],
- "responses": {
- "200": {
- "description": "成功获取配置和统计信息",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "updateInterval": {"type": "integer", "description": "更新间隔(秒)"},
- "blockMethod": {"type": "string", "description": "屏蔽方法"},
- "blacklistCount": {"type": "integer", "description": "黑名单数量"},
- "domainRulesCount": {"type": "integer", "description": "域名规则数量"},
- "domainExceptionsCount": {"type": "integer", "description": "域名例外规则数量"},
- "regexRulesCount": {"type": "integer", "description": "正则规则数量"},
- "regexExceptionsCount": {"type": "integer", "description": "正则例外规则数量"},
- "hostsRulesCount": {"type": "integer", "description": "Hosts规则数量"}
- }
- },
- "example": {
- "updateInterval": 3600,
- "blockMethod": "NXDOMAIN",
- "blacklistCount": 4,
- "domainRulesCount": 1000,
- "domainExceptionsCount": 100,
- "regexRulesCount": 50,
- "regexExceptionsCount": 10,
- "hostsRulesCount": 200
- }
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "无法获取Shield配置"}
- }
- }
- }
- }
- },
- "post": {
- "summary": "添加屏蔽规则",
- "description": "添加新的屏蔽规则到Shield。",
- "deprecated": false,
- "tags": ["shield"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "rule": {"type": "string", "description": "屏蔽规则"}
- }
- },
- "example": {
- "rule": "example.com"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "成功添加规则",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "参数格式错误"}
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "添加规则失败"}
- }
- }
- }
- }
- },
- "delete": {
- "summary": "删除屏蔽规则",
- "description": "从Shield中删除指定的屏蔽规则。",
- "deprecated": false,
- "tags": ["shield"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "rule": {"type": "string", "description": "要删除的屏蔽规则"}
- }
- },
- "example": {
- "rule": "example.com"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "成功删除规则",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "参数格式错误"}
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "删除规则失败"}
- }
- }
- }
- }
- },
- "put": {
- "summary": "重新加载规则",
- "description": "重新加载和应用Shield规则。",
- "deprecated": false,
- "tags": ["shield"],
- "responses": {
- "200": {
- "description": "成功重新加载规则",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"},
- "message": {"type": "string", "description": "操作信息"}
- }
- },
- "example": {
- "status": "success",
- "message": "规则重新加载成功"
- }
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "重新加载规则失败"}
- }
- }
- }
- }
- }
- },
- "/shield/blacklists": {
- "get": {
- "summary": "获取黑名单列表",
- "description": "获取Shield的黑名单列表,包括内置黑名单和自定义黑名单。",
- "deprecated": false,
- "tags": ["shield"],
- "responses": {
- "200": {
- "description": "成功获取黑名单列表",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "name": {"type": "string", "description": "黑名单名称"},
- "url": {"type": "string", "description": "黑名单URL"},
- "enabled": {"type": "boolean", "description": "是否启用"},
- "lastUpdate": {"type": "string", "description": "最后更新时间"},
- "status": {"type": "string", "description": "状态"},
- "rulesCount": {"type": "integer", "description": "规则数量"}
- }
- }
- },
- "example": [
- {
- "name": "AdBlock List",
- "url": "https://example.com/ads.txt",
- "enabled": true,
- "lastUpdate": "2023-07-15T10:00:00Z",
- "status": "active",
- "rulesCount": 1500
- }
- ]
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "获取黑名单列表失败"}
- }
- }
- }
- }
- },
- "post": {
- "summary": "添加黑名单",
- "description": "添加新的黑名单URL到Shield。",
- "deprecated": false,
- "tags": ["shield"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "required": ["name", "url"],
- "properties": {
- "name": {"type": "string", "description": "黑名单名称"},
- "url": {"type": "string", "description": "黑名单URL"},
- "enabled": {"type": "boolean", "description": "是否启用", "default": true}
- }
- },
- "example": {
- "name": "AdBlock List",
- "url": "https://example.com/ads.txt",
- "enabled": true
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "成功添加黑名单",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "名称和URL为必填项"}
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "添加黑名单失败"}
- }
- }
- }
- }
- },
- "put": {
- "summary": "更新黑名单列表(包括启用/禁用状态)",
- "description": "更新黑名单列表(包括启用/禁用状态)。",
- "deprecated": false,
- "tags": ["shield"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "blacklists": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "name": {"type": "string", "description": "黑名单名称"},
- "url": {"type": "string", "description": "黑名单URL"},
- "enabled": {"type": "boolean", "description": "是否启用"}
- }
- }
- }
- }
- },
- "example": {
- "blacklists": [
- {
- "name": "AdBlock List",
- "url": "https://example.com/ads.txt",
- "enabled": true
- }
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "成功更新黑名单列表",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "无效的请求体"}
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "更新黑名单列表失败"}
- }
- }
- }
- }
- }
- },
- "/shield/localrules": {
- "get": {
- "summary": "获取自定义规则",
- "description": "获取Shield的自定义规则列表。",
- "deprecated": false,
- "tags": ["shield"],
- "responses": {
- "200": {
- "description": "成功获取自定义规则",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {"type": "string", "description": "规则ID"},
- "pattern": {"type": "string", "description": "规则模式"},
- "description": {"type": "string", "description": "规则描述"}
- }
- }
- },
- "example": [
- {"id": "1", "pattern": ".*malware.*", "description": "恶意软件域名"}
- ]
- }
- }
- }
- }
- },
- "post": {
- "summary": "添加自定义规则",
- "description": "添加新的自定义规则。",
- "deprecated": false,
- "tags": ["shield"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "pattern": {"type": "string", "description": "规则模式"},
- "description": {"type": "string", "description": "规则描述"}
- }
- },
- "example": {
- "pattern": ".*ad\.com$",
- "description": "广告域名"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "成功添加规则",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- }
- }
- },
- "delete": {
- "summary": "删除自定义规则",
- "description": "删除指定的自定义规则。",
- "deprecated": false,
- "tags": ["shield"],
- "parameters": [
- {
- "name": "id",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- },
- "description": "规则ID"
- }
- ],
- "responses": {
- "200": {
- "description": "成功删除规则",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- }
- }
- }
- },
- "/shield/remoterules": {
- "get": {
- "summary": "获取远程规则状态",
- "description": "获取远程规则的更新状态和版本信息。",
- "deprecated": false,
- "tags": ["shield"],
- "responses": {
- "200": {
- "description": "成功获取远程规则",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {"type": "string", "description": "规则ID"},
- "pattern": {"type": "string", "description": "规则模式"},
- "source": {"type": "string", "description": "规则来源"}
- }
- }
- },
- "example": [
- {"id": "1001", "pattern": ".*phishing.*", "source": "malwarelist"}
- ]
- }
- }
- }
- }
- }
- },
- "/shield/hosts": {
- "get": {
- "summary": "获取hosts内容",
- "description": "获取当前的hosts文件内容。",
- "deprecated": false,
- "tags": ["shield"],
- "responses": {
- "200": {
- "description": "成功获取hosts列表",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "ip": {"type": "string", "description": "IP地址"},
- "domain": {"type": "string", "description": "域名"}
- }
- }
- },
- "example": [
- {"ip": "127.0.0.1", "domain": "localhost"}
- ]
- }
- }
- }
- }
- },
- "post": {
- "summary": "添加hosts记录",
- "description": "添加新的hosts记录。",
- "deprecated": false,
- "tags": ["shield"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "required": ["ip", "domain"],
- "properties": {
- "ip": {"type": "string", "description": "IP地址"},
- "domain": {"type": "string", "description": "域名"}
- }
- },
- "example": {
- "ip": "127.0.0.1",
- "domain": "example.com"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "成功添加hosts记录",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "IP和域名是必填项"}
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "添加hosts记录失败"}
- }
- }
- }
- }
- },
- "delete": {
- "summary": "删除hosts记录",
- "description": "删除指定域名的hosts记录。",
- "deprecated": false,
- "tags": ["shield"],
- "parameters": [
- {
- "name": "domain",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- },
- "description": "要删除的域名"
- }
- ],
- "responses": {
- "200": {
- "description": "成功删除hosts记录",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "域名是必填项"}
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "删除hosts记录失败"}
- }
- }
- }
- }
- }
- },
- "/dns/query": {
- "post": {
- "summary": "查询DNS记录",
- "description": "查询指定域名的DNS记录,可以指定记录类型。",
- "tags": ["dns"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "domain": {
- "type": "string",
- "description": "要查询的域名"
- },
- "recordType": {
- "type": "string",
- "description": "DNS记录类型(如A、AAAA、MX、NS等)"
- }
- },
- "required": ["domain"]
- },
- "example": {
- "domain": "example.com",
- "recordType": "A"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "成功获取DNS记录",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "Type": {
- "type": "string",
- "description": "DNS记录类型"
- },
- "Value": {
- "type": "string",
- "description": "DNS记录值"
- },
- "TTL": {
- "type": "integer",
- "description": "生存时间"
- },
- "Preference": {
- "type": "integer",
- "description": "MX记录优先级"
- }
- }
- }
- },
- "example": [
- {"Type": "A", "Value": "93.184.216.34", "TTL": 172800},
- {"Type": "A", "Value": "93.184.216.35", "TTL": 172800}
- ]
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {
- "type": "string",
- "description": "错误信息"
- }
- }
- },
- "example": {
- "error": "Domain parameter is required"
- }
- }
- }
- }
- }
- }
- },
- "/status": {
- "get": {
- "summary": "获取服务器状态",
- "description": "获取DNS服务器的状态信息,包括查询统计、运行时间等。",
- "tags": ["server"],
- "responses": {
- "200": {
- "description": "成功获取服务器状态",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "服务器状态"},
- "queries": {"type": "integer", "description": "总查询次数"},
- "blocked": {"type": "integer", "description": "被阻止的查询次数"},
- "allowed": {"type": "integer", "description": "允许的查询次数"},
- "errors": {"type": "integer", "description": "错误查询次数"},
- "lastQuery": {"type": "string", "description": "最近一次查询时间"},
- "avgResponseTime": {"type": "number", "description": "平均响应时间(毫秒)"},
- "activeIPs": {"type": "integer", "description": "活跃IP数量"},
- "startTime": {"type": "string", "description": "服务器启动时间"},
- "uptime": {"type": "integer", "description": "运行时间(毫秒)"},
- "cpuUsage": {"type": "number", "description": "CPU使用率(百分比)"},
- "timestamp": {"type": "string", "description": "当前时间"}
- }
- },
- "example": {
- "status": "running",
- "queries": 1250,
- "blocked": 230,
- "allowed": 1020,
- "errors": 0,
- "lastQuery": "2023-07-15T14:30:45Z",
- "avgResponseTime": 12.5,
- "activeIPs": 2,
- "startTime": "2023-07-15T10:00:00Z",
- "uptime": 16200000,
- "cpuUsage": 0.15,
- "timestamp": "2023-07-15T14:30:45Z"
- }
- }
- }
- }
- }
- }
- },
- "/config": {
- "get": {
- "summary": "获取服务器配置",
- "description": "获取DNS服务器的配置信息,包括Shield配置。",
- "tags": ["server"],
- "responses": {
- "200": {
- "description": "成功获取服务器配置",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "shield": {
- "type": "object",
- "properties": {
- "blockMethod": {"type": "string", "description": "屏蔽方法"},
- "customBlockIP": {"type": "string", "description": "自定义屏蔽IP"},
- "blacklists": {"type": "array", "description": "黑名单列表", "items": {"type": "object"}},
- "updateInterval": {"type": "integer", "description": "更新间隔(秒)"}
- }
- }
- }
- },
- "example": {
- "shield": {
- "blockMethod": "NXDOMAIN",
- "customBlockIP": "",
- "blacklists": [
- {
- "name": "AdGuard DNS filter",
- "url": "https://example.com/ads.txt",
- "enabled": true
- }
- ],
- "updateInterval": 3600
- }
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "更新服务器配置",
- "description": "更新DNS服务器的配置信息,包括Shield配置。",
- "tags": ["server"],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "shield": {
- "type": "object",
- "properties": {
- "blockMethod": {"type": "string", "description": "屏蔽方法"},
- "customBlockIP": {"type": "string", "description": "自定义屏蔽IP"},
- "blacklists": {"type": "array", "description": "黑名单列表", "items": {"type": "object"}},
- "updateInterval": {"type": "integer", "description": "更新间隔(秒)"}
- }
- }
- }
- },
- "example": {
- "shield": {
- "blockMethod": "NXDOMAIN",
- "customBlockIP": "",
- "blacklists": [
- {
- "name": "AdGuard DNS filter",
- "url": "https://example.com/ads.txt",
- "enabled": true
- }
- ],
- "updateInterval": 3600
- }
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "成功更新服务器配置",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {"type": "boolean", "description": "是否成功"},
- "message": {"type": "string", "description": "操作信息"}
- }
- },
- "example": {
- "success": true,
- "message": "配置已更新"
- }
- }
- }
- },
- "400": {
- "description": "请求参数错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {
- "error": "无效的请求体"
- }
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {
- "error": "保存配置失败"
- }
- }
- }
- }
- }
- }
- },
- "/config/restart": {
- "post": {
- "summary": "重启服务器",
- "description": "重启DNS服务器。",
- "tags": ["server"],
- "responses": {
- "200": {
- "description": "成功重启服务器",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {"type": "string", "description": "操作状态"}
- }
- },
- "example": {"status": "success"}
- }
- }
- },
- "500": {
- "description": "服务器内部错误",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "error": {"type": "string", "description": "错误信息"}
- }
- },
- "example": {"error": "重启服务器失败"}
- }
- }
- }
- }
- }
- }
- },
- "tags": [
- {
- "name": "auth",
- "description": "认证相关API"
- },
- {
- "name": "stats",
- "description": "统计相关API"
- },
- {
- "name": "shield",
- "description": "Shield相关API"
- },
- {
- "name": "server",
- "description": "服务器相关API"
- },
- {
- "name": "logs",
- "description": "日志相关API"
- }
- ]
- };
-
- // 初始化Swagger UI
- window.onload = function() {
- const ui = SwaggerUIBundle({
- spec: swaggerDocument,
- dom_id: '#swagger-ui',
- deepLinking: true,
- presets: [
- SwaggerUIBundle.presets.apis,
- SwaggerUIStandalonePreset
- ],
- plugins: [
- SwaggerUIBundle.plugins.DownloadUrl
- ],
- layout: "StandaloneLayout"
- });
-
- window.ui = ui;
- };
\ No newline at end of file
diff --git a/staticbak/static/css/animation.css b/staticbak/static/css/animation.css
deleted file mode 100644
index 2319b5b..0000000
--- a/staticbak/static/css/animation.css
+++ /dev/null
@@ -1,62 +0,0 @@
- @layer utilities {
- .content-auto {
- content-visibility: auto;
- }
- .card-shadow {
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
- }
- .sidebar-item-active {
- background-color: rgba(22, 93, 255, 0.1);
- color: #165DFF;
- border-right: 4px solid #165DFF;
- }
- }
-
- /* 服务器状态组件光晕效果 */
- .glow-effect {
- animation: pulse 2s ease-in-out;
- }
-
- @keyframes pulse {
- 0% {
- box-shadow: 0 0 0 0 rgba(41, 128, 185, 0.4);
- }
- 70% {
- box-shadow: 0 0 0 10px rgba(41, 128, 185, 0);
- }
- 100% {
- box-shadow: 0 0 0 0 rgba(41, 128, 185, 0);
- }
- }
-
- /* 服务器状态组件样式优化 */
- .server-status-widget {
- min-width: 170px;
- transition: all 0.3s ease;
- }
-
- .server-status-widget:hover {
- transform: translateY(-2px);
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- }
-
-
- /* 加载状态样式 */
- .status-loading {
- animation: status-pulse 1.5s ease-in-out infinite;
- }
-
- /* 状态脉冲动画 */
- @keyframes status-pulse {
- 0%, 100% {
- opacity: 1;
- }
- 50% {
- opacity: 0.7;
- }
- }
-
- /* 保存按钮状态样式 */
- #save-blacklist-status {
- transition: all 0.3s ease-in-out;
- }
\ No newline at end of file
diff --git a/staticbak/static/css/style.css b/staticbak/static/css/style.css
deleted file mode 100644
index 1bdb257..0000000
--- a/staticbak/static/css/style.css
+++ /dev/null
@@ -1,1157 +0,0 @@
-/* 全局样式重置 */
-* {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
-}
-
-html, body {
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
- background-color: #f5f7fa;
- color: #333;
- line-height: 1.6;
- width: 100%;
- height: 100%;
- overflow-x: hidden;
-}
-
-body {
- position: relative;
-}
-
-/* 基础响应式变量 */
-:root {
- --sidebar-width: 250px;
- --sidebar-mobile-width: 70px;
- --header-height: 130px;
- --content-padding: 1rem;
- --card-min-width: 300px;
-}
-
-/* 主容器样式 */
-.container {
- display: flex;
- flex-direction: column;
- min-height: 100vh;
- width: 100%;
- max-width: 100%;
- background-color: #fff;
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.05);
-}
-
-/* 头部样式 */
-header.header-container {
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
- color: white;
- padding: 1.5rem;
- width: 100%;
- text-align: center;
- box-sizing: border-box;
- position: relative;
- z-index: 10;
-}
-
-.logo {
- display: flex;
- align-items: center;
- justify-content: center;
- margin-bottom: 1rem;
-}
-
-.logo i {
- margin-right: 1rem;
- color: white;
-}
-
-.logo h1 {
- font-size: 1.8rem;
- margin: 0;
- font-weight: 600;
-}
-
-header p {
- font-size: 1rem;
- opacity: 0.9;
-}
-
-/* 主体布局容器 */
-.main-layout {
- display: flex;
- flex: 1;
- min-height: 0;
- transition: all 0.3s ease;
-}
-
-/* 侧边栏样式 */
-.sidebar {
- width: var(--sidebar-width);
- background-color: #2c3e50;
- color: white;
- padding: 1rem 0;
- flex-shrink: 0;
- overflow-y: auto;
- height: calc(100vh - var(--header-height)); /* 减去header的高度 */
- transition: width 0.3s ease;
- position: relative;
-}
-
-/* 移动设备侧边栏切换按钮 */
-.sidebar-toggle {
- position: fixed;
- top: calc(var(--header-height) + 10px);
- left: 10px;
- z-index: 100;
- background-color: #2c3e50;
- color: white;
- border: none;
- border-radius: 4px;
- padding: 8px 12px;
- cursor: pointer;
- display: none;
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
-}
-
-/* 响应式布局 - 平板设备 */
-@media (max-width: 992px) {
- .sidebar {
- width: var(--sidebar-mobile-width);
- }
-
- .nav-item span {
- display: none;
- }
-
- .nav-item i {
- margin-right: 0;
- }
-
- .sidebar-toggle {
- display: block;
- }
-}
-
-/* 响应式布局 - 移动设备 */
-@media (max-width: 768px) {
- /* 这些样式已经通过Tailwind CSS类在HTML中实现,这里移除避免冲突 */
-}
-
-.nav-menu {
- list-style: none;
-}
-
-.nav-item {
- padding: 1rem 1.5rem;
- display: flex;
- align-items: center;
- cursor: pointer;
- transition: all 0.3s ease;
-}
-
-.nav-item:hover {
- background-color: #34495e;
- padding-left: 1.75rem;
-}
-
-.nav-item.active {
- background-color: #3498db;
- border-left: 4px solid #fff;
-}
-
-.nav-item i {
- margin-right: 1rem;
- width: 20px;
- text-align: center;
-}
-
-/* 主内容区域样式 */
-.content {
- flex: 1;
- padding: var(--content-padding);
- overflow-y: auto;
- background-color: #f8f9fa;
- min-width: 0; /* 防止flex子元素溢出 */
- height: calc(100vh - var(--header-height)); /* 减去header的高度 */
- transition: padding-left 0.3s ease;
-}
-
-/* Tooltip趋势信息颜色类 - 替代内联style */
-.tooltip-trend {
- font-weight: 500;
-}
-
-/* 注意:这些颜色值与colors.config.js中的COLOR_CONFIG.colorClassMap保持同步 */
-.tooltip-trend.blue {
- color: #1890ff;
-}
-
-.tooltip-trend.green {
- color: #52c41a;
-}
-
-.tooltip-trend.orange {
- color: #fa8c16;
-}
-
-.tooltip-trend.red {
- color: #f5222d;
-}
-
-.tooltip-trend.purple {
- color: #722ed1;
-}
-
-.tooltip-trend.cyan {
- color: #13c2c2;
-}
-
-.tooltip-trend.teal {
- color: #36cfc9;
-}
-
-/* 平板设备适配 - 侧边栏折叠时调整内容区域 */
-@media (max-width: 992px) {
- .content {
- padding-left: calc(var(--content-padding) + 10px);
- }
-}
-
-/* 移动设备适配 - 侧边栏隐藏时的内容区域 */
-@media (max-width: 768px) {
- .content {
- padding-left: var(--content-padding);
- }
-
- /* 响应式头部样式 */
- header.header-container {
- padding: 1rem;
- }
-
- .logo h1 {
- font-size: 1.5rem;
- }
-
- header p {
- font-size: 0.9rem;
- }
-}
-
-/* 面板样式 */
-.panel {
- display: none;
- background-color: white;
- border-radius: 8px;
- padding: 1.5rem;
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
- box-sizing: border-box;
- overflow: hidden;
-}
-
-.panel.active {
- display: block;
-}
-
-.panel-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 2rem;
- padding-bottom: 1rem;
- border-bottom: 1px solid #e9ecef;
-}
-
-.panel-header h2 {
- font-size: 1.5rem;
- color: #2c3e50;
-}
-
-/* 状态指示器 */
-.status-indicator {
- display: flex;
- align-items: center;
-}
-
-.status-dot {
- width: 10px;
- height: 10px;
- border-radius: 50%;
- background-color: #e74c3c;
- margin-right: 8px;
- animation: pulse 2s infinite;
-}
-
-.status-dot.connected {
- background-color: #2ecc71;
-}
-
-@keyframes pulse {
- 0% {
- transform: scale(1);
- opacity: 1;
- }
- 50% {
- transform: scale(1.1);
- opacity: 0.7;
- }
- 100% {
- transform: scale(1);
- opacity: 1;
- }
-}
-
-/* 按钮样式 */
-.btn {
- padding: 0.5rem 1rem;
- border: none;
- border-radius: 4px;
- cursor: pointer;
- font-size: 0.9rem;
- font-weight: 500;
- transition: all 0.3s ease;
- display: inline-flex;
- align-items: center;
-}
-
-.btn i {
- margin-right: 0.5rem;
-}
-
-.btn-primary {
- background-color: #3498db;
- color: white;
-}
-
-.btn-primary:hover {
- background-color: #2980b9;
-}
-
-.btn-secondary {
- background-color: #7f8c8d;
- color: white;
-}
-
-.btn-secondary:hover {
- background-color: #6c757d;
-}
-
-.btn-success {
- background-color: #2ecc71;
- color: white;
-}
-
-.btn-success:hover {
- background-color: #27ae60;
-}
-
-.btn-danger {
- background-color: #e74c3c;
- color: white;
-}
-
-.btn-danger:hover {
- background-color: #c0392b;
-}
-
-.btn-warning {
- background-color: #f39c12;
- color: white;
-}
-
-.btn-warning:hover {
- background-color: #e67e22;
-}
-
-.btn-sm {
- padding: 0.375rem 0.75rem;
- font-size: 0.8rem;
-}
-
-.btn-block {
- width: 100%;
-}
-
-/* 统计卡片网格 */
-.stats-grid {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(min(250px, 100%), 1fr));
- gap: clamp(1rem, 3vw, 1.5rem); /* 根据屏幕宽度动态调整间距 */
- margin-bottom: 2rem;
-}
-
-/* 图表容器 */
-.charts-container {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
- gap: clamp(1rem, 3vw, 1.5rem); /* 根据屏幕宽度动态调整间距 */
- margin-bottom: 1.5rem;
-}
-
-.stat-card {
- background-color: white;
- border-radius: 8px;
- padding: clamp(1rem, 3vw, 1.5rem); /* 根据屏幕宽度动态调整内边距 */
- text-align: center;
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
- transition: transform 0.3s ease, box-shadow 0.3s ease;
- min-width: 0; /* 防止内容溢出 */
- display: flex;
- flex-direction: column;
- justify-content: center;
-}
-
-.stat-card:hover {
- transform: translateY(-5px);
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
-}
-
-/* 卡片布局的响应式优化 */
-@media (max-width: 640px) {
- /* 在极小屏幕上,调整卡片网格为单列显示 */
- .stats-grid,
- .charts-container,
- .tables-container {
- grid-template-columns: 1fr;
- }
-
- /* 卡片更紧凑的内边距 */
- .stat-card,
- .chart-card,
- .table-card {
- padding: 1rem;
- min-height: 120px;
- }
-
- /* 优化统计卡片的图标大小 */
- .stat-card i {
- font-size: 1.5rem;
- margin-bottom: 0.5rem;
- }
-
- /* 优化统计卡片的数值和标签 */
- .stat-value {
- font-size: clamp(1.2rem, 5vw, 1.5rem);
- }
-
- .stat-label {
- font-size: clamp(0.7rem, 3vw, 0.8rem);
- }
-
- /* 优化图表卡片标题 */
- .chart-card h3 {
- font-size: clamp(1rem, 4vw, 1.1rem);
- }
-
- /* 优化面板标题 */
- .panel-header h2 {
- font-size: clamp(1.2rem, 5vw, 1.3rem);
- }
-}
-
-.stat-card i {
- font-size: 2rem;
- margin-bottom: 1rem;
- color: #3498db;
-}
-
-.stat-value {
- font-size: 2rem;
- font-weight: bold;
- margin-bottom: 0.5rem;
- color: #2c3e50;
-}
-
-.stat-label {
- font-size: 0.9rem;
- color: #7f8c8d;
- text-transform: uppercase;
- letter-spacing: 0.5px;
-}
-
-/* 图表容器 */
-.charts-container {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
- gap: 1.5rem;
- margin-bottom: 1.5rem;
-}
-
-.chart-card {
- background-color: white;
- border-radius: 8px;
- padding: 1.5rem;
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
-}
-
-.chart-card h3 {
- margin-bottom: 1rem;
- font-size: 1.2rem;
- color: #2c3e50;
-}
-
-/* 表格容器 */
-.tables-container {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
- gap: 1.5rem;
-}
-
-/* 表格卡片样式 */
-.table-card {
- background-color: white;
- border-radius: 8px;
- padding: 1.5rem;
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
- min-width: 0; /* 防止子元素溢出 */
-}
-
-/* 表格响应式样式 */
-@media (max-width: 768px) {
- /* 调整卡片内边距 */
- .table-card,
- .stat-card,
- .chart-card {
- padding: 1rem;
- }
-
- /* 调整表格单元格内边距 */
- th, td {
- padding: 0.5rem;
- font-size: 0.9rem;
- }
-
- /* 调整表格卡片标题 */
- .table-card h3,
- .chart-card h3 {
- font-size: 1.1rem;
- }
-
- /* 调整统计卡片数值和标签 */
- .stat-value {
- font-size: 1.5rem;
- }
-
- .stat-label {
- font-size: 0.8rem;
- }
-
- /* 调整面板标题 */
- .panel-header h2 {
- font-size: 1.3rem;
- }
-
- /* 调整按钮大小 */
- .btn {
- padding: 0.4rem 0.8rem;
- font-size: 0.85rem;
- }
-}
-
-.table-card {
- background-color: white;
- border-radius: 8px;
- padding: 1.5rem;
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
-}
-
-.table-card h3 {
- margin-bottom: 1rem;
- font-size: 1.2rem;
- color: #2c3e50;
-}
-/* 表格样式 */
-.table-wrapper {
- overflow-x: auto;
- border-radius: 8px;
- background-color: #ffffff;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
- margin-bottom: 16px;
- display: block;
- width: 100%;
- -webkit-overflow-scrolling: touch; /* iOS平滑滚动 */
-}
-
-/* 最常屏蔽和最常解析域名表格的特殊样式 */
-#top-blocked-table, #top-resolved-table {
- font-size: 0.85rem;
-}
-
-/* 限制域名表格高度,只显示5条内容 */
-.table-card .table-wrapper {
- max-height: 220px;
- overflow-y: auto;
- overflow-x: auto;
-}
-
-table {
- width: 100%;
- border-collapse: collapse;
- background-color: #ffffff;
- margin: 0;
- table-layout: fixed; /* 固定布局,有助于响应式设计 */
-}
-
-th, td {
- padding: 0.75rem 1rem;
- text-align: left;
- border-bottom: 1px solid #e9ecef;
- word-break: break-word; /* 长文本自动换行 */
-}
-
-/* 缩小最常屏蔽和最常解析域名表格的单元格内边距 */
-#top-blocked-table th, #top-blocked-table td,
-#top-resolved-table th, #top-resolved-table td {
- padding: 0.5rem 0.75rem;
- font-size: 0.85rem;
-}
-
-/* 移动设备上表格的优化 */
-@media (max-width: 768px) {
- /* 确保表格可以水平滚动 */
- .table-wrapper {
- max-width: 100%;
- margin-left: -1rem;
- margin-right: -1rem;
- border-radius: 0;
- }
-
- /* 表格单元格内容截断处理 */
- td {
- font-size: 0.85rem;
- max-width: 150px; /* 限制单元格最大宽度 */
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
-
- /* 当用户触摸单元格时显示完整内容 */
- td:active {
- white-space: normal;
- word-break: break-word;
- }
-
- /* 优化百分比条在小屏幕上的显示 */
- .count-cell {
- position: relative;
- padding-right: 50px; /* 为百分比文本留出空间 */
- }
-
- .percentage-text {
- font-size: 10px;
- right: 5px;
- }
-}
-
-th {
- background-color: #f8f9fa;
- font-weight: 600;
- color: #2c3e50;
-}
-
-td.loading {
- text-align: center;
- color: #7f8c8d;
- font-style: italic;
-}
-
-tr:hover {
- background-color: #f8f9fa;
-}
-
-/* 百分比条样式 */
-.count-cell {
- position: relative;
-}
-
-.count-number {
- position: relative;
- z-index: 2;
- display: inline-block;
-}
-
-.percentage-text {
- position: absolute;
- right: 10px;
- top: 50%;
- transform: translateY(-50%);
- z-index: 2;
- font-size: 12px;
- color: #bdc3c7;
-}
-
-.percentage-bar-container {
- position: absolute;
- left: 0;
- top: 0;
- height: 100%;
- width: 100%;
- z-index: 1;
- overflow: hidden;
- border-radius: 4px;
- opacity: 0.2;
-}
-
-.percentage-bar {
- height: 100%;
- transition: width 0.5s ease;
- border-radius: 4px;
-}
-
-/* 分页控件样式 */
-.pagination-controls {
- background-color: #ffffff;
- border-radius: 8px;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
- padding: 16px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- flex-wrap: wrap;
- gap: 16px;
-}
-
-.pagination-info {
- font-size: 14px;
- color: #666;
-}
-
-.pagination-buttons {
- display: flex;
- align-items: center;
- gap: 16px;
- flex-wrap: wrap;
-}
-
-.items-per-page {
- display: flex;
- align-items: center;
- gap: 8px;
- font-size: 14px;
-}
-
-.items-per-page select {
- padding: 6px 12px;
- border: 1px solid #ddd;
- border-radius: 4px;
- background-color: #fff;
- font-size: 14px;
- cursor: pointer;
-}
-
-.nav-buttons {
- display: flex;
- gap: 8px;
-}
-
-.btn:disabled {
- opacity: 0.5;
- cursor: not-allowed;
-}
-
-/* 规则内容样式优化 */
-.rule-content {
- max-width: 600px;
-}
-
-.rule-content pre {
- margin: 0;
- font-family: inherit;
- white-space: pre-wrap;
- word-break: break-all;
- font-size: 14px;
-}
-
-/* 表单样式 */
-.form-group {
- margin-bottom: 1rem;
-}
-
-.form-group label {
- display: block;
- margin-bottom: 0.5rem;
- font-weight: 500;
- color: #2c3e50;
-}
-
-.form-group input,
-.form-group select {
- width: 100%;
- padding: 0.75rem;
- border: 1px solid #ced4da;
- border-radius: 4px;
- font-size: 1rem;
- transition: border-color 0.3s ease;
-}
-
-.form-group input:focus,
-.form-group select:focus {
- outline: none;
- border-color: #3498db;
-}
-
-.form-row {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
- gap: 1rem;
-}
-
-/* 管理区域样式 */
-.rules-management,
-.hosts-management,
-.blacklists-management {
- margin-top: 1rem;
-}
-
-.rules-input,
-.rules-filter,
-.hosts-filter {
- display: grid;
- grid-template-columns: 1fr auto;
- gap: 1rem;
- margin-bottom: 1.5rem;
-}
-
-.rules-input {
- grid-template-columns: 1fr auto auto;
-}
-
-/* 查询表单 */
-.query-form .form-group {
- display: grid;
- grid-template-columns: 1fr auto;
- gap: 1rem;
-}
-
-/* 查询结果样式 */
-.query-result {
- margin-top: 2rem;
-}
-
-#query-result-container {
- background-color: #f8f9fa;
- border-radius: 8px;
- padding: 1.5rem;
-}
-
-#query-result-container.hidden {
- display: none;
-}
-
-.result-header {
- margin-bottom: 1rem;
- border-bottom: 1px solid #e9ecef;
- padding-bottom: 0.5rem;
-}
-
-.result-header h3 {
- font-size: 1.2rem;
- color: #2c3e50;
-}
-
-.result-item {
- padding: 0.5rem 0;
- border-bottom: 1px solid #e9ecef;
-}
-
-.result-item:last-child {
- border-bottom: none;
-}
-
-/* 配置表单样式 */
-.config-form {
- margin-top: 1rem;
-}
-
-.config-section {
- background-color: #f8f9fa;
- border-radius: 8px;
- padding: 1.5rem;
- margin-bottom: 2rem;
-}
-
-.config-section h3 {
- margin-bottom: 1.5rem;
- font-size: 1.2rem;
- color: #2c3e50;
-}
-
-.config-actions {
- text-align: center;
- margin-top: 2rem;
-}
-
-/* 通知组件 */
-.notification {
- position: fixed;
- bottom: 20px;
- right: 20px;
- background-color: #3498db;
- color: white;
- padding: 1rem 1.5rem;
- border-radius: 4px;
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
- z-index: 1000;
- transform: translateX(100%);
- transition: transform 0.3s ease;
-}
-
-.notification.show {
- transform: translateX(0);
-}
-
-.notification.success {
- background-color: #2ecc71;
-}
-
-.notification.error {
- background-color: #e74c3c;
-}
-
-.notification.warning {
- background-color: #f39c12;
-}
-
-.notification-content {
- display: flex;
- align-items: center;
-}
-
-.notification-content i {
- margin-right: 1rem;
-}
-
-/* 大屏幕优化 */
-@media (min-width: 1200px) {
- .container {
- max-width: 1400px;
- margin: 0 auto;
- }
-}
-
-/* 平板设备 */
-@media (max-width: 1024px) {
- .content {
- padding: 1rem;
- }
-
- .stats-grid,
- .charts-container {
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
- }
-
- .tables-container {
- grid-template-columns: 1fr;
- }
-}
-
-/* 移动设备 */
-@media (max-width: 768px) {
- .container {
- flex-direction: column;
- }
-
- .sidebar {
- width: 100%;
- height: auto;
- max-height: 120px;
- }
-
- .nav-menu {
- display: flex;
- overflow-x: auto;
- padding-bottom: 0.5rem;
- }
-
- .nav-item {
- white-space: nowrap;
- padding: 0.75rem 1rem;
- }
-
- .stats-grid,
- .charts-container,
- .tables-container {
- grid-template-columns: 1fr;
- }
-
- .rules-input,
- .rules-filter,
- .hosts-filter {
- grid-template-columns: 1fr;
- }
-
- .form-row {
- grid-template-columns: 1fr;
- }
-
- .query-form .form-group {
- grid-template-columns: 1fr;
- }
-
- .panel {
- padding: 1rem;
- }
-
- .pagination-controls {
- flex-direction: column;
- align-items: stretch;
- gap: 12px;
- }
-
- .pagination-buttons {
- flex-direction: column;
- align-items: stretch;
- gap: 12px;
- }
-
- .nav-buttons {
- justify-content: center;
- }
-}
-
-/* 小屏幕移动设备 */
-@media (max-width: 480px) {
- header {
- padding: 1.5rem 1rem;
- }
-
- .logo h1 {
- font-size: 1.5rem;
- }
-
- .content {
- padding: 0.75rem;
- }
-
- .panel-header {
- flex-direction: column;
- align-items: flex-start;
- gap: 1rem;
- }
-
- .stat-card {
- padding: 1rem;
- }
-
- .stat-value {
- font-size: 1.5rem;
- }
-
- .chart-card {
- padding: 1rem;
- }
-
- th, td {
- padding: 0.5rem;
- font-size: 0.9rem;
- }
-}
-@keyframes spin {
- 0% { transform: rotate(0deg); }
- 100% { transform: rotate(360deg); }
-}
-
-/* 确保按钮在不同容器中保持一致宽度 */
-.w-full {
- width: 100%;
-}
-
-/* 确保输入和按钮在表单组中有合适的高度对齐 */
-.form-group button {
- height: auto;
- align-self: flex-end;
-}
-
-/* 优化表格中的操作按钮间距 */
-.actions-cell {
- display: flex;
- gap: 0.5rem;
-}
-
-/* 跟踪器状态图标容器 */
-.tracker-icon-container {
- position: relative;
- display: inline-flex;
- align-items: center;
- cursor: help;
-}
-
-/* 跟踪器浮窗样式 */
-.tracker-tooltip {
- position: absolute;
- top: -10px;
- left: 100%;
- margin-left: 10px;
- background-color: white;
- border: 1px solid #e2e8f0;
- border-radius: 8px;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
- padding: 12px;
- min-width: 250px;
- z-index: 50;
- font-size: 14px;
- color: #333;
- /* 添加箭头 */
-}
-
-/* 浮窗箭头 */
-.tracker-tooltip::before {
- content: '';
- position: absolute;
- top: 15px;
- left: -10px;
- width: 0;
- height: 0;
- border-top: 10px solid transparent;
- border-bottom: 10px solid transparent;
- border-right: 10px solid white;
-}
-
-.tracker-tooltip::after {
- content: '';
- position: absolute;
- top: 15px;
- left: -11px;
- width: 0;
- height: 0;
- border-top: 10px solid transparent;
- border-bottom: 10px solid transparent;
- border-right: 10px solid #e2e8f0;
- z-index: -1;
-}
-
-/* 浮窗标题 */
-.tracker-tooltip .font-semibold {
- font-weight: 600;
- color: #2d3748;
- margin-bottom: 8px;
-}
-
-/* 搜索框样式优化 */
-#logs-search {
- /* 确保搜索框在所有设备上都有合适的宽度 */
- max-width: 100%;
- box-sizing: border-box;
-}
-
-/* 在移动设备上进一步优化搜索框 */
-@media (max-width: 768px) {
- /* 确保搜索框在移动设备上占满宽度 */
- #logs-search {
- width: 100%;
- padding: 0.5rem;
- font-size: 0.9rem;
- }
-}
-
-/* 浮窗内容项 */
-.tracker-tooltip > div {
- margin-bottom: 6px;
-}
-
-/* 浮窗链接样式 */
-.tracker-tooltip a {
- color: #3182ce;
- text-decoration: none;
-}
-
-.tracker-tooltip a:hover {
- text-decoration: underline;
-}
\ No newline at end of file
diff --git a/staticbak/static/css/vendor/all.min.css b/staticbak/static/css/vendor/all.min.css
deleted file mode 100644
index 1f367c1..0000000
--- a/staticbak/static/css/vendor/all.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
- * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- * Copyright 2023 Fonticons, Inc.
- */
-.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}
-
-.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}
-.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
\ No newline at end of file
diff --git a/staticbak/static/css/webfonts/fa-solid-900.woff2 b/staticbak/static/css/webfonts/fa-solid-900.woff2
deleted file mode 100644
index 5c16cd3..0000000
Binary files a/staticbak/static/css/webfonts/fa-solid-900.woff2 and /dev/null differ
diff --git a/staticbak/static/domain-info/domains/domain-info.json b/staticbak/static/domain-info/domains/domain-info.json
deleted file mode 100644
index 5202ac5..0000000
--- a/staticbak/static/domain-info/domains/domain-info.json
+++ /dev/null
@@ -1,535 +0,0 @@
-{
- "timeUpdated": "2025-03-17T10:05:02.622Z",
- "categories": {
- "0": "官方网站",
- "1": "搜索引擎",
- "2": "CDN",
- "3": "新闻资讯",
- "4": "购物网站",
- "5": "社交网站",
- "6": "工具网站",
- "7": "社交工具",
- "8": "视频网站",
- "9": "混合内容",
- "10": "博客/自媒体",
- "11": "论坛/社区",
- "12": "地图",
- "13": "涉政网站",
- "14": "政府网站",
- "15": "政务网站",
- "16": "组织网站",
- "17": "事业单位",
- "18": "政务服务",
- "19": "网络邮件",
- "20": "云服务",
- "21": "网络存储",
- "22": "网络服务",
- "23": "CDN网络分发平台",
- "24": "支付平台",
- "25": "其他"
- },
- "domains": {
- "网易": {
- "网易163": {
- "name": "网易163",
- "categoryId": 3,
- "url": "http://www.163.com/",
- "icon": "https://www.163.com/favicon.ico"
- },
- "网易163免费邮": {
- "name": "网易163免费邮",
- "categoryId": 18,
- "url": "https://mail.163.com/",
- "icon": "https://mail.163.com/favicon.ico"
- },
- "网易126免费邮": {
- "name": "网易126免费邮",
- "categoryId": 18,
- "url": "https://www.126.com/",
- "icon": "https://www.126.com/favicon.ico"
- },
- "网易有道词典": {
- "name": "网易有道词典",
- "categoryId": 0,
- "url": "https://dict.youdao.com/",
- "icon": "https://dict.youdao.com/favicon.ico"
- },
- "网易uu加速器":{
- "name": "网易uu加速器",
- "categoryId": 0,
- "url": {
- "1": "https://uu.163.com/",
- "2": "https://log.uu.163.com/"
- }
- },
- "company": "网易股份有限公司"
- },
- "百度": {
- "百度搜索": {
- "name": "百度搜索",
- "categoryId": 0,
- "url": "https://www.baidu.com/",
- "icon": "https://www.baidu.com/favicon.ico"
- },
- "百度百科": {
- "name": "百度百科",
- "categoryId": 19,
- "url": "https://baike.baidu.com/",
- "icon": "https://baike.baidu.com/favicon.ico"
- },
- "百度地图": {
- "name": "百度地图",
- "categoryId": 7,
- "url": "https://map.baidu.com/",
- "icon": "https://map.baidu.com/favicon.ico"
- },
- "百度知道": {
- "name": "百度知道",
- "categoryId": 12,
- "url": "https://zhidao.baidu.com/",
- "icon": "https://zhidao.baidu.com/favicon.ico"
- },
- "company": "北京百度网讯科技有限公司"
- },
- "阿里云": {
- "阿里云": {
- "name": "阿里云",
- "categoryId": 22,
- "url": "https://www.aliyun.com/",
- "icon": "https://img.alicdn.com/tfs/TB1_ZXuNcfpK1RjSZFOXXa6nFXa-32-32.ico"
- },
- "阿里云API服务": {
- "name": "阿里云API服务",
- "categoryId": 22,
- "url": "aliyuncs.com",
- "icon": "https://img.alicdn.com/tfs/TB1_ZXuNcfpK1RjSZFOXXa6nFXa-32-32.ico"
- },
- "阿里云DNS": {
- "name": "阿里云DNS",
- "categoryId": 22,
- "url": {
- "1": "alidns.com",
- "2": "alibabadns.com"
- },
- "icon": "https://img.alicdn.com/tfs/TB1_ZXuNcfpK1RjSZFOXXa6nFXa-32-32.ico"
- },
- "支付宝": {
- "name": "支付宝",
- "categoryId": 24,
- "url": "https://www.alipay.com/",
- "icon": "https://www.alipay.com/favicon.ico"
- },
- "淘宝": {
- "name": "淘宝",
- "categoryId": 4,
- "url": "https://www.taobao.com/",
- "icon": "https://www.taobao.com/favicon.ico"
- },
- "天猫": {
- "name": "天猫",
- "categoryId": 4,
- "url": "https://www.tmall.com/",
- "icon": "https://www.tmall.com/favicon.ico"
- },
- "阿里云镜像源":{
- "name": "阿里巴巴开源镜像站",
- "categoryId": 0,
- "url": {
- "1": "https://mirrors.aliyun.com/"
- },
- "icon": "https://www.aliyun.com/favicon.ico"
- },
- "company": "阿里云计算有限公司/阿里巴巴集团"
- },
- "UC":{
- "UC浏览器官网": {
- "name": "UC浏览器官网",
- "categoryId": 4,
- "url": {
- "1": "www.uc.cn",
- "2": "https://www.uc.com/"
- },
- "icon": "https://www.uc.cn/favicon.ico"
- },
- "company": "广州市动景计算机科技有限公司"
- },
- "腾讯": {
- "微信": {
- "name": "微信",
- "categoryId": 7,
- "url": {
- "1": "https://wx.qq.com/",
- "2": "https://weixin.qq.com/",
- "3": "https://res.wx.qq.com/",
- "4": "dns.weixin.qq.com",
- "5": "pc.weixin.qq.com"
- },
- "icon": "https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico"
- },
- "WeChat": {
- "name": "WeChat",
- "categoryId": 7,
- "url": {
- "1":"wechat.com",
- "2": "support.wechat.com",
- "3": "www.wechat.com"
- },
-
- "icon": "https://wechat.com/favicon.ico"
- },
- "微信开放平台": {
- "name": "微信开放平台",
- "categoryId": 24,
- "url": "https://open.weixin.qq.com/",
- "icon": "https://open.weixin.qq.com/favicon.ico"
- },
- "微信支付": {
- "name": "微信支付商户平台",
- "categoryId": 24,
- "url": {"1": "pay.weixin.qq.com",
- "2": "pay.wechatpay.cn",
- "3": "act.weixin.qq.com",
- "4": "api.wechatpay.cn",
- "5": "api.mch.weixin.qq.com",
- "6": "api2.mch.weixin.qq.com",
- "7": "api.wechatpay.cn",
- "8": "api2.wechatpay.cn",
- "9": "payapp.weixin.qq.com",
- "10": "payapp.wechatpay.cn",
- "11": "fraud.mch.weixin.qq.com",
- "12": "fraud.wechatpay.cn",
- "13": "action.weixin.qq.com",
- "14": "action.wechatpay.cn",
- "15": "wechatpay.cn"
- },
-
- "icon": "https://gtimg.wechatpay.cn/core/favicon.ico"
- },
- "微信支付海外版": {
- "name": "微信支付海外版",
- "categoryId": 24,
- "url": {"1": "https://pay.wechatpay.global/",
- "2": "apihk.mch.weixin.qq.com",
- "3": "apius.mch.weixin.qq.com"
- },
- "icon": "https://gtimg.wechatpay.cn/core/favicon.ico"
- },
- "微信CDN": {
- "name": "微信CDN和日志等资源",
- "categoryId": 23,
- "url": {"1": "https://gtimg.wechatpay.cn/",
- "2": "log.wechatpay.cn",
- "3": "newres.wechat.com",
- "4": "res.wx.qq.com",
- "5": "sh.servicewechat.com",
- "6": "res.servicewechat.com"
- },
- "icon": "https://gtimg.wechatpay.cn/core/favicon.ico"
- },
- "腾讯下载加速网络CDN": {
- "name": "腾讯下载加速网络CDN",
- "categoryId": 23,
- "url": {"1": "dldir1v6.qq.com",
- "2": "dldir1.qq.com",
- "3": "dldir2.qq.com",
- "4": "dldir3.qq.com",
- "5": "dl.qq.com",
- "6": "dldir.tencent.com",
- "7": "pc.qq.com"
- },
- "icon": "https://www.tencent.com/favicon.ico"
- },
- "腾讯QQ": {
- "name": "腾讯QQ",
- "categoryId": 5,
- "url": "https://im.qq.com/",
- "icon": "https://im.qq.com/favicon.ico"
- },
- "腾讯网": {
- "name": "腾讯网",
- "categoryId": 3,
- "url": "https://www.qq.com/",
- "icon": "https://www.qq.com/favicon.ico"
- },
- "腾讯3G移动门户": {
- "name": "腾讯3G移动门户",
- "categoryId": 3,
- "url": "3g.qq.com",
- "icon": "https://www.tencent.com/favicon.ico"
- },
- "3G 移动门户CDN": {
- "name": "3G 移动门户CDN",
- "categoryId": 23,
- "url": "cdnimg.3g.qq.com",
- "icon": "https://www.tencent.com/favicon.ico"
- },
- "腾讯": {
- "name": "腾讯",
- "categoryId": 0,
- "url": "https://www.tencent.com/",
- "icon": "https://www.tencent.com/favicon.ico"
- },
- "腾讯地图": {
- "name": "腾讯地图",
- "categoryId": 8,
- "url": "https://map.qq.com/",
- "icon": "https://map.qq.com/favicon.ico"
- },
- "腾讯视频": {
- "name": "腾讯视频",
- "categoryId": 8,
- "url": "https://v.qq.com/",
- "icon": "https://v.qq.com/favicon.ico"
- },
- "腾讯广告": {
- "name": "腾讯广告",
- "categoryId": 0,
- "url": {
- "1": "ugdtimg.com",
- "2": "gdtimg.com",
- "3": "ad.qq.com",
- "4": "v3.gdt.qq.com",
- "5": "c3.gdt.qq.com",
- "6": "v2mi.gdt.qq.com",
- "7": "gdt.qq.com"
- },
- "icon": "https://www.tencent.com/favicon.ico"
- },
- "腾讯Beacon事件日志上报": {
- "name": "腾讯Beacon事件日志上报",
- "categoryId": 0,
- "url": "aeventlog.beacon.qq.com",
- "icon": "https://www.tencent.com/favicon.ico"
- },
- "company": "腾讯计算机系统有限公司"
- },
-
- "微信青少年相关":{
- "微信守护平台":{
- "name": "微信守护平台",
- "categoryId": 24,
- "url": "wxguard.weixin.qq.com",
- "icon": "https://open.weixin.qq.com/favicon.ico"
- },
- "微信未成年人服务短链接":{
- "name": "微信未成年人服务短链接",
- "categoryId": 24,
- "url": {"1": "minorshort.weixin.qq.com",
- "2": "szminorshort.weixin.qq.com"
- },
- "icon": "https://open.weixin.qq.com/favicon.ico"
- },
- "深圳地区扩展短链接":{
- "name": "深圳地区扩展短链接",
- "categoryId": 24,
- "url": "szextshort.weixin.qq.com",
- "icon": "https://open.weixin.qq.com/favicon.ico"
- },
- "company": "腾讯计算机系统有限公司"
- },
- "高德地图相关": {
- "高德地图": {
- "name": "高德地图",
- "categoryId": 7,
- "url": "https://map.amap.com/",
- "icon": "https://a.amap.com/pc/static/favicon.ico"
- },
- "高德开放平台": {
- "name": "高德开放平台",
- "categoryId": 7,
- "url": "lbs.amap.com",
- "icon": "https://a.amap.com/pc/static/favicon.ico"
- },
- "高德地图API": {
- "name": "高德地图API",
- "categoryId": 7,
- "url": "https://restapi.amap.com/",
- "icon": "https://a.amap.com/pc/static/favicon.ico"
- },
- "company": "北京高德图强科技有限公司"
- },
- "微软": {
- "微软": {
- "name": "微软",
- "categoryId": 0,
- "url": "https://www.microsoft.com/",
- "icon": "https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/Link-List-Icons-Microsoft-365?wid=40&hei=40"
- },
- "微软Edge": {
- "name": "微软Edge",
- "categoryId": 0,
- "url": "https://www.microsoftedgeinsider.com/",
- "icon": "https://www.microsoftedgeinsider.com/favicon.ico"
- },
- "微软Office": {
- "name": "微软Office",
- "categoryId": 0,
- "url": "https://www.office.com/",
- "icon": "https://www.office.com/favicon.ico"
- },
- "Azure": {
- "name": "Azure",
- "categoryId": 0,
- "url": "https://www.azure.com/",
- "icon": "https://portal.azure.com/Content/favicon.ico"
- },
- "网络连接状态指示器(NCSI)": {
- "name": "网络连接状态指示器(NCSI)",
- "categoryId": 0,
- "url": "msftncsi.com",
- "icon": "https://www.microsoft.com/favicon.ico"
- },
- "company": "微软公司"
- },
- "字节跳动": {
- "抖音": {
- "name": "抖音",
- "categoryId": 0,
- "url": "https://www.douyin.com/",
- "icon": "https://www.douyin.com/favicon.ico"
- },
- "今日头条": {
- "name": "今日头条",
- "categoryId": 0,
- "url": "https://www.toutiao.com/",
- "icon": "https://www.toutiao.com/favicon.ico"
- },
- "抖音视频": {
- "name": "抖音视频",
- "categoryId": 8,
- "url": "https://v.douyin.com/",
- "icon": "https://v.douyin.com/favicon.ico"
- },
- "字节跳动API服务": {
- "name": "字节API服务",
- "categoryId": 0,
- "url": "zijieapi.com",
- "icon": "data:image/vnd.microsoft.icon;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAMAAABOo35HAAACFlBMVEUAAACp3f8yW7U8jf8zW7U/3vJA5P8AydMzW7VPlP955908jP8AydM8jf8yWrV5590yWrV45908jf8yW7UyW7UyW7V55909jf88jf8yW7UzW7V56N49jf80XLY+j/80XbY/lf8zZr5Ilf9GXbkA2+RCY70zZsx459x5590AydI8jP8AydN4590AydM8jf8AydM8jf88jf94590AyNM8jf8AydN5590AydM8jf8AyNIAytR5594zW7V56N09jf955948jf8AydMAytN65948jf956N56594AytMAy9Q9jv976d8AytYAy9Z66N566uE/jv8AztUAy9cAytV56OSD798A0NYAydM8jP95590yW7R45twAydN45909jP8yWrU8jf945t0AydIyWrV5590AydIyW7UzWrU8jf8AydIzW7UzWrV459145908jf8yW7UAydM8jP8AydM8jf9459155909jf8zW7UAydQAytMAydN56N0AydMzXLYAydM0W7UAydQ8jv8+jv8Ay9QzW7Y9jf965t176N80W7YAydN56N156d4yW7U0XLc+jv8+kP8Ay9VAj/81XbgAzNQ1XbY5XbZAkf9+7eQ7Yrp96+FDlv+F6emI/+4AydN55t15594AydM+jf8+jf8+jv8AydQ1W7QzW7UAydR75942XbUyWrR86OCA8uYAztqA8eN45twyWrQAyNI8jP8bed+KAAAArnRSTlMAAfb9+wUD8HMJ/fr59+jb1dTLt6eamY+Jg3xXTkhHOhIRDQsJBwX59vbr4+Dc1tXRxcC7ubSqoJuak5CKiIN+enlyb21lXVFEQj09NzAnJiQdGBUPDvzx8O/s6Obl397OzsvIyMXEwcG/vbiysbGuqqeknZSTkI2Gf3ZraGViX15YWFVTUk9OS0pEQUA8MzAtLSomHx4bGhkXCwfApKCAdGdjXlxaWTY0MyEUFBKNTPVmAAAFHElEQVR42uzX105UYRSG4YUyiCgqKvbeK3ZFsaCCXUHE3kvU2FvU2EussfcSY2KiiSUDc4fuTcl/xr8/ZuZk7/e9g/UcfcuIiIiIiIiIiIiIiMhf7wFDPxlFKx1UdunBX6NoWGEHqp40GnmwXCWHlzz9YuTBck2cvWzdVyMPlmtSAJYy8mE5sJPXNhYYebBcO06tBMyP5do1v3aTkcPytedb7R8jh+Vr2sVVHyzxpaMXfEZbLNGltcqqHjba8LGWzNJyJdZUeHTws/GWvNJ61hTW5cSQkRMsWXUWqxWsX/HvJC2xTmK5dp4pfp0UsCywXL3633hrCShrLAd2653FvBxgufaV//xoMS5HWK4+5fdHW0zLJZYDu/wolmC5xXIVHlocv6GfcyxX/IZ+HrHiN/TziuWGvsWiLLCULBaBBVZLYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYAmBJQSWEFhCYOW1erCitfn2gqnNYPlruLdwenMQWJ7+rV40I3QCy9PWx1cOhkZgeRq35uqRbYEPWD6o9d+P9wxxwOq41IblcyaHMGB1XNHLFfO6hShgeXpz/WwLFFie6m+e3x1igBVlmgeB5anhV+s0B8tX2zQHK0rB8WCBZQYWWGCBBRZYYIEFFlhggQUWWGCBBRZYYIGVZKyKgcNGmYEVCSuTyXTtO2jEGLCiYYX1mLV0bXewfFiu0mPVz1NgebEc2NzqF0Vg+bBc20/XvCoAy4flmnKupg4sL5Zr74UfdWB5sVz7K++8B8theauovPsZLIflbWYw9MGKiNU+9MGKlBv6YEWvFCwhsMACCyywwAILLLDAAgsssMACCyywwAILLLDAAgsssMACCyywwAILLLDAAgsssMACCyywwAILLLDAAgsssMACCyywwAILLLDAAgsssMD6325d7cQVhWEY/ocWn9JSoO5GhTqlSo2Wurt72qbu3lRwgruEQCCBE+6RHQ7YR7DWP8OeWSHvewnPwZcPLLDAAgsssMACCyywwAILLLDAAgsssMACCyywwAILLLCmGtbhHclg+Vimkk4f2r4OLLEu8dS3Z2Gw7Ft1/OvjMFj2Xan48uAqWAqwY3s2g6Xo4r/dG8FSdKF/5wawFJ3/9e4WWIoaf7xJBsu+UJ139MHyszr6YKmOfncYLM3RB0sRWGDZBBZYYIEFFlhggQUWWGBFgpWQBZYd1PMFS9cIWMamP5lfvVq8wDJAPdy3eKV4gWVo1ufy5eIFlhigcv6PQoFlwLqbM9AmXmAZsDKyfzeLX6BY6U/FJjexMrJ/NolfoFjTZs9bkipWuYd143VKQ0iiyh5qy9xFK8Q6t7ASslKGfKiAsTZ9KlkmqtzB8q95DLDu7frbIXEvIiz/mscC6877Py3iRJFg+dc8cKz1b/vOiTPprdJk0hsH6tWRenEqpVTmx9JhkeCxruX31obEtRRQM+csvCTq9Fgz8g/WJImLWULl9RS3ijo9VvrW/SdSxdUsoG4XHD0rgRb3az45WDcLitRQ+uJ+zaPHuv6y6ExsRjbu1zw6rLUvvg+6ObKqgsfK3XbgZKKQESv3UWFVl5ARK+1+YWWnkBkrc2/ZZaGJG7vmZC7vQ3G7EBERERERERERERER0dRtBK5Q857p1uutAAAAAElFTkSuQmCC"
- },
- "今日头条API服务":{
- "name": "今日头条API 服务",
- "categoryId": 0,
- "url": "toutiaoapi.com",
- "icon": "https://www.toutiao.com/favicon.ico"
- },
- "豆包": {
- "name": "豆包",
- "categoryId": 0,
- "url": "doubao.com",
- "icon": "https://lf-flow-web-cdn.doubao.com/obj/flow-doubao/doubao/chat/favicon.png"
- },
- "company": "字节跳动有限公司"
- },
- "金山办公": {
- "金山文档": {
- "name": "金山文档",
- "categoryId": 0,
- "url": {
- "1":"kdocs.cn",
- "2":"www.kdocs.cn",
- "3":"365.kdocs.cn",
- "4":"account.kdocs.cn"
- },
- "icon": "https://qn.cache.wpscdn.cn/kdocs/mobile/touch/apple-180.png"
- },
- "WPS Office": {
- "name": "WPS Office",
- "categoryId": 6,
- "url": {
- "1":"wps.cn",
- "2":"www.wps.cn"
- },
- "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQ2SURBVHgB7Va9biRFEK7qWa9XAuSByMEhr0FIzvARkEBgEUHEPQG79wKcTyL3Li/gnxdgl5TgTAQSQmeJxEJCIoIjOc/JyemSW4tbe70z28XX1T0z+zO2U6RzWe3unq6un6+/rl6iW7mV111Y7tzZImMekVAcvkm+NqUnxZy1S0jsQz49PdTF3Q82ych3WNzM1dM/Msp+S4UviQ32RHDlBm5MIgJrz9Bvs6y9e4Ida3MOvRXGnxRTyb2HgM6I/13nZDCQb98/IcNNtQC19J8JXf46InWM5npjfM/qnJ1dtVGjSOLgKkQWnMz4y+clcmgx2TiWb955QENpFsBhT/r7SDhymZMwEnfKOjbiFcSSRuO+k7F7FFk4xsdIECZ6xtxg7HqeuHFYQ583lh59Dgvn0qZXmL/CviGy/3tM9gJOoYPmehcMcaR7vE03Vj9yyNJsxlQf4xgkLrNFUCnvEzUwGZUoRDjjiB7peCzr9Gm9hflOgRokfZHdnfw1HPi9+X/IMu8CpHsznIIN3SgbqzvoOiXAMgBgd/nJ84TmibGx+pgcCTeoS9HSY5hpFnwh6vEPp/cr9jidE3/M+Vfb4ycv7hsf5mifzOQlYPFwM87X2B2qlq62kWnRhW3SOaC8sExDHFUadSt3OFsecg+9csGorgbAfw4GVOMDPef8fCJpy0bcnLcFVI5oFYORbcMpaQBD6/o+HybJYvawAVs4Kgq2Hd96ObqmjHK8h8gGgYw+yuWoGoXzrEXnE2SfCQ0zN3dUqc7e2VAyB0LjdtBSWugWASgK7G7EFNONtGRzFgWdp7JNKYxlCBYd+h4fP0+wFi/oGmp7ZK1WI/jowleyEIAXCy7Yl8UxGGyIzCwKjvXGxj5AZxAR2ElXPorbVDPbs7qmExKRcLUTR75plZkAFIVIDvQY3CYlpW3nKBQZ6VqoGUb6oOwgBPa1bHkUVJcnXwUd9hwAUlPZVyAAGZPnQl6UXBDLsqtrDdvReV6UHFKRuxH2AeZwCGTc2MkymO9JnSfyDN768+4WAggo7IWKxeH8vpRP3mo5TpQVUYPrBSttrabujI1sy8dvfIixZ76x3gajRhzPZq/+qEIUxjR9igr3NlVKqChZtk6NxgC9e9A8AUWL0hn+r+QvDPQTytLP+HiU3IiAmj8KXCh5IEWR8mN9C5xB1a3RfnFz/NGtTL0d7v39vsr5lQH4lTq4YM+U6aVxCuQD3JOpe19zuoNQwALp8qtsE6plvSvdXLWgmRnZL1isJXoSXjLu81GZUaGrL14otVrQ0Eg607oLfugakS2c61L9qf5a8i+e6O+CzLw3b1R1a3XHhZWp1zHhXy7Xr/NhrlvkI73fB2Vh0vvcr8pIdR0Xpisp49reILWbFPjncUe+qK0g83vK5tGbD12xqJQR3pPG0hrq8xZQ+JF/yvp0K7fyf5f/AKzIO6StcaNfAAAAAElFTkSuQmCC"
- },
- "WPS CDN": {
- "name": "WPS CDN",
- "categoryId": 23,
- "url": {
- "1":"wpsdns.com",
- "2":"kdocs-om.wpscdn.cn",
- "3":"qn.cache.wpscdn.cn",
- "4":"fe-static.wpscdn.cn",
- "5":"docer-ks3.wpscdn.cn",
- "6":"cloudcdn.wpscdn.cn",
- "7":"vasvip-pub.wpscdn.cn",
- "8":"ks3.wpsplus.wpscdn.cn",
- "9":"op-kdocs.wpscdn.cn",
- "10":"volcengine-cache-weboffice.wpscdn.cn",
- "11":"ac.wpscdn.cn",
- "12":"honeycomb-emergency.wpscdn.cn",
- "13":"res-honeycomb.wpscdn.cn",
- "14":"kflow.wpscdn.cn",
- "15":"personal-act.wpscdn.cn",
- "16":"official-package.wpscdn.cn"
- },
- "icon": "https://wps.cn/favicon.ico"
- },
- "company": "珠海金山办公科技有限公司"
- },
- "京东": {
- "京东": {
- "name": "京东",
- "categoryId": 4,
- "url": "https://www.jd.com/",
- "icon": "https://www.jd.com/favicon.ico"
- },
- "company": "京东"
- },
- "360": {
- "360官网": {
- "name": "360",
- "categoryId": 0,
- "url": "https://www.360.cn/",
- "icon": "https://www.360.cn/favicon.ico"
- },
- "360搜索": {
- "name": "360搜索",
- "categoryId": 0,
- "url": {
- "1":"https://www.so.com/",
- "2":"https://so.com/"
- },
- "icon": "https://www.so.com/favicon.ico"
- },
- "company": "奇虎360"
- },
- "绮梦之家": {
- "绮梦之家": {
- "name": "绮梦之家",
- "categoryId": 0,
- "url": {
- "1": "https://www.amazehome.xyz/",
- "2": "amazehome.xyz",
- "3": "https://www.amazehome.cn/",
- "4": "amazehome.cn"
- },
- "icon": "https://www.amazehome.cn/upload/cf3f6d7f-65b5-4df2-a7af-8289fb5aad81-yagB.png"
- },
- "company": "绮梦之家"
- },
- "南京市中医院": {
- "南京市中医院": {
- "name": "南京市中医院",
- "categoryId": 0,
- "url": {
- "1":"https://www.njszyy.cn/",
- "2":"https://njszyy.cn/"
- },
- "icon": "#"
- },
- "company": "南京市中医院"
- },
- "软件源相关": {
- "腾讯镜像源":{
- "name": "腾讯软件源",
- "categoryId": 0,
- "url": {
- "1": "https://mirrors.cloud.tencent.com/"
- },
- "icon": "https://www.tencent.com/favicon.ico",
- "company": "腾讯计算机系统有限公司"
- }
-
- }
- }
-}
diff --git a/staticbak/static/domain-info/tracker/trackers.json b/staticbak/static/domain-info/tracker/trackers.json
deleted file mode 100644
index 4af4065..0000000
--- a/staticbak/static/domain-info/tracker/trackers.json
+++ /dev/null
@@ -1,25333 +0,0 @@
-{
- "timeUpdated": "2025-03-17T10:05:02.622Z",
- "categories": {
- "0": "音视频播放",
- "1": "comments",
- "2": "客户互动",
- "3": "色情广告",
- "4": "广告",
- "5": "基本需求广告",
- "6": "网站分析",
- "7": "社交媒体",
- "8": "混合内容",
- "9": "CDN",
- "10": "hosting",
- "11": "未知的",
- "12": "扩展广告",
- "13": "邮件",
- "14": "consent",
- "15": "遥测",
- "101": "移动分析"
- },
-
- "trackers": {
- "163": {
- "name": "163",
- "categoryId": 4,
- "url": "http://www.163.com/",
- "companyId": "163"
- },
- "miui.com":{
- "name": "MIUI",
- "categoryId": 101,
- "url": "http://tracking.miui.com",
- "companyId": "miui"
- },
- "1000mercis": {
- "name": "1000mercis",
- "categoryId": 6,
- "url": "http://www.1000mercis.com/",
- "companyId": "1000mercis"
- },
- "161media": {
- "name": "Platform161",
- "categoryId": 4,
- "url": "https://platform161.com/",
- "companyId": "platform161"
- },
- "1822direkt.de": {
- "name": "1822direkt.de",
- "categoryId": 8,
- "url": "https://www.1822direkt.de/",
- "companyId": "1822direkt",
- "source": "AdGuard"
- },
- "1dmp.io": {
- "name": "1DMP",
- "categoryId": 4,
- "url": "https://1dmp.io/",
- "companyId": "1dmp"
- },
- "1plusx": {
- "name": "1plusX",
- "categoryId": 6,
- "url": "https://www.1plusx.com/",
- "companyId": "1plusx"
- },
- "1sponsor": {
- "name": "1sponsor",
- "categoryId": 4,
- "url": "http://fr.1sponsor.com/",
- "companyId": "1sponsor"
- },
- "1tag": {
- "name": "1tag",
- "categoryId": 6,
- "url": "http://www.dentsuaegisnetwork.com/",
- "companyId": "dentsu_aegis_network"
- },
- "1und1": {
- "name": "1&1 IONOS",
- "categoryId": 8,
- "url": "http://www.ionos.com/",
- "companyId": "1und1",
- "source": "AdGuard"
- },
- "24-ads.com": {
- "name": "24-ADS",
- "categoryId": 4,
- "url": "http://www.24-ads.com/",
- "companyId": "24-ads.com",
- "source": "AdGuard"
- },
- "24_7": {
- "name": "[24]7",
- "categoryId": 2,
- "url": "http://www.247-inc.com/",
- "companyId": "24_7"
- },
- "24log": {
- "name": "24log",
- "categoryId": 6,
- "url": "http://24log.ru/",
- "companyId": "24log"
- },
- "24smi": {
- "name": "24SMI",
- "categoryId": 8,
- "url": "https://24smi.org/",
- "companyId": "24smi",
- "source": "AdGuard"
- },
- "2leep": {
- "name": "2leep",
- "categoryId": 4,
- "url": "http://2leep.com/",
- "companyId": "2leep"
- },
- "33across": {
- "name": "33Across",
- "categoryId": 4,
- "url": "http://33across.com/",
- "companyId": "33across"
- },
- "3dstats": {
- "name": "3DStats",
- "categoryId": 6,
- "url": "http://www.3dstats.com/",
- "companyId": "3dstats"
- },
- "3gpp": {
- "name": "3GPP Network",
- "categoryId": 5,
- "url": "https://www.3gpp.org/",
- "companyId": "3gpp",
- "source": "AdGuard"
- },
- "4chan": {
- "name": "4Chan",
- "categoryId": 8,
- "url": "https://www.4chan.org/",
- "companyId": "4chan",
- "source": "AdGuard"
- },
- "4finance_com": {
- "name": "4finance",
- "categoryId": 2,
- "url": "https://4finance.com/",
- "companyId": "4finance",
- "source": "AdGuard"
- },
- "4w_marketplace": {
- "name": "4w Marketplace",
- "categoryId": 4,
- "url": "http://www.4wmarketplace.com/",
- "companyId": "4w_marketplace"
- },
- "500friends": {
- "name": "500friends",
- "categoryId": 2,
- "url": "http://500friends.com/",
- "companyId": "500friends"
- },
- "51.la": {
- "name": "51.La",
- "categoryId": 6,
- "url": "http://www.51.la/",
- "companyId": "51.la"
- },
- "5min_media": {
- "name": "5min Media",
- "categoryId": 0,
- "url": "http://www.5min.com/",
- "companyId": "verizon"
- },
- "6sense": {
- "name": "6Sense",
- "categoryId": 6,
- "url": "http://home.grepdata.com",
- "companyId": "6sense"
- },
- "77tracking": {
- "name": "77Tracking",
- "categoryId": 6,
- "url": "http://www.77agency.com/",
- "companyId": "77agency"
- },
- "7plus": {
- "name": "7plus",
- "categoryId": 0,
- "url": "https://7plus.com.au/",
- "companyId": "seven_group_holdings",
- "source": "AdGuard"
- },
- "7tv.de": {
- "name": "7tv.app",
- "categoryId": 0,
- "url": "https://www.7tv.app/",
- "companyId": "7tv",
- "source": "AdGuard"
- },
- "888media": {
- "name": "888media",
- "categoryId": 4,
- "url": "http://888media.net/",
- "companyId": "888_media"
- },
- "8digits": {
- "name": "8digits",
- "categoryId": 6,
- "url": "http://8digits.com/",
- "companyId": "8digits"
- },
- "94j7afz2nr.xyz": {
- "name": "94j7afz2nr.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "99stats": {
- "name": "99stats",
- "categoryId": 6,
- "url": "http://www.99stats.com/",
- "companyId": "99stats"
- },
- "a3cloud_net": {
- "name": "a3cloud.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "a8": {
- "name": "A8",
- "categoryId": 4,
- "url": "http://www.a8.net/",
- "companyId": "a8"
- },
- "aaxads.com": {
- "name": "Acceptable Ads Exchange",
- "categoryId": 4,
- "url": "https://aax.media/",
- "companyId": null
- },
- "ab_tasty": {
- "name": "AB Tasty",
- "categoryId": 6,
- "url": "https://en.abtasty.com",
- "companyId": "ab_tasty"
- },
- "abc": {
- "name": "Australian Broadcasting Corporation",
- "categoryId": 8,
- "url": "https://www.abc.net.au/",
- "companyId": "australian_government",
- "source": "AdGuard"
- },
- "ablida": {
- "name": "ablida",
- "categoryId": 4,
- "url": "https://www.ablida.de/",
- "companyId": null
- },
- "accelia": {
- "name": "Accelia",
- "categoryId": 4,
- "url": "http://www.durasite.net/",
- "companyId": "accelia"
- },
- "accengage": {
- "name": "Accengage",
- "categoryId": 4,
- "url": "https://www.accengage.com/",
- "companyId": "accengage"
- },
- "accessanalyzer": {
- "name": "AccessAnalyzer",
- "categoryId": 6,
- "url": "http://ax.xrea.com/",
- "companyId": "accessanalyzer"
- },
- "accesstrade": {
- "name": "AccessTrade",
- "categoryId": 4,
- "url": "http://accesstrade.net/",
- "companyId": "accesstrade"
- },
- "accord_group": {
- "name": "Accord Group",
- "categoryId": 4,
- "url": "http://www.accordgroup.co.uk/",
- "companyId": "accord_group"
- },
- "accordant_media": {
- "name": "Accordant Media",
- "categoryId": 4,
- "url": "http://www.accordantmedia.com/",
- "companyId": "accordant_media"
- },
- "accuen_media": {
- "name": "Accuen Media",
- "categoryId": 4,
- "url": "http://www.accuenmedia.com/",
- "companyId": "accuen_media"
- },
- "acestream.net": {
- "name": "ActStream",
- "categoryId": 12,
- "url": "http://www.acestream.org/",
- "companyId": null
- },
- "acint.net": {
- "name": "Artificial Computation Intelligence",
- "categoryId": 6,
- "url": "https://www.acint.net/",
- "companyId": "acint"
- },
- "acloudimages": {
- "name": "Acloudimages",
- "categoryId": 4,
- "url": "http://adsterra.com",
- "companyId": "adsterra"
- },
- "acpm.fr": {
- "name": "ACPM",
- "categoryId": 6,
- "url": "http://www.acpm.fr/",
- "companyId": null
- },
- "acquia.com": {
- "name": "Acquia",
- "categoryId": 6,
- "url": "https://www.acquia.com/",
- "companyId": null
- },
- "acrweb": {
- "name": "ACRWEB",
- "categoryId": 7,
- "url": "http://www.ziyu.net/",
- "companyId": "acrweb"
- },
- "actionpay": {
- "name": "actionpay",
- "categoryId": 4,
- "url": "http://actionpay.ru/",
- "companyId": "actionpay"
- },
- "active_agent": {
- "name": "Active Agent",
- "categoryId": 4,
- "url": "http://www.active-agent.com/",
- "companyId": "active_agent"
- },
- "active_campaign": {
- "name": "Active Campaign",
- "categoryId": 6,
- "url": "https://www.activecampaign.com",
- "companyId": "active_campaign"
- },
- "active_performance": {
- "name": "Active Performance",
- "categoryId": 4,
- "url": "http://www.active-performance.de/",
- "companyId": "active_performance"
- },
- "activeconversion": {
- "name": "ActiveConversion",
- "categoryId": 4,
- "url": "http://www.activeconversion.com/",
- "companyId": "activeconversion"
- },
- "activecore": {
- "name": "activecore",
- "categoryId": 6,
- "url": "http://activecore.jp/",
- "companyId": "activecore"
- },
- "activemeter": {
- "name": "ActiveMeter",
- "categoryId": 4,
- "url": "http://www.activemeter.com/",
- "companyId": "activeconversion"
- },
- "activengage": {
- "name": "ActivEngage",
- "categoryId": 2,
- "url": "http://www.activengage.com",
- "companyId": "activengage"
- },
- "acton": {
- "name": "Act-On Beacon",
- "categoryId": 4,
- "url": "http://www.actonsoftware.com/",
- "companyId": "act-on"
- },
- "acuity_ads": {
- "name": "Acuity Ads",
- "categoryId": 4,
- "url": "http://www.acuityads.com/",
- "companyId": "acuity_ads"
- },
- "acxiom": {
- "name": "Acxiom",
- "categoryId": 4,
- "url": "http://www.acxiom.com",
- "companyId": "acxiom"
- },
- "ad-blocker.org": {
- "name": "ad-blocker.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ad-center": {
- "name": "Ad-Center",
- "categoryId": 6,
- "url": "http://www.ad-center.com",
- "companyId": "ad-center"
- },
- "ad-delivery.net": {
- "name": "ad-delivery.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ad-sys": {
- "name": "Ad-Sys",
- "categoryId": 4,
- "url": "http://www.ad-sys.com/",
- "companyId": "ad-sys"
- },
- "ad.agio": {
- "name": "Ad.agio",
- "categoryId": 4,
- "url": "http://neodatagroup.com/",
- "companyId": "neodata"
- },
- "ad2click": {
- "name": "Ad2Click",
- "categoryId": 4,
- "url": "http://www.ad2click.com/",
- "companyId": "ad2click_media"
- },
- "ad2games": {
- "name": "ad2games",
- "categoryId": 4,
- "url": "http://web.ad2games.com/",
- "companyId": "ad2games"
- },
- "ad360": {
- "name": "Ad360",
- "categoryId": 4,
- "url": "http://ad360.vn",
- "companyId": "ad360"
- },
- "ad4game": {
- "name": "ad4game",
- "categoryId": 4,
- "url": "http://www.ad4game.com/",
- "companyId": "ad4game"
- },
- "ad4mat": {
- "name": "ad4mat",
- "categoryId": 4,
- "url": "http://ad4mat.info",
- "companyId": "ad4mat"
- },
- "ad6media": {
- "name": "ad6media",
- "categoryId": 4,
- "url": "https://www.ad6media.fr/",
- "companyId": "ad6media"
- },
- "ad_decisive": {
- "name": "Ad Decisive",
- "categoryId": 4,
- "url": "http://www.lagardere-global-advertising.com/",
- "companyId": "lagardere_advertising"
- },
- "ad_dynamo": {
- "name": "Ad Dynamo",
- "categoryId": 4,
- "url": "http://www.addynamo.com/",
- "companyId": "ad_dynamo"
- },
- "ad_ebis": {
- "name": "AD EBiS",
- "categoryId": 4,
- "url": "http://www.ebis.ne.jp/en/",
- "companyId": "ad_ebis"
- },
- "ad_lightning": {
- "name": "Ad Lightning",
- "categoryId": 4,
- "url": "https://www.adlightning.com/",
- "companyId": "ad_lightning"
- },
- "ad_magnet": {
- "name": "Ad Magnet",
- "categoryId": 4,
- "url": "http://www.admagnet.com/",
- "companyId": "ad_magnet"
- },
- "ad_spirit": {
- "name": "Ad Spirit",
- "categoryId": 4,
- "url": "http://www.adspirit.de",
- "companyId": "adspirit"
- },
- "adac_de": {
- "name": "adac.de",
- "categoryId": 8,
- "url": "http://adac.de/",
- "companyId": null
- },
- "adacado": {
- "name": "Adacado",
- "categoryId": 4,
- "url": "http://www.adacado.com/",
- "companyId": "adacado"
- },
- "adadyn": {
- "name": "Adadyn",
- "categoryId": 4,
- "url": "http://ozonemedia.com/index.html",
- "companyId": "adadyn"
- },
- "adality_gmbh": {
- "name": "adality GmbH",
- "categoryId": 4,
- "url": "https://www.arvato.com/",
- "companyId": "arvato"
- },
- "adalliance.io": {
- "name": "Ad Alliance",
- "categoryId": 4,
- "url": "https://www.ad-alliance.de/",
- "companyId": null
- },
- "adalyser.com": {
- "name": "Adalyser",
- "categoryId": 6,
- "url": "https://www.adalyser.com/",
- "companyId": "onesoon"
- },
- "adaos": {
- "name": "ADAOS",
- "categoryId": 4,
- "url": "http://www.24-interactive.com",
- "companyId": "24_interactive"
- },
- "adap.tv": {
- "name": "Adap.tv",
- "categoryId": 4,
- "url": "http://www.adap.tv/",
- "companyId": "verizon"
- },
- "adaptiveblue_smartlinks": {
- "name": "AdaptiveBlue SmartLinks",
- "categoryId": 2,
- "url": "http://www.adaptiveblue.com/smartlinks.html",
- "companyId": "telfie"
- },
- "adara_analytics": {
- "name": "ADARA Analytics",
- "categoryId": 4,
- "url": "http://www.adaramedia.com/",
- "companyId": "adara_analytics"
- },
- "adasia_holdings": {
- "name": "AdAsia Holdings",
- "categoryId": 4,
- "url": "https://adasiaholdings.com/",
- "companyId": "adasia_holdings"
- },
- "adbetclickin.pink": {
- "name": "adbetnet",
- "categoryId": 4,
- "url": "http://adbetnet.com/",
- "companyId": null
- },
- "adbetnet.com": {
- "name": "adbetnet",
- "categoryId": 4,
- "url": "https://adbetnet.com/",
- "companyId": null
- },
- "adblade.com": {
- "name": "Adblade",
- "categoryId": 4,
- "url": "https://adblade.com/",
- "companyId": "adblade"
- },
- "adbooth": {
- "name": "Adbooth",
- "categoryId": 4,
- "url": "http://www.adbooth.com/",
- "companyId": "adbooth_media_group"
- },
- "adbox": {
- "name": "AdBox",
- "categoryId": 4,
- "url": "http://www.adbox.lv/",
- "companyId": "adbox"
- },
- "adbrain": {
- "name": "Adbrain",
- "categoryId": 6,
- "url": "https://www.adbrain.com/",
- "companyId": "adbrain"
- },
- "adbrite": {
- "name": "AdBrite",
- "categoryId": 4,
- "url": "http://www.adbrite.com/",
- "companyId": "centro"
- },
- "adbull": {
- "name": "AdBull",
- "categoryId": 4,
- "url": "http://www.adbull.com/",
- "companyId": "adbull"
- },
- "adbutler": {
- "name": "AdButler",
- "categoryId": 4,
- "url": "https://www.adbutler.com/d",
- "companyId": "sparklit_networks"
- },
- "adc_media": {
- "name": "ad:C media",
- "categoryId": 4,
- "url": "http://www.adcmedia.de/en/",
- "companyId": "ad:c_media"
- },
- "adcash": {
- "name": "Adcash",
- "categoryId": 4,
- "url": "http://www.adcash.com",
- "companyId": "adcash"
- },
- "adchakra": {
- "name": "AdChakra",
- "categoryId": 6,
- "url": "http://adchakra.com/",
- "companyId": "adchakra"
- },
- "adchina": {
- "name": "AdChina",
- "categoryId": 4,
- "url": "http://www.adchina.com/",
- "companyId": null,
- "source": "AdGuard"
- },
- "adcito": {
- "name": "Adcito",
- "categoryId": 4,
- "url": "http://adcito.com/",
- "companyId": "adcito"
- },
- "adclear": {
- "name": "AdClear",
- "categoryId": 4,
- "url": "http://www.adclear.de/en/home.html",
- "companyId": "adclear"
- },
- "adclerks": {
- "name": "Adclerks",
- "categoryId": 4,
- "url": "https://adclerks.com/",
- "companyId": "adclerks"
- },
- "adclickmedia": {
- "name": "AdClickMedia",
- "categoryId": 4,
- "url": "http://www.adclickmedia.com/",
- "companyId": "adclickmedia"
- },
- "adclickzone": {
- "name": "AdClickZone",
- "categoryId": 4,
- "url": "http://www.adclickzone.com/",
- "companyId": "adclickzone"
- },
- "adcloud": {
- "name": "adcloud",
- "categoryId": 4,
- "url": "https://ad-cloud.jp",
- "companyId": "adcloud"
- },
- "adcolony": {
- "name": "AdColony",
- "categoryId": 4,
- "url": "https://www.adcolony.com/history-of-adcolony/",
- "companyId": "digital_turbine",
- "source": "AdGuard"
- },
- "adconion": {
- "name": "Adconion",
- "categoryId": 4,
- "url": "http://www.adconion.com/",
- "companyId": "singtel"
- },
- "adcrowd": {
- "name": "Adcrowd",
- "categoryId": 4,
- "url": "https://www.adcrowd.com",
- "companyId": "adcrowd"
- },
- "adcurve": {
- "name": "AdCurve",
- "categoryId": 4,
- "url": "http://www.shop2market.com/",
- "companyId": "adcurve"
- },
- "add_to_calendar": {
- "name": "Add To Calendar",
- "categoryId": 2,
- "url": "http://addtocalendar.com/",
- "companyId": "addtocalendar"
- },
- "addaptive": {
- "name": "Addaptive",
- "categoryId": 4,
- "url": "http://www.datapointmedia.com/",
- "companyId": "addaptive"
- },
- "addefend": {
- "name": "AdDefend",
- "categoryId": 4,
- "url": "https://www.addefend.com/",
- "companyId": null
- },
- "addfreestats": {
- "name": "AddFreeStats",
- "categoryId": 6,
- "url": "http://www.addfreestats.com/",
- "companyId": "3dstats"
- },
- "addinto": {
- "name": "AddInto",
- "categoryId": 2,
- "url": "http://www.addinto.com/",
- "companyId": "addinto"
- },
- "addshoppers": {
- "name": "AddShoppers",
- "categoryId": 7,
- "url": "http://www.addshoppers.com/",
- "companyId": "addshoppers"
- },
- "addthis": {
- "name": "AddThis",
- "categoryId": 4,
- "url": "http://www.addthis.com/",
- "companyId": "oracle"
- },
- "addvalue": {
- "name": "Addvalue",
- "categoryId": 6,
- "url": "http://www.addvalue.de/en/",
- "companyId": "addvalue.de"
- },
- "addyon": {
- "name": "AddyON",
- "categoryId": 4,
- "url": "http://www.addyon.com/homepage.php",
- "companyId": "addyon"
- },
- "adeasy": {
- "name": "AdEasy",
- "categoryId": 4,
- "url": "http://www.adeasy.ru/",
- "companyId": "adeasy"
- },
- "adelphic": {
- "name": "Adelphic",
- "categoryId": 6,
- "url": "http://www.adelphic.com/",
- "companyId": "adelphic"
- },
- "adengage": {
- "name": "AdEngage",
- "categoryId": 4,
- "url": "http://www.adengage.com",
- "companyId": "synacor"
- },
- "adespresso": {
- "name": "AdEspresso",
- "categoryId": 4,
- "url": "http://adespresso.com",
- "companyId": "adespresso"
- },
- "adexcite": {
- "name": "AdExcite",
- "categoryId": 4,
- "url": "http://adexcite.com",
- "companyId": "adexcite"
- },
- "adextent": {
- "name": "AdExtent",
- "categoryId": 4,
- "url": "http://www.adextent.com/",
- "companyId": "adextent"
- },
- "adf.ly": {
- "name": "AdF.ly",
- "categoryId": 4,
- "url": "http://adf.ly/",
- "companyId": "adf.ly"
- },
- "adfalcon": {
- "name": "AdFalcon",
- "categoryId": 4,
- "url": "http://www.adfalcon.com/",
- "companyId": "adfalcon"
- },
- "adfocus": {
- "name": "AdFocus",
- "categoryId": 4,
- "url": "http://adfoc.us/",
- "companyId": "adfoc.us"
- },
- "adforgames": {
- "name": "AdForGames",
- "categoryId": 4,
- "url": "http://www.adforgames.com/",
- "companyId": "adforgames"
- },
- "adform": {
- "name": "Adform",
- "categoryId": 4,
- "url": "http://www.adform.com",
- "companyId": "adform"
- },
- "adfox": {
- "name": "AdFox",
- "categoryId": 4,
- "url": "http://adfox.ru",
- "companyId": "yandex"
- },
- "adfreestyle": {
- "name": "adFreestyle",
- "categoryId": 4,
- "url": "http://www.adfreestyle.pl/",
- "companyId": "adfreestyle"
- },
- "adfront": {
- "name": "AdFront",
- "categoryId": 4,
- "url": "http://buysellads.com/",
- "companyId": "buysellads.com"
- },
- "adfrontiers": {
- "name": "AdFrontiers",
- "categoryId": 4,
- "url": "http://www.adfrontiers.com/",
- "companyId": "adfrontiers"
- },
- "adgear": {
- "name": "AdGear",
- "categoryId": 4,
- "url": "http://adgear.com/",
- "companyId": "samsung"
- },
- "adgebra": {
- "name": "Adgebra",
- "categoryId": 4,
- "url": "https://adgebra.in/",
- "companyId": "adgebra"
- },
- "adgenie": {
- "name": "adGENIE",
- "categoryId": 4,
- "url": "http://www.adgenie.co.uk/",
- "companyId": "ve"
- },
- "adgile": {
- "name": "Adgile",
- "categoryId": 4,
- "url": "http://www.adgile.com/",
- "companyId": "adgile_media"
- },
- "adglare.net": {
- "name": "Adglare",
- "categoryId": 4,
- "url": "https://www.adglare.com/",
- "companyId": null
- },
- "adglue": {
- "name": "Adglue",
- "categoryId": 4,
- "url": "http://admans.de/de.html",
- "companyId": "admans"
- },
- "adgoal": {
- "name": "adgoal",
- "categoryId": 4,
- "url": "http://www.adgoal.de/",
- "companyId": "adgoal"
- },
- "adgorithms": {
- "name": "Adgorithms",
- "categoryId": 4,
- "url": "http://www.adgorithms.com/",
- "companyId": "albert"
- },
- "adgoto": {
- "name": "ADGoto",
- "categoryId": 4,
- "url": "http://adgoto.com/",
- "companyId": "adgoto"
- },
- "adguard": {
- "name": "AdGuard",
- "categoryId": 8,
- "url": "https://adguard.com/",
- "companyId": "adguard",
- "source": "AdGuard"
- },
- "adguard_dns": {
- "name": "AdGuard DNS",
- "categoryId": 8,
- "url": "https://adguard-dns.io/",
- "companyId": "adguard",
- "source": "AdGuard"
- },
- "adguard_vpn": {
- "name": "AdGuard VPN",
- "categoryId": 8,
- "url": "https://adguard-vpn.com/",
- "companyId": "adguard",
- "source": "AdGuard"
- },
- "adhands": {
- "name": "AdHands",
- "categoryId": 4,
- "url": "http://promo.adhands.ru/",
- "companyId": "adhands"
- },
- "adhese": {
- "name": "Adhese",
- "categoryId": 4,
- "url": "http://adhese.com",
- "companyId": "adhese"
- },
- "adhitz": {
- "name": "AdHitz",
- "categoryId": 4,
- "url": "http://www.adhitz.com/",
- "companyId": "adhitz"
- },
- "adhood": {
- "name": "adhood",
- "categoryId": 4,
- "url": "http://www.adhood.com/",
- "companyId": "adhood"
- },
- "adify": {
- "name": "Adify",
- "categoryId": 4,
- "url": "http://www.adify.com/",
- "companyId": "cox_enterpries"
- },
- "adikteev": {
- "name": "Adikteev",
- "categoryId": 4,
- "url": "http://www.adikteev.com/",
- "companyId": "adikteev"
- },
- "adimpact": {
- "name": "Adimpact",
- "categoryId": 4,
- "url": "http://www.adimpact.com/",
- "companyId": "adimpact"
- },
- "adinch": {
- "name": "Adinch",
- "categoryId": 4,
- "url": "http://adinch.com/",
- "companyId": "adinch"
- },
- "adition": {
- "name": "Adition",
- "categoryId": 4,
- "url": "http://en.adition.com/",
- "companyId": "prosieben_sat1"
- },
- "adjal": {
- "name": "Adjal",
- "categoryId": 4,
- "url": "http://adjal.com/",
- "companyId": "marketing_adjal"
- },
- "adjs": {
- "name": "ADJS",
- "categoryId": 4,
- "url": "https://github.com/widgital/adjs",
- "companyId": "adjs"
- },
- "adjug": {
- "name": "AdJug",
- "categoryId": 4,
- "url": "http://www.adjug.com/",
- "companyId": "adjug"
- },
- "adjust": {
- "name": "Adjust GmbH",
- "categoryId": 101,
- "url": "https://www.adjust.com/",
- "companyId": "applovin",
- "source": "AdGuard"
- },
- "adk2": {
- "name": "adk2",
- "categoryId": 4,
- "url": "http://www.adk2.com/",
- "companyId": "adk2_plymedia"
- },
- "adklip": {
- "name": "adklip",
- "categoryId": 4,
- "url": "http://adklip.com",
- "companyId": "adklip"
- },
- "adknowledge": {
- "name": "Adknowledge",
- "categoryId": 4,
- "url": "http://www.adknowledge.com/",
- "companyId": "adknowledge"
- },
- "adkontekst": {
- "name": "Adkontekst",
- "categoryId": 4,
- "url": "http://www.en.adkontekst.pl/",
- "companyId": "adkontekst"
- },
- "adkontekst.pl": {
- "name": "Adkontekst",
- "categoryId": 4,
- "url": "http://netsprint.eu/",
- "companyId": "netsprint"
- },
- "adlabs": {
- "name": "AdLabs",
- "categoryId": 4,
- "url": "https://www.adlabs.ru/",
- "companyId": "adlabs"
- },
- "adlantic": {
- "name": "AdLantic",
- "categoryId": 4,
- "url": "http://www.adlantic.nl/",
- "companyId": "adlantic_online_advertising"
- },
- "adlantis": {
- "name": "AdLantis",
- "categoryId": 4,
- "url": "http://www.adlantis.jp/",
- "companyId": "adlantis"
- },
- "adless": {
- "name": "Adless",
- "categoryId": 4,
- "url": "https://www.adless.io/",
- "companyId": "adless"
- },
- "adlive_header_bidding": {
- "name": "Adlive Header Bidding",
- "categoryId": 4,
- "url": "http://adlive.io/",
- "companyId": "adlive"
- },
- "adloox": {
- "name": "Adloox",
- "categoryId": 4,
- "url": "http://www.adloox.com",
- "companyId": "adloox"
- },
- "admachine": {
- "name": "AdMachine",
- "categoryId": 4,
- "url": "https://admachine.co/",
- "companyId": null
- },
- "adman": {
- "name": "ADMAN",
- "categoryId": 4,
- "url": "http://www.adman.gr/",
- "companyId": "adman"
- },
- "adman_media": {
- "name": "ADman Media",
- "categoryId": 4,
- "url": "http://www.admanmedia.com/",
- "companyId": "ad_man_media"
- },
- "admantx.com": {
- "name": "ADmantX",
- "categoryId": 4,
- "url": "http://www.admantx.com/",
- "companyId": "expert_system_spa"
- },
- "admaster": {
- "name": "AdMaster",
- "categoryId": 4,
- "url": "http://admaster.net",
- "companyId": "admaster"
- },
- "admaster.cn": {
- "name": "AdMaster.cn",
- "categoryId": 4,
- "url": "http://www.admaster.com.cn/",
- "companyId": "admaster"
- },
- "admatic": {
- "name": "Admatic",
- "categoryId": 4,
- "url": "http://www.admatic.com.tr/#1page",
- "companyId": "admatic"
- },
- "admatrix": {
- "name": "Admatrix",
- "categoryId": 4,
- "url": "https://admatrix.jp/login#block01",
- "companyId": "admatrix"
- },
- "admax": {
- "name": "Admax",
- "categoryId": 4,
- "url": "http://www.admaxnetwork.com/index.php",
- "companyId": "komli"
- },
- "admaxim": {
- "name": "AdMaxim",
- "categoryId": 4,
- "url": "http://admaxim.com/",
- "companyId": "admaxim"
- },
- "admaya": {
- "name": "Admaya",
- "categoryId": 4,
- "url": "http://www.admaya.in/",
- "companyId": "admaya"
- },
- "admedia": {
- "name": "AdMedia",
- "categoryId": 4,
- "url": "http://admedia.com/",
- "companyId": "admedia"
- },
- "admedo_com": {
- "name": "Admedo",
- "categoryId": 4,
- "url": "http://admedo.com/",
- "companyId": "admedo"
- },
- "admeira.ch": {
- "name": "AdMeira",
- "categoryId": 4,
- "url": "http://admeira.ch/",
- "companyId": "admeira"
- },
- "admeld": {
- "name": "AdMeld",
- "categoryId": 4,
- "url": "http://www.admeld.com",
- "companyId": "google"
- },
- "admeo": {
- "name": "Admeo",
- "categoryId": 4,
- "url": "http://admeo.ru/",
- "companyId": "admeo.ru"
- },
- "admeta": {
- "name": "Admeta",
- "categoryId": 4,
- "url": "http://www.admeta.com/",
- "companyId": "admeta"
- },
- "admicro": {
- "name": "AdMicro",
- "categoryId": 4,
- "url": "http://www.admicro.vn/",
- "companyId": "admicro"
- },
- "admitad.com": {
- "name": "Admitad",
- "categoryId": 4,
- "url": "https://www.admitad.com/en/#",
- "companyId": "admitad"
- },
- "admixer": {
- "name": "Admixer",
- "categoryId": 4,
- "url": "https://admixer.com/",
- "companyId": "admixer",
- "source": "AdGuard"
- },
- "admixer.net": {
- "name": "Admixer",
- "categoryId": 4,
- "url": "https://admixer.net/",
- "companyId": "admixer"
- },
- "admized": {
- "name": "ADMIZED",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "admo.tv": {
- "name": "Admo.tv",
- "categoryId": 4,
- "url": "https://admo.tv/",
- "companyId": "admo.tv"
- },
- "admob": {
- "name": "AdMob",
- "categoryId": 4,
- "url": "http://www.admob.com/",
- "companyId": "google"
- },
- "admost": {
- "name": "adMOST",
- "categoryId": 4,
- "url": "http://www.admost.com/",
- "companyId": "admost"
- },
- "admotion": {
- "name": "Admotion",
- "categoryId": 4,
- "url": "http://www.admotionus.com/",
- "companyId": "admotion"
- },
- "admulti": {
- "name": "ADmulti",
- "categoryId": 4,
- "url": "http://admulti.com",
- "companyId": "admulti"
- },
- "adnegah": {
- "name": "Adnegah",
- "categoryId": 4,
- "url": "https://adnegah.net/",
- "companyId": "adnegah"
- },
- "adnet": {
- "name": "Adnet",
- "categoryId": 4,
- "url": "http://www.adnet.vn/",
- "companyId": "adnet"
- },
- "adnet.de": {
- "name": "adNET.de",
- "categoryId": 4,
- "url": "http://www.adnet.de",
- "companyId": "adnet.de"
- },
- "adnet_media": {
- "name": "Adnet Media",
- "categoryId": 4,
- "url": "http://www.adnetmedia.lt/",
- "companyId": "adnet_media"
- },
- "adnetwork.net": {
- "name": "AdNetwork.net",
- "categoryId": 4,
- "url": "http://www.adnetwork.net/",
- "companyId": "adnetwork.net"
- },
- "adnetworkperformance.com": {
- "name": "adnetworkperformance.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "adnexio": {
- "name": "AdNexio",
- "categoryId": 4,
- "url": "http://adnexio.com/",
- "companyId": "adnexio"
- },
- "adnium.com": {
- "name": "Adnium",
- "categoryId": 4,
- "url": "https://adnium.com/",
- "companyId": null
- },
- "adnologies": {
- "name": "Adnologies",
- "categoryId": 4,
- "url": "http://www.adnologies.com/",
- "companyId": "adnologies_gmbh"
- },
- "adnow": {
- "name": "Adnow",
- "categoryId": 4,
- "url": "http://adnow.com/",
- "companyId": "adnow"
- },
- "adnymics": {
- "name": "Adnymics",
- "categoryId": 4,
- "url": "http://adnymics.com/en/",
- "companyId": "adnymics"
- },
- "adobe_audience_manager": {
- "name": "Adobe Audience Manager",
- "categoryId": 4,
- "url": "http://www.demdex.com/",
- "companyId": "adobe"
- },
- "adobe_developer": {
- "name": "Adobe Developer",
- "categoryId": 8,
- "url": "https://developer.adobe.com/",
- "companyId": "adobe",
- "source": "AdGuard"
- },
- "adobe_dynamic_media": {
- "name": "Adobe Dynamic Media",
- "categoryId": 4,
- "url": "http://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_dynamic_tag_management": {
- "name": "Adobe Dynamic Tag Management",
- "categoryId": 5,
- "url": "https://dtm.adobe.com/sign_in",
- "companyId": "adobe"
- },
- "adobe_experience_cloud": {
- "name": "Adobe Experience Cloud",
- "categoryId": 6,
- "url": "https://business.adobe.com/",
- "companyId": "adobe",
- "source": "AdGuard"
- },
- "adobe_experience_league": {
- "name": "Adobe Experience League",
- "categoryId": 6,
- "url": "https://experienceleague.adobe.com/",
- "companyId": "adobe",
- "source": "AdGuard"
- },
- "adobe_login": {
- "name": "Adobe Login",
- "categoryId": 2,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_tagmanager": {
- "name": "Adobe TagManager",
- "categoryId": 4,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_test_and_target": {
- "name": "Adobe Target",
- "categoryId": 4,
- "url": "https://www.adobe.com/marketing/target.html",
- "companyId": "adobe"
- },
- "adobe_typekit": {
- "name": "Adobe Typekit",
- "categoryId": 5,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adocean": {
- "name": "AdOcean",
- "categoryId": 4,
- "url": "http://adocean.cz/en",
- "companyId": "adocean"
- },
- "adometry": {
- "name": "Adometry",
- "categoryId": 4,
- "url": "http://www.adometry.com/",
- "companyId": "google"
- },
- "adomik": {
- "name": "Adomik",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "adon_network": {
- "name": "AdOn Network",
- "categoryId": 4,
- "url": "http://www.adonnetwork.com/",
- "companyId": "adon_network"
- },
- "adonion": {
- "name": "AdOnion",
- "categoryId": 4,
- "url": "http://www.adonion.com/",
- "companyId": "adonion"
- },
- "adonly": {
- "name": "AdOnly",
- "categoryId": 4,
- "url": "https://gloadmarket.com/",
- "companyId": "adonly"
- },
- "adoperator": {
- "name": "AdOperator",
- "categoryId": 4,
- "url": "http://www.adoperator.com/start/",
- "companyId": "adoperator"
- },
- "adoric": {
- "name": "Adoric",
- "categoryId": 6,
- "url": "https://adoric.com/",
- "companyId": "adoric"
- },
- "adorika": {
- "name": "Adorika",
- "categoryId": 4,
- "url": "http://www.adorika.com/",
- "companyId": "adorika"
- },
- "adosia": {
- "name": "Adosia",
- "categoryId": 4,
- "url": "https://adosia.com",
- "companyId": "adosia"
- },
- "adotmob.com": {
- "name": "Adotmob",
- "categoryId": 4,
- "url": "https://adotmob.com/",
- "companyId": "adotmob"
- },
- "adotube": {
- "name": "AdoTube",
- "categoryId": 4,
- "url": "http://www.adotube.com",
- "companyId": "exponential_interactive"
- },
- "adparlor": {
- "name": "AdParlor",
- "categoryId": 4,
- "url": "http://www.adparlor.com/",
- "companyId": "fluent"
- },
- "adpartner": {
- "name": "adpartner",
- "categoryId": 4,
- "url": "http://adpartner.pro/",
- "companyId": "adpartner"
- },
- "adpeeps": {
- "name": "Ad Peeps",
- "categoryId": 4,
- "url": "http://www.adpeeps.com/",
- "companyId": "ad_peeps"
- },
- "adperfect": {
- "name": "AdPerfect",
- "categoryId": 4,
- "url": "http://www.adperfect.com/",
- "companyId": "adperfect"
- },
- "adperium": {
- "name": "AdPerium",
- "categoryId": 4,
- "url": "http://www.adperium.com/",
- "companyId": "adperium"
- },
- "adpilot": {
- "name": "AdPilot",
- "categoryId": 4,
- "url": "http://www.adpilotgroup.com/",
- "companyId": "adpilot"
- },
- "adplan": {
- "name": "AdPlan",
- "categoryId": 4,
- "url": "http://www.adplan.ne.jp/",
- "companyId": "adplan"
- },
- "adplus": {
- "name": "ADPLUS",
- "categoryId": 4,
- "url": "http://www.adplus.co.id/",
- "companyId": "adplus"
- },
- "adprofex": {
- "name": "AdProfex",
- "categoryId": 4,
- "url": "https://adprofex.com/",
- "companyId": "adprofex",
- "source": "AdGuard"
- },
- "adprofy": {
- "name": "AdProfy",
- "categoryId": 4,
- "url": "http://adprofy.com/",
- "companyId": "adprofy"
- },
- "adpulse": {
- "name": "AdPulse",
- "categoryId": 4,
- "url": "http://adpulse.ir/",
- "companyId": "adpulse.ir"
- },
- "adpv": {
- "name": "Adpv",
- "categoryId": 4,
- "url": "http://www.adpv.com/",
- "companyId": "adpv"
- },
- "adreactor": {
- "name": "AdReactor",
- "categoryId": 4,
- "url": "http://www.adreactor.com/",
- "companyId": "adreactor"
- },
- "adrecord": {
- "name": "Adrecord",
- "categoryId": 4,
- "url": "http://www.adrecord.com/",
- "companyId": "adrecord"
- },
- "adrecover": {
- "name": "AdRecover",
- "categoryId": 4,
- "url": "https://www.adrecover.com/",
- "companyId": "adpushup"
- },
- "adresult": {
- "name": "ADResult",
- "categoryId": 4,
- "url": "http://www.adresult.jp/",
- "companyId": "adresult"
- },
- "adriver": {
- "name": "AdRiver",
- "categoryId": 4,
- "url": "http://www.adriver.ru/",
- "companyId": "ad_river"
- },
- "adroll": {
- "name": "AdRoll",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adroll_pixel": {
- "name": "AdRoll Pixel",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adroll_roundtrip": {
- "name": "AdRoll Roundtrip",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adrom": {
- "name": "adRom",
- "categoryId": 4,
- "url": "http://www.adrom.net/",
- "companyId": null
- },
- "adru.net": {
- "name": "adru.net",
- "categoryId": 4,
- "url": "http://adru.net/",
- "companyId": "adru.net"
- },
- "adrunnr": {
- "name": "AdRunnr",
- "categoryId": 4,
- "url": "https://adrunnr.com/",
- "companyId": "adrunnr"
- },
- "adsame": {
- "name": "Adsame",
- "categoryId": 4,
- "url": "http://adsame.com/",
- "companyId": "adsame"
- },
- "adsbookie": {
- "name": "AdsBookie",
- "categoryId": 4,
- "url": "http://adsbookie.com/",
- "companyId": null
- },
- "adscale": {
- "name": "AdScale",
- "categoryId": 4,
- "url": "http://www.adscale.de/",
- "companyId": "stroer"
- },
- "adscience": {
- "name": "Adscience",
- "categoryId": 4,
- "url": "http://www.adscience.nl/",
- "companyId": "adscience"
- },
- "adsco.re": {
- "name": "Adscore",
- "categoryId": 4,
- "url": "https://www.adscore.com/",
- "companyId": null
- },
- "adsensecamp": {
- "name": "AdsenseCamp",
- "categoryId": 4,
- "url": "http://adsensecamp.com",
- "companyId": "adsensecamp"
- },
- "adserverpub": {
- "name": "AdServerPub",
- "categoryId": 4,
- "url": "http://www.adserverpub.com/",
- "companyId": "adserverpub"
- },
- "adservice_media": {
- "name": "Adservice Media",
- "categoryId": 4,
- "url": "http://www.adservicemedia.com/",
- "companyId": "adservice_media"
- },
- "adsfactor": {
- "name": "Adsfactor",
- "categoryId": 4,
- "url": "http://www.adsfactor.com/",
- "companyId": "pixels_asia"
- },
- "adside": {
- "name": "AdSide",
- "categoryId": 4,
- "url": "http://www.adside.com/",
- "companyId": "adside"
- },
- "adskeeper": {
- "name": "AdsKeeper",
- "categoryId": 4,
- "url": "http://adskeeper.co.uk/",
- "companyId": "adskeeper"
- },
- "adskom": {
- "name": "ADSKOM",
- "categoryId": 4,
- "url": "http://adskom.com/",
- "companyId": "adskom"
- },
- "adslot": {
- "name": "Adslot",
- "categoryId": 4,
- "url": "http://www.adslot.com/",
- "companyId": "adslot"
- },
- "adsnative": {
- "name": "adsnative",
- "categoryId": 4,
- "url": "http://www.adsnative.com/",
- "companyId": "adsnative"
- },
- "adsniper.ru": {
- "name": "AdSniper",
- "categoryId": 4,
- "url": "http://ad-sniper.com/",
- "companyId": "adsniper"
- },
- "adspeed": {
- "name": "AdSpeed",
- "categoryId": 4,
- "url": "http://www.adspeed.com/",
- "companyId": "adspeed"
- },
- "adspyglass": {
- "name": "AdSpyglass",
- "categoryId": 4,
- "url": "https://www.adspyglass.com/",
- "companyId": "adspyglass"
- },
- "adstage": {
- "name": "AdStage",
- "categoryId": 4,
- "url": "http://www.adstage.io/",
- "companyId": "adstage"
- },
- "adstanding": {
- "name": "AdStanding",
- "categoryId": 4,
- "url": "http://www.adstanding.com/en/",
- "companyId": "adstanding"
- },
- "adstars": {
- "name": "Adstars",
- "categoryId": 4,
- "url": "http://adstars.co.id",
- "companyId": "adstars"
- },
- "adstir": {
- "name": "adstir",
- "categoryId": 4,
- "url": "https://en.ad-stir.com/",
- "companyId": "united_inc"
- },
- "adsupply": {
- "name": "AdSupply",
- "categoryId": 4,
- "url": "http://www.adsupply.com/",
- "companyId": "adsupply"
- },
- "adswizz": {
- "name": "AdsWizz",
- "categoryId": 4,
- "url": "http://www.adswizz.com/",
- "companyId": "adswizz"
- },
- "adtaily": {
- "name": "AdTaily",
- "categoryId": 4,
- "url": "http://www.adtaily.pl/",
- "companyId": "adtaily"
- },
- "adtarget.me": {
- "name": "Adtarget.me",
- "categoryId": 4,
- "url": "http://www.adtarget.me/",
- "companyId": "adtarget.me"
- },
- "adtech": {
- "name": "ADTECH",
- "categoryId": 6,
- "url": "http://www.adtechus.com/",
- "companyId": "verizon"
- },
- "adtegrity": {
- "name": "Adtegrity",
- "categoryId": 4,
- "url": "http://www.adtegrity.com/",
- "companyId": "adtegrity"
- },
- "adtelligence.de": {
- "name": "Adtelligence",
- "categoryId": 4,
- "url": "https://adtelligence.com/",
- "companyId": null
- },
- "adtheorent": {
- "name": "Adtheorent",
- "categoryId": 4,
- "url": "http://adtheorent.com/",
- "companyId": "adtheorant"
- },
- "adthink": {
- "name": "Adthink",
- "categoryId": 4,
- "url": "https://adthink.com/",
- "companyId": "adthink"
- },
- "adtiger": {
- "name": "AdTiger",
- "categoryId": 4,
- "url": "http://www.adtiger.de/",
- "companyId": "adtiger"
- },
- "adtima": {
- "name": "Adtima",
- "categoryId": 4,
- "url": "http://adtima.vn/",
- "companyId": "adtima"
- },
- "adtng.com": {
- "name": "adtng.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "adtoma": {
- "name": "Adtoma",
- "categoryId": 4,
- "url": "http://www.adtoma.com/",
- "companyId": "adtoma"
- },
- "adtr02.com": {
- "name": "adtr02.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "adtraction": {
- "name": "Adtraction",
- "categoryId": 4,
- "url": "http://adtraction.com/",
- "companyId": "adtraction"
- },
- "adtraxx": {
- "name": "AdTraxx",
- "categoryId": 4,
- "url": "https://www1.adtraxx.de/",
- "companyId": "adtrax"
- },
- "adtriba.com": {
- "name": "AdTriba",
- "categoryId": 6,
- "url": "https://www.adtriba.com/",
- "companyId": null
- },
- "adtrue": {
- "name": "Adtrue",
- "categoryId": 4,
- "url": "http://adtrue.com/",
- "companyId": "adtrue"
- },
- "adtrustmedia": {
- "name": "AdTrustMedia",
- "categoryId": 4,
- "url": "https://adtrustmedia.com/",
- "companyId": "adtrustmedia"
- },
- "adtube": {
- "name": "AdTube",
- "categoryId": 4,
- "url": "http://adtube.ir/",
- "companyId": "adtube"
- },
- "adult_webmaster_empire": {
- "name": "Adult Webmaster Empire",
- "categoryId": 3,
- "url": "http://www.awempire.com/",
- "companyId": "adult_webmaster_empire"
- },
- "adultadworld": {
- "name": "AdultAdWorld",
- "categoryId": 3,
- "url": "http://adultadworld.com/",
- "companyId": "adult_adworld"
- },
- "adup-tech.com": {
- "name": "AdUp Technology",
- "categoryId": 4,
- "url": "https://www.adup-tech.com/",
- "companyId": "adup_technology"
- },
- "advaction": {
- "name": "Advaction",
- "categoryId": 4,
- "url": "http://advaction.ru/",
- "companyId": "advaction"
- },
- "advalo": {
- "name": "Advalo",
- "categoryId": 4,
- "url": "https://www.advalo.com",
- "companyId": "advalo"
- },
- "advanced_hosters": {
- "name": "Advanced Hosters",
- "categoryId": 9,
- "url": "https://advancedhosters.com/",
- "companyId": null
- },
- "advark": {
- "name": "Advark",
- "categoryId": 4,
- "url": "https://advarkads.com/",
- "companyId": "advark"
- },
- "adventori": {
- "name": "ADventori",
- "categoryId": 8,
- "url": "https://www.adventori.com/",
- "companyId": "adventori"
- },
- "adverline": {
- "name": "Adverline",
- "categoryId": 4,
- "url": "http://www.adverline.com/",
- "companyId": "adverline"
- },
- "adversal": {
- "name": "Adversal",
- "categoryId": 4,
- "url": "https://www.adversal.com/",
- "companyId": "adversal"
- },
- "adverserve": {
- "name": "adverServe",
- "categoryId": 4,
- "url": "http://www.adverserve.com/",
- "companyId": "adverserve"
- },
- "adverteerdirect": {
- "name": "Adverteerdirect",
- "categoryId": 4,
- "url": "http://www.adverteerdirect.nl/",
- "companyId": "adverteerdirect"
- },
- "adverticum": {
- "name": "Adverticum",
- "categoryId": 4,
- "url": "https://adverticum.net/english/",
- "companyId": "adverticum"
- },
- "advertise.com": {
- "name": "Advertise.com",
- "categoryId": 4,
- "url": "http://advertise.com/",
- "companyId": "advertise.com"
- },
- "advertisespace": {
- "name": "AdvertiseSpace",
- "categoryId": 4,
- "url": "http://www.advertisespace.com/",
- "companyId": "advertisespace"
- },
- "advertising.com": {
- "name": "Verizon Media",
- "categoryId": 4,
- "url": "https://www.verizonmedia.com/",
- "companyId": "verizon"
- },
- "advertlets": {
- "name": "Advertlets",
- "categoryId": 4,
- "url": "http://www.advertlets.com/",
- "companyId": "advertlets"
- },
- "advertserve": {
- "name": "AdvertServe",
- "categoryId": 4,
- "url": "https://secure.advertserve.com/",
- "companyId": "advertserve"
- },
- "advidi": {
- "name": "Advidi",
- "categoryId": 4,
- "url": "http://advidi.com/",
- "companyId": "advidi"
- },
- "advmaker.ru": {
- "name": "advmaker.ru",
- "categoryId": 4,
- "url": "http://advmaker.ru/",
- "companyId": "advmaker.ru"
- },
- "advolution": {
- "name": "Advolution",
- "categoryId": 4,
- "url": "http://www.advolution.de",
- "companyId": "advolution"
- },
- "adwebster": {
- "name": "adwebster",
- "categoryId": 4,
- "url": "http://adwebster.com",
- "companyId": "adwebster"
- },
- "adwit": {
- "name": "Adwit",
- "categoryId": 4,
- "url": "http://www.adwitserver.com",
- "companyId": "adwit"
- },
- "adworx.at": {
- "name": "ADworx",
- "categoryId": 4,
- "url": "http://www.adworx.at/",
- "companyId": "ors"
- },
- "adworxs.net": {
- "name": "adworxs.net",
- "categoryId": 4,
- "url": "http://www.adworxs.net/?lang=en",
- "companyId": null
- },
- "adxion": {
- "name": "adXion",
- "categoryId": 4,
- "url": "http://www.adxion.com",
- "companyId": "adxion"
- },
- "adxpansion": {
- "name": "AdXpansion",
- "categoryId": 3,
- "url": "http://www.adxpansion.com/",
- "companyId": "adxpansion"
- },
- "adxpose": {
- "name": "AdXpose",
- "categoryId": 4,
- "url": "http://www.adxpose.com/home.page",
- "companyId": "comscore"
- },
- "adxprtz.com": {
- "name": "adxprtz.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "adyoulike": {
- "name": "Adyoulike",
- "categoryId": 4,
- "url": "http://www.adyoulike.com/",
- "companyId": "adyoulike"
- },
- "adzerk": {
- "name": "Adzerk",
- "categoryId": 4,
- "url": "http://adzerk.com/",
- "companyId": "adzerk"
- },
- "adzly": {
- "name": "adzly",
- "categoryId": 4,
- "url": "http://www.adzly.com/",
- "companyId": "adzly"
- },
- "aemediatraffic": {
- "name": "Aemediatraffic",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "aerify_media": {
- "name": "Aerify Media",
- "categoryId": 4,
- "url": "http://aerifymedia.com/",
- "companyId": "aerify_media"
- },
- "aeris_weather": {
- "name": "Aeris Weather",
- "categoryId": 2,
- "url": "https://www.aerisweather.com/",
- "companyId": "aerisweather"
- },
- "affectv": {
- "name": "Hybrid Theory",
- "categoryId": 4,
- "url": "https://hybridtheory.com/",
- "companyId": "affectv"
- },
- "affilbox": {
- "name": "Affilbox",
- "categoryId": 4,
- "url": "https://affilbox.com/",
- "companyId": "affilbox",
- "source": "AdGuard"
- },
- "affiliate-b": {
- "name": "Affiliate-B",
- "categoryId": 4,
- "url": "https://www.affiliate-b.com/",
- "companyId": "affiliate_b"
- },
- "affiliate4you": {
- "name": "Affiliate4You",
- "categoryId": 4,
- "url": "http://www.affiliate4you.nl/",
- "companyId": "family_blend"
- },
- "affiliatebuzz": {
- "name": "AffiliateBuzz",
- "categoryId": 4,
- "url": "http://www.affiliatebuzz.com/",
- "companyId": "affiliatebuzz"
- },
- "affiliatefuture": {
- "name": "AffiliateFuture",
- "categoryId": 4,
- "url": "http://www.affiliatefuture.com",
- "companyId": "affiliatefuture"
- },
- "affiliatelounge": {
- "name": "AffiliateLounge",
- "categoryId": 4,
- "url": "http://www.affiliatelounge.com/",
- "companyId": "betsson_group_affiliates"
- },
- "affiliation_france": {
- "name": "Affiliation France",
- "categoryId": 4,
- "url": "http://www.affiliation-france.com/",
- "companyId": "affiliation-france"
- },
- "affiliator": {
- "name": "Affiliator",
- "categoryId": 4,
- "url": "http://www.affiliator.com/",
- "companyId": "affiliator"
- },
- "affiliaweb": {
- "name": "Affiliaweb",
- "categoryId": 4,
- "url": "http://affiliaweb.fr/",
- "companyId": "affiliaweb"
- },
- "affilinet": {
- "name": "affilinet",
- "categoryId": 4,
- "url": "https://www.affili.net/",
- "companyId": "axel_springer"
- },
- "affimax": {
- "name": "AffiMax",
- "categoryId": 4,
- "url": "https://www.affimax.de",
- "companyId": "affimax"
- },
- "affinity": {
- "name": "Affinity",
- "categoryId": 4,
- "url": "http://www.affinity.com/",
- "companyId": "affinity"
- },
- "affinity.by": {
- "name": "Affinity.by",
- "categoryId": 4,
- "url": "http://affinity.by",
- "companyId": "affinity_digital_agency"
- },
- "affiz_cpm": {
- "name": "Affiz CPM",
- "categoryId": 4,
- "url": "http://cpm.affiz.com/home",
- "companyId": "affiz_cpm"
- },
- "afftrack": {
- "name": "Afftrack",
- "categoryId": 6,
- "url": "http://www.afftrack.com/",
- "companyId": "afftrack"
- },
- "afgr2.com": {
- "name": "afgr2.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "afilio": {
- "name": "Afilio",
- "categoryId": 6,
- "url": "http://afilio.com.br/",
- "companyId": "afilio"
- },
- "afs_analystics": {
- "name": "AFS Analystics",
- "categoryId": 6,
- "url": "https://www.afsanalytics.com/",
- "companyId": "afs_analytics"
- },
- "aftonbladet_ads": {
- "name": "Aftonbladet Ads",
- "categoryId": 4,
- "url": "http://annonswebb.aftonbladet.se/",
- "companyId": "aftonbladet"
- },
- "aftv-serving.bid": {
- "name": "aftv-serving.bid",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "aggregate_knowledge": {
- "name": "Aggregate Knowledge",
- "categoryId": 4,
- "url": "http://www.aggregateknowledge.com/",
- "companyId": "neustar"
- },
- "agilone": {
- "name": "AgilOne",
- "categoryId": 6,
- "url": "http://www.agilone.com/",
- "companyId": "agilone"
- },
- "agora": {
- "name": "Agora",
- "categoryId": 4,
- "url": "https://www.agora.pl/",
- "companyId": "agora_sa"
- },
- "ahalogy": {
- "name": "Ahalogy",
- "categoryId": 7,
- "url": "http://www.ahalogy.com/",
- "companyId": "ahalogy"
- },
- "ai_media_group": {
- "name": "Ai Media Group",
- "categoryId": 4,
- "url": "http://aimediagroup.com/",
- "companyId": "ai_media_group"
- },
- "aidata": {
- "name": "Aidata",
- "categoryId": 4,
- "url": "http://aidata.me/",
- "companyId": "aidata"
- },
- "aim4media": {
- "name": "Aim4Media",
- "categoryId": 4,
- "url": "http://aim4media.com",
- "companyId": "aim4media"
- },
- "airbnb": {
- "name": "Airbnb",
- "categoryId": 6,
- "url": "https://affiliate.withairbnb.com/",
- "companyId": null
- },
- "airbrake": {
- "name": "Airbrake",
- "categoryId": 4,
- "url": "https://airbrake.io/",
- "companyId": "airbrake"
- },
- "airpr.com": {
- "name": "AirPR",
- "categoryId": 6,
- "url": "https://airpr.com/",
- "companyId": "airpr"
- },
- "airpush": {
- "name": "Airpush",
- "categoryId": 4,
- "url": "http://www.airpush.com/",
- "companyId": "airpush"
- },
- "akamai_technologies": {
- "name": "Akamai Technologies",
- "categoryId": 9,
- "url": "https://www.akamai.com/",
- "companyId": "akamai",
- "source": "AdGuard"
- },
- "akamoihd.net": {
- "name": "akamoihd.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "akane": {
- "name": "AkaNe",
- "categoryId": 4,
- "url": "http://akane-ad.com/",
- "companyId": "akane"
- },
- "akanoo": {
- "name": "Akanoo",
- "categoryId": 6,
- "url": "http://www.akanoo.com/",
- "companyId": "akanoo"
- },
- "akavita": {
- "name": "Akavita",
- "categoryId": 4,
- "url": "http://www.akavita.by/en",
- "companyId": "akavita"
- },
- "al_bawaba_advertising": {
- "name": "Al Bawaba Advertising",
- "categoryId": 4,
- "url": "http://www.albawaba.com/advertising",
- "companyId": "al_bawaba"
- },
- "albacross": {
- "name": "Albacross",
- "categoryId": 4,
- "url": "https://albacross.com",
- "companyId": "albacross"
- },
- "aldi-international.com": {
- "name": "aldi-international.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "alenty": {
- "name": "Alenty",
- "categoryId": 4,
- "url": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "alephd.com": {
- "name": "alephd",
- "categoryId": 4,
- "url": "https://www.alephd.com/",
- "companyId": "verizon"
- },
- "alexa_metrics": {
- "name": "Alexa Metrics",
- "categoryId": 6,
- "url": "http://www.alexa.com/",
- "companyId": "amazon_associates"
- },
- "alexa_traffic_rank": {
- "name": "Alexa Traffic Rank",
- "categoryId": 4,
- "url": "http://www.alexa.com/",
- "companyId": "amazon_associates"
- },
- "algolia.net": {
- "name": "algolia",
- "categoryId": 4,
- "url": "https://www.algolia.com/",
- "companyId": null
- },
- "algovid.com": {
- "name": "algovid.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "alibaba.com": {
- "name": "Alibaba",
- "categoryId": 8,
- "url": "http://www.alibaba.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "alibaba_cloud": {
- "name": "Alibaba Cloud",
- "categoryId": 10,
- "url": "https://www.alibabacloud.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "alibaba_ucbrowser": {
- "name": "UC Browser",
- "categoryId": 8,
- "url": "https://ucweb.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "alipay.com": {
- "name": "Alipay",
- "categoryId": 2,
- "url": "https://global.alipay.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "alivechat": {
- "name": "AliveChat",
- "categoryId": 2,
- "url": "http://www.websitealive.com/",
- "companyId": "websitealive"
- },
- "allegro.pl": {
- "name": "Allegro",
- "categoryId": 8,
- "url": "https://allegro.pl",
- "companyId": "allegro.pl"
- },
- "allin": {
- "name": "Allin",
- "categoryId": 6,
- "url": "http://allin.com.br/",
- "companyId": "allin"
- },
- "allo-pages.fr": {
- "name": "Allo-Pages",
- "categoryId": 2,
- "url": "http://www.allo-pages.fr/",
- "companyId": "links_lab"
- },
- "allotraffic": {
- "name": "AlloTraffic",
- "categoryId": 4,
- "url": "http://www.allotraffic.com/",
- "companyId": "allotraffic"
- },
- "allure_media": {
- "name": "Allure Media",
- "categoryId": 4,
- "url": "http://www.alluremedia.com.au",
- "companyId": "allure_media"
- },
- "allyes": {
- "name": "Allyes",
- "categoryId": 4,
- "url": "http://www.allyes.com/",
- "companyId": "allyes"
- },
- "alooma": {
- "name": "Alooma",
- "categoryId": 4,
- "url": "https://www.alooma.com/",
- "companyId": "alooma"
- },
- "altitude_digital": {
- "name": "Altitude Digital",
- "categoryId": 4,
- "url": "http://www.altitudedigital.com/",
- "companyId": "altitude_digital"
- },
- "amadesa": {
- "name": "Amadesa",
- "categoryId": 4,
- "url": "http://www.amadesa.com/",
- "companyId": "amadesa"
- },
- "amap": {
- "name": "Amap",
- "categoryId": 2,
- "url": "https://www.amap.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "amazon": {
- "name": "Amazon.com",
- "categoryId": 8,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_adsystem": {
- "name": "Amazon Advertising",
- "categoryId": 4,
- "url": "https://advertising.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_associates": {
- "name": "Amazon Associates",
- "categoryId": 4,
- "url": "http://aws.amazon.com/associates/",
- "companyId": "amazon_associates"
- },
- "amazon_cdn": {
- "name": "Amazon CDN",
- "categoryId": 9,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_cloudfront": {
- "name": "Amazon CloudFront",
- "categoryId": 10,
- "url": "https://aws.amazon.com/cloudfront/?nc1=h_ls",
- "companyId": "amazon_associates"
- },
- "amazon_mobile_ads": {
- "name": "Amazon Mobile Ads",
- "categoryId": 4,
- "url": "http://www.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_payments": {
- "name": "Amazon Payments",
- "categoryId": 2,
- "url": "https://pay.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_video": {
- "name": "Amazon Instant Video",
- "categoryId": 0,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_web_services": {
- "name": "Amazon Web Services",
- "categoryId": 10,
- "url": "https://aws.amazon.com/",
- "companyId": "amazon_associates"
- },
- "ambient_digital": {
- "name": "Ambient Digital",
- "categoryId": 4,
- "url": "http://www.adnetwork.vn/",
- "companyId": "ambient_digital"
- },
- "amgload.net": {
- "name": "amgload.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "amoad": {
- "name": "AMoAd",
- "categoryId": 4,
- "url": "http://www.amoad.com/",
- "companyId": "amoad"
- },
- "amobee": {
- "name": "Amobee",
- "categoryId": 4,
- "url": "https://www.amobee.com/",
- "companyId": "singtel"
- },
- "amp_platform": {
- "name": "AMP Platform",
- "categoryId": 4,
- "url": "http://www.collective.com/",
- "companyId": "collective"
- },
- "amplitude": {
- "name": "Amplitude",
- "categoryId": 6,
- "url": "https://amplitude.com/",
- "companyId": "amplitude"
- },
- "ampproject.org": {
- "name": "AMP Project",
- "categoryId": 8,
- "url": "https://www.ampproject.org/",
- "companyId": "google"
- },
- "anametrix": {
- "name": "Anametrix",
- "categoryId": 6,
- "url": "http://anametrix.com/",
- "companyId": "anametrix"
- },
- "ancestry_cdn": {
- "name": "Ancestry CDN",
- "categoryId": 9,
- "url": "https://www.ancestry.com/",
- "companyId": "ancestry"
- },
- "ancora": {
- "name": "Ancora",
- "categoryId": 6,
- "url": "http://www.ancoramediasolutions.com/",
- "companyId": "ancora"
- },
- "android": {
- "name": "Android",
- "categoryId": 101,
- "url": "https://www.android.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "anetwork": {
- "name": "Anetwork",
- "categoryId": 4,
- "url": "http://anetwork.ir/",
- "companyId": "anetwork"
- },
- "aniview.com": {
- "name": "AniView",
- "categoryId": 4,
- "url": "https://www.aniview.com/",
- "companyId": null
- },
- "anonymousads": {
- "name": "AnonymousAds",
- "categoryId": 4,
- "url": "https://a-ads.com/",
- "companyId": "anonymousads"
- },
- "anormal_tracker": {
- "name": "Anormal Tracker",
- "categoryId": 6,
- "url": "http://anormal-tracker.de/",
- "companyId": "anormal-tracker"
- },
- "answers_cloud_service": {
- "name": "Answers Cloud Service",
- "categoryId": 1,
- "url": "http://www.answers.com/",
- "companyId": "answers.com"
- },
- "ants": {
- "name": "Ants",
- "categoryId": 7,
- "url": "http://ants.vn/en/",
- "companyId": "ants"
- },
- "anvato": {
- "name": "Anvato",
- "categoryId": 0,
- "url": "https://www.anvato.com/",
- "companyId": "google"
- },
- "anyclip": {
- "name": "AnyClip",
- "categoryId": 0,
- "url": "https://anyclip.com",
- "companyId": "anyclip"
- },
- "aol_be_on": {
- "name": "AOL Be On",
- "categoryId": 4,
- "url": "http://beon.aolnetworks.com/",
- "companyId": "verizon"
- },
- "aol_cdn": {
- "name": "AOL CDN",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "aol_images_cdn": {
- "name": "AOL Images CDN",
- "categoryId": 5,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "apa.at": {
- "name": "Apa",
- "categoryId": 8,
- "url": "http://www.apa.at/Site/index.de.html",
- "companyId": "apa"
- },
- "apester": {
- "name": "Apester",
- "categoryId": 4,
- "url": "http://apester.com/",
- "companyId": "apester"
- },
- "apicit.net": {
- "name": "apicit.net",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "aplus_analytics": {
- "name": "Aplus Analytics",
- "categoryId": 6,
- "url": "https://ww.deluxe.com/",
- "companyId": "deluxe"
- },
- "appcenter": {
- "name": "Microsoft App Center",
- "categoryId": 5,
- "url": "https://appcenter.ms/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "appcues": {
- "name": "Appcues",
- "categoryId": 2,
- "url": "https://www.appcues.com/",
- "companyId": null
- },
- "appdynamics": {
- "name": "AppDynamics",
- "categoryId": 6,
- "url": "http://www.appdynamics.com",
- "companyId": "appdynamics"
- },
- "appier": {
- "name": "Appier",
- "categoryId": 4,
- "url": "http://www.appier.com/en/index.html",
- "companyId": "appier"
- },
- "apple": {
- "name": "Apple",
- "categoryId": 8,
- "url": "https://www.apple.com/",
- "companyId": "apple",
- "source": "AdGuard"
- },
- "apple_ads": {
- "name": "Apple Search Ads",
- "categoryId": 4,
- "url": "https://searchads.apple.com/",
- "companyId": "apple",
- "source": "AdGuard"
- },
- "applifier": {
- "name": "Applifier",
- "categoryId": 4,
- "url": "http://www.applifier.com/",
- "companyId": "applifier"
- },
- "applovin": {
- "name": "AppLovin",
- "categoryId": 4,
- "url": "https://www.applovin.com",
- "companyId": "applovin"
- },
- "appmetrx": {
- "name": "AppMetrx",
- "categoryId": 4,
- "url": "http://www.engago.com",
- "companyId": "engago_technologies"
- },
- "appnexus": {
- "name": "AppNexus",
- "categoryId": 4,
- "url": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "appsflyer": {
- "name": "AppsFlyer",
- "categoryId": 101,
- "url": "https://www.appsflyer.com/",
- "companyId": "appsflyer",
- "source": "AdGuard"
- },
- "apptv": {
- "name": "appTV",
- "categoryId": 4,
- "url": "http://www.apptv.com/",
- "companyId": "apptv"
- },
- "apture": {
- "name": "Apture",
- "categoryId": 2,
- "url": "http://www.apture.com/",
- "companyId": "google"
- },
- "arcpublishing": {
- "name": "Arc Publishing",
- "categoryId": 6,
- "url": "https://www.arcpublishing.com/",
- "companyId": "arc_publishing"
- },
- "ard.de": {
- "name": "ard.de",
- "categoryId": 0,
- "url": null,
- "companyId": null
- },
- "are_you_a_human": {
- "name": "Are You a Human",
- "categoryId": 6,
- "url": "https://areyouahuman.com/",
- "companyId": "distil_networks"
- },
- "arkoselabs.com": {
- "name": "Arkose Labs",
- "categoryId": 6,
- "url": "https://www.arkoselabs.com/",
- "companyId": null
- },
- "art19": {
- "name": "Art19",
- "categoryId": 4,
- "url": "https://art19.com/",
- "companyId": "art19"
- },
- "artimedia": {
- "name": "Artimedia",
- "categoryId": 4,
- "url": "http://arti-media.net/en/",
- "companyId": "artimedia"
- },
- "artlebedev.ru": {
- "name": "Art.Lebedev",
- "categoryId": 8,
- "url": "https://www.artlebedev.ru/",
- "companyId": "art.lebedev_studio"
- },
- "aruba_media_marketing": {
- "name": "Aruba Media Marketing",
- "categoryId": 4,
- "url": "http://www.arubamediamarketing.it/",
- "companyId": "aruba_media_marketing"
- },
- "arvato_canvas_fp": {
- "name": "Arvato Canvas FP",
- "categoryId": 6,
- "url": "https://www.arvato.com/",
- "companyId": "arvato"
- },
- "asambeauty.com": {
- "name": "asambeauty.com",
- "categoryId": 8,
- "url": "https://www.asambeauty.com/",
- "companyId": null
- },
- "ask.com": {
- "name": "Ask.com",
- "categoryId": 7,
- "url": null,
- "companyId": null
- },
- "aspnetcdn": {
- "name": "Microsoft Ajax CDN",
- "categoryId": 9,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "assemblyexchange": {
- "name": "Assembly Exchange",
- "categoryId": 4,
- "url": "https://www.medialab.la/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "astronomer": {
- "name": "Astronomer",
- "categoryId": 6,
- "url": "https://www.astronomer.io",
- "companyId": "astronomer"
- },
- "at_internet": {
- "name": "AT Internet",
- "categoryId": 6,
- "url": "http://www.xiti.com/",
- "companyId": "at_internet"
- },
- "atedra": {
- "name": "Atedra",
- "categoryId": 4,
- "url": "http://www.atedra.com/",
- "companyId": "atedra"
- },
- "atg_group": {
- "name": "ATG Ad Tech Group",
- "categoryId": 4,
- "url": "https://ad-tech-group.com/",
- "companyId": null
- },
- "atg_optimization": {
- "name": "ATG Optimization",
- "categoryId": 4,
- "url": "http://www.atg.com/en/products-services/optimization/",
- "companyId": "oracle"
- },
- "atg_recommendations": {
- "name": "ATG Recommendations",
- "categoryId": 4,
- "url": "http://www.atg.com/en/products-services/optimization/recommendations/",
- "companyId": "oracle"
- },
- "atlas": {
- "name": "Atlas",
- "categoryId": 4,
- "url": "https://atlassolutions.com",
- "companyId": "facebook"
- },
- "atlas_profitbuilder": {
- "name": "Atlas ProfitBuilder",
- "categoryId": 4,
- "url": "http://www.atlassolutions.com/",
- "companyId": "atlas"
- },
- "atlassian.net": {
- "name": "Atlassian",
- "categoryId": 2,
- "url": "https://www.atlassian.com/",
- "companyId": "atlassian"
- },
- "atlassian_marketplace": {
- "name": "Atlassian Marketplace",
- "categoryId": 9,
- "url": "https://marketplace.atlassian.com/",
- "companyId": "atlassian"
- },
- "atomz_search": {
- "name": "Atomz Search",
- "categoryId": 2,
- "url": "http://atomz.com/",
- "companyId": "atomz"
- },
- "atsfi_de": {
- "name": "atsfi.de",
- "categoryId": 11,
- "url": "http://www.axelspringer.de/en/index.html",
- "companyId": "axel_springer"
- },
- "attracta": {
- "name": "Attracta",
- "categoryId": 4,
- "url": "http://www.attracta.com/",
- "companyId": "attracta"
- },
- "attraqt": {
- "name": "Attraqt",
- "categoryId": 6,
- "url": "http://www.locayta.com/",
- "companyId": "attraqt"
- },
- "audience2media": {
- "name": "Audience2Media",
- "categoryId": 4,
- "url": "http://www.audience2media.com/",
- "companyId": "audience2media"
- },
- "audience_ad_network": {
- "name": "Audience Ad Network",
- "categoryId": 4,
- "url": "http://www.audienceadnetwork.com",
- "companyId": "bridgeline_digital"
- },
- "audience_science": {
- "name": "Audience Science",
- "categoryId": 4,
- "url": "http://www.audiencescience.com/",
- "companyId": "audiencescience"
- },
- "audiencerate": {
- "name": "AudienceRate",
- "categoryId": 4,
- "url": "http://www.audiencerate.com/",
- "companyId": "audiencerate"
- },
- "audiencesquare.com": {
- "name": "Audience Square",
- "categoryId": 4,
- "url": "http://www.audiencesquare.fr/",
- "companyId": "audience_square"
- },
- "auditude": {
- "name": "Auditude",
- "categoryId": 0,
- "url": "http://www.auditude.com/",
- "companyId": "adobe"
- },
- "audtd.com": {
- "name": "Auditorius",
- "categoryId": 4,
- "url": "http://www.auditorius.ru/",
- "companyId": "auditorius"
- },
- "augur": {
- "name": "Augur",
- "categoryId": 6,
- "url": "https://www.augur.io/",
- "companyId": "augur"
- },
- "aumago": {
- "name": "Aumago",
- "categoryId": 4,
- "url": "http://www.aumago.com/",
- "companyId": "aumago"
- },
- "aurea_clicktracks": {
- "name": "Aurea ClickTracks",
- "categoryId": 4,
- "url": "http://www.clicktracks.com/",
- "companyId": "aurea"
- },
- "ausgezeichnet_org": {
- "name": "ausgezeichnet.org",
- "categoryId": 2,
- "url": "http://ausgezeichnet.org/",
- "companyId": null
- },
- "australia.gov": {
- "name": "Australia.gov",
- "categoryId": 4,
- "url": "http://www.australia.gov.au/",
- "companyId": "australian_government"
- },
- "auth0": {
- "name": "Auth0 Inc.",
- "categoryId": 6,
- "url": "https://auth0.com/",
- "companyId": "auth0"
- },
- "autoid": {
- "name": "AutoID",
- "categoryId": 6,
- "url": "http://www.autoid.com/",
- "companyId": "autoid"
- },
- "autonomy": {
- "name": "Autonomy",
- "categoryId": 4,
- "url": "http://www.optimost.com/",
- "companyId": "hp"
- },
- "autonomy_campaign": {
- "name": "Autonomy Campaign",
- "categoryId": 4,
- "url": "http://www.autonomy.com/",
- "companyId": "hp"
- },
- "autopilothq": {
- "name": "Auto Pilot",
- "categoryId": 4,
- "url": "https://www.autopilothq.com/",
- "companyId": "autopilothq"
- },
- "autoscout24.com": {
- "name": "Autoscout24",
- "categoryId": 8,
- "url": "http://www.scout24.com/",
- "companyId": "scout24"
- },
- "avail": {
- "name": "Avail",
- "categoryId": 4,
- "url": "http://avail.com",
- "companyId": "richrelevance"
- },
- "avanser": {
- "name": "AVANSER",
- "categoryId": 2,
- "url": "http://www.avanser.com.au/",
- "companyId": "avanser"
- },
- "avant_metrics": {
- "name": "Avant Metrics",
- "categoryId": 6,
- "url": "http://www.avantlink.com/",
- "companyId": "avantlink"
- },
- "avantlink": {
- "name": "AvantLink",
- "categoryId": 4,
- "url": "http://www.avantlink.com/",
- "companyId": "avantlink"
- },
- "avazu_network": {
- "name": "Avazu Network",
- "categoryId": 4,
- "url": "http://www.avazudsp.net/",
- "companyId": "avazu_network"
- },
- "avenseo": {
- "name": "Avenseo",
- "categoryId": 4,
- "url": "http://avenseo.com",
- "companyId": "avenseo"
- },
- "avid_media": {
- "name": "Avid Media",
- "categoryId": 0,
- "url": "http://www.avidglobalmedia.com/",
- "companyId": "avid_media"
- },
- "avocet": {
- "name": "Avocet",
- "categoryId": 8,
- "url": "https://avocet.io/",
- "companyId": "avocet"
- },
- "aweber": {
- "name": "AWeber",
- "categoryId": 4,
- "url": "http://www.aweber.com/",
- "companyId": "aweber_communications"
- },
- "awin": {
- "name": "AWIN",
- "categoryId": 4,
- "url": "https://www.awin.com",
- "companyId": "axel_springer"
- },
- "axill": {
- "name": "Axill",
- "categoryId": 4,
- "url": "http://www.axill.com/",
- "companyId": "axill"
- },
- "azadify": {
- "name": "Azadify",
- "categoryId": 4,
- "url": "http://azadify.com/engage/index.php",
- "companyId": "azadify"
- },
- "azure": {
- "name": "Microsoft Azure",
- "categoryId": 10,
- "url": "https://azure.microsoft.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "azure_blob_storage": {
- "name": "Azure Blob Storage",
- "categoryId": 8,
- "url": "https://azure.microsoft.com/en-us/products/storage/blobs",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "azureedge.net": {
- "name": "Azure CDN",
- "categoryId": 9,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "b2bcontext": {
- "name": "B2BContext",
- "categoryId": 4,
- "url": "http://b2bcontext.ru/",
- "companyId": "b2bcontext"
- },
- "b2bvideo": {
- "name": "B2Bvideo",
- "categoryId": 4,
- "url": "http://b2bvideo.ru/",
- "companyId": "b2bvideo"
- },
- "babator.com": {
- "name": "Babator",
- "categoryId": 6,
- "url": "https://www.babator.com/",
- "companyId": null
- },
- "back_beat_media": {
- "name": "Back Beat Media",
- "categoryId": 4,
- "url": "http://www.backbeatmedia.com",
- "companyId": "backbeat_media"
- },
- "backtype_widgets": {
- "name": "BackType Widgets",
- "categoryId": 4,
- "url": "http://www.backtype.com/widgets",
- "companyId": "backtype"
- },
- "bahn_de": {
- "name": "Deutsche Bahn",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "baidu_ads": {
- "name": "百度",
- "categoryId": 4,
- "url": "http://www.baidu.com/",
- "companyId": "baidu"
- },
- "baidu_static": {
- "name": "百度统计",
- "categoryId": 8,
- "url": "https://www.baidu.com/",
- "companyId": "baidu"
- },
- "baletingo.com": {
- "name": "baletingo.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bangdom.com": {
- "name": "BangBros",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bankrate": {
- "name": "Bankrate",
- "categoryId": 4,
- "url": "https://www.bankrate.com/",
- "companyId": "bankrate"
- },
- "banner_connect": {
- "name": "Banner Connect",
- "categoryId": 4,
- "url": "http://www.bannerconnect.net/",
- "companyId": "bannerconnect"
- },
- "bannerflow.com": {
- "name": "Bannerflow",
- "categoryId": 4,
- "url": "https://www.bannerflow.com/",
- "companyId": "bannerflow"
- },
- "bannerplay": {
- "name": "BannerPlay",
- "categoryId": 4,
- "url": "http://www.bannerplay.com/",
- "companyId": "bannerplay"
- },
- "bannersnack": {
- "name": "Bannersnack",
- "categoryId": 4,
- "url": "http://www.bannersnack.com/",
- "companyId": "bannersnack"
- },
- "barilliance": {
- "name": "Barilliance",
- "categoryId": 4,
- "url": "http://www.barilliance.com/",
- "companyId": "barilliance"
- },
- "barometer": {
- "name": "Barometer",
- "categoryId": 2,
- "url": "http://getbarometer.com/",
- "companyId": "barometer"
- },
- "basilic.io": {
- "name": "basilic.io",
- "categoryId": 6,
- "url": "https://basilic.io/",
- "companyId": null
- },
- "batanga_network": {
- "name": "Batanga Network",
- "categoryId": 4,
- "url": "http://www.batanganetwork.com/",
- "companyId": "batanga_network"
- },
- "batch_media": {
- "name": "Batch Media",
- "categoryId": 4,
- "url": "http://batch.ba/",
- "companyId": "prosieben_sat1"
- },
- "bauer_media": {
- "name": "Bauer Media",
- "categoryId": 4,
- "url": "http://www.bauermedia.com",
- "companyId": "bauer_media"
- },
- "baur.de": {
- "name": "baur.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "baynote_observer": {
- "name": "Baynote Observer",
- "categoryId": 4,
- "url": "http://www.baynote.com/",
- "companyId": "baynote"
- },
- "bazaarvoice": {
- "name": "Bazaarvoice",
- "categoryId": 2,
- "url": "http://www.bazaarvoice.com/",
- "companyId": "bazaarvoice"
- },
- "bbci": {
- "name": "BBC",
- "categoryId": 10,
- "url": "https://bbc.co.uk",
- "companyId": null
- },
- "bd4travel": {
- "name": "bd4travel",
- "categoryId": 4,
- "url": "https://bd4travel.com/",
- "companyId": "bd4travel"
- },
- "be_opinion": {
- "name": "Be Opinion",
- "categoryId": 2,
- "url": "http://beopinion.com/",
- "companyId": "be_opinion"
- },
- "beachfront": {
- "name": "Beachfront Media",
- "categoryId": 4,
- "url": "http://beachfrontmedia.com/",
- "companyId": null
- },
- "beacon_ad_network": {
- "name": "Beacon Ad Network",
- "categoryId": 4,
- "url": "http://beaconads.com/",
- "companyId": "beacon_ad_network"
- },
- "beampulse.com": {
- "name": "BeamPulse",
- "categoryId": 4,
- "url": "https://en.beampulse.com/",
- "companyId": null
- },
- "beanstalk_data": {
- "name": "Beanstalk Data",
- "categoryId": 4,
- "url": "http://www.beanstalkdata.com/",
- "companyId": "beanstalk_data"
- },
- "bebi": {
- "name": "Bebi Media",
- "categoryId": 4,
- "url": "https://www.bebi.com/",
- "companyId": "bebi_media"
- },
- "beeketing.com": {
- "name": "Beeketing",
- "categoryId": 4,
- "url": "https://beeketing.com/",
- "companyId": "beeketing"
- },
- "beeline.ru": {
- "name": "Beeline",
- "categoryId": 4,
- "url": "https://moskva.beeline.ru/",
- "companyId": null
- },
- "beeswax": {
- "name": "Beeswax",
- "categoryId": 4,
- "url": "http://beeswax.com/",
- "companyId": "beeswax"
- },
- "beezup": {
- "name": "BeezUP",
- "categoryId": 4,
- "url": "http://www.beezup.co.uk/",
- "companyId": "beezup"
- },
- "begun": {
- "name": "Begun",
- "categoryId": 4,
- "url": "http://begun.ru/",
- "companyId": "begun"
- },
- "behavioralengine": {
- "name": "BehavioralEngine",
- "categoryId": 4,
- "url": "http://www.behavioralengine.com/",
- "companyId": "behavioralengine"
- },
- "belboon_gmbh": {
- "name": "belboon GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "belco": {
- "name": "Belco",
- "categoryId": 2,
- "url": "https://www.belco.io/",
- "companyId": "belco"
- },
- "belstat": {
- "name": "BelStat",
- "categoryId": 6,
- "url": "http://www.belstat.com/",
- "companyId": "belstat"
- },
- "bemobile.ua": {
- "name": "Bemobile",
- "categoryId": 10,
- "url": "http://bemobile.ua/en/",
- "companyId": "bemobile"
- },
- "bench_platform": {
- "name": "Bench Platform",
- "categoryId": 4,
- "url": "https://benchplatform.com",
- "companyId": "bench_platform"
- },
- "betterttv": {
- "name": "BetterTTV",
- "categoryId": 7,
- "url": "https://nightdev.com/betterttv/",
- "companyId": "nightdev"
- },
- "betweendigital.com": {
- "name": "Between Digital",
- "categoryId": 4,
- "url": "http://betweendigital.ru/ssp",
- "companyId": "between_digital"
- },
- "bid.run": {
- "name": "Bid Run",
- "categoryId": 4,
- "url": "http://bid.run/",
- "companyId": "bid.run"
- },
- "bidgear": {
- "name": "BidGear",
- "categoryId": 6,
- "url": "https://bidgear.com/",
- "companyId": "bidgear"
- },
- "bidswitch": {
- "name": "Bidswitch",
- "categoryId": 4,
- "url": "http://www.iponweb.com/",
- "companyId": "iponweb"
- },
- "bidtellect": {
- "name": "Bidtellect",
- "categoryId": 4,
- "url": "https://www.bidtellect.com/",
- "companyId": "bidtellect"
- },
- "bidtheatre": {
- "name": "BidTheatre",
- "categoryId": 4,
- "url": "http://www.bidtheatre.com/",
- "companyId": "bidtheatre"
- },
- "bidvertiser": {
- "name": "BidVertiser",
- "categoryId": 4,
- "url": "http://www.bidvertiser.com/",
- "companyId": "bidvertiser"
- },
- "big_mobile": {
- "name": "Big Mobile",
- "categoryId": 4,
- "url": "http://www.bigmobile.com/",
- "companyId": "big_mobile"
- },
- "bigcommerce.com": {
- "name": "BigCommerce",
- "categoryId": 6,
- "url": "https://www.bigcommerce.com/",
- "companyId": "bigcommerce"
- },
- "bigmir.net": {
- "name": "bigmir",
- "categoryId": 6,
- "url": "https://www.bigmir.net/",
- "companyId": "bigmir-internet"
- },
- "bigpoint": {
- "name": "Bigpoint",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "bild": {
- "name": "Bild.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "bilgin_pro": {
- "name": "Bilgin Pro",
- "categoryId": 4,
- "url": "http://bilgin.pro/",
- "companyId": "bilginpro"
- },
- "bilin": {
- "name": "Bilin",
- "categoryId": 4,
- "url": "http://www.bilintechnology.com/",
- "companyId": "bilin"
- },
- "bing_ads": {
- "name": "Bing Ads",
- "categoryId": 4,
- "url": "https://bingads.microsoft.com/",
- "companyId": "microsoft"
- },
- "bing_maps": {
- "name": "Bing Maps",
- "categoryId": 2,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "binge": {
- "name": "Binge",
- "categoryId": 0,
- "url": "https://binge.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "binlayer": {
- "name": "BinLayer",
- "categoryId": 4,
- "url": "http://binlayer.com/",
- "companyId": "binlayer"
- },
- "binotel": {
- "name": "Binotel",
- "categoryId": 4,
- "url": "http://www.binotel.ua/",
- "companyId": "binotel"
- },
- "bisnode": {
- "name": "Bisnode",
- "categoryId": 4,
- "url": "http://www.esendra.fi/",
- "companyId": "bisnode"
- },
- "bitcoin_miner": {
- "name": "Bitcoin Miner",
- "categoryId": 2,
- "url": "http://www.bitcoinplus.com/",
- "companyId": "bitcoin_plus"
- },
- "bitly": {
- "name": "Bitly",
- "categoryId": 6,
- "url": "https://bitly.com/",
- "companyId": null
- },
- "bitrix": {
- "name": "Bitrix24",
- "categoryId": 4,
- "url": "https://www.bitrix24.com/",
- "companyId": "bitrix24"
- },
- "bitwarden": {
- "name": "Bitwarden",
- "categoryId": 8,
- "url": "https://bitwarden.com/",
- "companyId": "bitwarden",
- "source": "AdGuard"
- },
- "bizcn": {
- "name": "Bizcn",
- "categoryId": 4,
- "url": "http://www.bizcn.com/",
- "companyId": "bizcn"
- },
- "blackdragon": {
- "name": "BlackDragon",
- "categoryId": 4,
- "url": "http://www.jd.com/",
- "companyId": "jing_dong"
- },
- "blau.de": {
- "name": "Blau",
- "categoryId": 8,
- "url": "https://www.blau.de/",
- "companyId": null
- },
- "blink_new_media": {
- "name": "Blink New Media",
- "categoryId": 4,
- "url": "http://engagebdr.com/",
- "companyId": "engage_bdr"
- },
- "blis": {
- "name": "Blis",
- "categoryId": 6,
- "url": "http://www.blis.com/index.php",
- "companyId": "blis"
- },
- "blogad": {
- "name": "BlogAD",
- "categoryId": 4,
- "url": "http://www.blogad.com.tw/",
- "companyId": "blogad"
- },
- "blogbang": {
- "name": "BlogBang",
- "categoryId": 4,
- "url": "http://www.blogbang.com/",
- "companyId": "blogbang"
- },
- "blogcatalog": {
- "name": "BlogCatalog",
- "categoryId": 2,
- "url": "http://www.blogcatalog.com/",
- "companyId": "blogcatalog"
- },
- "blogcounter": {
- "name": "BlogCounter",
- "categoryId": 6,
- "url": "http://blogcounter.com/",
- "companyId": "adfire_gmbh"
- },
- "blogfoster.com": {
- "name": "Blogfoster",
- "categoryId": 8,
- "url": "http://www.blogfoster.com/",
- "companyId": "blogfoster"
- },
- "bloggerads": {
- "name": "BloggerAds",
- "categoryId": 4,
- "url": "http://www.bloggerads.net/",
- "companyId": "bloggerads"
- },
- "blogher": {
- "name": "BlogHer Ads",
- "categoryId": 4,
- "url": "https://www.blogher.com/",
- "companyId": "penske_media_corp"
- },
- "blogimg.jp": {
- "name": "blogimg.jp",
- "categoryId": 9,
- "url": "https://line.me/",
- "companyId": "line"
- },
- "blogsmithmedia.com": {
- "name": "blogsmithmedia.com",
- "categoryId": 8,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "blogspot_com": {
- "name": "blogspot.com",
- "categoryId": 8,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "bloomreach": {
- "name": "BloomReach",
- "categoryId": 4,
- "url": "https://www.bloomreach.com/en",
- "companyId": "bloomreach"
- },
- "blue_cherry_group": {
- "name": "Blue Cherry Group",
- "categoryId": 4,
- "url": "http://www.bluecherrygroup.com",
- "companyId": "blue_cherry_group"
- },
- "blue_seed": {
- "name": "Blue Seed",
- "categoryId": 4,
- "url": "http://blueseed.tv/#/en/platform",
- "companyId": "blue_seed"
- },
- "blueconic.net": {
- "name": "BlueConic Plugin",
- "categoryId": 6,
- "url": "https://www.blueconic.com/",
- "companyId": "blueconic"
- },
- "bluecore": {
- "name": "Bluecore",
- "categoryId": 4,
- "url": "https://www.bluecore.com/",
- "companyId": "triggermail"
- },
- "bluekai": {
- "name": "BlueKai",
- "categoryId": 4,
- "url": "http://www.bluekai.com/",
- "companyId": "oracle"
- },
- "bluelithium": {
- "name": "Bluelithium",
- "categoryId": 4,
- "url": "http://www.bluelithium.com/",
- "companyId": "verizon"
- },
- "bluemetrix": {
- "name": "Bluemetrix",
- "categoryId": 4,
- "url": "http://www.bluemetrix.ie/",
- "companyId": "bluemetrix"
- },
- "bluenewsupdate.info": {
- "name": "bluenewsupdate.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bluestreak": {
- "name": "BlueStreak",
- "categoryId": 4,
- "url": "http://www.bluestreak.com/",
- "companyId": "dentsu_aegis_network"
- },
- "bluetriangle": {
- "name": "Blue Triangle",
- "categoryId": 6,
- "url": "https://www.bluetriangle.com/",
- "companyId": "blue_triangle"
- },
- "bodelen.com": {
- "name": "bodelen.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "bol_affiliate_program": {
- "name": "BOL Affiliate Program",
- "categoryId": 4,
- "url": "http://www.bol.com",
- "companyId": "bol.com"
- },
- "bold": {
- "name": "Bold",
- "categoryId": 4,
- "url": "https://boldcommerce.com/",
- "companyId": "bold"
- },
- "boldchat": {
- "name": "Boldchat",
- "categoryId": 2,
- "url": "http://www.boldchat.com/",
- "companyId": "boldchat"
- },
- "boltdns.net": {
- "name": "boltdns.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bom": {
- "name": "Bureau of Meteorology",
- "categoryId": 9,
- "url": "http://bom.gov.au/",
- "companyId": "australian_government",
- "source": "AdGuard"
- },
- "bombora": {
- "name": "Bombora",
- "categoryId": 6,
- "url": "http://bombora.com/",
- "companyId": "bombora"
- },
- "bongacams.com": {
- "name": "bongacams.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bonial": {
- "name": "Bonial Connect",
- "categoryId": 2,
- "url": "http://www.bonial.com/",
- "companyId": null
- },
- "boo-box": {
- "name": "boo-box",
- "categoryId": 4,
- "url": "http://boo-box.com/",
- "companyId": "boo-box"
- },
- "booking.com": {
- "name": "Booking.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "boost_box": {
- "name": "Boost Box",
- "categoryId": 6,
- "url": "http://www.boostbox.com.br/",
- "companyId": "boost_box"
- },
- "booster_video": {
- "name": "Booster Video",
- "categoryId": 0,
- "url": "https://boostervideo.ru/",
- "companyId": "booster_video"
- },
- "bootstrap": {
- "name": "Bootstrap CDN",
- "categoryId": 9,
- "url": "http://getbootstrap.com/",
- "companyId": "bootstrap_cdn"
- },
- "borrango.com": {
- "name": "borrango.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "botscanner": {
- "name": "BotScanner",
- "categoryId": 6,
- "url": "http://botscanner.com",
- "companyId": "botscanner"
- },
- "boudja.com": {
- "name": "boudja.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bounce_exchange": {
- "name": "Bounce Exchange",
- "categoryId": 4,
- "url": "http://bounceexchange.com",
- "companyId": "bounce_exchange"
- },
- "bouncex": {
- "name": "BounceX",
- "categoryId": 4,
- "url": "https://www.bouncex.com/",
- "companyId": null
- },
- "box_uk": {
- "name": "Box UK",
- "categoryId": 6,
- "url": "http://www.clickdensity.com",
- "companyId": "box_uk"
- },
- "boxever": {
- "name": "Boxever",
- "categoryId": 4,
- "url": "https://www.boxever.com/",
- "companyId": "boxever"
- },
- "brainient": {
- "name": "Brainient",
- "categoryId": 4,
- "url": "http://www.brainient.com/",
- "companyId": "brainient"
- },
- "brainsins": {
- "name": "BrainSINS",
- "categoryId": 4,
- "url": "http://www.brainsins.com/",
- "companyId": "brainsins"
- },
- "branch": {
- "name": "Branch.io",
- "categoryId": 101,
- "url": "https://branch.io/",
- "companyId": "branch_metrics_inc",
- "source": "AdGuard"
- },
- "branch_metrics": {
- "name": "Branch",
- "categoryId": 4,
- "url": "https://branch.io/",
- "companyId": "branch_metrics_inc"
- },
- "brand_affinity": {
- "name": "Brand Affinity",
- "categoryId": 4,
- "url": "http://brandaffinity.net/about",
- "companyId": "yoonla"
- },
- "brand_networks": {
- "name": "Brand Networks",
- "categoryId": 4,
- "url": "http://www.xa.net/",
- "companyId": "brand_networks"
- },
- "brandmetrics.com": {
- "name": "Brandmetrics.com",
- "categoryId": 4,
- "url": "https://www.brandmetrics.com/",
- "companyId": null
- },
- "brandreach": {
- "name": "BrandReach",
- "categoryId": 4,
- "url": "http://www.brandreach.com/",
- "companyId": "brandreach"
- },
- "brandscreen": {
- "name": "Brandscreen",
- "categoryId": 4,
- "url": "http://www.brandscreen.com/",
- "companyId": "zenovia"
- },
- "brandwire.tv": {
- "name": "BrandWire",
- "categoryId": 4,
- "url": "https://brandwire.tv/",
- "companyId": null
- },
- "branica": {
- "name": "Branica",
- "categoryId": 4,
- "url": "http://www.branica.com/",
- "companyId": "branica"
- },
- "braze": {
- "name": "Braze, Inc.",
- "categoryId": 6,
- "url": "https://www.braze.com/",
- "companyId": "braze",
- "source": "AdGuard"
- },
- "brealtime": {
- "name": "EMX Digital",
- "categoryId": 4,
- "url": "https://emxdigital.com/",
- "companyId": null
- },
- "bridgetrack": {
- "name": "BridgeTrack",
- "categoryId": 4,
- "url": "http://www.bridgetrack.com/",
- "companyId": "bridgetrack"
- },
- "brightcove": {
- "name": "Brightcove",
- "categoryId": 0,
- "url": "http://www.brightcove.com/en/",
- "companyId": "brightcove"
- },
- "brightcove_player": {
- "name": "Brightcove Player",
- "categoryId": 0,
- "url": "http://www.brightcove.com/en/",
- "companyId": "brightcove"
- },
- "brightedge": {
- "name": "BrightEdge",
- "categoryId": 4,
- "url": "http://www.brightedge.com/",
- "companyId": "brightedge"
- },
- "brightfunnel": {
- "name": "BrightFunnel",
- "categoryId": 6,
- "url": "http://www.brightfunnel.com/",
- "companyId": "brightfunnel"
- },
- "brightonclick.com": {
- "name": "brightonclick.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "brightroll": {
- "name": "BrightRoll",
- "categoryId": 4,
- "url": "http://www.brightroll.com/",
- "companyId": "verizon"
- },
- "brilig": {
- "name": "Brilig",
- "categoryId": 4,
- "url": "http://www.brilig.com/",
- "companyId": "dentsu_aegis_network"
- },
- "brillen.de": {
- "name": "brillen.de",
- "categoryId": 8,
- "url": "https://www.brillen.de/",
- "companyId": null
- },
- "broadstreet": {
- "name": "Broadstreet",
- "categoryId": 4,
- "url": "http://broadstreetads.com/",
- "companyId": "broadstreet"
- },
- "bronto": {
- "name": "Bronto",
- "categoryId": 4,
- "url": "http://bronto.com/",
- "companyId": "bronto"
- },
- "brow.si": {
- "name": "Brow.si",
- "categoryId": 4,
- "url": "https://brow.si/",
- "companyId": "brow.si"
- },
- "browser-statistik": {
- "name": "Browser-Statistik",
- "categoryId": 6,
- "url": "http://www.browser-statistik.de/",
- "companyId": "browser-statistik"
- },
- "browser_update": {
- "name": "Browser Update",
- "categoryId": 2,
- "url": "http://www.browser-update.org/",
- "companyId": "browser-update"
- },
- "btncdn.com": {
- "name": "btncdn.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "bubblestat": {
- "name": "Bubblestat",
- "categoryId": 4,
- "url": "http://www.bubblestat.com/",
- "companyId": "bubblestat"
- },
- "buddy_media": {
- "name": "Buddy Media",
- "categoryId": 7,
- "url": "http://www.salesforce.com/",
- "companyId": "salesforce"
- },
- "buffer_button": {
- "name": "Buffer Button",
- "categoryId": 7,
- "url": "http://www.bufferapp.com/",
- "companyId": "buffer"
- },
- "bugherd.com": {
- "name": "BugHerd",
- "categoryId": 2,
- "url": "https://bugherd.com",
- "companyId": "bugherd"
- },
- "bugsnag": {
- "name": "Bugsnag",
- "categoryId": 6,
- "url": "https://bugsnag.com",
- "companyId": "bugsnag"
- },
- "bulkhentai.com": {
- "name": "bulkhentai.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bumlam.com": {
- "name": "bumlam.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bunchbox": {
- "name": "Bunchbox",
- "categoryId": 6,
- "url": "https://app.bunchbox.co/login",
- "companyId": "bunchbox"
- },
- "burda": {
- "name": "BurdaForward",
- "categoryId": 4,
- "url": "http://www.hubert-burda-media.com/",
- "companyId": "hubert_burda_media"
- },
- "burda_digital_systems": {
- "name": "Burda Digital Systems",
- "categoryId": 4,
- "url": "http://www.hubert-burda-media.com/",
- "companyId": "hubert_burda_media"
- },
- "burst_media": {
- "name": "Burst Media",
- "categoryId": 4,
- "url": "http://www.burstmedia.com/",
- "companyId": "rhythmone"
- },
- "burt": {
- "name": "Burt",
- "categoryId": 4,
- "url": "http://www.burtcorp.com/",
- "companyId": "burt"
- },
- "businessonline_analytics": {
- "name": "BusinessOnLine Analytics",
- "categoryId": 6,
- "url": "http://www.businessol.com/",
- "companyId": "businessonline"
- },
- "button": {
- "name": "Button",
- "categoryId": 4,
- "url": "https://www.usebutton.com/",
- "companyId": "button",
- "source": "AdGuard"
- },
- "buysellads": {
- "name": "BuySellAds",
- "categoryId": 4,
- "url": "http://buysellads.com/",
- "companyId": "buysellads.com"
- },
- "buzzadexchange.com": {
- "name": "buzzadexchange.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "buzzador": {
- "name": "Buzzador",
- "categoryId": 7,
- "url": "http://www.buzzador.com",
- "companyId": "buzzador"
- },
- "buzzfeed": {
- "name": "BuzzFeed",
- "categoryId": 2,
- "url": "http://www.buzzfeed.com",
- "companyId": "buzzfeed"
- },
- "bwbx.io": {
- "name": "Bloomberg CDN",
- "categoryId": 9,
- "url": "https://www.bloomberg.com/",
- "companyId": null
- },
- "bypass": {
- "name": "Bypass",
- "categoryId": 4,
- "url": "http://bypass.jp/",
- "companyId": "united_inc"
- },
- "c1_exchange": {
- "name": "C1 Exchange",
- "categoryId": 4,
- "url": "http://c1exchange.com/",
- "companyId": "c1_exchange"
- },
- "c3_metrics": {
- "name": "C3 Metrics",
- "categoryId": 6,
- "url": "http://c3metrics.com/",
- "companyId": "c3_metrics"
- },
- "c8_network": {
- "name": "C8 Network",
- "categoryId": 4,
- "url": "http://c8.net.ua/",
- "companyId": "c8_network"
- },
- "cackle.me": {
- "name": "Cackle",
- "categoryId": 3,
- "url": "https://cackle.me/",
- "companyId": null
- },
- "cadreon": {
- "name": "Cadreon",
- "categoryId": 4,
- "url": "http://www.cadreon.com/",
- "companyId": "cadreon"
- },
- "call_page": {
- "name": "Call Page",
- "categoryId": 2,
- "url": "https://www.callpage.io/",
- "companyId": "call_page"
- },
- "callbackhunter": {
- "name": "CallbackHunter",
- "categoryId": 2,
- "url": "http://callbackhunter.com/main",
- "companyId": "callbackhunter"
- },
- "callbox": {
- "name": "CallBox",
- "categoryId": 2,
- "url": "http://www.centuryinteractive.com",
- "companyId": "callbox"
- },
- "callibri": {
- "name": "Callibri",
- "categoryId": 4,
- "url": "https://callibri.ru/",
- "companyId": "callibri"
- },
- "callrail": {
- "name": "CallRail",
- "categoryId": 2,
- "url": "http://www.callrail.com/",
- "companyId": "callrail"
- },
- "calltracking": {
- "name": "Calltracking",
- "categoryId": 2,
- "url": "https://calltracking.ru",
- "companyId": "calltracking"
- },
- "caltat.com": {
- "name": "Caltat",
- "categoryId": 2,
- "url": "https://caltat.com/",
- "companyId": null
- },
- "cam-content.com": {
- "name": "Cam-Content.com",
- "categoryId": 3,
- "url": "https://www.cam-content.com/",
- "companyId": null
- },
- "camakaroda.com": {
- "name": "camakaroda.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "campus_explorer": {
- "name": "Campus Explorer",
- "categoryId": 6,
- "url": "http://www.campusexplorer.com/",
- "companyId": "campus_explorer"
- },
- "canddi": {
- "name": "CANDDI",
- "categoryId": 6,
- "url": "https://www.canddi.com/",
- "companyId": "canddi"
- },
- "canonical": {
- "name": "Canonical",
- "categoryId": 8,
- "url": "https://canonical.com/",
- "companyId": "canonical",
- "source": "AdGuard"
- },
- "canvas": {
- "name": "Canvas",
- "categoryId": 2,
- "url": "https://www.canvas.net/",
- "companyId": null
- },
- "capitaldata": {
- "name": "CapitalData",
- "categoryId": 6,
- "url": "https://www.capitaldata.fr/",
- "companyId": "highco"
- },
- "captora": {
- "name": "Captora",
- "categoryId": 4,
- "url": "http://www.captora.com/",
- "companyId": "captora"
- },
- "capture_media": {
- "name": "Capture Media",
- "categoryId": 4,
- "url": "http://capturemedia.ch/",
- "companyId": "capture_media"
- },
- "capturly": {
- "name": "Capturly",
- "categoryId": 6,
- "url": "http://capturly.com/",
- "companyId": "capturly"
- },
- "carambola": {
- "name": "Carambola",
- "categoryId": 4,
- "url": "http://carambo.la/",
- "companyId": "carambola"
- },
- "carbonads": {
- "name": "Carbon Ads",
- "categoryId": 4,
- "url": "https://www.carbonads.net/",
- "companyId": "buysellads.com"
- },
- "cardinal": {
- "name": "Cardinal",
- "categoryId": 6,
- "url": "https://www.cardinalcommerce.com/",
- "companyId": "visa"
- },
- "cardlytics": {
- "name": "Cardlytics",
- "categoryId": 6,
- "url": "http://www.cardlytics.com/",
- "companyId": null
- },
- "carrot_quest": {
- "name": "Carrot Quest",
- "categoryId": 6,
- "url": "http://www.carrotquest.io/",
- "companyId": "carrot_quest"
- },
- "cartstack": {
- "name": "CartStack",
- "categoryId": 2,
- "url": "http://cartstack.com/",
- "companyId": "cartstack"
- },
- "caspion": {
- "name": "Caspion",
- "categoryId": 6,
- "url": "http://caspion.com/",
- "companyId": "caspion"
- },
- "castle": {
- "name": "Castle",
- "categoryId": 2,
- "url": "https://castle.io",
- "companyId": "castle"
- },
- "catchpoint": {
- "name": "Catchpoint",
- "categoryId": 6,
- "url": "http://www.catchpoint.com/",
- "companyId": "catchpoint_systems"
- },
- "cbox": {
- "name": "Cbox",
- "categoryId": 2,
- "url": "http://cbox.ws",
- "companyId": "cbox"
- },
- "cbs_interactive": {
- "name": "CBS Interactive",
- "categoryId": 0,
- "url": "http://www.cbsinteractive.com/",
- "companyId": "cbs_interactive"
- },
- "ccm_benchmark": {
- "name": "CCM Benchmark",
- "categoryId": 4,
- "url": "http://www.ccmbenchmark.com/",
- "companyId": null
- },
- "cdk_digital_marketing": {
- "name": "CDK Digital Marketing",
- "categoryId": 4,
- "url": "http://www.cobaltgroup.com",
- "companyId": "cdk_digital_marketing"
- },
- "cdn-net.com": {
- "name": "cdn-net.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdn13.com": {
- "name": "cdn13.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "cdn77": {
- "name": "CDN77",
- "categoryId": 9,
- "url": "https://www.cdn77.com/",
- "companyId": null
- },
- "cdnetworks.net": {
- "name": "cdnetworks.net",
- "categoryId": 9,
- "url": "https://www.cdnetworks.com/",
- "companyId": null
- },
- "cdnnetwok_xyz": {
- "name": "cdnnetwok.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "cdnondemand.org": {
- "name": "cdnondemand.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdnsure.com": {
- "name": "cdnsure.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdnvideo.com": {
- "name": "CDNvideo",
- "categoryId": 9,
- "url": "https://www.cdnvideo.com/",
- "companyId": "cdnvideo"
- },
- "cdnwidget.com": {
- "name": "cdnwidget.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "cedexis_radar": {
- "name": "Cedexis Radar",
- "categoryId": 6,
- "url": "http://www.cedexis.com/products_radar.html",
- "companyId": "cedexis"
- },
- "celebrus": {
- "name": "Celebrus",
- "categoryId": 6,
- "url": "https://www.celebrus.com/",
- "companyId": "celebrus"
- },
- "celtra": {
- "name": "Celtra",
- "categoryId": 0,
- "url": "http://www.celtra.com/",
- "companyId": "celtra"
- },
- "cendyn": {
- "name": "Cendyn",
- "categoryId": 4,
- "url": "http://www.cendyn.com/",
- "companyId": "cendyn"
- },
- "centraltag": {
- "name": "CentralTag",
- "categoryId": 4,
- "url": "http://www.centraltag.com/",
- "companyId": "centraltag"
- },
- "centro": {
- "name": "Centro",
- "categoryId": 4,
- "url": "http://centro.net/",
- "companyId": "centro"
- },
- "cerberus_speed-trap": {
- "name": "Cerberus Speed-Trap",
- "categoryId": 6,
- "url": "http://cerberusip.com/",
- "companyId": "cerberus"
- },
- "certainsource": {
- "name": "CertainSource",
- "categoryId": 4,
- "url": "http://www.ewaydirect.com",
- "companyId": "certainsource"
- },
- "certifica_metric": {
- "name": "Certifica Metric",
- "categoryId": 4,
- "url": "http://www.comscore.com/Products_Services/Product_Index/Certifica_Metric",
- "companyId": "comscore"
- },
- "certona": {
- "name": "Certona",
- "categoryId": 4,
- "url": "http://www.certona.com/products/recommendation.php",
- "companyId": "certona"
- },
- "chameleon": {
- "name": "Chameleon",
- "categoryId": 4,
- "url": "http://chameleon.ad/",
- "companyId": "chamaleon"
- },
- "chango": {
- "name": "Chango",
- "categoryId": 4,
- "url": "http://www.chango.com/",
- "companyId": "rubicon_project"
- },
- "channel_intelligence": {
- "name": "Channel Intelligence",
- "categoryId": 4,
- "url": "http://www.channelintelligence.com/",
- "companyId": "google"
- },
- "channel_pilot_solutions": {
- "name": "ChannelPilot Solutions",
- "categoryId": 6,
- "url": "https://www.channelpilot.de/",
- "companyId": null
- },
- "channeladvisor": {
- "name": "ChannelAdvisor",
- "categoryId": 4,
- "url": "http://www.channeladvisor.com/",
- "companyId": "channeladvisor"
- },
- "channelfinder": {
- "name": "ChannelFinder",
- "categoryId": 4,
- "url": "http://www.kpicentral.com/",
- "companyId": "kaleidoscope_promotions"
- },
- "chaordic": {
- "name": "Chaordic",
- "categoryId": 4,
- "url": "https://www.chaordic.com.br/",
- "companyId": "chaordic"
- },
- "chartbeat": {
- "name": "ChartBeat",
- "categoryId": 6,
- "url": "http://chartbeat.com/",
- "companyId": "chartbeat"
- },
- "chartboost": {
- "name": "Chartboost",
- "categoryId": 4,
- "url": "http://chartboost.com/",
- "companyId": "take-two",
- "source": "AdGuard"
- },
- "chaser": {
- "name": "Chaser",
- "categoryId": 2,
- "url": "http://chaser.ru/",
- "companyId": "chaser"
- },
- "chat_beacon": {
- "name": "Chat Beacon",
- "categoryId": 2,
- "url": "https://www.chatbeacon.io/",
- "companyId": "chat_beacon"
- },
- "chatango": {
- "name": "Chatango",
- "categoryId": 2,
- "url": "http://www.chatango.com/",
- "companyId": "chatango"
- },
- "chatra": {
- "name": "Chatra",
- "categoryId": 2,
- "url": "https://chatra.io",
- "companyId": "chatra"
- },
- "chaturbate.com": {
- "name": "chaturbate.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "chatwing": {
- "name": "ChatWing",
- "categoryId": 2,
- "url": "http://chatwing.com/",
- "companyId": "chatwing"
- },
- "checkmystats": {
- "name": "CheckMyStats",
- "categoryId": 4,
- "url": "http://checkmystats.com.au",
- "companyId": "checkmystats"
- },
- "chefkoch_de": {
- "name": "chefkoch.de",
- "categoryId": 8,
- "url": "http://chefkoch.de/",
- "companyId": null
- },
- "chin_media": {
- "name": "Chin Media",
- "categoryId": 4,
- "url": "http://www.chinmedia.vn/#",
- "companyId": "chin_media"
- },
- "chinesean": {
- "name": "ChineseAN",
- "categoryId": 4,
- "url": "http://www.chinesean.com/",
- "companyId": "chinesean"
- },
- "chitika": {
- "name": "Chitika",
- "categoryId": 4,
- "url": "http://chitika.com/",
- "companyId": "chitika"
- },
- "choicestream": {
- "name": "ChoiceStream",
- "categoryId": 4,
- "url": "http://www.choicestream.com/",
- "companyId": "choicestream"
- },
- "chute": {
- "name": "Chute",
- "categoryId": 5,
- "url": "https://www.getchute.com/",
- "companyId": "esw_capital"
- },
- "circit": {
- "name": "circIT",
- "categoryId": 6,
- "url": "http://www.circit.de/",
- "companyId": null
- },
- "circulate": {
- "name": "Circulate",
- "categoryId": 6,
- "url": "http://circulate.com/",
- "companyId": "circulate"
- },
- "city_spark": {
- "name": "City Spark",
- "categoryId": 4,
- "url": "http://www.cityspark.com/",
- "companyId": "city_spark"
- },
- "cityads": {
- "name": "CityAds",
- "categoryId": 4,
- "url": "http://cityads.ru/",
- "companyId": "cityads"
- },
- "ciuvo.com": {
- "name": "ciuvo.com",
- "categoryId": 12,
- "url": "https://www.ciuvo.com/",
- "companyId": null
- },
- "civey_widgets": {
- "name": "Civey Widgets",
- "categoryId": 2,
- "url": "https://civey.com/",
- "companyId": "civey"
- },
- "civicscience.com": {
- "name": "CivicScience",
- "categoryId": 6,
- "url": "https://civicscience.com/",
- "companyId": "civicscience"
- },
- "ciwebgroup": {
- "name": "CIWebGroup",
- "categoryId": 4,
- "url": "http://www.ciwebgroup.com/",
- "companyId": "ciwebgroup"
- },
- "clcknads.pro": {
- "name": "clcknads.pro",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "clear_pier": {
- "name": "ClearPier",
- "categoryId": 4,
- "url": "http://clearpier.com/",
- "companyId": "clear_pier"
- },
- "clearbit.com": {
- "name": "Clearbit",
- "categoryId": 6,
- "url": "https://clearbit.com/",
- "companyId": "clearbit"
- },
- "clearsale": {
- "name": "clearsale",
- "categoryId": 4,
- "url": "https://www.clear.sale/",
- "companyId": null
- },
- "clearstream.tv": {
- "name": "Clearstream.TV",
- "categoryId": 4,
- "url": "http://clearstream.tv/",
- "companyId": "clearstream.tv"
- },
- "clerk.io": {
- "name": "Clerk.io",
- "categoryId": 4,
- "url": "https://clerk.io/",
- "companyId": "clerk.io"
- },
- "clever_push": {
- "name": "Clever Push",
- "categoryId": 6,
- "url": "https://clevertap.com/",
- "companyId": "clever_push"
- },
- "clever_tap": {
- "name": "CleverTap",
- "categoryId": 6,
- "url": "https://clevertap.com/",
- "companyId": "clever_tap"
- },
- "cleversite": {
- "name": "Cleversite",
- "categoryId": 2,
- "url": "http://cleversite.ru/",
- "companyId": "cleversite"
- },
- "click360": {
- "name": "Click360",
- "categoryId": 6,
- "url": "https://www.click360.io/",
- "companyId": "click360"
- },
- "click_and_chat": {
- "name": "Click and Chat",
- "categoryId": 2,
- "url": "http://www.clickandchat.com/",
- "companyId": "clickandchat"
- },
- "click_back": {
- "name": "Click Back",
- "categoryId": 4,
- "url": "http://www.clickback.com/",
- "companyId": "clickback"
- },
- "clickaider": {
- "name": "ClickAider",
- "categoryId": 4,
- "url": "http://clickaider.com/",
- "companyId": "clickaider"
- },
- "clickaine": {
- "name": "Clickaine",
- "categoryId": 4,
- "url": "https://clickaine.com/",
- "companyId": "clickaine",
- "source": "AdGuard"
- },
- "clickbank": {
- "name": "ClickBank",
- "categoryId": 4,
- "url": "http://www.clickbank.com/",
- "companyId": "clickbank"
- },
- "clickbank_proads": {
- "name": "ClickBank ProAds",
- "categoryId": 4,
- "url": "http://www.cbproads.com/",
- "companyId": "clickbank_proads"
- },
- "clickbooth": {
- "name": "Clickbooth",
- "categoryId": 4,
- "url": "http://www.clickbooth.com/",
- "companyId": "clickbooth"
- },
- "clickcease": {
- "name": "ClickCease",
- "categoryId": 2,
- "url": "https://www.clickcease.com/",
- "companyId": "click_cease"
- },
- "clickcertain": {
- "name": "ClickCertain",
- "categoryId": 4,
- "url": "http://www.clickcertain.com",
- "companyId": "clickcertain"
- },
- "clickdesk": {
- "name": "ClickDesk",
- "categoryId": 2,
- "url": "https://www.clickdesk.com/",
- "companyId": "clickdesk"
- },
- "clickdimensions": {
- "name": "ClickDimensions",
- "categoryId": 4,
- "url": "http://www.clickdimensions.com/",
- "companyId": "clickdimensions"
- },
- "clickequations": {
- "name": "ClickEquations",
- "categoryId": 4,
- "url": "http://www.clickequations.com/",
- "companyId": "acquisio"
- },
- "clickexperts": {
- "name": "ClickExperts",
- "categoryId": 4,
- "url": "http://clickexperts.com/corp/index.php?lang=en",
- "companyId": "clickexperts"
- },
- "clickforce": {
- "name": "ClickForce",
- "categoryId": 4,
- "url": "http://www.clickforce.com.tw/",
- "companyId": "clickforce"
- },
- "clickinc": {
- "name": "ClickInc",
- "categoryId": 4,
- "url": "http://www.clickinc.com",
- "companyId": "clickinc"
- },
- "clickintext": {
- "name": "ClickInText",
- "categoryId": 4,
- "url": "http://www.clickintext.com/",
- "companyId": "clickintext"
- },
- "clickky": {
- "name": "Clickky",
- "categoryId": 4,
- "url": "http://www.clickky.biz/",
- "companyId": "clickky"
- },
- "clickmeter": {
- "name": "ClickMeter",
- "categoryId": 4,
- "url": "http://www.clickmeter.com",
- "companyId": "clickmeter"
- },
- "clickonometrics": {
- "name": "Clickonometrics",
- "categoryId": 4,
- "url": "http://clickonometrics.pl/",
- "companyId": "clickonometrics"
- },
- "clickpoint": {
- "name": "Clickpoint",
- "categoryId": 4,
- "url": "http://clickpoint.com/",
- "companyId": "clickpoint"
- },
- "clickprotector": {
- "name": "ClickProtector",
- "categoryId": 6,
- "url": "http://www.clickprotector.com/",
- "companyId": "clickprotector"
- },
- "clickreport": {
- "name": "ClickReport",
- "categoryId": 6,
- "url": "http://clickreport.com/",
- "companyId": "clickreport"
- },
- "clicks_thru_networks": {
- "name": "Clicks Thru Networks",
- "categoryId": 4,
- "url": "http://www.clicksthrunetwork.com/",
- "companyId": "clicksthrunetwork"
- },
- "clicksor": {
- "name": "Clicksor",
- "categoryId": 4,
- "url": "http://clicksor.com/",
- "companyId": "clicksor"
- },
- "clicktale": {
- "name": "ClickTale",
- "categoryId": 6,
- "url": "http://www.clicktale.com/",
- "companyId": "clicktale"
- },
- "clicktripz": {
- "name": "ClickTripz",
- "categoryId": 4,
- "url": "https://www.clicktripz.com",
- "companyId": "clicktripz"
- },
- "clickwinks": {
- "name": "Clickwinks",
- "categoryId": 4,
- "url": "http://www.clickwinks.com/",
- "companyId": "clickwinks"
- },
- "clicky": {
- "name": "Clicky",
- "categoryId": 6,
- "url": "http://getclicky.com/",
- "companyId": "clicky"
- },
- "clickyab": {
- "name": "Clickyab",
- "categoryId": 4,
- "url": "https://www.clickyab.com/",
- "companyId": "clickyab"
- },
- "clicmanager": {
- "name": "ClicManager",
- "categoryId": 4,
- "url": "http://www.clicmanager.fr/",
- "companyId": "clicmanager"
- },
- "clip_syndicate": {
- "name": "Clip Syndicate",
- "categoryId": 4,
- "url": "http://www.clipsyndicate.com/",
- "companyId": "clip_syndicate"
- },
- "clixgalore": {
- "name": "clixGalore",
- "categoryId": 4,
- "url": "http://www.clixgalore.com/",
- "companyId": "clixgalore"
- },
- "clixmetrix": {
- "name": "ClixMetrix",
- "categoryId": 4,
- "url": "http://www.clixmetrix.com/",
- "companyId": "clixmedia"
- },
- "clixsense": {
- "name": "ClixSense",
- "categoryId": 4,
- "url": "http://www.clixsense.com/",
- "companyId": "clixsense"
- },
- "cloud-media.fr": {
- "name": "CloudMedia",
- "categoryId": 4,
- "url": "https://cloudmedia.fr/",
- "companyId": null
- },
- "cloudflare": {
- "name": "CloudFlare",
- "categoryId": 9,
- "url": "https://www.cloudflare.com/",
- "companyId": "cloudflare"
- },
- "cloudimage.io": {
- "name": "Cloudimage.io",
- "categoryId": 9,
- "url": "https://www.cloudimage.io/en/home",
- "companyId": "scaleflex_sas"
- },
- "cloudinary": {
- "name": "Cloudinary",
- "categoryId": 9,
- "url": "https://cloudinary.com/",
- "companyId": null
- },
- "clove_network": {
- "name": "Clove Network",
- "categoryId": 4,
- "url": "http://www.clovenetwork.com/",
- "companyId": "clove_network"
- },
- "clustrmaps": {
- "name": "ClustrMaps",
- "categoryId": 4,
- "url": "http://www.clustrmaps.com/",
- "companyId": "clustrmaps"
- },
- "cnbc": {
- "name": "CNBC",
- "categoryId": 8,
- "url": "https://www.cnbc.com/",
- "companyId": "nbcuniversal"
- },
- "cnetcontent.com": {
- "name": "Cnetcontent",
- "categoryId": 8,
- "url": "http://cnetcontent.com/",
- "companyId": "cbs_interactive"
- },
- "cnstats": {
- "name": "CNStats",
- "categoryId": 6,
- "url": "http://cnstats.ru/",
- "companyId": "cnstats"
- },
- "cnzz.com": {
- "name": "Umeng",
- "categoryId": 6,
- "url": "http://www.umeng.com/",
- "companyId": "umeng"
- },
- "coadvertise": {
- "name": "COADVERTISE",
- "categoryId": 4,
- "url": "http://www.coadvertise.com/",
- "companyId": "coadvertise"
- },
- "cobrowser": {
- "name": "CoBrowser",
- "categoryId": 2,
- "url": "https://www.cobrowser.net/",
- "companyId": "cobrowser.net"
- },
- "codeonclick.com": {
- "name": "codeonclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cogocast": {
- "name": "CogoCast",
- "categoryId": 4,
- "url": "http://www.cogocast.com",
- "companyId": "cogocast"
- },
- "coin_have": {
- "name": "Coin Have",
- "categoryId": 4,
- "url": "https://coin-have.com/",
- "companyId": "coin_have"
- },
- "coin_traffic": {
- "name": "Coin Traffic",
- "categoryId": 2,
- "url": "https://cointraffic.io/",
- "companyId": "coin_traffic"
- },
- "coinhive": {
- "name": "Coinhive",
- "categoryId": 8,
- "url": "https://coinhive.com/",
- "companyId": "coinhive"
- },
- "coinurl": {
- "name": "CoinURL",
- "categoryId": 4,
- "url": "https://coinurl.com/",
- "companyId": "coinurl"
- },
- "coll1onf.com": {
- "name": "coll1onf.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "coll2onf.com": {
- "name": "coll2onf.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "collarity": {
- "name": "Collarity",
- "categoryId": 4,
- "url": "http://www.collarity.com/",
- "companyId": "collarity"
- },
- "columbia_online": {
- "name": "Columbia Online",
- "categoryId": 4,
- "url": "https://www.colombiaonline.com/",
- "companyId": "columbia_online"
- },
- "combotag": {
- "name": "ComboTag",
- "categoryId": 4,
- "url": "https://www.combotag.com/",
- "companyId": null
- },
- "comcast_technology_solutions": {
- "name": "Comcast Technology Solutions",
- "categoryId": 0,
- "url": "https://www.comcasttechnologysolutions.com/",
- "companyId": "comcast_technology_solutions"
- },
- "comm100": {
- "name": "Comm100",
- "categoryId": 2,
- "url": "http://www.comm100.com/",
- "companyId": "comm100"
- },
- "commerce_sciences": {
- "name": "Commerce Sciences",
- "categoryId": 4,
- "url": "http://commercesciences.com/",
- "companyId": "commerce_sciences"
- },
- "commercehub": {
- "name": "CommerceHub",
- "categoryId": 4,
- "url": "http://www.mercent.com/",
- "companyId": "commercehub"
- },
- "commercialvalue.org": {
- "name": "commercialvalue.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "commission_junction": {
- "name": "CJ Affiliate",
- "categoryId": 4,
- "url": "http://www.cj.com/",
- "companyId": "conversant"
- },
- "communicator_corp": {
- "name": "Communicator Corp",
- "categoryId": 4,
- "url": "http://www.communicatorcorp.com/",
- "companyId": "communicator_corp"
- },
- "communigator": {
- "name": "CommuniGator",
- "categoryId": 6,
- "url": "http://www.wowanalytics.co.uk/",
- "companyId": "communigator"
- },
- "competexl": {
- "name": "CompeteXL",
- "categoryId": 6,
- "url": "http://www.compete.com/help/s12",
- "companyId": "wpp"
- },
- "complex_media_network": {
- "name": "Complex Media",
- "categoryId": 4,
- "url": "https://www.complex.com/",
- "companyId": "verizon"
- },
- "comprigo": {
- "name": "comprigo",
- "categoryId": 12,
- "url": "https://www.comprigo.com/",
- "companyId": null
- },
- "comscore": {
- "name": "ComScore, Inc.",
- "categoryId": 6,
- "url": "https://www.comscore.com/",
- "companyId": "comscore"
- },
- "conative.de": {
- "name": "CoNative",
- "categoryId": 4,
- "url": "http://www.conative.de/",
- "companyId": null
- },
- "condenastdigital.com": {
- "name": "Condé Nast Digital",
- "categoryId": 8,
- "url": "http://www.condenast.com/",
- "companyId": "conde_nast"
- },
- "conduit": {
- "name": "Conduit",
- "categoryId": 4,
- "url": "http://www.conduit.com/",
- "companyId": "conduit"
- },
- "confirmit": {
- "name": "Confirmit",
- "categoryId": 4,
- "url": "http://confirmit.com/",
- "companyId": "confirmit"
- },
- "congstar.de": {
- "name": "congstar.de",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "connatix.com": {
- "name": "Connatix",
- "categoryId": 4,
- "url": "https://connatix.com/",
- "companyId": "connatix"
- },
- "connectad": {
- "name": "ConnectAd",
- "categoryId": 4,
- "url": "https://connectad.io/",
- "companyId": "connectad"
- },
- "connecto": {
- "name": "Connecto",
- "categoryId": 6,
- "url": "http://www.connecto.io/",
- "companyId": "connecto"
- },
- "connexity": {
- "name": "Connexity",
- "categoryId": 4,
- "url": "http://www.connexity.com",
- "companyId": "shopzilla"
- },
- "connextra": {
- "name": "Connextra",
- "categoryId": 4,
- "url": "http://connextra.com/",
- "companyId": "connextra"
- },
- "constant_contact": {
- "name": "Constant Contact",
- "categoryId": 4,
- "url": "http://www.constantcontact.com/index.jsp",
- "companyId": "constant_contact"
- },
- "consumable": {
- "name": "Consumable",
- "categoryId": 4,
- "url": "http://consumable.com/index.html",
- "companyId": "giftconnect"
- },
- "contact_at_once": {
- "name": "Contact At Once!",
- "categoryId": 2,
- "url": "http://www.contactatonce.com/",
- "companyId": "contact_at_once!"
- },
- "contact_impact": {
- "name": "Contact Impact",
- "categoryId": 4,
- "url": "https://www.contactimpact.de/",
- "companyId": "axel_springer"
- },
- "contactme": {
- "name": "ContactMe",
- "categoryId": 4,
- "url": "http://www.contactme.com",
- "companyId": "contactme"
- },
- "contaxe": {
- "name": "Contaxe",
- "categoryId": 5,
- "url": "http://www.contaxe.com/",
- "companyId": "contaxe"
- },
- "content.ad": {
- "name": "Content.ad",
- "categoryId": 4,
- "url": "https://www.content.ad/",
- "companyId": "content.ad"
- },
- "content_insights": {
- "name": "Content Insights",
- "categoryId": 6,
- "url": "https://contentinsights.com/",
- "companyId": "content_insights"
- },
- "contentexchange.me": {
- "name": "Content Exchange",
- "categoryId": 6,
- "url": "https://www.contentexchange.me/",
- "companyId": "i.r.v."
- },
- "contentful_gmbh": {
- "name": "Contentful GmbH",
- "categoryId": 9,
- "url": "https://www.contentful.com/",
- "companyId": "contentful_gmbh"
- },
- "contentpass": {
- "name": "ContentPass",
- "categoryId": 6,
- "url": "https://www.contentpass.de/",
- "companyId": "contentpass"
- },
- "contentsquare.net": {
- "name": "ContentSquare",
- "categoryId": 4,
- "url": "https://www.contentsquare.com/",
- "companyId": "content_square"
- },
- "contentwrx": {
- "name": "Contentwrx",
- "categoryId": 6,
- "url": "http://contentwrx.com/",
- "companyId": "contentwrx"
- },
- "context": {
- "name": "C|ON|TEXT",
- "categoryId": 4,
- "url": "http://c-on-text.com",
- "companyId": "c_on_text"
- },
- "context.ad": {
- "name": "Context.ad",
- "categoryId": 4,
- "url": "http://contextad.pl/",
- "companyId": "context.ad"
- },
- "continum_net": {
- "name": "continum.net",
- "categoryId": 10,
- "url": "http://continum.net/",
- "companyId": null
- },
- "contribusource": {
- "name": "Contribusource",
- "categoryId": 4,
- "url": "https://www.contribusource.com/",
- "companyId": "contribusource"
- },
- "convergetrack": {
- "name": "ConvergeTrack",
- "categoryId": 6,
- "url": "http://www.convergedirect.com/technology/convergetrack.shtml",
- "companyId": "convergedirect"
- },
- "conversant": {
- "name": "Conversant",
- "categoryId": 4,
- "url": "https://www.conversantmedia.eu/",
- "companyId": "conversant"
- },
- "conversio": {
- "name": "CM Commerce",
- "categoryId": 6,
- "url": "https://cm-commerce.com/",
- "companyId": "conversio"
- },
- "conversion_logic": {
- "name": "Conversion Logic",
- "categoryId": 6,
- "url": "http://www.conversionlogic.com/",
- "companyId": "conversion_logic"
- },
- "conversionruler": {
- "name": "ConversionRuler",
- "categoryId": 4,
- "url": "http://www.conversionruler.com/",
- "companyId": "market_ruler"
- },
- "conversions_box": {
- "name": "Conversions Box",
- "categoryId": 7,
- "url": "http://www.conversionsbox.com/",
- "companyId": "conversions_box"
- },
- "conversions_on_demand": {
- "name": "Conversions On Demand",
- "categoryId": 5,
- "url": "https://www.conversionsondemand.com/",
- "companyId": "conversions_on_demand"
- },
- "conversive": {
- "name": "Conversive",
- "categoryId": 4,
- "url": "http://www.conversive.nl/",
- "companyId": "conversive"
- },
- "convert": {
- "name": "Convert",
- "categoryId": 6,
- "url": "https://www.convert.com/",
- "companyId": "convert"
- },
- "convertfox": {
- "name": "ConvertFox",
- "categoryId": 2,
- "url": "https://convertfox.com/",
- "companyId": "convertfox"
- },
- "convertro": {
- "name": "Convertro",
- "categoryId": 4,
- "url": "http://www.convertro.com/",
- "companyId": "verizon"
- },
- "conviva": {
- "name": "Conviva",
- "categoryId": 6,
- "url": "http://www.conviva.com/",
- "companyId": "conviva"
- },
- "cookie_consent": {
- "name": "Cookie Consent",
- "categoryId": 5,
- "url": "https://silktide.com/",
- "companyId": "silktide"
- },
- "cookie_script": {
- "name": "Cookie Script",
- "categoryId": 5,
- "url": "https://cookie-script.com/",
- "companyId": "cookie_script"
- },
- "cookiebot": {
- "name": "Cookiebot",
- "categoryId": 5,
- "url": "https://www.cookiebot.com/en/",
- "companyId": "cybot"
- },
- "cookieq": {
- "name": "CookieQ",
- "categoryId": 5,
- "url": "http://cookieq.com/CookieQ",
- "companyId": "baycloud"
- },
- "cooliris": {
- "name": "Cooliris",
- "categoryId": 2,
- "url": "http://www.cooliris.com",
- "companyId": "cooliris"
- },
- "copacet": {
- "name": "Copacet",
- "categoryId": 4,
- "url": "http://copacet.com/",
- "companyId": "copacet"
- },
- "coreaudience": {
- "name": "CoreAudience",
- "categoryId": 4,
- "url": "http://www.redaril.com/",
- "companyId": "hearst"
- },
- "coremotives": {
- "name": "CoreMotives",
- "categoryId": 4,
- "url": "http://coremotives.com/",
- "companyId": "coremotives"
- },
- "coull": {
- "name": "Coull",
- "categoryId": 4,
- "url": "http://coull.com/",
- "companyId": "coull"
- },
- "cpm_rocket": {
- "name": "CPM Rocket",
- "categoryId": 4,
- "url": "http://www.cpmrocket.com/",
- "companyId": "cpm_rocket"
- },
- "cpmprofit": {
- "name": "CPMProfit",
- "categoryId": 4,
- "url": "http://www.cpmprofit.com/",
- "companyId": "cpmprofit"
- },
- "cpmstar": {
- "name": "CPMStar",
- "categoryId": 4,
- "url": "http://www.cpmstar.com",
- "companyId": "cpmstar"
- },
- "cpx.to": {
- "name": "Captify",
- "categoryId": 4,
- "url": "https://www.captify.co.uk/",
- "companyId": "captify"
- },
- "cq_counter": {
- "name": "CQ Counter",
- "categoryId": 6,
- "url": "http://www.cqcounter.com/",
- "companyId": "cq_counter"
- },
- "cqq5id8n.com": {
- "name": "cqq5id8n.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cquotient.com": {
- "name": "CQuotient",
- "categoryId": 6,
- "url": "https://www.demandware.com/#cquotient",
- "companyId": "salesforce"
- },
- "craftkeys": {
- "name": "CraftKeys",
- "categoryId": 4,
- "url": "http://craftkeys.com/",
- "companyId": "craftkeys"
- },
- "crakmedia_network": {
- "name": "Crakmedia Network",
- "categoryId": 4,
- "url": "http://crakmedia.com/",
- "companyId": "crakmedia_network"
- },
- "crankyads": {
- "name": "CrankyAds",
- "categoryId": 4,
- "url": "http://www.crankyads.com",
- "companyId": "crankyads"
- },
- "crashlytics": {
- "name": "Crashlytics",
- "categoryId": 101,
- "url": "https://crashlytics.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "crazy_egg": {
- "name": "Crazy Egg",
- "categoryId": 6,
- "url": "http://crazyegg.com/",
- "companyId": "crazy_egg"
- },
- "creafi": {
- "name": "Creafi",
- "categoryId": 4,
- "url": "http://www.creafi.com/en/home/",
- "companyId": "crazy4media"
- },
- "createjs": {
- "name": "CreateJS",
- "categoryId": 9,
- "url": "https://createjs.com/",
- "companyId": null
- },
- "creative_commons": {
- "name": "Creative Commons",
- "categoryId": 8,
- "url": "https://creativecommons.org/",
- "companyId": "creative_commons_corp"
- },
- "crimsonhexagon_com": {
- "name": "Brandwatch",
- "categoryId": 6,
- "url": "https://www.brandwatch.com/",
- "companyId": "brandwatch"
- },
- "crimtan": {
- "name": "Crimtan",
- "categoryId": 4,
- "url": "http://www.crimtan.com/",
- "companyId": "crimtan"
- },
- "crisp": {
- "name": "Crisp",
- "categoryId": 2,
- "url": "https://crisp.chat/",
- "companyId": "crisp"
- },
- "criteo": {
- "name": "Criteo",
- "categoryId": 4,
- "url": "http://www.criteo.com/",
- "companyId": "criteo"
- },
- "crm4d": {
- "name": "CRM4D",
- "categoryId": 6,
- "url": "https://crm4d.com/",
- "companyId": "crm4d"
- },
- "crossengage": {
- "name": "CrossEngage",
- "categoryId": 6,
- "url": "https://www.crossengage.io/",
- "companyId": "crossengage"
- },
- "crosspixel": {
- "name": "Cross Pixel",
- "categoryId": 4,
- "url": "http://crosspixel.net/",
- "companyId": "cross_pixel"
- },
- "crosssell.info": {
- "name": "econda Cross Sell",
- "categoryId": 4,
- "url": "https://www.econda.de/en/solutions/personalization/cross-sell/",
- "companyId": "econda"
- },
- "crossss": {
- "name": "Crossss",
- "categoryId": 4,
- "url": "http://crossss.ru/",
- "companyId": "crossss"
- },
- "crowd_ignite": {
- "name": "Crowd Ignite",
- "categoryId": 4,
- "url": "http://get.crowdignite.com/",
- "companyId": "gorilla_nation_media"
- },
- "crowd_science": {
- "name": "Crowd Science",
- "categoryId": 4,
- "url": "http://www.crowdscience.com/",
- "companyId": "crowd_science"
- },
- "crowdprocess": {
- "name": "CrowdProcess",
- "categoryId": 2,
- "url": "https://crowdprocess.com",
- "companyId": "crowdprocess"
- },
- "crowdynews": {
- "name": "Crowdynews",
- "categoryId": 7,
- "url": "http://www.crowdynews.com/",
- "companyId": "crowdynews"
- },
- "crownpeak": {
- "name": "Crownpeak",
- "categoryId": 5,
- "url": "https://www.crownpeak.com/",
- "companyId": "crownpeak"
- },
- "cryptoloot_miner": {
- "name": "CryptoLoot Miner",
- "categoryId": 4,
- "url": "https://crypto-loot.com/",
- "companyId": "cryptoloot"
- },
- "ctnetwork": {
- "name": "CTnetwork",
- "categoryId": 4,
- "url": "http://ctnetwork.hu/",
- "companyId": "ctnetwork"
- },
- "ctrlshift": {
- "name": "CtrlShift",
- "categoryId": 4,
- "url": "http://www.adzcentral.com/",
- "companyId": "ctrlshift"
- },
- "cubed": {
- "name": "Cubed",
- "categoryId": 6,
- "url": "http://withcubed.com/",
- "companyId": "cubed_attribution"
- },
- "cuelinks": {
- "name": "CueLinks",
- "categoryId": 4,
- "url": "http://www.cuelinks.com/",
- "companyId": "cuelinks"
- },
- "cup_interactive": {
- "name": "Cup Interactive",
- "categoryId": 4,
- "url": "http://www.cupinteractive.com/",
- "companyId": "cup_interactive"
- },
- "curse.com": {
- "name": "Curse",
- "categoryId": 8,
- "url": "https://www.curse.com/",
- "companyId": "amazon_associates"
- },
- "cursecdn.com": {
- "name": "Curse CDN",
- "categoryId": 9,
- "url": "https://www.curse.com/",
- "companyId": "amazon_associates"
- },
- "customer.io": {
- "name": "Customer.io",
- "categoryId": 2,
- "url": "http://www.customer.io/",
- "companyId": "customer.io"
- },
- "customerly": {
- "name": "Customerly",
- "categoryId": 2,
- "url": "https://www.customerly.io/",
- "companyId": "customerly"
- },
- "cxense": {
- "name": "cXense",
- "categoryId": 4,
- "url": "http://www.cxense.com/",
- "companyId": "cxense"
- },
- "cxo.name": {
- "name": "Chip Analytics",
- "categoryId": 6,
- "url": "http://www.chip.de/",
- "companyId": null
- },
- "cyber_wing": {
- "name": "Cyber Wing",
- "categoryId": 4,
- "url": "http://www.cyberwing.co.jp/",
- "companyId": "cyberwing"
- },
- "cybersource": {
- "name": "CyberSource",
- "categoryId": 6,
- "url": "https://www.cybersource.com/en-gb.html",
- "companyId": "visa"
- },
- "cygnus": {
- "name": "Cygnus",
- "categoryId": 4,
- "url": "http://www.cygnus.com/",
- "companyId": "cygnus"
- },
- "da-ads.com": {
- "name": "da-ads.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "dailymail.co.uk": {
- "name": "Daily Mail",
- "categoryId": 8,
- "url": "http://www.dailymail.co.uk/home/index.html",
- "companyId": "dmg_media"
- },
- "dailymotion": {
- "name": "Dailymotion",
- "categoryId": 8,
- "url": "https://vivendi.com/",
- "companyId": "vivendi"
- },
- "dailymotion_advertising": {
- "name": "Dailymotion Advertising",
- "categoryId": 4,
- "url": "http://advertising.dailymotion.com/",
- "companyId": "vivendi"
- },
- "daisycon": {
- "name": "Daisycon",
- "categoryId": 4,
- "url": "http://www.daisycon.com",
- "companyId": "daisycon"
- },
- "dantrack.net": {
- "name": "DANtrack",
- "categoryId": 4,
- "url": "http://media.dantrack.net/privacy/",
- "companyId": "dentsu_aegis_network"
- },
- "darwin_marketing": {
- "name": "Darwin Marketing",
- "categoryId": 4,
- "url": "http://www.darwinmarketing.com/",
- "companyId": "darwin_marketing"
- },
- "dashboard_ad": {
- "name": "Dashboard Ad",
- "categoryId": 4,
- "url": "http://www.dashboardad.com/",
- "companyId": "premium_access"
- },
- "datacaciques.com": {
- "name": "DataCaciques",
- "categoryId": 6,
- "url": "http://www.datacaciques.com/",
- "companyId": null
- },
- "datacoral": {
- "name": "Datacoral",
- "categoryId": 4,
- "url": "https://datacoral.com/",
- "companyId": "datacoral"
- },
- "datacrushers": {
- "name": "Datacrushers",
- "categoryId": 6,
- "url": "https://www.datacrushers.com/",
- "companyId": "datacrushers"
- },
- "datadome": {
- "name": "DataDome",
- "categoryId": 6,
- "url": "https://datadome.co/",
- "companyId": "datadome"
- },
- "datalicious_datacollector": {
- "name": "Datalicious DataCollector",
- "categoryId": 6,
- "url": "http://www.datalicious.com/",
- "companyId": "datalicious"
- },
- "datalicious_supertag": {
- "name": "Datalicious SuperTag",
- "categoryId": 5,
- "url": "http://www.datalicious.com/",
- "companyId": "datalicious"
- },
- "datalogix": {
- "name": "Datalogix",
- "categoryId": 4,
- "url": "https://www.oracle.com/corporate/acquisitions/datalogix/",
- "companyId": "oracle"
- },
- "datamind.ru": {
- "name": "DataMind",
- "categoryId": 4,
- "url": "http://datamind.ru/",
- "companyId": "datamind"
- },
- "datatables": {
- "name": "DataTables",
- "categoryId": 2,
- "url": "https://datatables.net/",
- "companyId": null
- },
- "datawrkz": {
- "name": "Datawrkz",
- "categoryId": 4,
- "url": "http://datawrkz.com/",
- "companyId": "datawrkz"
- },
- "dataxpand": {
- "name": "Dataxpand",
- "categoryId": 4,
- "url": "http://dataxpand.com/",
- "companyId": "dataxpand"
- },
- "dataxu": {
- "name": "DataXu",
- "categoryId": 4,
- "url": "http://www.dataxu.com/",
- "companyId": "dataxu"
- },
- "datds.net": {
- "name": "datds.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "datonics": {
- "name": "Datonics",
- "categoryId": 4,
- "url": "http://datonics.com/",
- "companyId": "almondnet"
- },
- "datran": {
- "name": "Pulsepoint",
- "categoryId": 4,
- "url": "https://www.pulsepoint.com/",
- "companyId": "pulsepoint_ad_exchange"
- },
- "davebestdeals.com": {
- "name": "davebestdeals.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "dawandastatic.com": {
- "name": "Dawanda CDN",
- "categoryId": 8,
- "url": "https://dawanda.com/",
- "companyId": null
- },
- "dc_stormiq": {
- "name": "DC StormIQ",
- "categoryId": 4,
- "url": "http://www.dc-storm.com/",
- "companyId": "dc_storm"
- },
- "dcbap.com": {
- "name": "dcbap.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "dcmn.com": {
- "name": "DCMN",
- "categoryId": 4,
- "url": "https://www.dcmn.com/",
- "companyId": null
- },
- "de_persgroep": {
- "name": "De Persgroep",
- "categoryId": 4,
- "url": "https://www.persgroep.nl",
- "companyId": "de_persgroep"
- },
- "deadline_funnel": {
- "name": "Deadline Funnel",
- "categoryId": 6,
- "url": "https://deadlinefunnel.com/",
- "companyId": "deadline_funnel"
- },
- "dealer.com": {
- "name": "Dealer.com",
- "categoryId": 6,
- "url": "http://www.dealer.com/",
- "companyId": "dealer.com"
- },
- "decibel_insight": {
- "name": "Decibel Insight",
- "categoryId": 6,
- "url": "https://www.decibelinsight.com/",
- "companyId": "decibel_insight"
- },
- "dedicated_media": {
- "name": "Dedicated Media",
- "categoryId": 4,
- "url": "http://www.dedicatedmedia.com/",
- "companyId": "dedicated_media"
- },
- "deep.bi": {
- "name": "Deep.BI",
- "categoryId": 6,
- "url": "http://www.deep.bi/#",
- "companyId": "deep.bi"
- },
- "deepintent.com": {
- "name": "DeepIntent",
- "categoryId": 4,
- "url": "https://www.deepintent.com/",
- "companyId": "deep_intent"
- },
- "defpush.com": {
- "name": "defpush.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "deichmann.com": {
- "name": "deichmann.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "delacon": {
- "name": "Delacon",
- "categoryId": 6,
- "url": "http://www.delacon.com.au/",
- "companyId": "delacon"
- },
- "delivr": {
- "name": "Delivr",
- "categoryId": 6,
- "url": "http://www.percentmobile.com/",
- "companyId": "delivr"
- },
- "delta_projects": {
- "name": "Delta Projects",
- "categoryId": 4,
- "url": "http://www.adaction.se/",
- "companyId": "delta_projects"
- },
- "deluxe": {
- "name": "Deluxe",
- "categoryId": 6,
- "url": "https://ww.deluxe.com/",
- "companyId": "deluxe"
- },
- "delve_networks": {
- "name": "Delve Networks",
- "categoryId": 7,
- "url": "http://www.delvenetworks.com/",
- "companyId": "limelight_networks"
- },
- "demandbase": {
- "name": "Demandbase",
- "categoryId": 4,
- "url": "http://www.demandbase.com/",
- "companyId": "demandbase"
- },
- "demandmedia": {
- "name": "DemandMedia",
- "categoryId": 4,
- "url": "http://www.demandmedia.com",
- "companyId": "leaf_group"
- },
- "deqwas": {
- "name": "Deqwas",
- "categoryId": 6,
- "url": "http://www.deqwas.com/",
- "companyId": "deqwas"
- },
- "devatics": {
- "name": "Devatics",
- "categoryId": 2,
- "url": "http://www.devatics.co.uk/",
- "companyId": "devatics"
- },
- "developer_media": {
- "name": "Developer Media",
- "categoryId": 4,
- "url": "http://www.developermedia.com/",
- "companyId": "developer_media"
- },
- "deviantart.net": {
- "name": "deviantart.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dex_platform": {
- "name": "DEX Platform",
- "categoryId": 4,
- "url": "http://blueadvertise.com/",
- "companyId": "dex_platform"
- },
- "dgm": {
- "name": "dgm",
- "categoryId": 4,
- "url": "http://www.dgm-au.com/",
- "companyId": "apd"
- },
- "dialogtech": {
- "name": "Dialogtech",
- "categoryId": 6,
- "url": "https://www.dialogtech.com/",
- "companyId": "dialogtech"
- },
- "dianomi": {
- "name": "Dianomi",
- "categoryId": 4,
- "url": "http://www.dianomi.com/cms/",
- "companyId": "dianomi"
- },
- "didit_blizzard": {
- "name": "Didit Blizzard",
- "categoryId": 4,
- "url": "http://www.didit.com/blizzard",
- "companyId": "didit"
- },
- "didit_maestro": {
- "name": "Didit Maestro",
- "categoryId": 4,
- "url": "http://www.didit.com/maestro",
- "companyId": "didit"
- },
- "didomi": {
- "name": "Didomi",
- "categoryId": 5,
- "url": "https://www.didomi.io/en/",
- "companyId": "didomi"
- },
- "digg_widget": {
- "name": "Digg Widget",
- "categoryId": 2,
- "url": "http://digg.com/apple/Digg_Widget",
- "companyId": "buysellads.com"
- },
- "digicert_trust_seal": {
- "name": "Digicert Trust Seal",
- "categoryId": 5,
- "url": "http://www.digicert.com/",
- "companyId": "digicert"
- },
- "digidip": {
- "name": "Digidip",
- "categoryId": 4,
- "url": "http://www.digidip.net/",
- "companyId": "digidip"
- },
- "digiglitz": {
- "name": "Digiglitz",
- "categoryId": 6,
- "url": "http://www.digiglitz.com/",
- "companyId": "digiglitz"
- },
- "digilant": {
- "name": "Digilant",
- "categoryId": 4,
- "url": "https://www.digilant.com/",
- "companyId": "digilant"
- },
- "digioh": {
- "name": "Digioh",
- "categoryId": 4,
- "url": "https://digioh.com/",
- "companyId": "digioh",
- "source": "AdGuard"
- },
- "digital.gov": {
- "name": "Digital.gov",
- "categoryId": 6,
- "url": "https://digital.gov/",
- "companyId": "us_government"
- },
- "digital_control_room": {
- "name": "Digital Control Room",
- "categoryId": 5,
- "url": "http://www.cookiereports.com/",
- "companyId": "digital_control_room"
- },
- "digital_nomads": {
- "name": "Digital Nomads",
- "categoryId": 4,
- "url": "http://dnomads.net/",
- "companyId": null
- },
- "digital_remedy": {
- "name": "Digital Remedy",
- "categoryId": 4,
- "url": "https://www.digitalremedy.com/",
- "companyId": "digital_remedy"
- },
- "digital_river": {
- "name": "Digital River",
- "categoryId": 4,
- "url": "http://corporate.digitalriver.com",
- "companyId": "digital_river"
- },
- "digital_window": {
- "name": "Digital Window",
- "categoryId": 4,
- "url": "http://www.digitalwindow.com/",
- "companyId": "axel_springer"
- },
- "digiteka": {
- "name": "Digiteka",
- "categoryId": 4,
- "url": "http://digiteka.com/",
- "companyId": "digiteka"
- },
- "digitrust": {
- "name": "DigiTrust",
- "categoryId": 4,
- "url": "http://www.digitru.st/",
- "companyId": "iab"
- },
- "dihitt_badge": {
- "name": "diHITT Badge",
- "categoryId": 7,
- "url": "http://www.dihitt.com.br/",
- "companyId": "dihitt"
- },
- "dimml": {
- "name": "DimML",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "direct_keyword_link": {
- "name": "Direct Keyword Link",
- "categoryId": 4,
- "url": "http://www.keywordsconnect.com/",
- "companyId": "direct_keyword_link"
- },
- "directadvert": {
- "name": "Direct/ADVERT",
- "categoryId": 4,
- "url": "http://www.directadvert.ru/",
- "companyId": "directadvert"
- },
- "directrev": {
- "name": "DirectREV",
- "categoryId": 4,
- "url": "http://www.directrev.com/",
- "companyId": "directrev"
- },
- "discord": {
- "name": "Discord",
- "categoryId": 2,
- "url": "https://discordapp.com/",
- "companyId": null
- },
- "disneyplus": {
- "name": "Disney+",
- "categoryId": 0,
- "url": "https://www.disneyplus.com/",
- "companyId": "disney",
- "source": "AdGuard"
- },
- "disneystreaming": {
- "name": "Disney Streaming",
- "categoryId": 0,
- "url": "https://press.disneyplus.com",
- "companyId": "disney",
- "source": "AdGuard"
- },
- "display_block": {
- "name": "display block",
- "categoryId": 4,
- "url": "https://www.displayblock.com/",
- "companyId": "display_block"
- },
- "disqus": {
- "name": "Disqus",
- "categoryId": 1,
- "url": "https://disqus.com/",
- "companyId": "zeta"
- },
- "disqus_ads": {
- "name": "Disqus Ads",
- "categoryId": 4,
- "url": "https://disqusads.com/",
- "companyId": "zeta"
- },
- "distil_tag": {
- "name": "Distil Networks",
- "categoryId": 5,
- "url": "https://www.distilnetworks.com/",
- "companyId": "distil_networks"
- },
- "districtm.io": {
- "name": "district m",
- "categoryId": 4,
- "url": "https://districtm.net/",
- "companyId": "district_m"
- },
- "distroscale": {
- "name": "Distroscale",
- "categoryId": 6,
- "url": "http://www.distroscale.com/",
- "companyId": "distroscale"
- },
- "div.show": {
- "name": "div.show",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "diva": {
- "name": "DiVa",
- "categoryId": 6,
- "url": "http://www.vertriebsassistent.de/",
- "companyId": "diva"
- },
- "divvit": {
- "name": "Divvit",
- "categoryId": 6,
- "url": "https://www.divvit.com/",
- "companyId": "divvit"
- },
- "dm2": {
- "name": "DM2",
- "categoryId": 4,
- "url": "http://digitalmediamanagement.com/",
- "companyId": "digital_media_management"
- },
- "dmg_media": {
- "name": "DMG Media",
- "categoryId": 8,
- "url": "https://www.dmgmedia.co.uk/",
- "companyId": "dmgt"
- },
- "dmm": {
- "name": "DMM",
- "categoryId": 3,
- "url": "http://www.dmm.co.jp",
- "companyId": "dmm.r18"
- },
- "dmwd": {
- "name": "DMWD",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dockvine": {
- "name": "dockvine",
- "categoryId": 2,
- "url": "https://www.dockvine.com",
- "companyId": "dockvine"
- },
- "docler": {
- "name": "Docler",
- "categoryId": 0,
- "url": "https://www.doclerholding.com/en/about/companies/33/",
- "companyId": "docler_ip"
- },
- "dogannet": {
- "name": "Dogannet",
- "categoryId": 4,
- "url": "http://s.dogannet.tv/",
- "companyId": "dogannet"
- },
- "domainglass": {
- "name": "Domain Glass",
- "categoryId": 8,
- "url": "https://domain.glass/",
- "companyId": "domainglass",
- "source": "AdGuard"
- },
- "domodomain": {
- "name": "DomoDomain",
- "categoryId": 6,
- "url": "http://www.domodomain.com/",
- "companyId": "intelligencefocus"
- },
- "donationtools": {
- "name": "iRobinHood",
- "categoryId": 12,
- "url": "http://www.irobinhood.org",
- "companyId": null
- },
- "doofinder.com": {
- "name": "doofinder",
- "categoryId": 2,
- "url": "https://www.doofinder.com/",
- "companyId": null
- },
- "doorbell.io": {
- "name": "Doorbell.io",
- "categoryId": 5,
- "url": "https://doorbell.io/",
- "companyId": "doorbell.io"
- },
- "dotandmedia": {
- "name": "DotAndMedia",
- "categoryId": 4,
- "url": "http://www.dotandmedia.com",
- "companyId": "dotandmedia"
- },
- "dotmailer": {
- "name": "dotMailer",
- "categoryId": 2,
- "url": "http://www.dotdigitalgroup.com/",
- "companyId": "dotdigital_group"
- },
- "dotmetrics.net": {
- "name": "Dotmetrics",
- "categoryId": 6,
- "url": "https://dotmetrics.net/",
- "companyId": null
- },
- "dotomi": {
- "name": "Dotomi",
- "categoryId": 4,
- "url": "http://www.dotomi.com/",
- "companyId": "conversant"
- },
- "double.net": {
- "name": "Double.net",
- "categoryId": 4,
- "url": "http://double.net/en/",
- "companyId": "double.net"
- },
- "doubleclick": {
- "name": "DoubleClick",
- "categoryId": 4,
- "url": "http://www.doubleclick.com",
- "companyId": "google"
- },
- "doubleclick_ad_buyer": {
- "name": "DoubleClick Ad Exchange-Buyer",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "doubleclick_bid_manager": {
- "name": "DoubleClick Bid Manager",
- "categoryId": 4,
- "url": "http://www.invitemedia.com",
- "companyId": "google"
- },
- "doubleclick_floodlight": {
- "name": "DoubleClick Floodlight",
- "categoryId": 4,
- "url": "http://www.google.com/support/dfa/partner/bin/topic.py?topic=23943",
- "companyId": "google"
- },
- "doubleclick_spotlight": {
- "name": "DoubleClick Spotlight",
- "categoryId": 4,
- "url": "http://www.doubleclick.com/products/richmedia",
- "companyId": "google"
- },
- "doubleclick_video_stats": {
- "name": "Doubleclick Video Stats",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "doublepimp": {
- "name": "DoublePimp",
- "categoryId": 3,
- "url": "http://www.doublepimp.com/",
- "companyId": "doublepimp"
- },
- "doubleverify": {
- "name": "DoubleVerify",
- "categoryId": 4,
- "url": "http://www.doubleverify.com/",
- "companyId": "doubleverify"
- },
- "dratio": {
- "name": "Dratio",
- "categoryId": 6,
- "url": "http://www.dratio.com/",
- "companyId": "dratio"
- },
- "drawbridge": {
- "name": "Drawbridge",
- "categoryId": 4,
- "url": "http://www.drawbrid.ge/",
- "companyId": "drawbridge"
- },
- "dreame_tech": {
- "name": "Dreame Technology",
- "categoryId": 8,
- "url": "https://www.dreame.tech/",
- "companyId": "xiaomi",
- "source": "AdGuard"
- },
- "dreamlab.pl": {
- "name": "DreamLab.pl",
- "categoryId": 4,
- "url": "https://www.dreamlab.pl/",
- "companyId": "onet.pl"
- },
- "drift": {
- "name": "Drift",
- "categoryId": 2,
- "url": "https://www.drift.com/",
- "companyId": "drift"
- },
- "drip": {
- "name": "Drip",
- "categoryId": 2,
- "url": "https://www.getdrip.com",
- "companyId": "drip"
- },
- "dropbox.com": {
- "name": "Dropbox",
- "categoryId": 2,
- "url": "https://www.dropbox.com/",
- "companyId": null
- },
- "dsnr_media_group": {
- "name": "DSNR Media Group",
- "categoryId": 4,
- "url": "http://www.dsnrmg.com/",
- "companyId": "dsnr_media_group"
- },
- "dsp_rambler": {
- "name": "Rambler DSP",
- "categoryId": 4,
- "url": "http://dsp.rambler.ru/",
- "companyId": "rambler"
- },
- "dstillery": {
- "name": "Dstillery",
- "categoryId": 4,
- "url": "https://dstillery.com/",
- "companyId": "dstillery"
- },
- "dtscout.com": {
- "name": "DTScout",
- "categoryId": 4,
- "url": "http://www.dtscout.com/",
- "companyId": "dtscout"
- },
- "dudamobile": {
- "name": "DudaMobile",
- "categoryId": 4,
- "url": "https://www.dudamobile.com/",
- "companyId": "dudamobile"
- },
- "dun_and_bradstreet": {
- "name": "Dun and Bradstreet",
- "categoryId": 6,
- "url": "http://www.dnb.com/#",
- "companyId": "dun_&_bradstreet"
- },
- "dwstat.cn": {
- "name": "dwstat.cn",
- "categoryId": 6,
- "url": "http://www.dwstat.cn/",
- "companyId": "dwstat"
- },
- "dynad": {
- "name": "DynAd",
- "categoryId": 4,
- "url": "http://dynad.net/",
- "companyId": "dynad"
- },
- "dynadmic": {
- "name": "DynAdmic",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "dynamic_1001_gmbh": {
- "name": "Dynamic 1001 GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dynamic_logic": {
- "name": "Dynamic Logic",
- "categoryId": 4,
- "url": "http://www.dynamiclogic.com/",
- "companyId": "millward_brown"
- },
- "dynamic_yield": {
- "name": "Dynamic Yield",
- "categoryId": 5,
- "url": "https://www.dynamicyield.com/",
- "companyId": "dynamic_yield"
- },
- "dynamic_yield_analytics": {
- "name": "Dynamic Yield Analytics",
- "categoryId": 6,
- "url": "http://www.dynamicyield.com/",
- "companyId": "dynamic_yield"
- },
- "dynata": {
- "name": "Dynata",
- "categoryId": 4,
- "url": "http://hottraffic.nl/en",
- "companyId": "dynata"
- },
- "dynatrace.com": {
- "name": "Dynatrace",
- "categoryId": 6,
- "url": "https://www.dynatrace.com/",
- "companyId": "thoma_bravo"
- },
- "dyncdn.me": {
- "name": "dyncdn.me",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "e-planning": {
- "name": "e-planning",
- "categoryId": 4,
- "url": "http://www.e-planning.net/",
- "companyId": "e-planning"
- },
- "eadv": {
- "name": "eADV",
- "categoryId": 4,
- "url": "http://eadv.it/",
- "companyId": "eadv"
- },
- "eanalyzer.de": {
- "name": "eanalyzer.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "early_birds": {
- "name": "Early Birds",
- "categoryId": 4,
- "url": "http://www.early-birds.fr/",
- "companyId": "early_birds"
- },
- "earnify": {
- "name": "Earnify",
- "categoryId": 4,
- "url": "https://www.earnify.com/",
- "companyId": "earnify"
- },
- "earnify_tracker": {
- "name": "Earnify Tracker",
- "categoryId": 6,
- "url": "https://www.earnify.com/",
- "companyId": "earnify"
- },
- "easyads": {
- "name": "EasyAds",
- "categoryId": 4,
- "url": "https://easyads.bg/",
- "companyId": "easyads"
- },
- "easylist_club": {
- "name": "easylist.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ebay": {
- "name": "eBay Stats",
- "categoryId": 4,
- "url": "https://partnernetwork.ebay.com/",
- "companyId": "ebay_partner_network"
- },
- "ebay_korea": {
- "name": "eBay Korea",
- "categoryId": 4,
- "url": "http://www.ebay.com/",
- "companyId": "ebay"
- },
- "ebay_partner_network": {
- "name": "eBay Partner Network",
- "categoryId": 4,
- "url": "https://www.ebaypartnernetwork.com/files/hub/en-US/index.html",
- "companyId": "ebay_partner_network"
- },
- "ebuzzing": {
- "name": "eBuzzing",
- "categoryId": 4,
- "url": "http://www.ebuzzing.com/",
- "companyId": "ebuzzing"
- },
- "echo": {
- "name": "Echo",
- "categoryId": 4,
- "url": "http://js-kit.com/",
- "companyId": "echo"
- },
- "eclick": {
- "name": "eClick",
- "categoryId": 4,
- "url": "http://eclick.vn",
- "companyId": "eclick"
- },
- "econda": {
- "name": "Econda",
- "categoryId": 6,
- "url": "http://www.econda.de/",
- "companyId": "econda"
- },
- "ecotag": {
- "name": "ecotag",
- "categoryId": 4,
- "url": "http://www.eco-tag.jp/",
- "companyId": "ecotag"
- },
- "edgio": {
- "name": "Edgio",
- "categoryId": 9,
- "url": "https://edg.io/",
- "companyId": "edgio",
- "source": "AdGuard"
- },
- "edigitalresearch": {
- "name": "eDigitalResearch",
- "categoryId": 4,
- "url": "http://www.edigitalresearch.com/",
- "companyId": "edigitalresearch"
- },
- "effective_measure": {
- "name": "Effective Measure",
- "categoryId": 4,
- "url": "http://www.effectivemeasure.com/",
- "companyId": "effective_measure"
- },
- "effiliation": {
- "name": "Effiliation",
- "categoryId": 4,
- "url": "http://www.effiliation.com/",
- "companyId": "effiliation"
- },
- "egain": {
- "name": "eGain",
- "categoryId": 2,
- "url": "http://www.egain.com/",
- "companyId": "egain"
- },
- "egain_analytics": {
- "name": "eGain Analytics",
- "categoryId": 6,
- "url": "http://www.egain.com/",
- "companyId": "egain"
- },
- "ehi-siegel_de": {
- "name": "ehi-siegel.de",
- "categoryId": 2,
- "url": "http://ehi-siegel.de/",
- "companyId": null
- },
- "ekmpinpoint": {
- "name": "ekmPinPoint",
- "categoryId": 6,
- "url": "http://ekmpinpoint.com/",
- "companyId": "ekmpinpoint"
- },
- "ekomi": {
- "name": "eKomi",
- "categoryId": 1,
- "url": "http://www.ekomi.co.uk",
- "companyId": "ekomi"
- },
- "elastic_ad": {
- "name": "Elastic Ad",
- "categoryId": 4,
- "url": "http://www.elasticad.com",
- "companyId": "elastic_ad"
- },
- "elastic_beanstalk": {
- "name": "Elastic Beanstalk",
- "categoryId": 6,
- "url": "http://www.amazon.com/",
- "companyId": "amazon_associates"
- },
- "electronic_arts": {
- "name": "Electronic Arts",
- "categoryId": 2,
- "url": "https://www.ea.com/",
- "companyId": "electronic_arts",
- "source": "AdGuard"
- },
- "element": {
- "name": "Element",
- "categoryId": 7,
- "url": "https://element.io/",
- "companyId": "element",
- "source": "AdGuard"
- },
- "elicit": {
- "name": "elicit",
- "categoryId": 4,
- "url": "http://www.elicitsearch.com/",
- "companyId": "elicit"
- },
- "eloqua": {
- "name": "Eloqua",
- "categoryId": 4,
- "url": "http://www.eloqua.com/",
- "companyId": "oracle"
- },
- "eluxer_net": {
- "name": "eluxer.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "email_aptitude": {
- "name": "Email Aptitude",
- "categoryId": 4,
- "url": "http://www.emailaptitude.com/",
- "companyId": "email_aptitude"
- },
- "email_attitude": {
- "name": "Email Attitude",
- "categoryId": 4,
- "url": "http://us.email-attitude.com/Default.aspx",
- "companyId": "1000mercis"
- },
- "emarketeer": {
- "name": "emarketeer",
- "categoryId": 4,
- "url": "http://www.emarketeer.com/",
- "companyId": "emarketeer"
- },
- "embed.ly": {
- "name": "Embedly",
- "categoryId": 6,
- "url": "http://embed.ly/",
- "companyId": "medium"
- },
- "emediate": {
- "name": "Emediate",
- "categoryId": 4,
- "url": "http://www.emediate.biz/",
- "companyId": "cxense"
- },
- "emetriq": {
- "name": "emetriq",
- "categoryId": 4,
- "url": "http://www.emetriq.com",
- "companyId": "emetriq"
- },
- "emma": {
- "name": "Emma",
- "categoryId": 4,
- "url": "http://myemma.com/",
- "companyId": "emma"
- },
- "emnet": {
- "name": "eMnet",
- "categoryId": 4,
- "url": "http://www.emnet.co.kr",
- "companyId": "emnet"
- },
- "empathy": {
- "name": "Empathy",
- "categoryId": 4,
- "url": "http://www.colbenson.com",
- "companyId": "empathy"
- },
- "emsmobile.de": {
- "name": "EMS Mobile",
- "categoryId": 8,
- "url": "http://www.emsmobile.com/",
- "companyId": null
- },
- "encore_metrics": {
- "name": "Encore Metrics",
- "categoryId": 4,
- "url": "http://sitecompass.com",
- "companyId": "flashtalking"
- },
- "enecto_analytics": {
- "name": "Enecto Analytics",
- "categoryId": 6,
- "url": "http://www.enecto.com/en/",
- "companyId": "enecto"
- },
- "engage_sciences": {
- "name": "Engage Sciences",
- "categoryId": 6,
- "url": "http://www.engagesciences.com/",
- "companyId": "engagesciences"
- },
- "engageya_widget": {
- "name": "Engageya Widget",
- "categoryId": 4,
- "url": "http://www.engageya.com/home/",
- "companyId": "engageya"
- },
- "engagio": {
- "name": "Engagio",
- "categoryId": 6,
- "url": "https://www.engagio.com/",
- "companyId": "engagio"
- },
- "engineseeker": {
- "name": "EngineSeeker",
- "categoryId": 4,
- "url": "http://www.engineseeker.com/",
- "companyId": "engineseeker"
- },
- "enquisite": {
- "name": "Enquisite",
- "categoryId": 4,
- "url": "http://www.enquisite.com/",
- "companyId": "inboundwriter"
- },
- "enreach": {
- "name": "Enreach",
- "categoryId": 4,
- "url": "https://enreach.me/",
- "companyId": "enreach"
- },
- "ensemble": {
- "name": "Ensemble",
- "categoryId": 4,
- "url": "http://www.tumri.com",
- "companyId": "ensemble"
- },
- "ensighten": {
- "name": "Ensighten",
- "categoryId": 5,
- "url": "http://www.ensighten.com",
- "companyId": "ensighten"
- },
- "envolve": {
- "name": "Envolve",
- "categoryId": 2,
- "url": "https://www.envolve.com/",
- "companyId": "envolve"
- },
- "envybox": {
- "name": "Envybox",
- "categoryId": 2,
- "url": "https://envybox.io/",
- "companyId": "envybox"
- },
- "eperflex": {
- "name": "Eperflex",
- "categoryId": 4,
- "url": "https://eperflex.com/",
- "companyId": "ividence"
- },
- "epic_game_ads": {
- "name": "Epic Game Ads",
- "categoryId": 4,
- "url": "http://www.epicgameads.com/",
- "companyId": "epic_game_ads"
- },
- "epic_marketplace": {
- "name": "Epic Marketplace",
- "categoryId": 4,
- "url": "http://www.trafficmarketplace.com/",
- "companyId": "epic_advertising"
- },
- "epom": {
- "name": "Epom",
- "categoryId": 4,
- "url": "http://epom.com/",
- "companyId": "epom"
- },
- "epoq": {
- "name": "epoq",
- "categoryId": 2,
- "url": "http://www.epoq.de/",
- "companyId": "epoq"
- },
- "eprice": {
- "name": "ePrice",
- "categoryId": 4,
- "url": "http://banzaiadv.it/",
- "companyId": "eprice"
- },
- "eproof": {
- "name": "eProof",
- "categoryId": 6,
- "url": "http://www.eproof.com/",
- "companyId": "eproof"
- },
- "eqs_group": {
- "name": "EQS Group",
- "categoryId": 6,
- "url": "https://www.eqs.com/",
- "companyId": "eqs_group"
- },
- "eqworks": {
- "name": "EQWorks",
- "categoryId": 4,
- "url": "http://eqads.com",
- "companyId": "eq_works"
- },
- "eroadvertising": {
- "name": "EroAdvertising",
- "categoryId": 3,
- "url": "http://www.ero-advertising.com/",
- "companyId": "ero_advertising"
- },
- "errorception": {
- "name": "Errorception",
- "categoryId": 6,
- "url": "http://errorception.com/",
- "companyId": "errorception"
- },
- "eshopcomp.com": {
- "name": "eshopcomp.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "espn_cdn": {
- "name": "ESPN CDN",
- "categoryId": 9,
- "url": "http://www.espn.com/",
- "companyId": "disney"
- },
- "esprit.de": {
- "name": "esprit.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "estat": {
- "name": "eStat",
- "categoryId": 6,
- "url": "http://www.mediametrie-estat.com/",
- "companyId": "mediametrie"
- },
- "etag": {
- "name": "etag",
- "categoryId": 4,
- "url": "http://etagdigital.com.br/",
- "companyId": "etag"
- },
- "etahub.com": {
- "name": "etahub.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "etarget": {
- "name": "Etarget",
- "categoryId": 4,
- "url": "http://etargetnet.com/",
- "companyId": "etarget"
- },
- "ethnio": {
- "name": "Ethnio",
- "categoryId": 4,
- "url": "http://ethn.io/",
- "companyId": "ethnio"
- },
- "etology": {
- "name": "Etology",
- "categoryId": 4,
- "url": "http://www.etology.com",
- "companyId": "etology"
- },
- "etp": {
- "name": "ETP",
- "categoryId": 6,
- "url": "https://www.etpgroup.com",
- "companyId": "etp"
- },
- "etracker": {
- "name": "etracker",
- "categoryId": 6,
- "url": "http://www.etracker.com/en/",
- "companyId": "etracker_gmbh"
- },
- "etrigue": {
- "name": "eTrigue",
- "categoryId": 4,
- "url": "http://www.etrigue.com/",
- "companyId": "etrigue"
- },
- "etsystatic": {
- "name": "Etsy CDN",
- "categoryId": 9,
- "url": "https://www.etsy.com/",
- "companyId": "etsy"
- },
- "eulerian": {
- "name": "Eulerian",
- "categoryId": 6,
- "url": "https://www.eulerian.com/",
- "companyId": "eulerian"
- },
- "euroads": {
- "name": "Euroads",
- "categoryId": 4,
- "url": "http://euroads.com/en/",
- "companyId": "euroads"
- },
- "europecash": {
- "name": "Europecash",
- "categoryId": 4,
- "url": "https://www.europacash.com/",
- "companyId": "europacash"
- },
- "euroweb_counter": {
- "name": "Euroweb Counter",
- "categoryId": 4,
- "url": "http://www.euroweb.de/",
- "companyId": "euroweb"
- },
- "evergage.com": {
- "name": "Evergage",
- "categoryId": 2,
- "url": "https://www.evergage.com",
- "companyId": "evergage"
- },
- "everstring": {
- "name": "Everstring",
- "categoryId": 6,
- "url": "http://www.everstring.com/",
- "companyId": "everstring"
- },
- "everyday_health": {
- "name": "Everyday Health",
- "categoryId": 7,
- "url": "http://www.everydayhealth.com/",
- "companyId": "everyday_health"
- },
- "evidon": {
- "name": "Evidon",
- "categoryId": 5,
- "url": "https://www.evidon.com/",
- "companyId": "crownpeak"
- },
- "evisit_analyst": {
- "name": "eVisit Analyst",
- "categoryId": 4,
- "url": "http://www.evisitanalyst.com",
- "companyId": "evisit_analyst"
- },
- "exact_drive": {
- "name": "Exact Drive",
- "categoryId": 4,
- "url": "http://www.exactdrive.com/",
- "companyId": "exact_drive"
- },
- "exactag": {
- "name": "Exactag",
- "categoryId": 6,
- "url": "http://www.exactag.com",
- "companyId": "exactag"
- },
- "exelate": {
- "name": "eXelate",
- "categoryId": 4,
- "url": "http://www.exelate.com/",
- "companyId": "nielsen"
- },
- "exitjunction": {
- "name": "ExitJunction",
- "categoryId": 4,
- "url": "https://secure.exitjunction.com",
- "companyId": "exitjunction"
- },
- "exoclick": {
- "name": "ExoClick",
- "categoryId": 3,
- "url": "http://exoclick.com/",
- "companyId": "exoclick"
- },
- "exoticads.com": {
- "name": "exoticads",
- "categoryId": 3,
- "url": "https://exoticads.com/welcome/",
- "companyId": null
- },
- "expedia": {
- "name": "Expedia",
- "categoryId": 8,
- "url": "https://www.trvl-px.com/",
- "companyId": "iac_apps"
- },
- "experian": {
- "name": "Experian",
- "categoryId": 8,
- "url": "https://www.experian.com/",
- "companyId": "experian_inc"
- },
- "experian_marketing_services": {
- "name": "Experian Marketing Services",
- "categoryId": 4,
- "url": "http://www.experian.com/",
- "companyId": "experian_inc"
- },
- "expo-max": {
- "name": "expo-MAX",
- "categoryId": 4,
- "url": "http://expo-max.com/",
- "companyId": "expo-max"
- },
- "expose_box": {
- "name": "Expose Box",
- "categoryId": 4,
- "url": "http://www.exposebox.com/",
- "companyId": "expose_box"
- },
- "expose_box_widgets": {
- "name": "Expose Box Widgets",
- "categoryId": 2,
- "url": "http://www.exposebox.com/",
- "companyId": "expose_box"
- },
- "express.co.uk": {
- "name": "express.co.uk",
- "categoryId": 8,
- "url": "https://www.express.co.uk/",
- "companyId": null
- },
- "expressvpn": {
- "name": "ExpressVPN",
- "categoryId": 2,
- "url": "https://www.expressvpn.com/",
- "companyId": "expressvpn"
- },
- "extreme_tracker": {
- "name": "eXTReMe Tracker",
- "categoryId": 6,
- "url": "http://www.extremetracking.com/",
- "companyId": "extreme_digital"
- },
- "eye_newton": {
- "name": "Eye Newton",
- "categoryId": 2,
- "url": "http://eyenewton.ru/",
- "companyId": "eyenewton"
- },
- "eyeota": {
- "name": "Eyeota",
- "categoryId": 4,
- "url": "http://www.eyeota.com/",
- "companyId": "eyeota"
- },
- "eyereturnmarketing": {
- "name": "Eyereturn Marketing",
- "categoryId": 4,
- "url": "https://eyereturnmarketing.com/",
- "companyId": "torstar_corp"
- },
- "eyeview": {
- "name": "Eyeview",
- "categoryId": 4,
- "url": "http://www.eyeviewdigital.com/",
- "companyId": "eyeview"
- },
- "ezakus": {
- "name": "Ezakus",
- "categoryId": 4,
- "url": "http://www.ezakus.com/",
- "companyId": "np6"
- },
- "f11-ads.com": {
- "name": "Factor Eleven",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "facebook": {
- "name": "Facebook",
- "categoryId": 4,
- "url": "https://www.facebook.com",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_audience": {
- "name": "Facebook Audience Network",
- "categoryId": 4,
- "url": "https://www.facebook.com/business/products/audience-network",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_beacon": {
- "name": "Facebook Beacon",
- "categoryId": 7,
- "url": "http://www.facebook.com/beacon/faq.php",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_cdn": {
- "name": "Facebook CDN",
- "categoryId": 9,
- "url": "https://www.facebook.com",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_connect": {
- "name": "Facebook Connect",
- "categoryId": 6,
- "url": "https://developers.facebook.com/connect.php",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_conversion_tracking": {
- "name": "Facebook Conversion Tracking",
- "categoryId": 4,
- "url": "http://www.facebook.com/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_custom_audience": {
- "name": "Facebook Custom Audience",
- "categoryId": 4,
- "url": "https://www.facebook.com",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_graph": {
- "name": "Facebook Social Graph",
- "categoryId": 7,
- "url": "https://developers.facebook.com/docs/reference/api/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_impressions": {
- "name": "Facebook Impressions",
- "categoryId": 4,
- "url": "https://www.facebook.com/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_social_plugins": {
- "name": "Facebook Social Plugins",
- "categoryId": 7,
- "url": "https://developers.facebook.com/plugins",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facetz.dca": {
- "name": "Facetz.DCA",
- "categoryId": 4,
- "url": "http://facetz.net",
- "companyId": "dca"
- },
- "facilitate_digital": {
- "name": "Facilitate Digital",
- "categoryId": 4,
- "url": "http://www.facilitatedigital.com/",
- "companyId": "adslot"
- },
- "faktor.io": {
- "name": "faktor.io",
- "categoryId": 6,
- "url": "https://faktor.io/",
- "companyId": "faktor.io"
- },
- "fancy_widget": {
- "name": "Fancy Widget",
- "categoryId": 7,
- "url": "http://www.thefancy.com/",
- "companyId": "fancy"
- },
- "fanplayr": {
- "name": "Fanplayr",
- "categoryId": 4,
- "url": "http://www.fanplayr.com/",
- "companyId": "fanplayr"
- },
- "fap.to": {
- "name": "Imagefap",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "farlight_pte_ltd": {
- "name": "Farlight Pte Ltd.",
- "categoryId": 8,
- "url": "https://farlightgames.com/",
- "companyId": "farlight",
- "source": "AdGuard"
- },
- "fastly_insights": {
- "name": "Fastly Insights",
- "categoryId": 6,
- "url": "https://insights.fastlylabs.com/",
- "companyId": "fastly"
- },
- "fastlylb.net": {
- "name": "Fastly",
- "categoryId": 9,
- "url": "https://www.fastly.com/",
- "companyId": "fastly"
- },
- "fastpic.ru": {
- "name": "FastPic",
- "categoryId": 10,
- "url": "http://fastpic.ru/",
- "companyId": "fastpic"
- },
- "federated_media": {
- "name": "Federated Media",
- "categoryId": 4,
- "url": "http://www.federatedmedia.net/",
- "companyId": "hyfn"
- },
- "feedbackify": {
- "name": "Feedbackify",
- "categoryId": 2,
- "url": "http://www.feedbackify.com/",
- "companyId": "feedbackify"
- },
- "feedburner.com": {
- "name": "FeedBurner",
- "categoryId": 4,
- "url": "https://feedburner.com",
- "companyId": "google"
- },
- "feedify": {
- "name": "Feedify",
- "categoryId": 7,
- "url": "http://feedify.de/",
- "companyId": "feedify"
- },
- "feedjit": {
- "name": "Feedjit",
- "categoryId": 4,
- "url": "http://feedjit.com/",
- "companyId": "feedjit"
- },
- "feedperfect": {
- "name": "FeedPerfect",
- "categoryId": 4,
- "url": "http://www.feedperfect.com/",
- "companyId": "feedperfect"
- },
- "feedsportal": {
- "name": "Feedsportal",
- "categoryId": 4,
- "url": "http://www.mediafed.com/",
- "companyId": "mediafed"
- },
- "feefo": {
- "name": "Feefo",
- "categoryId": 2,
- "url": "http://www.feefo.com/web/en/us/",
- "companyId": "feefo"
- },
- "fidelity_media": {
- "name": "Fidelity Media",
- "categoryId": 4,
- "url": "http://fidelity-media.com/",
- "companyId": "fidelity_media"
- },
- "fiksu": {
- "name": "Fiksu",
- "categoryId": 4,
- "url": "https://fiksu.com/",
- "companyId": "noosphere"
- },
- "filament.io": {
- "name": "Filament.io",
- "categoryId": 4,
- "url": "http://sharethis.com/",
- "companyId": "sharethis"
- },
- "fileserve": {
- "name": "FileServe",
- "categoryId": 10,
- "url": "http://fileserve.com/",
- "companyId": "fileserve"
- },
- "financeads": {
- "name": "FinanceADs",
- "categoryId": 4,
- "url": "https://www.financeads.net/",
- "companyId": "financeads_gmbh_&_co._kg"
- },
- "financial_content": {
- "name": "Financial Content",
- "categoryId": 4,
- "url": "http://www.financialcontent.com",
- "companyId": "financial_content"
- },
- "findizer.fr": {
- "name": "Findizer",
- "categoryId": 8,
- "url": "http://www.findizer.fr/",
- "companyId": null
- },
- "findologic.com": {
- "name": "Findologic",
- "categoryId": 2,
- "url": "https://www.findologic.com/",
- "companyId": "findologic"
- },
- "firebase": {
- "name": "Firebase",
- "categoryId": 101,
- "url": "https://firebase.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "firebaseio.com": {
- "name": "Firebase",
- "categoryId": 8,
- "url": "https://firebase.google.com/",
- "companyId": "google"
- },
- "first_impression": {
- "name": "First Impression",
- "categoryId": 4,
- "url": "http://www.firstimpression.io",
- "companyId": "first_impression"
- },
- "fit_analytics": {
- "name": "Fit Analytics",
- "categoryId": 6,
- "url": "http://www.fitanalytics.com/",
- "companyId": "fit_analytics"
- },
- "fivetran": {
- "name": "Fivetran",
- "categoryId": 6,
- "url": "https://fivetran.com/",
- "companyId": "fivetran"
- },
- "flag_ads": {
- "name": "Flag Ads",
- "categoryId": 4,
- "url": "http://www.flagads.net/",
- "companyId": "flag_ads"
- },
- "flag_counter": {
- "name": "Flag Counter",
- "categoryId": 4,
- "url": "http://flagcounter.com/",
- "companyId": "flag_counter"
- },
- "flash": {
- "name": "Flash",
- "categoryId": 0,
- "url": "https://flashnews.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "flashtalking": {
- "name": "Flashtalking",
- "categoryId": 4,
- "url": "http://www.flashtalking.com/",
- "companyId": "flashtalking"
- },
- "flattr_button": {
- "name": "Flattr Button",
- "categoryId": 7,
- "url": "http://flattr.com/",
- "companyId": "flattr"
- },
- "flexoffers": {
- "name": "FlexOffers",
- "categoryId": 4,
- "url": "http://www.flexoffers.com/",
- "companyId": "flexoffers.com"
- },
- "flickr_badge": {
- "name": "Flickr Badge",
- "categoryId": 7,
- "url": "http://www.flickr.com/",
- "companyId": "smugmug"
- },
- "flipboard": {
- "name": "Flipboard",
- "categoryId": 6,
- "url": "http://www.flipboard.com/",
- "companyId": "flipboard"
- },
- "flite": {
- "name": "Flite",
- "categoryId": 4,
- "url": "http://www.flite.com/",
- "companyId": "flite"
- },
- "flixcdn.com": {
- "name": "flixcdn.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "flixmedia": {
- "name": "Flixmedia",
- "categoryId": 8,
- "url": "https://flixmedia.eu",
- "companyId": "flixmedia"
- },
- "flocktory.com": {
- "name": "Flocktory",
- "categoryId": 6,
- "url": "https://www.flocktory.com/",
- "companyId": "flocktory"
- },
- "flowplayer": {
- "name": "Flowplayer",
- "categoryId": 4,
- "url": "https://flowplayer.org/",
- "companyId": "flowplayer"
- },
- "fluct": {
- "name": "Fluct",
- "categoryId": 4,
- "url": "https://corp.fluct.jp/",
- "companyId": "fluct"
- },
- "fluent": {
- "name": "Fluent",
- "categoryId": 4,
- "url": "http://www.fluentco.com/",
- "companyId": "fluent"
- },
- "fluid": {
- "name": "Fluid",
- "categoryId": 4,
- "url": "http://www.8thbridge.com/",
- "companyId": "fluid"
- },
- "fluidads": {
- "name": "FluidAds",
- "categoryId": 4,
- "url": "http://www.fluidads.co/",
- "companyId": "fluidads"
- },
- "fluidsurveys": {
- "name": "FluidSurveys",
- "categoryId": 2,
- "url": "http://fluidsurveys.com/",
- "companyId": "fluidware"
- },
- "flurry": {
- "name": "Flurry",
- "categoryId": 101,
- "url": "http://www.flurry.com/",
- "companyId": "apollo_global_management",
- "source": "AdGuard"
- },
- "flxone": {
- "name": "FLXONE",
- "categoryId": 4,
- "url": "http://www.flxone.com/",
- "companyId": "flxone"
- },
- "flyertown": {
- "name": "Flyertown",
- "categoryId": 6,
- "url": "http://www.flyertown.ca/",
- "companyId": "flyertown"
- },
- "fmadserving": {
- "name": "FMAdserving",
- "categoryId": 4,
- "url": "http://www.fmadserving.dk/",
- "companyId": "fm_adserving"
- },
- "fonbet": {
- "name": "Fonbet",
- "categoryId": 6,
- "url": "https://www.fonbet.ru",
- "companyId": "fonbet"
- },
- "fonecta": {
- "name": "Fonecta",
- "categoryId": 2,
- "url": "http://www.fonecta.com/",
- "companyId": "fonecta"
- },
- "fontawesome_com": {
- "name": "fontawesome.com",
- "categoryId": 9,
- "url": "http://fontawesome.com/",
- "companyId": null
- },
- "foodie_blogroll": {
- "name": "Foodie Blogroll",
- "categoryId": 7,
- "url": "http://www.foodieblogroll.com",
- "companyId": "foodie_blogroll"
- },
- "footprint": {
- "name": "Footprint",
- "categoryId": 4,
- "url": "http://www.footprintlive.com/",
- "companyId": "opentracker"
- },
- "footprintdns.com": {
- "name": "Footprint DNS",
- "categoryId": 11,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "forcetrac": {
- "name": "ForceTrac",
- "categoryId": 2,
- "url": "http://www.forcetrac.com/",
- "companyId": "force_marketing"
- },
- "forensiq": {
- "name": "Forensiq",
- "categoryId": 4,
- "url": "http://www.cpadetective.com/",
- "companyId": "impact"
- },
- "foresee": {
- "name": "ForeSee",
- "categoryId": 5,
- "url": "https://www.foresee.com/",
- "companyId": "foresee_results"
- },
- "formisimo": {
- "name": "Formisimo",
- "categoryId": 4,
- "url": "https://www.formisimo.com/",
- "companyId": "formisimo"
- },
- "forter": {
- "name": "Forter",
- "categoryId": 4,
- "url": "https://www.forter.com/",
- "companyId": "forter"
- },
- "fortlachanhecksof.info": {
- "name": "fortlachanhecksof.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "foursquare_widget": {
- "name": "Foursquare Widget",
- "categoryId": 4,
- "url": "https://foursquare.com/",
- "companyId": "foursquare"
- },
- "fout.jp": {
- "name": "FreakOut",
- "categoryId": 4,
- "url": "https://www.fout.co.jp/",
- "companyId": "freakout"
- },
- "fox_audience_network": {
- "name": "Fox Audience Network",
- "categoryId": 4,
- "url": "https://publishers.foxaudiencenetwork.com/",
- "companyId": "fox_audience_network"
- },
- "fox_sports": {
- "name": "Fox Sports",
- "categoryId": 0,
- "url": "https://foxsports.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "foxnews_static": {
- "name": "Fox News CDN",
- "categoryId": 9,
- "url": "http://www.foxnews.com/",
- "companyId": "fox_news"
- },
- "foxpush": {
- "name": "FoxPush",
- "categoryId": 4,
- "url": "https://www.foxpush.com/",
- "companyId": "foxpush"
- },
- "foxtel": {
- "name": "Foxtel",
- "categoryId": 0,
- "url": "https://foxtel.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "foxydeal_com": {
- "name": "foxydeal.com",
- "categoryId": 12,
- "url": "https://www.foxydeal.de",
- "companyId": null
- },
- "fraudlogix": {
- "name": "FraudLogix",
- "categoryId": 4,
- "url": "https://www.fraudlogix.com/",
- "companyId": null
- },
- "free_counter": {
- "name": "Free Counter",
- "categoryId": 6,
- "url": "http://www.statcounterfree.com/",
- "companyId": "free_counter"
- },
- "free_online_users": {
- "name": "Free Online Users",
- "categoryId": 6,
- "url": "http://www.freeonlineusers.com",
- "companyId": "free_online_users"
- },
- "free_pagerank": {
- "name": "Free PageRank",
- "categoryId": 6,
- "url": "http://www.free-pagerank.com/",
- "companyId": "free_pagerank"
- },
- "freedom_mortgage": {
- "name": "Freedom Mortgage",
- "categoryId": 6,
- "url": "https://www.freedommortgage.com/",
- "companyId": "freedom_mortgage"
- },
- "freegeoip_net": {
- "name": "freegeoip.net",
- "categoryId": 6,
- "url": "http://freegeoip.net/",
- "companyId": null
- },
- "freenet_de": {
- "name": "freenet.de",
- "categoryId": 4,
- "url": "http://freenet.de/",
- "companyId": "debitel"
- },
- "freeview": {
- "name": "Freeview",
- "categoryId": 0,
- "url": "https://freeview.com.au/",
- "companyId": "freeview",
- "source": "AdGuard"
- },
- "freewheel": {
- "name": "FreeWheel",
- "categoryId": 4,
- "url": "http://www.freewheel.tv/",
- "companyId": "comcast"
- },
- "fresh8": {
- "name": "Fresh8",
- "categoryId": 6,
- "url": "http://fresh8gaming.com/",
- "companyId": "fresh_8_gaming"
- },
- "freshdesk": {
- "name": "Freshdesk",
- "categoryId": 2,
- "url": "http://www.freshdesk.com",
- "companyId": "freshdesk"
- },
- "freshplum": {
- "name": "Freshplum",
- "categoryId": 4,
- "url": "https://freshplum.com/",
- "companyId": "freshplum"
- },
- "friendbuy": {
- "name": "FriendBuy",
- "categoryId": 6,
- "url": "https://www.friendbuy.com",
- "companyId": "friendbuy"
- },
- "friendfeed": {
- "name": "FriendFeed",
- "categoryId": 7,
- "url": "http://friendfeed.com/",
- "companyId": "facebook"
- },
- "friendfinder_network": {
- "name": "FriendFinder Network",
- "categoryId": 3,
- "url": "http://www.ffn.com/",
- "companyId": "friendfinder_networks"
- },
- "frosmo_optimizer": {
- "name": "Frosmo Optimizer",
- "categoryId": 4,
- "url": "http://frosmo.com/",
- "companyId": "frosmo"
- },
- "fruitflan": {
- "name": "FruitFlan",
- "categoryId": 4,
- "url": "http://flan-tech.com/",
- "companyId": "keytiles"
- },
- "fstrk.net": {
- "name": "24metrics Fraudshield",
- "categoryId": 6,
- "url": "https://24metrics.com/",
- "companyId": "24metrics"
- },
- "fuelx": {
- "name": "FuelX",
- "categoryId": 4,
- "url": "http://fuelx.com/",
- "companyId": "fuelx"
- },
- "fullstory": {
- "name": "FullStory",
- "categoryId": 6,
- "url": "http://fullstory.com",
- "companyId": "fullstory"
- },
- "funnelytics": {
- "name": "Funnelytics",
- "categoryId": 6,
- "url": "https://funnelytics.io/",
- "companyId": "funnelytics"
- },
- "fyber": {
- "name": "Fyber",
- "categoryId": 4,
- "url": "https://www.fyber.com/",
- "companyId": "fyber"
- },
- "ga_audiences": {
- "name": "GA Audiences",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "game_advertising_online": {
- "name": "Game Advertising Online",
- "categoryId": 4,
- "url": "http://www.game-advertising-online.com/",
- "companyId": "game_advertising_online"
- },
- "gameanalytics": {
- "name": "GameAnalytics",
- "categoryId": 101,
- "url": "https://gameanalytics.com/",
- "companyId": "mobvista",
- "source": "AdGuard"
- },
- "gamedistribution.com": {
- "name": "Gamedistribution.com",
- "categoryId": 8,
- "url": "http://gamedistribution.com/",
- "companyId": null
- },
- "gamerdna": {
- "name": "gamerDNA",
- "categoryId": 7,
- "url": "http://www.gamerdnamedia.com/",
- "companyId": "gamerdna_media"
- },
- "gannett": {
- "name": "Gannett Media",
- "categoryId": 0,
- "url": "https://www.gannett.com/",
- "companyId": "gannett_digital_media_network"
- },
- "gaug.es": {
- "name": "Gaug.es",
- "categoryId": 6,
- "url": "http://get.gaug.es/",
- "companyId": "euroweb"
- },
- "gazprom-media_digital": {
- "name": "Gazprom-Media Digital",
- "categoryId": 0,
- "url": "http://www.gpm-digital.com/",
- "companyId": "gazprom-media_digital"
- },
- "gb-world": {
- "name": "GB-World",
- "categoryId": 7,
- "url": "http://www.gb-world.net/",
- "companyId": "gb-world"
- },
- "gdeslon": {
- "name": "GdeSlon",
- "categoryId": 4,
- "url": "http://www.gdeslon.ru/",
- "companyId": "gdeslon"
- },
- "gdm_digital": {
- "name": "GDM Digital",
- "categoryId": 4,
- "url": "http://www.gdmdigital.com/",
- "companyId": "ve_interactive"
- },
- "geeen": {
- "name": "Geeen",
- "categoryId": 6,
- "url": "https://www.geeen.co.jp/",
- "companyId": "geeen"
- },
- "gemius": {
- "name": "Gemius",
- "categoryId": 4,
- "url": "http://www.gemius.com",
- "companyId": "gemius_sa"
- },
- "generaltracking_de": {
- "name": "generaltracking.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "genesis": {
- "name": "Genesis",
- "categoryId": 4,
- "url": "http://genesismedia.com/",
- "companyId": "genesis_media"
- },
- "geniee": {
- "name": "GENIEE",
- "categoryId": 4,
- "url": "http://geniee.co.jp/",
- "companyId": null
- },
- "genius": {
- "name": "Genius",
- "categoryId": 6,
- "url": "http://www.genius.com/",
- "companyId": "genius"
- },
- "genoo": {
- "name": "Genoo",
- "categoryId": 4,
- "url": "http://www.genoo.com/",
- "companyId": "genoo"
- },
- "geoads": {
- "name": "GeoAds",
- "categoryId": 4,
- "url": "http://www.geoads.com",
- "companyId": "geoads"
- },
- "geolify": {
- "name": "Geolify",
- "categoryId": 4,
- "url": "http://geolify.com/",
- "companyId": "geolify"
- },
- "geoplugin": {
- "name": "geoPlugin",
- "categoryId": 6,
- "url": "http://www.geoplugin.com/",
- "companyId": "geoplugin"
- },
- "geotrust": {
- "name": "GeoTrust",
- "categoryId": 5,
- "url": "http://www.geotrust.com/",
- "companyId": "symantec"
- },
- "geovisite": {
- "name": "Geovisite",
- "categoryId": 6,
- "url": "http://www.geovisite.com/",
- "companyId": "geovisite"
- },
- "gestionpub": {
- "name": "GestionPub",
- "categoryId": 4,
- "url": "http://www.gestionpub.com/",
- "companyId": "gestionpub"
- },
- "get_response": {
- "name": "Get Response",
- "categoryId": 2,
- "url": "https://www.getresponse.com/?marketing_gv=v2",
- "companyId": "getresponse"
- },
- "get_site_control": {
- "name": "Get Site Control",
- "categoryId": 4,
- "url": "https://getsitecontrol.com/",
- "companyId": "getsitecontrol"
- },
- "getconversion": {
- "name": "GetConversion",
- "categoryId": 2,
- "url": "http://www.getconversion.net/",
- "companyId": "getconversion"
- },
- "getglue": {
- "name": "GetGlue",
- "categoryId": 0,
- "url": "http://getglue.com",
- "companyId": "telfie"
- },
- "getintent": {
- "name": "GetIntent",
- "categoryId": 4,
- "url": "http://www.getintent.com/",
- "companyId": "getintent"
- },
- "getkudos": {
- "name": "GetKudos",
- "categoryId": 1,
- "url": "https://www.getkudos.me/",
- "companyId": "zendesk"
- },
- "getmyad": {
- "name": "GetMyAd",
- "categoryId": 4,
- "url": "http://yottos.com",
- "companyId": "yottos"
- },
- "getsatisfaction": {
- "name": "GetSatisfaction",
- "categoryId": 1,
- "url": "http://getsatisfaction.com/",
- "companyId": "get_satisfaction"
- },
- "gettyimages": {
- "name": "Getty Images",
- "categoryId": 8,
- "url": "https://www.gettyimages.com/",
- "companyId": null
- },
- "gfk": {
- "name": "GfK",
- "categoryId": 4,
- "url": "http://nurago.com/",
- "companyId": "gfk_nurago"
- },
- "gfycat.com": {
- "name": "gfycat",
- "categoryId": 7,
- "url": "https://gfycat.com/",
- "companyId": null
- },
- "giant_realm": {
- "name": "Giant Realm",
- "categoryId": 4,
- "url": "http://corp.giantrealm.com/",
- "companyId": "giant_realm"
- },
- "giantmedia": {
- "name": "GiantMedia",
- "categoryId": 4,
- "url": "http://giantmedia.com/",
- "companyId": "adknowledge"
- },
- "giga": {
- "name": "Giga",
- "categoryId": 4,
- "url": "https://gigaonclick.com",
- "companyId": "giga"
- },
- "gigya": {
- "name": "Gigya",
- "categoryId": 6,
- "url": "https://www.sap.com/index.html",
- "companyId": "sap"
- },
- "gigya_beacon": {
- "name": "Gigya Beacon",
- "categoryId": 2,
- "url": "http://www.gigya.com",
- "companyId": "sap"
- },
- "gigya_socialize": {
- "name": "Gigya Socialize",
- "categoryId": 2,
- "url": "http://www.gigya.com",
- "companyId": "sap"
- },
- "gigya_toolbar": {
- "name": "Gigya Toolbar",
- "categoryId": 2,
- "url": "http://www.gigya.com/",
- "companyId": "sap"
- },
- "giosg": {
- "name": "Giosg",
- "categoryId": 6,
- "url": "https://www.giosg.com/",
- "companyId": "giosg"
- },
- "giphy.com": {
- "name": "Giphy",
- "categoryId": 7,
- "url": "https://giphy.com/",
- "companyId": null
- },
- "giraff.io": {
- "name": "Giraff.io",
- "categoryId": 4,
- "url": "https://www.giraff.io/",
- "companyId": null
- },
- "github": {
- "name": "GitHub, Inc.",
- "categoryId": 2,
- "url": "https://github.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "github_apps": {
- "name": "GitHub Apps",
- "categoryId": 2,
- "url": "https://github.com/",
- "companyId": "github"
- },
- "github_pages": {
- "name": "Github Pages",
- "categoryId": 10,
- "url": "https://pages.github.com/",
- "companyId": "github"
- },
- "gittigidiyor_affiliate_program": {
- "name": "GittiGidiyor Affiliate Program",
- "categoryId": 4,
- "url": "http://www.ebay.com/",
- "companyId": "ebay"
- },
- "gittip": {
- "name": "Gittip",
- "categoryId": 2,
- "url": "https://www.gittip.com/",
- "companyId": "gittip"
- },
- "glad_cube": {
- "name": "Glad Cube",
- "categoryId": 6,
- "url": "http://www.glad-cube.com/",
- "companyId": "glad_cube_inc."
- },
- "glganltcs.space": {
- "name": "glganltcs.space",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "global_web_index": {
- "name": "GlobalWebIndex",
- "categoryId": 6,
- "url": "https://www.globalwebindex.com/",
- "companyId": "global_web_index"
- },
- "globalnotifier.com": {
- "name": "globalnotifier.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "globalsign": {
- "name": "GlobalSign",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "globaltakeoff": {
- "name": "GlobalTakeoff",
- "categoryId": 4,
- "url": "http://www.globaltakeoff.net/",
- "companyId": "globaltakeoff"
- },
- "glomex.com": {
- "name": "Glomex",
- "categoryId": 0,
- "url": "https://www.glomex.com/",
- "companyId": "glomex"
- },
- "glotgrx.com": {
- "name": "glotgrx.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "gm_delivery": {
- "name": "GM Delivery",
- "categoryId": 4,
- "url": "http://a.gmdelivery.com/",
- "companyId": "gm_delivery"
- },
- "gmail": {
- "name": "Gmail",
- "categoryId": 13,
- "url": "https://mail.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "gmo": {
- "name": "GMO",
- "categoryId": 4,
- "url": "https://www.gmo.media/",
- "companyId": "gmo_media"
- },
- "gmx_net": {
- "name": "gmx.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "go.com": {
- "name": "go.com",
- "categoryId": 8,
- "url": "go.com",
- "companyId": "disney"
- },
- "godaddy_affiliate_program": {
- "name": "GoDaddy Affiliate Program",
- "categoryId": 4,
- "url": "http://www.godaddy.com/",
- "companyId": "godaddy"
- },
- "godaddy_site_analytics": {
- "name": "GoDaddy Site Analytics",
- "categoryId": 6,
- "url": "https://www.godaddy.com/gdshop/hosting/stats_",
- "companyId": "godaddy"
- },
- "godaddy_site_seal": {
- "name": "GoDaddy Site Seal",
- "categoryId": 5,
- "url": "http://www.godaddy.com/",
- "companyId": "godaddy"
- },
- "godatafeed": {
- "name": "GoDataFeed",
- "categoryId": 6,
- "url": "http://www.godatafeed.com",
- "companyId": "godatafeed"
- },
- "goingup": {
- "name": "GoingUp",
- "categoryId": 6,
- "url": "http://www.goingup.com/",
- "companyId": "goingup"
- },
- "gomez": {
- "name": "Gomez",
- "categoryId": 6,
- "url": "http://www.gomez.com/",
- "companyId": "dynatrace"
- },
- "goodadvert": {
- "name": "GoodADVERT",
- "categoryId": 4,
- "url": "http://goodadvert.ru/",
- "companyId": "goodadvert"
- },
- "google": {
- "name": "Google",
- "categoryId": 4,
- "url": "https://www.google.com/",
- "companyId": "google"
- },
- "google_ads_measurement": {
- "name": "Google Ads Measurement",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_adsense": {
- "name": "Google Adsense",
- "categoryId": 4,
- "url": "https://www.google.com/adsense/",
- "companyId": "google"
- },
- "google_adservices": {
- "name": "Google AdServices",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_adwords_conversion": {
- "name": "Google AdWords Conversion",
- "categoryId": 4,
- "url": "https://adwords.google.com/",
- "companyId": "google"
- },
- "google_adwords_user_lists": {
- "name": "Google Adwords User Lists",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_analytics": {
- "name": "Google Analytics",
- "categoryId": 6,
- "url": "http://www.google.com/analytics/",
- "companyId": "google"
- },
- "google_appspot": {
- "name": "Google Appspot",
- "categoryId": 10,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_auth": {
- "name": "Google Auth",
- "categoryId": 2,
- "url": "https://myaccount.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_beacons": {
- "name": "Google Beacons",
- "categoryId": 6,
- "url": "https://google.xyz",
- "companyId": "google"
- },
- "google_chat": {
- "name": "Google Chat",
- "categoryId": 7,
- "url": "https://mail.google.com/chat/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_cloud_platform": {
- "name": "Google Cloud Platform",
- "categoryId": 10,
- "url": "https://cloud.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_cloud_storage": {
- "name": "Google Cloud Storage",
- "categoryId": 10,
- "url": "https://cloud.google.com/storage/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_custom_search": {
- "name": "Google Custom Search Ads",
- "categoryId": 4,
- "url": "https://developers.google.com/custom-search-ads/",
- "companyId": "google"
- },
- "google_custom_search_engine": {
- "name": "Google Programmable Search Engine",
- "categoryId": 5,
- "url": "https://programmablesearchengine.google.com/about/",
- "companyId": "google"
- },
- "google_dns": {
- "name": "Google DNS",
- "categoryId": 10,
- "url": "https://dns.google/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_domains": {
- "name": "Google Domains",
- "categoryId": 10,
- "url": "https://domains.google/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_edge": {
- "name": "Google Edge CDN",
- "categoryId": 9,
- "url": "https://peering.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_email": {
- "name": "Google Email",
- "categoryId": 13,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_fonts": {
- "name": "Google Fonts",
- "categoryId": 9,
- "url": "https://fonts.google.com/",
- "companyId": "google"
- },
- "google_hosted": {
- "name": "Google Hosted",
- "categoryId": 10,
- "url": "https://workspace.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_ima": {
- "name": "Google IMA",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_location": {
- "name": "Google Location",
- "categoryId": 8,
- "url": "https://patents.google.com/patent/WO2007025143A1/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_maps": {
- "name": "Google Maps",
- "categoryId": 2,
- "url": "https://www.google.com/maps/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_marketing": {
- "name": "Google Marketing",
- "categoryId": 4,
- "url": "https://marketingplatform.google.com/about/enterprise",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_meet": {
- "name": "Google Meet",
- "categoryId": 2,
- "url": "https://meet.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_photos": {
- "name": "Google Photos",
- "categoryId": 9,
- "url": "https://photos.google.com/",
- "companyId": "google"
- },
- "google_pingback": {
- "name": "Google Pingback",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_play": {
- "name": "Google Play",
- "categoryId": 8,
- "url": "https://play.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_plus": {
- "name": "Google+ Platform",
- "categoryId": 7,
- "url": "http://www.google.com/+1/button/",
- "companyId": "google"
- },
- "google_publisher_tags": {
- "name": "Google Publisher Tags",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_remarketing": {
- "name": "Google Dynamic Remarketing",
- "categoryId": 4,
- "url": "http://adwords.google.com/",
- "companyId": "google"
- },
- "google_safeframe": {
- "name": "Google Safeframe",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_servers": {
- "name": "Google Servers",
- "categoryId": 8,
- "url": "https://support.google.com/faqs/answer/174717?hl=en",
- "companyId": "google"
- },
- "google_shopping_reviews": {
- "name": "Google Shopping Reviews",
- "categoryId": 2,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_syndication": {
- "name": "Google Syndication",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_tag_manager": {
- "name": "Google Tag Manager",
- "categoryId": 5,
- "url": "https://marketingplatform.google.com/about/tag-manager/",
- "companyId": "google"
- },
- "google_translate": {
- "name": "Google Translate",
- "categoryId": 2,
- "url": "https://translate.google.com/manager",
- "companyId": "google"
- },
- "google_travel_adds": {
- "name": "Google Travel Adds",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_trust_services": {
- "name": "Google Trust Services",
- "categoryId": 5,
- "url": "https://pki.goog/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_trusted_stores": {
- "name": "Google Trusted Stores",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_users": {
- "name": "Google User Content",
- "categoryId": 9,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_voice": {
- "name": "Google Voice",
- "categoryId": 2,
- "url": "https://voice.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_website_optimizer": {
- "name": "Google Website Optimizer",
- "categoryId": 6,
- "url": "https://www.google.com/analytics/siteopt/prev",
- "companyId": "google"
- },
- "google_widgets": {
- "name": "Google Widgets",
- "categoryId": 2,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_workspace": {
- "name": "Google Workspace",
- "categoryId": 2,
- "url": "https://workspace.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "googleapis.com": {
- "name": "Google APIs",
- "categoryId": 9,
- "url": "https://www.googleapis.com/",
- "companyId": "google"
- },
- "goooal": {
- "name": "Goooal",
- "categoryId": 6,
- "url": "http://mailchimp.com/",
- "companyId": "mailchimp"
- },
- "gorilla_nation": {
- "name": "Gorilla Nation",
- "categoryId": 4,
- "url": "http://www.gorillanationmedia.com",
- "companyId": "gorilla_nation_media"
- },
- "gosquared": {
- "name": "GoSquared",
- "categoryId": 6,
- "url": "http://www.gosquared.com/livestats/",
- "companyId": "gosquared"
- },
- "gostats": {
- "name": "GoStats",
- "categoryId": 6,
- "url": "http://gostats.com/",
- "companyId": "gostats"
- },
- "govmetric": {
- "name": "GovMetric",
- "categoryId": 6,
- "url": "http://www.govmetric.com/",
- "companyId": "govmetric"
- },
- "grabo_affiliate": {
- "name": "Grabo Affiliate",
- "categoryId": 4,
- "url": "http://grabo.bg/",
- "companyId": "grabo_media"
- },
- "grandslammedia": {
- "name": "GrandSlamMedia",
- "categoryId": 4,
- "url": "http://www.grandslammedia.com/",
- "companyId": "grand_slam_media"
- },
- "granify": {
- "name": "Granify",
- "categoryId": 6,
- "url": "http://granify.com/",
- "companyId": "granify"
- },
- "grapeshot": {
- "name": "Grapeshot",
- "categoryId": 4,
- "url": "https://www.grapeshot.com/",
- "companyId": "oracle"
- },
- "graph_comment": {
- "name": "Graph Comment",
- "categoryId": 5,
- "url": "https://graphcomment.com/en/",
- "companyId": "graph_comment"
- },
- "gravatar": {
- "name": "Gravatar",
- "categoryId": 7,
- "url": "http://en.gravatar.com/",
- "companyId": "automattic"
- },
- "gravitec": {
- "name": "Gravitec",
- "categoryId": 6,
- "url": "https://gravitec.net/",
- "companyId": "gravitec"
- },
- "gravity_insights": {
- "name": "Gravity Insights",
- "categoryId": 6,
- "url": "http://www.gravity.com/",
- "companyId": "verizon"
- },
- "greatviews.de": {
- "name": "GreatViews",
- "categoryId": 4,
- "url": "http://greatviews.de/",
- "companyId": "parship"
- },
- "green_and_red": {
- "name": "Green and Red",
- "categoryId": 4,
- "url": "http://www.green-red.com/",
- "companyId": "green_&_red_technologies"
- },
- "green_certified_site": {
- "name": "Green Certified Site",
- "categoryId": 2,
- "url": "http://www.advenity.com/",
- "companyId": "advenity"
- },
- "green_story": {
- "name": "Green Story",
- "categoryId": 6,
- "url": "https://greenstory.ca/",
- "companyId": "green_story"
- },
- "greentube.com": {
- "name": "Greentube Internet Entertainment Solutions",
- "categoryId": 7,
- "url": "https://www.greentube.com/",
- "companyId": null
- },
- "greystripe": {
- "name": "Greystripe",
- "categoryId": 4,
- "url": "http://www.greystripe.com/",
- "companyId": "conversant"
- },
- "groove": {
- "name": "Groove",
- "categoryId": 2,
- "url": "http://www.groovehq.com/",
- "companyId": "groove_networks"
- },
- "groovinads": {
- "name": "GroovinAds",
- "categoryId": 4,
- "url": "http://www.groovinads.com/en",
- "companyId": "groovinads"
- },
- "groundtruth": {
- "name": "GroundTruth",
- "categoryId": 4,
- "url": "http://www.groundtruth.com/",
- "companyId": "groundtruth"
- },
- "groupm_server": {
- "name": "GroupM Server",
- "categoryId": 4,
- "url": "http://www.groupm.com/",
- "companyId": "wpp"
- },
- "gsi_media": {
- "name": "GSI Media",
- "categoryId": 4,
- "url": "http://gsimedia.net",
- "companyId": "gsi_media_network"
- },
- "gstatic": {
- "name": "Google Static",
- "categoryId": 9,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "gtop": {
- "name": "GTop",
- "categoryId": 6,
- "url": "http://www.gtopstats.com",
- "companyId": "gtopstats"
- },
- "gugaboo": {
- "name": "Gugaboo",
- "categoryId": 4,
- "url": "https://www.gubagoo.com/",
- "companyId": "gubagoo"
- },
- "guj.de": {
- "name": "Gruner + Jahr",
- "categoryId": 4,
- "url": "https://www.guj.de/",
- "companyId": "gruner_jahr_ag"
- },
- "gujems": {
- "name": "G+J e|MS",
- "categoryId": 4,
- "url": "http://www.gujmedia.de/",
- "companyId": "gruner_jahr_ag"
- },
- "gumgum": {
- "name": "gumgum",
- "categoryId": 4,
- "url": "http://gumgum.com/",
- "companyId": "gumgum"
- },
- "gumroad": {
- "name": "Gumroad",
- "categoryId": 7,
- "url": "https://gumroad.com/",
- "companyId": "gumroad"
- },
- "gunggo": {
- "name": "Gunggo",
- "categoryId": 4,
- "url": "http://www.gunggo.com/",
- "companyId": "gunggo"
- },
- "h12_ads": {
- "name": "H12 Ads",
- "categoryId": 4,
- "url": "http://www.h12-media.com/",
- "companyId": "h12_media_ads"
- },
- "hacker_news_button": {
- "name": "Hacker News Button",
- "categoryId": 7,
- "url": "http://news.ycombinator.com/",
- "companyId": "hacker_news"
- },
- "haendlerbund.de": {
- "name": "Händlerbund",
- "categoryId": 2,
- "url": "https://www.haendlerbund.de/en",
- "companyId": null
- },
- "halogen_network": {
- "name": "Halogen Network",
- "categoryId": 7,
- "url": "http://www.halogennetwork.com/",
- "companyId": "social_chorus"
- },
- "happy_fox_chat": {
- "name": "Happy Fox Chat",
- "categoryId": 2,
- "url": "https://happyfoxchat.com/",
- "companyId": "happy_fox_chat"
- },
- "harren_media": {
- "name": "Harren Media",
- "categoryId": 4,
- "url": "http://www.harrenmedia.com/index.html",
- "companyId": "harren_media"
- },
- "hatchbuck": {
- "name": "Hatchbuck",
- "categoryId": 6,
- "url": "http://www.hatchbuck.com/",
- "companyId": "hatchbuck"
- },
- "head_hunter": {
- "name": "Head Hunter",
- "categoryId": 6,
- "url": "https://hh.ru/",
- "companyId": "head_hunter"
- },
- "healte.de": {
- "name": "healte.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "heap": {
- "name": "Heap",
- "categoryId": 6,
- "url": "https://heapanalytics.com/",
- "companyId": "heap"
- },
- "heatmap": {
- "name": "Heatmap",
- "categoryId": 6,
- "url": "https://heatmap.me/",
- "companyId": "heatmap"
- },
- "heimspiel": {
- "name": "HEIM:SPIEL Medien GmbH",
- "categoryId": 8,
- "url": "http://www.heimspiel.de",
- "companyId": null
- },
- "hello_bar": {
- "name": "Hello Bar",
- "categoryId": 7,
- "url": "https://www.hellobar.com/",
- "companyId": "crazy_egg"
- },
- "hellosociety": {
- "name": "HelloSociety",
- "categoryId": 6,
- "url": "http://hellosociety.com",
- "companyId": "hellosociety"
- },
- "here": {
- "name": "HERE",
- "categoryId": 8,
- "url": "https://www.here.com/",
- "companyId": null
- },
- "heroku": {
- "name": "Heroku",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "heureka-widget": {
- "name": "Heureka-Widget",
- "categoryId": 4,
- "url": "https://www.heurekashopping.cz/",
- "companyId": "heureka"
- },
- "heybubble": {
- "name": "HeyBubble",
- "categoryId": 2,
- "url": "https://www.heybubble.com/",
- "companyId": "heybubble"
- },
- "heyos": {
- "name": "Heyos",
- "categoryId": 4,
- "url": "http://www.heyos.com/",
- "companyId": "heyos"
- },
- "hi-media_performance": {
- "name": "Hi-Media Performance",
- "categoryId": 4,
- "url": "http://www.hi-mediaperformance.co.uk/",
- "companyId": "hi-media_performance"
- },
- "hiconversion": {
- "name": "HiConversion",
- "categoryId": 4,
- "url": "http://www.hiconversion.com",
- "companyId": "hiconversion"
- },
- "highwebmedia.com": {
- "name": "highwebmedia.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "highwinds": {
- "name": "Highwinds",
- "categoryId": 6,
- "url": "https://www.highwinds.com/",
- "companyId": "highwinds"
- },
- "hiiir": {
- "name": "Hiiir",
- "categoryId": 4,
- "url": "http://adpower.hiiir.com/",
- "companyId": "hiiir"
- },
- "hiro": {
- "name": "HIRO",
- "categoryId": 4,
- "url": "http://www.hiro-media.com/",
- "companyId": "hiro_media"
- },
- "histats": {
- "name": "Histats",
- "categoryId": 4,
- "url": "http://www.histats.com/",
- "companyId": "histats"
- },
- "hit-parade": {
- "name": "Hit-Parade",
- "categoryId": 4,
- "url": "http://www.hit-parade.com/",
- "companyId": "hit-parade"
- },
- "hit.ua": {
- "name": "HIT.UA",
- "categoryId": 4,
- "url": "http://hit.ua/",
- "companyId": "hit.ua"
- },
- "hitslink": {
- "name": "HitsLink",
- "categoryId": 4,
- "url": "http://www.hitslink.com/",
- "companyId": "net_applications"
- },
- "hitsniffer": {
- "name": "HitSniffer",
- "categoryId": 4,
- "url": "http://hitsniffer.com/",
- "companyId": "hit_sniffer"
- },
- "hittail": {
- "name": "HitTail",
- "categoryId": 4,
- "url": "http://www.hittail.com/",
- "companyId": "hittail"
- },
- "hivedx.com": {
- "name": "hiveDX",
- "categoryId": 4,
- "url": "https://www.hivedx.com/",
- "companyId": null
- },
- "hiveworks": {
- "name": "Hive Networks",
- "categoryId": 4,
- "url": "https://hiveworkscomics.com/",
- "companyId": "hive_works"
- },
- "hockeyapp": {
- "name": "HockeyApp",
- "categoryId": 101,
- "url": "https://hockeyapp.net/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "hoholikik.club": {
- "name": "hoholikik.club",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "hola_player": {
- "name": "Hola Player",
- "categoryId": 0,
- "url": "https://holacdn.com/",
- "companyId": "hola_cdn"
- },
- "homeaway": {
- "name": "HomeAway",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "honeybadger": {
- "name": "Honeybadger",
- "categoryId": 6,
- "url": "https://www.honeybadger.io/",
- "companyId": "honeybadger"
- },
- "hooklogic": {
- "name": "HookLogic",
- "categoryId": 4,
- "url": "http://hooklogic.com/",
- "companyId": "criteo"
- },
- "hop-cube": {
- "name": "Hop-Cube",
- "categoryId": 4,
- "url": "http://www.hop-cube.com/",
- "companyId": "hop-cube"
- },
- "hotdogsandads.com": {
- "name": "hotdogsandads.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "hotjar": {
- "name": "Hotjar",
- "categoryId": 6,
- "url": "http://www.hotjar.com/",
- "companyId": "hotjar"
- },
- "hotkeys": {
- "name": "HotKeys",
- "categoryId": 4,
- "url": "http://www.demandmedia.com/",
- "companyId": "leaf_group"
- },
- "hotlog.ru": {
- "name": "HotLog",
- "categoryId": 4,
- "url": "https://hotlog.ru/",
- "companyId": "hotlog"
- },
- "hotwords": {
- "name": "HOTWords",
- "categoryId": 4,
- "url": "http://hotwords.com/",
- "companyId": "hotwords"
- },
- "howtank.com": {
- "name": "howtank",
- "categoryId": 7,
- "url": "https://www.howtank.com/",
- "companyId": null
- },
- "hqentertainmentnetwork.com": {
- "name": "HQ Entertainment Network",
- "categoryId": 4,
- "url": "https://hqentertainmentnetwork.com/",
- "companyId": null
- },
- "hsoub": {
- "name": "Hsoub",
- "categoryId": 4,
- "url": "http://www.hsoub.com/",
- "companyId": "hsoub"
- },
- "hstrck.com": {
- "name": "HEIM:SPIEL Medien GmbH",
- "categoryId": 8,
- "url": "https://www.heimspiel.de/",
- "companyId": null
- },
- "httpool": {
- "name": "HTTPool",
- "categoryId": 4,
- "url": "http://www.httpool.com/",
- "companyId": "httpool"
- },
- "hubrus": {
- "name": "HUBRUS",
- "categoryId": 4,
- "url": "http://www.hubrus.com/",
- "companyId": "hubrus"
- },
- "hubspot": {
- "name": "HubSpot",
- "categoryId": 6,
- "url": "http://www.hubspot.com/",
- "companyId": "hubspot"
- },
- "hubspot_forms": {
- "name": "HubSpot Forms",
- "categoryId": 2,
- "url": "http://www.hubspot.com",
- "companyId": "hubspot"
- },
- "hubvisor.io": {
- "name": "Hubvisor",
- "categoryId": 4,
- "url": "https://hubvisor.io/",
- "companyId": null
- },
- "hucksterbot": {
- "name": "HucksterBot",
- "categoryId": 4,
- "url": "http://hucksterbot.ru/",
- "companyId": "hucksterbot"
- },
- "hupso": {
- "name": "Hupso",
- "categoryId": 7,
- "url": "http://www.hupso.com/",
- "companyId": "hupso"
- },
- "hurra_tracker": {
- "name": "Hurra Tracker",
- "categoryId": 4,
- "url": "http://www.hurra.com/en/",
- "companyId": "hurra_communications"
- },
- "hybrid.ai": {
- "name": "Hybrid.ai",
- "categoryId": 4,
- "url": "https://hybrid.ai/",
- "companyId": "hybrid_adtech"
- },
- "hype_exchange": {
- "name": "Hype Exchange",
- "categoryId": 4,
- "url": "http://www.hypeexchange.com/",
- "companyId": "hype_exchange"
- },
- "hypercomments": {
- "name": "HyperComments",
- "categoryId": 1,
- "url": "http://www.hypercomments.com/",
- "companyId": "hypercomments"
- },
- "hyves_widgets": {
- "name": "Hyves Widgets",
- "categoryId": 4,
- "url": "http://www.hyves.nl/",
- "companyId": "hyves"
- },
- "hyvyd": {
- "name": "Hyvyd GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "i-behavior": {
- "name": "i-Behavior",
- "categoryId": 4,
- "url": "http://www.i-behavior.com/",
- "companyId": "kbm_group"
- },
- "i-mobile": {
- "name": "i-mobile",
- "categoryId": 4,
- "url": "https://www2.i-mobile.co.jp/en/index.aspx",
- "companyId": "i-mobile"
- },
- "i.ua": {
- "name": "i.ua",
- "categoryId": 4,
- "url": "http://www.i.ua/",
- "companyId": "i.ua"
- },
- "i10c.net": {
- "name": "i10c.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "i2i.jp": {
- "name": "i2i.jp",
- "categoryId": 6,
- "url": "http://www.i2i.jp/",
- "companyId": "i2i.jp"
- },
- "iab_consent": {
- "name": "IAB Consent",
- "categoryId": 5,
- "url": "https://iabtechlab.com/standards/gdpr-transparency-and-consent-framework/",
- "companyId": "iab"
- },
- "iadvize": {
- "name": "iAdvize",
- "categoryId": 2,
- "url": "http://www.iadvize.com/",
- "companyId": "iadvize"
- },
- "ibm_customer_experience": {
- "name": "IBM Digital Analytics",
- "categoryId": 6,
- "url": "http://www.coremetrics.com/",
- "companyId": "ibm"
- },
- "icerocket_tracker": {
- "name": "IceRocket Tracker",
- "categoryId": 7,
- "url": "http://tracker.icerocket.com/",
- "companyId": "meltwater_icerocket"
- },
- "icf_technology": {
- "name": "ICF Technology",
- "categoryId": 2,
- "url": "http://www.icftechnology.com/",
- "companyId": null
- },
- "iclick": {
- "name": "iClick",
- "categoryId": 4,
- "url": "http://optimix.asia/",
- "companyId": "iclick_interactive"
- },
- "icrossing": {
- "name": "iCrossing",
- "categoryId": 4,
- "url": "http://www.icrossing.com/",
- "companyId": "hearst"
- },
- "icstats": {
- "name": "ICStats",
- "categoryId": 6,
- "url": "http://www.icstats.nl/",
- "companyId": "icstats"
- },
- "icuazeczpeoohx.com": {
- "name": "icuazeczpeoohx.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "id-news.net": {
- "name": "Ippen Digital",
- "categoryId": 4,
- "url": "https://www.ippen-digital.de/",
- "companyId": null
- },
- "id5-sync": {
- "name": "ID5 Sync",
- "categoryId": 4,
- "url": "https://id5.io/",
- "companyId": "id5-sync",
- "source": "AdGuard"
- },
- "id_services": {
- "name": "ID Services",
- "categoryId": 6,
- "url": "https://id.services/",
- "companyId": "id_services"
- },
- "ideal_media": {
- "name": "Ideal Media",
- "categoryId": 4,
- "url": "http://idealmedia.com/",
- "companyId": "ideal_media"
- },
- "idealo_com": {
- "name": "idealo.com",
- "categoryId": 4,
- "url": "http://idealo.com/",
- "companyId": null
- },
- "identrust": {
- "name": "IdenTrust, Inc.",
- "categoryId": 5,
- "url": "https://identrust.com/",
- "companyId": "identrust",
- "source": "AdGuard"
- },
- "ideoclick": {
- "name": "IdeoClick",
- "categoryId": 4,
- "url": "http://ideoclick.com",
- "companyId": "ideoclick"
- },
- "idio": {
- "name": "Idio",
- "categoryId": 4,
- "url": "https://www.idio.ai/",
- "companyId": "idio"
- },
- "ie8eamus.com": {
- "name": "ie8eamus.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ientry": {
- "name": "iEntry",
- "categoryId": 4,
- "url": "http://www.ientry.com/",
- "companyId": "ientry"
- },
- "iflychat": {
- "name": "iFlyChat",
- "categoryId": 2,
- "url": "https://iflychat.com/",
- "companyId": "iflychat"
- },
- "ignitionone": {
- "name": "IgnitionOne",
- "categoryId": 6,
- "url": "https://www.ignitionone.com/",
- "companyId": "zeta"
- },
- "igodigital": {
- "name": "iGoDigital",
- "categoryId": 2,
- "url": "http://igodigital.com/",
- "companyId": "salesforce"
- },
- "ihs_markit": {
- "name": "IHS Markit",
- "categoryId": 6,
- "url": "https://ihsmarkit.com/index.html",
- "companyId": "ihs"
- },
- "ihs_markit_online_shopper_insigh": {
- "name": "IHS Markit Online Shopper Insigh",
- "categoryId": 6,
- "url": "http://www.visicogn.com/vcu.htm",
- "companyId": "ihs"
- },
- "ihvmcqojoj.com": {
- "name": "ihvmcqojoj.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "iias.eu": {
- "name": "Insight Image",
- "categoryId": 3,
- "url": "http://insightimage.com/",
- "companyId": null
- },
- "ijento": {
- "name": "iJento",
- "categoryId": 6,
- "url": "http://www.ijento.com/",
- "companyId": "ijento"
- },
- "imad": {
- "name": "imad",
- "categoryId": 4,
- "url": "http://www.imad.co.kr/",
- "companyId": "i'mad_republic"
- },
- "image_advantage": {
- "name": "Image Advantage",
- "categoryId": 4,
- "url": "http://www.worthathousandwords.com/",
- "companyId": "image_advantage"
- },
- "image_space_media": {
- "name": "Image Space Media",
- "categoryId": 4,
- "url": "http://www.imagespacemedia.com/",
- "companyId": "image_space_media"
- },
- "imgix.net": {
- "name": "ImgIX",
- "categoryId": 9,
- "url": "https://www.imgix.com/",
- "companyId": null
- },
- "imgur": {
- "name": "Imgur",
- "categoryId": 8,
- "url": "https://imgur.com/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "imho_vi": {
- "name": "imho vi",
- "categoryId": 4,
- "url": "http://www.imho.ru",
- "companyId": "imho"
- },
- "immanalytics": {
- "name": "Immanalytics",
- "categoryId": 2,
- "url": "https://www.roku.com/",
- "companyId": "roku"
- },
- "immobilienscout24_de": {
- "name": "immobilienscout24.de",
- "categoryId": 8,
- "url": "http://www.scout24.com/",
- "companyId": "scout24"
- },
- "imonomy": {
- "name": "imonomy",
- "categoryId": 6,
- "url": "http://imonomy.com/",
- "companyId": "imonomy"
- },
- "impact_radius": {
- "name": "Impact Radius",
- "categoryId": 5,
- "url": "http://www.impactradius.com/",
- "companyId": "impact_radius"
- },
- "impresiones_web": {
- "name": "Impresiones Web",
- "categoryId": 4,
- "url": "http://www.iw-advertising.com/",
- "companyId": "impresiones_web"
- },
- "improve_digital": {
- "name": "Improve Digital",
- "categoryId": 4,
- "url": "http://www.improvedigital.com/",
- "companyId": "improve_digital"
- },
- "improvely": {
- "name": "Improvely",
- "categoryId": 6,
- "url": "https://www.improvely.com/",
- "companyId": "awio_web_services"
- },
- "inbenta": {
- "name": "Inbenta",
- "categoryId": 6,
- "url": "https://www.inbenta.com/en/",
- "companyId": "inbenta"
- },
- "inboxsdk.com": {
- "name": "Inbox SDK",
- "categoryId": 8,
- "url": "https://www.inboxsdk.com/",
- "companyId": null
- },
- "indeed": {
- "name": "Indeed",
- "categoryId": 4,
- "url": "http://www.indeed.com/",
- "companyId": "indeed"
- },
- "index_exchange": {
- "name": "Index Exchange",
- "categoryId": 4,
- "url": "http://www.casalemedia.com/",
- "companyId": "index_exchange"
- },
- "indieclick": {
- "name": "IndieClick",
- "categoryId": 4,
- "url": "http://www.indieclick.com/",
- "companyId": "leaf_group"
- },
- "industry_brains": {
- "name": "Industry Brains",
- "categoryId": 4,
- "url": "http://www.industrybrains.com/",
- "companyId": "industrybrains"
- },
- "infectious_media": {
- "name": "Impression Desk",
- "categoryId": 4,
- "url": "https://impressiondesk.com/",
- "companyId": "infectious_media"
- },
- "infinite_analytics": {
- "name": "Infinite Analytics",
- "categoryId": 6,
- "url": "http://infiniteanalytics.com/products/",
- "companyId": "infinite_analytics"
- },
- "infinity_tracking": {
- "name": "Infinity Tracking",
- "categoryId": 6,
- "url": "http://www.infinity-tracking.com",
- "companyId": "infinity_tracking"
- },
- "influads": {
- "name": "InfluAds",
- "categoryId": 4,
- "url": "http://www.influads.com/",
- "companyId": "influads"
- },
- "infolinks": {
- "name": "InfoLinks",
- "categoryId": 4,
- "url": "http://www.infolinks.com/",
- "companyId": "infolinks"
- },
- "infonline": {
- "name": "INFOnline",
- "categoryId": 6,
- "url": "http://www.infonline.de/",
- "companyId": "infonline"
- },
- "informer_technologies": {
- "name": "Informer Technologies",
- "categoryId": 6,
- "url": "http://www.informer.com/",
- "companyId": "informer_technologies"
- },
- "infusionsoft": {
- "name": "Infusionsoft by Keap",
- "categoryId": 4,
- "url": "https://keap.com/",
- "companyId": "infusionsoft"
- },
- "innity": {
- "name": "Innity",
- "categoryId": 4,
- "url": "http://www.innity.com/",
- "companyId": "innity"
- },
- "innogames.de": {
- "name": "InnoGames",
- "categoryId": 8,
- "url": "https://www.innogames.com/",
- "companyId": null
- },
- "innovid": {
- "name": "Innovid",
- "categoryId": 4,
- "url": "https://www.innovid.com/",
- "companyId": "innovid"
- },
- "inside": {
- "name": "inside",
- "categoryId": 7,
- "url": "http://www.inside.tm/",
- "companyId": "powerfront"
- },
- "insider": {
- "name": "Insider",
- "categoryId": 6,
- "url": "http://useinsider.com/",
- "companyId": "insider"
- },
- "insightexpress": {
- "name": "InsightExpress",
- "categoryId": 6,
- "url": "https://www.millwardbrowndigital.com/",
- "companyId": "millward_brown"
- },
- "inskin_media": {
- "name": "InSkin Media",
- "categoryId": 4,
- "url": "http://www.inskinmedia.com/",
- "companyId": "inskin_media"
- },
- "inspectlet": {
- "name": "Inspectlet",
- "categoryId": 6,
- "url": "https://www.inspectlet.com/",
- "companyId": "inspectlet"
- },
- "inspsearchapi.com": {
- "name": "Infospace Search",
- "categoryId": 4,
- "url": "http://infospace.com/",
- "companyId": "system1"
- },
- "instagram_com": {
- "name": "Instagram",
- "categoryId": 8,
- "url": "https://www.facebook.com/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "instant_check_mate": {
- "name": "Instant Check Mate",
- "categoryId": 2,
- "url": "https://www.instantcheckmate.com/",
- "companyId": "instant_check_mate"
- },
- "instart_logic": {
- "name": "Instart Logic",
- "categoryId": 4,
- "url": "https://www.instartlogic.com/",
- "companyId": "instart_logic_inc"
- },
- "insticator": {
- "name": "Insticator",
- "categoryId": 4,
- "url": "https://www.insticator.com/landingpage",
- "companyId": "insticator"
- },
- "instinctive": {
- "name": "Instinctive",
- "categoryId": 4,
- "url": "https://instinctive.io/",
- "companyId": "instinctive"
- },
- "intango": {
- "name": "Intango",
- "categoryId": 4,
- "url": "https://intango.com/",
- "companyId": "intango"
- },
- "integral_ad_science": {
- "name": "Integral Ad Science",
- "categoryId": 4,
- "url": "https://integralads.com/",
- "companyId": "integral_ad_science"
- },
- "integral_marketing": {
- "name": "Integral Marketing",
- "categoryId": 4,
- "url": "http://integral-marketing.com/",
- "companyId": "integral_marketing"
- },
- "intelliad": {
- "name": "intelliAd",
- "categoryId": 6,
- "url": "http://www.intelliad.de/",
- "companyId": "intelliad"
- },
- "intelligencefocus": {
- "name": "IntelligenceFocus",
- "categoryId": 6,
- "url": "http://www.intelligencefocus.com",
- "companyId": "intelligencefocus"
- },
- "intelligent_reach": {
- "name": "Intelligent Reach",
- "categoryId": 4,
- "url": "http://www.intelligentreach.com/",
- "companyId": "intelligent_reach"
- },
- "intense_debate": {
- "name": "Intense Debate",
- "categoryId": 2,
- "url": "http://intensedebate.com/",
- "companyId": "automattic"
- },
- "intent_iq": {
- "name": "Intent IQ",
- "categoryId": 4,
- "url": "http://datonics.com/",
- "companyId": "almondnet"
- },
- "intent_media": {
- "name": "Intent",
- "categoryId": 4,
- "url": "https://intent.com/",
- "companyId": "intent_media"
- },
- "intercom": {
- "name": "Intercom",
- "categoryId": 2,
- "url": "http://intercom.io/",
- "companyId": "intercom"
- },
- "interedy.info": {
- "name": "interedy.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "intergi": {
- "name": "Intergi",
- "categoryId": 4,
- "url": "http://www.intergi.com/",
- "companyId": "intergi_entertainment"
- },
- "intermarkets.net": {
- "name": "Intermarkets",
- "categoryId": 4,
- "url": "http://intermarkets.net/",
- "companyId": "intermarkets"
- },
- "intermundo_media": {
- "name": "InterMundo Media",
- "categoryId": 4,
- "url": "http://intermundomedia.com/",
- "companyId": "intermundo_media"
- },
- "internet_billboard": {
- "name": "Internet BillBoard",
- "categoryId": 4,
- "url": "http://www.ibillboard.com/en/",
- "companyId": "internet_billboard"
- },
- "internetaudioads": {
- "name": "InternetAudioAds",
- "categoryId": 0,
- "url": "http://www.internetaudioads.com/",
- "companyId": "internetaudioads"
- },
- "internetbrands": {
- "name": "InternetBrands",
- "categoryId": 7,
- "url": "http://www.internetbrands.com/",
- "companyId": "internet_brands"
- },
- "interpolls": {
- "name": "Interpolls",
- "categoryId": 4,
- "url": "http://www.interpolls.com/",
- "companyId": "interpolls"
- },
- "interyield": {
- "name": "Interyield",
- "categoryId": 4,
- "url": "http://www.advertise.com/publisher-solutions/",
- "companyId": "advertise.com"
- },
- "intilery": {
- "name": "Intilery",
- "categoryId": 6,
- "url": "http://www.intilery.com",
- "companyId": "intilery"
- },
- "intimate_merger": {
- "name": "Intimate Merger",
- "categoryId": 6,
- "url": "https://corp.intimatemerger.com/",
- "companyId": "intimate_merger"
- },
- "investingchannel": {
- "name": "Investing Channel",
- "categoryId": 8,
- "url": "http://www.investingchannel.com/",
- "companyId": "investingchannel"
- },
- "inviziads": {
- "name": "InviziAds",
- "categoryId": 4,
- "url": "http://www.inviziads.com",
- "companyId": "inviziads"
- },
- "invoca": {
- "name": "Invoca",
- "categoryId": 4,
- "url": "http://www.invoca.com/",
- "companyId": "invoca"
- },
- "invodo": {
- "name": "Invodo",
- "categoryId": 6,
- "url": "http://www.invodo.com/",
- "companyId": "invodo"
- },
- "ionicframework.com": {
- "name": "Ionic",
- "categoryId": 8,
- "url": "https://ionicframework.com/",
- "companyId": null
- },
- "iotec": {
- "name": "iotec",
- "categoryId": 4,
- "url": "https://www.iotecglobal.com/",
- "companyId": "iotec"
- },
- "iovation": {
- "name": "iovation",
- "categoryId": 5,
- "url": "http://www.iovation.com/",
- "companyId": "iovation"
- },
- "ip-label": {
- "name": "ip-label",
- "categoryId": 6,
- "url": "http://www.ip-label.co.uk/",
- "companyId": "ip-label"
- },
- "ip_targeting": {
- "name": "IP Targeting",
- "categoryId": 6,
- "url": "https://www.iptargeting.com/",
- "companyId": "el_toro"
- },
- "ip_tracker": {
- "name": "IP Tracker",
- "categoryId": 6,
- "url": "http://www.ip-tracker.org/",
- "companyId": "ip_tracker"
- },
- "iperceptions": {
- "name": "iPerceptions",
- "categoryId": 2,
- "url": "http://www.iperceptions.com/",
- "companyId": "iperceptions"
- },
- "ipfingerprint": {
- "name": "IPFingerprint",
- "categoryId": 6,
- "url": "http://www.ipfingerprint.com/",
- "companyId": "ipfingerprint"
- },
- "ipg_mediabrands": {
- "name": "IPG Mediabrands",
- "categoryId": 4,
- "url": "https://www.ipgmediabrands.com/",
- "companyId": "ipg_mediabrands"
- },
- "ipify": {
- "name": "ipify",
- "categoryId": 8,
- "url": "https://www.ipify.org/",
- "companyId": null
- },
- "ipinfo": {
- "name": "Ipinfo",
- "categoryId": 2,
- "url": "https://ipinfo.io/",
- "companyId": "ipinfo.io"
- },
- "iplogger": {
- "name": "IPLogger",
- "categoryId": 6,
- "url": "http://iplogger.ru/",
- "companyId": "iplogger"
- },
- "iprom": {
- "name": "iprom",
- "categoryId": 4,
- "url": "http://www.iprom.si/",
- "companyId": "iprom"
- },
- "ipromote": {
- "name": "iPromote",
- "categoryId": 4,
- "url": "http://www.ipromote.com/",
- "companyId": "ipromote"
- },
- "iprospect": {
- "name": "iProspect",
- "categoryId": 4,
- "url": "http://www.iprospect.com/",
- "companyId": "dentsu_aegis_network"
- },
- "iqiyi": {
- "name": "iQiyi",
- "categoryId": 0,
- "url": "https://www.iqiyi.com/",
- "companyId": "iqiyi",
- "source": "AdGuard"
- },
- "ironsource": {
- "name": "ironSource Ltd.",
- "categoryId": 4,
- "url": "https://www.is.com",
- "companyId": "unity",
- "source": "AdGuard"
- },
- "isocket": {
- "name": "isocket",
- "categoryId": 4,
- "url": "http://www.isocket.com/",
- "companyId": "rubicon_project"
- },
- "isolarcloud": {
- "name": "iSolarCloud",
- "categoryId": 6,
- "url": "https://isolarcloud.com/",
- "companyId": "sungrow",
- "source": "AdGuard"
- },
- "ispot.tv": {
- "name": "iSpot.tv",
- "categoryId": 4,
- "url": "https://www.ispot.tv/",
- "companyId": null
- },
- "itineraire.info": {
- "name": "itineraire.info",
- "categoryId": 2,
- "url": "https://www.itineraire.info/",
- "companyId": null
- },
- "itunes_link_maker": {
- "name": "iTunes Link Maker",
- "categoryId": 4,
- "url": "https://www.apple.com/",
- "companyId": "apple"
- },
- "ity.im": {
- "name": "ity.im",
- "categoryId": 4,
- "url": "http://ity.im/",
- "companyId": "ity.im"
- },
- "iubenda.com": {
- "name": "iubenda",
- "categoryId": 5,
- "url": "https://www.iubenda.com/",
- "companyId": "iubenda"
- },
- "ivcbrasil.org.br": {
- "name": "IVC Brasil",
- "categoryId": 6,
- "url": "https://ivcbrasil.org.br/#/home",
- "companyId": null
- },
- "ividence": {
- "name": "Ividence",
- "categoryId": 4,
- "url": "https://www.ividence.com/home/",
- "companyId": "sien"
- },
- "iwiw_widgets": {
- "name": "iWiW Widgets",
- "categoryId": 2,
- "url": "http://iwiw.hu",
- "companyId": "iwiw"
- },
- "ixi_digital": {
- "name": "IXI Digital",
- "categoryId": 4,
- "url": "http://www.equifax.com/home/en_us",
- "companyId": "equifax"
- },
- "ixquick.com": {
- "name": "ixquick",
- "categoryId": 8,
- "url": "https://www.ixquick.com/",
- "companyId": "startpage"
- },
- "izooto": {
- "name": "iZooto",
- "categoryId": 6,
- "url": "https://www.izooto.com/",
- "companyId": "izooto"
- },
- "j-list_affiliate_program": {
- "name": "J-List Affiliate Program",
- "categoryId": 4,
- "url": "http://www.jlist.com/page/affiliates.html",
- "companyId": "j-list"
- },
- "jaco": {
- "name": "Jaco",
- "categoryId": 6,
- "url": "https://www.walkme.com/",
- "companyId": "walkme"
- },
- "janrain": {
- "name": "Janrain",
- "categoryId": 6,
- "url": "http://www.janrain.com/",
- "companyId": "akamai"
- },
- "jeeng": {
- "name": "Jeeng",
- "categoryId": 4,
- "url": "https://jeeng.com/",
- "companyId": "jeeng"
- },
- "jeeng_widgets": {
- "name": "Jeeng Widgets",
- "categoryId": 4,
- "url": "https://jeeng.com/",
- "companyId": "jeeng"
- },
- "jet_interactive": {
- "name": "Jet Interactive",
- "categoryId": 6,
- "url": "http://www.jetinteractive.com.au/",
- "companyId": "jet_interactive"
- },
- "jetbrains": {
- "name": "JetBrains",
- "categoryId": 8,
- "url": "https://www.jetbrains.com/",
- "companyId": "jetbrains",
- "source": "AdGuard"
- },
- "jetlore": {
- "name": "Jetlore",
- "categoryId": 6,
- "url": "http://www.jetlore.com/",
- "companyId": "jetlore"
- },
- "jetpack": {
- "name": "Jetpack",
- "categoryId": 6,
- "url": "https://jetpack.com/",
- "companyId": "automattic"
- },
- "jetpack_digital": {
- "name": "Jetpack Digital",
- "categoryId": 6,
- "url": "http://www.jetpack.com/",
- "companyId": "jetpack_digital"
- },
- "jimdo.com": {
- "name": "jimdo.com",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "jink": {
- "name": "Jink",
- "categoryId": 4,
- "url": "http://www.jink.de/",
- "companyId": "jink"
- },
- "jirafe": {
- "name": "Jirafe",
- "categoryId": 6,
- "url": "http://jirafe.com/",
- "companyId": "jirafe"
- },
- "jivochat": {
- "name": "JivoSite",
- "categoryId": 2,
- "url": "https://www.jivochat.com/",
- "companyId": "jivochat"
- },
- "jivox": {
- "name": "Jivox",
- "categoryId": 4,
- "url": "http://www.jivox.com/",
- "companyId": "jivox"
- },
- "jobs_2_careers": {
- "name": "Jobs 2 Careers",
- "categoryId": 4,
- "url": "http://www.jobs2careers.com/",
- "companyId": "jobs_2_careers"
- },
- "joinhoney": {
- "name": "Honey",
- "categoryId": 8,
- "url": "https://www.joinhoney.com/",
- "companyId": null
- },
- "jornaya": {
- "name": "Jornaya",
- "categoryId": 6,
- "url": "http://leadid.com/",
- "companyId": "jornaya"
- },
- "jquery": {
- "name": "jQuery",
- "categoryId": 9,
- "url": "https://jquery.org/",
- "companyId": "js_foundation"
- },
- "js_communications": {
- "name": "JS Communications",
- "categoryId": 4,
- "url": "http://www.jssearch.net/",
- "companyId": "js_communications"
- },
- "jsdelivr": {
- "name": "jsDelivr",
- "categoryId": 9,
- "url": "https://www.jsdelivr.com/",
- "companyId": null
- },
- "jse_coin": {
- "name": "JSE Coin",
- "categoryId": 4,
- "url": "https://jsecoin.com/",
- "companyId": "jse_coin"
- },
- "jsuol.com.br": {
- "name": "jsuol.com.br",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "juggcash": {
- "name": "JuggCash",
- "categoryId": 3,
- "url": "http://www.juggcash.com",
- "companyId": "juggcash"
- },
- "juiceadv": {
- "name": "JuiceADV",
- "categoryId": 4,
- "url": "http://juiceadv.com/",
- "companyId": "juiceadv"
- },
- "juicyads": {
- "name": "JuicyAds",
- "categoryId": 3,
- "url": "http://www.juicyads.com/",
- "companyId": "juicyads"
- },
- "jumplead": {
- "name": "Jumplead",
- "categoryId": 6,
- "url": "https://jumplead.com/",
- "companyId": "jumplead"
- },
- "jumpstart_tagging_solutions": {
- "name": "Jumpstart Tagging Solutions",
- "categoryId": 6,
- "url": "http://www.hearst.com/",
- "companyId": "hearst"
- },
- "jumptap": {
- "name": "Jumptap",
- "categoryId": 4,
- "url": "http://www.jumptap.com/",
- "companyId": "verizon"
- },
- "jumptime": {
- "name": "JumpTime",
- "categoryId": 6,
- "url": "http://www.jumptime.com/",
- "companyId": "openx"
- },
- "just_answer": {
- "name": "Just Answer",
- "categoryId": 2,
- "url": "https://www.justanswer.com/",
- "companyId": "just_answer"
- },
- "just_premium": {
- "name": "Just Premium",
- "categoryId": 4,
- "url": "http://justpremium.com/",
- "companyId": "just_premium"
- },
- "just_relevant": {
- "name": "Just Relevant",
- "categoryId": 4,
- "url": "http://www.justrelevant.com/",
- "companyId": "just_relevant"
- },
- "jvc.gg": {
- "name": "Jeuxvideo CDN",
- "categoryId": 9,
- "url": "http://www.jeuxvideo.com/",
- "companyId": null
- },
- "jw_player": {
- "name": "JW Player",
- "categoryId": 0,
- "url": "https://www.jwplayer.com/",
- "companyId": "jw_player"
- },
- "jw_player_ad_solutions": {
- "name": "JW Player Ad Solutions",
- "categoryId": 4,
- "url": "http://www.longtailvideo.com/adsolution/",
- "companyId": "jw_player"
- },
- "kaeufersiegel.de": {
- "name": "Käufersiegel",
- "categoryId": 2,
- "url": "https://www.kaeufersiegel.de/",
- "companyId": null
- },
- "kairion.de": {
- "name": "kairion",
- "categoryId": 4,
- "url": "https://kairion.de/",
- "companyId": "prosieben_sat1"
- },
- "kaloo.ga": {
- "name": "Kalooga",
- "categoryId": 4,
- "url": "https://www.kalooga.com/",
- "companyId": "kalooga"
- },
- "kalooga_widget": {
- "name": "Kalooga Widget",
- "categoryId": 4,
- "url": "http://kalooga.com/",
- "companyId": "kalooga"
- },
- "kaltura": {
- "name": "Kaltura",
- "categoryId": 0,
- "url": "http://corp.kaltura.com/",
- "companyId": "kaltura"
- },
- "kameleoon": {
- "name": "Kameleoon",
- "categoryId": 6,
- "url": "http://www.kameleoon.com/",
- "companyId": "kameleoon"
- },
- "kampyle": {
- "name": "Medallia",
- "categoryId": 2,
- "url": "http://www.kampyle.com/",
- "companyId": "medallia"
- },
- "kanoodle": {
- "name": "Kanoodle",
- "categoryId": 4,
- "url": "http://www.kanoodle.com/",
- "companyId": "kanoodle"
- },
- "kantar_media": {
- "name": "Kantar Media",
- "categoryId": 4,
- "url": "https://www.kantarmedia.com/",
- "companyId": "wpp"
- },
- "karambasecurity": {
- "name": "Karamba Security",
- "categoryId": 8,
- "url": "https://karambasecurity.com/",
- "companyId": "karambasecurity",
- "source": "AdGuard"
- },
- "kargo": {
- "name": "Kargo",
- "categoryId": 4,
- "url": "http://www.kargo.com/",
- "companyId": "kargo"
- },
- "kaspersky-labs.com": {
- "name": "Kaspersky Labs",
- "categoryId": 12,
- "url": "https://www.kaspersky.com/",
- "companyId": "AO Kaspersky Lab"
- },
- "kataweb.it": {
- "name": "KataWeb",
- "categoryId": 4,
- "url": "http://www.kataweb.it/",
- "companyId": null
- },
- "katchup": {
- "name": "Katchup",
- "categoryId": 4,
- "url": "http://www.katchup.fr/",
- "companyId": "katchup"
- },
- "kauli": {
- "name": "Kauli",
- "categoryId": 4,
- "url": "http://kau.li/",
- "companyId": "kauli"
- },
- "kavanga": {
- "name": "Kavanga",
- "categoryId": 4,
- "url": "http://kavanga.ru/",
- "companyId": "kavanga"
- },
- "kayo_sports": {
- "name": "Kayo Sports",
- "categoryId": 0,
- "url": "https://kayosports.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "keen_io": {
- "name": "Keen IO",
- "categoryId": 6,
- "url": "https://keen.io",
- "companyId": "keen_io"
- },
- "kelkoo": {
- "name": "Kelkoo",
- "categoryId": 4,
- "url": "http://www.kelkoo.com/",
- "companyId": "kelkoo"
- },
- "kenshoo": {
- "name": "Kenshoo",
- "categoryId": 6,
- "url": "http://www.kenshoo.com/",
- "companyId": "kenshoo"
- },
- "keymetric": {
- "name": "KeyMetric",
- "categoryId": 6,
- "url": "http://keymetric.net/",
- "companyId": "keymetric"
- },
- "keytiles": {
- "name": "Keytiles",
- "categoryId": 6,
- "url": "http://keytiles.com/",
- "companyId": "keytiles"
- },
- "keywee": {
- "name": "Keywee",
- "categoryId": 6,
- "url": "https://keywee.co/",
- "companyId": "keywee"
- },
- "keywordmax": {
- "name": "KeywordMax",
- "categoryId": 4,
- "url": "http://www.keywordmax.com/",
- "companyId": "digital_river"
- },
- "khoros": {
- "name": "Khoros",
- "categoryId": 7,
- "url": "http://www.massrelevance.com/",
- "companyId": "khoros"
- },
- "khzbeucrltin.com": {
- "name": "khzbeucrltin.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "kickfactory": {
- "name": "Kickfactory",
- "categoryId": 4,
- "url": "https://kickfactory.com/",
- "companyId": "kickfactory"
- },
- "kickfire": {
- "name": "Kickfire",
- "categoryId": 4,
- "url": "http://www.visistat.com/",
- "companyId": "kickfire"
- },
- "kik": {
- "name": "Kik",
- "categoryId": 7,
- "url": "https://kik.com/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "king.com": {
- "name": "King.com",
- "categoryId": 4,
- "url": "http://www.king.com/",
- "companyId": "king.com"
- },
- "king_com": {
- "name": "King.com",
- "categoryId": 8,
- "url": "https://king.com/",
- "companyId": "activision_blizzard"
- },
- "kinja.com": {
- "name": "Kinja",
- "categoryId": 6,
- "url": "https://kinja.com/",
- "companyId": "gizmodo"
- },
- "kiosked": {
- "name": "Kiosked",
- "categoryId": 4,
- "url": "http://www.kiosked.com/",
- "companyId": "kiosked"
- },
- "kissmetrics.com": {
- "name": "Kissmetrics",
- "categoryId": 6,
- "url": "https://www.kissmetrics.com/",
- "companyId": "kissmetrics"
- },
- "kitara_media": {
- "name": "Kitara Media",
- "categoryId": 4,
- "url": "http://www.kitaramedia.com/",
- "companyId": "kitara_media"
- },
- "kixer": {
- "name": "Kixer",
- "categoryId": 4,
- "url": "http://www.kixer.com",
- "companyId": "kixer"
- },
- "klarna.com": {
- "name": "Klarna",
- "categoryId": 2,
- "url": "https://www.klarna.com/",
- "companyId": null
- },
- "klaviyo": {
- "name": "Klaviyo",
- "categoryId": 6,
- "url": "https://www.klaviyo.com/",
- "companyId": "klaviyo"
- },
- "klikki": {
- "name": "Klikki",
- "categoryId": 4,
- "url": "http://www.klikki.com/",
- "companyId": "klikki"
- },
- "kliksaya": {
- "name": "KlikSaya",
- "categoryId": 4,
- "url": "http://www.kliksaya.com",
- "companyId": "kliksaya"
- },
- "kmeleo": {
- "name": "Kméléo",
- "categoryId": 4,
- "url": "http://www.6peo.com/",
- "companyId": "6peo"
- },
- "knoopstat": {
- "name": "Knoopstat",
- "categoryId": 6,
- "url": "http://www.knoopstat.nl",
- "companyId": "knoopstat"
- },
- "knotch": {
- "name": "Knotch",
- "categoryId": 2,
- "url": "http://knotch.it",
- "companyId": "knotch"
- },
- "komoona": {
- "name": "Komoona",
- "categoryId": 4,
- "url": "http://www.komoona.com/",
- "companyId": "komoona"
- },
- "kontera_contentlink": {
- "name": "Kontera ContentLink",
- "categoryId": 4,
- "url": "http://www.kontera.com/",
- "companyId": "singtel"
- },
- "kontextr": {
- "name": "Kontextr",
- "categoryId": 4,
- "url": "https://www.kontextr.com/",
- "companyId": "kontext"
- },
- "kontextua": {
- "name": "Kontextua",
- "categoryId": 4,
- "url": "http://www.kontextua.com/",
- "companyId": "kontextua"
- },
- "korrelate": {
- "name": "Korrelate",
- "categoryId": 4,
- "url": "http://korrelate.com/",
- "companyId": "korrelate"
- },
- "kortx": {
- "name": "Kortx",
- "categoryId": 6,
- "url": "http://www.kortx.io/",
- "companyId": "kortx"
- },
- "kount": {
- "name": "Kount",
- "categoryId": 6,
- "url": "https://kount.com/",
- "companyId": null
- },
- "krux_digital": {
- "name": "Salesforce DMP",
- "categoryId": 4,
- "url": "https://www.salesforce.com/products/marketing-cloud/data-management/?mc=DMP",
- "companyId": "salesforce"
- },
- "kupona": {
- "name": "Kupona",
- "categoryId": 4,
- "url": "http://www.kupona-media.de/en/retargeting-and-performance-media-width-kupona",
- "companyId": "kupona"
- },
- "kxcdn.com": {
- "name": "Keycdn",
- "categoryId": 9,
- "url": "https://www.keycdn.com/",
- "companyId": null
- },
- "kyto": {
- "name": "Kyto",
- "categoryId": 6,
- "url": "https://www.kyto.com/",
- "companyId": "kyto"
- },
- "ladsp.com": {
- "name": "Logicad",
- "categoryId": 4,
- "url": "https://www.logicad.com/",
- "companyId": "logicad"
- },
- "lanista_concepts": {
- "name": "Lanista Concepts",
- "categoryId": 4,
- "url": "http://lanistaconcepts.com/",
- "companyId": "lanista_concepts"
- },
- "latimes": {
- "name": "Los Angeles Times",
- "categoryId": 8,
- "url": "http://www.latimes.com/",
- "companyId": "latimes"
- },
- "launch_darkly": {
- "name": "Launch Darkly",
- "categoryId": 5,
- "url": "https://launchdarkly.com/index.html",
- "companyId": "launch_darkly"
- },
- "launchbit": {
- "name": "LaunchBit",
- "categoryId": 4,
- "url": "https://www.launchbit.com/",
- "companyId": "launchbit"
- },
- "launchpad": {
- "name": "Launchpad",
- "categoryId": 8,
- "url": "https://launchpad.net/",
- "companyId": "canonical",
- "source": "AdGuard"
- },
- "layer-ad.org": {
- "name": "Layer-ADS.net",
- "categoryId": 4,
- "url": "http://layer-ads.net/",
- "companyId": null
- },
- "lazada": {
- "name": "Lazada",
- "categoryId": 4,
- "url": "https://www.lazada.com/",
- "companyId": "lazada"
- },
- "lcx_digital": {
- "name": "LCX Digital",
- "categoryId": 4,
- "url": "http://www.lcx.com/",
- "companyId": "lcx_digital"
- },
- "le_monde.fr": {
- "name": "Le Monde.fr",
- "categoryId": 8,
- "url": "http://www.lemonde.fr/",
- "companyId": "le_monde.fr"
- },
- "lead_liaison": {
- "name": "Lead Liaison",
- "categoryId": 6,
- "url": "https://www.leadliaison.com",
- "companyId": "lead_liaison"
- },
- "leadback": {
- "name": "Leadback",
- "categoryId": 6,
- "url": "http://leadback.ru/?utm_source=leadback_widget&utm_medium=eas-balt.ru&utm_campaign=self_ad",
- "companyId": "leadback"
- },
- "leaddyno": {
- "name": "LeadDyno",
- "categoryId": 4,
- "url": "http://www.leaddyno.com",
- "companyId": "leaddyno"
- },
- "leadforensics": {
- "name": "LeadForensics",
- "categoryId": 4,
- "url": "http://www.leadforensics.com/",
- "companyId": "lead_forensics"
- },
- "leadgenic": {
- "name": "LeadGENIC",
- "categoryId": 4,
- "url": "https://leadgenic.com/",
- "companyId": "leadgenic"
- },
- "leadhit": {
- "name": "LeadHit",
- "categoryId": 2,
- "url": "http://leadhit.ru/",
- "companyId": "leadhit"
- },
- "leadin": {
- "name": "Leadin",
- "categoryId": 6,
- "url": "https://www.hubspot.com/",
- "companyId": "hubspot"
- },
- "leading_reports": {
- "name": "Leading Reports",
- "categoryId": 4,
- "url": "https://www.leadingreports.de/",
- "companyId": "leading_reports"
- },
- "leadinspector": {
- "name": "LeadInspector",
- "categoryId": 6,
- "url": "https://www.leadinspector.de/",
- "companyId": "leadinspector"
- },
- "leadlander": {
- "name": "LeadLander",
- "categoryId": 6,
- "url": "http://www.leadlander.com/",
- "companyId": "leadlander"
- },
- "leadlife": {
- "name": "LeadLife",
- "categoryId": 2,
- "url": "http://leadlife.com/",
- "companyId": "leadlife"
- },
- "leadpages": {
- "name": "Leadpages",
- "categoryId": 6,
- "url": "https://www.leadpages.net/",
- "companyId": "leadpages"
- },
- "leadplace": {
- "name": "LeadPlace",
- "categoryId": 6,
- "url": "https://temelio.com",
- "companyId": "leadplace"
- },
- "leads_by_web.com": {
- "name": "Leads by Web.com",
- "categoryId": 4,
- "url": "http://www.leadsbyweb.com",
- "companyId": "web.com_group"
- },
- "leadscoreapp": {
- "name": "LeadScoreApp",
- "categoryId": 2,
- "url": "http://leadscoreapp.com",
- "companyId": "leadscoreapp"
- },
- "leadsius": {
- "name": "Leadsius",
- "categoryId": 4,
- "url": "http://www.leadsius.com/",
- "companyId": "leadsius"
- },
- "leady": {
- "name": "Leady",
- "categoryId": 4,
- "url": "http://www.leady.cz/",
- "companyId": "leady"
- },
- "leiki": {
- "name": "Leiki",
- "categoryId": 4,
- "url": "http://www.leiki.com",
- "companyId": "leiki"
- },
- "lengow": {
- "name": "Lengow",
- "categoryId": 4,
- "url": "http://www.lengow.com/",
- "companyId": "lengow"
- },
- "lenmit.com": {
- "name": "lenmit.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lentainform.com": {
- "name": "lentainform.com",
- "categoryId": 8,
- "url": "https://www.lentainform.com/",
- "companyId": null
- },
- "lenua.de": {
- "name": "Lenua System",
- "categoryId": 4,
- "url": "http://lenua.de/",
- "companyId": "synatix"
- },
- "let_reach": {
- "name": "Let Reach",
- "categoryId": 2,
- "url": "https://letreach.com/",
- "companyId": "let_reach"
- },
- "lets_encrypt": {
- "name": "Let's Encrypt",
- "categoryId": 5,
- "url": "https://letsencrypt.org/",
- "companyId": "isrg",
- "source": "AdGuard"
- },
- "letv": {
- "name": "LeTV",
- "categoryId": 6,
- "url": "http://www.le.com/",
- "companyId": "letv"
- },
- "level3_communications": {
- "name": "Level 3 Communications, Inc.",
- "categoryId": 8,
- "url": "http://www.level3.com/en/",
- "companyId": "level3_communications"
- },
- "lgads": {
- "name": "LG Ad Solutions",
- "categoryId": 4,
- "url": "https://lgads.tv/",
- "companyId": "lgcorp",
- "source": "AdGuard"
- },
- "lgtv": {
- "name": "LG TV",
- "categoryId": 8,
- "url": "https://www.lg.com/",
- "companyId": "lgcorp",
- "source": "AdGuard"
- },
- "licensebuttons.net": {
- "name": "licensebuttons.net",
- "categoryId": 9,
- "url": "https://licensebuttons.net/",
- "companyId": null
- },
- "lifestreet_media": {
- "name": "LifeStreet Media",
- "categoryId": 4,
- "url": "http://lifestreetmedia.com/",
- "companyId": "lifestreet_media"
- },
- "ligatus": {
- "name": "Ligatus",
- "categoryId": 4,
- "url": "http://www.ligatus.com/",
- "companyId": "outbrain"
- },
- "limk": {
- "name": "Limk",
- "categoryId": 4,
- "url": "https://limk.com/",
- "companyId": "limk"
- },
- "line_apps": {
- "name": "Line",
- "categoryId": 6,
- "url": "https://line.me/en-US/",
- "companyId": "line"
- },
- "linezing": {
- "name": "LineZing",
- "categoryId": 4,
- "url": "http://www.linezing.com/",
- "companyId": "linezing"
- },
- "linkbucks": {
- "name": "Linkbucks",
- "categoryId": 4,
- "url": "http://www.linkbucks.com/",
- "companyId": "linkbucks"
- },
- "linkconnector": {
- "name": "LinkConnector",
- "categoryId": 4,
- "url": "http://www.linkconnector.com",
- "companyId": "linkconnector"
- },
- "linkedin": {
- "name": "LinkedIn",
- "categoryId": 8,
- "url": "https://www.linkedin.com/",
- "companyId": "microsoft"
- },
- "linkedin_ads": {
- "name": "LinkedIn Ads",
- "categoryId": 4,
- "url": "http://www.linkedin.com/",
- "companyId": "microsoft"
- },
- "linkedin_analytics": {
- "name": "LinkedIn Analytics",
- "categoryId": 6,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "linkedin_marketing_solutions": {
- "name": "LinkedIn Marketing Solutions",
- "categoryId": 4,
- "url": "https://business.linkedin.com/marketing-solutions",
- "companyId": "microsoft"
- },
- "linkedin_widgets": {
- "name": "LinkedIn Widgets",
- "categoryId": 7,
- "url": "https://www.linkedin.com",
- "companyId": "microsoft"
- },
- "linker": {
- "name": "Linker",
- "categoryId": 4,
- "url": "https://linker.hr/",
- "companyId": "linker"
- },
- "linkprice": {
- "name": "LinkPrice",
- "categoryId": 4,
- "url": "http://www.linkprice.com/",
- "companyId": "linkprice"
- },
- "linkpulse": {
- "name": "Linkpulse",
- "categoryId": 6,
- "url": "http://www.linkpulse.com/",
- "companyId": "linkpulse"
- },
- "linksalpha": {
- "name": "LinksAlpha",
- "categoryId": 7,
- "url": "http://www.linksalpha.com",
- "companyId": "linksalpha"
- },
- "linksmart": {
- "name": "LinkSmart",
- "categoryId": 4,
- "url": "http://www.linksmart.com/",
- "companyId": "sovrn"
- },
- "linkstorm": {
- "name": "Linkstorm",
- "categoryId": 2,
- "url": "http://www.linkstorms.com/",
- "companyId": "linkstorm"
- },
- "linksynergy.com": {
- "name": "Rakuten LinkShare",
- "categoryId": 4,
- "url": "https://rakutenmarketing.com/affiliate",
- "companyId": "rakuten"
- },
- "linkup": {
- "name": "LinkUp",
- "categoryId": 6,
- "url": "http://www.linkup.com/",
- "companyId": "linkup"
- },
- "linkwise": {
- "name": "Linkwise",
- "categoryId": 4,
- "url": "http://linkwi.se/global-en/",
- "companyId": "linkwise"
- },
- "linkwithin": {
- "name": "LinkWithin",
- "categoryId": 7,
- "url": "http://www.linkwithin.com/",
- "companyId": "linkwithin"
- },
- "liquidm_technology_gmbh": {
- "name": "LiquidM Technology GmbH",
- "categoryId": 4,
- "url": "https://liquidm.com/",
- "companyId": "liquidm"
- },
- "liqwid": {
- "name": "Liqwid",
- "categoryId": 4,
- "url": "https://liqwid.com/",
- "companyId": "liqwid"
- },
- "list.ru": {
- "name": "Rating@Mail.Ru",
- "categoryId": 7,
- "url": "http://list.ru/",
- "companyId": "megafon"
- },
- "listrak": {
- "name": "Listrak",
- "categoryId": 2,
- "url": "http://www.listrak.com/",
- "companyId": "listrak"
- },
- "live2support": {
- "name": "Live2Support",
- "categoryId": 2,
- "url": "http://www.live2support.com/",
- "companyId": "live2support"
- },
- "live800": {
- "name": "Live800",
- "categoryId": 2,
- "url": "http://live800.com",
- "companyId": "live800"
- },
- "live_agent": {
- "name": "Live Agent",
- "categoryId": 2,
- "url": "https://www.ladesk.com/",
- "companyId": "liveagent"
- },
- "live_help_now": {
- "name": "Live Help Now",
- "categoryId": 2,
- "url": "http://www.livehelpnow.net/",
- "companyId": "live_help_now"
- },
- "live_intent": {
- "name": "Live Intent",
- "categoryId": 6,
- "url": "http://www.liveintent.com/",
- "companyId": "liveintent"
- },
- "live_journal": {
- "name": "Live Journal",
- "categoryId": 6,
- "url": "http://www.livejournal.com/",
- "companyId": "livejournal"
- },
- "liveadexchanger.com": {
- "name": "liveadexchanger.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "livechat": {
- "name": "LiveChat",
- "categoryId": 2,
- "url": "http://www.livechatinc.com",
- "companyId": "livechat"
- },
- "livechatnow": {
- "name": "LiveChatNow",
- "categoryId": 2,
- "url": "http://www.livechatnow.com/",
- "companyId": "livechatnow!"
- },
- "liveclicker": {
- "name": "Liveclicker",
- "categoryId": 2,
- "url": "http://www.liveclicker.com",
- "companyId": "liveclicker"
- },
- "livecounter": {
- "name": "Livecounter",
- "categoryId": 6,
- "url": "http://www.livecounter.dk/",
- "companyId": "livecounter"
- },
- "livefyre": {
- "name": "Livefyre",
- "categoryId": 1,
- "url": "http://www.livefyre.com/",
- "companyId": "adobe"
- },
- "liveinternet": {
- "name": "LiveInternet",
- "categoryId": 1,
- "url": "http://www.liveinternet.ru/",
- "companyId": "liveinternet"
- },
- "liveperson": {
- "name": "LivePerson",
- "categoryId": 2,
- "url": "http://www.liveperson.com/",
- "companyId": "liveperson"
- },
- "liveramp": {
- "name": "LiveRamp",
- "categoryId": 4,
- "url": "https://liveramp.com/",
- "companyId": "acxiom"
- },
- "livere": {
- "name": "LiveRe",
- "categoryId": 7,
- "url": "http://www.livere.com/",
- "companyId": "livere"
- },
- "livesportmedia.eu": {
- "name": "Livesport Media",
- "categoryId": 8,
- "url": "http://www.livesportmedia.eu/",
- "companyId": null
- },
- "livestream": {
- "name": "Livestream",
- "categoryId": 0,
- "url": "http://vimeo.com/",
- "companyId": "vimeo"
- },
- "livetex.ru": {
- "name": "LiveTex",
- "categoryId": 2,
- "url": "https://livetex.ru/",
- "companyId": "livetex"
- },
- "lkqd": {
- "name": "LKQD",
- "categoryId": 4,
- "url": "http://www.lkqd.com/",
- "companyId": "nexstar"
- },
- "loadbee.com": {
- "name": "Loadbee",
- "categoryId": 4,
- "url": "https://company.loadbee.com/de/loadbee-home",
- "companyId": null
- },
- "loadercdn.com": {
- "name": "loadercdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "loadsource.org": {
- "name": "loadsource.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "localytics": {
- "name": "Localytics",
- "categoryId": 101,
- "url": "https://uplandsoftware.com/localytics/",
- "companyId": "upland",
- "source": "AdGuard"
- },
- "lockerdome": {
- "name": "LockerDome",
- "categoryId": 7,
- "url": "https://lockerdome.com",
- "companyId": "lockerdome"
- },
- "lockerz_share": {
- "name": "AddToAny",
- "categoryId": 7,
- "url": "http://www.addtoany.com/",
- "companyId": "addtoany"
- },
- "logan_media": {
- "name": "Logan Media",
- "categoryId": 6,
- "url": "http://loganmedia.mobi/",
- "companyId": "logan_media"
- },
- "logdna": {
- "name": "LogDNA",
- "categoryId": 4,
- "url": "http://www.answerbook.com/",
- "companyId": "logdna"
- },
- "loggly": {
- "name": "Loggly",
- "categoryId": 6,
- "url": "http://loggly.com/",
- "companyId": "loggly"
- },
- "logly": {
- "name": "logly",
- "categoryId": 6,
- "url": "http://logly.co.jp/",
- "companyId": "logly"
- },
- "logsss.com": {
- "name": "logsss.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lomadee": {
- "name": "Lomadee",
- "categoryId": 4,
- "url": "http://lomadee.com",
- "companyId": "lomadee"
- },
- "longtail_video_analytics": {
- "name": "JW Player Analytics",
- "categoryId": 4,
- "url": "http://www.longtailvideo.com/",
- "companyId": "jw_player"
- },
- "loomia": {
- "name": "Loomia",
- "categoryId": 4,
- "url": "http://www.loomia.com/",
- "companyId": "loomia"
- },
- "loop11": {
- "name": "Loop11",
- "categoryId": 6,
- "url": "https://360i.com/",
- "companyId": "360i"
- },
- "loopfuse_oneview": {
- "name": "LoopFuse OneView",
- "categoryId": 4,
- "url": "http://www.loopfuse.com/",
- "companyId": "loopfuse"
- },
- "lotame": {
- "name": "Lotame",
- "categoryId": 4,
- "url": "http://www.lotame.com/",
- "companyId": "lotame"
- },
- "lottex_inc": {
- "name": "vidcpm.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lucid": {
- "name": "Lucid",
- "categoryId": 4,
- "url": "https://luc.id/",
- "companyId": "luc.id"
- },
- "lucid_media": {
- "name": "Lucid Media",
- "categoryId": 4,
- "url": "http://www.lucidmedia.com/",
- "companyId": "singtel"
- },
- "lucini": {
- "name": "Lucini",
- "categoryId": 4,
- "url": "http://www.lucinilucini.com/",
- "companyId": "lucini_&_lucini_communications"
- },
- "lucky_orange": {
- "name": "Lucky Orange",
- "categoryId": 6,
- "url": "http://www.luckyorange.com/",
- "companyId": "lucky_orange"
- },
- "luckypushh.com": {
- "name": "luckypushh.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lxr100": {
- "name": "LXR100",
- "categoryId": 4,
- "url": "http://www.netelixir.com/lxr100_PPC_management_tool.html",
- "companyId": "netelixir"
- },
- "lynchpin_analytics": {
- "name": "Lynchpin Analytics",
- "categoryId": 4,
- "url": "http://www.lynchpin.com/",
- "companyId": "lynchpin_analytics"
- },
- "lytics": {
- "name": "Lytics",
- "categoryId": 6,
- "url": "https://www.lytics.com/",
- "companyId": "lytics"
- },
- "lyuoaxruaqdo.com": {
- "name": "lyuoaxruaqdo.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "m-pathy": {
- "name": "m-pathy",
- "categoryId": 4,
- "url": "http://www.m-pathy.com/",
- "companyId": "m-pathy"
- },
- "m._p._newmedia": {
- "name": "M. P. NEWMEDIA",
- "categoryId": 4,
- "url": "http://www.mp-newmedia.com/",
- "companyId": "sticky"
- },
- "m4n": {
- "name": "M4N",
- "categoryId": 4,
- "url": "http://www.zanox.com/us/",
- "companyId": "axel_springer"
- },
- "mad_ads_media": {
- "name": "Mad Ads Media",
- "categoryId": 4,
- "url": "http://www.madadsmedia.com/",
- "companyId": "mad_ads_media"
- },
- "madeleine.de": {
- "name": "madeleine.de",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "madison_logic": {
- "name": "Madison Logic",
- "categoryId": 4,
- "url": "http://www.madisonlogic.com/",
- "companyId": "madison_logic"
- },
- "madnet": {
- "name": "MADNET",
- "categoryId": 4,
- "url": "http://madnet.ru/en",
- "companyId": "madnet"
- },
- "mads": {
- "name": "MADS",
- "categoryId": 4,
- "url": "http://www.mads.com/",
- "companyId": "mads"
- },
- "magna_advertise": {
- "name": "Magna Advertise",
- "categoryId": 4,
- "url": "http://magna.ru/",
- "companyId": "magna_advertise"
- },
- "magnetic": {
- "name": "Magnetic",
- "categoryId": 4,
- "url": "http://www.magnetic.is",
- "companyId": "magnetic"
- },
- "magnetise_group": {
- "name": "Magnetise Group",
- "categoryId": 4,
- "url": "http://magnetisegroup.com/",
- "companyId": "magnetise_group"
- },
- "magnify360": {
- "name": "Magnify360",
- "categoryId": 6,
- "url": "http://www.magnify360.com/",
- "companyId": "magnify360"
- },
- "magnuum.com": {
- "name": "magnuum.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mail.ru_banner": {
- "name": "Mail.Ru Banner Network",
- "categoryId": 4,
- "url": "http://mail.ru/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "mail.ru_counter": {
- "name": "Mail.Ru Counter",
- "categoryId": 2,
- "url": "http://mail.ru/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "mail.ru_group": {
- "name": "Mail.Ru Group",
- "categoryId": 7,
- "url": "http://mail.ru/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "mailchimp_tracking": {
- "name": "MailChimp Tracking",
- "categoryId": 4,
- "url": "http://mailchimp.com/",
- "companyId": "mailchimp"
- },
- "mailerlite.com": {
- "name": "Mailerlite",
- "categoryId": 10,
- "url": "https://www.mailerlite.com/",
- "companyId": "mailerlite"
- },
- "mailtrack.io": {
- "name": "MailTrack.io",
- "categoryId": 4,
- "url": "https://mailtrack.io",
- "companyId": "mailtrack"
- },
- "mainadv": {
- "name": "mainADV",
- "categoryId": 4,
- "url": "http://www.mainadv.com/",
- "companyId": "mainadv"
- },
- "makazi": {
- "name": "Makazi",
- "categoryId": 4,
- "url": "http://www.makazi.com/en/",
- "companyId": "makazi_group"
- },
- "makeappdev.xyz": {
- "name": "makeappdev.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "makesource.cool": {
- "name": "makesource.cool",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mango": {
- "name": "Mango",
- "categoryId": 4,
- "url": "https://www.mango-office.ru/",
- "companyId": "mango_office"
- },
- "manycontacts": {
- "name": "ManyContacts",
- "categoryId": 4,
- "url": "https://www.manycontacts.com/",
- "companyId": "manycontacts"
- },
- "mapandroute.de": {
- "name": "Map and Route",
- "categoryId": 2,
- "url": "http://www.mapandroute.de/",
- "companyId": null
- },
- "mapbox": {
- "name": "Mapbox",
- "categoryId": 2,
- "url": "https://www.mapbox.com/",
- "companyId": null
- },
- "maploco": {
- "name": "MapLoco",
- "categoryId": 4,
- "url": "http://www.maploco.com/",
- "companyId": "maploco"
- },
- "marchex": {
- "name": "Marchex",
- "categoryId": 4,
- "url": "http://www.industrybrains.com/",
- "companyId": "marchex"
- },
- "marimedia": {
- "name": "Marimedia",
- "categoryId": 4,
- "url": "http://www.marimedia.net/",
- "companyId": "tremor_video"
- },
- "marin_search_marketer": {
- "name": "Marin Search Marketer",
- "categoryId": 4,
- "url": "http://www.marinsoftware.com/",
- "companyId": "marin_software"
- },
- "mark_+_mini": {
- "name": "Mark & Mini",
- "categoryId": 4,
- "url": "http://www.markandmini.com/index.cfm",
- "companyId": "edm_group"
- },
- "market_thunder": {
- "name": "Market Thunder",
- "categoryId": 4,
- "url": "https://www.makethunder.com/",
- "companyId": "market_thunder"
- },
- "marketgid": {
- "name": "MarketGid",
- "categoryId": 4,
- "url": "http://www.mgid.com/",
- "companyId": "marketgid_usa"
- },
- "marketing_automation": {
- "name": "Marketing Automation",
- "categoryId": 4,
- "url": "https://en.frodx.com",
- "companyId": "frodx"
- },
- "marketo": {
- "name": "Marketo",
- "categoryId": 4,
- "url": "http://www.marketo.com/",
- "companyId": "marketo"
- },
- "markmonitor": {
- "name": "MarkMonitor",
- "categoryId": 4,
- "url": "https://www.markmonitor.com/",
- "companyId": "markmonitor",
- "source": "AdGuard"
- },
- "marktest": {
- "name": "Marktest",
- "categoryId": 4,
- "url": "http://www.marktest.com/",
- "companyId": "marktest_group"
- },
- "marshadow.io": {
- "name": "marshadow.io",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "martini_media": {
- "name": "Martini Media",
- "categoryId": 4,
- "url": "http://martinimediainc.com/",
- "companyId": "martini_media"
- },
- "maru-edu": {
- "name": "Maru-EDU",
- "categoryId": 2,
- "url": "https://www.maruedr.com",
- "companyId": "maruedr"
- },
- "marvellous_machine": {
- "name": "Marvellous Machine",
- "categoryId": 6,
- "url": "https://www.marvellousmachine.net/",
- "companyId": "marvellous_machine"
- },
- "master_banner_network": {
- "name": "Master Banner Network",
- "categoryId": 4,
- "url": "http://www.mbn.com.ua/",
- "companyId": "master_banner_network"
- },
- "mastertarget": {
- "name": "MasterTarget",
- "categoryId": 4,
- "url": "http://mastertarget.ru/",
- "companyId": "mastertarget"
- },
- "matelso": {
- "name": "Matelso",
- "categoryId": 6,
- "url": "https://www.matelso.de",
- "companyId": "matelso"
- },
- "mather_analytics": {
- "name": "Mather Analytics",
- "categoryId": 6,
- "url": "https://www.mathereconomics.com/",
- "companyId": "mather_economics"
- },
- "mathjax.org": {
- "name": "MathJax",
- "categoryId": 9,
- "url": "https://www.mathjax.org/",
- "companyId": null
- },
- "matiro": {
- "name": "Matiro",
- "categoryId": 6,
- "url": "http://matiro.com/",
- "companyId": "matiro"
- },
- "matomo": {
- "name": "Matomo",
- "categoryId": 6,
- "url": "https://matomo.org/s",
- "companyId": "matomo"
- },
- "matomy_market": {
- "name": "Matomy Market",
- "categoryId": 4,
- "url": "http://www.matomymarket.com/",
- "companyId": "matomy_media"
- },
- "matrix": {
- "name": "Matrix",
- "categoryId": 5,
- "url": "https://matrix.org/",
- "companyId": "matrix",
- "source": "AdGuard"
- },
- "maxbounty": {
- "name": "MaxBounty",
- "categoryId": 5,
- "url": "http://www.maxbounty.com/",
- "companyId": "maxbounty"
- },
- "maxcdn": {
- "name": "MaxCDN",
- "categoryId": 9,
- "url": "https://www.maxcdn.com/",
- "companyId": null
- },
- "maxlab": {
- "name": "Maxlab",
- "categoryId": 4,
- "url": "http://maxlab.ru",
- "companyId": "maxlab"
- },
- "maxmind": {
- "name": "MaxMind",
- "categoryId": 4,
- "url": "http://www.maxmind.com/",
- "companyId": "maxmind"
- },
- "maxonclick_com": {
- "name": "maxonclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "maxpoint_interactive": {
- "name": "MaxPoint Interactive",
- "categoryId": 4,
- "url": "http://www.maxpointinteractive.com/",
- "companyId": "maxpoint_interactive"
- },
- "maxymiser": {
- "name": "Oracle Maxymiser",
- "categoryId": 4,
- "url": "https://www.oracle.com/marketingcloud/products/testing-and-optimization/index.html",
- "companyId": "oracle"
- },
- "mbr_targeting": {
- "name": "mbr targeting",
- "categoryId": 4,
- "url": "https://mbr-targeting.com/",
- "companyId": "stroer"
- },
- "mbuy": {
- "name": "MBuy",
- "categoryId": 4,
- "url": "http://www.adbuyer.com/",
- "companyId": "mbuy"
- },
- "mcabi": {
- "name": "mCabi",
- "categoryId": 4,
- "url": "https://mcabi.mcloudglobal.com/#",
- "companyId": "mcabi"
- },
- "mcafee_secure": {
- "name": "McAfee Secure",
- "categoryId": 5,
- "url": "http://www.mcafeesecure.com/us/",
- "companyId": "mcafee"
- },
- "mconet": {
- "name": "MCOnet",
- "categoryId": 4,
- "url": "http://mconet.biz/",
- "companyId": "mconet"
- },
- "mdotlabs": {
- "name": "MdotLabs",
- "categoryId": 4,
- "url": "http://www.mdotlabs.com/",
- "companyId": "comscore"
- },
- "media-clic": {
- "name": "Media-clic",
- "categoryId": 4,
- "url": "http://www.media-clic.com/",
- "companyId": "media-click"
- },
- "media-imdb.com": {
- "name": "IMDB CDN",
- "categoryId": 9,
- "url": "https://www.imdb.com/",
- "companyId": "amazon_associates"
- },
- "media.net": {
- "name": "Media.net",
- "categoryId": 4,
- "url": "http://www.media.net/",
- "companyId": "media.net"
- },
- "media_impact": {
- "name": "Media Impact",
- "categoryId": 4,
- "url": "https://mediaimpact.de/index.html",
- "companyId": "media_impact"
- },
- "media_innovation_group": {
- "name": "Xaxis",
- "categoryId": 4,
- "url": "https://www.xaxis.com/",
- "companyId": "media_innovation_group"
- },
- "media_today": {
- "name": "Media Today",
- "categoryId": 4,
- "url": "http://mediatoday.ru/",
- "companyId": "media_today"
- },
- "mediaad": {
- "name": "MediaAd",
- "categoryId": 4,
- "url": "https://mediaad.org",
- "companyId": "mediaad"
- },
- "mediaglu": {
- "name": "MediaGlu",
- "categoryId": 4,
- "url": "https://www.mediaglu.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "mediahub": {
- "name": "MediaHub",
- "categoryId": 4,
- "url": "http://www.mediahub.com/",
- "companyId": "mediahub"
- },
- "medialab": {
- "name": "MediaLab.AI Inc.",
- "categoryId": 8,
- "url": "https://medialab.la/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "medialand": {
- "name": "Medialand",
- "categoryId": 4,
- "url": "http://medialand.ru",
- "companyId": "medialand"
- },
- "medialead": {
- "name": "Medialead",
- "categoryId": 4,
- "url": "https://www.medialead.de/",
- "companyId": "the_reach_group"
- },
- "mediamath": {
- "name": "MediaMath",
- "categoryId": 4,
- "url": "http://www.mediamath.com/",
- "companyId": "mediamath"
- },
- "mediametrics": {
- "name": "Mediametrics",
- "categoryId": 7,
- "url": "http://mediametrics.ru",
- "companyId": "mediametrics"
- },
- "median": {
- "name": "Median",
- "categoryId": 4,
- "url": "http://median.hu",
- "companyId": "median"
- },
- "mediapass": {
- "name": "MediaPass",
- "categoryId": 4,
- "url": "http://www.mediapass.com/",
- "companyId": "mediapass"
- },
- "mediapost_communications": {
- "name": "Mediapost Communications",
- "categoryId": 6,
- "url": "https://vrm.mediapostcommunication.net/",
- "companyId": "mediapost_communications"
- },
- "mediarithmics.com": {
- "name": "Mediarithmics",
- "categoryId": 4,
- "url": "http://www.mediarithmics.com/en/",
- "companyId": "mediarithmics"
- },
- "mediascope": {
- "name": "Mediascope",
- "categoryId": 6,
- "url": "http://mediascope.net/",
- "companyId": "mediascope"
- },
- "mediashakers": {
- "name": "MediaShakers",
- "categoryId": 4,
- "url": "http://www.mediashakers.com/",
- "companyId": "mediashakers"
- },
- "mediashift": {
- "name": "MediaShift",
- "categoryId": 4,
- "url": "http://www.mediashift.com/",
- "companyId": "mediashift"
- },
- "mediator.media": {
- "name": "Mediator",
- "categoryId": 6,
- "url": "https://mediator.media/",
- "companyId": "mycom_bv"
- },
- "mediav": {
- "name": "MediaV",
- "categoryId": 4,
- "url": "https://www.mediav.com/",
- "companyId": "mediav"
- },
- "mediawhiz": {
- "name": "Mediawhiz",
- "categoryId": 4,
- "url": "http://www.mediawhiz.com/",
- "companyId": "matomy_media"
- },
- "medigo": {
- "name": "Medigo",
- "categoryId": 4,
- "url": "https://www.mediego.com/en/",
- "companyId": "mediego"
- },
- "medley": {
- "name": "Medley",
- "categoryId": 4,
- "url": "http://medley.com/",
- "companyId": "friendfinder_networks"
- },
- "medyanet": {
- "name": "MedyaNet",
- "categoryId": 4,
- "url": "http://www.medyanet.com.tr/",
- "companyId": "medyanet"
- },
- "meebo_bar": {
- "name": "Meebo Bar",
- "categoryId": 7,
- "url": "http://bar.meebo.com/",
- "companyId": "google"
- },
- "meetrics": {
- "name": "Meetrics",
- "categoryId": 4,
- "url": "http://www.meetrics.de/",
- "companyId": "meetrics"
- },
- "megaindex": {
- "name": "MegaIndex",
- "categoryId": 4,
- "url": "http://www.megaindex.ru",
- "companyId": "megaindex"
- },
- "meganz": {
- "name": "Mega Ltd.",
- "categoryId": 8,
- "url": "https://mega.io/",
- "companyId": "meganz",
- "source": "AdGuard"
- },
- "mein-bmi.com": {
- "name": "mein-bmi.com",
- "categoryId": 12,
- "url": "https://www.mein-bmi.com/",
- "companyId": null
- },
- "melissa": {
- "name": "Melissa",
- "categoryId": 6,
- "url": "https://www.melissa.com/",
- "companyId": "melissa_global_intelligence"
- },
- "melt": {
- "name": "Melt",
- "categoryId": 4,
- "url": "http://meltdsp.com/",
- "companyId": "melt"
- },
- "menlo": {
- "name": "Menlo",
- "categoryId": 4,
- "url": "http://www.menlotechnologies.cn/",
- "companyId": "menlotechnologies"
- },
- "mentad": {
- "name": "MentAd",
- "categoryId": 4,
- "url": "http://www.mentad.com/",
- "companyId": "mentad"
- },
- "mercado": {
- "name": "Mercado",
- "categoryId": 4,
- "url": "https://www.mercadolivre.com.br/",
- "companyId": "mercado_livre"
- },
- "merchantadvantage": {
- "name": "MerchantAdvantage",
- "categoryId": 4,
- "url": "http://www.merchantadvantage.com/channelmanagement.cfm",
- "companyId": "merchantadvantage"
- },
- "merchenta": {
- "name": "Merchenta",
- "categoryId": 4,
- "url": "http://www.merchenta.com/",
- "companyId": "merchenta"
- },
- "mercury_media": {
- "name": "Mercury Media",
- "categoryId": 4,
- "url": "http://trackingsoft.com/",
- "companyId": "mercury_media"
- },
- "merkle_research": {
- "name": "Merkle Research",
- "categoryId": 6,
- "url": "http://www.dentsuaegisnetwork.com/",
- "companyId": "dentsu_aegis_network"
- },
- "merkle_rkg": {
- "name": "Merkle RKG",
- "categoryId": 6,
- "url": "https://www.merkleinc.com/what-we-do/digital-agency-services/rkg-now-fully-integrated-merkle",
- "companyId": "dentsu_aegis_network"
- },
- "messenger.com": {
- "name": "Facebook Messenger",
- "categoryId": 7,
- "url": "https://messenger.com",
- "companyId": "facebook"
- },
- "meta_network": {
- "name": "Meta Network",
- "categoryId": 7,
- "url": "http://www.metanetwork.com/",
- "companyId": "meta_network"
- },
- "metaffiliation.com": {
- "name": "Netaffiliation",
- "categoryId": 4,
- "url": "http://netaffiliation.com/",
- "companyId": "kwanko"
- },
- "metapeople": {
- "name": "Metapeople",
- "categoryId": 4,
- "url": "http://www.metapeople.com/us/",
- "companyId": "metapeople"
- },
- "metrigo": {
- "name": "Metrigo",
- "categoryId": 4,
- "url": "http://metrigo.com/",
- "companyId": "metrigo"
- },
- "metriweb": {
- "name": "MetriWeb",
- "categoryId": 4,
- "url": "http://www.metriware.be/",
- "companyId": "metriware"
- },
- "miaozhen": {
- "name": "Miaozhen",
- "categoryId": 4,
- "url": "http://miaozhen.com/en/index.html",
- "companyId": "miaozhen"
- },
- "microad": {
- "name": "MicroAd",
- "categoryId": 4,
- "url": "https://www.microad.co.jp/",
- "companyId": "microad"
- },
- "microsoft": {
- "name": "Microsoft Services",
- "categoryId": 8,
- "url": "http://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "microsoft_adcenter_conversion": {
- "name": "Microsoft adCenter Conversion",
- "categoryId": 4,
- "url": "https://adcenter.microsoft.com/",
- "companyId": "microsoft"
- },
- "microsoft_analytics": {
- "name": "Microsoft Analytics",
- "categoryId": 4,
- "url": "https://adcenter.microsoft.com",
- "companyId": "microsoft"
- },
- "microsoft_clarity": {
- "name": "Microsoft Clarity",
- "categoryId": 6,
- "url": "https://clarity.microsoft.com/",
- "companyId": "microsoft"
- },
- "mindset_media": {
- "name": "Mindset Media",
- "categoryId": 4,
- "url": "http://www.mindset-media.com/",
- "companyId": "google"
- },
- "mindspark": {
- "name": "Mindspark",
- "categoryId": 6,
- "url": "http://www.mindspark.com/",
- "companyId": "iac_apps"
- },
- "mindviz_tracker": {
- "name": "MindViz Tracker",
- "categoryId": 4,
- "url": "http://mvtracker.com/",
- "companyId": "mindviz"
- },
- "minewhat": {
- "name": "MineWhat",
- "categoryId": 4,
- "url": "http://www.minewhat.com",
- "companyId": "minewhat"
- },
- "mints_app": {
- "name": "Mints App",
- "categoryId": 2,
- "url": "https://mintsapp.io/",
- "companyId": "mints_app"
- },
- "minute.ly": {
- "name": "minute.ly",
- "categoryId": 0,
- "url": "http://minute.ly/",
- "companyId": "minute.ly"
- },
- "minute.ly_video": {
- "name": "minute.ly video",
- "categoryId": 0,
- "url": "http://minute.ly/",
- "companyId": "minute.ly"
- },
- "mirando": {
- "name": "Mirando",
- "categoryId": 4,
- "url": "http://mirando.de",
- "companyId": "mirando"
- },
- "mirtesen.ru": {
- "name": "mirtesen.ru",
- "categoryId": 7,
- "url": "https://mirtesen.ru/",
- "companyId": null
- },
- "mister_bell": {
- "name": "Mister Bell",
- "categoryId": 4,
- "url": "http://misterbell.fr/",
- "companyId": "mister_bell"
- },
- "mixi": {
- "name": "mixi",
- "categoryId": 7,
- "url": "http://mixi.jp/",
- "companyId": "mixi"
- },
- "mixpanel": {
- "name": "Mixpanel",
- "categoryId": 6,
- "url": "http://mixpanel.com/",
- "companyId": "mixpanel"
- },
- "mixpo": {
- "name": "Mixpo",
- "categoryId": 4,
- "url": "http://dynamicvideoad.mixpo.com/",
- "companyId": "mixpo"
- },
- "mluvii": {
- "name": "Mluvii",
- "categoryId": 2,
- "url": "https://www.mluvii.com",
- "companyId": "mluvii"
- },
- "mncdn.com": {
- "name": "MediaNova CDN",
- "categoryId": 9,
- "url": "https://www.medianova.com/",
- "companyId": null
- },
- "moat": {
- "name": "Moat",
- "categoryId": 4,
- "url": "http://www.moat.com/",
- "companyId": "oracle"
- },
- "mobicow": {
- "name": "Mobicow",
- "categoryId": 4,
- "url": "http://www.mobicow.com/",
- "companyId": "mobicow"
- },
- "mobify": {
- "name": "Mobify",
- "categoryId": 4,
- "url": "http://www.mobify.com/",
- "companyId": "mobify"
- },
- "mobtrks.com": {
- "name": "mobtrks.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mocean_mobile": {
- "name": "mOcean Mobile",
- "categoryId": 4,
- "url": "http://www.moceanmobile.com/",
- "companyId": "pubmatic"
- },
- "mochapp": {
- "name": "MoChapp",
- "categoryId": 2,
- "url": "http://www.mochapp.com/",
- "companyId": "mochapp"
- },
- "modern_impact": {
- "name": "Modern Impact",
- "categoryId": 4,
- "url": "http://www.modernimpact.com/",
- "companyId": "modern_impact"
- },
- "modernus": {
- "name": "Modernus",
- "categoryId": 6,
- "url": "http://www.modernus.is",
- "companyId": "modernus"
- },
- "modulepush.com": {
- "name": "modulepush.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "mogo_interactive": {
- "name": "Mogo Interactive",
- "categoryId": 4,
- "url": "http://www.mogomarketing.com/",
- "companyId": "mogo_interactive"
- },
- "mokono_analytics": {
- "name": "Mokono Analytics",
- "categoryId": 4,
- "url": "http://www.populis.com",
- "companyId": "populis"
- },
- "monero_miner": {
- "name": "Monero Miner",
- "categoryId": 8,
- "url": "http://devappgrant.space/",
- "companyId": null
- },
- "monetate": {
- "name": "Monetate",
- "categoryId": 6,
- "url": "http://monetate.com",
- "companyId": "monetate"
- },
- "monetize_me": {
- "name": "Monetize Me",
- "categoryId": 4,
- "url": "http://www.monetize-me.com/",
- "companyId": "monetize_me"
- },
- "moneytizer": {
- "name": "Moneytizer",
- "categoryId": 4,
- "url": "https://www.themoneytizer.com/",
- "companyId": "the_moneytizer"
- },
- "mongoose_metrics": {
- "name": "Mongoose Metrics",
- "categoryId": 4,
- "url": "http://www.mongoosemetrics.com/",
- "companyId": "mongoose_metrics"
- },
- "monitis": {
- "name": "Monitis",
- "categoryId": 6,
- "url": "http://www.monitis.com/",
- "companyId": "monitis"
- },
- "monitus": {
- "name": "Monitus",
- "categoryId": 6,
- "url": "http://www.monitus.net/",
- "companyId": "monitus"
- },
- "monotype_gmbh": {
- "name": "Monotype GmbH",
- "categoryId": 9,
- "url": "http://www.monotype.com/",
- "companyId": "monotype"
- },
- "monotype_imaging": {
- "name": "Fonts.com Store",
- "categoryId": 2,
- "url": "https://www.fonts.com/",
- "companyId": "monotype"
- },
- "monsido": {
- "name": "Monsido",
- "categoryId": 6,
- "url": "https://monsido.com/",
- "companyId": "monsido"
- },
- "monster_advertising": {
- "name": "Monster Advertising",
- "categoryId": 4,
- "url": "http://www.monster.com/",
- "companyId": "monster_worldwide"
- },
- "mooxar": {
- "name": "Mooxar",
- "categoryId": 4,
- "url": "http://mooxar.com/",
- "companyId": "mooxar"
- },
- "mopinion.com": {
- "name": "Mopinion",
- "categoryId": 2,
- "url": "https://mopinion.com/",
- "companyId": "mopinion"
- },
- "mopub": {
- "name": "MoPub",
- "categoryId": 4,
- "url": "https://www.mopub.com/",
- "companyId": "twitter"
- },
- "more_communication": {
- "name": "More Communication",
- "categoryId": 4,
- "url": "http://www.more-com.co.jp/",
- "companyId": "more_communication"
- },
- "moreads": {
- "name": "moreAds",
- "categoryId": 4,
- "url": "https://www.moras.jp",
- "companyId": "moreads"
- },
- "motigo_webstats": {
- "name": "Motigo Webstats",
- "categoryId": 7,
- "url": "http://webstats.motigo.com/",
- "companyId": "motigo"
- },
- "motionpoint": {
- "name": "MotionPoint",
- "categoryId": 6,
- "url": "http://www.motionpoint.com/",
- "companyId": "motionpoint_corporation"
- },
- "mouseflow": {
- "name": "Mouseflow",
- "categoryId": 6,
- "url": "http://mouseflow.com/",
- "companyId": "mouseflow"
- },
- "mousestats": {
- "name": "MouseStats",
- "categoryId": 4,
- "url": "http://www.mousestats.com/",
- "companyId": "mousestats"
- },
- "mousetrace": {
- "name": "MouseTrace",
- "categoryId": 6,
- "url": "http://www.mousetrace.com/",
- "companyId": "mousetrace"
- },
- "mov.ad": {
- "name": "Mov.ad ",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "movable_ink": {
- "name": "Movable Ink",
- "categoryId": 2,
- "url": "https://movableink.com/",
- "companyId": "movable_ink"
- },
- "movable_media": {
- "name": "Movable Media",
- "categoryId": 4,
- "url": "http://www.movablemedia.com/",
- "companyId": "movable_media"
- },
- "moz": {
- "name": "Moz",
- "categoryId": 8,
- "url": "https://moz.com/",
- "companyId": null
- },
- "mozilla": {
- "name": "Mozilla Foundation",
- "categoryId": 8,
- "url": "https://www.mozilla.org/",
- "companyId": "mozilla",
- "source": "AdGuard"
- },
- "mozoo": {
- "name": "MoZoo",
- "categoryId": 4,
- "url": "http://mozoo.com/",
- "companyId": "mozoo"
- },
- "mrp": {
- "name": "MRP",
- "categoryId": 4,
- "url": "https://www.mrpfd.com/",
- "companyId": "mrp"
- },
- "mrpdata": {
- "name": "MRP",
- "categoryId": 6,
- "url": "http://mrpdata.com/Account/Login?ReturnUrl=%2F",
- "companyId": "fifth_story"
- },
- "mrskincash": {
- "name": "MrSkinCash",
- "categoryId": 3,
- "url": "http://mrskincash.com/",
- "companyId": "mrskincash.com"
- },
- "msedge": {
- "name": "Microsoft Edge",
- "categoryId": 8,
- "url": "https://www.microsoft.com/en-us/edge",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "msn": {
- "name": "Microsoft Network",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "muscula": {
- "name": "Muscula",
- "categoryId": 4,
- "url": "https://www.universe-surf.de/",
- "companyId": "universe_surf"
- },
- "mux_inc": {
- "name": "Mux",
- "categoryId": 0,
- "url": "https://mux.com/",
- "companyId": "mux_inc"
- },
- "mybloglog": {
- "name": "MyBlogLog",
- "categoryId": 7,
- "url": "http://www.mybloglog.com/",
- "companyId": "verizon"
- },
- "mybuys": {
- "name": "MyBuys",
- "categoryId": 4,
- "url": "http://www.mybuys.com/",
- "companyId": "magnetic"
- },
- "mycdn.me": {
- "name": "Mail.Ru CDN",
- "categoryId": 9,
- "url": "https://corp.megafon.com/",
- "companyId": "megafon"
- },
- "mycliplister.com": {
- "name": "Cliplister",
- "categoryId": 2,
- "url": "https://www.cliplister.com/",
- "companyId": null
- },
- "mycounter.ua": {
- "name": "MyCounter.ua",
- "categoryId": 6,
- "url": "http://mycounter.ua",
- "companyId": "mycounter.ua"
- },
- "myfonts": {
- "name": "MyFonts",
- "categoryId": 6,
- "url": "http://www.myfonts.com/",
- "companyId": "myfonts"
- },
- "myfonts_counter": {
- "name": "MyFonts",
- "categoryId": 6,
- "url": "http://www.myfonts.com/",
- "companyId": "myfonts"
- },
- "mypagerank": {
- "name": "MyPagerank",
- "categoryId": 6,
- "url": "http://www.mypagerank.net/",
- "companyId": "mypagerank"
- },
- "mystat": {
- "name": "MyStat",
- "categoryId": 7,
- "url": "http://mystat.hu/",
- "companyId": "myst_statistics"
- },
- "mythings": {
- "name": "myThings",
- "categoryId": 4,
- "url": "http://www.mythings.com/",
- "companyId": "mythings"
- },
- "mytop_counter": {
- "name": "Mytop Counter",
- "categoryId": 7,
- "url": "http://mytop-in.net/",
- "companyId": "mytop-in"
- },
- "nab": {
- "name": "National Australia Bank",
- "categoryId": 8,
- "url": "https://www.nab.com.au/",
- "companyId": "nab",
- "source": "AdGuard"
- },
- "nakanohito.jp": {
- "name": "Nakanohito",
- "categoryId": 4,
- "url": "http://nakanohito.jp/",
- "companyId": "userinsight"
- },
- "namogoo": {
- "name": "Namoogoo",
- "categoryId": 4,
- "url": "https://www.namogoo.com/",
- "companyId": null
- },
- "nanigans": {
- "name": "Nanigans",
- "categoryId": 4,
- "url": "http://www.nanigans.com/",
- "companyId": "nanigans"
- },
- "nano_interactive": {
- "name": "Nano Interactive",
- "categoryId": 4,
- "url": "http://www.nanointeractive.com/home/de",
- "companyId": "nano_interactive"
- },
- "nanorep": {
- "name": "nanoRep",
- "categoryId": 2,
- "url": "http://www.nanorep.com/",
- "companyId": "logmein"
- },
- "narando": {
- "name": "Narando",
- "categoryId": 0,
- "url": "https://narando.com/",
- "companyId": "narando"
- },
- "narrativ": {
- "name": "Narrativ",
- "categoryId": 4,
- "url": "https://narrativ.com/",
- "companyId": "narrativ"
- },
- "narrative_io": {
- "name": "Narrative",
- "categoryId": 6,
- "url": "http://www.narrative.io/",
- "companyId": "narrative.io"
- },
- "natimatica": {
- "name": "Natimatica",
- "categoryId": 4,
- "url": "http://natimatica.com/",
- "companyId": "natimatica"
- },
- "nativeads.com": {
- "name": "native ads",
- "categoryId": 4,
- "url": "https://nativeads.com/",
- "companyId": null
- },
- "nativeroll": {
- "name": "Nativeroll",
- "categoryId": 0,
- "url": "http://nativeroll.tv/",
- "companyId": "native_roll"
- },
- "nativo": {
- "name": "Nativo",
- "categoryId": 4,
- "url": "http://www.nativo.net/",
- "companyId": "nativo"
- },
- "navegg_dmp": {
- "name": "Navegg",
- "categoryId": 6,
- "url": "https://www.navegg.com/en/",
- "companyId": "navegg"
- },
- "naver.com": {
- "name": "Naver",
- "categoryId": 4,
- "url": "https://www.naver.com/",
- "companyId": "naver"
- },
- "naver_search": {
- "name": "Naver Search",
- "categoryId": 2,
- "url": "http://www.naver.com/",
- "companyId": "naver"
- },
- "nbc_news": {
- "name": "NBC News",
- "categoryId": 8,
- "url": "https://www.nbcnews.com/",
- "companyId": null
- },
- "ncol": {
- "name": "NCOL",
- "categoryId": 4,
- "url": "http://www.ncol.com/",
- "companyId": "ncol"
- },
- "needle": {
- "name": "Needle",
- "categoryId": 2,
- "url": "http://www.needle.com",
- "companyId": "needle"
- },
- "nekudo.com": {
- "name": "Nekudo",
- "categoryId": 2,
- "url": "https://nekudo.com/",
- "companyId": "nekudo"
- },
- "neodata": {
- "name": "Neodata",
- "categoryId": 4,
- "url": "http://neodatagroup.com/",
- "companyId": "neodata"
- },
- "neory": {
- "name": "NEORY ",
- "categoryId": 4,
- "url": "https://www.neory.com/",
- "companyId": "neory"
- },
- "nerfherdersolo_com": {
- "name": "nerfherdersolo.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "net-metrix": {
- "name": "NET-Metrix",
- "categoryId": 6,
- "url": "http://www.net-metrix.ch/",
- "companyId": "net-metrix"
- },
- "net-results": {
- "name": "Net-Results",
- "categoryId": 4,
- "url": "http://www.net-results.com/",
- "companyId": "net-results"
- },
- "net_avenir": {
- "name": "Net Avenir",
- "categoryId": 4,
- "url": "http://www.netavenir.com/",
- "companyId": "net_avenir"
- },
- "net_communities": {
- "name": "Net Communities",
- "categoryId": 4,
- "url": "http://www.netcommunities.com/",
- "companyId": "net_communities"
- },
- "net_visibility": {
- "name": "NET Visibility",
- "categoryId": 4,
- "url": "http://www.netvisibility.co.uk",
- "companyId": "net_visibility"
- },
- "netbiscuits": {
- "name": "Netbiscuits",
- "categoryId": 6,
- "url": "http://www.netbiscuits.net/",
- "companyId": "netbiscuits"
- },
- "netbooster_group": {
- "name": "NetBooster Group",
- "categoryId": 4,
- "url": "http://www.netbooster.com/",
- "companyId": "netbooster_group"
- },
- "netflix": {
- "name": "Netflix",
- "categoryId": 0,
- "url": "https://www.netflix.com/",
- "companyId": "netflix",
- "source": "AdGuard"
- },
- "netify": {
- "name": "Netify",
- "categoryId": 8,
- "url": "https://www.netify.ai/",
- "companyId": "netify",
- "source": "AdGuard"
- },
- "netletix": {
- "name": "Netletix",
- "categoryId": 4,
- "url": "http://www.netletix.com//",
- "companyId": "ip_de"
- },
- "netminers": {
- "name": "Netminers",
- "categoryId": 6,
- "url": "http://netminers.dk/",
- "companyId": "netminers"
- },
- "netmining": {
- "name": "Netmining",
- "categoryId": 4,
- "url": "http://www.netmining.com/",
- "companyId": "zeta"
- },
- "netmonitor": {
- "name": "NetMonitor",
- "categoryId": 6,
- "url": "http://www.netmanager.net/en/",
- "companyId": "netmonitor"
- },
- "netratings_sitecensus": {
- "name": "NetRatings SiteCensus",
- "categoryId": 4,
- "url": "http://www.nielsen-online.com/intlpage.html",
- "companyId": "nielsen"
- },
- "netrk.net": {
- "name": "nfxTrack",
- "categoryId": 6,
- "url": "https://netrk.net/",
- "companyId": "netzeffekt"
- },
- "netseer": {
- "name": "NetSeer",
- "categoryId": 4,
- "url": "http://www.netseer.com/",
- "companyId": "netseer"
- },
- "netshelter": {
- "name": "NetShelter",
- "categoryId": 4,
- "url": "http://www.netshelter.net/",
- "companyId": "netshelter"
- },
- "netsprint_audience": {
- "name": "Netsprint Audience",
- "categoryId": 6,
- "url": "http://audience.netsprint.eu/",
- "companyId": "netsprint"
- },
- "networkedblogs": {
- "name": "NetworkedBlogs",
- "categoryId": 7,
- "url": "http://w.networkedblogs.com/",
- "companyId": "networkedblogs"
- },
- "neustar_adadvisor": {
- "name": "Neustar AdAdvisor",
- "categoryId": 4,
- "url": "http://www.targusinfo.com/",
- "companyId": "neustar"
- },
- "new_relic": {
- "name": "New Relic",
- "categoryId": 6,
- "url": "http://newrelic.com/",
- "companyId": "new_relic"
- },
- "newscgp.com": {
- "name": "News Connect",
- "categoryId": 4,
- "url": "https://newscorp.com/",
- "companyId": "news_corp"
- },
- "newsmax": {
- "name": "Newsmax",
- "categoryId": 4,
- "url": "http://www.newsmax.com/",
- "companyId": "newsmax"
- },
- "newstogram": {
- "name": "Newstogram",
- "categoryId": 4,
- "url": "http://www.newstogram.com/",
- "companyId": "dailyme"
- },
- "newsupdatedir.info": {
- "name": "newsupdatedir.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "newsupdatewe.info": {
- "name": "newsupdatewe.info",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "newtention": {
- "name": "Newtention",
- "categoryId": 4,
- "url": "http://www.newtention.de/",
- "companyId": "next_audience"
- },
- "nexage": {
- "name": "Nexage",
- "categoryId": 4,
- "url": "http://www.nexage.com/",
- "companyId": "verizon"
- },
- "nexeps.com": {
- "name": "neXeps",
- "categoryId": 4,
- "url": "http://nexeps.com/",
- "companyId": null
- },
- "next_performance": {
- "name": "Next Performance",
- "categoryId": 4,
- "url": "http://www.nextperformance.com/",
- "companyId": "nextperf"
- },
- "next_user": {
- "name": "Next User",
- "categoryId": 4,
- "url": "https://www.nextuser.com/",
- "companyId": "next_user"
- },
- "nextag_roi_optimizer": {
- "name": "Nextag ROI Optimizer",
- "categoryId": 4,
- "url": "http://www.nextag.com/",
- "companyId": "nextag"
- },
- "nextclick": {
- "name": "Nextclick",
- "categoryId": 4,
- "url": "http://nextclick.pl/",
- "companyId": "leadbullet"
- },
- "nextstat": {
- "name": "NextSTAT",
- "categoryId": 6,
- "url": "http://www.nextstat.com/",
- "companyId": "nextstat"
- },
- "neytiv": {
- "name": "Neytiv",
- "categoryId": 6,
- "url": "http://neytiv.com/",
- "companyId": "neytiv"
- },
- "ngage_inc.": {
- "name": "NGage INC.",
- "categoryId": 6,
- "url": "https://www.nginx.com/",
- "companyId": "nginx"
- },
- "nice264.com": {
- "name": "Nice264",
- "categoryId": 0,
- "url": "http://nice264.com/",
- "companyId": null
- },
- "nimblecommerce": {
- "name": "NimbleCommerce",
- "categoryId": 4,
- "url": "http://www.nimblecommerce.com/",
- "companyId": "nimblecommerce"
- },
- "nine_direct_digital": {
- "name": "Nine Digital Direct",
- "categoryId": 4,
- "url": "https://ninedigitaldirect.com.au/",
- "companyId": "nine_entertainment",
- "source": "AdGuard"
- },
- "ninja_access_analysis": {
- "name": "Ninja Access Analysis",
- "categoryId": 6,
- "url": "http://www.ninja.co.jp/analysis/",
- "companyId": "samurai_factory"
- },
- "nirror": {
- "name": "Nirror",
- "categoryId": 6,
- "url": "https://www.nirror.com/",
- "companyId": "nirror"
- },
- "nitropay": {
- "name": "NitroPay",
- "categoryId": 4,
- "url": "https://nitropay.com/",
- "companyId": "gg_software"
- },
- "nk.pl_widgets": {
- "name": "NK.pl Widgets",
- "categoryId": 4,
- "url": "http://nk.pl",
- "companyId": "nk.pl"
- },
- "noaa.gov": {
- "name": "National Oceanic and Atmospheric Administration",
- "categoryId": 8,
- "url": "https://noaa.gov/",
- "companyId": null
- },
- "noddus": {
- "name": "Noddus",
- "categoryId": 4,
- "url": "https://www.enterprise.noddus.com/",
- "companyId": "noddus"
- },
- "nolix": {
- "name": "Nolix",
- "categoryId": 4,
- "url": "http://nolix.ru/",
- "companyId": "nolix"
- },
- "nonli": {
- "name": "Nonli",
- "categoryId": 4,
- "url": "https://www.nonli.com/",
- "companyId": "nonli",
- "source": "AdGuard"
- },
- "nonstop_consulting": {
- "name": "Resolution Media",
- "categoryId": 4,
- "url": "https://resolutionmedia.com/",
- "companyId": "resolution_media"
- },
- "noop.style": {
- "name": "noop.style",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nosto.com": {
- "name": "nosto",
- "categoryId": 6,
- "url": "http://www.nosto.com/",
- "companyId": null
- },
- "notify": {
- "name": "Notify",
- "categoryId": 4,
- "url": "http://notify.ag/en/",
- "companyId": null
- },
- "notifyfox": {
- "name": "Notifyfox",
- "categoryId": 6,
- "url": "https://notifyfox.com/",
- "companyId": "notifyfox"
- },
- "notion": {
- "name": "Notion",
- "categoryId": 8,
- "url": "https://www.notion.so/",
- "companyId": "notion",
- "source": "AdGuard"
- },
- "now_interact": {
- "name": "Now Interact",
- "categoryId": 6,
- "url": "http://nowinteract.com/",
- "companyId": "now_interact"
- },
- "npario": {
- "name": "nPario",
- "categoryId": 6,
- "url": "http://npario.com/",
- "companyId": "npario"
- },
- "nplexmedia": {
- "name": "nPlexMedia",
- "categoryId": 4,
- "url": "http://www.nplexmedia.com/",
- "companyId": "nplexmedia"
- },
- "nrelate": {
- "name": "nRelate",
- "categoryId": 2,
- "url": "http://nrelate.com/",
- "companyId": "iac_apps"
- },
- "ns8": {
- "name": "NS8",
- "categoryId": 4,
- "url": "https://www.ns8.com/",
- "companyId": null
- },
- "nt.vc": {
- "name": "Next Tuesday GmbH",
- "categoryId": 8,
- "url": "http://www.nexttuesday.de/",
- "companyId": null
- },
- "ntent": {
- "name": "NTENT",
- "categoryId": 4,
- "url": "http://www.verticalsearchworks.com",
- "companyId": "ntent"
- },
- "ntppool": {
- "name": "Network Time Protocol",
- "categoryId": 5,
- "url": "https://ntp.org/",
- "companyId": "network_time_foundation",
- "source": "AdGuard"
- },
- "nttcom_online_marketing_solutions": {
- "name": "NTTCom Online Marketing Solutions",
- "categoryId": 6,
- "url": "http://www.digitalforest.co.jp/",
- "companyId": "nttcom_online_marketing_solutions"
- },
- "nuffnang": {
- "name": "Nuffnang",
- "categoryId": 4,
- "url": "http://nuffnang.com/",
- "companyId": "nuffnang"
- },
- "nugg.ad": {
- "name": "Nugg.Ad",
- "categoryId": 4,
- "url": "http://www.nugg.ad/",
- "companyId": "nugg.ad"
- },
- "nui_media": {
- "name": "NUI Media",
- "categoryId": 4,
- "url": "http://adjuggler.com/",
- "companyId": "nui_media"
- },
- "numbers.md": {
- "name": "Numbers.md",
- "categoryId": 6,
- "url": "https://numbers.md/",
- "companyId": "numbers.md"
- },
- "numerator": {
- "name": "Numerator",
- "categoryId": 5,
- "url": "http://www.channeliq.com/",
- "companyId": "numerator"
- },
- "ny_times_tagx": {
- "name": "NY Times TagX",
- "categoryId": 6,
- "url": "https://www.nytimes.com/",
- "companyId": "the_new_york_times"
- },
- "nyacampwk.com": {
- "name": "nyacampwk.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nyetm2mkch.com": {
- "name": "nyetm2mkch.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nyt.com": {
- "name": "The New York Times",
- "categoryId": 8,
- "url": "https://www.nytimes.com/",
- "companyId": "the_new_york_times"
- },
- "o12zs3u2n.com": {
- "name": "o12zs3u2n.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "o2.pl": {
- "name": "o2.pl",
- "categoryId": 8,
- "url": "https://www.o2.pl/",
- "companyId": "o2.pl"
- },
- "o2online.de": {
- "name": "o2online.de",
- "categoryId": 8,
- "url": "https://www.o2online.de/",
- "companyId": null
- },
- "oath_inc": {
- "name": "Oath",
- "categoryId": 8,
- "url": "https://www.oath.com/",
- "companyId": "verizon"
- },
- "observer": {
- "name": "Observer",
- "categoryId": 4,
- "url": "http://www.observerapp.com",
- "companyId": "observer"
- },
- "ocioso": {
- "name": "Ocioso",
- "categoryId": 7,
- "url": "http://ocioso.com.br/",
- "companyId": "ocioso"
- },
- "oclasrv.com": {
- "name": "oclasrv.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "octapi.net": {
- "name": "octapi.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "octavius": {
- "name": "Octavius",
- "categoryId": 4,
- "url": "http://octavius.rocks/",
- "companyId": "octavius"
- },
- "office.com": {
- "name": "office.com",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "office.net": {
- "name": "office.net",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "office365.com": {
- "name": "office365.com",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "oghub.io": {
- "name": "OG Hub",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "oh_my_stats": {
- "name": "Oh My Stats",
- "categoryId": 6,
- "url": "https://ohmystats.com/",
- "companyId": "oh_my_stats"
- },
- "ohana_advertising_network": {
- "name": "Ohana Advertising Network",
- "categoryId": 4,
- "url": "http://adohana.com/",
- "companyId": "ohana_advertising_network"
- },
- "olapic": {
- "name": "Olapic",
- "categoryId": 4,
- "url": "https://www.olapic.com/",
- "companyId": "olapic"
- },
- "olark": {
- "name": "Olark",
- "categoryId": 2,
- "url": "http://www.olark.com/",
- "companyId": "olark"
- },
- "olx-st.com": {
- "name": "OLX",
- "categoryId": 8,
- "url": "http://www.olx.com/",
- "companyId": null
- },
- "omarsys.com": {
- "name": "Omarsys",
- "categoryId": 4,
- "url": "http://omarsys.com/",
- "companyId": "xcaliber"
- },
- "ometria": {
- "name": "Ometria",
- "categoryId": 4,
- "url": "http://www.ometria.com/",
- "companyId": "ometria"
- },
- "omg": {
- "name": "OMG",
- "categoryId": 7,
- "url": "http://uk.omgpm.com/",
- "companyId": "optimise_media"
- },
- "omniconvert.com": {
- "name": "Omniconvert",
- "categoryId": 4,
- "url": "https://www.omniconvert.com/",
- "companyId": "omniconvert"
- },
- "omniscienta": {
- "name": "Omniscienta",
- "categoryId": 4,
- "url": "http://www.omniscienta.com/",
- "companyId": null
- },
- "oms": {
- "name": "OMS",
- "categoryId": 4,
- "url": "http://oms.eu/",
- "companyId": null
- },
- "onaudience": {
- "name": "OnAudience",
- "categoryId": 4,
- "url": "http://www.onaudience.com/",
- "companyId": "cloud_technologies"
- },
- "oneall": {
- "name": "Oneall",
- "categoryId": 7,
- "url": "http://www.oneall.com/",
- "companyId": "oneall"
- },
- "onefeed": {
- "name": "Onefeed",
- "categoryId": 6,
- "url": "http://www.onefeed.co.uk",
- "companyId": "onefeed"
- },
- "onesignal": {
- "name": "OneSignal",
- "categoryId": 5,
- "url": "https://onesignal.com/",
- "companyId": "onesignal"
- },
- "onestat": {
- "name": "OneStat",
- "categoryId": 6,
- "url": "http://www.onestat.com/",
- "companyId": "onestat_international_b.v."
- },
- "onet.pl": {
- "name": "onet",
- "categoryId": 8,
- "url": "https://www.onet.pl/",
- "companyId": null
- },
- "onetag": {
- "name": "OneTag",
- "categoryId": 4,
- "url": "https://www.onetag.com/",
- "companyId": "onetag"
- },
- "onetrust": {
- "name": "OneTrust",
- "categoryId": 5,
- "url": "https://www.onetrust.com/",
- "companyId": "onetrust"
- },
- "onfocus.io": {
- "name": "OnFocus",
- "categoryId": 4,
- "url": "http://onfocus.io/",
- "companyId": "onfocus"
- },
- "onlinewebstat": {
- "name": "Onlinewebstat",
- "categoryId": 6,
- "url": "http://www.onlinewebstats.com/index.php?lang=en",
- "companyId": "onlinewebstat"
- },
- "onswipe": {
- "name": "Onswipe",
- "categoryId": 4,
- "url": "http://www.onswipe.com/",
- "companyId": "onswipe"
- },
- "onthe.io": {
- "name": "OnThe.io",
- "categoryId": 6,
- "url": "https://t.onthe.io/media",
- "companyId": "onthe.io"
- },
- "ontraport_autopilot": {
- "name": "Ontraport Autopilot",
- "categoryId": 4,
- "url": "http://www.moon-ray.com/",
- "companyId": "ontraport"
- },
- "ooyala.com": {
- "name": "Ooyala Player",
- "categoryId": 0,
- "url": "https://www.ooyala.com/",
- "companyId": "telstra"
- },
- "ooyala_analytics": {
- "name": "Ooyala Analytics",
- "categoryId": 6,
- "url": "https://www.telstraglobal.com/",
- "companyId": "telstra"
- },
- "open_adexchange": {
- "name": "Open AdExchange",
- "categoryId": 4,
- "url": "http://openadex.dk/",
- "companyId": "open_adexchange"
- },
- "open_adstream": {
- "name": "Open Adstream",
- "categoryId": 4,
- "url": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "open_share_count": {
- "name": "Open Share Count",
- "categoryId": 4,
- "url": "http://opensharecount.com/",
- "companyId": "open_share_count"
- },
- "openai": {
- "name": "OpenAI",
- "categoryId": 8,
- "url": "https://openai.com/",
- "companyId": "openai",
- "source": "AdGuard"
- },
- "openload": {
- "name": "Openload",
- "categoryId": 9,
- "url": "https://openload.co/",
- "companyId": null
- },
- "openstat": {
- "name": "OpenStat",
- "categoryId": 6,
- "url": "https://www.openstat.ru/",
- "companyId": "openstat"
- },
- "opentracker": {
- "name": "Opentracker",
- "categoryId": 6,
- "url": "http://www.opentracker.net/",
- "companyId": "opentracker"
- },
- "openwebanalytics": {
- "name": "Open Web Analytics",
- "categoryId": 6,
- "url": "http://www.openwebanalytics.com/",
- "companyId": "open_web_analytics"
- },
- "openx": {
- "name": "OpenX",
- "categoryId": 4,
- "url": "https://www.openx.com",
- "companyId": "openx"
- },
- "operative_media": {
- "name": "Operative Media",
- "categoryId": 4,
- "url": "http://www.operative.com/",
- "companyId": "operative_media"
- },
- "opinary": {
- "name": "Opinary",
- "categoryId": 2,
- "url": "http://opinary.com/",
- "companyId": "opinary"
- },
- "opinionbar": {
- "name": "OpinionBar",
- "categoryId": 2,
- "url": "http://www.metrixlab.com",
- "companyId": "metrixlab"
- },
- "oplytic": {
- "name": "Oplytic",
- "categoryId": 6,
- "url": "http://www.oplytic.com",
- "companyId": "oplytic"
- },
- "oppo": {
- "name": "OPPO",
- "categoryId": 101,
- "url": "https://www.oppo.com/",
- "companyId": "bbk",
- "source": "AdGuard"
- },
- "opta.net": {
- "name": "Opta",
- "categoryId": 6,
- "url": "http://www.optasports.de/",
- "companyId": "opta_sports"
- },
- "optaim": {
- "name": "OptAim",
- "categoryId": 4,
- "url": "http://optaim.com/",
- "companyId": "optaim"
- },
- "optanaon": {
- "name": "Optanaon by OneTrust",
- "categoryId": 5,
- "url": "https://www.cookielaw.org/",
- "companyId": "onetrust"
- },
- "optify": {
- "name": "Optify",
- "categoryId": 4,
- "url": "http://www.optify.net",
- "companyId": "optify"
- },
- "optimatic": {
- "name": "Optimatic",
- "categoryId": 0,
- "url": "http://www.optimatic.com/",
- "companyId": "optimatic"
- },
- "optimax_media_delivery": {
- "name": "Optimax Media Delivery",
- "categoryId": 4,
- "url": "http://optmd.com/",
- "companyId": "optimax_media_delivery"
- },
- "optimicdn.com": {
- "name": "OptimiCDN",
- "categoryId": 9,
- "url": "https://en.optimicdn.com/",
- "companyId": null
- },
- "optimizely": {
- "name": "Optimizely",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_error_log": {
- "name": "Optimizely Error Log",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_geo_targeting": {
- "name": "Optimizely Geographical Targeting",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_logging": {
- "name": "Optimizely Logging",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimonk": {
- "name": "Optimonk",
- "categoryId": 6,
- "url": "https://www.optimonk.com/",
- "companyId": "optimonk"
- },
- "optinmonster": {
- "name": "OptInMonster",
- "categoryId": 2,
- "url": "https://optinmonster.com/",
- "companyId": "optinmonster"
- },
- "optinproject.com": {
- "name": "OptinProject",
- "categoryId": 4,
- "url": "https://www.optincollect.com/en",
- "companyId": "optincollect"
- },
- "optomaton": {
- "name": "Optomaton",
- "categoryId": 4,
- "url": "http://www.optomaton.com/",
- "companyId": "ve"
- },
- "ora.tv": {
- "name": "Ora.TV",
- "categoryId": 4,
- "url": "http://www.ora.tv/",
- "companyId": "ora.tv"
- },
- "oracle_infinity": {
- "name": "Oracle Infinity Behavioral Intelligence",
- "categoryId": 6,
- "url": "https://www.oracle.com/au/cx/marketing/digital-intelligence/",
- "companyId": "oracle",
- "source": "AdGuard"
- },
- "oracle_live_help": {
- "name": "Oracle Live Help",
- "categoryId": 2,
- "url": "http://www.oracle.com/us/products/applications/atg/live-help-on-demand/index.html",
- "companyId": "oracle"
- },
- "oracle_rightnow": {
- "name": "Oracle RightNow",
- "categoryId": 8,
- "url": "http://www.oracle.com/",
- "companyId": "oracle"
- },
- "orange": {
- "name": "Orange",
- "categoryId": 4,
- "url": "http://www.orange.co.uk/",
- "companyId": "orange_mobile"
- },
- "orange142": {
- "name": "Orange142",
- "categoryId": 4,
- "url": "http://www.orange142.com/",
- "companyId": "orange142"
- },
- "orange_france": {
- "name": "Orange France",
- "categoryId": 8,
- "url": "https://www.orange.fr/",
- "companyId": "orange_france"
- },
- "orangesoda": {
- "name": "OrangeSoda",
- "categoryId": 4,
- "url": "http://www.orangesoda.com/",
- "companyId": "orangesoda"
- },
- "orc_international": {
- "name": "ORC International",
- "categoryId": 4,
- "url": "https://orcinternational.com/",
- "companyId": "engine_group"
- },
- "order_groove": {
- "name": "Order Groove",
- "categoryId": 4,
- "url": "http://ordergroove.com/",
- "companyId": "order_groove"
- },
- "orel_site": {
- "name": "Orel Site",
- "categoryId": 2,
- "url": "https://www.orelsite.ru/",
- "companyId": "orel_site"
- },
- "otclick": {
- "name": "otClick",
- "categoryId": 4,
- "url": "http://otclick-adv.ru/",
- "companyId": "otclick"
- },
- "othersearch.info": {
- "name": "FlowSurf",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "otm-r.com": {
- "name": "OTM",
- "categoryId": 4,
- "url": "http://otm-r.com/",
- "companyId": null
- },
- "otto.de": {
- "name": "Otto Group",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "outbrain": {
- "name": "Outbrain",
- "categoryId": 4,
- "url": "https://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_amplify": {
- "name": "Outbrain Amplify",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_analytics": {
- "name": "Outbrain Analytics",
- "categoryId": 6,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_logger": {
- "name": "Outbrain Logger",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_pixel": {
- "name": "Outbrain Pixel",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_utilities": {
- "name": "Outbrain Utilities",
- "categoryId": 6,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_widgets": {
- "name": "Outbrain Widgets",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outlook": {
- "name": "Microsoft Outlook",
- "categoryId": 13,
- "url": "https://outlook.live.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "overheat.it": {
- "name": "overheat",
- "categoryId": 6,
- "url": "https://overheat.io/",
- "companyId": null
- },
- "owa": {
- "name": "OWA",
- "categoryId": 6,
- "url": "http://oewa.at/",
- "companyId": "the_austrian_web_analysis"
- },
- "owneriq": {
- "name": "OwnerIQ",
- "categoryId": 4,
- "url": "http://www.owneriq.com/",
- "companyId": "owneriq"
- },
- "ownpage": {
- "name": "Ownpage",
- "categoryId": 2,
- "url": "http://www.ownpage.fr/index.en.html",
- "companyId": null
- },
- "owox.com": {
- "name": "OWOX",
- "categoryId": 6,
- "url": "https://www.owox.com/",
- "companyId": "owox_inc"
- },
- "oxamedia": {
- "name": "OxaMedia",
- "categoryId": 2,
- "url": "http://www.oxamedia.com/",
- "companyId": "oxamedia"
- },
- "oxomi.com": {
- "name": "Oxomi",
- "categoryId": 4,
- "url": "https://oxomi.com/",
- "companyId": null
- },
- "oztam": {
- "name": "OzTAM",
- "categoryId": 8,
- "url": "https://oztam.com.au/",
- "companyId": "oztam",
- "source": "AdGuard"
- },
- "pageanalytics.space": {
- "name": "pageanalytics.space",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pagefair": {
- "name": "PageFair",
- "categoryId": 2,
- "url": "https://pagefair.com/",
- "companyId": "blockthrough"
- },
- "pagescience": {
- "name": "PageScience",
- "categoryId": 4,
- "url": "http://www.precisionhealthmedia.com/index.html",
- "companyId": "pagescience"
- },
- "paid-to-promote": {
- "name": "Paid-To-Promote",
- "categoryId": 4,
- "url": "http://www.paid-to-promote.net/",
- "companyId": "paid-to-promote"
- },
- "paperg": {
- "name": "PaperG",
- "categoryId": 4,
- "url": "http://www.paperg.com/",
- "companyId": "paperg"
- },
- "pardot": {
- "name": "Pardot",
- "categoryId": 6,
- "url": "http://www.pardot.com/",
- "companyId": "pardot"
- },
- "parsely": {
- "name": "Parse.ly",
- "categoryId": 6,
- "url": "https://www.parse.ly/",
- "companyId": "parse.ly"
- },
- "partner-ads": {
- "name": "Partner-Ads",
- "categoryId": 4,
- "url": "http://www.partner-ads.com/",
- "companyId": "partner-ads"
- },
- "passionfruit": {
- "name": "Passionfruit",
- "categoryId": 4,
- "url": "http://passionfruitads.com/",
- "companyId": "passionfruit"
- },
- "pathful": {
- "name": "Pathful",
- "categoryId": 6,
- "url": "http://www.pathful.com/",
- "companyId": "pathful"
- },
- "pay-hit": {
- "name": "Pay-Hit",
- "categoryId": 4,
- "url": "http://pay-hit.com/",
- "companyId": "pay-hit"
- },
- "payclick": {
- "name": "PayClick",
- "categoryId": 4,
- "url": "http://payclick.it/",
- "companyId": "payclick"
- },
- "paykickstart": {
- "name": "PayKickstart",
- "categoryId": 6,
- "url": "https://paykickstart.com/",
- "companyId": "paykickstart"
- },
- "paypal": {
- "name": "PayPal",
- "categoryId": 2,
- "url": "https://www.paypal.com",
- "companyId": "ebay"
- },
- "pcvark.com": {
- "name": "pcvark.com",
- "categoryId": 11,
- "url": "https://pcvark.com/",
- "companyId": null
- },
- "peer39": {
- "name": "Peer39",
- "categoryId": 4,
- "url": "http://www.peer39.com/",
- "companyId": "peer39"
- },
- "peer5.com": {
- "name": "Peer5",
- "categoryId": 9,
- "url": "https://www.peer5.com/",
- "companyId": "peer5"
- },
- "peerius": {
- "name": "Peerius",
- "categoryId": 2,
- "url": "http://www.peerius.com/",
- "companyId": "peerius"
- },
- "pendo.io": {
- "name": "pendo",
- "categoryId": 6,
- "url": "https://www.pendo.io/",
- "companyId": null
- },
- "pepper.com": {
- "name": "Pepper",
- "categoryId": 4,
- "url": "https://www.pepper.com/",
- "companyId": "6minutes"
- },
- "pepperjam": {
- "name": "Pepperjam",
- "categoryId": 4,
- "url": "http://www.pepperjam.com",
- "companyId": "pepperjam"
- },
- "pepsia": {
- "name": "Pepsia",
- "categoryId": 6,
- "url": "http://pepsia.com/en/",
- "companyId": "pepsia"
- },
- "perfdrive.com": {
- "name": "perfdrive.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "perfect_audience": {
- "name": "Perfect Audience",
- "categoryId": 4,
- "url": "https://www.perfectaudience.com/",
- "companyId": "perfect_audience"
- },
- "perfect_market": {
- "name": "Perfect Market",
- "categoryId": 4,
- "url": "http://perfectmarket.com/",
- "companyId": "perfect_market"
- },
- "perfops": {
- "name": "PerfOps",
- "categoryId": 6,
- "url": "https://perfops.net/",
- "companyId": "perfops",
- "source": "AdGuard"
- },
- "perform_group": {
- "name": "Perform Group",
- "categoryId": 5,
- "url": "http://www.performgroup.co.uk/",
- "companyId": "perform_group"
- },
- "performable": {
- "name": "Performable",
- "categoryId": 6,
- "url": "http://www.performable.com/",
- "companyId": "hubspot"
- },
- "performancing_metrics": {
- "name": "Performancing Metrics",
- "categoryId": 6,
- "url": "http://pmetrics.performancing.com",
- "companyId": "performancing"
- },
- "performax": {
- "name": "Performax",
- "categoryId": 4,
- "url": "https://www.performax.cz/",
- "companyId": "performax"
- },
- "perimeterx.net": {
- "name": "Perimeterx",
- "categoryId": 6,
- "url": "https://www.perimeterx.com/",
- "companyId": null
- },
- "permutive": {
- "name": "Permutive",
- "categoryId": 4,
- "url": "http://permutive.com/",
- "companyId": "permutive"
- },
- "persgroep": {
- "name": "De Persgroep",
- "categoryId": 4,
- "url": "https://www.persgroep.be/",
- "companyId": "de_persgroep"
- },
- "persianstat": {
- "name": "PersianStat",
- "categoryId": 6,
- "url": "http://www.persianstat.com",
- "companyId": "persianstat"
- },
- "persio": {
- "name": "Persio",
- "categoryId": 4,
- "url": "http://www.pers.io/",
- "companyId": "pers.io"
- },
- "personyze": {
- "name": "Personyze",
- "categoryId": 2,
- "url": "http://personyze.com/",
- "companyId": "personyze"
- },
- "petametrics": {
- "name": "LiftIgniter",
- "categoryId": 2,
- "url": "https://www.liftigniter.com/",
- "companyId": "liftigniter"
- },
- "pheedo": {
- "name": "Pheedo",
- "categoryId": 4,
- "url": "http://pheedo.com/",
- "companyId": "pheedo"
- },
- "phonalytics": {
- "name": "Phonalytics",
- "categoryId": 2,
- "url": "http://www.phonalytics.com/",
- "companyId": "phonalytics"
- },
- "phunware": {
- "name": "Phunware",
- "categoryId": 4,
- "url": "https://www.phunware.com",
- "companyId": "phunware"
- },
- "piguiqproxy.com": {
- "name": "piguiqproxy.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pilot": {
- "name": "Pilot",
- "categoryId": 6,
- "url": "http://www.pilot.de/en/home.html",
- "companyId": "pilot_gmbh"
- },
- "pingdom": {
- "name": "Pingdom",
- "categoryId": 6,
- "url": "https://www.pingdom.com/",
- "companyId": "pingdom"
- },
- "pinterest": {
- "name": "Pinterest",
- "categoryId": 7,
- "url": "http://pinterest.com/",
- "companyId": "pinterest"
- },
- "pinterest_conversion_tracker": {
- "name": "Pinterest Conversion Tracker",
- "categoryId": 6,
- "url": "http://pinterest.com/",
- "companyId": "pinterest"
- },
- "pipz": {
- "name": "Pipz",
- "categoryId": 4,
- "url": "https://pipz.com/br/",
- "companyId": "pipz_automation"
- },
- "piwik": {
- "name": "Tombstone (Matomo/Piwik before the split)",
- "categoryId": 6,
- "url": "http://piwik.org/",
- "companyId": "matomo"
- },
- "piwik_pro_analytics_suite": {
- "name": "Piwik PRO Analytics Suite",
- "categoryId": 6,
- "url": "https://piwik.pro/",
- "companyId": "piwik_pro"
- },
- "pixalate": {
- "name": "Pixalate",
- "categoryId": 4,
- "url": "http://www.pixalate.com/",
- "companyId": "pixalate"
- },
- "pixel_union": {
- "name": "Pixel Union",
- "categoryId": 4,
- "url": "https://www.pixelunion.net/",
- "companyId": "pixel_union"
- },
- "pixfuture": {
- "name": "PixFuture",
- "categoryId": 4,
- "url": "http://www.pixfuture.com",
- "companyId": "pixfuture"
- },
- "piximedia": {
- "name": "Piximedia",
- "categoryId": 4,
- "url": "http://www.piximedia.com/piximedia?en",
- "companyId": "piximedia"
- },
- "pizzaandads_com": {
- "name": "pizzaandads.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "placester": {
- "name": "Placester",
- "categoryId": 4,
- "url": "https://placester.com/",
- "companyId": "placester"
- },
- "pladform.ru": {
- "name": "Pladform",
- "categoryId": 4,
- "url": "https://distribution.pladform.ru/",
- "companyId": "pladform"
- },
- "plan.net_experience_cloud": {
- "name": "Plan.net Experience Cloud",
- "categoryId": 6,
- "url": "https://www.serviceplan.com/",
- "companyId": "serviceplan"
- },
- "platform360": {
- "name": "Platform360",
- "categoryId": 4,
- "url": "http://www.platform360.co/#home",
- "companyId": null
- },
- "platformone": {
- "name": "Platform One",
- "categoryId": 4,
- "url": "https://www.platform-one.co.jp/",
- "companyId": "daconsortium"
- },
- "play_by_mamba": {
- "name": "Play by Mamba",
- "categoryId": 4,
- "url": "http://play.mamba.ru/",
- "companyId": "mamba"
- },
- "playbuzz.com": {
- "name": "Playbuzz",
- "categoryId": 2,
- "url": "https://www.playbuzz.com/",
- "companyId": "playbuzz"
- },
- "plenty_of_fish": {
- "name": "Plenty Of Fish",
- "categoryId": 6,
- "url": "http://www.pof.com/",
- "companyId": "plentyoffish"
- },
- "plex": {
- "name": "Plex",
- "categoryId": 0,
- "url": "https://www.plex.tv/",
- "companyId": "plex",
- "source": "AdGuard"
- },
- "plex_metrics": {
- "name": "Plex Metrics",
- "categoryId": 6,
- "url": "https://www.plex.tv/",
- "companyId": "plex"
- },
- "plista": {
- "name": "Plista",
- "categoryId": 4,
- "url": "http://www.plista.com",
- "companyId": "plista"
- },
- "plugrush": {
- "name": "PlugRush",
- "categoryId": 4,
- "url": "http://www.plugrush.com/",
- "companyId": "plugrush"
- },
- "pluso.ru": {
- "name": "Pluso",
- "categoryId": 7,
- "url": "https://share.pluso.ru/",
- "companyId": "pluso"
- },
- "plutusads": {
- "name": "Plutusads",
- "categoryId": 4,
- "url": "http://plutusads.com",
- "companyId": "plutusads"
- },
- "pmddby.com": {
- "name": "pmddby.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "pnamic.com": {
- "name": "pnamic.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "po.st": {
- "name": "Po.st",
- "categoryId": 7,
- "url": "https://www.po.st/",
- "companyId": "rythmone"
- },
- "pocket": {
- "name": "Pocket",
- "categoryId": 6,
- "url": "http://getpocket.com/",
- "companyId": "pocket"
- },
- "pocketcents": {
- "name": "PocketCents",
- "categoryId": 4,
- "url": "http://pocketcents.com/",
- "companyId": "pocketcents"
- },
- "pointific": {
- "name": "Pointific",
- "categoryId": 6,
- "url": "http://www.pontiflex.com/",
- "companyId": "pontiflex"
- },
- "pointroll": {
- "name": "PointRoll",
- "categoryId": 4,
- "url": "http://www.pointroll.com/",
- "companyId": "gannett_digital_media_network"
- },
- "poirreleast.club": {
- "name": "poirreleast.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "polar.me": {
- "name": "Polar",
- "categoryId": 4,
- "url": "https://polar.me/",
- "companyId": "polar_inc"
- },
- "polldaddy": {
- "name": "Polldaddy",
- "categoryId": 2,
- "url": "http://polldaddy.com/",
- "companyId": "automattic"
- },
- "polyad": {
- "name": "PolyAd",
- "categoryId": 4,
- "url": "http://polyad.net",
- "companyId": "polyad"
- },
- "polyfill.io": {
- "name": "Polyfill",
- "categoryId": 8,
- "url": "https://polyfill.io/",
- "companyId": "polyfill.io"
- },
- "popads": {
- "name": "PopAds",
- "categoryId": 4,
- "url": "https://www.popads.net/",
- "companyId": "popads"
- },
- "popcash": {
- "name": "Popcash",
- "categoryId": 4,
- "url": "http://popcash.net/",
- "companyId": "popcash_network"
- },
- "popcorn_metrics": {
- "name": "Popcorn Metrics",
- "categoryId": 6,
- "url": "https://www.popcornmetrics.com/",
- "companyId": "popcorn_metrics"
- },
- "popin.cc": {
- "name": "popIn",
- "categoryId": 7,
- "url": "https://www.popin.cc/",
- "companyId": "popin"
- },
- "popmyads": {
- "name": "PopMyAds",
- "categoryId": 4,
- "url": "http://popmyads.com/",
- "companyId": "popmyads"
- },
- "poponclick": {
- "name": "PopOnClick",
- "categoryId": 4,
- "url": "http://poponclick.com",
- "companyId": "poponclick"
- },
- "populis": {
- "name": "Populis",
- "categoryId": 4,
- "url": "http://www.populis.com",
- "companyId": "populis"
- },
- "pornhub": {
- "name": "PornHub",
- "categoryId": 3,
- "url": "https://www.pornhub.com/",
- "companyId": "pornhub"
- },
- "pornwave": {
- "name": "Pornwave",
- "categoryId": 3,
- "url": "http://pornwave.com",
- "companyId": "pornwave.com"
- },
- "porta_brazil": {
- "name": "Porta Brazil",
- "categoryId": 4,
- "url": "http://brasil.gov.br/",
- "companyId": "portal_brazil"
- },
- "post_affiliate_pro": {
- "name": "Post Affiliate Pro",
- "categoryId": 4,
- "url": "http://www.qualityunit.com/",
- "companyId": "qualityunit"
- },
- "powerlinks": {
- "name": "PowerLinks",
- "categoryId": 4,
- "url": "http://www.powerlinks.com/",
- "companyId": "powerlinks"
- },
- "powerreviews": {
- "name": "PowerReviews",
- "categoryId": 2,
- "url": "http://www.powerreviews.com/",
- "companyId": "powerreviews"
- },
- "powr.io": {
- "name": "POWr",
- "categoryId": 6,
- "url": "https://www.powr.io/",
- "companyId": "powr"
- },
- "pozvonim": {
- "name": "Pozvonim",
- "categoryId": 4,
- "url": "https://pozvonim.com/",
- "companyId": "pozvonim"
- },
- "prebid": {
- "name": "Prebid",
- "categoryId": 4,
- "url": "http://prebid.org/",
- "companyId": null
- },
- "precisionclick": {
- "name": "PrecisionClick",
- "categoryId": 4,
- "url": "http://www.precisionclick.com/",
- "companyId": "precisionclick"
- },
- "predicta": {
- "name": "Predicta",
- "categoryId": 4,
- "url": "http://predicta.com.br/",
- "companyId": "predicta"
- },
- "premonix": {
- "name": "Premonix",
- "categoryId": 4,
- "url": "http://www.premonix.com/",
- "companyId": "premonix"
- },
- "press": {
- "name": "Press+",
- "categoryId": 4,
- "url": "http://www.mypressplus.com/",
- "companyId": "press+"
- },
- "pressly": {
- "name": "Pressly",
- "categoryId": 4,
- "url": "https://www.pressly.com/",
- "companyId": "pressly"
- },
- "pricegrabber": {
- "name": "PriceGrabber",
- "categoryId": 4,
- "url": "http://www.pricegrabber.com",
- "companyId": "pricegrabber"
- },
- "pricespider": {
- "name": "Pricespider",
- "categoryId": 4,
- "url": "http://www.pricespider.com/",
- "companyId": "price_spider"
- },
- "prismamediadigital.com": {
- "name": "Prisma Media Digital",
- "categoryId": 4,
- "url": "http://www.pmdrecrute.com/",
- "companyId": "prisma_media_digital"
- },
- "privy.com": {
- "name": "Privy",
- "categoryId": 2,
- "url": "https://privy.com/",
- "companyId": "privy"
- },
- "proclivity": {
- "name": "Proclivity",
- "categoryId": 4,
- "url": "http://www.proclivitysystems.com/",
- "companyId": "proclivity_media"
- },
- "prodperfect": {
- "name": "ProdPerfect",
- "categoryId": 6,
- "url": "https://prodperfect.com/",
- "companyId": "prodperfect"
- },
- "productsup": {
- "name": "ProductsUp",
- "categoryId": 4,
- "url": "https://productsup.io/",
- "companyId": "productsup"
- },
- "profiliad": {
- "name": "Profiliad",
- "categoryId": 6,
- "url": "http://profiliad.com/",
- "companyId": "profiliad"
- },
- "profitshare": {
- "name": "Profitshare",
- "categoryId": 6,
- "url": "https://profitshare.ro/",
- "companyId": "profitshare"
- },
- "proformics": {
- "name": "Proformics",
- "categoryId": 6,
- "url": "http://proformics.com/",
- "companyId": "proformics_digital"
- },
- "programattik": {
- "name": "Programattik",
- "categoryId": 4,
- "url": "http://www.programattik.com/",
- "companyId": "ttnet"
- },
- "project_wonderful": {
- "name": "Project Wonderful",
- "categoryId": 4,
- "url": "http://www.projectwonderful.com/",
- "companyId": "project_wonderful"
- },
- "propel_marketing": {
- "name": "Propel Marketing",
- "categoryId": 4,
- "url": "http://propelmarketing.com/",
- "companyId": "propel_marketing"
- },
- "propeller_ads": {
- "name": "Propeller Ads",
- "categoryId": 4,
- "url": "http://www.propellerads.com/",
- "companyId": "propeller_ads"
- },
- "propermedia": {
- "name": "Proper Media",
- "categoryId": 4,
- "url": "https://proper.io/",
- "companyId": "propermedia"
- },
- "props": {
- "name": "Props",
- "categoryId": 4,
- "url": "http://props.id/",
- "companyId": "props"
- },
- "propvideo_net": {
- "name": "propvideo.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "prospecteye": {
- "name": "ProspectEye",
- "categoryId": 4,
- "url": "https://www.prospecteye.com/",
- "companyId": "prospecteye"
- },
- "prosperent": {
- "name": "Prosperent",
- "categoryId": 4,
- "url": "http://prosperent.com",
- "companyId": "prosperent"
- },
- "prostor": {
- "name": "Prostor",
- "categoryId": 4,
- "url": "http://prostor-lite.ru/",
- "companyId": "prostor"
- },
- "proton_ag": {
- "name": "Proton AG",
- "categoryId": 2,
- "url": "https://proton.me/",
- "companyId": "proton_foundation",
- "source": "AdGuard"
- },
- "provide_support": {
- "name": "Provide Support",
- "categoryId": 2,
- "url": "http://www.providesupport.com/",
- "companyId": "provide_support"
- },
- "proximic": {
- "name": "Proximic",
- "categoryId": 4,
- "url": "http://www.proximic.com/",
- "companyId": "proximic"
- },
- "proxistore.com": {
- "name": "Proxistore",
- "categoryId": 4,
- "url": "https://www.proxistore.com/",
- "companyId": "proxistore"
- },
- "pscp.tv": {
- "name": "Periscope",
- "categoryId": 7,
- "url": "https://www.pscp.tv/",
- "companyId": "periscope"
- },
- "pstatic.net": {
- "name": "Naver CDN",
- "categoryId": 9,
- "url": "https://www.naver.com/",
- "companyId": "naver"
- },
- "psyma": {
- "name": "Psyma",
- "categoryId": 4,
- "url": "http://www.psyma.com/",
- "companyId": "psyma"
- },
- "pt_engine": {
- "name": "Pt engine",
- "categoryId": 6,
- "url": "http://www.ptengine.jp/",
- "companyId": "pt_engine"
- },
- "pub-fit": {
- "name": "Pub-Fit",
- "categoryId": 4,
- "url": "http://www.pub-fit.com/",
- "companyId": "pub-fit"
- },
- "pub.network": {
- "name": "pub.network",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "pubble": {
- "name": "Pubble",
- "categoryId": 2,
- "url": "http://www.pubble.co/",
- "companyId": "pubble"
- },
- "pubdirecte": {
- "name": "Pubdirecte",
- "categoryId": 4,
- "url": "http://www.pubdirecte.com/",
- "companyId": "pubdirecte"
- },
- "pubgears": {
- "name": "PubGears",
- "categoryId": 4,
- "url": "http://pubgears.com/",
- "companyId": "pubgears"
- },
- "public_ideas": {
- "name": "Public Ideas",
- "categoryId": 4,
- "url": "http://www.publicidees.co.uk/",
- "companyId": "public-idees"
- },
- "publicidad.net": {
- "name": "Publicidad.net",
- "categoryId": 4,
- "url": "http://www.en.publicidad.net/",
- "companyId": "publicidad.net"
- },
- "publir": {
- "name": "Publir",
- "categoryId": 4,
- "url": "http://www.publir.com",
- "companyId": "publir"
- },
- "pubmatic": {
- "name": "PubMatic",
- "categoryId": 4,
- "url": "http://www.pubmatic.com/",
- "companyId": "pubmatic"
- },
- "pubnub.com": {
- "name": "PubNub",
- "categoryId": 8,
- "url": "https://www.pubnub.com/",
- "companyId": null
- },
- "puboclic": {
- "name": "Puboclic",
- "categoryId": 4,
- "url": "http://www.puboclic.com/",
- "companyId": "puboclic"
- },
- "pulpix.com": {
- "name": "Pulpix",
- "categoryId": 4,
- "url": "https://www.pulpix.com/",
- "companyId": "adyoulike"
- },
- "pulpo_media": {
- "name": "Pulpo Media",
- "categoryId": 4,
- "url": "http://www.pulpomedia.com/home.html",
- "companyId": "pulpo_media"
- },
- "pulse360": {
- "name": "Pulse360",
- "categoryId": 4,
- "url": "http://www.pulse360.com",
- "companyId": "pulse360"
- },
- "pulse_insights": {
- "name": "Pulse Insights",
- "categoryId": 6,
- "url": "http://pulseinsights.com/",
- "companyId": "pulse_insights"
- },
- "pulsepoint": {
- "name": "PulsePoint",
- "categoryId": 4,
- "url": "http://www.contextweb.com/",
- "companyId": "pulsepoint_ad_exchange"
- },
- "punchtab": {
- "name": "PunchTab",
- "categoryId": 4,
- "url": "http://www.punchtab.com/",
- "companyId": "punchtab"
- },
- "purch": {
- "name": "Purch",
- "categoryId": 4,
- "url": "http://www.purch.com/",
- "companyId": "purch"
- },
- "pure_chat": {
- "name": "Pure Chat",
- "categoryId": 2,
- "url": "https://www.purechat.com",
- "companyId": "pure_chat"
- },
- "pureprofile": {
- "name": "Pureprofile",
- "categoryId": 6,
- "url": "https://www.pureprofile.com/us/",
- "companyId": "pureprofile"
- },
- "purlive": {
- "name": "PurLive",
- "categoryId": 4,
- "url": "http://www.purlive.com/",
- "companyId": "purlive"
- },
- "puserving.com": {
- "name": "puserving.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "push.world": {
- "name": "Push.world",
- "categoryId": 2,
- "url": "https://push.world/en",
- "companyId": "push.world"
- },
- "push_engage": {
- "name": "Push Engage",
- "categoryId": 2,
- "url": "https://www.pushengage.com/",
- "companyId": "push_engage"
- },
- "pushame.com": {
- "name": "pushame.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushbullet": {
- "name": "Pushbullet",
- "categoryId": 2,
- "url": "https://www.pushbullet.com/",
- "companyId": "pushbullet"
- },
- "pushcrew": {
- "name": "VWO Engage",
- "categoryId": 2,
- "url": "https://vwo.com/engage/",
- "companyId": "wingify"
- },
- "pusher.com": {
- "name": "Pusher",
- "categoryId": 6,
- "url": "https://pusher.com/",
- "companyId": null
- },
- "pushnative.com": {
- "name": "pushnative.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushnews": {
- "name": "Pushnews",
- "categoryId": 4,
- "url": "https://www.pushnews.eu/",
- "companyId": "pushnews"
- },
- "pushno.com": {
- "name": "pushno.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushwhy.com": {
- "name": "pushwhy.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushwoosh.com": {
- "name": "Pushwoosh",
- "categoryId": 2,
- "url": "https://www.pushwoosh.com/",
- "companyId": "pushwoosh"
- },
- "pvclouds.com": {
- "name": "pvclouds.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "q1media": {
- "name": "Q1Media",
- "categoryId": 4,
- "url": "http://q1media.com/",
- "companyId": "q1media"
- },
- "q_division": {
- "name": "Q-Division",
- "categoryId": 4,
- "url": "https://q-division.de/",
- "companyId": null
- },
- "qbaka": {
- "name": "Qbaka",
- "categoryId": 6,
- "url": "https://qbaka.com/",
- "companyId": "qbaka"
- },
- "qcri_analytics": {
- "name": "QCRI Analytics",
- "categoryId": 6,
- "url": "http://qcri.org/",
- "companyId": "qatar_computing_research_institute"
- },
- "qeado": {
- "name": "Qeado",
- "categoryId": 6,
- "url": "https://www.qeado.com/",
- "companyId": "qeado"
- },
- "qihoo_360": {
- "name": "Qihoo 360",
- "categoryId": 6,
- "url": "https://www.360totalsecurity.com/en/",
- "companyId": "qihoo_360_technology"
- },
- "qq.com": {
- "name": "QQ International",
- "categoryId": 2,
- "url": "https://www.qq.com/",
- "companyId": "tencent",
- "source": "AdGuard"
- },
- "qrius": {
- "name": "Qrius",
- "categoryId": 7,
- "url": "http://www.qrius.me/",
- "companyId": "mediafed"
- },
- "qualaroo": {
- "name": "Qualaroo",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "qualcomm": {
- "name": "Qualcomm",
- "categoryId": 8,
- "url": "https://www.qualcomm.com/",
- "companyId": "qualcomm",
- "source": "AdGuard"
- },
- "qualcomm_location_service": {
- "name": "Qualcomm Location Service",
- "categoryId": 15,
- "url": "https://www.qualcomm.com/site/privacy/services",
- "companyId": "qualcomm",
- "source": "AdGuard"
- },
- "qualia": {
- "name": "Qualia",
- "categoryId": 4,
- "url": "http://www.bluecava.com/",
- "companyId": "qualia"
- },
- "qualtrics": {
- "name": "Qualtrics",
- "categoryId": 6,
- "url": "http://www.qualtrics.com/",
- "companyId": "qualtrics"
- },
- "quantcast": {
- "name": "Quantcast",
- "categoryId": 4,
- "url": "http://www.quantcast.com/",
- "companyId": "quantcast"
- },
- "quantcount": {
- "name": "Quantcount",
- "categoryId": 6,
- "url": "http://www.quantcast.com",
- "companyId": "quantcast"
- },
- "quantum_metric": {
- "name": "Quantum Metric",
- "categoryId": 6,
- "url": "https://www.quantummetric.com/",
- "companyId": "quantum_metric"
- },
- "quartic.pl": {
- "name": "Quartic",
- "categoryId": 6,
- "url": "https://www.quarticon.com/",
- "companyId": "quarticon"
- },
- "qubit": {
- "name": "Qubit Opentag",
- "categoryId": 6,
- "url": "http://www.qubit.com/",
- "companyId": "qubit"
- },
- "questback": {
- "name": "Questback",
- "categoryId": 2,
- "url": "http://www1.questback.com/",
- "companyId": "questback"
- },
- "queue-it": {
- "name": "Queue-it",
- "categoryId": 6,
- "url": "https://queue-it.com/",
- "companyId": null
- },
- "quick-counter.net": {
- "name": "Quick-counter.net",
- "categoryId": 6,
- "url": "http://www.quick-counter.net/",
- "companyId": "quick-counter.net"
- },
- "quigo_adsonar": {
- "name": "Quigo AdSonar",
- "categoryId": 4,
- "url": "http://www.quigo.com",
- "companyId": "verizon"
- },
- "quinstreet": {
- "name": "QuinStreet",
- "categoryId": 4,
- "url": "http://www.quinstreet.com/",
- "companyId": "quinstreet"
- },
- "quintelligence": {
- "name": "Quintelligence",
- "categoryId": 6,
- "url": "http://www.quintelligence.com/",
- "companyId": "quintelligence"
- },
- "quisma": {
- "name": "Quisma",
- "categoryId": 4,
- "url": "http://www.quisma.com/en/",
- "companyId": "wpp"
- },
- "quora.com": {
- "name": "Quora",
- "categoryId": 7,
- "url": "https://quora.com/",
- "companyId": null
- },
- "r_advertising": {
- "name": "R-Advertising",
- "categoryId": 4,
- "url": "http://www.r-advertising.com/",
- "companyId": "r-advertising"
- },
- "rackcdn.com": {
- "name": "Rackspace",
- "categoryId": 9,
- "url": "https://www.rackspace.com/",
- "companyId": null
- },
- "radarurl": {
- "name": "RadarURL",
- "categoryId": 6,
- "url": "http://radarurl.com/",
- "companyId": "radarurl"
- },
- "radial": {
- "name": "Radial",
- "categoryId": 4,
- "url": "http://www.clearsaleing.com/",
- "companyId": "radial"
- },
- "radiumone": {
- "name": "RadiumOne",
- "categoryId": 4,
- "url": "http://www.radiumone.com/index.html",
- "companyId": "rythmone"
- },
- "raisenow": {
- "name": "RaiseNow",
- "categoryId": 6,
- "url": "https://www.raisenow.com/de",
- "companyId": "raisenow"
- },
- "rakuten_display": {
- "name": "Rakuten Display",
- "categoryId": 4,
- "url": "https://rakutenmarketing.com/display",
- "companyId": "rakuten"
- },
- "rakuten_globalmarket": {
- "name": "Rakuten",
- "categoryId": 4,
- "url": "https://www.rakuten.co.jp/",
- "companyId": "rakuten"
- },
- "rakuten_widget": {
- "name": "Rakuten Widget",
- "categoryId": 4,
- "url": "http://global.rakuten.com/corp/",
- "companyId": "rakuten"
- },
- "rambler": {
- "name": "Rambler",
- "categoryId": 6,
- "url": "https://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rambler_count": {
- "name": "Rambler Count",
- "categoryId": 2,
- "url": "http://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rambler_widget": {
- "name": "Rambler Widget",
- "categoryId": 2,
- "url": "http://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rapidspike": {
- "name": "RapidSpike",
- "categoryId": 6,
- "url": "https://www.rapidspike.com",
- "companyId": "rapidspike"
- },
- "ravelin": {
- "name": "Ravelin",
- "categoryId": 6,
- "url": "https://www.ravelin.com/",
- "companyId": null
- },
- "rawgit": {
- "name": "RawGit",
- "categoryId": 9,
- "url": "http://rawgit.com/",
- "companyId": null
- },
- "raygun": {
- "name": "Raygun",
- "categoryId": 4,
- "url": "https://raygun.com/",
- "companyId": "raygun"
- },
- "rbc_counter": {
- "name": "RBC Counter",
- "categoryId": 6,
- "url": "http://www.rbc.ru/",
- "companyId": "rbc_group"
- },
- "rcs.it": {
- "name": "RCS",
- "categoryId": 4,
- "url": "http://www.rcsmediagroup.it/",
- "companyId": "rcs"
- },
- "rd_station": {
- "name": "RD Station",
- "categoryId": 6,
- "url": "http://www.rdstation.com/en/",
- "companyId": "rd_station"
- },
- "rea_group": {
- "name": "REA Group Ltd.",
- "categoryId": 4,
- "url": "https://www.rea-group.com/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "reachforce": {
- "name": "ReachForce",
- "categoryId": 6,
- "url": "http://www.reachforce.com/",
- "companyId": "reachforce"
- },
- "reachjunction": {
- "name": "ReachJunction",
- "categoryId": 4,
- "url": "http://www.reachjunction.com/",
- "companyId": "reachjunction"
- },
- "reachlocal": {
- "name": "ReachLocal",
- "categoryId": 4,
- "url": "http://www.reachlocal.com/",
- "companyId": "reachlocal"
- },
- "reactful": {
- "name": "Reactful",
- "categoryId": 4,
- "url": "http://www.reactful.com/",
- "companyId": "reactful"
- },
- "reactivpub": {
- "name": "Reactivpub",
- "categoryId": 6,
- "url": "http://www.reactivpub.com/",
- "companyId": "r-advertising"
- },
- "reactx": {
- "name": "ReactX",
- "categoryId": 4,
- "url": "http://home.skinected.com",
- "companyId": "reactx"
- },
- "readerboard": {
- "name": "ReaderBoard",
- "categoryId": 7,
- "url": "http://www.readrboard.com",
- "companyId": "centre_phi"
- },
- "readme": {
- "name": "ReadMe",
- "categoryId": 6,
- "url": "https://readme.com/",
- "companyId": "readme"
- },
- "readspeaker.com": {
- "name": "ReadSpeaker",
- "categoryId": 2,
- "url": "https://www.readspeaker.com/",
- "companyId": null
- },
- "realclick": {
- "name": "RealClick",
- "categoryId": 4,
- "url": "http://www.realclick.co.kr/",
- "companyId": "realclick"
- },
- "realestate.com.au": {
- "name": "realestate.com.au Pty Limited",
- "categoryId": 4,
- "url": "https://www.realestate.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "realperson.de": {
- "name": "Realperson Chat",
- "categoryId": 2,
- "url": "http://www.optimise-it.de/",
- "companyId": "optimise_it"
- },
- "realtime": {
- "name": "Realtime",
- "categoryId": 2,
- "url": "http://www.realtime.co/",
- "companyId": "realtime"
- },
- "realytics": {
- "name": "Realytics",
- "categoryId": 6,
- "url": "https://www.realytics.io/",
- "companyId": "realytics"
- },
- "rebel_mouse": {
- "name": "Rebel Mouse",
- "categoryId": 6,
- "url": "https://www.rebelmouse.com/",
- "companyId": "rebelmouse"
- },
- "recaptcha": {
- "name": "reCAPTCHA",
- "categoryId": 8,
- "url": "https://www.google.com/recaptcha/about/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "recettes.net": {
- "name": "Recettes.net",
- "categoryId": 8,
- "url": "http://www.recettes.net/",
- "companyId": "recettes.net"
- },
- "recopick": {
- "name": "RecoPick",
- "categoryId": 4,
- "url": "https://recopick.com/",
- "companyId": "recopick"
- },
- "recreativ": {
- "name": "Recreativ",
- "categoryId": 4,
- "url": "http://recreativ.ru/",
- "companyId": "recreativ"
- },
- "recruitics": {
- "name": "Recruitics",
- "categoryId": 6,
- "url": "http://recruitics.com/",
- "companyId": "recruitics"
- },
- "red_ventures": {
- "name": "Red Ventures",
- "categoryId": 6,
- "url": "https://www.redventures.com/",
- "companyId": "red_ventures"
- },
- "redblue_de": {
- "name": "redblue",
- "categoryId": 6,
- "url": "https://www.redblue.de/",
- "companyId": null
- },
- "redcdn.pl": {
- "name": "redGalaxy CDN",
- "categoryId": 9,
- "url": "http://www.atendesoftware.pl/",
- "companyId": "atende_software"
- },
- "reddit": {
- "name": "Reddit",
- "categoryId": 7,
- "url": "https://www.reddit.com",
- "companyId": "advance",
- "source": "AdGuard"
- },
- "redhelper": {
- "name": "RedHelper",
- "categoryId": 2,
- "url": "http://redhelper.com/",
- "companyId": "redhelper"
- },
- "redlotus": {
- "name": "RedLotus",
- "categoryId": 4,
- "url": "http://triggit.com/",
- "companyId": "redlotus"
- },
- "redtram": {
- "name": "RedTram",
- "categoryId": 4,
- "url": "http://www.redtram.com/",
- "companyId": "redtram"
- },
- "redtube.com": {
- "name": "redtube.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "redux_media": {
- "name": "Redux Media",
- "categoryId": 4,
- "url": "http://reduxmedia.com/",
- "companyId": "redux_media"
- },
- "reed_business_information": {
- "name": "Reed Business Information",
- "categoryId": 6,
- "url": "http://www.reedbusiness.com/",
- "companyId": "andera_partners"
- },
- "reembed.com": {
- "name": "reEmbed",
- "categoryId": 0,
- "url": "https://www.reembed.com/",
- "companyId": "reembed"
- },
- "reevoo.com": {
- "name": "Reevoo",
- "categoryId": 4,
- "url": "https://www.reevoo.com/en/",
- "companyId": "reevoo"
- },
- "refericon": {
- "name": "Refericon",
- "categoryId": 4,
- "url": "https://refericon.pl/#",
- "companyId": "refericon"
- },
- "referlocal": {
- "name": "ReferLocal",
- "categoryId": 4,
- "url": "http://referlocal.com/",
- "companyId": "referlocal"
- },
- "refersion": {
- "name": "Refersion",
- "categoryId": 4,
- "url": "https://www.refersion.com/",
- "companyId": "refersion"
- },
- "refined_labs": {
- "name": "Refined Labs",
- "categoryId": 4,
- "url": "http://www.refinedlabs.com",
- "companyId": "refined_labs"
- },
- "reflektion": {
- "name": "Reflektion",
- "categoryId": 4,
- "url": "http://",
- "companyId": "reflektion"
- },
- "reformal": {
- "name": "Reformal",
- "categoryId": 2,
- "url": "http://reformal.ru/",
- "companyId": "reformal"
- },
- "reinvigorate": {
- "name": "Reinvigorate",
- "categoryId": 6,
- "url": "http://www.reinvigorate.net/",
- "companyId": "media_temple"
- },
- "rekko": {
- "name": "Rekko",
- "categoryId": 4,
- "url": "http://convert.us/",
- "companyId": "rekko"
- },
- "reklam_store": {
- "name": "Reklam Store",
- "categoryId": 4,
- "url": "http://www.reklamstore.com",
- "companyId": "reklam_store"
- },
- "reklamport": {
- "name": "Reklamport",
- "categoryId": 4,
- "url": "http://www.reklamport.com/",
- "companyId": "reklamport"
- },
- "reklamz": {
- "name": "ReklamZ",
- "categoryId": 4,
- "url": "http://www.reklamz.com/",
- "companyId": "reklamz"
- },
- "rekmob": {
- "name": "Rekmob",
- "categoryId": 4,
- "url": "https://www.rekmob.com/",
- "companyId": "rekmob"
- },
- "relap": {
- "name": "Relap",
- "categoryId": 4,
- "url": "https://relap.io/",
- "companyId": "relap"
- },
- "relay42": {
- "name": "Relay42",
- "categoryId": 5,
- "url": "http://synovite.com",
- "companyId": "relay42"
- },
- "relestar": {
- "name": "Relestar",
- "categoryId": 6,
- "url": "https://relestar.com/",
- "companyId": "relestar"
- },
- "relevant4.com": {
- "name": "relevant4 GmbH",
- "categoryId": 8,
- "url": "https://www.relevant4.com/",
- "companyId": null
- },
- "remintrex": {
- "name": "Remintrex",
- "categoryId": 4,
- "url": "http://www.remintrex.com/",
- "companyId": null
- },
- "remove.video": {
- "name": "remove.video",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "repost.us": {
- "name": "Repost.us",
- "categoryId": 4,
- "url": "http://www.freerangecontent.com/",
- "companyId": "repost"
- },
- "republer.com": {
- "name": "Republer",
- "categoryId": 4,
- "url": "http://republer.com/",
- "companyId": "republer"
- },
- "res-meter": {
- "name": "Res-meter",
- "categoryId": 6,
- "url": "http://respublica.al/res-meter",
- "companyId": "respublica"
- },
- "research_now": {
- "name": "Research Now",
- "categoryId": 4,
- "url": "http://www.researchnow.com/",
- "companyId": "research_now"
- },
- "resonate_networks": {
- "name": "Resonate Networks",
- "categoryId": 4,
- "url": "http://www.resonatenetworks.com/",
- "companyId": "resonate"
- },
- "respond": {
- "name": "Respond",
- "categoryId": 4,
- "url": "http://respondhq.com/",
- "companyId": "respond"
- },
- "responsetap": {
- "name": "ResponseTap",
- "categoryId": 4,
- "url": "http://www.adinsight.eu/",
- "companyId": "responsetap"
- },
- "result_links": {
- "name": "Result Links",
- "categoryId": 4,
- "url": "http://www.resultlinks.com/",
- "companyId": "result_links"
- },
- "resultspage.com": {
- "name": "SLI Systems",
- "categoryId": 6,
- "url": "https://www.sli-systems.com/",
- "companyId": "sli_systems"
- },
- "retailrocket.net": {
- "name": "Retail Rocket",
- "categoryId": 4,
- "url": "https://retailrocket.net/",
- "companyId": "retail_rocket"
- },
- "retarget_app": {
- "name": "Retarget App",
- "categoryId": 4,
- "url": "https://retargetapp.com/",
- "companyId": "retargetapp"
- },
- "retargeter_beacon": {
- "name": "ReTargeter Beacon",
- "categoryId": 4,
- "url": "http://www.retargeter.com/",
- "companyId": "retargeter"
- },
- "retargeting.cl": {
- "name": "Retargeting.cl",
- "categoryId": 4,
- "url": "http://retargeting.cl/",
- "companyId": "retargeting"
- },
- "retention_science": {
- "name": "Retention Science",
- "categoryId": 4,
- "url": "http://retentionscience.com/",
- "companyId": "retention_science"
- },
- "reuters_media": {
- "name": "Reuters media",
- "categoryId": 9,
- "url": "https://reuters.com",
- "companyId": null
- },
- "revcontent": {
- "name": "RevContent",
- "categoryId": 4,
- "url": "https://www.revcontent.com/",
- "companyId": "revcontent"
- },
- "reve_marketing": {
- "name": "Reve Marketing",
- "categoryId": 4,
- "url": "http://tellafriend.socialtwist.com/",
- "companyId": "reve_marketing"
- },
- "revenue": {
- "name": "Revenue",
- "categoryId": 4,
- "url": "https://revenue.com/",
- "companyId": "revenue"
- },
- "revenuehits": {
- "name": "RevenueHits",
- "categoryId": 4,
- "url": "http://www.revenuehits.com/",
- "companyId": "revenuehits"
- },
- "revenuemantra": {
- "name": "RevenueMantra",
- "categoryId": 4,
- "url": "http://www.revenuemantra.com/",
- "companyId": "revenuemantra"
- },
- "revive_adserver": {
- "name": "Revive Adserver",
- "categoryId": 4,
- "url": "https://www.revive-adserver.com/",
- "companyId": "revive_adserver"
- },
- "revolver_maps": {
- "name": "Revolver Maps",
- "categoryId": 6,
- "url": "http://www.revolvermaps.com/",
- "companyId": "revolver_maps"
- },
- "revresponse": {
- "name": "RevResponse",
- "categoryId": 4,
- "url": "http://www.netline.com/",
- "companyId": "netline"
- },
- "rewords": {
- "name": "ReWords",
- "categoryId": 4,
- "url": "http://www.rewords.pl/",
- "companyId": "rewords"
- },
- "rhythmone": {
- "name": "RhythmOne",
- "categoryId": 4,
- "url": "http://www.adconductor.com/",
- "companyId": "rhythmone"
- },
- "rhythmone_beacon": {
- "name": "Rhythmone Beacon",
- "categoryId": 4,
- "url": "https://www.rhythmone.com/",
- "companyId": "rythmone"
- },
- "ria.ru": {
- "name": "ria.ru",
- "categoryId": 8,
- "url": "https://ria.ru/",
- "companyId": null
- },
- "rich_media_banner_network": {
- "name": "Rich Media Banner Network",
- "categoryId": 4,
- "url": "http://rmbn.ru/",
- "companyId": "rich_media_banner_network"
- },
- "richrelevance": {
- "name": "RichRelevance",
- "categoryId": 2,
- "url": "http://www.richrelevance.com/",
- "companyId": "richrelevance"
- },
- "ringier.ch": {
- "name": "Ringier",
- "categoryId": 6,
- "url": "http://ringier.ch/en",
- "companyId": "ringier"
- },
- "rio_seo": {
- "name": "Rio SEO",
- "categoryId": 7,
- "url": "http://www.meteorsolutions.com",
- "companyId": "rio_seo"
- },
- "riskfield.com": {
- "name": "Riskified",
- "categoryId": 2,
- "url": "https://www.riskified.com/",
- "companyId": "riskfield"
- },
- "rncdn3.com": {
- "name": "Reflected Networks",
- "categoryId": 9,
- "url": "http://www.rncdn3.com/",
- "companyId": null
- },
- "ro2.biz": {
- "name": "Ro2.biz",
- "categoryId": 4,
- "url": "http://ro2.biz/index.php?r=adikku",
- "companyId": "ro2.biz"
- },
- "roblox": {
- "name": "Roblox",
- "categoryId": 8,
- "url": "https://www.roblox.com/",
- "companyId": null
- },
- "rockerbox": {
- "name": "Rockerbox",
- "categoryId": 6,
- "url": "https://www.rockerbox.com/privacy",
- "companyId": "rockerbox"
- },
- "rocket.ia": {
- "name": "Rocket.ia",
- "categoryId": 4,
- "url": "https://rocket.la/",
- "companyId": "rocket.la"
- },
- "roi_trax": {
- "name": "ROI trax",
- "categoryId": 4,
- "url": "http://www.oneupweb.com/",
- "companyId": "oneupweb"
- },
- "roistat": {
- "name": "Roistat",
- "categoryId": 6,
- "url": "https://roistat.com",
- "companyId": "roistat"
- },
- "rollad": {
- "name": "Rollad",
- "categoryId": 4,
- "url": "http://rollad.ru",
- "companyId": "rollad"
- },
- "rollbar": {
- "name": "Rollbar",
- "categoryId": 6,
- "url": "http://www.rollbar.com/",
- "companyId": "rollbar"
- },
- "roost": {
- "name": "Roost",
- "categoryId": 6,
- "url": "http://roost.me/",
- "companyId": "roost"
- },
- "rooster": {
- "name": "Rooster",
- "categoryId": 6,
- "url": "http://www.getrooster.com/",
- "companyId": "rooster"
- },
- "roq.ad": {
- "name": "Roq.ad",
- "categoryId": 4,
- "url": "https://www.roq.ad/",
- "companyId": "roq.ad"
- },
- "rotaban": {
- "name": "RotaBan",
- "categoryId": 4,
- "url": "http://www.rotaban.ru/",
- "companyId": "rotaban"
- },
- "routenplaner-karten.com": {
- "name": "Routenplaner Karten",
- "categoryId": 2,
- "url": "https://www.routenplaner-karten.com/",
- "companyId": null
- },
- "rovion": {
- "name": "Rovion",
- "categoryId": 4,
- "url": "http://www.rovion.com/",
- "companyId": "rovion"
- },
- "rsspump": {
- "name": "RSSPump",
- "categoryId": 2,
- "url": "http://www.rsspump.com",
- "companyId": "rsspump"
- },
- "rtb_house": {
- "name": "RTB House",
- "categoryId": 4,
- "url": "http://en.adpilot.com/",
- "companyId": "rtb_house"
- },
- "rtblab": {
- "name": "RTBmarkt",
- "categoryId": 4,
- "url": "http://www.rtbmarkt.de/en/home/",
- "companyId": "rtbmarkt"
- },
- "rtbsuperhub.com": {
- "name": "rtbsuperhub.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "rtl_group": {
- "name": "RTL Group",
- "categoryId": 8,
- "url": "http://www.rtlgroup.com/www/htm/home.aspx",
- "companyId": "rtl_group"
- },
- "rtmark.net": {
- "name": "Advertising Technologies Ltd",
- "categoryId": 4,
- "url": "http://rtmark.net/",
- "companyId": "big_wall_vision"
- },
- "rubicon": {
- "name": "Rubicon",
- "categoryId": 4,
- "url": "http://rubiconproject.com/",
- "companyId": "rubicon_project"
- },
- "ruhrgebiet": {
- "name": "Ruhrgebiet",
- "categoryId": 4,
- "url": "https://www.ruhrgebiet-onlineservices.de/",
- "companyId": "ruhrgebiet"
- },
- "rummycircle": {
- "name": "RummyCircle",
- "categoryId": 4,
- "url": "https://www.rummycircle.com/",
- "companyId": "rummycircle"
- },
- "run": {
- "name": "RUN",
- "categoryId": 4,
- "url": "http://www.rundsp.com/",
- "companyId": "run"
- },
- "runative": {
- "name": "Runative",
- "categoryId": 4,
- "url": "https://runative.com/",
- "companyId": null
- },
- "rune": {
- "name": "Rune",
- "categoryId": 6,
- "url": "http://www.secretrune.com/",
- "companyId": "rune_inc."
- },
- "runmewivel.com": {
- "name": "runmewivel.com",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "rythmxchange": {
- "name": "Rythmxchange",
- "categoryId": 0,
- "url": "https://www.rhythmone.com/",
- "companyId": "rythmone"
- },
- "s24_com": {
- "name": "Shopping24 internet group",
- "categoryId": 4,
- "url": "https://www.s24.com/",
- "companyId": null
- },
- "s3xified.com": {
- "name": "s3xified.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sabavision": {
- "name": "SabaVision",
- "categoryId": 4,
- "url": "http://www.sabavision.com/en/",
- "companyId": "sabavision"
- },
- "sagemetrics": {
- "name": "SageMetrics",
- "categoryId": 4,
- "url": "http://www.sagemetrics.com",
- "companyId": "ipmg"
- },
- "sailthru_horizon": {
- "name": "Sailthru Horizon",
- "categoryId": 4,
- "url": "https://www.sailthru.com",
- "companyId": "sailthru"
- },
- "salecycle": {
- "name": "SaleCycle",
- "categoryId": 4,
- "url": "http://www.salecycle.com/",
- "companyId": "salecycle"
- },
- "sales_feed": {
- "name": "Sales Feed",
- "categoryId": 4,
- "url": "https://www.salesfeed.com/",
- "companyId": "sales_feed"
- },
- "sales_manago": {
- "name": "SALESmanago",
- "categoryId": 6,
- "url": "https://www.salesmanago.com/",
- "companyId": "sales_manago"
- },
- "salesforce.com": {
- "name": "Salesforce",
- "categoryId": 4,
- "url": "https://www.salesforce.com/eu/",
- "companyId": "salesforce"
- },
- "salesforce_live_agent": {
- "name": "Salesforce Live Agent",
- "categoryId": 2,
- "url": "http://www.salesforce.com/",
- "companyId": "salesforce"
- },
- "salesfusion": {
- "name": "SalesFUSION",
- "categoryId": 4,
- "url": "http://salesfusion.com/",
- "companyId": "salesfusion"
- },
- "salespider_media": {
- "name": "SaleSpider Media",
- "categoryId": 4,
- "url": "http://salespidermedia.com/",
- "companyId": "salespider_media"
- },
- "salesviewer": {
- "name": "SalesViewer",
- "categoryId": 6,
- "url": "https://www.salesviewer.com/",
- "companyId": "salesviewer"
- },
- "samba.tv": {
- "name": "Samba TV",
- "categoryId": 4,
- "url": "https://samba.tv/",
- "companyId": "samba_tv"
- },
- "samsung": {
- "name": "Samsung",
- "categoryId": 8,
- "url": "https://www.samsung.com/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungads": {
- "name": "Samsung Ads",
- "categoryId": 4,
- "url": "https://www.samsung.com/business/samsungads/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungapps": {
- "name": "Samsung Apps",
- "categoryId": 101,
- "url": "https://www.samsung.com/au/apps/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungmobile": {
- "name": "Samsung Mobile",
- "categoryId": 101,
- "url": "https://www.samsung.com/mobile/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungpush": {
- "name": "Samsung Push",
- "categoryId": 8,
- "url": null,
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungsds": {
- "name": "Samsung SDS",
- "categoryId": 10,
- "url": "https://www.samsungsds.com/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungtv": {
- "name": "Samsung TV",
- "categoryId": 15,
- "url": "https://www.samsung.com/au/tvs/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "sanoma.fi": {
- "name": "Sanoma",
- "categoryId": 4,
- "url": "https://sanoma.com/",
- "companyId": "sanoma"
- },
- "sap_crm": {
- "name": "SAP CRM",
- "categoryId": 6,
- "url": "https://www.sap.com/products/crm.html",
- "companyId": "sap"
- },
- "sap_sales_cloud": {
- "name": "SAP Sales Cloud",
- "categoryId": 2,
- "url": "http://leadforce1.com/",
- "companyId": "sap"
- },
- "sap_xm": {
- "name": "SAP Exchange Media",
- "categoryId": 4,
- "url": "http://sapexchange.media/",
- "companyId": null
- },
- "sape.ru": {
- "name": "Sape",
- "categoryId": 6,
- "url": "https://www.sape.ru/en",
- "companyId": "sape"
- },
- "sapo_ads": {
- "name": "SAPO Ads",
- "categoryId": 4,
- "url": "http://www.sapo.pt/",
- "companyId": "sapo"
- },
- "sas": {
- "name": "SAS",
- "categoryId": 6,
- "url": "http://www.sas.com/",
- "companyId": "sas"
- },
- "say.ac": {
- "name": "Say.ac",
- "categoryId": 4,
- "url": "http://say.ac",
- "companyId": "say.ac"
- },
- "say_media": {
- "name": "Say Media",
- "categoryId": 4,
- "url": "http://www.saymedia.com/",
- "companyId": "say_media"
- },
- "sayyac": {
- "name": "Sayyac",
- "categoryId": 6,
- "url": "http://www.sayyac.com/",
- "companyId": "sayyac"
- },
- "scarabresearch": {
- "name": "Scarab Research",
- "categoryId": 4,
- "url": "https://www.scarabresearch.com/",
- "companyId": "emarsys"
- },
- "schibsted": {
- "name": "Schibsted Media Group",
- "categoryId": 8,
- "url": "http://www.schibsted.com/",
- "companyId": "schibsted_asa"
- },
- "schneevonmorgen.com": {
- "name": "Schnee von Morgen",
- "categoryId": 0,
- "url": "http://www.schneevonmorgen.com/",
- "companyId": null
- },
- "scoota": {
- "name": "Scoota",
- "categoryId": 4,
- "url": "http://scoota.com/",
- "companyId": "rockabox"
- },
- "scorecard_research_beacon": {
- "name": "ScoreCard Research Beacon",
- "categoryId": 6,
- "url": "https://www.scorecardresearch.com/",
- "companyId": "comscore"
- },
- "scout_analytics": {
- "name": "Scout Analytics",
- "categoryId": 4,
- "url": "http://scoutanalytics.com/",
- "companyId": "scout_analytics"
- },
- "scribblelive": {
- "name": "ScribbleLive",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "scribol": {
- "name": "Scribol",
- "categoryId": 4,
- "url": "http://scribol.com/",
- "companyId": "scribol"
- },
- "scripps_analytics": {
- "name": "Scripps Analytics",
- "categoryId": 6,
- "url": "http://www.scrippsnetworksinteractive.com/",
- "companyId": "scripps_networks"
- },
- "scroll": {
- "name": "Scroll",
- "categoryId": 5,
- "url": "https://scroll.com/",
- "companyId": "scroll"
- },
- "scupio": {
- "name": "Scupio",
- "categoryId": 4,
- "url": "http://ad.scupio.com/",
- "companyId": "bridgewell"
- },
- "search123": {
- "name": "Search123",
- "categoryId": 4,
- "url": "http://www.search123.com/",
- "companyId": "search123"
- },
- "searchforce": {
- "name": "SearchForce",
- "categoryId": 4,
- "url": "http://www.searchforce.com/",
- "companyId": "searchforce"
- },
- "searchignite": {
- "name": "SearchIgnite",
- "categoryId": 4,
- "url": "https://searchignite.com/",
- "companyId": "zeta"
- },
- "searchrev": {
- "name": "SearchRev",
- "categoryId": 4,
- "url": "http://www.searchrev.com/",
- "companyId": "searchrev"
- },
- "second_media": {
- "name": "Second Media",
- "categoryId": 4,
- "url": "http://www.secondmedia.com/",
- "companyId": "second_media"
- },
- "sectigo": {
- "name": "Sectigo Limited",
- "categoryId": 5,
- "url": "https://www.sectigo.com",
- "companyId": "sectigo",
- "source": "AdGuard"
- },
- "securedtouch": {
- "name": "SecuredTouch",
- "categoryId": 6,
- "url": "https://www.securedtouch.com/",
- "companyId": null
- },
- "securedvisit": {
- "name": "SecuredVisit",
- "categoryId": 4,
- "url": "http://securedvisit.com/",
- "companyId": "securedvisit"
- },
- "seeding_alliance": {
- "name": "Seeding Alliance",
- "categoryId": 4,
- "url": "http://seeding-alliance.de",
- "companyId": "stroer"
- },
- "seedtag.com": {
- "name": "Seedtag",
- "categoryId": 4,
- "url": "https://www.seedtag.com/en/",
- "companyId": "seedtag"
- },
- "seevolution": {
- "name": "SeeVolution",
- "categoryId": 6,
- "url": "http://www.seevolution.com",
- "companyId": "seevolution"
- },
- "segment": {
- "name": "Segment",
- "categoryId": 6,
- "url": "https://segment.io/",
- "companyId": "segment"
- },
- "segmento": {
- "name": "Segmento",
- "categoryId": 4,
- "url": "https://segmento.ru/en",
- "companyId": "segmento"
- },
- "segmint": {
- "name": "Segmint",
- "categoryId": 6,
- "url": "http://www.segmint.com/",
- "companyId": "segmint"
- },
- "sekindo": {
- "name": "Sekindo",
- "categoryId": 4,
- "url": "http://www.sekindo.com/",
- "companyId": "sekindo"
- },
- "sellpoints": {
- "name": "Sellpoints",
- "categoryId": 4,
- "url": "https://www.sellpoints.com/",
- "companyId": "sellpoints"
- },
- "semantiqo.com": {
- "name": "Semantiqo",
- "categoryId": 4,
- "url": "https://semantiqo.com/",
- "companyId": null
- },
- "semasio": {
- "name": "Semasio",
- "categoryId": 4,
- "url": "http://semasio.com/",
- "companyId": "semasio"
- },
- "semilo": {
- "name": "Semilo",
- "categoryId": 4,
- "url": "http://www.semilo.nl/",
- "companyId": "semilo"
- },
- "semknox.com": {
- "name": "SEMKNOX GmbH",
- "categoryId": 5,
- "url": "https://semknox.com/",
- "companyId": null
- },
- "sendinblue": {
- "name": "sendinblue",
- "categoryId": 4,
- "url": "https://fr.sendinblue.com/",
- "companyId": "sendinblue"
- },
- "sendpulse.com": {
- "name": "SendPulse",
- "categoryId": 3,
- "url": "https://sendpulse.com/",
- "companyId": null
- },
- "sendsay": {
- "name": "Sendsay",
- "categoryId": 2,
- "url": "https://sendsay.ru",
- "companyId": "sendsay"
- },
- "sense_digital": {
- "name": "Sense Digital",
- "categoryId": 6,
- "url": "http://sensedigital.in/",
- "companyId": "sense_digital"
- },
- "sensors_data": {
- "name": "Sensors Data",
- "categoryId": 6,
- "url": "https://www.sensorsdata.cn/",
- "companyId": "sensors_data"
- },
- "sentifi.com": {
- "name": "Sentifi",
- "categoryId": 6,
- "url": "https://sentifi.com/",
- "companyId": "sentifi"
- },
- "sentry": {
- "name": "Sentry",
- "categoryId": 6,
- "url": "https://sentry.io/",
- "companyId": "sentry"
- },
- "sepyra": {
- "name": "Sepyra",
- "categoryId": 4,
- "url": "http://sepyra.com/",
- "companyId": "sepyra"
- },
- "sessioncam": {
- "name": "SessionCam",
- "categoryId": 6,
- "url": "http://www.sessioncam.com/",
- "companyId": "sessioncam"
- },
- "sessionly": {
- "name": "Sessionly",
- "categoryId": 2,
- "url": "https://www.sessionly.io/",
- "companyId": "sessionly"
- },
- "sevenone_media": {
- "name": "SevenOne Media",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "sexadnetwork": {
- "name": "SexAdNetwork",
- "categoryId": 3,
- "url": "http://www.sexadnetwork.com/",
- "companyId": "sexadnetwork"
- },
- "sexinyourcity": {
- "name": "SexInYourCity",
- "categoryId": 3,
- "url": "http://www.sexinyourcity.com/",
- "companyId": "sexinyourcity"
- },
- "sextracker": {
- "name": "SexTracker",
- "categoryId": 3,
- "url": "http://webmasters.sextracker.com/",
- "companyId": "sextracker"
- },
- "sexypartners.net": {
- "name": "sexypartners.net",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "seznam": {
- "name": "Seznam",
- "categoryId": 6,
- "url": "https://onas.seznam.cz/cz/",
- "companyId": "seznam"
- },
- "shareaholic": {
- "name": "Shareaholic",
- "categoryId": 6,
- "url": "https://www.shareaholic.com/",
- "companyId": "shareaholic"
- },
- "shareasale": {
- "name": "ShareASale",
- "categoryId": 4,
- "url": "http://www.shareasale.com/",
- "companyId": "shareasale"
- },
- "sharecompany": {
- "name": "ShareCompany",
- "categoryId": 2,
- "url": "http://sharecompany.nl",
- "companyId": "sharecompany"
- },
- "sharepoint": {
- "name": "SharePoint",
- "categoryId": 8,
- "url": "https://www.microsoft.com/microsoft-365/sharepoint/collaboration",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "sharethis": {
- "name": "ShareThis",
- "categoryId": 4,
- "url": "http://sharethis.com/",
- "companyId": "sharethis"
- },
- "sharethrough": {
- "name": "ShareThrough",
- "categoryId": 4,
- "url": "http://www.sharethrough.com/",
- "companyId": "sharethrough"
- },
- "sharpspring": {
- "name": "Sharpspring",
- "categoryId": 6,
- "url": "https://sharpspring.com/",
- "companyId": "sharpspring"
- },
- "sheego.de": {
- "name": "sheego.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "sheerid": {
- "name": "SheerID",
- "categoryId": 4,
- "url": "http://www.sheerid.com/",
- "companyId": "sheerid"
- },
- "shinystat": {
- "name": "ShinyStat",
- "categoryId": 6,
- "url": "http://www.shinystat.com/",
- "companyId": "shinystat"
- },
- "shop_target": {
- "name": "Shop Target",
- "categoryId": 4,
- "url": "http://shoptarget.com.br/",
- "companyId": "shopback"
- },
- "shopauskunft.de": {
- "name": "ShopAuskunft.de",
- "categoryId": 2,
- "url": "https://shopauskunft.de/",
- "companyId": null
- },
- "shopgate.com": {
- "name": "Shopgate",
- "categoryId": 2,
- "url": "https://www.shopgate.com/",
- "companyId": null
- },
- "shopify": {
- "name": "Shopify Inc.",
- "categoryId": 2,
- "url": "https://www.shopify.com/",
- "companyId": "shopify",
- "source": "AdGuard"
- },
- "shopify_stats": {
- "name": "Shopify Stats",
- "categoryId": 6,
- "url": "http://www.shopify.com/",
- "companyId": "shopify",
- "source": "AdGuard"
- },
- "shopifycdn.com": {
- "name": "Shopify CDN",
- "categoryId": 9,
- "url": "https://www.shopify.com/",
- "companyId": "shopify"
- },
- "shopifycloud.com": {
- "name": "Shopify Cloud",
- "categoryId": 2,
- "url": "https://www.shopify.com/",
- "companyId": "shopify"
- },
- "shopper_approved": {
- "name": "Shopper Approved",
- "categoryId": 2,
- "url": "http://www.shopperapproved.com",
- "companyId": "shopper_approved"
- },
- "shopping_com": {
- "name": "Shopping.com",
- "categoryId": 4,
- "url": "https://partnernetwork.ebay.com/",
- "companyId": "ebay_partner_network"
- },
- "shopping_flux": {
- "name": "Shopping Flux",
- "categoryId": 6,
- "url": "http://www.shopping-flux.com/",
- "companyId": "shopping_flux"
- },
- "shoprunner": {
- "name": "ShopRunner",
- "categoryId": 2,
- "url": "https://www.shoprunner.com",
- "companyId": "shoprunner"
- },
- "shopsocially": {
- "name": "ShopSocially",
- "categoryId": 2,
- "url": "http://shopsocially.com/",
- "companyId": "shopsocially"
- },
- "shopzilla": {
- "name": "Shopzilla",
- "categoryId": 4,
- "url": "http://www.shopzilla.com/",
- "companyId": "shopzilla"
- },
- "shortnews": {
- "name": "ShortNews.de",
- "categoryId": 8,
- "url": "http://www.shortnews.de/#",
- "companyId": null
- },
- "showrss": {
- "name": "showRSS",
- "categoryId": 8,
- "url": "https://showrss.info/",
- "companyId": "showrss",
- "source": "AdGuard"
- },
- "shrink": {
- "name": "Shrink",
- "categoryId": 2,
- "url": "http://shink.in/",
- "companyId": "shrink.in"
- },
- "shutterstock": {
- "name": "Shutterstock",
- "categoryId": 8,
- "url": "https://www.shutterstock.com/",
- "companyId": "shutterstock_inc"
- },
- "siblesectiveal.club": {
- "name": "siblesectiveal.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sidecar": {
- "name": "Sidecar",
- "categoryId": 6,
- "url": "http://hello.getsidecar.com/",
- "companyId": "sidecar"
- },
- "sift_science": {
- "name": "Sift Science",
- "categoryId": 6,
- "url": "https://siftscience.com/",
- "companyId": "sift_science"
- },
- "signal": {
- "name": "Signal",
- "categoryId": 5,
- "url": "https://www.signal.co/",
- "companyId": "signal_digital"
- },
- "signifyd": {
- "name": "Signifyd",
- "categoryId": 6,
- "url": "https://www.signifyd.com/",
- "companyId": "signifyd"
- },
- "silverpop": {
- "name": "Silverpop",
- "categoryId": 2,
- "url": "http://www.silverpop.com/",
- "companyId": "ibm"
- },
- "similardeals.net": {
- "name": "SimilarDeals",
- "categoryId": 8,
- "url": "http://www.similardeals.net/",
- "companyId": null
- },
- "similarweb": {
- "name": "SimilarWeb",
- "categoryId": 6,
- "url": "https://www.similarweb.com/",
- "companyId": "similarweb",
- "source": "AdGuard"
- },
- "simplereach": {
- "name": "SimpleReach",
- "categoryId": 6,
- "url": "https://www.nativo.com/simplereach",
- "companyId": "nativo"
- },
- "simpli.fi": {
- "name": "Simpli.fi",
- "categoryId": 4,
- "url": "http://www.simpli.fi",
- "companyId": "simpli.fi"
- },
- "sina": {
- "name": "Sina",
- "categoryId": 6,
- "url": "http://www.sina.com/",
- "companyId": "sina"
- },
- "sina_cdn": {
- "name": "Sina CDN",
- "categoryId": 9,
- "url": "https://www.sina.com.cn/",
- "companyId": "sina"
- },
- "singlefeed": {
- "name": "SingleFeed",
- "categoryId": 4,
- "url": "https://www.singlefeed.com/",
- "companyId": "singlefeed"
- },
- "sirdata": {
- "name": "Sirdata",
- "categoryId": 6,
- "url": "http://www.sirdata.com/home/",
- "companyId": "sirdata"
- },
- "site24x7": {
- "name": "Site24x7",
- "categoryId": 6,
- "url": "https://www.site24x7.com/",
- "companyId": "zoho_corp"
- },
- "site_booster": {
- "name": "Site Booster",
- "categoryId": 7,
- "url": "https://sitebooster.com/",
- "companyId": "site_booster"
- },
- "site_stratos": {
- "name": "Site Stratos",
- "categoryId": 4,
- "url": "http://www.infocube.co.jp/",
- "companyId": "infocube"
- },
- "siteapps": {
- "name": "SiteApps",
- "categoryId": 2,
- "url": "http://siteapps.com",
- "companyId": "siteapps"
- },
- "sitebro": {
- "name": "SiteBro",
- "categoryId": 6,
- "url": "http://www.sitebro.net/",
- "companyId": "sitebro"
- },
- "siteheart": {
- "name": "SiteHeart",
- "categoryId": 2,
- "url": "http://siteheart.com/",
- "companyId": "siteheart"
- },
- "siteimprove": {
- "name": "Siteimprove",
- "categoryId": 6,
- "url": "http://siteimprove.com",
- "companyId": "siteimprove"
- },
- "siteimprove_analytics": {
- "name": "SiteImprove Analytics",
- "categoryId": 6,
- "url": "http://siteimprove.com",
- "companyId": "siteimprove"
- },
- "sitelabweb.com": {
- "name": "sitelabweb.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sitemeter": {
- "name": "SiteMeter",
- "categoryId": 6,
- "url": "http://www.sitemeter.com/",
- "companyId": "sitemeter,_inc."
- },
- "sitescout": {
- "name": "SiteScout by Centro",
- "categoryId": 4,
- "url": "http://www.sitescout.com",
- "companyId": "centro"
- },
- "sitetag": {
- "name": "SiteTag",
- "categoryId": 2,
- "url": "http://www.sitetag.us/",
- "companyId": "sitetag"
- },
- "sitewit": {
- "name": "SiteWit",
- "categoryId": 4,
- "url": "http://www.sitewit.com/",
- "companyId": "sitewit"
- },
- "six_apart_advertising": {
- "name": "Six Apart Advertising",
- "categoryId": 4,
- "url": "http://www.sixapart.com/advertising/",
- "companyId": "six_apart"
- },
- "sixt-neuwagen.de": {
- "name": "sixt-neuwagen.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "skadtec.com": {
- "name": "GP One GmbH",
- "categoryId": 6,
- "url": "http://www.gp-one.com/",
- "companyId": null
- },
- "skimlinks": {
- "name": "SkimLinks",
- "categoryId": 4,
- "url": "http://www.skimlinks.com/",
- "companyId": "skimlinks"
- },
- "skroutz": {
- "name": "Skroutz",
- "categoryId": 6,
- "url": "https://www.skroutz.gr/",
- "companyId": "skroutz"
- },
- "skyglue": {
- "name": "SkyGlue",
- "categoryId": 6,
- "url": "http://www.skyglue.com/",
- "companyId": "skyglue_technology"
- },
- "skype": {
- "name": "Skype",
- "categoryId": 2,
- "url": "http://www.skype.com",
- "companyId": "microsoft"
- },
- "skysa": {
- "name": "Skysa",
- "categoryId": 2,
- "url": "http://www.skysa.com/",
- "companyId": "skysa"
- },
- "skyscnr.com": {
- "name": "Skyscanner CDN",
- "categoryId": 9,
- "url": "https://www.skyscanner.net/",
- "companyId": null
- },
- "slack": {
- "name": "Slack",
- "categoryId": 8,
- "url": "https://www.slack.com/",
- "companyId": "salesforce",
- "source": "AdGuard"
- },
- "slashdot_widget": {
- "name": "Slashdot Widget",
- "categoryId": 2,
- "url": "http://slashdot.org",
- "companyId": "slashdot"
- },
- "sleeknote": {
- "name": "Sleeknote",
- "categoryId": 2,
- "url": "https://sleeknote.com/",
- "companyId": "sleeknote"
- },
- "sli_systems": {
- "name": "SLI Systems",
- "categoryId": 2,
- "url": "http://www.sli-systems.com",
- "companyId": "sli_systems"
- },
- "slice_factory": {
- "name": "Slice Factory",
- "categoryId": 2,
- "url": "http://www.slicefactory.com/",
- "companyId": "slice_factory"
- },
- "slimcutmedia": {
- "name": "SlimCutMedia",
- "categoryId": 6,
- "url": "http://www.slimcutmedia.com/",
- "companyId": "slimcutmedia"
- },
- "slingpic": {
- "name": "Slingpic",
- "categoryId": 4,
- "url": "http://slingpic.com/",
- "companyId": "affectv"
- },
- "smaato": {
- "name": "Smaato",
- "categoryId": 4,
- "url": "http://www.smaato.com/",
- "companyId": "smaato"
- },
- "smart4ads": {
- "name": "smart4ads",
- "categoryId": 4,
- "url": "http://www.smart4ads.com",
- "companyId": "smart4ads"
- },
- "smart_adserver": {
- "name": "SMART AdServer",
- "categoryId": 4,
- "url": "https://smartadserver.com/",
- "companyId": "smart_adserver"
- },
- "smart_call": {
- "name": "Smart Call",
- "categoryId": 2,
- "url": "https://smartcall.kz/",
- "companyId": "smart_call"
- },
- "smart_content": {
- "name": "Smart Content",
- "categoryId": 4,
- "url": "http://www.getsmartcontent.com",
- "companyId": "get_smart_content"
- },
- "smart_device_media": {
- "name": "Smart Device Media",
- "categoryId": 4,
- "url": "http://www.smartdevicemedia.com/",
- "companyId": "smart_device_media"
- },
- "smart_leads": {
- "name": "Smart Leads",
- "categoryId": 4,
- "url": "http://www.cnt.my/",
- "companyId": "smart_leads"
- },
- "smart_selling": {
- "name": "Smart Selling",
- "categoryId": 2,
- "url": "https://smartselling.cz/",
- "companyId": "smart_selling"
- },
- "smartad": {
- "name": "smartAD",
- "categoryId": 4,
- "url": "http://smartad.eu/",
- "companyId": "smartad"
- },
- "smartbn": {
- "name": "SmartBN",
- "categoryId": 4,
- "url": "http://smartbn.ru/",
- "companyId": "smartbn"
- },
- "smartclick.net": {
- "name": "SmartClick",
- "categoryId": 4,
- "url": "http://smartclick.net/",
- "companyId": null
- },
- "smartclip": {
- "name": "SmartClip",
- "categoryId": 4,
- "url": "http://www.smartclip.com/",
- "companyId": "smartclip"
- },
- "smartcontext": {
- "name": "SmartContext",
- "categoryId": 4,
- "url": "http://smartcontext.pl/",
- "companyId": "smartcontext"
- },
- "smarter_remarketer": {
- "name": "SmarterHQ",
- "categoryId": 4,
- "url": "https://smarterhq.com",
- "companyId": "smarterhq"
- },
- "smarter_travel": {
- "name": "Smarter Travel Media",
- "categoryId": 4,
- "url": "https://www.smartertravel.com/",
- "companyId": "iac_apps"
- },
- "smarterclick": {
- "name": "Smarterclick",
- "categoryId": 4,
- "url": "http://www.smarterclick.co.uk/",
- "companyId": "smarter_click"
- },
- "smartertrack": {
- "name": "SmarterTrack",
- "categoryId": 4,
- "url": "http://www.smartertrack.com/",
- "companyId": "smartertrack"
- },
- "smartlink.cool": {
- "name": "smartlink.cool",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "smartlook": {
- "name": "Smartlook",
- "categoryId": 2,
- "url": "https://www.smartlook.com/",
- "companyId": "smartlook"
- },
- "smartstream.tv": {
- "name": "SmartStream.TV",
- "categoryId": 4,
- "url": "https://www.smartstream.tv/en",
- "companyId": "smartstream"
- },
- "smartsupp_chat": {
- "name": "Smartsupp Chat",
- "categoryId": 2,
- "url": "https://www.smartsupp.com/",
- "companyId": "smartsuppp"
- },
- "smi2.ru": {
- "name": "smi2.ru",
- "categoryId": 6,
- "url": "https://smi2.net/",
- "companyId": "media2_stat.media"
- },
- "smooch": {
- "name": "Smooch",
- "categoryId": 2,
- "url": "https://smooch.io/",
- "companyId": "smooch"
- },
- "smowtion": {
- "name": "Smowtion",
- "categoryId": 4,
- "url": "http://www.smowtion.com/",
- "companyId": "smowtion"
- },
- "smx_ventures": {
- "name": "SMX Ventures",
- "categoryId": 6,
- "url": "http://smxeventures.com/",
- "companyId": "smx_ventures"
- },
- "smyte": {
- "name": "Smyte",
- "categoryId": 6,
- "url": "https://www.smyte.com/",
- "companyId": "smyte"
- },
- "snacktv": {
- "name": "SnackTV",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "snacktv_player": {
- "name": "SnackTV-Player",
- "categoryId": 0,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "snap": {
- "name": "Snap",
- "categoryId": 2,
- "url": "http://www.snap.com/",
- "companyId": "snap_technologies"
- },
- "snap_engage": {
- "name": "Snap Engage",
- "categoryId": 2,
- "url": "https://snapengage.com/",
- "companyId": "snap_engage"
- },
- "snapchat": {
- "name": "Snapchat For Business",
- "categoryId": 4,
- "url": "https://www.snapchat.com/",
- "companyId": "snap_technologies"
- },
- "snapcraft": {
- "name": "Snapcraft",
- "categoryId": 8,
- "url": "https://snapcraft.io",
- "companyId": "canonical",
- "source": "AdGuard"
- },
- "snigelweb": {
- "name": "SnigelWeb, Inc.",
- "categoryId": 4,
- "url": "http://www.snigelweb.com/",
- "companyId": "snigelweb_inc"
- },
- "snoobi": {
- "name": "Snoobi",
- "categoryId": 6,
- "url": "http://www.snoobi.eu/",
- "companyId": "snoobi"
- },
- "snoobi_analytics": {
- "name": "Snoobi Analytics",
- "categoryId": 6,
- "url": "http://www.snoobi.com/",
- "companyId": "snoobi_oy"
- },
- "snowplow": {
- "name": "Snowplow",
- "categoryId": 6,
- "url": "http://snowplowanalytics.com/",
- "companyId": "snowplow"
- },
- "soasta_mpulse": {
- "name": "SOASTA mPulse",
- "categoryId": 6,
- "url": "http://www.soasta.com/",
- "companyId": "akamai"
- },
- "sociable_labs": {
- "name": "Sociable Labs",
- "categoryId": 4,
- "url": "http://www.sociablelabs.com/",
- "companyId": "sociable_labs"
- },
- "social_amp": {
- "name": "Social Amp",
- "categoryId": 4,
- "url": "http://www.merkleinc.com/",
- "companyId": "dentsu_aegis_network"
- },
- "social_annex": {
- "name": "Social Annex",
- "categoryId": 4,
- "url": "http://www.socialannex.com",
- "companyId": "social_annex"
- },
- "social_miner": {
- "name": "Social Miner",
- "categoryId": 7,
- "url": "https://socialminer.com/",
- "companyId": "social_miner"
- },
- "socialbeat": {
- "name": "socialbeat",
- "categoryId": 4,
- "url": "http://www.socialbeat.it/",
- "companyId": "socialbeat"
- },
- "socialrms": {
- "name": "SocialRMS",
- "categoryId": 7,
- "url": "http://socialinterface.com/socialrms/",
- "companyId": "socialinterface"
- },
- "sociaplus.com": {
- "name": "SociaPlus",
- "categoryId": 6,
- "url": "https://sociaplus.com/",
- "companyId": null
- },
- "sociomantic": {
- "name": "Sociomantic",
- "categoryId": 4,
- "url": "http://www.sociomantic.com/",
- "companyId": "sociomantic_labs_gmbh"
- },
- "sohu": {
- "name": "Sohu",
- "categoryId": 7,
- "url": "http://www.sohu.com",
- "companyId": "sohu"
- },
- "sojern": {
- "name": "Sojern",
- "categoryId": 4,
- "url": "http://www.sojern.com/",
- "companyId": "sojern"
- },
- "sokrati": {
- "name": "Sokrati",
- "categoryId": 4,
- "url": "http://sokrati.com/",
- "companyId": "sokrati"
- },
- "solads.media": {
- "name": "solads.media",
- "categoryId": 4,
- "url": "http://solads.media/",
- "companyId": null
- },
- "solaredge": {
- "name": "SolarEdge Technologies, Inc.",
- "categoryId": 8,
- "url": "https://www.solaredge.com/",
- "companyId": "solaredge",
- "source": "AdGuard"
- },
- "solidopinion": {
- "name": "SolidOpinion",
- "categoryId": 2,
- "url": "https://solidopinion.com/",
- "companyId": "solidopinion"
- },
- "solve_media": {
- "name": "Solve Media",
- "categoryId": 4,
- "url": "http://solvemedia.com/",
- "companyId": "solve_media"
- },
- "soma_2": {
- "name": "SOMA 2",
- "categoryId": 4,
- "url": "http://www.webcombi.de/",
- "companyId": "soma_2_gmbh"
- },
- "somoaudience": {
- "name": "SoMo Audience",
- "categoryId": 4,
- "url": "https://somoaudience.com/",
- "companyId": "somoaudience"
- },
- "sonobi": {
- "name": "Sonobi",
- "categoryId": 4,
- "url": "http://sonobi.com/",
- "companyId": "sonobi"
- },
- "sonos": {
- "name": "Sonos",
- "categoryId": 8,
- "url": "https://www.sonos.com/",
- "companyId": "sonos",
- "source": "AdGuard"
- },
- "sophus3": {
- "name": "Sophus3",
- "categoryId": 4,
- "url": "http://www.sophus3.com/",
- "companyId": "sophus3"
- },
- "sortable": {
- "name": "Sortable",
- "categoryId": 4,
- "url": "https://sortable.com/",
- "companyId": "sortable"
- },
- "soundcloud": {
- "name": "SoundCloud",
- "categoryId": 0,
- "url": "http://soundcloud.com/",
- "companyId": "soundcloud"
- },
- "sourceknowledge_pixel": {
- "name": "SourceKnowledge Pixel",
- "categoryId": 4,
- "url": "http://www.provenpixel.com/",
- "companyId": "sourceknowledge"
- },
- "sourcepoint": {
- "name": "Sourcepoint",
- "categoryId": 4,
- "url": "https://www.sourcepoint.com/",
- "companyId": "sourcepoint"
- },
- "sovrn": {
- "name": "sovrn",
- "categoryId": 4,
- "url": "https://www.sovrn.com/",
- "companyId": "sovrn"
- },
- "sovrn_viewability_solutions": {
- "name": "Sovrn Signal",
- "categoryId": 4,
- "url": "https://www.sovrn.com/publishers/signal/",
- "companyId": "sovrn"
- },
- "spark_studios": {
- "name": "Spark Studios",
- "categoryId": 0,
- "url": "http://www.sparkstudios.com/",
- "companyId": "spark_studios"
- },
- "sparkasse.de": {
- "name": "sparkasse.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "speakpipe": {
- "name": "SpeakPipe",
- "categoryId": 2,
- "url": "http://www.speakpipe.com/",
- "companyId": "speakpipe"
- },
- "specific_media": {
- "name": "Specific Media",
- "categoryId": 4,
- "url": "http://www.specificmedia.com",
- "companyId": "specific_media"
- },
- "spectate": {
- "name": "Spectate",
- "categoryId": 6,
- "url": "http://spectate.com/",
- "companyId": "spectate"
- },
- "speed_shift_media": {
- "name": "Speed Shift Media",
- "categoryId": 4,
- "url": "http://www.speedshiftmedia.com/",
- "companyId": "speed_shift_media"
- },
- "speedcurve": {
- "name": "SpeedCurve",
- "categoryId": 6,
- "url": "https://speedcurve.com/",
- "companyId": null
- },
- "speedyads": {
- "name": "SpeedyAds",
- "categoryId": 4,
- "url": "http://www.entireweb.com/speedyads/",
- "companyId": "entireweb"
- },
- "speee": {
- "name": "Speee",
- "categoryId": 4,
- "url": "https://speee.jp",
- "companyId": "speee"
- },
- "sphere": {
- "name": "Sphere",
- "categoryId": 4,
- "url": "http://www.sphere.com/",
- "companyId": "verizon"
- },
- "spheremall": {
- "name": "SphereMall",
- "categoryId": 6,
- "url": "https://spheremall.com",
- "companyId": "spheremall"
- },
- "sphereup": {
- "name": "SphereUp",
- "categoryId": 2,
- "url": "http://zoomd.com/",
- "companyId": "zoomd"
- },
- "spicy": {
- "name": "Spicy",
- "categoryId": 4,
- "url": "http://sspicy.ru/#main",
- "companyId": "spicy_ssp"
- },
- "spider.ad": {
- "name": "Spider.Ad",
- "categoryId": 4,
- "url": "http://spider.ad/",
- "companyId": "spider.ad"
- },
- "spider_ads": {
- "name": "Spider Ads",
- "categoryId": 4,
- "url": "http://www.spiderads.eu/",
- "companyId": "spiderads"
- },
- "spinnakr": {
- "name": "Spinnakr",
- "categoryId": 6,
- "url": "http://spinnakr.com/",
- "companyId": "spinnakr"
- },
- "spokenlayer": {
- "name": "SpokenLayer",
- "categoryId": 0,
- "url": "http://www.spokenlayer.com",
- "companyId": "spokenlayer"
- },
- "spongecell": {
- "name": "Spongecell",
- "categoryId": 4,
- "url": "http://www.spongecell.com/",
- "companyId": "spongecell"
- },
- "sponsorads.de": {
- "name": "SponsorAds.de",
- "categoryId": 4,
- "url": "http://sponsorads.de",
- "companyId": "sponsorads.de"
- },
- "sportsbet_affiliates": {
- "name": "Sportsbet Affiliates",
- "categoryId": 4,
- "url": "http://www.sportsbetaffiliates.com.au/",
- "companyId": "sportsbet_affiliates"
- },
- "spot.im": {
- "name": "Spot.IM",
- "categoryId": 7,
- "url": "https://www.spot.im/",
- "companyId": "spot.im"
- },
- "spoteffect": {
- "name": "Spoteffect",
- "categoryId": 6,
- "url": "http://www.spoteffects.com/home/",
- "companyId": "spoteffect"
- },
- "spotify": {
- "name": "Spotify",
- "categoryId": 0,
- "url": "https://www.spotify.com/",
- "companyId": "spotify"
- },
- "spotify_embed": {
- "name": "Spotify Embed",
- "categoryId": 0,
- "url": "https://www.spotify.com",
- "companyId": "spotify"
- },
- "spotscenered.info": {
- "name": "spotscenered.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "spotxchange": {
- "name": "SpotX",
- "categoryId": 4,
- "url": "https://www.spotx.tv/",
- "companyId": "rtl_group"
- },
- "spoutable": {
- "name": "Spoutable",
- "categoryId": 4,
- "url": "http://spoutable.com/",
- "companyId": "spoutable"
- },
- "springboard": {
- "name": "SpringBoard",
- "categoryId": 4,
- "url": "http://home.springboardplatform.com/",
- "companyId": "springboard"
- },
- "springserve": {
- "name": "SpringServe",
- "categoryId": 4,
- "url": "http://springserve.com/",
- "companyId": "springserve"
- },
- "sprinklr": {
- "name": "Sprinklr",
- "categoryId": 4,
- "url": "https://www.sprinklr.com/",
- "companyId": "sprinklr"
- },
- "sputnik": {
- "name": "Sputnik",
- "categoryId": 6,
- "url": "https://cnt.sputnik.ru/",
- "companyId": "sputnik"
- },
- "squadata": {
- "name": "Squadata",
- "categoryId": 4,
- "url": "http://www.email-match.net/",
- "companyId": "squadata"
- },
- "squarespace.com": {
- "name": "Squarespace",
- "categoryId": 6,
- "url": "https://www.squarespace.com/",
- "companyId": null
- },
- "srvtrck.com": {
- "name": "srvtrck.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "srvvtrk.com": {
- "name": "srvvtrk.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sstatic.net": {
- "name": "Stack Exchange",
- "categoryId": 9,
- "url": "https://sstatic.net/",
- "companyId": null
- },
- "st-hatena": {
- "name": "Hatena",
- "categoryId": 7,
- "url": "http://www.hatena.ne.jp/",
- "companyId": "hatena_jp"
- },
- "stackadapt": {
- "name": "StackAdapt",
- "categoryId": 4,
- "url": "http://www.stackadapt.com/",
- "companyId": "stackadapt"
- },
- "stackpathdns.com": {
- "name": "StackPath",
- "categoryId": 9,
- "url": "https://www.stackpath.com/",
- "companyId": null
- },
- "stailamedia_com": {
- "name": "stailamedia.com",
- "categoryId": 4,
- "url": "http://stailamedia.com/",
- "companyId": null
- },
- "stalluva.pro": {
- "name": "stalluva.pro",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "startapp": {
- "name": "StartApp",
- "categoryId": 4,
- "url": "https://www.startapp.com/",
- "companyId": null
- },
- "stat24": {
- "name": "Stat24",
- "categoryId": 6,
- "url": "http://www.stat24.com/en/",
- "companyId": "stat24"
- },
- "stat4u": {
- "name": "stat4u",
- "categoryId": 6,
- "url": "http://stat.4u.pl/",
- "companyId": "stat4u"
- },
- "statcounter": {
- "name": "Statcounter",
- "categoryId": 6,
- "url": "http://www.statcounter.com/",
- "companyId": "statcounter"
- },
- "stathat": {
- "name": "StatHat",
- "categoryId": 6,
- "url": "http://www.stathat.com/",
- "companyId": "stathat"
- },
- "statisfy": {
- "name": "Statisfy",
- "categoryId": 6,
- "url": "http://www.statisfy.com/",
- "companyId": "statisfy"
- },
- "statsy.net": {
- "name": "statsy.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "statuscake": {
- "name": "StatusCake",
- "categoryId": 6,
- "url": "https://www.statuscake.com/",
- "companyId": "statuscake"
- },
- "statuspage.io": {
- "name": "Statuspage",
- "categoryId": 2,
- "url": "https://www.statuspage.io/",
- "companyId": "atlassian"
- },
- "stayfriends.de": {
- "name": "stayfriends.de",
- "categoryId": 8,
- "url": "https://www.stayfriends.de/",
- "companyId": null
- },
- "steelhouse": {
- "name": "Steel House Media",
- "categoryId": 4,
- "url": "https://steelhouse.com/",
- "companyId": "steelhouse"
- },
- "steepto.com": {
- "name": "Steepto",
- "categoryId": 4,
- "url": "https://www.steepto.com/",
- "companyId": null
- },
- "stepstone.com": {
- "name": "StepStone",
- "categoryId": 8,
- "url": "https://www.stepstone.com/",
- "companyId": null
- },
- "stetic": {
- "name": "Stetic",
- "categoryId": 6,
- "url": "https://www.stetic.com/",
- "companyId": "stetic"
- },
- "stickyads": {
- "name": "StickyAds",
- "categoryId": 4,
- "url": "http://corporate.comcast.com/",
- "companyId": "comcast"
- },
- "stocktwits": {
- "name": "StockTwits",
- "categoryId": 2,
- "url": "http://stocktwits.com",
- "companyId": "stocktwits"
- },
- "storify": {
- "name": "Storify",
- "categoryId": 4,
- "url": "https://storify.com/",
- "companyId": "adobe"
- },
- "storygize": {
- "name": "Storygize",
- "categoryId": 4,
- "url": "http://www.storygize.com/",
- "companyId": null
- },
- "strands_recommender": {
- "name": "Strands Recommender",
- "categoryId": 4,
- "url": "http://recommender.strands.com",
- "companyId": "strands"
- },
- "strava": {
- "name": "Strava",
- "categoryId": 6,
- "url": "https://strava.com",
- "companyId": "strava"
- },
- "streak": {
- "name": "Streak",
- "categoryId": 2,
- "url": "http://www.streak.com/",
- "companyId": "streak"
- },
- "streamotion": {
- "name": "Streamotion",
- "categoryId": 0,
- "url": "https://streamotion.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "streamrail.com": {
- "name": "StreamRail",
- "categoryId": 4,
- "url": "https://www.streamrail.com/",
- "companyId": "ironsource"
- },
- "stride": {
- "name": "Stride",
- "categoryId": 6,
- "url": "https://www.getstride.com/",
- "companyId": "stride_software"
- },
- "stripchat.com": {
- "name": "stripchat.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "stripe.com": {
- "name": "Stripe",
- "categoryId": 2,
- "url": "https://stripe.com/",
- "companyId": null
- },
- "stripst.com": {
- "name": "stripst.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "stroer_digital_media": {
- "name": "Stroer Digital Media",
- "categoryId": 4,
- "url": "http://www.stroeer.de/",
- "companyId": "stroer"
- },
- "strossle": {
- "name": "Strossle",
- "categoryId": 4,
- "url": "https://strossle.com/",
- "companyId": "strossle"
- },
- "struq": {
- "name": "Struq",
- "categoryId": 4,
- "url": "http://www.struq.com/",
- "companyId": "quantcast"
- },
- "stumbleupon_widgets": {
- "name": "StumbleUpon Widgets",
- "categoryId": 7,
- "url": "http://www.stumbleupon.com/",
- "companyId": "stumbleupon"
- },
- "sub2": {
- "name": "Sub2",
- "categoryId": 4,
- "url": "http://www.sub2tech.com/",
- "companyId": "sub2"
- },
- "sublime_skinz": {
- "name": "Sublime",
- "categoryId": 4,
- "url": "https://sublimeskinz.com/home",
- "companyId": "sublime_skinz"
- },
- "suggest.io": {
- "name": "Suggest.io",
- "categoryId": 4,
- "url": "https://suggest.io/",
- "companyId": "suggest.io"
- },
- "sumologic.com": {
- "name": "Sumologic",
- "categoryId": 6,
- "url": "https://www.sumologic.com/",
- "companyId": null
- },
- "sumome": {
- "name": "Sumo",
- "categoryId": 6,
- "url": "https://sumo.com/",
- "companyId": "sumome"
- },
- "sundaysky": {
- "name": "SundaySky",
- "categoryId": 4,
- "url": "http://www.sundaysky.com/",
- "companyId": "sundaysky"
- },
- "supercell": {
- "name": "Supercell",
- "categoryId": 2,
- "url": "https://supercell.com/",
- "companyId": "supercell",
- "source": "AdGuard"
- },
- "supercounters": {
- "name": "SuperCounters",
- "categoryId": 6,
- "url": "http://www.supercounters.com/",
- "companyId": "supercounters"
- },
- "superfastcdn.com": {
- "name": "superfastcdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "supership": {
- "name": "Supership",
- "categoryId": 4,
- "url": "https://supership.jp/en/",
- "companyId": "supership"
- },
- "supplyframe": {
- "name": "SupplyFrame",
- "categoryId": 4,
- "url": "https://supplyframe.com/",
- "companyId": "supplyframe"
- },
- "surf_by_surfingbird": {
- "name": "Surf by Surfingbird",
- "categoryId": 2,
- "url": "http://surfingbird.ru/",
- "companyId": "surfingbird"
- },
- "survata": {
- "name": "Survata",
- "categoryId": 4,
- "url": "https://www.survata.com/",
- "companyId": "survata"
- },
- "sweettooth": {
- "name": "Sweettooth",
- "categoryId": 2,
- "url": "https://www.sweettoothrewards.com/",
- "companyId": "sweet_tooth_rewards"
- },
- "swiftype": {
- "name": "Swiftype",
- "categoryId": 9,
- "url": "https://swiftype.com/",
- "companyId": "elastic"
- },
- "swisscom": {
- "name": "Swisscom",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "switch_concepts": {
- "name": "Switch Concepts",
- "categoryId": 4,
- "url": "http://www.switchconcepts.co.uk/",
- "companyId": "switch_concepts"
- },
- "switchtv": {
- "name": "Switch Media",
- "categoryId": 8,
- "url": "https://www.switch.tv/",
- "companyId": "switchtv",
- "source": "AdGuard"
- },
- "swoop": {
- "name": "Swoop",
- "categoryId": 4,
- "url": "http://swoop.com/",
- "companyId": "swoop"
- },
- "sykes": {
- "name": "Sykes",
- "categoryId": 6,
- "url": "http://www.sykescottages.co.uk/",
- "companyId": "sykes_cottages"
- },
- "symantec": {
- "name": "Symantec (Norton Secured Seal)",
- "categoryId": 5,
- "url": "https://www.symantec.com/page.jsp?id=ssl-resources&tabID=3#",
- "companyId": "symantec"
- },
- "symphony_talent": {
- "name": "Symphony Talent",
- "categoryId": 2,
- "url": "http://www.symphonytalent.com/",
- "companyId": "symphony_talent"
- },
- "synacor": {
- "name": "Synacor",
- "categoryId": 4,
- "url": "https://www.synacor.com/",
- "companyId": "synacor"
- },
- "syncapse": {
- "name": "Syncapse",
- "categoryId": 4,
- "url": "http://www.clickable.com/",
- "companyId": "syncapse"
- },
- "synergy-e": {
- "name": "Synergy-E",
- "categoryId": 4,
- "url": "http://synergy-e.com/",
- "companyId": "synergy-e"
- },
- "t-mobile": {
- "name": "Deutsche Telekom",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "t8cdn.com": {
- "name": "t8cdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "tableteducation.com": {
- "name": "tableteducation.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "taboola": {
- "name": "Taboola",
- "categoryId": 4,
- "url": "http://www.taboola.com",
- "companyId": "taboola"
- },
- "tacoda": {
- "name": "Tacoda",
- "categoryId": 4,
- "url": "http://www.tacoda.com/",
- "companyId": "verizon"
- },
- "tag_commander": {
- "name": "Commanders Act",
- "categoryId": 5,
- "url": "https://www.commandersact.com/en/",
- "companyId": "tag_commander"
- },
- "tagcade": {
- "name": "Tagcade",
- "categoryId": 4,
- "url": "https://www.pubvantage.com/",
- "companyId": "pubvantage"
- },
- "taggify": {
- "name": "Taggify",
- "categoryId": 4,
- "url": "http://new.taggify.net/",
- "companyId": "taggify"
- },
- "taggy": {
- "name": "TAGGY",
- "categoryId": 4,
- "url": "http://taggy.jp/",
- "companyId": "taggy"
- },
- "tagman": {
- "name": "TagMan",
- "categoryId": 5,
- "url": "http://www.tagman.com/",
- "companyId": "ensighten"
- },
- "tail_target": {
- "name": "Tail",
- "categoryId": 6,
- "url": "https://www.tail.digital/",
- "companyId": "tail.digital"
- },
- "tailsweep": {
- "name": "Tailsweep",
- "categoryId": 4,
- "url": "http://www.tailsweep.se/",
- "companyId": "tailsweep"
- },
- "tamedia.ch": {
- "name": "Tamedia",
- "categoryId": 4,
- "url": "https://www.tamedia.ch/",
- "companyId": null
- },
- "tanx": {
- "name": "Tanx",
- "categoryId": 4,
- "url": "http://tanx.com/",
- "companyId": "tanx"
- },
- "taobao": {
- "name": "Taobao",
- "categoryId": 4,
- "url": "https://world.taobao.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "tapad": {
- "name": "Tapad",
- "categoryId": 4,
- "url": "http://www.tapad.com/",
- "companyId": "telenor"
- },
- "tapinfluence": {
- "name": "TapInfluence",
- "categoryId": 4,
- "url": "http://theblogfrog.com/",
- "companyId": "tapinfluence"
- },
- "tarafdari": {
- "name": "Tarafdari",
- "categoryId": 4,
- "url": "https://www.tarafdari.com/",
- "companyId": "tarafdari"
- },
- "target_2_sell": {
- "name": "Target 2 Sell",
- "categoryId": 4,
- "url": "http://www.target2sell.com/en/",
- "companyId": "target_2_sell"
- },
- "target_circle": {
- "name": "Target Circle",
- "categoryId": 6,
- "url": "http://targetcircle.com",
- "companyId": "target_circle"
- },
- "target_fuel": {
- "name": "Target Fuel",
- "categoryId": 6,
- "url": "http://targetfuel.com/",
- "companyId": "target_fuel"
- },
- "tawk": {
- "name": "Tawk",
- "categoryId": 2,
- "url": "https://www.tawk.to/",
- "companyId": "tawk"
- },
- "tbn.ru": {
- "name": "TBN.ru",
- "categoryId": 4,
- "url": "http://www.agava.ru",
- "companyId": "agava"
- },
- "tchibo_de": {
- "name": "tchibo.de",
- "categoryId": 8,
- "url": "http://tchibo.de/",
- "companyId": null
- },
- "tdsrmbl_net": {
- "name": "tdsrmbl.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "teads": {
- "name": "Teads",
- "categoryId": 4,
- "url": "http://teads.tv/",
- "companyId": "teads"
- },
- "tealeaf": {
- "name": "Tealeaf",
- "categoryId": 6,
- "url": "https://www.ibm.com/digital-marketing",
- "companyId": "ibm"
- },
- "tealium": {
- "name": "Tealium",
- "categoryId": 5,
- "url": "http://www.tealium.com/",
- "companyId": "tealium"
- },
- "teaser.cc": {
- "name": "Teaser.cc",
- "categoryId": 4,
- "url": "http://www.teaser.cc/",
- "companyId": "teaser.cc"
- },
- "tedemis": {
- "name": "Tedemis",
- "categoryId": 4,
- "url": "http://www.tedemis.com",
- "companyId": "tedemis"
- },
- "teletech": {
- "name": "TeleTech",
- "categoryId": 4,
- "url": "http://www.webmetro.com/whoweare/technology.aspx",
- "companyId": "teletech"
- },
- "telstra": {
- "name": "Telstra",
- "categoryId": 8,
- "url": "https://www.telstra.com.au/",
- "companyId": "telstra",
- "source": "AdGuard"
- },
- "tender": {
- "name": "Tender",
- "categoryId": 2,
- "url": "http://www.tenderapp.com/",
- "companyId": "tender"
- },
- "tensitionschoo.club": {
- "name": "tensitionschoo.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "teroti": {
- "name": "Teroti",
- "categoryId": 4,
- "url": "http://www.teroti.com/",
- "companyId": "teroti"
- },
- "terren": {
- "name": "Terren",
- "categoryId": 4,
- "url": "http://www.webterren.com/",
- "companyId": "terren"
- },
- "teufel.de": {
- "name": "teufel.de",
- "categoryId": 8,
- "url": "https://www.teufel.de/",
- "companyId": null
- },
- "the_adex": {
- "name": "The ADEX",
- "categoryId": 4,
- "url": "http://www.theadex.com/",
- "companyId": "prosieben_sat1"
- },
- "the_deck": {
- "name": "The DECK",
- "categoryId": 4,
- "url": "http://decknetwork.net/",
- "companyId": "the_deck"
- },
- "the_guardian": {
- "name": "The Guardian",
- "categoryId": 8,
- "url": "https://www.theguardian.com/",
- "companyId": "the_guardian"
- },
- "the_reach_group": {
- "name": "The Reach Group",
- "categoryId": 4,
- "url": "http://www.redvertisment.com",
- "companyId": "the_reach_group"
- },
- "the_search_agency": {
- "name": "The Search Agency",
- "categoryId": 4,
- "url": "http://www.thesearchagency.com/",
- "companyId": "the_search_agency"
- },
- "the_sun": {
- "name": "The Sun",
- "categoryId": 8,
- "url": "https://www.thesun.co.uk/",
- "companyId": "the_sun"
- },
- "the_weather_company": {
- "name": "The Weather Company",
- "categoryId": 4,
- "url": "http://www.theweathercompany.com/",
- "companyId": "ibm"
- },
- "themoviedb": {
- "name": "The Movie DB",
- "categoryId": 8,
- "url": "https://www.themoviedb.org/",
- "companyId": "themoviedb"
- },
- "thinglink": {
- "name": "ThingLink",
- "categoryId": 4,
- "url": "http://www.thinglink.com/",
- "companyId": "thinglink"
- },
- "threatmetrix": {
- "name": "ThreatMetrix",
- "categoryId": 6,
- "url": "http://threatmetrix.com/",
- "companyId": "threatmetrix"
- },
- "tidbit": {
- "name": "Tidbit",
- "categoryId": 2,
- "url": "http://tidbit.co.in/",
- "companyId": "tidbit"
- },
- "tidio": {
- "name": "Tidio",
- "categoryId": 2,
- "url": "https://www.tidio.com/",
- "companyId": "tidio_chat"
- },
- "tiktok_analytics": {
- "name": "TikTok Analytics",
- "categoryId": 6,
- "url": "https://analytics.tiktok.com",
- "companyId": "bytedance_inc"
- },
- "tiller": {
- "name": "Tiller",
- "categoryId": 4,
- "url": "https://www.tiller.com/",
- "companyId": "tiller"
- },
- "timezondb": {
- "name": "TimezonDB",
- "categoryId": 4,
- "url": "https://timezonedb.com/",
- "companyId": "timezonedb"
- },
- "tinypass": {
- "name": "Piano",
- "categoryId": 5,
- "url": "https://piano.io/",
- "companyId": "piano"
- },
- "tisoomi": {
- "name": "Tisoomi",
- "categoryId": 4,
- "url": "https://tisoomi-services.com/",
- "companyId": null
- },
- "tlv_media": {
- "name": "TLV Media",
- "categoryId": 4,
- "url": "http://www.tlvmedia.com",
- "companyId": "tlvmedia"
- },
- "tns": {
- "name": "TNS",
- "categoryId": 6,
- "url": "http://www.tnsglobal.com/",
- "companyId": "wpp"
- },
- "tomnewsupdate.info": {
- "name": "tomnewsupdate.info",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "tomorrow_focus": {
- "name": "Tomorrow Focus",
- "categoryId": 4,
- "url": "http://www.tomorrow-focus.com",
- "companyId": "hubert_burda_media"
- },
- "tonefuse": {
- "name": "ToneFuse",
- "categoryId": 4,
- "url": "http://www.tonefuse.com/",
- "companyId": "tonefuse"
- },
- "top_mail": {
- "name": "Top Mail",
- "categoryId": 6,
- "url": "https://corp.megafon.com/",
- "companyId": "megafon"
- },
- "toplist.cz": {
- "name": "toplist.cz",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "toponclick_com": {
- "name": "toponclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "topsy": {
- "name": "Topsy",
- "categoryId": 4,
- "url": "http://topsy.com/",
- "companyId": "topsy"
- },
- "torbit": {
- "name": "Torbit",
- "categoryId": 6,
- "url": "http://torbit.com/",
- "companyId": "torbit"
- },
- "toro": {
- "name": "TORO",
- "categoryId": 4,
- "url": "http://toroadvertising.com/",
- "companyId": "toro_advertising"
- },
- "tororango.com": {
- "name": "tororango.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "total_media": {
- "name": "Total Media",
- "categoryId": 4,
- "url": "http://www.totalmedia.co.il/eng/",
- "companyId": "total_media"
- },
- "touchcommerce": {
- "name": "Nuance",
- "categoryId": 2,
- "url": "https://www.nuance.com/omni-channel-customer-engagement/digital.html",
- "companyId": "touchcommerce"
- },
- "tovarro.com": {
- "name": "Tovarro",
- "categoryId": 4,
- "url": "https://www.tovarro.com/",
- "companyId": null
- },
- "tp-cdn.com": {
- "name": "TrialPay",
- "categoryId": 4,
- "url": "https://www.trialpay.com/",
- "companyId": null
- },
- "tracc.it": {
- "name": "Kiwe.io",
- "categoryId": 6,
- "url": "https://www.kiwe.io/",
- "companyId": null
- },
- "tracemyip": {
- "name": "TraceMyIP",
- "categoryId": 4,
- "url": "http://www.tracemyip.org/",
- "companyId": "tracemyip"
- },
- "traceview": {
- "name": "TraceView",
- "categoryId": 6,
- "url": "http://www.appneta.com/",
- "companyId": "appneta"
- },
- "track_duck": {
- "name": "Track Duck",
- "categoryId": 6,
- "url": "https://trackduck.com/",
- "companyId": "track_duck"
- },
- "trackjs": {
- "name": "TrackJS",
- "categoryId": 6,
- "url": "http://www.trackjs.com/",
- "companyId": "trackjs"
- },
- "trackset_conversionlab": {
- "name": "Trackset ConversionLab",
- "categoryId": 4,
- "url": "http://www.trackset.com/",
- "companyId": "trackset"
- },
- "trackuity": {
- "name": "Trackuity",
- "categoryId": 2,
- "url": "http://www.trackuity.com/",
- "companyId": "trackuity"
- },
- "tradedesk": {
- "name": "TradeDesk",
- "categoryId": 4,
- "url": "http://www.thetradedesk.com/",
- "companyId": "the_trade_desk"
- },
- "tradedoubler": {
- "name": "TradeDoubler",
- "categoryId": 4,
- "url": "http://www.tradedoubler.com/",
- "companyId": "tradedoubler"
- },
- "tradelab": {
- "name": "Tradelab",
- "categoryId": 4,
- "url": "http://www.tradelab.fr/",
- "companyId": "tradelab"
- },
- "tradetracker": {
- "name": "TradeTracker",
- "categoryId": 4,
- "url": "http://www.tradetracker.com",
- "companyId": "tradetracker"
- },
- "traffective": {
- "name": "Traffective",
- "categoryId": 4,
- "url": "https://traffective.com/",
- "companyId": null
- },
- "traffic_fuel": {
- "name": "Traffic Fuel",
- "categoryId": 4,
- "url": "https://trafficfuel.com/",
- "companyId": "traffic_fuel"
- },
- "traffic_revenue": {
- "name": "Traffic Revenue",
- "categoryId": 4,
- "url": "http://www.trafficrevenue.net/",
- "companyId": "traffic_revenue"
- },
- "traffic_stars": {
- "name": "Traffic Stars",
- "categoryId": 3,
- "url": "https://trafficstars.com/#index_page",
- "companyId": "traffic_stars"
- },
- "trafficbroker": {
- "name": "TrafficBroker",
- "categoryId": 4,
- "url": "http://trafficbroker.com/",
- "companyId": "trafficbroker"
- },
- "trafficfabrik.com": {
- "name": "Traffic Fabrik",
- "categoryId": 3,
- "url": "https://www.trafficfabrik.com/",
- "companyId": null
- },
- "trafficfactory": {
- "name": "Traffic Factory",
- "categoryId": 4,
- "url": "https://www.trafficfactory.biz/",
- "companyId": null
- },
- "trafficforce": {
- "name": "TrafficForce",
- "categoryId": 4,
- "url": "http://www.trafficforce.com/",
- "companyId": "trafficforce"
- },
- "traffichaus": {
- "name": "TrafficHaus",
- "categoryId": 3,
- "url": "http://www.traffichaus.com",
- "companyId": "traffichaus"
- },
- "trafficjunky": {
- "name": "TrafficJunky",
- "categoryId": 3,
- "url": "http://www.trafficjunky.net/",
- "companyId": "trafficjunky"
- },
- "traffiliate": {
- "name": "Traffiliate",
- "categoryId": 4,
- "url": "http://www.traffiliate.com/",
- "companyId": "dsnr_media_group"
- },
- "trafic": {
- "name": "Trafic",
- "categoryId": 6,
- "url": "http://www.trafic.ro/",
- "companyId": "trafic"
- },
- "trafmag.com": {
- "name": "TrafMag",
- "categoryId": 4,
- "url": "https://trafmag.com/",
- "companyId": "trafmag"
- },
- "transcend": {
- "name": "Transcend Consent",
- "categoryId": 14,
- "url": "https://transcend.io/consent/",
- "companyId": "transcend"
- },
- "transcend_telemetry": {
- "name": "Transcend Telemetry",
- "categoryId": 6,
- "url": "https://transcend.io",
- "companyId": "transcend"
- },
- "transmatic": {
- "name": "Transmatic",
- "categoryId": 6,
- "url": "http://www.transmatico.com/en/",
- "companyId": "transmatico"
- },
- "travel_audience": {
- "name": "Travel Audience",
- "categoryId": 6,
- "url": "https://travelaudience.com/",
- "companyId": "travel_audience"
- },
- "trbo": {
- "name": "trbo",
- "categoryId": 4,
- "url": "http://www.trbo.com/",
- "companyId": "trbo"
- },
- "treasuredata": {
- "name": "Treasure Data",
- "categoryId": 6,
- "url": "https://www.treasuredata.com/",
- "companyId": "arm"
- },
- "tremor_video": {
- "name": "Tremor Video",
- "categoryId": 0,
- "url": "http://www.tremormedia.com/",
- "companyId": "tremor_video"
- },
- "trendcounter": {
- "name": "trendcounter",
- "categoryId": 6,
- "url": "http://www.trendcounter.com/",
- "companyId": "trendcounter"
- },
- "trendemon": {
- "name": "TrenDemon",
- "categoryId": 6,
- "url": "http://trendemon.com",
- "companyId": "trendemon"
- },
- "tribal_fusion": {
- "name": "Tribal Fusion",
- "categoryId": 4,
- "url": "http://www.tribalfusion.com/",
- "companyId": "exponential_interactive"
- },
- "tribal_fusion_notice": {
- "name": "Tribal Fusion Notice",
- "categoryId": 4,
- "url": "http://www.tribalfusion.com",
- "companyId": "exponential_interactive"
- },
- "triblio": {
- "name": "Triblio",
- "categoryId": 6,
- "url": "https://triblio.com/",
- "companyId": "triblio"
- },
- "trigger_mail_marketing": {
- "name": "Trigger Mail Marketing",
- "categoryId": 4,
- "url": "http://www.triggeremailmarketing.com/",
- "companyId": "trigger_mail_marketing"
- },
- "triggerbee": {
- "name": "Triggerbee",
- "categoryId": 2,
- "url": "https://triggerbee.com/",
- "companyId": "triggerbee"
- },
- "tripadvisor": {
- "name": "TripAdvisor",
- "categoryId": 8,
- "url": "http://iac.com/",
- "companyId": "iac_apps"
- },
- "triplelift": {
- "name": "TripleLift",
- "categoryId": 4,
- "url": "http://triplelift.com/",
- "companyId": "triplelift"
- },
- "triptease": {
- "name": "Triptease",
- "categoryId": 2,
- "url": "https://www.triptease.com",
- "companyId": "triptease"
- },
- "triton_digital": {
- "name": "Triton Digital",
- "categoryId": 0,
- "url": "http://www.tritondigital.com/",
- "companyId": "triton_digital"
- },
- "trovus_revelations": {
- "name": "Trovus Revelations",
- "categoryId": 4,
- "url": "http://www.trovus.co.uk/",
- "companyId": "trovus_revelations"
- },
- "trsv3.com": {
- "name": "trsv3.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "true_fit": {
- "name": "True Fit",
- "categoryId": 4,
- "url": "https://www.truefit.com/",
- "companyId": "true_fit"
- },
- "trueanthem": {
- "name": "True Anthem",
- "categoryId": 4,
- "url": "https://www.trueanthem.com/",
- "companyId": "trueanthem"
- },
- "trueffect": {
- "name": "TruEffect",
- "categoryId": 4,
- "url": "http://www.trueffect.com/",
- "companyId": "trueffect"
- },
- "truehits.net": {
- "name": "Truehits.net",
- "categoryId": 6,
- "url": "http://truehits.net/",
- "companyId": "truehits.net"
- },
- "trumba": {
- "name": "Trumba",
- "categoryId": 4,
- "url": "http://www.trumba.com",
- "companyId": "trumba"
- },
- "truoptik": {
- "name": "Tru Optik",
- "categoryId": 6,
- "url": "http://truoptik.com/",
- "companyId": null
- },
- "trustarc": {
- "name": "TrustArc",
- "categoryId": 5,
- "url": "http://www.trustarc.com/",
- "companyId": "trustarc"
- },
- "truste_consent": {
- "name": "Truste Consent",
- "categoryId": 5,
- "url": "http://www.trustarc.com/",
- "companyId": "trustarc"
- },
- "truste_notice": {
- "name": "TRUSTe Notice",
- "categoryId": 5,
- "url": "http://www.truste.com/",
- "companyId": "trustarc"
- },
- "truste_seal": {
- "name": "TRUSTe Seal",
- "categoryId": 5,
- "url": "http://www.truste.com/",
- "companyId": "trustarc"
- },
- "trusted_shops": {
- "name": "Trusted Shops",
- "categoryId": 5,
- "url": "http://www.trustedshops.com/",
- "companyId": "trusted_shops"
- },
- "trustev": {
- "name": "Trustev",
- "categoryId": 6,
- "url": "http://www.trustev.com/",
- "companyId": "trustev"
- },
- "trustlogo": {
- "name": "TrustLogo",
- "categoryId": 5,
- "url": "http://www.comodo.com/",
- "companyId": "comodo"
- },
- "trustpilot": {
- "name": "Trustpilot",
- "categoryId": 2,
- "url": "http://www.trustpilot.com",
- "companyId": "trustpilot"
- },
- "trustwave.com": {
- "name": "Trustwave",
- "categoryId": 8,
- "url": "https://www.trustwave.com/home/",
- "companyId": null
- },
- "tubecorporate": {
- "name": "Tube Corporate",
- "categoryId": 3,
- "url": "https://tubecorporate.com/",
- "companyId": null
- },
- "tubecup.org": {
- "name": "tubecup.org",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "tubemogul": {
- "name": "TubeMogul",
- "categoryId": 4,
- "url": "http://tubemogul.com/",
- "companyId": "tubemogul"
- },
- "tumblr_analytics": {
- "name": "Tumblr Analytics",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "tumblr_buttons": {
- "name": "Tumblr Buttons",
- "categoryId": 7,
- "url": "http://www.tumblr.com/",
- "companyId": "verizon"
- },
- "tumblr_dashboard": {
- "name": "Tumblr Dashboard",
- "categoryId": 7,
- "url": "http://www.tumblr.com/",
- "companyId": "verizon"
- },
- "tune_in": {
- "name": "Tune In",
- "categoryId": 0,
- "url": "http://tunein.com/",
- "companyId": "tunein"
- },
- "turbo": {
- "name": "Turbo",
- "categoryId": 4,
- "url": "http://www.turboadv.com/",
- "companyId": "turbo"
- },
- "turn_inc.": {
- "name": "Turn Inc.",
- "categoryId": 4,
- "url": "https://www.amobee.com/company/",
- "companyId": "singtel"
- },
- "turner": {
- "name": "Warner Media",
- "categoryId": 6,
- "url": "https://www.warnermedia.com/",
- "companyId": "turner"
- },
- "turnsocial": {
- "name": "TurnSocial",
- "categoryId": 7,
- "url": "http://turnsocial.com/",
- "companyId": "turnsocial"
- },
- "turnto": {
- "name": "TurnTo",
- "categoryId": 2,
- "url": "http://www.turntonetworks.com/",
- "companyId": "turnto_networks"
- },
- "tvsquared.com": {
- "name": "TVSquared",
- "categoryId": 4,
- "url": "http://tvsquared.com/",
- "companyId": "tvsquared"
- },
- "tweetboard": {
- "name": "Tweetboard",
- "categoryId": 7,
- "url": "http://tweetboard.com/alpha/",
- "companyId": "tweetboard"
- },
- "tweetmeme": {
- "name": "TweetMeme",
- "categoryId": 7,
- "url": "http://tweetmeme.com/",
- "companyId": "tweetmeme"
- },
- "twenga": {
- "name": "Twenga Solutions",
- "categoryId": 4,
- "url": "https://www.twenga-solutions.com/",
- "companyId": null
- },
- "twiago": {
- "name": "Twiago",
- "categoryId": 4,
- "url": "https://www.twiago.com/",
- "companyId": "twiago"
- },
- "twine": {
- "name": "Twine",
- "categoryId": 6,
- "url": "http://twinedigital.com/",
- "companyId": "twine_digital"
- },
- "twitch.tv": {
- "name": "Twitch",
- "categoryId": 0,
- "url": "https://www.twitch.tv/",
- "companyId": "amazon_associates"
- },
- "twitch_cdn": {
- "name": "Twitch CDN",
- "categoryId": 0,
- "url": "https://www.twitch.tv/",
- "companyId": "amazon_associates"
- },
- "twitter": {
- "name": "X (formerly Twitter)",
- "categoryId": 7,
- "url": "https://twitter.com",
- "companyId": "twitter",
- "source": "AdGuard"
- },
- "twitter_ads": {
- "name": "Twitter Advertising",
- "categoryId": 4,
- "url": "http://twitter.com/widgets",
- "companyId": "twitter"
- },
- "twitter_analytics": {
- "name": "Twitter Analytics",
- "categoryId": 6,
- "url": "https://twitter.com",
- "companyId": "twitter"
- },
- "twitter_badge": {
- "name": "Twitter Badge",
- "categoryId": 7,
- "url": "http://twitter.com/widgets",
- "companyId": "twitter"
- },
- "twitter_button": {
- "name": "Twitter Button",
- "categoryId": 7,
- "url": "http://twitter.com",
- "companyId": "twitter"
- },
- "twitter_conversion_tracking": {
- "name": "Twitter Conversion Tracking",
- "categoryId": 4,
- "url": "https://twitter.com/",
- "companyId": "twitter"
- },
- "twitter_for_business": {
- "name": "Twitter for Business",
- "categoryId": 4,
- "url": "https://business.twitter.com/",
- "companyId": "twitter"
- },
- "twitter_syndication": {
- "name": "Twitter Syndication",
- "categoryId": 7,
- "url": "https://twitter.com",
- "companyId": "twitter"
- },
- "twittercounter": {
- "name": "TwitterCounter",
- "categoryId": 6,
- "url": "http://twittercounter.com/",
- "companyId": "twitter_counter"
- },
- "twyn": {
- "name": "Twyn",
- "categoryId": 4,
- "url": "http://www.twyn.com",
- "companyId": "twyn"
- },
- "txxx.com": {
- "name": "txxx.com",
- "categoryId": 8,
- "url": "https://txxx.com",
- "companyId": null
- },
- "tynt": {
- "name": "33Across",
- "categoryId": 4,
- "url": "http://www.tynt.com/",
- "companyId": "33across"
- },
- "typeform": {
- "name": "Typeform",
- "categoryId": 2,
- "url": "https://www.typeform.com/",
- "companyId": null
- },
- "typepad_stats": {
- "name": "Typepad Stats",
- "categoryId": 6,
- "url": "http://www.typepad.com/features/statistics.ht",
- "companyId": "typepad"
- },
- "typography.com": {
- "name": "Webfonts by Hoefler&Co",
- "categoryId": 9,
- "url": "https://www.typography.com/",
- "companyId": null
- },
- "tyroo": {
- "name": "Tyroo",
- "categoryId": 7,
- "url": "http://www.tyroo.com/",
- "companyId": "tyroo"
- },
- "tzetze": {
- "name": "TzeTze",
- "categoryId": 2,
- "url": "http://www.tzetze.it/",
- "companyId": "tzetze"
- },
- "ubersetzung-app.com": {
- "name": "ubersetzung-app.com",
- "categoryId": 12,
- "url": "https://www.ubersetzung-app.com/",
- "companyId": null
- },
- "ubuntu": {
- "name": "Ubuntu",
- "categoryId": 8,
- "url": "https://ubuntu.com/",
- "companyId": "canonical",
- "source": "AdGuard"
- },
- "ucfunnel": {
- "name": "ucfunnel",
- "categoryId": 4,
- "url": "https://www.ucfunnel.com/",
- "companyId": "ucfunnel"
- },
- "ucoz": {
- "name": "uCoz",
- "categoryId": 6,
- "url": "http://www.ucoz.net/",
- "companyId": "ucoz"
- },
- "uliza": {
- "name": "Uliza",
- "categoryId": 4,
- "url": "http://uliza.jp/index.html",
- "companyId": "uliza"
- },
- "umbel": {
- "name": "Umbel",
- "categoryId": 6,
- "url": "http://umbel.com",
- "companyId": "umbel"
- },
- "umebiggestern.club": {
- "name": "umebiggestern.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "unanimis": {
- "name": "Unanimis",
- "categoryId": 4,
- "url": "http://www.unanimis.co.uk/",
- "companyId": "switch_concepts"
- },
- "unbounce": {
- "name": "Unbounce",
- "categoryId": 6,
- "url": "http://unbounce.com/",
- "companyId": "unbounce"
- },
- "unbxd": {
- "name": "UNBXD",
- "categoryId": 6,
- "url": "http://unbxd.com/",
- "companyId": "unbxd"
- },
- "under-box.com": {
- "name": "under-box.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "undercomputer.com": {
- "name": "undercomputer.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "underdog_media": {
- "name": "Underdog Media",
- "categoryId": 4,
- "url": "http://www.underdogmedia.com",
- "companyId": "underdog_media"
- },
- "undertone": {
- "name": "Undertone",
- "categoryId": 4,
- "url": "https://www.undertone.com/",
- "companyId": "perion"
- },
- "unica": {
- "name": "Unica",
- "categoryId": 2,
- "url": "http://www.unica.com/",
- "companyId": "ibm"
- },
- "unister": {
- "name": "Unister",
- "categoryId": 6,
- "url": "http://www.unister.de/",
- "companyId": "unister"
- },
- "unite": {
- "name": "Unite",
- "categoryId": 4,
- "url": "http://unite.me/#",
- "companyId": "unite"
- },
- "united_digital_group": {
- "name": "United Digital Group",
- "categoryId": 4,
- "url": "https://www.udg.de/",
- "companyId": "united_digital_group"
- },
- "united_internet_media_gmbh": {
- "name": "United Internet Media GmbH",
- "categoryId": 4,
- "url": "https://www.united-internet.de/",
- "companyId": "united_internet"
- },
- "unity": {
- "name": "Unity",
- "categoryId": 8,
- "url": "https://unity.com/",
- "companyId": "unity",
- "source": "AdGuard"
- },
- "unity_ads": {
- "name": "Unity Ads",
- "categoryId": 4,
- "url": "https://unity.com/products/unity-ads",
- "companyId": "unity",
- "source": "AdGuard"
- },
- "univide": {
- "name": "Univide",
- "categoryId": 4,
- "url": "http://www.oracle.com/",
- "companyId": "oracle"
- },
- "unpkg.com": {
- "name": "unpkg",
- "categoryId": 9,
- "url": "https://unpkg.com/#/",
- "companyId": null
- },
- "unruly_media": {
- "name": "Unruly Media",
- "categoryId": 4,
- "url": "http://www.unrulymedia.com/",
- "companyId": "unruly"
- },
- "untriel_finger_printing": {
- "name": "Untriel Finger Printing",
- "categoryId": 6,
- "url": "https://www.untriel.nl/",
- "companyId": "untriel"
- },
- "upland_clickability_beacon": {
- "name": "Upland Clickability Beacon",
- "categoryId": 4,
- "url": "http://www.clickability.com/",
- "companyId": "upland_software"
- },
- "uppr.de": {
- "name": "uppr GmbH",
- "categoryId": 4,
- "url": "https://uppr.de/",
- "companyId": null
- },
- "upravel.com": {
- "name": "upravel.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "upsellit": {
- "name": "UpSellit",
- "categoryId": 2,
- "url": "http://www.upsellit.com",
- "companyId": "upsellit"
- },
- "upsight": {
- "name": "Upsight",
- "categoryId": 6,
- "url": "http://www.upsight.com/",
- "companyId": "upsight"
- },
- "uptain": {
- "name": "Uptain",
- "categoryId": 6,
- "url": "http://www.uptain.de/en/regaining-lost-customers/",
- "companyId": "uptain"
- },
- "uptolike.com": {
- "name": "Uptolike",
- "categoryId": 7,
- "url": "https://www.uptolike.com/",
- "companyId": "uptolike"
- },
- "uptrends": {
- "name": "Uptrends",
- "categoryId": 6,
- "url": "http://www.uptrends.com/",
- "companyId": "uptrends"
- },
- "urban-media.com": {
- "name": "Urban Media GmbH",
- "categoryId": 4,
- "url": "https://www.urban-media.com/",
- "companyId": null
- },
- "urban_airship": {
- "name": "Urban Airship",
- "categoryId": 6,
- "url": "https://www.urbanairship.com/",
- "companyId": "urban_airship"
- },
- "usability_tools": {
- "name": "Usability Tools",
- "categoryId": 6,
- "url": "http://usabilitytools.com/",
- "companyId": "usability_tools"
- },
- "usabilla": {
- "name": "Usabilla",
- "categoryId": 2,
- "url": "https://usabilla.com/",
- "companyId": "usabilla"
- },
- "usemax": {
- "name": "Usemax",
- "categoryId": 4,
- "url": "http://www.usemax.de",
- "companyId": "usemax"
- },
- "usemessages.com": {
- "name": "usemessages.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "usercycle": {
- "name": "USERcycle",
- "categoryId": 6,
- "url": "http://usercycle.com/",
- "companyId": "usercycle"
- },
- "userdive": {
- "name": "USERDIVE",
- "categoryId": 6,
- "url": "http://userdive.com/",
- "companyId": "userdive"
- },
- "userecho": {
- "name": "UserEcho",
- "categoryId": 2,
- "url": "http://userecho.com",
- "companyId": "userecho"
- },
- "userlike.com": {
- "name": "Userlike",
- "categoryId": 2,
- "url": "https://www.userlike.com/",
- "companyId": "userlike"
- },
- "userpulse": {
- "name": "UserPulse",
- "categoryId": 2,
- "url": "http://www.userpulse.com/",
- "companyId": "userpulse"
- },
- "userreplay": {
- "name": "UserReplay",
- "categoryId": 6,
- "url": "https://www.userreplay.com/",
- "companyId": "userreplay"
- },
- "userreport": {
- "name": "UserReport",
- "categoryId": 2,
- "url": "http://www.userreport.com/",
- "companyId": "userreport"
- },
- "userrules": {
- "name": "UserRules",
- "categoryId": 2,
- "url": "http://www.userrules.com/",
- "companyId": "userrules_software"
- },
- "usersnap": {
- "name": "Usersnap",
- "categoryId": 2,
- "url": "http://usersnap.com/",
- "companyId": "usersnap"
- },
- "uservoice": {
- "name": "UserVoice",
- "categoryId": 2,
- "url": "http://uservoice.com/",
- "companyId": "uservoice"
- },
- "userzoom.com": {
- "name": "UserZoom",
- "categoryId": 2,
- "url": "https://www.userzoom.com/",
- "companyId": "userzoom"
- },
- "usocial": {
- "name": "Usocial",
- "categoryId": 7,
- "url": "https://usocial.pro/en",
- "companyId": "usocial"
- },
- "utarget": {
- "name": "uTarget",
- "categoryId": 4,
- "url": "http://utarget.ru/",
- "companyId": "utarget"
- },
- "uuidksinc.net": {
- "name": "uuidksinc.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "v12_group": {
- "name": "V12 Group",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "vacaneedasap.com": {
- "name": "vacaneedasap.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "valassis": {
- "name": "Valassis",
- "categoryId": 4,
- "url": "http://www.brand.net/",
- "companyId": "valassis"
- },
- "validclick": {
- "name": "ValidClick",
- "categoryId": 4,
- "url": "http://inuvo.com/",
- "companyId": "inuvo"
- },
- "valiton": {
- "name": "Valiton",
- "categoryId": 4,
- "url": "https://www.valiton.com/",
- "companyId": "hubert_burda_media"
- },
- "valueclick_media": {
- "name": "ValueClick Media",
- "categoryId": 4,
- "url": "https://www.conversantmedia.eu/",
- "companyId": "conversant"
- },
- "valuecommerce": {
- "name": "ValueCommerce",
- "categoryId": 4,
- "url": "https://www.valuecommerce.ne.jp",
- "companyId": "valuecommerce"
- },
- "valued_opinions": {
- "name": "Valued Opinions",
- "categoryId": 4,
- "url": "http://valuedopinions.com",
- "companyId": "valued_opinions"
- },
- "vanksen": {
- "name": "Vanksen",
- "categoryId": 4,
- "url": "http://www.buzzparadise.com/",
- "companyId": "vanksen"
- },
- "varick_media_management": {
- "name": "Varick Media Management",
- "categoryId": 4,
- "url": "http://www.varickmm.com/",
- "companyId": "varick_media_management"
- },
- "vcita": {
- "name": "Vcita",
- "categoryId": 6,
- "url": "https://www.vcita.com/",
- "companyId": "vcita"
- },
- "vcommission": {
- "name": "vCommission",
- "categoryId": 4,
- "url": "http://www.vcommission.com/",
- "companyId": "vcommission"
- },
- "vdopia": {
- "name": "Vdopia",
- "categoryId": 4,
- "url": "http://mobile.vdopia.com/",
- "companyId": "vdopia"
- },
- "ve_interactive": {
- "name": "Ve Interactive",
- "categoryId": 4,
- "url": "https://www.veinteractive.com",
- "companyId": "ve_interactive"
- },
- "vee24": {
- "name": "VEE24",
- "categoryId": 0,
- "url": "https://www.vee24.com/",
- "companyId": "vee24"
- },
- "velocecdn.com": {
- "name": "velocecdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "velti_mgage_visualize": {
- "name": "Velti mGage Visualize",
- "categoryId": 4,
- "url": "http://www.velti.com/",
- "companyId": "velti"
- },
- "vendemore": {
- "name": "Vendemore",
- "categoryId": 1,
- "url": "https://vendemore.com/",
- "companyId": "ratos"
- },
- "venturead.com": {
- "name": "venturead.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "venyoo": {
- "name": "Venyoo",
- "categoryId": 2,
- "url": "http://venyoo.ru/",
- "companyId": "venyoo"
- },
- "veoxa": {
- "name": "Veoxa",
- "categoryId": 4,
- "url": "http://www.veoxa.com/",
- "companyId": "veoxa"
- },
- "vergic.com": {
- "name": "Vergic",
- "categoryId": 1,
- "url": "https://www.vergic.com/",
- "companyId": null
- },
- "vero": {
- "name": "Vero",
- "categoryId": 4,
- "url": "http://www.getvero.com/",
- "companyId": "vero"
- },
- "vertical_acuity": {
- "name": "Vertical Acuity",
- "categoryId": 4,
- "url": "http://www.verticalacuity.com/",
- "companyId": "outbrain"
- },
- "vertical_leap": {
- "name": "Vertical Leap",
- "categoryId": 4,
- "url": "http://www.vertical-leap.co.uk/",
- "companyId": "vertical_leap"
- },
- "verticalresponse": {
- "name": "VerticalResponse",
- "categoryId": 4,
- "url": "http://www.verticalresponse.com",
- "companyId": "verticalresponse"
- },
- "verticalscope": {
- "name": "VerticalScope",
- "categoryId": 4,
- "url": "http://www.verticalscope.com",
- "companyId": "verticalscope"
- },
- "vertoz": {
- "name": "Vertoz",
- "categoryId": 4,
- "url": "http://www.vertoz.com/",
- "companyId": "vertoz"
- },
- "veruta": {
- "name": "Veruta",
- "categoryId": 4,
- "url": "http://www.veruta.com/",
- "companyId": "veruta"
- },
- "verve_mobile": {
- "name": "Verve Mobile",
- "categoryId": 4,
- "url": "http://www.vervemobile.com/",
- "companyId": "verve_mobile"
- },
- "vg_wort": {
- "name": "VG Wort",
- "categoryId": 6,
- "url": "https://tom.vgwort.de/portal/showHelp",
- "companyId": "vg_wort"
- },
- "vi": {
- "name": "Vi",
- "categoryId": 4,
- "url": "http://www.vi.ru/",
- "companyId": "vi"
- },
- "viacom_tag_container": {
- "name": "Viacom Tag Container",
- "categoryId": 4,
- "url": "http://www.viacom.com/",
- "companyId": "viacom"
- },
- "viafoura": {
- "name": "Viafoura",
- "categoryId": 4,
- "url": "http://www.viafoura.com/",
- "companyId": "viafoura"
- },
- "vibrant_ads": {
- "name": "Vibrant Ads",
- "categoryId": 4,
- "url": "http://www.vibrantmedia.com/",
- "companyId": "vibrant_media"
- },
- "vicomi.com": {
- "name": "Vicomi",
- "categoryId": 6,
- "url": "http://www.vicomi.com/",
- "companyId": "vicomi"
- },
- "vidazoo.com": {
- "name": "Vidazoo",
- "categoryId": 4,
- "url": "https://www.vidazoo.com/",
- "companyId": null
- },
- "video_desk": {
- "name": "Video Desk",
- "categoryId": 0,
- "url": "https://www.videodesk.com/",
- "companyId": "video_desk"
- },
- "video_potok": {
- "name": "Video Potok",
- "categoryId": 0,
- "url": "http://videopotok.pro/",
- "companyId": "videopotok"
- },
- "videoadex.com": {
- "name": "VideoAdX",
- "categoryId": 4,
- "url": "https://www.videoadex.com/",
- "companyId": "digiteka"
- },
- "videology": {
- "name": "Videology",
- "categoryId": 4,
- "url": "https://videologygroup.com/",
- "companyId": "singtel"
- },
- "videonow": {
- "name": "VideoNow",
- "categoryId": 4,
- "url": "https://videonow.ru/",
- "companyId": "videonow"
- },
- "videoplayerhub.com": {
- "name": "videoplayerhub.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "videoplaza": {
- "name": "Videoplaza",
- "categoryId": 4,
- "url": "http://www.videoplaza.com/",
- "companyId": "videoplaza"
- },
- "videostep": {
- "name": "VideoStep",
- "categoryId": 4,
- "url": "https://www.videostep.com/",
- "companyId": "videostep"
- },
- "vidgyor": {
- "name": "Vidgyor",
- "categoryId": 0,
- "url": "http://vidgyor.com/",
- "companyId": "vidgyor"
- },
- "vidible": {
- "name": "Vidible",
- "categoryId": 4,
- "url": "http://vidible.tv/",
- "companyId": "verizon"
- },
- "vidora": {
- "name": "Vidora",
- "categoryId": 0,
- "url": "https://www.vidora.com/",
- "companyId": "vidora"
- },
- "vietad": {
- "name": "VietAd",
- "categoryId": 4,
- "url": "http://vietad.vn/",
- "companyId": "vietad"
- },
- "viglink": {
- "name": "VigLink",
- "categoryId": 4,
- "url": "http://www.viglink.com",
- "companyId": "viglink"
- },
- "vigo": {
- "name": "Vigo",
- "categoryId": 6,
- "url": "https://vigo.one/",
- "companyId": "vigo"
- },
- "vimeo": {
- "name": "Vimeo",
- "categoryId": 0,
- "url": "http://vimeo.com/",
- "companyId": "vimeo"
- },
- "vindico_group": {
- "name": "Vindico Group",
- "categoryId": 4,
- "url": "http://www.vindicogroup.com/",
- "companyId": "vindico_group"
- },
- "vinted": {
- "name": "Vinted",
- "categoryId": 8,
- "url": "https://www.vinted.com/",
- "companyId": null
- },
- "viral_ad_network": {
- "name": "Viral Ad Network",
- "categoryId": 4,
- "url": "http://viraladnetwork.joinvan.com/",
- "companyId": "viral_ad_network"
- },
- "viral_loops": {
- "name": "Viral Loops",
- "categoryId": 2,
- "url": "https://viral-loops.com/",
- "companyId": "viral-loops"
- },
- "viralgains": {
- "name": "ViralGains",
- "categoryId": 4,
- "url": "https://www.viralgains.com/",
- "companyId": null
- },
- "viralmint": {
- "name": "ViralMint",
- "categoryId": 7,
- "url": "http://www.viralmint.com",
- "companyId": "viralmint"
- },
- "virgul": {
- "name": "Virgul",
- "categoryId": 4,
- "url": "http://www.virgul.com/",
- "companyId": "virgul"
- },
- "virool_player": {
- "name": "Virool Player",
- "categoryId": 4,
- "url": "https://www.virool.com/",
- "companyId": "virool"
- },
- "virtusize": {
- "name": "Virtusize",
- "categoryId": 5,
- "url": "http://www.virtusize.com/",
- "companyId": "virtusize"
- },
- "visible_measures": {
- "name": "Visible Measures",
- "categoryId": 4,
- "url": "http://www.visiblemeasures.com/",
- "companyId": "visible_measures"
- },
- "vision_critical": {
- "name": "Vision Critical",
- "categoryId": 6,
- "url": "http://visioncritical.com/",
- "companyId": "vision_critical"
- },
- "visit_streamer": {
- "name": "Visit Streamer",
- "categoryId": 6,
- "url": "http://www.visitstreamer.com/",
- "companyId": "visit_streamer"
- },
- "visitortrack": {
- "name": "VisitorTrack",
- "categoryId": 4,
- "url": "http://www.netfactor.com/",
- "companyId": "netfactor"
- },
- "visitorville": {
- "name": "VisitorVille",
- "categoryId": 6,
- "url": "http://www.visitorville.com",
- "companyId": "visitorville"
- },
- "visscore": {
- "name": "VisScore",
- "categoryId": 4,
- "url": "http://withcubed.com/",
- "companyId": "cubed_attribution"
- },
- "visual_iq": {
- "name": "Visual IQ",
- "categoryId": 6,
- "url": "http://visualiq.com/",
- "companyId": "visualiq"
- },
- "visual_revenue": {
- "name": "Visual Revenue",
- "categoryId": 6,
- "url": "http://visualrevenue.com/",
- "companyId": "outbrain"
- },
- "visual_website_optimizer": {
- "name": "VWO",
- "categoryId": 6,
- "url": "https://vwo.com/",
- "companyId": "wingify"
- },
- "visualdna": {
- "name": "VisualDNA",
- "categoryId": 4,
- "url": "http://www.visualdna.com/",
- "companyId": "nielsen"
- },
- "visualstudio.com": {
- "name": "Visualstudio.com",
- "categoryId": 8,
- "url": "https://www.visualstudio.com/",
- "companyId": "microsoft"
- },
- "visualvisitor": {
- "name": "VisualVisitor",
- "categoryId": 6,
- "url": "http://www.visualvisitor.com/",
- "companyId": "visualvisitor"
- },
- "vivalu": {
- "name": "VIVALU",
- "categoryId": 4,
- "url": "https://www.vivalu.com/",
- "companyId": "vivalu"
- },
- "vivistats": {
- "name": "ViviStats",
- "categoryId": 6,
- "url": "http://en.vivistats.com/",
- "companyId": "vivistats"
- },
- "vizury": {
- "name": "Vizury",
- "categoryId": 4,
- "url": "http://www.vizury.com/website/",
- "companyId": "vizury"
- },
- "vizzit": {
- "name": "Vizzit",
- "categoryId": 4,
- "url": "http://www.vizzit.se/h/en/",
- "companyId": "vizzit"
- },
- "vk.com": {
- "name": "Vk.com",
- "categoryId": 7,
- "url": "https://vk.com/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "vkontakte": {
- "name": "VKontakte",
- "categoryId": 7,
- "url": "https://vk.com/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "vkontakte_widgets": {
- "name": "VKontakte Widgets",
- "categoryId": 7,
- "url": "https://dev.vk.com/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "vntsm.com": {
- "name": "Venatus Media",
- "categoryId": 4,
- "url": "https://www.venatusmedia.com/",
- "companyId": "venatus"
- },
- "vodafone.de": {
- "name": "vodafone.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "voicefive": {
- "name": "VoiceFive",
- "categoryId": 6,
- "url": "https://www.voicefive.com",
- "companyId": "comscore"
- },
- "volusion_chat": {
- "name": "Volusion Chat",
- "categoryId": 2,
- "url": "https://www.volusion.com/",
- "companyId": "volusion"
- },
- "voluum": {
- "name": "Voluum",
- "categoryId": 4,
- "url": "https://voluum.com/",
- "companyId": "codewise"
- },
- "vooxe.com": {
- "name": "vooxe.com",
- "categoryId": 8,
- "url": "http://www.vooxe.com/",
- "companyId": null
- },
- "vorwerk.de": {
- "name": "vorwerk.de",
- "categoryId": 8,
- "url": "https://corporate.vorwerk.de/home/",
- "companyId": null
- },
- "vox": {
- "name": "Vox",
- "categoryId": 2,
- "url": "https://www.voxmedia.com/",
- "companyId": "vox"
- },
- "voxus": {
- "name": "Voxus",
- "categoryId": 4,
- "url": "http://www.voxus.tv/",
- "companyId": "voxus"
- },
- "vpon": {
- "name": "VPON",
- "categoryId": 4,
- "url": "http://www.vpon.com/en/",
- "companyId": "vpon"
- },
- "vpscash": {
- "name": "VPSCash",
- "categoryId": 4,
- "url": "http://vpscash.nl/home",
- "companyId": "vps_cash"
- },
- "vs": {
- "name": "Visual Studio",
- "categoryId": 8,
- "url": "https://visualstudio.microsoft.com",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "vscode": {
- "name": "Visual Studio Code",
- "categoryId": 8,
- "url": "https://code.visualstudio.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "vtracy.de": {
- "name": "vtracy.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "vungle": {
- "name": "Vungle",
- "categoryId": 4,
- "url": "https://vungle.com/",
- "companyId": "blackstone",
- "source": "AdGuard"
- },
- "vuukle": {
- "name": "Vuukle",
- "categoryId": 6,
- "url": "http://vuukle.com/",
- "companyId": "vuukle"
- },
- "vzaar": {
- "name": "Vzaar",
- "categoryId": 0,
- "url": "http://vzaar.com/",
- "companyId": "vzaar"
- },
- "w3counter": {
- "name": "W3Counter",
- "categoryId": 6,
- "url": "http://www.w3counter.com/",
- "companyId": "awio_web_services"
- },
- "w3roi": {
- "name": "w3roi",
- "categoryId": 6,
- "url": "http://www.w3roi.com/",
- "companyId": "w3roi"
- },
- "wahoha": {
- "name": "Wahoha",
- "categoryId": 2,
- "url": "http://wahoha.com/",
- "companyId": "wahoha"
- },
- "walkme.com": {
- "name": "WalkMe",
- "categoryId": 2,
- "url": "https://www.walkme.com/",
- "companyId": "walkme"
- },
- "wall_street_on_demand": {
- "name": "Wall Street on Demand",
- "categoryId": 4,
- "url": "http://www.wallst.com",
- "companyId": "markit_on_demand"
- },
- "walmart": {
- "name": "Walmart",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "wamcash": {
- "name": "Wamcash",
- "categoryId": 3,
- "url": "http://wamcash.com/",
- "companyId": "wamcash"
- },
- "wanelo": {
- "name": "Wanelo",
- "categoryId": 2,
- "url": "https://wanelo.com/",
- "companyId": "wanelo"
- },
- "warp.ly": {
- "name": "Warp.ly",
- "categoryId": 6,
- "url": "https://warp.ly/",
- "companyId": "warp.ly"
- },
- "way2traffic": {
- "name": "Way2traffic",
- "categoryId": 4,
- "url": "http://www.way2traffic.com/",
- "companyId": "way2traffic"
- },
- "wayfair_com": {
- "name": "Wayfair",
- "categoryId": 8,
- "url": "https://www.wayfair.com/",
- "companyId": null
- },
- "wdr.de": {
- "name": "wdr.de",
- "categoryId": 8,
- "url": "https://www1.wdr.de/index.html",
- "companyId": null
- },
- "web-stat": {
- "name": "Web-Stat",
- "categoryId": 6,
- "url": "http://www.web-stat.net/",
- "companyId": "web-stat"
- },
- "web.de": {
- "name": "web.de",
- "categoryId": 8,
- "url": "https://web.de/",
- "companyId": null
- },
- "web.stat": {
- "name": "Web.STAT",
- "categoryId": 6,
- "url": "http://webstat.net/",
- "companyId": "web.stat"
- },
- "web_service_award": {
- "name": "Web Service Award",
- "categoryId": 6,
- "url": "http://webserviceaward.com/english/",
- "companyId": "web_service_award"
- },
- "web_traxs": {
- "name": "Web Traxs",
- "categoryId": 6,
- "url": "http://websolutions.thomasnet.com/web-traxs-analytics.php",
- "companyId": "thomasnet_websolutions"
- },
- "web_wipe_analytics": {
- "name": "Web Wipe Analytics",
- "categoryId": 6,
- "url": "http://tensquare.de",
- "companyId": "tensquare"
- },
- "webads": {
- "name": "WebAds",
- "categoryId": 4,
- "url": "http://www.webads.co.uk/",
- "companyId": "webads"
- },
- "webantenna": {
- "name": "WebAntenna",
- "categoryId": 6,
- "url": "http://www.bebit.co.jp/webantenna/",
- "companyId": "webantenna"
- },
- "webclicks24_com": {
- "name": "webclicks24.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "webclose.net": {
- "name": "webclose.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "webcollage": {
- "name": "Webcollage",
- "categoryId": 2,
- "url": "http://www.webcollage.com/",
- "companyId": "webcollage"
- },
- "webedia": {
- "name": "Webedia",
- "categoryId": 4,
- "url": "http://fr.webedia-group.com/",
- "companyId": "fimalac_group"
- },
- "webeffective": {
- "name": "WebEffective",
- "categoryId": 6,
- "url": "http://www.keynote.com/",
- "companyId": "keynote_systems"
- },
- "webengage": {
- "name": "WebEngage",
- "categoryId": 2,
- "url": "http://webengage.com/",
- "companyId": "webengage"
- },
- "webgains": {
- "name": "Webgains",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "webgozar": {
- "name": "WebGozar",
- "categoryId": 6,
- "url": "http://webgozar.com/",
- "companyId": "webgozar"
- },
- "webhelpje": {
- "name": "Webhelpje",
- "categoryId": 2,
- "url": "http://www.webhelpje.nl/",
- "companyId": "webhelpje"
- },
- "webleads_tracker": {
- "name": "Webleads Tracker",
- "categoryId": 6,
- "url": "http://www.webleads-tracker.fr/",
- "companyId": "webleads_tracker"
- },
- "webmecanik": {
- "name": "Webmecanik",
- "categoryId": 6,
- "url": "http://www.webmecanik.com/en/",
- "companyId": "webmecanik"
- },
- "weborama": {
- "name": "Weborama",
- "categoryId": 4,
- "url": "https://weborama.com/",
- "companyId": "weborama"
- },
- "webprospector": {
- "name": "WebProspector",
- "categoryId": 6,
- "url": "http://www.webprospector.de/",
- "companyId": "webprospector"
- },
- "webstat": {
- "name": "WebSTAT",
- "categoryId": 6,
- "url": "http://www.webstat.com/",
- "companyId": "webstat"
- },
- "webstat.se": {
- "name": "Webstat.se",
- "categoryId": 6,
- "url": "http://www.webstat.se/",
- "companyId": "webstat.se"
- },
- "webtrack": {
- "name": "webtrack",
- "categoryId": 6,
- "url": "http://www.webtrack.biz/",
- "companyId": "webtrack"
- },
- "webtraffic": {
- "name": "Webtraffic",
- "categoryId": 6,
- "url": "http://www.webtraffic.se/",
- "companyId": "schibsted_asa"
- },
- "webtrekk": {
- "name": "Webtrekk",
- "categoryId": 6,
- "url": "http://www.webtrekk.com/",
- "companyId": "webtrekk"
- },
- "webtrekk_cc": {
- "name": "Webtrek Control Cookie",
- "categoryId": 6,
- "url": "https://www.webtrekk.com/en/home/",
- "companyId": "webtrekk"
- },
- "webtrends": {
- "name": "Webtrends",
- "categoryId": 6,
- "url": "http://www.webtrends.com/",
- "companyId": "webtrends"
- },
- "webtrends_ads": {
- "name": "Webtrends Ads",
- "categoryId": 4,
- "url": "http://www.webtrends.com",
- "companyId": "webtrends"
- },
- "webvisor": {
- "name": "WebVisor",
- "categoryId": 6,
- "url": "http://webvisor.ru",
- "companyId": "yandex"
- },
- "wedcs": {
- "name": "WEDCS",
- "categoryId": 4,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "weebly_ads": {
- "name": "Weebly Ads",
- "categoryId": 4,
- "url": "http://www.weebly.com",
- "companyId": "weebly"
- },
- "weibo_widget": {
- "name": "Weibo Widget",
- "categoryId": 4,
- "url": "http://www.sina.com/",
- "companyId": "sina"
- },
- "westlotto_com": {
- "name": "westlotto.com",
- "categoryId": 8,
- "url": "http://westlotto.com/",
- "companyId": null
- },
- "wetter_com": {
- "name": "Wetter.com",
- "categoryId": 8,
- "url": "http://www.wetter.com/",
- "companyId": null
- },
- "whatbroadcast": {
- "name": "Whatbroadcast",
- "categoryId": 2,
- "url": "https://www.whatsbroadcast.com/",
- "companyId": "whatsbroadcast"
- },
- "whatsapp": {
- "name": "WhatsApp",
- "categoryId": 8,
- "url": "https://www.whatsapp.com/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "whisper": {
- "name": "Whisper",
- "categoryId": 7,
- "url": "https://whisper.sh/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "whos.amung.us": {
- "name": "Whos.amung.us",
- "categoryId": 6,
- "url": "http://whos.amung.us/",
- "companyId": "whos.amung.us"
- },
- "whoson": {
- "name": "WhosOn",
- "categoryId": 6,
- "url": "http://www.whoson.com/",
- "companyId": "whoson"
- },
- "wibbitz": {
- "name": "Wibbitz",
- "categoryId": 0,
- "url": "http://www.wibbitz.com/",
- "companyId": "wibbitz"
- },
- "wibiya_toolbar": {
- "name": "Wibiya Toolbar",
- "categoryId": 7,
- "url": "http://www.wibiya.com/",
- "companyId": "wibiya"
- },
- "widdit": {
- "name": "Widdit",
- "categoryId": 2,
- "url": "http://www.predictad.com/",
- "companyId": "widdit"
- },
- "widerplanet": {
- "name": "WiderPlanet",
- "categoryId": 4,
- "url": "http://widerplanet.com/",
- "companyId": "wider_planet"
- },
- "widespace": {
- "name": "Widespace",
- "categoryId": 4,
- "url": "https://www.widespace.com/",
- "companyId": "widespace"
- },
- "widgetbox": {
- "name": "WidgetBox",
- "categoryId": 2,
- "url": "http://www.widgetbox.com/",
- "companyId": "widgetbox"
- },
- "wiget_media": {
- "name": "Wiget Media",
- "categoryId": 4,
- "url": "http://wigetmedia.com",
- "companyId": "wiget_media"
- },
- "wigzo": {
- "name": "Wigzo",
- "categoryId": 4,
- "url": "https://www.wigzo.com/",
- "companyId": "wigzo"
- },
- "wikia-services.com": {
- "name": "Wikia Services",
- "categoryId": 8,
- "url": "http://www.wikia.com/fandom",
- "companyId": "wikia"
- },
- "wikia_beacon": {
- "name": "Wikia Beacon",
- "categoryId": 6,
- "url": "http://www.wikia.com/",
- "companyId": "wikia"
- },
- "wikia_cdn": {
- "name": "Wikia CDN",
- "categoryId": 9,
- "url": "http://www.wikia.com/fandom",
- "companyId": "wikia"
- },
- "wikimedia.org": {
- "name": "WikiMedia",
- "categoryId": 9,
- "url": "https://wikimediafoundation.org/",
- "companyId": "wikimedia_foundation"
- },
- "winaffiliates": {
- "name": "Winaffiliates",
- "categoryId": 6,
- "url": "http://www.winaffiliates.com/",
- "companyId": "winaffiliates"
- },
- "windows_maps": {
- "name": "Windows Maps",
- "categoryId": 8,
- "url": "https://www.microsoft.com/store/apps/9wzdncrdtbvb",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "windows_notifications": {
- "name": "The Windows Push Notification Services",
- "categoryId": 8,
- "url": "https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "windows_time": {
- "name": "Windows Time Service",
- "categoryId": 8,
- "url": "https://learn.microsoft.com/en-us/windows-server/networking/windows-time-service/how-the-windows-time-service-works",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "windowsupdate": {
- "name": "Windows Update",
- "categoryId": 9,
- "url": "https://support.microsoft.com/en-us/windows/windows-update-faq-8a903416-6f45-0718-f5c7-375e92dddeb2",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "wipmania": {
- "name": "WIPmania",
- "categoryId": 6,
- "url": "http://www.wipmania.com/",
- "companyId": "wipmania"
- },
- "wiqhit": {
- "name": "WiQhit",
- "categoryId": 6,
- "url": "https://wiqhit.com/nl/",
- "companyId": "wiqhit"
- },
- "wirecard": {
- "name": "Wirecard",
- "categoryId": 2,
- "url": "https://www.wirecard.com/",
- "companyId": null
- },
- "wiredminds": {
- "name": "WiredMinds",
- "categoryId": 6,
- "url": "http://www.wiredminds.de/",
- "companyId": "wiredminds"
- },
- "wirtualna_polska": {
- "name": "Wirtualna Polska",
- "categoryId": 4,
- "url": "http://reklama.wp.pl/",
- "companyId": "wirtualna_polska"
- },
- "wisepops": {
- "name": "WisePops",
- "categoryId": 4,
- "url": "http://wisepops.com/",
- "companyId": "wisepops"
- },
- "wishpond": {
- "name": "Wishpond",
- "categoryId": 2,
- "url": "http://wishpond.com",
- "companyId": "wishpond"
- },
- "wistia": {
- "name": "Wistia",
- "categoryId": 6,
- "url": "http://wistia.com/",
- "companyId": "wistia"
- },
- "wix.com": {
- "name": "Wix",
- "categoryId": 8,
- "url": "https://www.wix.com/",
- "companyId": "wix"
- },
- "wixab": {
- "name": "Wixab",
- "categoryId": 6,
- "url": "http://wixab.com/en/",
- "companyId": "wixab"
- },
- "wixmp": {
- "name": "Wix Media Platform",
- "categoryId": 9,
- "url": "https://www.wixmp.com/",
- "companyId": "wix"
- },
- "wnzmauurgol.com": {
- "name": "wnzmauurgol.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "wonderpush": {
- "name": "WonderPush",
- "categoryId": 2,
- "url": "https://www.wonderpush.com/",
- "companyId": "wonderpush"
- },
- "woopic.com": {
- "name": "woopic.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "woopra": {
- "name": "Woopra",
- "categoryId": 6,
- "url": "http://www.woopra.com/",
- "companyId": "woopra"
- },
- "wordpress_ads": {
- "name": "Wordpress Ads",
- "categoryId": 4,
- "url": "https://wordpress.com/",
- "companyId": "automattic"
- },
- "wordpress_stats": {
- "name": "WordPress Stats",
- "categoryId": 6,
- "url": "http://wordpress.org/extend/plugins/stats/",
- "companyId": "automattic"
- },
- "wordstream": {
- "name": "WordStream",
- "categoryId": 6,
- "url": "http://www.wordstream.com/",
- "companyId": "wordstream"
- },
- "worldnaturenet_xyz": {
- "name": "worldnaturenet.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "wp.pl": {
- "name": "Wirtualna Polska ",
- "categoryId": 4,
- "url": "https://www.wp.pl/",
- "companyId": "wp"
- },
- "wp_engine": {
- "name": "WP Engine",
- "categoryId": 5,
- "url": "https://wpengine.com/",
- "companyId": "wp_engine"
- },
- "writeup_clickanalyzer": {
- "name": "WriteUp ClickAnalyzer",
- "categoryId": 6,
- "url": "http://www.writeup.co.jp/",
- "companyId": "writeup"
- },
- "wurfl": {
- "name": "WURFL",
- "categoryId": 6,
- "url": "https://web.wurfl.io/",
- "companyId": "scientiamobile"
- },
- "wwwpromoter": {
- "name": "WWWPromoter",
- "categoryId": 4,
- "url": "http://wwwpromoter.com/",
- "companyId": "wwwpromoter"
- },
- "wykop": {
- "name": "Wykop",
- "categoryId": 7,
- "url": "http://www.wykop.pl",
- "companyId": "wykop"
- },
- "wysistat.com": {
- "name": "WysiStat",
- "categoryId": 6,
- "url": "https://www.wysistat.net/",
- "companyId": "wysistat"
- },
- "wywy.com": {
- "name": "wywy",
- "categoryId": 4,
- "url": "http://wywy.com/",
- "companyId": "tvsquared"
- },
- "x-lift": {
- "name": "X-lift",
- "categoryId": 4,
- "url": "https://www.x-lift.jp/",
- "companyId": "x-lift"
- },
- "xapads": {
- "name": "Xapads",
- "categoryId": 4,
- "url": "http://www.xapads.com/",
- "companyId": "xapads"
- },
- "xen-media.com": {
- "name": "Xen Media",
- "categoryId": 11,
- "url": "https://www.xenmedia.net/",
- "companyId": "xenmedia",
- "source": "AdGuard"
- },
- "xfreeservice.com": {
- "name": "xfreeservice.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "xhamster": {
- "name": "xHamster",
- "categoryId": 3,
- "url": "https://xhamster.com/",
- "companyId": "xhamster",
- "source": "AdGuard"
- },
- "xiaomi": {
- "name": "Xiaomi",
- "categoryId": 8,
- "url": "https://www.mi.com/",
- "companyId": "xiaomi",
- "source": "AdGuard"
- },
- "xing": {
- "name": "Xing",
- "categoryId": 6,
- "url": "http://www.xing.com/",
- "companyId": "xing"
- },
- "xmediaclicks": {
- "name": "XmediaClicks",
- "categoryId": 3,
- "url": "http://exoclick.com/",
- "companyId": "exoclick"
- },
- "xnxx_cdn": {
- "name": "XNXX",
- "categoryId": 9,
- "url": "https://www.xnxx.com",
- "companyId": "xnxx",
- "source": "AdGuard"
- },
- "xplosion": {
- "name": "xplosion",
- "categoryId": 4,
- "url": "http://www.xplosion.de/",
- "companyId": "xplosion_interactive"
- },
- "xtend": {
- "name": "XTEND",
- "categoryId": 4,
- "url": "http://www.xtendmedia.com/",
- "companyId": "matomy_media"
- },
- "xvideos_com": {
- "name": "Xvideos",
- "categoryId": 8,
- "url": "https://www.xvideos.com",
- "companyId": "xvideos",
- "source": "AdGuard"
- },
- "xxxlshop.de": {
- "name": "XXXLutz",
- "categoryId": 8,
- "url": "https://www.xxxlutz.de/",
- "companyId": "xxxlutz",
- "source": "AdGuard"
- },
- "xxxlutz": {
- "name": "XXXLutz",
- "categoryId": 8,
- "url": "https://www.xxxlutz.de/",
- "companyId": "xxxlutz"
- },
- "yabbi": {
- "name": "Yabbi",
- "categoryId": 4,
- "url": "https://yabbi.me/",
- "companyId": "yabbi",
- "source": "AdGuard"
- },
- "yabuka": {
- "name": "Yabuka",
- "categoryId": 4,
- "url": "http://www.yabuka.com/",
- "companyId": "yabuka"
- },
- "yahoo": {
- "name": "Yahoo!",
- "categoryId": 6,
- "url": "https://yahoo.com/",
- "companyId": "apollo_global_management",
- "source": "AdGuard"
- },
- "yahoo_ad_exchange": {
- "name": "Yahoo! Ad Exchange",
- "categoryId": 4,
- "url": "https://www.verizonmedia.com/advertising",
- "companyId": "verizon"
- },
- "yahoo_ad_manager": {
- "name": "Yahoo! Ad Manager Plus",
- "categoryId": 4,
- "url": "https://developer.yahoo.com/analytics/",
- "companyId": "verizon"
- },
- "yahoo_advertising": {
- "name": "Yahoo! Advertising",
- "categoryId": 4,
- "url": "https://www.advertising.yahooinc.com/",
- "companyId": "apollo_global_management",
- "source": "AdGuard"
- },
- "yahoo_analytics": {
- "name": "Yahoo! Analytics",
- "categoryId": 6,
- "url": "http://web.analytics.yahoo.com/",
- "companyId": "verizon"
- },
- "yahoo_commerce_central": {
- "name": "Yahoo! Commerce Central",
- "categoryId": 4,
- "url": "http://lexity.com/",
- "companyId": "verizon"
- },
- "yahoo_dot_tag": {
- "name": "Yahoo! DOT tag",
- "categoryId": 4,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "yahoo_japan_retargeting": {
- "name": "Yahoo! Japan Retargeting",
- "categoryId": 4,
- "url": "http://www.yahoo.com/",
- "companyId": "yahoo_japan"
- },
- "yahoo_overture": {
- "name": "Yahoo! Overture",
- "categoryId": 4,
- "url": "http://searchmarketing.yahoo.com",
- "companyId": "verizon"
- },
- "yahoo_search": {
- "name": "Yahoo! Search",
- "categoryId": 4,
- "url": "https://search.yahooinc.com/",
- "companyId": "apollo_global_management",
- "source": "AdGuard"
- },
- "yahoo_small_business": {
- "name": "Yahoo! Small Business",
- "categoryId": 4,
- "url": "http://www.pixazza.com/",
- "companyId": "verizon"
- },
- "yandex": {
- "name": "Yandex",
- "categoryId": 4,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yandex.api": {
- "name": "Yandex.API",
- "categoryId": 2,
- "url": "http://api.yandex.ru/",
- "companyId": "yandex"
- },
- "yandex_adexchange": {
- "name": "Yandex AdExchange",
- "categoryId": 4,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_advisor": {
- "name": "Yandex.Advisor",
- "categoryId": 12,
- "url": "https://sovetnik.yandex.ru/",
- "companyId": "yandex"
- },
- "yandex_appmetrica": {
- "name": "Yandex AppMetrica",
- "categoryId": 101,
- "url": "https://appmetrica.yandex.com/",
- "companyId": "yandex",
- "source": "AdGuard"
- },
- "yandex_direct": {
- "name": "Yandex.Direct",
- "categoryId": 6,
- "url": "https://direct.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_metrika": {
- "name": "Yandex Metrika",
- "categoryId": 6,
- "url": "https://metrica.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_passport": {
- "name": "Yandex Passport",
- "categoryId": 2,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yapfiles.ru": {
- "name": "yapfiles.ru",
- "categoryId": 8,
- "url": "https://www.yapfiles.ru/",
- "companyId": null
- },
- "yashi": {
- "name": "Yashi",
- "categoryId": 4,
- "url": "http://www.yashi.com/",
- "companyId": "mass2"
- },
- "ybrant_media": {
- "name": "Ybrant Media",
- "categoryId": 4,
- "url": "http://www.addynamix.com/index.html",
- "companyId": "ybrant_media"
- },
- "ycontent": {
- "name": "Ycontent",
- "categoryId": 0,
- "url": "http://ycontent.com.br/",
- "companyId": "ycontent"
- },
- "yektanet": {
- "name": "Yektanet",
- "categoryId": 4,
- "url": "https://yektanet.com/",
- "companyId": "yektanet"
- },
- "yengo": {
- "name": "Yengo",
- "categoryId": 4,
- "url": "http://www.yengo.com/",
- "companyId": "yengo"
- },
- "yesmail": {
- "name": "Yesmail",
- "categoryId": 4,
- "url": "http://www.yesmail.com/",
- "companyId": "yes_mail"
- },
- "yesup_advertising": {
- "name": "YesUp Advertising",
- "categoryId": 4,
- "url": "http://yesup.net/",
- "companyId": "yesup"
- },
- "yesware": {
- "name": "Yesware",
- "categoryId": 2,
- "url": "http://www.yesware.com/",
- "companyId": "yesware"
- },
- "yieldbot": {
- "name": "Yieldbot",
- "categoryId": 6,
- "url": "https://www.yieldbot.com/",
- "companyId": "yieldbot"
- },
- "yieldify": {
- "name": "Yieldify",
- "categoryId": 4,
- "url": "http://www.yieldify.com/",
- "companyId": "yieldify"
- },
- "yieldlab": {
- "name": "Yieldlab",
- "categoryId": 4,
- "url": "http://www.yieldlab.de/",
- "companyId": "prosieben_sat1"
- },
- "yieldlove": {
- "name": "Yieldlove",
- "categoryId": 4,
- "url": "https://www.yieldlove.com/",
- "companyId": "yieldlove"
- },
- "yieldmo": {
- "name": "Yieldmo",
- "categoryId": 4,
- "url": "https://www.yieldmo.com/",
- "companyId": "yieldmo"
- },
- "yieldr": {
- "name": "Yieldr Ads",
- "categoryId": 4,
- "url": "https://www.yieldr.com/",
- "companyId": "yieldr"
- },
- "yieldr_air": {
- "name": "Yieldr Air",
- "categoryId": 6,
- "url": "https://www.yieldr.com/",
- "companyId": "yieldr"
- },
- "yieldsquare": {
- "name": "YieldSquare",
- "categoryId": 4,
- "url": "http://www.yieldsquare.com/",
- "companyId": "yieldsquare"
- },
- "yle": {
- "name": "YLE",
- "categoryId": 6,
- "url": "http://yle.fi/",
- "companyId": "yle"
- },
- "yllixmedia": {
- "name": "YllixMedia",
- "categoryId": 4,
- "url": "http://yllix.com/",
- "companyId": "yllixmedia"
- },
- "ymetrica1.com": {
- "name": "ymetrica1.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ymzrrizntbhde.com": {
- "name": "ymzrrizntbhde.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "yo_button": {
- "name": "Yo Button",
- "categoryId": 2,
- "url": "http://www.justyo.co/",
- "companyId": "yo"
- },
- "yodle": {
- "name": "Yodle",
- "categoryId": 4,
- "url": "http://www.yodle.com/",
- "companyId": "yodle"
- },
- "yola_analytics": {
- "name": "Yola Analytics",
- "categoryId": 6,
- "url": "https://www.yola.com/",
- "companyId": "yola"
- },
- "yomedia": {
- "name": "Yomedia",
- "categoryId": 4,
- "url": "http://www.pinetech.vn/",
- "companyId": "yomedia"
- },
- "yoochoose.net": {
- "name": "Ibexa Personalizaton Software",
- "categoryId": 4,
- "url": "https://yoochoose.net/",
- "companyId": "ibexa",
- "source": "AdGuard"
- },
- "yotpo": {
- "name": "Yotpo",
- "categoryId": 1,
- "url": "https://www.yotpo.com/",
- "companyId": "yotpo"
- },
- "yottaa": {
- "name": "Yottaa",
- "categoryId": 6,
- "url": "https://www.yottaa.com/",
- "companyId": "yottaa"
- },
- "yottly": {
- "name": "Yottly",
- "categoryId": 4,
- "url": "https://yottly.com/",
- "companyId": "yottly"
- },
- "youcanbookme": {
- "name": "YouCanBookMe",
- "categoryId": 2,
- "url": "https://youcanbook.me/",
- "companyId": "youcanbookme"
- },
- "youku": {
- "name": "Youku",
- "categoryId": 0,
- "url": "http://www.youku.com/",
- "companyId": "youku"
- },
- "youporn": {
- "name": "YouPorn",
- "categoryId": 3,
- "url": "https://www.youporn.com/",
- "companyId": "youporn",
- "source": "AdGuard"
- },
- "youtube": {
- "name": "YouTube",
- "categoryId": 0,
- "url": "https://www.youtube.com/",
- "companyId": "google"
- },
- "youtube_subscription": {
- "name": "YouTube Subscription",
- "categoryId": 2,
- "url": "http://www.youtube.com/",
- "companyId": "google"
- },
- "yp": {
- "name": "YellowPages",
- "categoryId": 4,
- "url": "https://www.yellowpages.com/",
- "companyId": "thryv"
- },
- "ysance": {
- "name": "YSance",
- "categoryId": 4,
- "url": "http://www.ysance.com/en/index.html",
- "companyId": "ysance"
- },
- "yume": {
- "name": "YuMe",
- "categoryId": 4,
- "url": "http://www.yume.com/",
- "companyId": "yume"
- },
- "yume,_inc.": {
- "name": "YuMe, Inc.",
- "categoryId": 4,
- "url": "http://www.yume.com/",
- "companyId": "yume"
- },
- "yusp": {
- "name": "Yusp",
- "categoryId": 6,
- "url": "https://www.yusp.com/",
- "companyId": "yusp"
- },
- "zadarma": {
- "name": "Zadarma",
- "categoryId": 2,
- "url": "https://zadarma.com/",
- "companyId": "zadarma"
- },
- "zalando_de": {
- "name": "zalando.de",
- "categoryId": 8,
- "url": "https://zalando.de/",
- "companyId": "zalando"
- },
- "zalo": {
- "name": "Zalo",
- "categoryId": 2,
- "url": "https://zaloapp.com/",
- "companyId": "zalo"
- },
- "zanox": {
- "name": "Zanox",
- "categoryId": 4,
- "url": "http://www.zanox.com/us/",
- "companyId": "axel_springer"
- },
- "zaparena": {
- "name": "zaparena",
- "categoryId": 4,
- "url": "http://www.zaparena.com/",
- "companyId": "zapunited"
- },
- "zappos": {
- "name": "Zappos",
- "categoryId": 4,
- "url": "http://www.zappos.com/",
- "companyId": "zappos"
- },
- "zdassets.com": {
- "name": "Zendesk CDN",
- "categoryId": 8,
- "url": "http://www.zendesk.com/",
- "companyId": "zendesk"
- },
- "zebestof.com": {
- "name": "Zebestof",
- "categoryId": 4,
- "url": "http://www.zebestof.com/en/home/",
- "companyId": "zebestof"
- },
- "zedo": {
- "name": "Zedo",
- "categoryId": 4,
- "url": "http://www.zedo.com/",
- "companyId": "zedo"
- },
- "zemanta": {
- "name": "Zemanta",
- "categoryId": 2,
- "url": "http://www.zemanta.com/",
- "companyId": "zemanta"
- },
- "zencoder": {
- "name": "Zencoder",
- "categoryId": 0,
- "url": "https://zencoder.com/en/",
- "companyId": "zencoder"
- },
- "zendesk": {
- "name": "Zendesk",
- "categoryId": 2,
- "url": "http://www.zendesk.com/",
- "companyId": "zendesk"
- },
- "zergnet": {
- "name": "ZergNet",
- "categoryId": 2,
- "url": "http://www.zergnet.com/info",
- "companyId": "zergnet"
- },
- "zero.kz": {
- "name": "ZERO.kz",
- "categoryId": 6,
- "url": "http://zero.kz/",
- "companyId": "neolabs_zero"
- },
- "zeta": {
- "name": "Zeta",
- "categoryId": 2,
- "url": "https://zetaglobal.com/",
- "companyId": "zeta"
- },
- "zeusclicks": {
- "name": "ZeusClicks",
- "categoryId": 4,
- "url": "http://zeusclicks.com/",
- "companyId": "zeusclicks",
- "source": "AdGuard"
- },
- "ziff_davis": {
- "name": "Ziff Davis",
- "categoryId": 4,
- "url": "https://www.ziffdavis.com/",
- "companyId": "ziff_davis"
- },
- "zift_solutions": {
- "name": "Zift Solutions",
- "categoryId": 6,
- "url": "https://ziftsolutions.com/",
- "companyId": "zift_solutions"
- },
- "zimbio.com": {
- "name": "Zimbio",
- "categoryId": 8,
- "url": "http://www.zimbio.com/",
- "companyId": "livinglymedia",
- "source": "AdGuard"
- },
- "zippyshare_widget": {
- "name": "Zippyshare Widget",
- "categoryId": 2,
- "url": "http://www.zippyshare.com",
- "companyId": "zippyshare"
- },
- "zmags": {
- "name": "Zmags",
- "categoryId": 6,
- "url": "https://zmags.com/",
- "companyId": "zmags"
- },
- "zmctrack.net": {
- "name": "zmctrack.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zog.link": {
- "name": "zog.link",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zoho": {
- "name": "Zoho",
- "categoryId": 6,
- "url": "https://www.zohocorp.com/index.html",
- "companyId": "zoho_corp"
- },
- "zononi.com": {
- "name": "zononi.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "zopim": {
- "name": "Zopim",
- "categoryId": 2,
- "url": "http://www.zopim.com/",
- "companyId": "zendesk"
- },
- "zukxd6fkxqn.com": {
- "name": "zukxd6fkxqn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zwaar": {
- "name": "Zwaar",
- "categoryId": 4,
- "url": "http://www.zwaar.org",
- "companyId": "zwaar"
- },
- "zypmedia": {
- "name": "ZypMedia",
- "categoryId": 4,
- "url": "http://www.zypmedia.com/",
- "companyId": "zypmedia"
- }
- },
- "trackerDomains": {
- "mmtro.com": "1000mercis",
- "creative-serving.com": "161media",
- "p161.net": "161media",
- "analytics.163.com": "163",
- "1822direkt.de": "1822direkt.de",
- "1dmp.io": "1dmp.io",
- "opecloud.com": "1plusx",
- "1sponsor.com": "1sponsor",
- "tm.dentsu.de": "1tag",
- "1and1.com": "1und1",
- "1und1.de": "1und1",
- "uicdn.com": "1und1",
- "website-start.de": "1und1",
- "24-ads.com": "24-ads.com",
- "247-inc.net": "24_7",
- "d1af033869koo7.cloudfront.net": "24_7",
- "counter.24log.ru": "24log",
- "24smi.net": "24smi",
- "24smi.org": "24smi",
- "2leep.com": "2leep",
- "33across.com": "33across",
- "3dstats.com": "3dstats",
- "3gpp.org": "3gpp",
- "3gppnetwork.org": "3gpp",
- "4cdn.org": "4chan",
- "4finance.com": "4finance_com",
- "4wnet.com": "4w_marketplace",
- "d3aa0ztdn3oibi.cloudfront.net": "500friends",
- "51.la": "51.la",
- "5min.com": "5min_media",
- "d1lm7kd3bd3yo9.cloudfront.net": "6sense",
- "grepdata.com": "6sense",
- "77tracking.com": "77tracking",
- "swm.digital": "7plus",
- "7tv.de": "7tv.de",
- "888media.net": "888media",
- "hit.8digits.com": "8digits",
- "94j7afz2nr.xyz": "94j7afz2nr.xyz",
- "statsanalytics.com": "99stats",
- "a3cloud.net": "a3cloud_net",
- "a8.net": "a8",
- "aaxads.com": "aaxads.com",
- "abtasty.com": "ab_tasty",
- "d1447tq2m68ekg.cloudfront.net": "ab_tasty",
- "ab.co": "abc",
- "abc-cdn.net.au": "abc",
- "abc-host.net": "abc",
- "abc-host.net.au": "abc",
- "abc-prod.net.au": "abc",
- "abc-stage.net.au": "abc",
- "abc-test.net.au": "abc",
- "abc.net.au": "abc",
- "abcaustralia.net.au": "abc",
- "abcradio.net.au": "abc",
- "ablida.de": "ablida",
- "ablida.net": "ablida",
- "durasite.net": "accelia",
- "accengage.net": "accengage",
- "ax.xrea.com": "accessanalyzer",
- "accesstrade.net": "accesstrade",
- "agcdn.com": "accord_group",
- "accmgr.com": "accordant_media",
- "p-td.com": "accuen_media",
- "acestream.net": "acestream.net",
- "acint.net": "acint.net",
- "acloudimages.com": "acloudimages",
- "acpm.fr": "acpm.fr",
- "acquia.com": "acquia.com",
- "ziyu.net": "acrweb",
- "actionpay.ru": "actionpay",
- "adnwb.ru": "actionpay",
- "adonweb.ru": "actionpay",
- "active-agent.com": "active_agent",
- "trackcmp.net": "active_campaign",
- "active-srv02.de": "active_performance",
- "active-tracking.de": "active_performance",
- "activeconversion.com": "activeconversion",
- "a-cast.jp": "activecore",
- "activemeter.com": "activemeter",
- "go.activengage.com": "activengage",
- "actonsoftware.com": "acton",
- "acuityplatform.com": "acuity_ads",
- "acxiom-online.com": "acxiom",
- "acxiom.com": "acxiom",
- "ad-blocker.org": "ad-blocker.org",
- "ads.ad-center.com": "ad-center",
- "ad-delivery.net": "ad-delivery.net",
- "ad-sys.com": "ad-sys",
- "adagionet.com": "ad.agio",
- "ad2click.go2cloud.org": "ad2click",
- "ad2games.com": "ad2games",
- "ad360.vn": "ad360",
- "ads.ad4game.com": "ad4game",
- "ad4mat.ar": "ad4mat",
- "ad4mat.at": "ad4mat",
- "ad4mat.be": "ad4mat",
- "ad4mat.bg": "ad4mat",
- "ad4mat.br": "ad4mat",
- "ad4mat.ch": "ad4mat",
- "ad4mat.co.uk": "ad4mat",
- "ad4mat.cz": "ad4mat",
- "ad4mat.de": "ad4mat",
- "ad4mat.dk": "ad4mat",
- "ad4mat.es": "ad4mat",
- "ad4mat.fi": "ad4mat",
- "ad4mat.fr": "ad4mat",
- "ad4mat.gr": "ad4mat",
- "ad4mat.hu": "ad4mat",
- "ad4mat.it": "ad4mat",
- "ad4mat.mx": "ad4mat",
- "ad4mat.net": "ad4mat",
- "ad4mat.nl": "ad4mat",
- "ad4mat.no": "ad4mat",
- "ad4mat.pl": "ad4mat",
- "ad4mat.ro": "ad4mat",
- "ad4mat.ru": "ad4mat",
- "ad4mat.se": "ad4mat",
- "ad4mat.tr": "ad4mat",
- "ad6.fr": "ad6media",
- "ad6media.co.uk": "ad6media",
- "ad6media.com": "ad6media",
- "ad6media.es": "ad6media",
- "ad6media.fr": "ad6media",
- "a2dfp.net": "ad_decisive",
- "addynamo.net": "ad_dynamo",
- "ebis.ne.jp": "ad_ebis",
- "adlightning.com": "ad_lightning",
- "admagnet.net": "ad_magnet",
- "amimg.net": "ad_magnet",
- "adspirit.de": "ad_spirit",
- "adspirit.net": "ad_spirit",
- "adac.de": "adac_de",
- "adacado.com": "adacado",
- "ozonemedia.com": "adadyn",
- "adrtx.net": "adality_gmbh",
- "adalliance.io": "adalliance.io",
- "adalyser.com": "adalyser.com",
- "adaos-ads.net": "adaos",
- "adap.tv": "adap.tv",
- "smrtlnks.com": "adaptiveblue_smartlinks",
- "yieldoptimizer.com": "adara_analytics",
- "adnetwork.adasiaholdings.com": "adasia_holdings",
- "adbetclickin.pink": "adbetclickin.pink",
- "adbetnet.com": "adbetnet.com",
- "adblade.com": "adblade.com",
- "adbooth.com": "adbooth",
- "adbooth.net": "adbooth",
- "adbox.lv": "adbox",
- "adbrn.com": "adbrain",
- "adbrite.com": "adbrite",
- "adbull.com": "adbull",
- "adbutler.com": "adbutler",
- "adc-serv.net": "adc_media",
- "adc-srv.net": "adc_media",
- "adcash.com": "adcash",
- "vuroll.in": "adchakra",
- "acs86.com": "adchina",
- "csbew.com": "adchina",
- "irs09.com": "adchina",
- "adcito.com": "adcito",
- "adcitomedia.com": "adcito",
- "adclear.net": "adclear",
- "swift.adclerks.com": "adclerks",
- "adclickmedia.com": "adclickmedia",
- "adclickzone.go2cloud.org": "adclickzone",
- "ad-cloud.jp": "adcloud",
- "admarvel.s3.amazonaws.com": "adcolony",
- "ads.admarvel.com": "adcolony",
- "adcolony.com": "adcolony",
- "adrdgt.com": "adconion",
- "amgdgt.com": "adconion",
- "adcrowd.com": "adcrowd",
- "shop2market.com": "adcurve",
- "addtocalendar.com": "add_to_calendar",
- "dpmsrv.com": "addaptive",
- "yagiay.com": "addefend",
- "addfreestats.com": "addfreestats",
- "addinto.com": "addinto",
- "addshoppers.com": "addshoppers",
- "shop.pe": "addshoppers",
- "addthis.com": "addthis",
- "addthiscdn.com": "addthis",
- "addthisedge.com": "addthis",
- "b2btracking.addvalue.de": "addvalue",
- "addyon.com": "addyon",
- "adeasy.ru": "adeasy",
- "ipredictive.com": "adelphic",
- "adengage.com": "adengage",
- "adespresso.com": "adespresso",
- "adexcite.com": "adexcite",
- "adextent.com": "adextent",
- "adf.ly": "adf.ly",
- "adfalcon.com": "adfalcon",
- "adfoc.us": "adfocus",
- "js.adforgames.com": "adforgames",
- "adform.net": "adform",
- "adformdsp.net": "adform",
- "seadform.net": "adform",
- "adfox.ru": "adfox",
- "adwolf.ru": "adfox",
- "adfreestyle.pl": "adfreestyle",
- "adfront.org": "adfront",
- "adfrontiers.com": "adfrontiers",
- "adgebra.co.in": "adgebra",
- "adgenie.co.uk": "adgenie",
- "ad.adgile.com": "adgile",
- "ad.antventure.com": "adgile",
- "adglare.net": "adglare.net",
- "adsafety.net": "adglue",
- "smartadcheck.de": "adgoal",
- "smartredirect.de": "adgoal",
- "adgorithms.com": "adgorithms",
- "adgoto.com": "adgoto",
- "adguard.com": "adguard",
- "adguard.app": "adguard",
- "adguard.info": "adguard",
- "adguard.io": "adguard",
- "adguard.org": "adguard",
- "adtidy.org": "adguard",
- "agrd.io": "adguard",
- "agrd.eu": "adguard",
- "adguard-dns.com": "adguard_dns",
- "adguard-dns.io": "adguard_dns",
- "adguard-vpn.com": "adguard_vpn",
- "adguard-vpn.online": "adguard_vpn",
- "adguardvpn.com": "adguard_vpn",
- "adhands.ru": "adhands",
- "adhese.be": "adhese",
- "adhese.com": "adhese",
- "adhese.net": "adhese",
- "adhitzads.com": "adhitz",
- "adhood.com": "adhood",
- "afy11.net": "adify",
- "cdn.adikteev.com": "adikteev",
- "adimpact.com": "adimpact",
- "adinch.com": "adinch",
- "adition.com": "adition",
- "adjal.com": "adjal",
- "cdn.adjs.net": "adjs",
- "adjug.com": "adjug",
- "adjust.com": "adjust",
- "adj.st": "adjust",
- "adjust.io": "adjust",
- "adjust.net.in": "adjust",
- "adjust.world": "adjust",
- "apptrace.com": "adjust",
- "adk2.com": "adk2",
- "cdn.adsrvmedia.com": "adk2",
- "cdn.cdnrl.com": "adk2",
- "adklip.com": "adklip",
- "adkengage.com": "adknowledge",
- "adknowledge.com": "adknowledge",
- "bidsystem.com": "adknowledge",
- "blogads.com": "adknowledge",
- "cubics.com": "adknowledge",
- "yarpp.org": "adknowledge",
- "adsearch.adkontekst.pl": "adkontekst",
- "netsprint.eu": "adkontekst.pl",
- "adlabs.ru": "adlabs",
- "clickiocdn.com": "adlabs",
- "luxup.ru": "adlabs",
- "mixmarket.biz": "adlabs",
- "ad-serverparc.nl": "adlantic",
- "adimg.net": "adlantis",
- "adlantis.jp": "adlantis",
- "cdn.adless.io": "adless",
- "api.publishers.adlive.io": "adlive_header_bidding",
- "adlooxtracking.com": "adloox",
- "adx1.com": "admachine",
- "adman.gr": "adman",
- "adman.in.gr": "adman",
- "admanmedia.com": "adman_media",
- "admantx.com": "admantx.com",
- "admaster.net": "admaster",
- "cdnmaster.com": "admaster",
- "admaster.com.cn": "admaster.cn",
- "admasterapi.com": "admaster.cn",
- "admatic.com.tr": "admatic",
- "ads5.admatic.com.tr": "admatic",
- "cdn2.admatic.com.tr": "admatic",
- "lib-3pas.admatrix.jp": "admatrix",
- "admaxserver.com": "admax",
- "admaxim.com": "admaxim",
- "admaya.in": "admaya",
- "admedia.com": "admedia",
- "adizio.com": "admedo_com",
- "admedo.com": "admedo_com",
- "admeira.ch": "admeira.ch",
- "admeld.com": "admeld",
- "admeo.ru": "admeo",
- "admaym.com": "admeta",
- "atemda.com": "admeta",
- "admicro.vn": "admicro",
- "vcmedia.vn": "admicro",
- "admitad.com": "admitad.com",
- "admixer.net": "admixer",
- "admixer.com": "admixer",
- "admized.com": "admized",
- "admo.tv": "admo.tv",
- "a.admob.com": "admob",
- "mm.admob.com": "admob",
- "mmv.admob.com": "admob",
- "p.admob.com": "admob",
- "run.admost.com": "admost",
- "dmmotion.com": "admotion",
- "nspmotion.com": "admotion",
- "admulti.com": "admulti",
- "adnegah.net": "adnegah",
- "adnet.vn": "adnet",
- "adnet.biz": "adnet.de",
- "adnet.de": "adnet.de",
- "adclick.lt": "adnet_media",
- "adnet.lt": "adnet_media",
- "ad.adnetwork.net": "adnetwork.net",
- "adnetworkperformance.com": "adnetworkperformance.com",
- "adserver.adnexio.com": "adnexio",
- "adnium.com": "adnium.com",
- "heias.com": "adnologies",
- "smaclick.com": "adnow",
- "st-n.ads3-adnow.com": "adnow",
- "adnymics.com": "adnymics",
- "adobe.com": "adobe_audience_manager",
- "demdex.net": "adobe_audience_manager",
- "everestjs.net": "adobe_audience_manager",
- "everesttech.net": "adobe_audience_manager",
- "adobe.io": "adobe_developer",
- "scene7.com": "adobe_dynamic_media",
- "adobedtm.com": "adobe_dynamic_tag_management",
- "2o7.net": "adobe_experience_cloud",
- "du8783wkf05yr.cloudfront.net": "adobe_experience_cloud",
- "hitbox.com": "adobe_experience_cloud",
- "imageg.net": "adobe_experience_cloud",
- "nedstat.com": "adobe_experience_cloud",
- "omtrdc.net": "adobe_experience_cloud",
- "sitestat.com": "adobe_experience_cloud",
- "adobedc.net": "adobe_experience_league",
- "adobelogin.com": "adobe_login",
- "adobetag.com": "adobe_tagmanager",
- "typekit.com": "adobe_typekit",
- "typekit.net": "adobe_typekit",
- "adocean.pl": "adocean",
- "dmtry.com": "adometry",
- "adomik.com": "adomik",
- "adcde.com": "adon_network",
- "addlvr.com": "adon_network",
- "adfeedstrk.com": "adon_network",
- "adtrgt.com": "adon_network",
- "bannertgt.com": "adon_network",
- "cptgt.com": "adon_network",
- "cpvfeed.com": "adon_network",
- "cpvtgt.com": "adon_network",
- "mygeek.com": "adon_network",
- "popcde.com": "adon_network",
- "sdfje.com": "adon_network",
- "urtbk.com": "adon_network",
- "adonion.com": "adonion",
- "t.adonly.com": "adonly",
- "adoperator.com": "adoperator",
- "adoric.com": "adoric",
- "adorika.com": "adorika",
- "adorika.net": "adorika",
- "adosia.com": "adosia",
- "adotmob.com": "adotmob.com",
- "adotube.com": "adotube",
- "adparlor.com": "adparlor",
- "adparlour.com": "adparlor",
- "a4p.adpartner.pro": "adpartner",
- "adpeepshosted.com": "adpeeps",
- "adperfect.com": "adperfect",
- "adperium.com": "adperium",
- "adpilot.at": "adpilot",
- "erne.co": "adpilot",
- "adplan-ds.com": "adplan",
- "advg.jp": "adplan",
- "c.p-advg.com": "adplan",
- "adplus.co.id": "adplus",
- "adprofex.com": "adprofex",
- "ads2.bid": "adprofex",
- "adframesrc.com": "adprofy",
- "adserve.adpulse.ir": "adpulse",
- "ads.adpv.com": "adpv",
- "adreactor.com": "adreactor",
- "adrecord.com": "adrecord",
- "adrecover.com": "adrecover",
- "ad.vcm.jp": "adresult",
- "adresult.jp": "adresult",
- "adriver.ru": "adriver",
- "adroll.com": "adroll",
- "adrom.net": "adrom",
- "txt.eu": "adrom",
- "adru.net": "adru.net",
- "adrunnr.com": "adrunnr",
- "adsame.com": "adsame",
- "adsbookie.com": "adsbookie",
- "adscale.de": "adscale",
- "adscience.nl": "adscience",
- "adsco.re": "adsco.re",
- "adsensecamp.com": "adsensecamp",
- "adserverpub.com": "adserverpub",
- "online.adservicemedia.dk": "adservice_media",
- "adsfactor.net": "adsfactor",
- "ads.doclix.com": "adside",
- "adskeeper.co.uk": "adskeeper",
- "ssp.adskom.com": "adskom",
- "adslot.com": "adslot",
- "adsnative.com": "adsnative",
- "adsniper.ru": "adsniper.ru",
- "adspeed.com": "adspeed",
- "adspeed.net": "adspeed",
- "o333o.com": "adspyglass",
- "adstage-analytics.herokuapp.com": "adstage",
- "code.adstanding.com": "adstanding",
- "adstars.co.id": "adstars",
- "ad-stir.com": "adstir",
- "4dsply.com": "adsupply",
- "cdn.engine.adsupply.com": "adsupply",
- "trklnks.com": "adsupply",
- "adswizz.com": "adswizz",
- "adtaily.com": "adtaily",
- "adtaily.pl": "adtaily",
- "adtarget.me": "adtarget.me",
- "adtech.de": "adtech",
- "adtechus.com": "adtech",
- "adtegrity.net": "adtegrity",
- "adtpix.com": "adtegrity",
- "adtelligence.de": "adtelligence.de",
- "adentifi.com": "adtheorent",
- "adthink.com": "adthink",
- "advertstream.com": "adthink",
- "audienceinsights.net": "adthink",
- "adtiger.de": "adtiger",
- "adtimaserver.vn": "adtima",
- "adtng.com": "adtng.com",
- "adtoma.com": "adtoma",
- "adtomafusion.com": "adtoma",
- "adtr02.com": "adtr02.com",
- "track.adtraction.com": "adtraction",
- "adtraxx.de": "adtraxx",
- "adtriba.com": "adtriba.com",
- "adtrue.com": "adtrue",
- "adtrustmedia.com": "adtrustmedia",
- "ad.adtube.ir": "adtube",
- "awempire.com": "adult_webmaster_empire",
- "dditscdn.com": "adult_webmaster_empire",
- "livejasmin.com": "adult_webmaster_empire",
- "adultadworld.com": "adultadworld",
- "adworldmedia.com": "adultadworld",
- "adup-tech.com": "adup-tech.com",
- "advaction.ru": "advaction",
- "aucourant.info": "advaction",
- "schetu.net": "advaction",
- "dqfw2hlp4tfww.cloudfront.net": "advalo",
- "ahcdn.com": "advanced_hosters",
- "pix-cdn.org": "advanced_hosters",
- "s3.advarkads.com": "advark",
- "adventori.com": "adventori",
- "adnext.fr": "adverline",
- "adverline.com": "adverline",
- "surinter.net": "adverline",
- "adversaldisplay.com": "adversal",
- "adversalservers.com": "adversal",
- "go.adversal.com": "adversal",
- "adverserve.net": "adverserve",
- "ad.adverteerdirect.nl": "adverteerdirect",
- "adverticum.net": "adverticum",
- "advertise.com": "advertise.com",
- "advertisespace.com": "advertisespace",
- "adsdk.com": "advertising.com",
- "advertising.com": "advertising.com",
- "aol.com": "advertising.com",
- "atwola.com": "advertising.com",
- "pictela.net": "advertising.com",
- "verizonmedia.com": "advertising.com",
- "advertlets.com": "advertlets",
- "advertserve.com": "advertserve",
- "advidi.com": "advidi",
- "am10.ru": "advmaker.ru",
- "am15.net": "advmaker.ru",
- "advolution.de": "advolution",
- "adwebster.com": "adwebster",
- "ads.adwitserver.com": "adwit",
- "adworx.at": "adworx.at",
- "adworxs.net": "adworxs.net",
- "adxion.com": "adxion",
- "adxpansion.com": "adxpansion",
- "ads.adxpose.com": "adxpose",
- "event.adxpose.com": "adxpose",
- "servedby.adxpose.com": "adxpose",
- "adxprtz.com": "adxprtz.com",
- "adyoulike.com": "adyoulike",
- "omnitagjs.com": "adyoulike",
- "adzerk.net": "adzerk",
- "adzly.com": "adzly",
- "aemediatraffic.com": "aemediatraffic",
- "hprofits.com": "aemediatraffic",
- "amxdt.com": "aerify_media",
- "aerisapi.com": "aeris_weather",
- "aerisweather.com": "aeris_weather",
- "affectv.com": "affectv",
- "go.affec.tv": "affectv",
- "hybridtheory.com": "affectv",
- "affilbox.com": "affilbox",
- "affilbox.cz": "affilbox",
- "track.affiliate-b.com": "affiliate-b",
- "affiliate4you.nl": "affiliate4you",
- "ads.affbuzzads.com": "affiliatebuzz",
- "affiliatefuture.com": "affiliatefuture",
- "affiliatelounge.com": "affiliatelounge",
- "affiliation-france.com": "affiliation_france",
- "affiliator.com": "affiliator",
- "affiliaweb.fr": "affiliaweb",
- "banner-rotation.com": "affilinet",
- "webmasterplan.com": "affilinet",
- "affimax.de": "affimax",
- "affinity.com": "affinity",
- "countby.com": "affinity.by",
- "affiz.net": "affiz_cpm",
- "pml.afftrack.com": "afftrack",
- "afgr2.com": "afgr2.com",
- "v2.afilio.com.br": "afilio",
- "afsanalytics.com": "afs_analystics",
- "ads.aftonbladet.se": "aftonbladet_ads",
- "aftv-serving.bid": "aftv-serving.bid",
- "agkn.com": "aggregate_knowledge",
- "agilone.com": "agilone",
- "adview.pl": "agora",
- "pingagenow.com": "ahalogy",
- "aimediagroup.com": "ai_media_group",
- "advombat.ru": "aidata",
- "aidata.io": "aidata",
- "aim4media.com": "aim4media",
- "muscache.com": "airbnb",
- "musthird.com": "airbnb",
- "airbrake.io": "airbrake",
- "airpr.com": "airpr.com",
- "ab.airpush.com": "airpush",
- "abmr.net": "akamai_technologies",
- "akamai.net": "akamai_technologies",
- "akamaihd.net": "akamai_technologies",
- "akamaized.net": "akamai_technologies",
- "akstat.io": "akamai_technologies",
- "edgekey.net": "akamai_technologies",
- "edgesuite.net": "akamai_technologies",
- "imiclk.com": "akamai_technologies",
- "akadns.net": "akamai_technologies",
- "akamaiedge.net": "akamai_technologies",
- "akaquill.net": "akamai_technologies",
- "akamoihd.net": "akamoihd.net",
- "adn-d.sp.gmossp-sp.jp": "akane",
- "akanoo.com": "akanoo",
- "akavita.com": "akavita",
- "ads.albawaba.com": "al_bawaba_advertising",
- "serve.albacross.com": "albacross",
- "aldi-international.com": "aldi-international.com",
- "alenty.com": "alenty",
- "alephd.com": "alephd.com",
- "alexametrics.com": "alexa_metrics",
- "d31qbv1cthcecs.cloudfront.net": "alexa_metrics",
- "d5nxst8fruw4z.cloudfront.net": "alexa_metrics",
- "alexa.com": "alexa_traffic_rank",
- "algolia.com": "algolia.net",
- "algolia.net": "algolia.net",
- "algovid.com": "algovid.com",
- "alibaba.com": "alibaba.com",
- "alicdn.com": "alibaba.com",
- "aliapp.org": "alibaba.com",
- "alibabachengdun.com": "alibaba.com",
- "alibabausercontent.com": "alibaba.com",
- "aliexpress.com": "alibaba.com",
- "alikunlun.com": "alibaba.com",
- "aliyuncs.com": "alibaba.com",
- "alibabacloud.com": "alibaba_cloud",
- "alibabadns.com": "alibaba_cloud",
- "aliyun.com": "alibaba_cloud",
- "ucweb.com": "alibaba_ucbrowser",
- "alipay.com": "alipay.com",
- "alipayobjects.com": "alipay.com",
- "websitealive.com": "alivechat",
- "allegroimg.com": "allegro.pl",
- "allegrostatic.com": "allegro.pl",
- "allegrostatic.pl": "allegro.pl",
- "ngacm.com": "allegro.pl",
- "ngastatic.com": "allegro.pl",
- "i.btg360.com.br": "allin",
- "allo-pages.fr": "allo-pages.fr",
- "allotraffic.com": "allotraffic",
- "edge.alluremedia.com.au": "allure_media",
- "allyes.com": "allyes",
- "inputs.alooma.com": "alooma",
- "arena.altitude-arena.com": "altitude_digital",
- "amadesa.com": "amadesa",
- "amap.com": "amap",
- "amazon.ca": "amazon",
- "amazon.co.jp": "amazon",
- "amazon.co.uk": "amazon",
- "amazon.com": "amazon",
- "amazon.de": "amazon",
- "amazon.es": "amazon",
- "amazon.fr": "amazon",
- "amazon.it": "amazon",
- "d3io1k5o0zdpqr.cloudfront.net": "amazon",
- "a2z.com": "amazon",
- "aamazoncognito.com": "amazon",
- "amazon-corp.com": "amazon",
- "amazon-dss.com": "amazon",
- "amazon.com.au": "amazon",
- "amazon.com.mx": "amazon",
- "amazon.dev": "amazon",
- "amazon.in": "amazon",
- "amazon.nl": "amazon",
- "amazon.sa": "amazon",
- "amazonbrowserapp.co.uk": "amazon",
- "amazonbrowserapp.es": "amazon",
- "amazoncrl.com": "amazon",
- "firetvcaptiveportal.com": "amazon",
- "ntp-fireos.com": "amazon",
- "amazon-adsystem.com": "amazon_adsystem",
- "serving-sys.com": "amazon_adsystem",
- "sizmek.com": "amazon_adsystem",
- "assoc-amazon.ca": "amazon_associates",
- "assoc-amazon.co.uk": "amazon_associates",
- "assoc-amazon.com": "amazon_associates",
- "assoc-amazon.de": "amazon_associates",
- "assoc-amazon.fr": "amazon_associates",
- "assoc-amazon.jp": "amazon_associates",
- "images-amazon.com": "amazon_cdn",
- "media-amazon.com": "amazon_cdn",
- "ssl-images-amazon.com": "amazon_cdn",
- "amazontrust.com": "amazon_cdn",
- "associates-amazon.com": "amazon_cdn",
- "cloudfront.net": "amazon_cloudfront",
- "ota-cloudfront.net": "amazon_cloudfront",
- "axx-eu.amazon-adsystem.com": "amazon_mobile_ads",
- "amazonpay.com": "amazon_payments",
- "payments-amazon.com": "amazon_payments",
- "amazonpay.in": "amazon_payments",
- "aiv-cdn.net": "amazon_video",
- "aiv-delivery.net": "amazon_video",
- "amazonvideo.com": "amazon_video",
- "pv-cdn.net": "amazon_video",
- "primevideo.com": "amazon_video",
- "amazonaws.com": "amazon_web_services",
- "amazonwebservices.com": "amazon_web_services",
- "awsstatic.com": "amazon_web_services",
- "adnetwork.net.vn": "ambient_digital",
- "adnetwork.vn": "ambient_digital",
- "ambientplatform.vn": "ambient_digital",
- "amgload.net": "amgload.net",
- "amoad.com": "amoad",
- "ad.amgdgt.com": "amobee",
- "ads.amgdgt.com": "amobee",
- "amobee.com": "amobee",
- "collective-media.net": "amp_platform",
- "amplitude.com": "amplitude",
- "d24n15hnbwhuhn.cloudfront.net": "amplitude",
- "ampproject.org": "ampproject.org",
- "anametrix.net": "anametrix",
- "ancestrycdn.com": "ancestry_cdn",
- "ancoraplatform.com": "ancora",
- "android.com": "android",
- "anetwork.ir": "anetwork",
- "aniview.com": "aniview.com",
- "a-ads.com": "anonymousads",
- "anormal-tracker.de": "anormal_tracker",
- "answerscloud.com": "answers_cloud_service",
- "anthill.vn": "ants",
- "ants.vn": "ants",
- "rt.analytics.anvato.net": "anvato",
- "tkx2-prod.anvato.net": "anvato",
- "w3.cdn.anvato.net": "anvato",
- "player.anyclip.com": "anyclip",
- "video-loader.com": "aol_be_on",
- "aolcdn.com": "aol_cdn",
- "isp.netscape.com": "aol_cdn",
- "apa.at": "apa.at",
- "apester.com": "apester",
- "apicit.net": "apicit.net",
- "carrierzone.com": "aplus_analytics",
- "appcenter.ms": "appcenter",
- "appcues.com": "appcues",
- "appdynamics.com": "appdynamics",
- "de8of677fyt0b.cloudfront.net": "appdynamics",
- "eum-appdynamics.com": "appdynamics",
- "jscdn.appier.net": "appier",
- "apple.com": "apple",
- "aaplimg.com": "apple",
- "apple-cloudkit.com": "apple",
- "apple-dns.net": "apple",
- "apple-livephotoskit.com": "apple",
- "apple-mapkit.com": "apple",
- "apple.news": "apple",
- "apzones.com": "apple",
- "cdn-apple.com": "apple",
- "icloud-content.com": "apple",
- "icloud.com": "apple",
- "icons.axm-usercontent-apple.com": "apple",
- "itunes.com": "apple",
- "me.com": "apple",
- "mzstatic.com": "apple",
- "safebrowsing.apple": "apple",
- "safebrowsing.g.applimg.com": "apple",
- "iadsdk.apple.com": "apple_ads",
- "applifier.com": "applifier",
- "assets.applovin.com": "applovin",
- "applovin.com": "applovin",
- "applvn.com": "applovin",
- "appmetrx.com": "appmetrx",
- "adnxs.com": "appnexus",
- "adnxs.net": "appnexus",
- "appsflyer.com": "appsflyer",
- "appsflyersdk.com": "appsflyer",
- "adne.tv": "apptv",
- "readserver.net": "apptv",
- "www.apture.com": "apture",
- "arcpublishing.com": "arcpublishing",
- "ard.de": "ard.de",
- "areyouahuman.com": "are_you_a_human",
- "arkoselabs.com": "arkoselabs.com",
- "art19.com": "art19",
- "banners.advsnx.net": "artimedia",
- "artlebedev.ru": "artlebedev.ru",
- "ammadv.it": "aruba_media_marketing",
- "arubamediamarketing.it": "aruba_media_marketing",
- "cya2.net": "arvato_canvas_fp",
- "asambeauty.com": "asambeauty.com",
- "ask.com": "ask.com",
- "aspnetcdn.com": "aspnetcdn",
- "ads.assemblyexchange.com": "assemblyexchange",
- "cdn.astronomer.io": "astronomer",
- "ati-host.net": "at_internet",
- "aticdn.net": "at_internet",
- "xiti.com": "at_internet",
- "atedra.com": "atedra",
- "oadts.com": "atg_group",
- "as00.estara.com": "atg_optimization",
- "atgsvcs.com": "atg_recommendations",
- "adbureau.net": "atlas",
- "atdmt.com": "atlas",
- "atlassbx.com": "atlas",
- "track.roiservice.com": "atlas_profitbuilder",
- "atl-paas.net": "atlassian.net",
- "atlassian.com": "atlassian.net",
- "atlassian.net": "atlassian.net",
- "d12ramskps3070.cloudfront.net": "atlassian.net",
- "bitbucket.org": "atlassian.net",
- "jira.com": "atlassian.net",
- "ss-inf.net": "atlassian.net",
- "d1xfq2052q7thw.cloudfront.net": "atlassian_marketplace",
- "marketplace.atlassian.com": "atlassian_marketplace",
- "atomz.com": "atomz_search",
- "atsfi.de": "atsfi_de",
- "cdn.attracta.com": "attracta",
- "locayta.com": "attraqt",
- "ads.audience2media.com": "audience2media",
- "qwobl.net": "audience_ad_network",
- "revsci.net": "audience_science",
- "wunderloop.net": "audience_science",
- "12mlbe.com": "audiencerate",
- "audiencesquare.com": "audiencesquare.com",
- "ad.gt": "audiencesquare.com",
- "audigent.com": "audiencesquare.com",
- "hadronid.net": "audiencesquare.com",
- "auditude.com": "auditude",
- "audtd.com": "audtd.com",
- "cdn.augur.io": "augur",
- "aumago.com": "aumago",
- "clicktracks.com": "aurea_clicktracks",
- "ausgezeichnet.org": "ausgezeichnet_org",
- "advertising.gov.au": "australia.gov",
- "auth0.com": "auth0",
- "ai.autoid.com": "autoid",
- "optimost.com": "autonomy",
- "oc-track.autonomycloud.com": "autonomy_campaign",
- "track.yieldsoftware.com": "autonomy_campaign",
- "api.autopilothq.com": "autopilothq",
- "autoscout24.com": "autoscout24.com",
- "autoscout24.net": "autoscout24.com",
- "avail.net": "avail",
- "analytics.avanser.com.au": "avanser",
- "avmws.com": "avant_metrics",
- "avantlink.com": "avantlink",
- "ads.avazu.net": "avazu_network",
- "avenseo.com": "avenseo",
- "adspdbl.com": "avid_media",
- "avocet.io": "avocet",
- "aweber.com": "aweber",
- "awin.com": "awin",
- "awin1.com": "awin",
- "perfb.com": "awin",
- "ad.globe7.com": "axill",
- "azadify.com": "azadify",
- "azure.com": "azure",
- "azure.net": "azure",
- "azurefd.net": "azure",
- "trafficmanager.net": "azure",
- "blob.core.windows.net": "azure_blob_storage",
- "azureedge.net": "azureedge.net",
- "b2bcontext.ru": "b2bcontext",
- "b2bvideo.ru": "b2bvideo",
- "babator.com": "babator.com",
- "backbeatmedia.com": "back_beat_media",
- "widgets.backtype.com": "backtype_widgets",
- "bahn.de": "bahn_de",
- "img-bahn.de": "bahn_de",
- "baidu.com": "baidu_ads",
- "baidustatic.com": "baidu_ads",
- "bdimg.com": "baidu_static",
- "bdstatic.com": "baidu_static",
- "baletingo.com": "baletingo.com",
- "bangdom.com": "bangdom.com",
- "widgets.bankrate.com": "bankrate",
- "bannerconnect.net": "banner_connect",
- "bannerflow.com": "bannerflow.com",
- "bannerplay.com": "bannerplay",
- "cdn.bannersnack.com": "bannersnack",
- "dn3y71tq7jf07.cloudfront.net": "barilliance",
- "getbarometer.s3.amazonaws.com": "barometer",
- "basilic.io": "basilic.io",
- "batanga.com": "batanga_network",
- "t4ft.de": "batch_media",
- "bauernative.com": "bauer_media",
- "baur.de": "baur.de",
- "baynote.net": "baynote_observer",
- "bazaarvoice.com": "bazaarvoice",
- "bbci.co.uk": "bbci",
- "tracking.bd4travel.com": "bd4travel",
- "beopinion.com": "be_opinion",
- "bfmio.com": "beachfront",
- "beaconads.com": "beacon_ad_network",
- "beampulse.com": "beampulse.com",
- "beanstalkdata.com": "beanstalk_data",
- "bebi.com": "bebi",
- "beeketing.com": "beeketing.com",
- "beeline.ru": "beeline.ru",
- "bidr.io": "beeswax",
- "tracker.beezup.com": "beezup",
- "begun.ru": "begun",
- "behavioralengine.com": "behavioralengine",
- "belboon.de": "belboon_gmbh",
- "cdn.belco.io": "belco",
- "belstat.be": "belstat",
- "belstat.com": "belstat",
- "belstat.de": "belstat",
- "belstat.fr": "belstat",
- "belstat.nl": "belstat",
- "bemobile.ua": "bemobile.ua",
- "tag.benchplatform.com": "bench_platform",
- "betterttv.net": "betterttv",
- "betweendigital.com": "betweendigital.com",
- "intencysrv.com": "betweendigital.com",
- "bid.run": "bid.run",
- "bidgear.com": "bidgear",
- "bidswitch.net": "bidswitch",
- "exe.bid": "bidswitch",
- "bttrack.com": "bidtellect",
- "bidtheatre.com": "bidtheatre",
- "bidvertiser.com": "bidvertiser",
- "bigmobileads.com": "big_mobile",
- "bigcommerce.com": "bigcommerce.com",
- "bigmir.net": "bigmir.net",
- "bigpoint-payment.com": "bigpoint",
- "bigpoint.com": "bigpoint",
- "bigpoint.net": "bigpoint",
- "bpcdn.net": "bigpoint",
- "bpsecure.com": "bigpoint",
- "bildstatic.de": "bild",
- "ad-cdn.bilgin.pro": "bilgin_pro",
- "pixel.bilinmedia.net": "bilin",
- "bat.r.msn.com": "bing_ads",
- "bing.com": "bing_ads",
- "bing.net": "bing_ads",
- "virtualearth.net": "bing_maps",
- "binge.com.au": "binge",
- "view.binlayer.com": "binlayer",
- "widgets.binotel.com": "binotel",
- "esendra.fi": "bisnode",
- "bitcoinplus.com": "bitcoin_miner",
- "bit.ly": "bitly",
- "bitrix.de": "bitrix",
- "bitrix.info": "bitrix",
- "bitrix.ru": "bitrix",
- "bitrix24.com": "bitrix",
- "bitrix24.com.br": "bitrix",
- "bitwarden.com": "bitwarden",
- "traffic.adxprts.com": "bizcn",
- "jssr.jd.com": "blackdragon",
- "blau.de": "blau.de",
- "bnmla.com": "blink_new_media",
- "blismedia.com": "blis",
- "blogad.com.tw": "blogad",
- "blogbang.com": "blogbang",
- "www.blogcatalog.com": "blogcatalog",
- "track.blogcounter.de": "blogcounter",
- "blogfoster.com": "blogfoster.com",
- "bloggerads.net": "bloggerads",
- "blogher.com": "blogher",
- "blogherads.com": "blogher",
- "blogimg.jp": "blogimg.jp",
- "blogsmithmedia.com": "blogsmithmedia.com",
- "blogblog.com": "blogspot_com",
- "blogger.com": "blogspot_com",
- "blogspot.com": "blogspot_com",
- "brcdn.com": "bloomreach",
- "brsrvr.com": "bloomreach",
- "brtstats.com": "bloomreach",
- "offerpoint.net": "blue_cherry_group",
- "blueserving.com": "blue_seed",
- "blueconic.net": "blueconic.net",
- "bluecore.com": "bluecore",
- "triggeredmail.appspot.com": "bluecore",
- "bkrtx.com": "bluekai",
- "bluekai.com": "bluekai",
- "adrevolver.com": "bluelithium",
- "bluelithium.com": "bluelithium",
- "bmmetrix.com": "bluemetrix",
- "japanmetrix.jp": "bluemetrix",
- "bluenewsupdate.info": "bluenewsupdate.info",
- "bluestreak.com": "bluestreak",
- "bluetriangletech.com": "bluetriangle",
- "btttag.com": "bluetriangle",
- "bodelen.com": "bodelen.com",
- "tracking.bol.com": "bol_affiliate_program",
- "qb.boldapps.net": "bold",
- "secure.apps.shappify.com": "bold",
- "boldchat.com": "boldchat",
- "boltdns.net": "boltdns.net",
- "bom.gov.au": "bom",
- "ml314.com": "bombora",
- "bongacams.com": "bongacams.com",
- "bonial.com": "bonial",
- "bonialconnect.com": "bonial",
- "bonialserviceswidget.de": "bonial",
- "boo-box.com": "boo-box",
- "booking.com": "booking.com",
- "bstatic.com": "booking.com",
- "boostbox.com.br": "boost_box",
- "boostervideo.ru": "booster_video",
- "bootstrapcdn.com": "bootstrap",
- "borrango.com": "borrango.com",
- "scan.botscanner.com": "botscanner",
- "boudja.com": "boudja.com",
- "bounceexchange.com": "bounce_exchange",
- "bouncex.com": "bouncex",
- "bouncex.net": "bouncex",
- "j.clickdensity.com": "box_uk",
- "boxever.com": "boxever",
- "brainient.com": "brainient",
- "brainsins.com": "brainsins",
- "d2xkqxdy6ewr93.cloudfront.net": "brainsins",
- "mobileapptracking.com": "branch",
- "app.link": "branch_metrics",
- "branch.io": "branch_metrics",
- "brandaffinity.net": "brand_affinity",
- "go.cpmadvisors.com": "brand_networks",
- "optorb.com": "brand_networks",
- "brandmetrics.com": "brandmetrics.com",
- "brandreachsys.com": "brandreach",
- "rtbidder.net": "brandscreen",
- "brandwire.tv": "brandwire.tv",
- "branica.com": "branica",
- "appboycdn.com": "braze",
- "braze.com": "braze",
- "brealtime.com": "brealtime",
- "bridgetrack.com": "bridgetrack",
- "brightcove.com": "brightcove",
- "brightcove.net": "brightcove_player",
- "analytics.brightedge.com": "brightedge",
- "munchkin.brightfunnel.com": "brightfunnel",
- "brightonclick.com": "brightonclick.com",
- "btrll.com": "brightroll",
- "p.brilig.com": "brilig",
- "brillen.de": "brillen.de",
- "broadstreetads.com": "broadstreet",
- "bm23.com": "bronto",
- "brow.si": "brow.si",
- "browser-statistik.de": "browser-statistik",
- "browser-update.org": "browser_update",
- "btncdn.com": "btncdn.com",
- "in.bubblestat.com": "bubblestat",
- "brighteroption.com": "buddy_media",
- "bufferapp.com": "buffer_button",
- "bugherd.com": "bugherd.com",
- "bugsnag.com": "bugsnag",
- "d2wy8f7a9ursnm.cloudfront.net": "bugsnag",
- "bulkhentai.com": "bulkhentai.com",
- "bumlam.com": "bumlam.com",
- "bunchbox.co": "bunchbox",
- "bf-ad.net": "burda",
- "bf-tools.net": "burda",
- "bstatic.de": "burda_digital_systems",
- "burstbeacon.com": "burst_media",
- "burstnet.com": "burst_media",
- "burt.io": "burt",
- "d3q6px0y2suh5n.cloudfront.net": "burt",
- "rich-agent.s3.amazonaws.com": "burt",
- "richmetrics.com": "burt",
- "stats.businessol.com": "businessonline_analytics",
- "bttn.io": "button",
- "buysellads.com": "buysellads",
- "servedby-buysellads.com": "buysellads",
- "buzzadexchange.com": "buzzadexchange.com",
- "buzzador.com": "buzzador",
- "buzzfed.com": "buzzfeed",
- "bwbx.io": "bwbx.io",
- "bypass.jp": "bypass",
- "c1exchange.com": "c1_exchange",
- "c3metrics.com": "c3_metrics",
- "c3tag.com": "c3_metrics",
- "c8.net.ua": "c8_network",
- "cackle.me": "cackle.me",
- "d1cerpgff739r9.cloudfront.net": "cadreon",
- "d1qpxk1wfeh8v1.cloudfront.net": "cadreon",
- "callpage.io": "call_page",
- "callbackhunter.com": "callbackhunter",
- "callmeasurement.com": "callbox",
- "callibri.ru": "callibri",
- "callrail.com": "callrail",
- "calltracking.ru": "calltracking",
- "caltat.com": "caltat.com",
- "cam-content.com": "cam-content.com",
- "camakaroda.com": "camakaroda.com",
- "s.edkay.com": "campus_explorer",
- "canddi.com": "canddi",
- "canonical.com": "canonical",
- "canvas.net": "canvas",
- "canvasnetwork.com": "canvas",
- "du11hjcvx0uqb.cloudfront.net": "canvas",
- "kdata.fr": "capitaldata",
- "captora.com": "captora",
- "edge.capturemedia.network": "capture_media",
- "cdn.capturly.com": "capturly",
- "route.carambo.la": "carambola",
- "carbonads.com": "carbonads",
- "carbonads.net": "carbonads",
- "fusionads.net": "carbonads",
- "cardinalcommerce.com": "cardinal",
- "cardlytics.com": "cardlytics",
- "cdn.carrotquest.io": "carrot_quest",
- "api.cartstack.com": "cartstack",
- "caspion.com": "caspion",
- "t.castle.io": "castle",
- "3gl.net": "catchpoint",
- "cbox.ws": "cbox",
- "adlog.com.com": "cbs_interactive",
- "cbsinteractive.com": "cbs_interactive",
- "dw.com.com": "cbs_interactive",
- "ccmbg.com": "ccm_benchmark",
- "admission.net": "cdk_digital_marketing",
- "cdn-net.com": "cdn-net.com",
- "cdn13.com": "cdn13.com",
- "cdn77.com": "cdn77",
- "cdn77.org": "cdn77",
- "cdnetworks.com": "cdnetworks.net",
- "cdnetworks.net": "cdnetworks.net",
- "cdnnetwok.xyz": "cdnnetwok_xyz",
- "cdnondemand.org": "cdnondemand.org",
- "cdnsure.com": "cdnsure.com",
- "cdnvideo.com": "cdnvideo.com",
- "cdnwidget.com": "cdnwidget.com",
- "cedexis-radar.net": "cedexis_radar",
- "cedexis-test.com": "cedexis_radar",
- "cedexis.com": "cedexis_radar",
- "cedexis.fastlylb.net": "cedexis_radar",
- "cedexis.net": "cedexis_radar",
- "celebrus.com": "celebrus",
- "celtra.com": "celtra",
- "cendyn.adtrack.calls.net": "cendyn",
- "centraltag.com": "centraltag",
- "brand-server.com": "centro",
- "speed-trap.nl": "cerberus_speed-trap",
- "link.ixs1.net": "certainsource",
- "hits.e.cl": "certifica_metric",
- "certona.net": "certona",
- "res-x.com": "certona",
- "gsn.chameleon.ad": "chameleon",
- "chango.ca": "chango",
- "chango.com": "chango",
- "channelintelligence.com": "channel_intelligence",
- "cptrack.de": "channel_pilot_solutions",
- "channeladvisor.com": "channeladvisor",
- "searchmarketing.com": "channeladvisor",
- "channelfinder.net": "channelfinder",
- "chaordicsystems.com": "chaordic",
- "chartbeat.com": "chartbeat",
- "chartbeat.net": "chartbeat",
- "chartboost.com": "chartboost",
- "chaser.ru": "chaser",
- "cloud.chatbeacon.io": "chat_beacon",
- "chatango.com": "chatango",
- "call.chatra.io": "chatra",
- "chaturbate.com": "chaturbate.com",
- "chatwing.com": "chatwing",
- "checkmystats.com.au": "checkmystats",
- "chefkoch-cdn.de": "chefkoch_de",
- "chefkoch.de": "chefkoch_de",
- "tracker.chinmedia.vn": "chin_media",
- "chinesean.com": "chinesean",
- "chitika.net": "chitika",
- "choicestream.com": "choicestream",
- "api.getchute.com": "chute",
- "media.chute.io": "chute",
- "iqcontentplatform.de": "circit",
- "data.circulate.com": "circulate",
- "p.cityspark.com": "city_spark",
- "cityads.ru": "cityads",
- "gameleads.ru": "cityads",
- "ciuvo.com": "ciuvo.com",
- "widget.civey.com": "civey_widgets",
- "civicscience.com": "civicscience.com",
- "ciweb.ciwebgroup.com": "ciwebgroup",
- "clcknads.pro": "clcknads.pro",
- "pulseradius.com": "clear_pier",
- "clearbit.com": "clearbit.com",
- "clearsale.com.br": "clearsale",
- "tag.clrstm.com": "clearstream.tv",
- "api.clerk.io": "clerk.io",
- "cleverpush.com": "clever_push",
- "wzrkt.com": "clever_tap",
- "cleversite.ru": "cleversite",
- "script.click360.io": "click360",
- "clickandchat.com": "click_and_chat",
- "software.clickback.com": "click_back",
- "hit.clickaider.com": "clickaider",
- "clickaine.com": "clickaine",
- "clickbank.net": "clickbank",
- "cbproads.com": "clickbank_proads",
- "adtoll.com": "clickbooth",
- "clickbooth.com": "clickbooth",
- "clickboothlnk.com": "clickbooth",
- "clickcease.com": "clickcease",
- "clickcertain.com": "clickcertain",
- "remarketstats.com": "clickcertain",
- "clickdesk.com": "clickdesk",
- "analytics.clickdimensions.com": "clickdimensions",
- "clickequations.net": "clickequations",
- "clickexperts.net": "clickexperts",
- "doublemax.net": "clickforce",
- "clickinc.com": "clickinc",
- "clickintext.net": "clickintext",
- "clickky.biz": "clickky",
- "9nl.be": "clickmeter",
- "9nl.com": "clickmeter",
- "9nl.eu": "clickmeter",
- "9nl.it": "clickmeter",
- "9nl.me": "clickmeter",
- "clickmeter.com": "clickmeter",
- "clickonometrics.pl": "clickonometrics",
- "clickpoint.com": "clickpoint",
- "clickpoint.it": "clickpoint",
- "clickprotector.com": "clickprotector",
- "clickreport.com": "clickreport",
- "doogleonduty.com": "clickreport",
- "ctn.go2cloud.org": "clicks_thru_networks",
- "clicksor.com": "clicksor",
- "hatid.com": "clicksor",
- "lzjl.com": "clicksor",
- "myroitracking.com": "clicksor",
- "clicktale.com": "clicktale",
- "clicktale.net": "clicktale",
- "clicktale.pantherssl.com": "clicktale",
- "clicktalecdn.sslcs.cdngc.net": "clicktale",
- "clicktripz.com": "clicktripz",
- "clickwinks.com": "clickwinks",
- "getclicky.com": "clicky",
- "staticstuff.net": "clicky",
- "clickyab.com": "clickyab",
- "clicmanager.fr": "clicmanager",
- "eplayer.clipsyndicate.com": "clip_syndicate",
- "www.is1.clixgalore.com": "clixgalore",
- "clixmetrix.com": "clixmetrix",
- "clixsense.com": "clixsense",
- "cloud-media.fr": "cloud-media.fr",
- "cloudflare.com": "cloudflare",
- "cloudflare.net": "cloudflare",
- "cloudflare-dm-cmpimg.com": "cloudflare",
- "cloudflare-dns.com": "cloudflare",
- "cloudflare-ipfs.com": "cloudflare",
- "cloudflare-quic.com": "cloudflare",
- "cloudflare-terms-of-service-abuse.com": "cloudflare",
- "cloudflare.tv": "cloudflare",
- "cloudflareaccess.com": "cloudflare",
- "cloudflareclient.com": "cloudflare",
- "cloudflareinsights.com": "cloudflare",
- "cloudflareok.com": "cloudflare",
- "cloudflareportal.com": "cloudflare",
- "cloudflareresolve.com": "cloudflare",
- "cloudflaressl.com": "cloudflare",
- "cloudflarestatus.com": "cloudflare",
- "cloudflarestream.com": "cloudflare",
- "pacloudflare.com": "cloudflare",
- "sn-cloudflare.com": "cloudflare",
- "videodelivery.net": "cloudflare",
- "cloudimg.io": "cloudimage.io",
- "cloudinary.com": "cloudinary",
- "clovenetwork.com": "clove_network",
- "clustrmaps.com": "clustrmaps",
- "cnbc.com": "cnbc",
- "cnetcontent.com": "cnetcontent.com",
- "cnstats.ru": "cnstats",
- "cnzz.com": "cnzz.com",
- "umeng.com": "cnzz.com",
- "acc-hd.de": "coadvertise",
- "client.cobrowser.net": "cobrowser",
- "codeonclick.com": "codeonclick.com",
- "cogocast.net": "cogocast",
- "coin-have.com": "coin_have",
- "appsha1.cointraffic.io": "coin_traffic",
- "authedmine.com": "coinhive",
- "coin-hive.com": "coinhive",
- "coinhive.com": "coinhive",
- "coinurl.com": "coinurl",
- "coll1onf.com": "coll1onf.com",
- "coll2onf.com": "coll2onf.com",
- "service.collarity.com": "collarity",
- "static.clmbtech.com": "columbia_online",
- "combotag.com": "combotag",
- "pdk.theplatform.com": "comcast_technology_solutions",
- "theplatform.com": "comcast_technology_solutions",
- "comm100.cn": "comm100",
- "comm100.com": "comm100",
- "cdn-cs.com": "commerce_sciences",
- "cdn.mercent.com": "commercehub",
- "link.mercent.com": "commercehub",
- "commercialvalue.org": "commercialvalue.org",
- "afcyhf.com": "commission_junction",
- "anrdoezrs.net": "commission_junction",
- "apmebf.com": "commission_junction",
- "awltovhc.com": "commission_junction",
- "emjcd.com": "commission_junction",
- "ftjcfx.com": "commission_junction",
- "lduhtrp.net": "commission_junction",
- "qksz.net": "commission_junction",
- "tkqlhce.com": "commission_junction",
- "tqlkg.com": "commission_junction",
- "yceml.net": "commission_junction",
- "communicatorcorp.com": "communicator_corp",
- "wowanalytics.co.uk": "communigator",
- "c-col.com": "competexl",
- "c.compete.com": "competexl",
- "complex.com": "complex_media_network",
- "complexmedianetwork.com": "complex_media_network",
- "comprigo.com": "comprigo",
- "comscore.com": "comscore",
- "zqtk.net": "comscore",
- "conative.de": "conative.de",
- "condenast.com": "condenastdigital.com",
- "conduit-banners.com": "conduit",
- "conduit-data.com": "conduit",
- "conduit.com": "conduit",
- "confirmit.com": "confirmit",
- "congstar.de": "congstar.de",
- "connatix.com": "connatix.com",
- "connected-by.connectad.io": "connectad",
- "cdn.connecto.io": "connecto",
- "connexity.net": "connexity",
- "cxt.ms": "connexity",
- "connextra.com": "connextra",
- "rs6.net": "constant_contact",
- "serverbid.com": "consumable",
- "contactatonce.com": "contact_at_once",
- "adrolays.de": "contact_impact",
- "c-i.as": "contact_impact",
- "df-srv.de": "contact_impact",
- "d1uwd25yvxu96k.cloudfront.net": "contactme",
- "static.contactme.com": "contactme",
- "contaxe.com": "contaxe",
- "content.ad": "content.ad",
- "ingestion.contentinsights.com": "content_insights",
- "contentexchange.me": "contentexchange.me",
- "ctfassets.net": "contentful_gmbh",
- "contentpass.de": "contentpass",
- "contentpass.net": "contentpass",
- "contentsquare.net": "contentsquare.net",
- "d1aug3dv5magti.cloudfront.net": "contentwrx",
- "d39se0h2uvfakd.cloudfront.net": "contentwrx",
- "c-on-text.com": "context",
- "intext.contextad.pl": "context.ad",
- "continum.net": "continum_net",
- "s2.contribusourcesyndication.com": "contribusource",
- "hits.convergetrack.com": "convergetrack",
- "fastclick.net": "conversant",
- "mediaplex.com": "conversant",
- "mplxtms.com": "conversant",
- "cm-commerce.com": "conversio",
- "media.conversio.com": "conversio",
- "c.conversionlogic.net": "conversion_logic",
- "conversionruler.com": "conversionruler",
- "conversionsbox.com": "conversions_box",
- "conversionsondemand.com": "conversions_on_demand",
- "ant.conversive.nl": "conversive",
- "convertexperiments.com": "convert",
- "d3sjgucddk68ji.cloudfront.net": "convertfox",
- "convertro.com": "convertro",
- "d1ivexoxmp59q7.cloudfront.net": "convertro",
- "conviva.com": "conviva",
- "cookieconsent.silktide.com": "cookie_consent",
- "cookie-script.com": "cookie_script",
- "cookiebot.com": "cookiebot",
- "cookieq.com": "cookieq",
- "lite.piclens.com": "cooliris",
- "copacet.com": "copacet",
- "raasnet.com": "coreaudience",
- "coremotives.com": "coremotives",
- "coull.com": "coull",
- "cpmrocket.com": "cpm_rocket",
- "cpmprofit.com": "cpmprofit",
- "cpmstar.com": "cpmstar",
- "captifymedia.com": "cpx.to",
- "cpx.to": "cpx.to",
- "cqcounter.com": "cq_counter",
- "cqq5id8n.com": "cqq5id8n.com",
- "cquotient.com": "cquotient.com",
- "craftkeys.com": "craftkeys",
- "ads.crakmedia.com": "crakmedia_network",
- "craktraffic.com": "crakmedia_network",
- "crankyads.com": "crankyads",
- "crashlytics.com": "crashlytics",
- "cetrk.com": "crazy_egg",
- "crazyegg.com": "crazy_egg",
- "dnn506yrbagrg.cloudfront.net": "crazy_egg",
- "creafi-online-media.com": "creafi",
- "createjs.com": "createjs",
- "creativecommons.org": "creative_commons",
- "brandwatch.com": "crimsonhexagon_com",
- "crimsonhexagon.com": "crimsonhexagon_com",
- "hexagon-analytics.com": "crimsonhexagon_com",
- "ctnsnet.com": "crimtan",
- "crisp.chat": "crisp",
- "crisp.im": "crisp",
- "criteo.com": "criteo",
- "criteo.net": "criteo",
- "p.crm4d.com": "crm4d",
- "crossengage.io": "crossengage",
- "crosspixel.net": "crosspixel",
- "crsspxl.com": "crosspixel",
- "crosssell.info": "crosssell.info",
- "crossss.com": "crossss",
- "widget.crowdignite.com": "crowd_ignite",
- "static.crowdscience.com": "crowd_science",
- "ss.crowdprocess.com": "crowdprocess",
- "our.glossip.nl": "crowdynews",
- "widget.breakingburner.com": "crowdynews",
- "widget.crowdynews.com": "crowdynews",
- "searchg2.crownpeak.net": "crownpeak",
- "snippet.omm.crownpeak.com": "crownpeak",
- "cryptoloot.pro": "cryptoloot_miner",
- "ctnetwork.hu": "ctnetwork",
- "adzhub.com": "ctrlshift",
- "data.withcubed.com": "cubed",
- "cuelinks.com": "cuelinks",
- "cdn.cupinteractive.com": "cup_interactive",
- "curse.com": "curse.com",
- "cursecdn.com": "cursecdn.com",
- "assets.customer.io": "customer.io",
- "widget.customerly.io": "customerly",
- "cxense.com": "cxense",
- "cxo.name": "cxo.name",
- "cyberwing.co.jp": "cyber_wing",
- "cybersource.com": "cybersource",
- "cygnus.com": "cygnus",
- "da-ads.com": "da-ads.com",
- "dailymail.co.uk": "dailymail.co.uk",
- "dailymotion.com": "dailymotion",
- "dailymotionbus.com": "dailymotion",
- "dm-event.net": "dailymotion",
- "dmcdn.net": "dailymotion",
- "dmxleo.com": "dailymotion_advertising",
- "ds1.nl": "daisycon",
- "dantrack.net": "dantrack.net",
- "dmclick.cn": "darwin_marketing",
- "tags.dashboardad.net": "dashboard_ad",
- "datacaciques.com": "datacaciques.com",
- "datacoral.com": "datacoral",
- "abandonaid.com": "datacrushers",
- "datacrushers.com": "datacrushers",
- "datadome.co": "datadome",
- "optimahub.com": "datalicious_datacollector",
- "supert.ag": "datalicious_supertag",
- "inextaction.net": "datalogix",
- "nexac.com": "datalogix",
- "datamind.ru": "datamind.ru",
- "datatables.net": "datatables",
- "adunits.datawrkz.com": "datawrkz",
- "dataxpand.script.ag": "dataxpand",
- "tc.dataxpand.com": "dataxpand",
- "w55c.net": "dataxu",
- "datds.net": "datds.net",
- "pro-market.net": "datonics",
- "displaymarketplace.com": "datran",
- "davebestdeals.com": "davebestdeals.com",
- "dawandastatic.com": "dawandastatic.com",
- "dc-storm.com": "dc_stormiq",
- "h4k5.com": "dc_stormiq",
- "stormcontainertag.com": "dc_stormiq",
- "stormiq.com": "dc_stormiq",
- "dcbap.com": "dcbap.com",
- "dcmn.com": "dcmn.com",
- "statslogger.rocket.persgroep.cloud": "de_persgroep",
- "deadlinefunnel.com": "deadline_funnel",
- "cc2.dealer.com": "dealer.com",
- "d9lq0o81skkdj.cloudfront.net": "dealer.com",
- "esm1.net": "dealer.com",
- "static.dealer.com": "dealer.com",
- "decibelinsight.net": "decibel_insight",
- "ads.dedicatedmedia.com": "dedicated_media",
- "api.deep.bi": "deep.bi",
- "deepintent.com": "deepintent.com",
- "defpush.com": "defpush.com",
- "deichmann.com": "deichmann.com",
- "vxml4.delacon.com.au": "delacon",
- "tracking.percentmobile.com": "delivr",
- "adaction.se": "delta_projects",
- "de17a.com": "delta_projects",
- "deluxe.script.ag": "deluxe",
- "delvenetworks.com": "delve_networks",
- "company-target.com": "demandbase",
- "demandbase.com": "demandbase",
- "dmd53.com": "demandmedia",
- "dmtracker.com": "demandmedia",
- "deqwas.net": "deqwas",
- "devatics.com": "devatics",
- "developermedia.com": "developer_media",
- "dapxl.com": "deviantart.net",
- "deviantart.net": "deviantart.net",
- "my.blueadvertise.com": "dex_platform",
- "dgm-au.com": "dgm",
- "s2d6.com": "dgm",
- "d31y97ze264gaa.cloudfront.net": "dialogtech",
- "d3von6il1wr7wo.cloudfront.net": "dianomi",
- "dianomi.com": "dianomi",
- "dianomioffers.co.uk": "dianomi",
- "tag.didit.com": "didit_blizzard",
- "track.did-it.com": "didit_maestro",
- "privacy-center.org": "didomi",
- "digg.com": "digg_widget",
- "digicert.com": "digicert_trust_seal",
- "phicdn.net": "digicert_trust_seal",
- "digidip.net": "digidip",
- "digiglitzmarketing.go2cloud.org": "digiglitz",
- "wtp101.com": "digilant",
- "digioh.com": "digioh",
- "lightboxcdn.com": "digioh",
- "digitalgov.gov": "digital.gov",
- "cookiereports.com": "digital_control_room",
- "adtag.cc": "digital_nomads",
- "adready.com": "digital_remedy",
- "adreadytractions.com": "digital_remedy",
- "cpxinteractive.com": "digital_remedy",
- "directtrack.com": "digital_river",
- "onenetworkdirect.net": "digital_river",
- "track.digitalriver.com": "digital_river",
- "dwin1.com": "digital_window",
- "digiteka.net": "digiteka",
- "ultimedia.com": "digiteka",
- "digitru.st": "digitrust",
- "widget.dihitt.com.br": "dihitt_badge",
- "dimml.io": "dimml",
- "keywordsconnect.com": "direct_keyword_link",
- "directadvert.ru": "directadvert",
- "directrev.com": "directrev",
- "discordapp.com": "discord",
- "disneyplus.com": "disneyplus",
- "bamgrid.com": "disneystreaming",
- "dssedge.com": "disneystreaming",
- "dssott.com": "disneystreaming",
- "d81mfvml8p5ml.cloudfront.net": "display_block",
- "disqus.com": "disqus",
- "disquscdn.com": "disqus",
- "disqusads.com": "disqus_ads",
- "distiltag.com": "distil_tag",
- "districtm.ca": "districtm.io",
- "districtm.io": "districtm.io",
- "jsrdn.com": "distroscale",
- "div.show": "div.show",
- "stats.vertriebsassistent.de": "diva",
- "tag.divvit.com": "divvit",
- "d-msquared.com": "dm2",
- "and.co.uk": "dmg_media",
- "dmm.co.jp": "dmm",
- "ctret.de": "dmwd",
- "toolbar.dockvine.com": "dockvine",
- "awecr.com": "docler",
- "fwbntw.com": "docler",
- "s.dogannet.tv": "dogannet",
- "domain.glass": "domainglass",
- "www.domodomain.com": "domodomain",
- "donation-tools.org": "donationtools",
- "doofinder.com": "doofinder.com",
- "embed.doorbell.io": "doorbell.io",
- "dotandad.com": "dotandmedia",
- "trackedlink.net": "dotmailer",
- "dotmetrics.net": "dotmetrics.net",
- "dotomi.com": "dotomi",
- "dtmc.com": "dotomi",
- "dtmpub.com": "dotomi",
- "double.net": "double.net",
- "2mdn.net": "doubleclick",
- "doublepimp.com": "doublepimp",
- "doublepimpssl.com": "doublepimp",
- "redcourtside.com": "doublepimp",
- "xeontopa.com": "doublepimp",
- "zerezas.com": "doublepimp",
- "doubleverify.com": "doubleverify",
- "wrating.com": "dratio",
- "adsymptotic.com": "drawbridge",
- "dreame.tech": "dreame_tech",
- "dreametech.com": "dreame_tech",
- "dreamlab.pl": "dreamlab.pl",
- "drift.com": "drift",
- "js.driftt.com": "drift",
- "getdrip.com": "drip",
- "dropbox.com": "dropbox.com",
- "dropboxstatic.com": "dropbox.com",
- "z5x.net": "dsnr_media_group",
- "dsp-rambler.ru": "dsp_rambler",
- "m6d.com": "dstillery",
- "media6degrees.com": "dstillery",
- "dtscout.com": "dtscout.com",
- "dd-cdn.multiscreensite.com": "dudamobile",
- "px.multiscreensite.com": "dudamobile",
- "cdn-0.d41.co": "dun_and_bradstreet",
- "cn01.dwstat.cn": "dwstat.cn",
- "dynad.net": "dynad",
- "dyntrk.com": "dynadmic",
- "dyntracker.de": "dynamic_1001_gmbh",
- "media01.eu": "dynamic_1001_gmbh",
- "content.dl-rms.com": "dynamic_logic",
- "dlqm.net": "dynamic_logic",
- "questionmarket.com": "dynamic_logic",
- "dynamicyield.com": "dynamic_yield",
- "beacons.hottraffic.nl": "dynata",
- "dynatrace.com": "dynatrace.com",
- "dyncdn.me": "dyncdn.me",
- "e-planning.net": "e-planning",
- "eadv.it": "eadv",
- "eanalyzer.de": "eanalyzer.de",
- "early-birds.fr": "early_birds",
- "cdn.earnify.com": "earnify",
- "earnify.com": "earnify_tracker",
- "easyads.bg": "easyads",
- "easylist.club": "easylist_club",
- "classistatic.de": "ebay",
- "ebay-us.com": "ebay",
- "ebay.com": "ebay",
- "ebay.de": "ebay",
- "ebayclassifiedsgroup.com": "ebay",
- "ebaycommercenetwork.com": "ebay",
- "ebaydesc.com": "ebay",
- "ebayimg.com": "ebay",
- "ebayrtm.com": "ebay",
- "ebaystatic.com": "ebay",
- "ad.about.co.kr": "ebay_korea",
- "adcheck.about.co.kr": "ebay_korea",
- "adn.ebay.com": "ebay_partner_network",
- "beead.co.uk": "ebuzzing",
- "beead.fr": "ebuzzing",
- "beead.net": "ebuzzing",
- "ebuzzing.com": "ebuzzing",
- "ebz.io": "ebuzzing",
- "echoenabled.com": "echo",
- "eclick.vn": "eclick",
- "econda-monitor.de": "econda",
- "eco-tag.jp": "ecotag",
- "alphacdn.net": "edgio",
- "edg.io": "edgio",
- "edgecast.com": "edgio",
- "edgecastcdn.net": "edgio",
- "edgecastdns.net": "edgio",
- "sigmacdn.net": "edgio",
- "ecustomeropinions.com": "edigitalresearch",
- "effectivemeasure.net": "effective_measure",
- "effiliation.com": "effiliation",
- "egain.net": "egain",
- "cloud-emea.analytics-egain.com": "egain_analytics",
- "ehi-siegel.de": "ehi-siegel_de",
- "ekmpinpoint.com": "ekmpinpoint",
- "ekomi.de": "ekomi",
- "elasticad.net": "elastic_ad",
- "elasticbeanstalk.com": "elastic_beanstalk",
- "cloudcell.com": "electronic_arts",
- "ea.com": "electronic_arts",
- "eamobile.com": "electronic_arts",
- "element.io": "element",
- "riot.im": "element",
- "elicitapp.com": "elicit",
- "eloqua.com": "eloqua",
- "en25.com": "eloqua",
- "eluxer.net": "eluxer_net",
- "tracker.emailaptitude.com": "email_aptitude",
- "tag.email-attitude.com": "email_attitude",
- "app.emarketeer.com": "emarketeer",
- "embed.ly": "embed.ly",
- "embedly.com": "embed.ly",
- "emediate.dk": "emediate",
- "emediate.eu": "emediate",
- "emediate.se": "emediate",
- "emetriq.de": "emetriq",
- "e2ma.net": "emma",
- "adinsight.co.kr": "emnet",
- "colbenson.es": "empathy",
- "emsmobile.de": "emsmobile.de",
- "sitecompass.com": "encore_metrics",
- "enectoanalytics.com": "enecto_analytics",
- "trk.enecto.com": "enecto_analytics",
- "track.engagesciences.com": "engage_sciences",
- "widget.engageya.com": "engageya_widget",
- "engagio.com": "engagio",
- "engineseeker.com": "engineseeker",
- "enquisite.com": "enquisite",
- "adtlgc.com": "enreach",
- "ats.tumri.net": "ensemble",
- "ensighten.com": "ensighten",
- "envolve.com": "envolve",
- "cdn.callbackkiller.com": "envybox",
- "email-reflex.com": "eperflex",
- "epicgameads.com": "epic_game_ads",
- "trafficmp.com": "epic_marketplace",
- "adshost1.com": "epom",
- "adshost2.com": "epom",
- "epom.com": "epom",
- "epoq.de": "epoq",
- "banzaiadv.it": "eprice",
- "eproof.com": "eproof",
- "equitystory.com": "eqs_group",
- "eqads.com": "eqworks",
- "ero-advertising.com": "eroadvertising",
- "eroadvertising.com": "eroadvertising",
- "d15qhc0lu1ghnk.cloudfront.net": "errorception",
- "errorception.com": "errorception",
- "eshopcomp.com": "eshopcomp.com",
- "espncdn.com": "espn_cdn",
- "esprit.de": "esprit.de",
- "cybermonitor.com": "estat",
- "estat.com": "estat",
- "teste-s3-maycon.s3.amazonaws.com": "etag",
- "etahub.com": "etahub.com",
- "etargetnet.com": "etarget",
- "ethn.io": "ethnio",
- "pages.etology.com": "etology",
- "sa.etp-prod.com": "etp",
- "etracker.com": "etracker",
- "etracker.de": "etracker",
- "sedotracker.com": "etracker",
- "etrigue.com": "etrigue",
- "etsystatic.com": "etsystatic",
- "eulerian.net": "eulerian",
- "eultech.fnac.com": "eulerian",
- "ew3.io": "eulerian",
- "euroads.dk": "euroads",
- "euroads.fi": "euroads",
- "euroads.no": "euroads",
- "newpromo.europacash.com": "europecash",
- "tracker.euroweb.net": "euroweb_counter",
- "apptegic.com": "evergage.com",
- "evergage.com": "evergage.com",
- "listener.everstring.com": "everstring",
- "waterfrontmedia.com": "everyday_health",
- "betrad.com": "evidon",
- "evidon.com": "evidon",
- "evisitanalyst.com": "evisit_analyst",
- "evisitcs.com": "evisit_analyst",
- "websiteperform.com": "evisit_analyst",
- "ads.exactdrive.com": "exact_drive",
- "exactag.com": "exactag",
- "exelator.com": "exelate",
- "dynamicoxygen.com": "exitjunction",
- "exitjunction.com": "exitjunction",
- "exdynsrv.com": "exoclick",
- "exoclick.com": "exoclick",
- "exosrv.com": "exoclick",
- "exoticads.com": "exoticads.com",
- "expedia.com": "expedia",
- "trvl-px.com": "expedia",
- "eccmp.com": "experian",
- "audienceiq.com": "experian_marketing_services",
- "techlightenment.com": "experian_marketing_services",
- "expo-max.com": "expo-max",
- "server.exposebox.com": "expose_box",
- "sf.exposebox.com": "expose_box_widgets",
- "express.co.uk": "express.co.uk",
- "d1lp05q4sghme9.cloudfront.net": "expressvpn",
- "extreme-dm.com": "extreme_tracker",
- "eyenewton.ru": "eye_newton",
- "eyeota.net": "eyeota",
- "eyereturn.com": "eyereturnmarketing",
- "eyeviewads.com": "eyeview",
- "ezakus.net": "ezakus",
- "f11-ads.com": "f11-ads.com",
- "facebook.com": "facebook",
- "facebook.net": "facebook",
- "graph.facebook.com": "facebook_audience",
- "fbcdn.net": "facebook_cdn",
- "fbsbx.com": "facebook_cdn",
- "facetz.net": "facetz.dca",
- "adsfac.eu": "facilitate_digital",
- "adsfac.net": "facilitate_digital",
- "adsfac.sg": "facilitate_digital",
- "adsfac.us": "facilitate_digital",
- "faktor.io": "faktor.io",
- "thefancy.com": "fancy_widget",
- "d1q7pknmpq2wkm.cloudfront.net": "fanplayr",
- "fap.to": "fap.to",
- "farlightgames.com": "farlight_pte_ltd",
- "fastly-insights.com": "fastly_insights",
- "fastly.net": "fastlylb.net",
- "fastlylb.net": "fastlylb.net",
- "fastly-edge.com": "fastlylb.net",
- "fastly-masque.net": "fastlylb.net",
- "fastpic.ru": "fastpic.ru",
- "fmpub.net": "federated_media",
- "fby.s3.amazonaws.com": "feedbackify",
- "feedbackify.com": "feedbackify",
- "feedburner.com": "feedburner.com",
- "feedify.de": "feedify",
- "feedjit.com": "feedjit",
- "log.feedjit.com": "feedjit",
- "tracking.feedperfect.com": "feedperfect",
- "feedsportal.com": "feedsportal",
- "feefo.com": "feefo",
- "fidelity-media.com": "fidelity_media",
- "fiksu.com": "fiksu",
- "filamentapp.s3.amazonaws.com": "filament.io",
- "fileserve.xyz": "fileserve",
- "tools.financeads.net": "financeads",
- "tracker.financialcontent.com": "financial_content",
- "findizer.fr": "findizer.fr",
- "findologic.com": "findologic.com",
- "app-measurement.com": "firebase",
- "fcm.googleapis.com": "firebase",
- "firebase.com": "firebase",
- "firebase.google.com": "firebase",
- "firebase.googleapis.com": "firebase",
- "firebaseapp.com": "firebase",
- "firebaseappcheck.googleapis.com": "firebase",
- "firebasedynamiclinks-ipv4.googleapis.com": "firebase",
- "firebasedynamiclinks-ipv6.googleapis.com": "firebase",
- "firebasedynamiclinks.googleapis.com": "firebase",
- "firebaseinappmessaging.googleapis.com": "firebase",
- "firebaseinstallations.googleapis.com": "firebase",
- "firebaselogging-pa.googleapis.com": "firebase",
- "firebaselogging.googleapis.com": "firebase",
- "firebaseperusertopics-pa.googleapis.com": "firebase",
- "firebaseremoteconfig.googleapis.com": "firebase",
- "firebaseio.com": "firebaseio.com",
- "firstimpression.io": "first_impression",
- "fitanalytics.com": "fit_analytics",
- "fivetran.com": "fivetran",
- "flagads.net": "flag_ads",
- "flagcounter.com": "flag_counter",
- "flashnews.com.au": "flash",
- "flashtalking.com": "flashtalking",
- "flattr.com": "flattr_button",
- "flexlinks.com": "flexoffers",
- "linkoffers.net": "flexoffers",
- "flickr.com": "flickr_badge",
- "staticflickr.com": "flickr_badge",
- "lflipboard.com": "flipboard",
- "flipboard.com": "flipboard",
- "flite.com": "flite",
- "flixcdn.com": "flixcdn.com",
- "flix360.com": "flixmedia",
- "flixcar.com": "flixmedia",
- "flocktory.com": "flocktory.com",
- "flowplayer.org": "flowplayer",
- "adingo.jp": "fluct",
- "clicken.us": "fluent",
- "strcst.net": "fluid",
- "fluidads.co": "fluidads",
- "fluidsurveys.com": "fluidsurveys",
- "cdn.flurry.com": "flurry",
- "data.flurry.com": "flurry",
- "flurry.com": "flurry",
- "flx1.com": "flxone",
- "flxpxl.com": "flxone",
- "api.flyertown.ca": "flyertown",
- "adservinghost.com": "fmadserving",
- "adservinginternational.com": "fmadserving",
- "special.matchtv.ru": "fonbet",
- "kavijaseuranta.fi": "fonecta",
- "fontawesome.com": "fontawesome_com",
- "foodieblogroll.com": "foodie_blogroll",
- "footprintlive.com": "footprint",
- "footprintdns.com": "footprintdns.com",
- "forcetrac.com": "forcetrac",
- "fqsecure.com": "forensiq",
- "fqtag.com": "forensiq",
- "securepaths.com": "forensiq",
- "4seeresults.com": "foresee",
- "foresee.com": "foresee",
- "cdn-static.formisimo.com": "formisimo",
- "forter.com": "forter",
- "fortlachanhecksof.info": "fortlachanhecksof.info",
- "platform.foursquare.com": "foursquare_widget",
- "fout.jp": "fout.jp",
- "fimserve.com": "fox_audience_network",
- "foxsports.com.au": "fox_sports",
- "fncstatic.com": "foxnews_static",
- "cdn.foxpush.net": "foxpush",
- "foxpush.com": "foxpush",
- "foxtel.com.au": "foxtel",
- "foxtelgroupcdn.net.au": "foxtel",
- "foxydeal.com": "foxydeal_com",
- "yabidos.com": "fraudlogix",
- "besucherstatistiken.com": "free_counter",
- "compteurdevisite.com": "free_counter",
- "contadorvisitasgratis.com": "free_counter",
- "contatoreaccessi.com": "free_counter",
- "freecounterstat.com": "free_counter",
- "statcounterfree.com": "free_counter",
- "webcontadores.com": "free_counter",
- "fastonlineusers.com": "free_online_users",
- "fastwebcounter.com": "free_online_users",
- "freeonlineusers.com": "free_online_users",
- "atoomic.com": "free_pagerank",
- "free-pagerank.com": "free_pagerank",
- "freedom.com": "freedom_mortgage",
- "freegeoip.net": "freegeoip_net",
- "freenet.de": "freenet_de",
- "freent.de": "freenet_de",
- "freeview.com": "freeview",
- "freeview.com.au": "freeview",
- "freeviewaustralia.tv": "freeview",
- "fwmrm.net": "freewheel",
- "heimdall.fresh8.co": "fresh8",
- "d36mpcpuzc4ztk.cloudfront.net": "freshdesk",
- "freshdesk.com": "freshdesk",
- "freshplum.com": "freshplum",
- "friendbuy.com": "friendbuy",
- "friendfeed.com": "friendfeed",
- "adultfriendfinder.com": "friendfinder_network",
- "amigos.com": "friendfinder_network",
- "board-books.com": "friendfinder_network",
- "cams.com": "friendfinder_network",
- "facebookofsex.com": "friendfinder_network",
- "getiton.com": "friendfinder_network",
- "nostringsattached.com": "friendfinder_network",
- "pop6.com": "friendfinder_network",
- "streamray.com": "friendfinder_network",
- "inpref.com": "frosmo_optimizer",
- "inpref.s3-external-3.amazonaws.com": "frosmo_optimizer",
- "inpref.s3.amazonaws.com": "frosmo_optimizer",
- "adflan.com": "fruitflan",
- "fruitflan.com": "fruitflan",
- "fstrk.net": "fstrk.net",
- "cookie.fuel451.com": "fuelx",
- "fullstory.com": "fullstory",
- "track.funnelytics.io": "funnelytics",
- "angsrvr.com": "fyber",
- "fyber.com": "fyber",
- "game-advertising-online.com": "game_advertising_online",
- "gameanalytics.com": "gameanalytics",
- "gamedistribution.com": "gamedistribution.com",
- "gamerdna.com": "gamerdna",
- "gannett-cdn.com": "gannett",
- "gaug.es": "gaug.es",
- "gpm-digital.com": "gazprom-media_digital",
- "js.gb-world.net": "gb-world",
- "gdeslon.ru": "gdeslon",
- "gdmdigital.com": "gdm_digital",
- "gntm.geeen.co.jp": "geeen",
- "lpomax.net": "geeen",
- "gemius.pl": "gemius",
- "generaltracking.de": "generaltracking_de",
- "genesismedia.com": "genesis",
- "gssprt.jp": "geniee",
- "rsvpgenius.com": "genius",
- "genoo.com": "genoo",
- "js.geoads.com": "geoads",
- "geolify.com": "geolify",
- "geoplugin.net": "geoplugin",
- "geotrust.com": "geotrust",
- "geovisite.com": "geovisite",
- "gestionpub.com": "gestionpub",
- "app.getresponse.com": "get_response",
- "getsitecontrol.com": "get_site_control",
- "getconversion.net": "getconversion",
- "widgets.getglue.com": "getglue",
- "adhigh.net": "getintent",
- "static.getkudos.me": "getkudos",
- "yottos.com": "getmyad",
- "gsfn.us": "getsatisfaction",
- "gettyimages.com": "gettyimages",
- "sensic.net": "gfk",
- "gfycat.com": "gfycat.com",
- "a.giantrealm.com": "giant_realm",
- "videostat.com": "giantmedia",
- "gigaonclick.com": "giga",
- "analytics.gigyahosting1.com": "gigya",
- "gigcount.com": "gigya",
- "gigya.com": "gigya",
- "service.giosg.com": "giosg",
- "giphy.com": "giphy.com",
- "giraff.io": "giraff.io",
- "github.com": "github",
- "githubassets.com": "github",
- "githubusercontent.com": "github",
- "ghcr.io": "github",
- "github.blog": "github",
- "github.dev": "github",
- "octocaptcha.com": "github",
- "githubapp.com": "github_apps",
- "github.io": "github_pages",
- "aff3.gittigidiyor.com": "gittigidiyor_affiliate_program",
- "gittip.com": "gittip",
- "sitest.jp": "glad_cube",
- "glganltcs.space": "glganltcs.space",
- "globalwebindex.net": "global_web_index",
- "globalnotifier.com": "globalnotifier.com",
- "globalsign.com": "globalsign",
- "ad.globaltakeoff.net": "globaltakeoff",
- "glomex.cloud": "glomex.com",
- "glomex.com": "glomex.com",
- "glotgrx.com": "glotgrx.com",
- "a.gmdelivery.com": "gm_delivery",
- "gmail.com": "gmail",
- "ad.atown.jp": "gmo",
- "gmx.net": "gmx_net",
- "gmxpro.net": "gmx_net",
- "go.com": "go.com",
- "affiliate.godaddy.com": "godaddy_affiliate_program",
- "trafficfacts.com": "godaddy_site_analytics",
- "seal.godaddy.com": "godaddy_site_seal",
- "tracking.godatafeed.com": "godatafeed",
- "counter.goingup.com": "goingup",
- "axf8.net": "gomez",
- "goodadvert.ru": "goodadvert",
- "google.at": "google",
- "google.be": "google",
- "google.ca": "google",
- "google.ch": "google",
- "google.co.id": "google",
- "google.co.in": "google",
- "google.co.jp": "google",
- "google.co.ma": "google",
- "google.co.th": "google",
- "google.co.uk": "google",
- "google.com": "google",
- "google.com.ar": "google",
- "google.com.au": "google",
- "google.com.br": "google",
- "google.com.mx": "google",
- "google.com.tr": "google",
- "google.com.tw": "google",
- "google.com.ua": "google",
- "google.cz": "google",
- "google.de": "google",
- "google.dk": "google",
- "google.dz": "google",
- "google.es": "google",
- "google.fi": "google",
- "google.fr": "google",
- "google.gr": "google",
- "google.hu": "google",
- "google.ie": "google",
- "google.it": "google",
- "google.nl": "google",
- "google.no": "google",
- "google.pl": "google",
- "google.pt": "google",
- "google.ro": "google",
- "google.rs": "google",
- "google.ru": "google",
- "google.se": "google",
- "google.tn": "google",
- "1e100.net": "google",
- "agnss.goog": "google",
- "channel.status.request.url": "google",
- "g.cn": "google",
- "g.co": "google",
- "google.ad": "google",
- "google.ae": "google",
- "google.al": "google",
- "google.am": "google",
- "google.as": "google",
- "google.az": "google",
- "google.ba": "google",
- "google.bf": "google",
- "google.bg": "google",
- "google.bi": "google",
- "google.bj": "google",
- "google.bs": "google",
- "google.bt": "google",
- "google.by": "google",
- "google.cat": "google",
- "google.cd": "google",
- "google.cf": "google",
- "google.cg": "google",
- "google.ci": "google",
- "google.cl": "google",
- "google.cm": "google",
- "google.cn": "google",
- "google.co.ao": "google",
- "google.co.bw": "google",
- "google.co.ck": "google",
- "google.co.cr": "google",
- "google.co.il": "google",
- "google.co.ke": "google",
- "google.co.kr": "google",
- "google.co.ls": "google",
- "google.co.mz": "google",
- "google.co.nz": "google",
- "google.co.tz": "google",
- "google.co.ug": "google",
- "google.co.uz": "google",
- "google.co.ve": "google",
- "google.co.vi": "google",
- "google.co.za": "google",
- "google.co.zm": "google",
- "google.co.zw": "google",
- "google.com.af": "google",
- "google.com.ag": "google",
- "google.com.ai": "google",
- "google.com.bd": "google",
- "google.com.bh": "google",
- "google.com.bn": "google",
- "google.com.bo": "google",
- "google.com.bz": "google",
- "google.com.co": "google",
- "google.com.cu": "google",
- "google.com.cy": "google",
- "google.com.ec": "google",
- "google.com.eg": "google",
- "google.com.et": "google",
- "google.com.fj": "google",
- "google.com.gh": "google",
- "google.com.gi": "google",
- "google.com.gt": "google",
- "google.com.hk": "google",
- "google.com.jm": "google",
- "google.com.kh": "google",
- "google.com.kw": "google",
- "google.com.lb": "google",
- "google.com.my": "google",
- "google.com.na": "google",
- "google.com.nf": "google",
- "google.com.ng": "google",
- "google.com.ni": "google",
- "google.com.np": "google",
- "google.com.om": "google",
- "google.com.pa": "google",
- "google.com.pe": "google",
- "google.com.pg": "google",
- "google.com.ph": "google",
- "google.com.pk": "google",
- "google.com.pr": "google",
- "google.com.py": "google",
- "google.com.qa": "google",
- "google.com.sa": "google",
- "google.com.sb": "google",
- "google.com.sg": "google",
- "google.com.sl": "google",
- "google.com.sv": "google",
- "google.com.tj": "google",
- "google.com.uy": "google",
- "google.com.vc": "google",
- "google.com.vn": "google",
- "google.cv": "google",
- "google.dj": "google",
- "google.dm": "google",
- "google.ee": "google",
- "google.fm": "google",
- "google.ga": "google",
- "google.ge": "google",
- "google.gg": "google",
- "google.gl": "google",
- "google.gm": "google",
- "google.gp": "google",
- "google.gy": "google",
- "google.hn": "google",
- "google.hr": "google",
- "google.ht": "google",
- "google.im": "google",
- "google.in": "google",
- "google.iq": "google",
- "google.is": "google",
- "google.je": "google",
- "google.jo": "google",
- "google.kg": "google",
- "google.ki": "google",
- "google.kz": "google",
- "google.la": "google",
- "google.li": "google",
- "google.lk": "google",
- "google.lt": "google",
- "google.lu": "google",
- "google.lv": "google",
- "google.md": "google",
- "google.me": "google",
- "google.mg": "google",
- "google.mk": "google",
- "google.ml": "google",
- "google.mn": "google",
- "google.ms": "google",
- "google.mu": "google",
- "google.mv": "google",
- "google.mw": "google",
- "google.ne": "google",
- "google.net": "google",
- "google.nr": "google",
- "google.nu": "google",
- "google.org": "google",
- "google.pn": "google",
- "google.ps": "google",
- "google.rw": "google",
- "google.sc": "google",
- "google.sh": "google",
- "google.si": "google",
- "google.sk": "google",
- "google.sm": "google",
- "google.sn": "google",
- "google.so": "google",
- "google.sr": "google",
- "google.st": "google",
- "google.td": "google",
- "google.tg": "google",
- "google.tk": "google",
- "google.tl": "google",
- "google.tm": "google",
- "google.to": "google",
- "google.tt": "google",
- "google.us": "google",
- "google.vg": "google",
- "google.vu": "google",
- "google.ws": "google",
- "googleapis.cn": "google",
- "googlecode.com": "google",
- "googledownloads.cn": "google",
- "googleoptimize.com": "google",
- "googleweblight.in": "google",
- "googlezip.net": "google",
- "gstatic.cn": "google",
- "news.google.com": "google",
- "oo.gl": "google",
- "withgoogle.com": "google",
- "googleadservices.com": "google_adservices",
- "google-analytics.com": "google_analytics",
- "app-analytics-services.com": "google_analytics",
- "ssl-google-analytics.l.google.com": "google_analytics",
- "www-googletagmanager.l.google.com": "google_analytics",
- "appspot.com": "google_appspot",
- "googlehosted.com": "google_appspot",
- "accounts.google.com": "google_auth",
- "myaccount.google.com": "google_auth",
- "oauth2.googleapis.com": "google_auth",
- "ogs.google.com": "google_auth",
- "securetoken.googleapis.com": "google_auth",
- "beacons-google.com": "google_beacons",
- "alt1-mtalk.google.com": "google_chat",
- "alt2-mtalk.google.com": "google_chat",
- "alt3-mtalk.google.com": "google_chat",
- "alt4-mtalk.google.com": "google_chat",
- "alt5-mtalk.google.com": "google_chat",
- "alt6-mtalk.google.com": "google_chat",
- "alt7-mtalk.google.com": "google_chat",
- "alt8-mtalk.google.com": "google_chat",
- "chat.google.com": "google_chat",
- "mobile-gtalk.l.google.com": "google_chat",
- "mobile-gtalk4.l.google.com": "google_chat",
- "mtalk.google.com": "google_chat",
- "mtalk4.google.com": "google_chat",
- "talk.google.com": "google_chat",
- "talk.l.google.com": "google_chat",
- "talkx.l.google.com": "google_chat",
- "cloud.google.com": "google_cloud_platform",
- "gcp.gvt2.com": "google_cloud_platform",
- "storage.googleapis.com": "google_cloud_storage",
- "adsensecustomsearchads.com": "google_custom_search",
- "dns.google": "google_dns",
- "dns.google.com": "google_dns",
- "google-public-dns-a.google.com": "google_dns",
- "google-public-dns-b.google.com": "google_dns",
- "domains.google": "google_domains",
- "googledomains.com": "google_domains",
- "nic.google": "google_domains",
- "registry.google": "google_domains",
- "edge.google.com": "google_edge",
- "mail-ads.google.com": "google_email",
- "fonts.googleapis.com": "google_fonts",
- "cloudfunctions.net": "google_hosted",
- "ghs.googlehosted.com": "google_hosted",
- "ghs4.googlehosted.com": "google_hosted",
- "ghs46.googlehosted.com": "google_hosted",
- "ghs6.googlehosted.com": "google_hosted",
- "googlehosted.l.googleusercontent.com": "google_hosted",
- "run.app": "google_hosted",
- "supl.google.com": "google_location",
- "earth.app.goo.gl": "google_maps",
- "geo0.ggpht.com": "google_maps",
- "geo1.ggpht.com": "google_maps",
- "geo2.ggpht.com": "google_maps",
- "geo3.ggpht.com": "google_maps",
- "kh.google.com": "google_maps",
- "maps.app.goo.gl": "google_maps",
- "maps.google.ca": "google_maps",
- "maps.google.ch": "google_maps",
- "maps.google.co.jp": "google_maps",
- "maps.google.co.uk": "google_maps",
- "maps.google.com": "google_maps",
- "maps.google.com.mx": "google_maps",
- "maps.google.es": "google_maps",
- "maps.google.se": "google_maps",
- "maps.gstatic.com": "google_maps",
- "doubleclick.net": "google_marketing",
- "invitemedia.com": "google_marketing",
- "adsense.google.com": "google_marketing",
- "adservice.google.ca": "google_marketing",
- "adservice.google.co.in": "google_marketing",
- "adservice.google.co.kr": "google_marketing",
- "adservice.google.co.uk": "google_marketing",
- "adservice.google.co.za": "google_marketing",
- "adservice.google.com": "google_marketing",
- "adservice.google.com.ar": "google_marketing",
- "adservice.google.com.au": "google_marketing",
- "adservice.google.com.br": "google_marketing",
- "adservice.google.com.co": "google_marketing",
- "adservice.google.com.gt": "google_marketing",
- "adservice.google.com.mx": "google_marketing",
- "adservice.google.com.pe": "google_marketing",
- "adservice.google.com.ph": "google_marketing",
- "adservice.google.com.pk": "google_marketing",
- "adservice.google.com.tr": "google_marketing",
- "adservice.google.com.tw": "google_marketing",
- "adservice.google.com.vn": "google_marketing",
- "adservice.google.de": "google_marketing",
- "adservice.google.dk": "google_marketing",
- "adservice.google.es": "google_marketing",
- "adservice.google.fr": "google_marketing",
- "adservice.google.nl": "google_marketing",
- "adservice.google.no": "google_marketing",
- "adservice.google.pl": "google_marketing",
- "adservice.google.ru": "google_marketing",
- "adservice.google.vg": "google_marketing",
- "adtrafficquality.google": "google_marketing",
- "dai.google.com": "google_marketing",
- "doubleclick.com": "google_marketing",
- "doubleclickbygoogle.com": "google_marketing",
- "googlesyndication-cn.com": "google_marketing",
- "duo.google.com": "google_meet",
- "hangouts.clients6.google.com": "google_meet",
- "hangouts.google.com": "google_meet",
- "hangouts.googleapis.com": "google_meet",
- "meet.google.com": "google_meet",
- "meetings.googleapis.com": "google_meet",
- "stun.l.google.com": "google_meet",
- "stun1.l.google.com": "google_meet",
- "ggpht.com": "google_photos",
- "play-fe.googleapis.com": "google_play",
- "play-lh.googleusercontent.com": "google_play",
- "play.google.com": "google_play",
- "play.googleapis.com": "google_play",
- "1e100cdn.net": "google_servers",
- "gvt1.com": "google_servers",
- "gvt2.com": "google_servers",
- "gvt3.com": "google_servers",
- "googlesyndication.com": "google_syndication",
- "googletagmanager.com": "google_tag_manager",
- "googletagservices.com": "google_tag_manager",
- "translate.google.com": "google_translate",
- "googletraveladservices.com": "google_travel_adds",
- "pki.goog": "google_trust_services",
- "googlecommerce.com": "google_trusted_stores",
- "googleusercontent.com": "google_users",
- "telephony.goog": "google_voice",
- "voice.google.com": "google_voice",
- "gmodules.com": "google_widgets",
- "calendar.google.com": "google_workspace",
- "contacts.google.com": "google_workspace",
- "currents.google.com": "google_workspace",
- "docs.google.com": "google_workspace",
- "drive.google.com": "google_workspace",
- "forms.google.com": "google_workspace",
- "gsuite.google.com": "google_workspace",
- "jamboard.google.com": "google_workspace",
- "keep.google.com": "google_workspace",
- "plus.google.com": "google_workspace",
- "sheets.google.com": "google_workspace",
- "slides.google.com": "google_workspace",
- "spreadsheets.google.com": "google_workspace",
- "googleapis.com": "googleapis.com",
- "gooal.herokuapp.com": "goooal",
- "gooo.al": "goooal",
- "cdn.triggertag.gorillanation.com": "gorilla_nation",
- "evolvemediametrics.com": "gorilla_nation",
- "d1l6p2sc9645hc.cloudfront.net": "gosquared",
- "gosquared.com": "gosquared",
- "gostats.com": "gostats",
- "govmetric.com": "govmetric",
- "servmetric.com": "govmetric",
- "b.grabo.bg": "grabo_affiliate",
- "trw12.com": "grandslammedia",
- "tuberewards.com": "grandslammedia",
- "d2bw638ufki166.cloudfront.net": "granify",
- "granify.com": "granify",
- "grapeshot.co.uk": "grapeshot",
- "gscontxt.net": "grapeshot",
- "graphcomment.com": "graph_comment",
- "gravatar.com": "gravatar",
- "cdn.gravitec.net": "gravitec",
- "gravity.com": "gravity_insights",
- "grvcdn.com": "gravity_insights",
- "greatviews.de": "greatviews.de",
- "gandrad.org": "green_and_red",
- "green-red.com": "green_and_red",
- "co2stats.com": "green_certified_site",
- "greenstory.ca": "green_story",
- "greentube.com": "greentube.com",
- "gt-cdn.net": "greentube.com",
- "greystripe.com": "greystripe",
- "groovehq.com": "groove",
- "groovinads.com": "groovinads",
- "bidagent.xad.com": "groundtruth",
- "gmads.net": "groupm_server",
- "grmtech.net": "groupm_server",
- "media.gsimedia.net": "gsi_media",
- "gstatic.com": "gstatic",
- "fx.gtop.ro": "gtop",
- "fx.gtopstats.com": "gtop",
- "gubagootracking.com": "gugaboo",
- "guj.de": "guj.de",
- "emsservice.de": "gujems",
- "gumgum.com": "gumgum",
- "gumroad.com": "gumroad",
- "gunggo.com": "gunggo",
- "h12-media.com": "h12_ads",
- "h12-media.net": "h12_ads",
- "hnbutton.appspot.com": "hacker_news_button",
- "haendlerbund.de": "haendlerbund.de",
- "halogennetwork.com": "halogen_network",
- "d1l7z5ofrj6ab8.cloudfront.net": "happy_fox_chat",
- "ad.harrenmedianetwork.com": "harren_media",
- "ads.networkhm.com": "harren_media",
- "app.hatchbuck.com": "hatchbuck",
- "hhcdn.ru": "head_hunter",
- "healte.de": "healte.de",
- "d36lvucg9kzous.cloudfront.net": "heap",
- "heapanalytics.com": "heap",
- "heatmap.it": "heatmap",
- "weltsport.net": "heimspiel",
- "hellobar.com": "hello_bar",
- "hellosociety.com": "hellosociety",
- "here.com": "here",
- "herokuapp.com": "heroku",
- "heureka.cz": "heureka-widget",
- "heybubble.com": "heybubble",
- "heyos.com": "heyos",
- "adlink.net": "hi-media_performance",
- "comclick.com": "hi-media_performance",
- "hi-mediaserver.com": "hi-media_performance",
- "himediads.com": "hi-media_performance",
- "himediadx.com": "hi-media_performance",
- "hiconversion.com": "hiconversion",
- "highwebmedia.com": "highwebmedia.com",
- "hwcdn.net": "highwinds",
- "hiiir.com": "hiiir",
- "hiro.tv": "hiro",
- "histats.com": "histats",
- "hit-parade.com": "hit-parade",
- "hit.ua": "hit.ua",
- "hitslink.com": "hitslink",
- "hitsprocessor.com": "hitslink",
- "hitsniffer.com": "hitsniffer",
- "hittail.com": "hittail",
- "hivedx.com": "hivedx.com",
- "ads.thehiveworks.com": "hiveworks",
- "hockeyapp.net": "hockeyapp",
- "hoholikik.club": "hoholikik.club",
- "h-cdn.com": "hola_player",
- "homeaway.com": "homeaway",
- "honeybadger.io": "honeybadger",
- "hlserve.com": "hooklogic",
- "apiae.hopscore.com": "hop-cube",
- "hotdogsandads.com": "hotdogsandads.com",
- "hotjar.com": "hotjar",
- "hotkeys.com": "hotkeys",
- "hotlog.ru": "hotlog.ru",
- "hotwords.com": "hotwords",
- "hotwords.es": "hotwords",
- "howtank.com": "howtank.com",
- "hqentertainmentnetwork.com": "hqentertainmentnetwork.com",
- "justservingfiles.net": "hqentertainmentnetwork.com",
- "hsoub.com": "hsoub",
- "hstrck.com": "hstrck.com",
- "httpool.com": "httpool",
- "toboads.com": "httpool",
- "hubrus.com": "hubrus",
- "hs-analytics.net": "hubspot",
- "hs-scripts.com": "hubspot",
- "hsleadflows.net": "hubspot",
- "hubapi.com": "hubspot",
- "hubspot.com": "hubspot",
- "forms.hubspot.com": "hubspot_forms",
- "hubvisor.io": "hubvisor.io",
- "files.hucksterbot.com": "hucksterbot",
- "hupso.com": "hupso",
- "hurra.com": "hurra_tracker",
- "hybrid.ai": "hybrid.ai",
- "targetix.net": "hybrid.ai",
- "hypeads.org": "hype_exchange",
- "hypercomments.com": "hypercomments",
- "hyves.nl": "hyves_widgets",
- "hyvyd.com": "hyvyd",
- "ib-ibi.com": "i-behavior",
- "i-mobile.co.jp": "i-mobile",
- "r.i.ua": "i.ua",
- "i10c.net": "i10c.net",
- "i2i.jp": "i2i.jp",
- "i2idata.com": "i2i.jp",
- "consensu.org": "iab_consent",
- "iadvize.com": "iadvize",
- "cmcore.com": "ibm_customer_experience",
- "coremetrics.com": "ibm_customer_experience",
- "coremetrics.eu": "ibm_customer_experience",
- "tracker.icerocket.com": "icerocket_tracker",
- "nsimg.net": "icf_technology",
- "optimix.asia": "iclick",
- "ic-live.com": "icrossing",
- "icstats.nl": "icstats",
- "icuazeczpeoohx.com": "icuazeczpeoohx.com",
- "id-news.net": "id-news.net",
- "idcdn.de": "id-news.net",
- "eu-1-id5-sync.com": "id5-sync",
- "id5-sync.com": "id5-sync",
- "id5.io": "id5-sync",
- "cdn.id.services": "id_services",
- "e-generator.com": "ideal_media",
- "idealo.com": "idealo_com",
- "identrust.com": "identrust",
- "ideoclick.com": "ideoclick",
- "s.idio.co": "idio",
- "ie8eamus.com": "ie8eamus.com",
- "600z.com": "ientry",
- "api.iflychat.com": "iflychat",
- "ignitionone.com": "ignitionone",
- "knotice.net": "ignitionone",
- "igodigital.com": "igodigital",
- "ad.wsod.com": "ihs_markit",
- "collserve.com": "ihs_markit_online_shopper_insigh",
- "ihvmcqojoj.com": "ihvmcqojoj.com",
- "iias.eu": "iias.eu",
- "ijento.com": "ijento",
- "adv.imadrep.co.kr": "imad",
- "worthathousandwords.com": "image_advantage",
- "picadmedia.com": "image_space_media",
- "imgix.net": "imgix.net",
- "imgur.com": "imgur",
- "vidigital.ru": "imho_vi",
- "immanalytics.com": "immanalytics",
- "immobilienscout24.de": "immobilienscout24_de",
- "static-immobilienscout24.de": "immobilienscout24_de",
- "imonomy.com": "imonomy",
- "7eer.net": "impact_radius",
- "d3cxv97fi8q177.cloudfront.net": "impact_radius",
- "evyy.net": "impact_radius",
- "impactradius-event.com": "impact_radius",
- "impactradius-tag.com": "impact_radius",
- "impactradius.com": "impact_radius",
- "ojrq.net": "impact_radius",
- "r7ls.net": "impact_radius",
- "impresionesweb.com": "impresiones_web",
- "360yield.com": "improve_digital",
- "iljmp.com": "improvely",
- "inbenta.com": "inbenta",
- "inboxsdk.com": "inboxsdk.com",
- "indeed.com": "indeed",
- "casalemedia.com": "index_exchange",
- "indexww.com": "index_exchange",
- "indieclick.com": "indieclick",
- "industrybrains.com": "industry_brains",
- "impdesk.com": "infectious_media",
- "impressiondesk.com": "infectious_media",
- "zachysprod.infiniteanalytics.com": "infinite_analytics",
- "infinity-tracking.net": "infinity_tracking",
- "engine.influads.com": "influads",
- "infolinks.com": "infolinks",
- "intextscript.com": "infolinks",
- "ioam.de": "infonline",
- "iocnt.net": "infonline",
- "ivwbox.de": "infonline",
- "informer.com": "informer_technologies",
- "infusionsoft.com": "infusionsoft",
- "keap.com": "infusionsoft",
- "innity.com": "innity",
- "innity.net": "innity",
- "innogames.com": "innogames.de",
- "innogames.de": "innogames.de",
- "innogamescdn.com": "innogames.de",
- "innovid.com": "innovid",
- "inside-graph.com": "inside",
- "useinsider.com": "insider",
- "insightexpressai.com": "insightexpress",
- "inskinad.com": "inskin_media",
- "inskinmedia.com": "inskin_media",
- "inspectlet.com": "inspectlet",
- "inspsearchapi.com": "inspsearchapi.com",
- "cdninstagram.com": "instagram_com",
- "instagram.com": "instagram_com",
- "tcgtrkr.com": "instant_check_mate",
- "sdad.guru": "instart_logic",
- "insticator.com": "insticator",
- "load.instinctiveads.com": "instinctive",
- "intango.com": "intango",
- "adsafeprotected.com": "integral_ad_science",
- "iasds01.com": "integral_ad_science",
- "integral-marketing.com": "integral_marketing",
- "intelliad.com": "intelliad",
- "intelliad.de": "intelliad",
- "saas.intelligencefocus.com": "intelligencefocus",
- "ist-track.com": "intelligent_reach",
- "intensedebate.com": "intense_debate",
- "intentiq.com": "intent_iq",
- "intentmedia.net": "intent_media",
- "intercom.com": "intercom",
- "intercom.io": "intercom",
- "intercomassets.com": "intercom",
- "intercomcdn.com": "intercom",
- "interedy.info": "interedy.info",
- "ads.intergi.com": "intergi",
- "intermarkets.net": "intermarkets.net",
- "intermundomedia.com": "intermundo_media",
- "bbelements.com": "internet_billboard",
- "goadservices.com": "internet_billboard",
- "ibillboard.com": "internet_billboard",
- "mediainter.net": "internet_billboard",
- "voice2page.com": "internetaudioads",
- "ibpxl.com": "internetbrands",
- "ibsrv.net": "internetbrands",
- "interpolls.com": "interpolls",
- "ps7894.com": "interyield",
- "intilery-analytics.com": "intilery",
- "im-apps.net": "intimate_merger",
- "investingchannel.com": "investingchannel",
- "inviziads.com": "inviziads",
- "js12.invoca.net": "invoca",
- "ringrevenue.com": "invoca",
- "invodo.com": "invodo",
- "ionicframework.com": "ionicframework.com",
- "dsp.io": "iotec",
- "iesnare.com": "iovation",
- "iovation.com": "iovation",
- "ip-label.net": "ip-label",
- "eltoro.com": "ip_targeting",
- "iptargeting.com": "ip_targeting",
- "ip-tracker.org": "ip_tracker",
- "iptrack.io": "ip_tracker",
- "iperceptions.com": "iperceptions",
- "dust.ipfingerprint.com": "ipfingerprint",
- "mbww.com": "ipg_mediabrands",
- "ipify.org": "ipify",
- "ipinfo.io": "ipinfo",
- "iplogger.ru": "iplogger",
- "centraliprom.com": "iprom",
- "iprom.net": "iprom",
- "ipromote.com": "ipromote",
- "clickmanage.com": "iprospect",
- "iq.com": "iqiyi",
- "iqiyi.com": "iqiyi",
- "qy.net": "iqiyi",
- "addelive.com": "ironsource",
- "afdads.com": "ironsource",
- "delivery47.com": "ironsource",
- "ironsrc.com": "ironsource",
- "ironsrc.net": "ironsource",
- "is.com": "ironsource",
- "soom.la": "ironsource",
- "supersonicads.com": "ironsource",
- "tapjoy.com": "ironsource",
- "adsbyisocket.com": "isocket",
- "isocket.com": "isocket",
- "isolarcloud.com": "isolarcloud",
- "isolarcloud.com.a.lahuashanbx.com": "isolarcloud",
- "isolarcloud.com.w.cdngslb.com": "isolarcloud",
- "isolarcloud.com.w.kunlunsl.com": "isolarcloud",
- "ispot.tv": "ispot.tv",
- "itineraire.info": "itineraire.info",
- "autolinkmaker.itunes.apple.com": "itunes_link_maker",
- "ity.im": "ity.im",
- "iubenda.com": "iubenda.com",
- "ivcbrasil.org.br": "ivcbrasil.org.br",
- "ivitrack.com": "ividence",
- "iwiw.hu": "iwiw_widgets",
- "ixiaa.com": "ixi_digital",
- "ixquick.com": "ixquick.com",
- "cdn.izooto.com": "izooto",
- "jlist.com": "j-list_affiliate_program",
- "getjaco.com": "jaco",
- "janrainbackplane.com": "janrain",
- "rpxnow.com": "janrain",
- "jeeng.com": "jeeng",
- "api.jeeng.com": "jeeng_widgets",
- "phone-analytics.com": "jet_interactive",
- "grazie.ai": "jetbrains",
- "intellij.net": "jetbrains",
- "jb.gg": "jetbrains",
- "jetbrains.ai": "jetbrains",
- "jetbrains.com": "jetbrains",
- "jetbrains.com.cn": "jetbrains",
- "jetbrains.dev": "jetbrains",
- "jetbrains.net": "jetbrains",
- "jetbrains.org": "jetbrains",
- "jetbrains.ru": "jetbrains",
- "jetbrains.space": "jetbrains",
- "kotl.in": "jetbrains",
- "kotlinconf.com": "jetbrains",
- "kotlinlang.org": "jetbrains",
- "myjetbrains.com": "jetbrains",
- "talkingkotlin.com": "jetbrains",
- "jetlore.com": "jetlore",
- "pixel.wp.com": "jetpack",
- "stats.wp.com": "jetpack",
- "jetpackdigital.com": "jetpack_digital",
- "jimcdn.com": "jimdo.com",
- "jimdo.com": "jimdo.com",
- "jimstatic.com": "jimdo.com",
- "ads.jinkads.com": "jink",
- "jirafe.com": "jirafe",
- "jivosite.com": "jivochat",
- "jivox.com": "jivox",
- "jobs2careers.com": "jobs_2_careers",
- "joinhoney.com": "joinhoney",
- "create.leadid.com": "jornaya",
- "d1tprjo2w7krrh.cloudfront.net": "jornaya",
- "cdnjquery.com": "jquery",
- "jquery.com": "jquery",
- "cjmooter.xcache.kinxcdn.com": "js_communications",
- "jsdelivr.net": "jsdelivr",
- "jsecoin.com": "jse_coin",
- "jsuol.com.br": "jsuol.com.br",
- "contentabc.com": "juggcash",
- "mofos.com": "juggcash",
- "juiceadv.com": "juiceadv",
- "juicyads.com": "juicyads",
- "cdn.jumplead.com": "jumplead",
- "jumpstarttaggingsolutions.com": "jumpstart_tagging_solutions",
- "jumptap.com": "jumptap",
- "jump-time.net": "jumptime",
- "jumptime.com": "jumptime",
- "components.justanswer.com": "just_answer",
- "justpremium.com": "just_premium",
- "justpremium.nl": "just_premium",
- "justrelevant.com": "just_relevant",
- "jvc.gg": "jvc.gg",
- "d21rhj7n383afu.cloudfront.net": "jw_player",
- "jwpcdn.com": "jw_player",
- "jwplatform.com": "jw_player",
- "jwplayer.com": "jw_player",
- "jwpltx.com": "jw_player",
- "jwpsrv.com": "jw_player",
- "ltassrv.com": "jw_player_ad_solutions",
- "kaeufersiegel.de": "kaeufersiegel.de",
- "kairion.de": "kairion.de",
- "kctag.net": "kairion.de",
- "kaloo.ga": "kaloo.ga",
- "kaltura.com": "kaltura",
- "kameleoon.com": "kameleoon",
- "kameleoon.eu": "kameleoon",
- "kampyle.com": "kampyle",
- "kanoodle.com": "kanoodle",
- "kmi-us.com": "kantar_media",
- "tnsinternet.be": "kantar_media",
- "karambasecurity.com": "karambasecurity",
- "kargo.com": "kargo",
- "kaspersky-labs.com": "kaspersky-labs.com",
- "kataweb.it": "kataweb.it",
- "cen.katchup.fr": "katchup",
- "kau.li": "kauli",
- "kavanga.ru": "kavanga",
- "kayosports.com.au": "kayo_sports",
- "dc8na2hxrj29i.cloudfront.net": "keen_io",
- "keen.io": "keen_io",
- "widget.kelkoo.com": "kelkoo",
- "xg4ken.com": "kenshoo",
- "keymetric.net": "keymetric",
- "lb.keytiles.com": "keytiles",
- "keywee.co": "keywee",
- "keywordmax.com": "keywordmax",
- "massrelevance.com": "khoros",
- "tweetriver.com": "khoros",
- "khzbeucrltin.com": "khzbeucrltin.com",
- "ping.kickfactory.com": "kickfactory",
- "sa-as.com": "kickfire",
- "sniff.visistat.com": "kickfire",
- "stats.visistat.com": "kickfire",
- "apikik.com": "kik",
- "kik-gateway-use1.meetme.com": "kik",
- "kik-live.com": "kik",
- "kik-stream.meetme.com": "kik",
- "kik.com": "kik",
- "king.com": "king.com",
- "midasplayer.com": "king_com",
- "kinja-img.com": "kinja.com",
- "kinja-static.com": "kinja.com",
- "kinja.com": "kinja.com",
- "kiosked.com": "kiosked",
- "doug1izaerwt3.cloudfront.net": "kissmetrics.com",
- "kissmetrics.com": "kissmetrics.com",
- "ad.103092804.com": "kitara_media",
- "kmdisplay.com": "kitara_media",
- "kixer.com": "kixer",
- "klarna.com": "klarna.com",
- "a.klaviyo.com": "klaviyo",
- "klaviyo.com": "klaviyo",
- "klikki.com": "klikki",
- "scr.kliksaya.com": "kliksaya",
- "mediapeo2.com": "kmeleo",
- "knoopstat.nl": "knoopstat",
- "knotch.it": "knotch",
- "komoona.com": "komoona",
- "kona.kontera.com": "kontera_contentlink",
- "ktxtr.com": "kontextr",
- "kontextua.com": "kontextua",
- "cleanrm.net": "korrelate",
- "korrelate.net": "korrelate",
- "trackit.ktxlytics.io": "kortx",
- "kaptcha.com": "kount",
- "krxd.net": "krux_digital",
- "d31bfnnwekbny6.cloudfront.net": "kupona",
- "kpcustomer.de": "kupona",
- "q-sis.de": "kupona",
- "kxcdn.com": "kxcdn.com",
- "cdn.kyto.com": "kyto",
- "cd-ladsp-com.s3.amazonaws.com": "ladsp.com",
- "ladmp.com": "ladsp.com",
- "ladsp.com": "ladsp.com",
- "lanistaads.com": "lanista_concepts",
- "latimes.com": "latimes",
- "events.launchdarkly.com": "launch_darkly",
- "launchdarkly.com": "launch_darkly",
- "launchbit.com": "launchbit",
- "launchpad.net": "launchpad",
- "launchpadcontent.net": "launchpad",
- "layer-ad.org": "layer-ad.org",
- "ph-live.slatic.net": "lazada",
- "slatic.net": "lazada",
- "lcxdigital.com": "lcx_digital",
- "lemde.fr": "le_monde.fr",
- "t1.llanalytics.com": "lead_liaison",
- "leadback.ru": "leadback",
- "leaddyno.com": "leaddyno",
- "123-tracker.com": "leadforensics",
- "55-trk-srv.com": "leadforensics",
- "business-path-55.com": "leadforensics",
- "click-to-trace.com": "leadforensics",
- "cloud-exploration.com": "leadforensics",
- "cloud-journey.com": "leadforensics",
- "cloud-trail.com": "leadforensics",
- "cloudpath82.com": "leadforensics",
- "cloudtracer101.com": "leadforensics",
- "discover-path.com": "leadforensics",
- "discovertrail.net": "leadforensics",
- "domainanalytics.net": "leadforensics",
- "dthvdr9.com": "leadforensics",
- "explore-123.com": "leadforensics",
- "finger-info.net": "leadforensics",
- "forensics1000.com": "leadforensics",
- "ip-route.net": "leadforensics",
- "ipadd-path.com": "leadforensics",
- "iproute66.com": "leadforensics",
- "lead-123.com": "leadforensics",
- "lead-analytics-1000.com": "leadforensics",
- "lead-watcher.com": "leadforensics",
- "leadforensics.com": "leadforensics",
- "ledradn.com": "leadforensics",
- "letterbox-path.com": "leadforensics",
- "letterboxtrail.com": "leadforensics",
- "network-handle.com": "leadforensics",
- "path-follower.com": "leadforensics",
- "path-trail.com": "leadforensics",
- "scan-trail.com": "leadforensics",
- "site-research.net": "leadforensics",
- "srv1010elan.com": "leadforensics",
- "the-lead-tracker.com": "leadforensics",
- "trace-2000.com": "leadforensics",
- "track-web.net": "leadforensics",
- "trackdiscovery.net": "leadforensics",
- "trackercloud.net": "leadforensics",
- "trackinvestigate.net": "leadforensics",
- "trail-viewer.com": "leadforensics",
- "trail-web.com": "leadforensics",
- "trailbox.net": "leadforensics",
- "trailinvestigator.com": "leadforensics",
- "web-path.com": "leadforensics",
- "webforensics.co.uk": "leadforensics",
- "websiteexploration.com": "leadforensics",
- "www-path.com": "leadforensics",
- "gate.leadgenic.com": "leadgenic",
- "leadhit.ru": "leadhit",
- "js.leadin.com": "leadin",
- "io.leadingreports.de": "leading_reports",
- "js.leadinspector.de": "leadinspector",
- "formalyzer.com": "leadlander",
- "trackalyzer.com": "leadlander",
- "analytics.leadlifesolutions.net": "leadlife",
- "my.leadpages.net": "leadpages",
- "leadplace.fr": "leadplace",
- "scorecard.wspisp.net": "leads_by_web.com",
- "www.leadscoreapp.dk": "leadscoreapp",
- "tracker.leadsius.com": "leadsius",
- "leady.com": "leady",
- "leady.cz": "leady",
- "leiki.com": "leiki",
- "lengow.com": "lengow",
- "lenmit.com": "lenmit.com",
- "lentainform.com": "lentainform.com",
- "lenua.de": "lenua.de",
- "letreach.com": "let_reach",
- "lencr.org": "lets_encrypt",
- "letsencrypt.org": "lets_encrypt",
- "js.letvcdn.com": "letv",
- "footprint.net": "level3_communications",
- "alphonso.tv": "lgads",
- "lgads.tv": "lgads",
- "lg.com": "lgtv",
- "lge.com": "lgtv",
- "lgsmartad.com": "lgtv",
- "lgtvcommon.com": "lgtv",
- "lgtvsdp.com": "lgtv",
- "licensebuttons.net": "licensebuttons.net",
- "lfstmedia.com": "lifestreet_media",
- "content-recommendation.net": "ligatus",
- "ligadx.com": "ligatus",
- "ligatus.com": "ligatus",
- "ligatus.de": "ligatus",
- "veeseo.com": "ligatus",
- "limk.com": "limk",
- "line-apps.com": "line_apps",
- "line-scdn.net": "line_apps",
- "line.me": "line_apps",
- "tongji.linezing.com": "linezing",
- "linkbucks.com": "linkbucks",
- "linkconnector.com": "linkconnector",
- "bizo.com": "linkedin",
- "licdn.com": "linkedin",
- "linkedin.com": "linkedin",
- "lynda.com": "linkedin",
- "ads.linkedin.com": "linkedin_ads",
- "snap.licdn.com": "linkedin_analytics",
- "bizographics.com": "linkedin_marketing_solutions",
- "platform.linkedin.com": "linkedin_widgets",
- "linker.hr": "linker",
- "linkprice.com": "linkprice",
- "lp4.io": "linkpulse",
- "linksalpha.com": "linksalpha",
- "erovinmo.com": "linksmart",
- "linksmart.com": "linksmart",
- "linkstorm.net": "linkstorm",
- "linksynergy.com": "linksynergy.com",
- "linkup.com": "linkup",
- "linkwi.se": "linkwise",
- "linkwithin.com": "linkwithin",
- "lqm.io": "liquidm_technology_gmbh",
- "lqmcdn.com": "liquidm_technology_gmbh",
- "liqwid.net": "liqwid",
- "list.ru": "list.ru",
- "listrakbi.com": "listrak",
- "live2support.com": "live2support",
- "live800.com": "live800",
- "ladesk.com": "live_agent",
- "livehelpnow.net": "live_help_now",
- "liadm.com": "live_intent",
- "l-stat.livejournal.net": "live_journal",
- "liveadexchanger.com": "liveadexchanger.com",
- "livechat.s3.amazonaws.com": "livechat",
- "livechatinc.com": "livechat",
- "livechatinc.net": "livechat",
- "livechatnow.com": "livechatnow",
- "livechatnow.net": "livechatnow",
- "liveclicker.net": "liveclicker",
- "livecounter.dk": "livecounter",
- "fyre.co": "livefyre",
- "livefyre.com": "livefyre",
- "yadro.ru": "liveinternet",
- "liveperson.net": "liveperson",
- "lpsnmedia.net": "liveperson",
- "pippio.com": "liveramp",
- "rapleaf.com": "liveramp",
- "rlcdn.com": "liveramp",
- "livere.co.kr": "livere",
- "livere.co.kr.cizion.ixcloud.net": "livere",
- "livesportmedia.eu": "livesportmedia.eu",
- "analytics.livestream.com": "livestream",
- "livetex.ru": "livetex.ru",
- "lkqd.net": "lkqd",
- "loadbee.com": "loadbee.com",
- "loadercdn.com": "loadercdn.com",
- "loadsource.org": "loadsource.org",
- "web.localytics.com": "localytics",
- "localytics.com": "localytics",
- "cdn2.lockerdome.com": "lockerdome",
- "addtoany.com": "lockerz_share",
- "pixel.loganmedia.mobi": "logan_media",
- "ping.answerbook.com": "logdna",
- "loggly.com": "loggly",
- "logly.co.jp": "logly",
- "logsss.com": "logsss.com",
- "lomadee.com": "lomadee",
- "assets.loomia.com": "loomia",
- "loop11.com": "loop11",
- "lfov.net": "loopfuse_oneview",
- "crwdcntrl.net": "lotame",
- "vidcpm.com": "lottex_inc",
- "tracker.samplicio.us": "lucid",
- "lucidmedia.com": "lucid_media",
- "lead.adsender.us": "lucini",
- "livestatserver.com": "lucky_orange",
- "luckyorange.com": "lucky_orange",
- "luckyorange.net": "lucky_orange",
- "luckypushh.com": "luckypushh.com",
- "adelixir.com": "lxr100",
- "lypn.com": "lynchpin_analytics",
- "lypn.net": "lynchpin_analytics",
- "lytics.io": "lytics",
- "lyuoaxruaqdo.com": "lyuoaxruaqdo.com",
- "m-pathy.com": "m-pathy",
- "mpnrs.com": "m._p._newmedia",
- "m4n.nl": "m4n",
- "madadsmedia.com": "mad_ads_media",
- "madeleine.de": "madeleine.de",
- "dinclinx.com": "madison_logic",
- "madisonlogic.com": "madison_logic",
- "madnet.ru": "madnet",
- "eu2.madsone.com": "mads",
- "magna.ru": "magna_advertise",
- "d3ezl4ajpp2zy8.cloudfront.net": "magnetic",
- "domdex.com": "magnetic",
- "domdex.net": "magnetic",
- "magnetisemedia.com": "magnetise_group",
- "magnify360.com": "magnify360",
- "magnuum.com": "magnuum.com",
- "ad.mail.ru": "mail.ru_banner",
- "imgsmail.ru": "mail.ru_group",
- "mail.ru": "mail.ru_group",
- "mradx.net": "mail.ru_group",
- "odnoklassniki.ru": "mail.ru_group",
- "ok.ru": "mail.ru_group",
- "chimpstatic.com": "mailchimp_tracking",
- "list-manage.com": "mailchimp_tracking",
- "mailchimp.com": "mailchimp_tracking",
- "mailerlite.com": "mailerlite.com",
- "mailtrack.io": "mailtrack.io",
- "mainadv.com": "mainadv",
- "makazi.com": "makazi",
- "makeappdev.xyz": "makeappdev.xyz",
- "makesource.cool": "makesource.cool",
- "widgets.mango-office.ru": "mango",
- "manycontacts.com": "manycontacts",
- "mapandroute.de": "mapandroute.de",
- "mapbox.com": "mapbox",
- "www.maploco.com": "maploco",
- "px.marchex.io": "marchex",
- "voicestar.com": "marchex",
- "mmadsgadget.com": "marimedia",
- "qadabra.com": "marimedia",
- "qadserve.com": "marimedia",
- "qadservice.com": "marimedia",
- "marinsm.com": "marin_search_marketer",
- "markandmini.com": "mark_+_mini",
- "ak-cdn.placelocal.com": "market_thunder",
- "dt00.net": "marketgid",
- "dt07.net": "marketgid",
- "marketgid.com": "marketgid",
- "mgid.com": "marketgid",
- "marketingautomation.si": "marketing_automation",
- "marketo.com": "marketo",
- "marketo.net": "marketo",
- "mktoresp.com": "marketo",
- "caanalytics.com": "markmonitor",
- "mmstat.com": "markmonitor",
- "markmonitor.com": "markmonitor",
- "netscope.data.marktest.pt": "marktest",
- "marshadow.io": "marshadow.io",
- "martiniadnetwork.com": "martini_media",
- "edigitalsurvey.com": "maru-edu",
- "marvellousmachine.net": "marvellous_machine",
- "mbn.com.ua": "master_banner_network",
- "mastertarget.ru": "mastertarget",
- "rns.matelso.de": "matelso",
- "matheranalytics.com": "mather_analytics",
- "mathjax.org": "mathjax.org",
- "nzaza.com": "matiro",
- "matomo.cloud": "matomo",
- "matomo.org": "matomo",
- "piwik.org": "matomo",
- "adsmarket.com": "matomy_market",
- "m2pub.com": "matomy_market",
- "matrix.org": "matrix",
- "mb01.com": "maxbounty",
- "maxcdn.com": "maxcdn",
- "netdna-cdn.com": "maxcdn",
- "netdna-ssl.com": "maxcdn",
- "maxlab.ru": "maxlab",
- "maxmind.com": "maxmind",
- "maxonclick.com": "maxonclick_com",
- "mxptint.net": "maxpoint_interactive",
- "maxymiser.hs.llnwd.net": "maxymiser",
- "maxymiser.net": "maxymiser",
- "m6r.eu": "mbr_targeting",
- "pixel.adbuyer.com": "mbuy",
- "mcabi.mcloudglobal.com": "mcabi",
- "scanalert.com": "mcafee_secure",
- "ywxi.net": "mcafee_secure",
- "mconet.biz": "mconet",
- "mdotlabs.com": "mdotlabs",
- "media-clic.com": "media-clic",
- "media-imdb.com": "media-imdb.com",
- "media.net": "media.net",
- "mediaimpact.de": "media_impact",
- "mookie1.com": "media_innovation_group",
- "idntfy.ru": "media_today",
- "s1.mediaad.org": "mediaad",
- "mlnadvertising.com": "mediaglu",
- "fhserve.com": "mediahub",
- "media-lab.ai": "medialab",
- "medialab.la": "medialab",
- "adnet.ru": "medialand",
- "medialand.ru": "medialand",
- "medialead.de": "medialead",
- "mathads.com": "mediamath",
- "mathtag.com": "mediamath",
- "mediametrics.ru": "mediametrics",
- "audit.median.hu": "median",
- "mediapass.com": "mediapass",
- "mt.mediapostcommunication.net": "mediapost_communications",
- "mediarithmics.com": "mediarithmics.com",
- "tns-counter.ru": "mediascope",
- "ad.media-servers.net": "mediashakers",
- "adsvc1107131.net": "mediashift",
- "mediator.media": "mediator.media",
- "mediav.com": "mediav",
- "adnetinteractive.com": "mediawhiz",
- "adnetinteractive.net": "mediawhiz",
- "mediego.com": "medigo",
- "medleyads.com": "medley",
- "adnet.com.tr": "medyanet",
- "e-kolay.net": "medyanet",
- "medyanetads.com": "medyanet",
- "cim.meebo.com": "meebo_bar",
- "meetrics.net": "meetrics",
- "mxcdn.net": "meetrics",
- "research.de.com": "meetrics",
- "counter.megaindex.ru": "megaindex",
- "mega.co.nz": "meganz",
- "mega.io": "meganz",
- "mega.nz": "meganz",
- "mein-bmi.com": "mein-bmi.com",
- "webvisitor.melissadata.net": "melissa",
- "meltdsp.com": "melt",
- "mlt01.com": "menlo",
- "mentad.com": "mentad",
- "mercadoclics.com": "mercado",
- "mercadolivre.com.br": "mercado",
- "mlstatic.com": "mercado",
- "merchantadvantage.com": "merchantadvantage",
- "merchenta.com": "merchenta",
- "roia.biz": "mercury_media",
- "cdn.merklesearch.com": "merkle_research",
- "rkdms.com": "merkle_rkg",
- "messenger.com": "messenger.com",
- "ad.metanetwork.com": "meta_network",
- "metaffiliation.com": "metaffiliation.com",
- "netaffiliation.com": "metaffiliation.com",
- "metalyzer.com": "metapeople",
- "mlsat02.de": "metapeople",
- "metrigo.com": "metrigo",
- "metriweb.be": "metriweb",
- "miaozhen.com": "miaozhen",
- "microad.co.jp": "microad",
- "microad.jp": "microad",
- "microad.net": "microad",
- "microadinc.com": "microad",
- "azurewebsites.net": "microsoft",
- "cloudapp.net": "microsoft",
- "gfx.ms": "microsoft",
- "microsoft.com": "microsoft",
- "microsoftonline-p.com": "microsoft",
- "microsoftonline.com": "microsoft",
- "microsofttranslator.com": "microsoft",
- "msecnd.net": "microsoft",
- "msedge.net": "microsoft",
- "msocdn.com": "microsoft",
- "onestore.ms": "microsoft",
- "s-microsoft.com": "microsoft",
- "trouter.io": "microsoft",
- "windows.net": "microsoft",
- "aka.ms": "microsoft",
- "microsoftazuread-sso.com": "microsoft",
- "bingapis.com": "microsoft",
- "msauth.net": "microsoft",
- "msauthimages.net": "microsoft",
- "msftauth.net": "microsoft",
- "msftstatic.com": "microsoft",
- "msidentity.com": "microsoft",
- "nelreports.net": "microsoft",
- "windowscentral.com": "microsoft",
- "analytics.live.com": "microsoft_analytics",
- "a.clarity.ms": "microsoft_clarity",
- "b.clarity.ms": "microsoft_clarity",
- "c.clarity.ms": "microsoft_clarity",
- "d.clarity.ms": "microsoft_clarity",
- "e.clarity.ms": "microsoft_clarity",
- "f.clarity.ms": "microsoft_clarity",
- "g.clarity.ms": "microsoft_clarity",
- "h.clarity.ms": "microsoft_clarity",
- "i.clarity.ms": "microsoft_clarity",
- "j.clarity.ms": "microsoft_clarity",
- "log.clarity.ms": "microsoft_clarity",
- "www.clarity.ms": "microsoft_clarity",
- "mmismm.com": "mindset_media",
- "imgfarm.com": "mindspark",
- "mindspark.com": "mindspark",
- "staticimgfarm.com": "mindspark",
- "mvtracker.com": "mindviz_tracker",
- "minewhat.com": "minewhat",
- "mintsapp.io": "mints_app",
- "snackly.co": "minute.ly",
- "snippet.minute.ly": "minute.ly",
- "apv.configuration.minute.ly": "minute.ly_video",
- "get.mirando.de": "mirando",
- "mirtesen.ru": "mirtesen.ru",
- "misterbell.com": "mister_bell",
- "mixi.jp": "mixi",
- "mixpanel.com": "mixpanel",
- "mxpnl.com": "mixpanel",
- "mxpnl.net": "mixpanel",
- "swf.mixpo.com": "mixpo",
- "app.mluvii.com": "mluvii",
- "mncdn.com": "mncdn.com",
- "moatads.com": "moat",
- "moatpixel.com": "moat",
- "mobicow.com": "mobicow",
- "a.mobify.com": "mobify",
- "mobtrks.com": "mobtrks.com",
- "ads.mocean.mobi": "mocean_mobile",
- "ads.moceanads.com": "mocean_mobile",
- "chat.mochapp.com": "mochapp",
- "intelligentpixel.modernimpact.com": "modern_impact",
- "teljari.is": "modernus",
- "modulepush.com": "modulepush.com",
- "mogointeractive.com": "mogo_interactive",
- "mokonocdn.com": "mokono_analytics",
- "devappgrant.space": "monero_miner",
- "monetate.net": "monetate",
- "monetize-me.com": "monetize_me",
- "ads.themoneytizer.com": "moneytizer",
- "mongoosemetrics.com": "mongoose_metrics",
- "track.monitis.com": "monitis",
- "monitus.net": "monitus",
- "fonts.net": "monotype_gmbh",
- "fonts.com": "monotype_imaging",
- "cdn.monsido.com": "monsido",
- "monster.com": "monster_advertising",
- "mooxar.com": "mooxar",
- "mopinion.com": "mopinion.com",
- "mopub.com": "mopub",
- "ad.ad-arata.com": "more_communication",
- "moras.jp": "moreads",
- "nedstatbasic.net": "motigo_webstats",
- "webstats.motigo.com": "motigo_webstats",
- "analytics.convertlanguage.com": "motionpoint",
- "mouseflow.com": "mouseflow",
- "mousestats.com": "mousestats",
- "s.mousetrace.com": "mousetrace",
- "movad.de": "mov.ad",
- "movad.net": "mov.ad",
- "micpn.com": "movable_ink",
- "mvb.me": "movable_media",
- "moz.com": "moz",
- "firefox.com": "mozilla",
- "mozaws.net": "mozilla",
- "mozgcp.net": "mozilla",
- "mozilla.com": "mozilla",
- "mozilla.net": "mozilla",
- "mozilla.org": "mozilla",
- "storage.mozoo.com": "mozoo",
- "tracker.mrpfd.com": "mrp",
- "mrpdata.com": "mrpdata",
- "mrpdata.net": "mrpdata",
- "mrskincash.com": "mrskincash",
- "a-msedge.net": "msedge",
- "b-msedge.net": "msedge",
- "dual-s-msedge.net": "msedge",
- "e-msedge.net": "msedge",
- "k-msedge.net": "msedge",
- "l-msedge.net": "msedge",
- "s-msedge.net": "msedge",
- "spo-msedge.net": "msedge",
- "t-msedge.net": "msedge",
- "wac-msedge.net": "msedge",
- "msn.com": "msn",
- "s-msn.com": "msn",
- "musculahq.appspot.com": "muscula",
- "litix.io": "mux_inc",
- "mybloglog.com": "mybloglog",
- "t.p.mybuys.com": "mybuys",
- "mycdn.me": "mycdn.me",
- "mycliplister.com": "mycliplister.com",
- "mycounter.com.ua": "mycounter.ua",
- "mycounter.ua": "mycounter.ua",
- "myfonts.net": "myfonts",
- "mypagerank.net": "mypagerank",
- "stat.mystat.hu": "mystat",
- "mythings.com": "mythings",
- "mystat-in.net": "mytop_counter",
- "nab.com": "nab",
- "nab.com.au": "nab",
- "nab.net": "nab",
- "nabgroup.com": "nab",
- "national.com.au": "nab",
- "nationalaustraliabank.com.au": "nab",
- "nationalbank.com.au": "nab",
- "nakanohito.jp": "nakanohito.jp",
- "namogoo.coom": "namogoo",
- "nanigans.com": "nanigans",
- "audiencemanager.de": "nano_interactive",
- "nanorep.com": "nanorep",
- "narando.com": "narando",
- "static.bam-x.com": "narrativ",
- "narrative.io": "narrative_io",
- "p1.ntvk1.ru": "natimatica",
- "nativeads.com": "nativeads.com",
- "cdn01.nativeroll.tv": "nativeroll",
- "ntv.io": "nativo",
- "postrelease.com": "nativo",
- "navdmp.com": "navegg_dmp",
- "naver.com": "naver.com",
- "naver.net": "naver.com",
- "s-nbcnews.com": "nbc_news",
- "richmedia247.com": "ncol",
- "needle.com": "needle",
- "nekudo.com": "nekudo.com",
- "neodatagroup.com": "neodata",
- "ad-srv.net": "neory",
- "contentspread.net": "neory",
- "neory-tm.com": "neory",
- "simptrack.com": "neory",
- "nerfherdersolo.com": "nerfherdersolo_com",
- "wemfbox.ch": "net-metrix",
- "cdnma.com": "net-results",
- "nr7.us": "net-results",
- "netavenir.com": "net_avenir",
- "netcommunities.com": "net_communities",
- "visibility-stats.com": "net_visibility",
- "netbiscuits.net": "netbiscuits",
- "bbtrack.net": "netbooster_group",
- "netbooster.com": "netbooster_group",
- "netflix.com": "netflix",
- "nflxext.com": "netflix",
- "nflximg.net": "netflix",
- "nflxso.net": "netflix",
- "nflxvideo.net": "netflix",
- "flxvpn.net": "netflix",
- "netflix.ca": "netflix",
- "netflix.com.au": "netflix",
- "netflix.net": "netflix",
- "netflixdnstest1.com": "netflix",
- "netflixdnstest10.com": "netflix",
- "netflixdnstest2.com": "netflix",
- "netflixdnstest3.com": "netflix",
- "netflixdnstest4.com": "netflix",
- "netflixdnstest5.com": "netflix",
- "netflixdnstest6.com": "netflix",
- "netflixdnstest7.com": "netflix",
- "netflixdnstest8.com": "netflix",
- "netflixdnstest9.com": "netflix",
- "netflixinvestor.com": "netflix",
- "netflixstudios.com": "netflix",
- "netflixtechblog.com": "netflix",
- "nflximg.com": "netflix",
- "netify.ai": "netify",
- "netzathleten-media.de": "netletix",
- "netminers.dk": "netminers",
- "netmining.com": "netmining",
- "netmng.com": "netmining",
- "stat.netmonitor.fi": "netmonitor",
- "glanceguide.com": "netratings_sitecensus",
- "imrworldwide.com": "netratings_sitecensus",
- "vizu.com": "netratings_sitecensus",
- "netrk.net": "netrk.net",
- "netseer.com": "netseer",
- "netshelter.net": "netshelter",
- "nsaudience.pl": "netsprint_audience",
- "nwidget.networkedblogs.com": "networkedblogs",
- "adadvisor.net": "neustar_adadvisor",
- "d1ros97qkrwjf5.cloudfront.net": "new_relic",
- "newrelic.com": "new_relic",
- "nr-data.net": "new_relic",
- "codestream.com": "new_relic",
- "newscgp.com": "newscgp.com",
- "nmcdn.us": "newsmax",
- "newstogram.com": "newstogram",
- "newsupdatedir.info": "newsupdatedir.info",
- "newsupdatewe.info": "newsupdatewe.info",
- "ads.newtention.net": "newtention",
- "ads.newtentionassets.net": "newtention",
- "nexage.com": "nexage",
- "nexeps.com": "nexeps.com",
- "nxtck.com": "next_performance",
- "track.nextuser.com": "next_user",
- "imgsrv.nextag.com": "nextag_roi_optimizer",
- "nextclick.pl": "nextclick",
- "nextstat.com": "nextstat",
- "d1d8vn0fpluuz7.cloudfront.net": "neytiv",
- "ads.ngageinc.com": "ngage_inc.",
- "nice264.com": "nice264.com",
- "nimblecommerce.com": "nimblecommerce",
- "nineanalytics.io": "nine_direct_digital",
- "cho-chin.com": "ninja_access_analysis",
- "donburako.com": "ninja_access_analysis",
- "hishaku.com": "ninja_access_analysis",
- "shinobi.jp": "ninja_access_analysis",
- "static.nirror.com": "nirror",
- "nitropay.com": "nitropay",
- "nk.pl": "nk.pl_widgets",
- "noaa.gov": "noaa.gov",
- "track.noddus.com": "noddus",
- "contextbar.ru": "nolix",
- "nonli.com": "nonli",
- "non.li": "nonli",
- "trkme.net": "nonstop_consulting",
- "noop.style": "noop.style",
- "nosto.com": "nosto.com",
- "adleadevent.com": "notify",
- "notifyfox.com": "notifyfox",
- "notion.so": "notion",
- "nowinteract.com": "now_interact",
- "npario-inc.net": "npario",
- "nplexmedia.com": "nplexmedia",
- "nrelate.com": "nrelate",
- "ns8.com": "ns8",
- "nt.vc": "nt.vc",
- "featurelink.com": "ntent",
- "ntp.org": "ntppool",
- "ntppool.org": "ntppool",
- "tracer.jp": "nttcom_online_marketing_solutions",
- "nuffnang.com": "nuffnang",
- "nuggad.net": "nugg.ad",
- "rotator.adjuggler.com": "nui_media",
- "numbers.md": "numbers.md",
- "channeliq.com": "numerator",
- "nyacampwk.com": "nyacampwk.com",
- "nyetm2mkch.com": "nyetm2mkch.com",
- "nyt.com": "nyt.com",
- "nytimes.com": "nyt.com",
- "o12zs3u2n.com": "o12zs3u2n.com",
- "o2.pl": "o2.pl",
- "o2online.de": "o2online.de",
- "oath.com": "oath_inc",
- "observerapp.com": "observer",
- "ocioso.com.br": "ocioso",
- "oclasrv.com": "oclasrv.com",
- "octapi.net": "octapi.net",
- "service.octavius.rocks": "octavius",
- "office.com": "office.com",
- "office.net": "office.net",
- "office365.com": "office365.com",
- "oghub.io": "oghub.io",
- "ohmystats.com": "oh_my_stats",
- "adohana.com": "ohana_advertising_network",
- "photorank.me": "olapic",
- "olark.com": "olark",
- "olx-st.com": "olx-st.com",
- "onap.io": "olx-st.com",
- "omarsys.com": "omarsys.com",
- "ometria.com": "ometria",
- "omgpm.com": "omg",
- "omniconvert.com": "omniconvert.com",
- "omnidsp.com": "omniscienta",
- "oms.eu": "oms",
- "omsnative.de": "oms",
- "onaudience.com": "onaudience",
- "btc-echode.api.oneall.com": "oneall",
- "tracking.onefeed.co.uk": "onefeed",
- "onesignal.com": "onesignal",
- "os.tc": "onesignal",
- "stat.onestat.com": "onestat",
- "ocdn.eu": "onet.pl",
- "onet.pl": "onet.pl",
- "onetag.com": "onetag",
- "s-onetag.com": "onetag",
- "onetrust.com": "onetrust",
- "fogl1onf.com": "onfocus.io",
- "onfocus.io": "onfocus.io",
- "onlinewebstat.com": "onlinewebstat",
- "onlinewebstats.com": "onlinewebstat",
- "onswipe.com": "onswipe",
- "onthe.io": "onthe.io",
- "moon-ray.com": "ontraport_autopilot",
- "moonraymarketing.com": "ontraport_autopilot",
- "ooyala.com": "ooyala.com",
- "openadex.dk": "open_adexchange",
- "247realmedia.com": "open_adstream",
- "oaserve.com": "open_adstream",
- "realmedia.com": "open_adstream",
- "realmediadigital.com": "open_adstream",
- "opensharecount.com": "open_share_count",
- "chatgpt.com": "openai",
- "oaistatic.com": "openai",
- "oaiusercontent.com": "openai",
- "openai.com": "openai",
- "oloadcdn.net": "openload",
- "openload.co": "openload",
- "openstat.net": "openstat",
- "spylog.com": "openstat",
- "spylog.ru": "openstat",
- "opentracker.net": "opentracker",
- "openwebanalytics.com": "openwebanalytics",
- "odnxs.net": "openx",
- "openx.net": "openx",
- "openx.org": "openx",
- "openxenterprise.com": "openx",
- "servedbyopenx.com": "openx",
- "adsummos.net": "operative_media",
- "opinary.com": "opinary",
- "opinionbar.com": "opinionbar",
- "emagazines.com": "oplytic",
- "allawnos.com": "oppo",
- "allawntech.com": "oppo",
- "heytapdl.com": "oppo",
- "heytapmobi.com": "oppo",
- "heytapmobile.com": "oppo",
- "oppomobile.com": "oppo",
- "opta.net": "opta.net",
- "optaim.com": "optaim",
- "cookielaw.org": "optanaon",
- "service.optify.net": "optify",
- "optimatic.com": "optimatic",
- "optmd.com": "optimax_media_delivery",
- "optimicdn.com": "optimicdn.com",
- "optimizely.com": "optimizely",
- "episerver.net": "optimizely",
- "optimonk.com": "optimonk",
- "mstrlytcs.com": "optinmonster",
- "optmnstr.com": "optinmonster",
- "optmstr.com": "optinmonster",
- "optnmstr.com": "optinmonster",
- "optincollect.com": "optinproject.com",
- "volvelle.tech": "optomaton",
- "ora.tv": "ora.tv",
- "oracleinfinity.io": "oracle_infinity",
- "instantservice.com": "oracle_live_help",
- "ts.istrack.com": "oracle_live_help",
- "rightnowtech.com": "oracle_rightnow",
- "rnengage.com": "oracle_rightnow",
- "orange.fr": "orange",
- "orangeads.fr": "orange",
- "ads.orange142.com": "orange142",
- "wanadoo.fr": "orange_france",
- "otracking.com": "orangesoda",
- "emxdgt.com": "orc_international",
- "static.ordergroove.com": "order_groove",
- "orelsite.ru": "orel_site",
- "otclick-adv.ru": "otclick",
- "othersearch.info": "othersearch.info",
- "otm-r.com": "otm-r.com",
- "otto.de": "otto.de",
- "ottogroup.media": "otto.de",
- "outbrain.com": "outbrain",
- "outbrainimg.com": "outbrain",
- "live.com": "outlook",
- "cloud.microsoft": "outlook",
- "hotmail.com": "outlook",
- "outlook.com": "outlook",
- "svc.ms": "outlook",
- "overheat.it": "overheat.it",
- "oewabox.at": "owa",
- "owneriq.net": "owneriq",
- "ownpage.fr": "ownpage",
- "owox.com": "owox.com",
- "adconnexa.com": "oxamedia",
- "adsbwm.com": "oxamedia",
- "oxomi.com": "oxomi.com",
- "oztam.com.au": "oztam",
- "pageanalytics.space": "pageanalytics.space",
- "blockmetrics.com": "pagefair",
- "pagefair.com": "pagefair",
- "pagefair.net": "pagefair",
- "btloader.com": "pagefair",
- "ghmedia.com": "pagescience",
- "777seo.com": "paid-to-promote",
- "paid-to-promote.net": "paid-to-promote",
- "ptp22.com": "paid-to-promote",
- "ptp33.com": "paid-to-promote",
- "paperg.com": "paperg",
- "pardot.com": "pardot",
- "d1z2jf7jlzjs58.cloudfront.net": "parsely",
- "parsely.com": "parsely",
- "partner-ads.com": "partner-ads",
- "passionfruitads.com": "passionfruit",
- "pathful.com": "pathful",
- "pay-hit.com": "pay-hit",
- "payclick.it": "payclick",
- "app.paykickstart.com": "paykickstart",
- "paypal.com": "paypal",
- "paypalobjects.com": "paypal",
- "pcvark.com": "pcvark.com",
- "peer39.com": "peer39",
- "peer39.net": "peer39",
- "peer5.com": "peer5.com",
- "peerius.com": "peerius",
- "pendo.io": "pendo.io",
- "pepper.com": "pepper.com",
- "gopjn.com": "pepperjam",
- "pjatr.com": "pepperjam",
- "pjtra.com": "pepperjam",
- "pntra.com": "pepperjam",
- "pntrac.com": "pepperjam",
- "pntrs.com": "pepperjam",
- "player.pepsia.com": "pepsia",
- "perfdrive.com": "perfdrive.com",
- "perfectaudience.com": "perfect_audience",
- "prfct.co": "perfect_audience",
- "perfectmarket.com": "perfect_market",
- "perfops.io": "perfops",
- "performgroup.com": "perform_group",
- "analytics.performable.com": "performable",
- "performancing.com": "performancing_metrics",
- "performax.cz": "performax",
- "perimeterx.net": "perimeterx.net",
- "permutive.com": "permutive",
- "persgroep.net": "persgroep",
- "persianstat.com": "persianstat",
- "code.pers.io": "persio",
- "counter.personyze.com": "personyze",
- "petametrics.com": "petametrics",
- "ads.pheedo.com": "pheedo",
- "app.phonalytics.com": "phonalytics",
- "d2bgg7rjywcwsy.cloudfront.net": "phunware",
- "piguiqproxy.com": "piguiqproxy.com",
- "trgt.eu": "pilot",
- "pingdom.net": "pingdom",
- "pinimg.com": "pinterest",
- "pinterest.com": "pinterest",
- "app.pipz.io": "pipz",
- "disabled.invalid": "piwik",
- "piwik.pro": "piwik_pro_analytics_suite",
- "adrta.com": "pixalate",
- "app.pixelpop.co": "pixel_union",
- "pixfuture.net": "pixfuture",
- "vast1.pixfuture.com": "pixfuture",
- "piximedia.com": "piximedia",
- "pizzaandads.com": "pizzaandads_com",
- "ads.placester.net": "placester",
- "d3uemyw1e5n0jw.cloudfront.net": "placester",
- "pladform.com": "pladform.ru",
- "tag.bi.serviceplan.com": "plan.net_experience_cloud",
- "pfrm.co": "platform360",
- "impact-ad.jp": "platformone",
- "loveadvert.ru": "play_by_mamba",
- "playbuzz.com": "playbuzz.com",
- "pof.com": "plenty_of_fish",
- "plex.bz": "plex",
- "plex.direct": "plex",
- "plex.tv": "plex",
- "analytics.plex.tv": "plex_metrics",
- "metrics.plex.tv": "plex_metrics",
- "plista.com": "plista",
- "plugrush.com": "plugrush",
- "pluso.ru": "pluso.ru",
- "plutusads.com": "plutusads",
- "pmddby.com": "pmddby.com",
- "pnamic.com": "pnamic.com",
- "po.st": "po.st",
- "widgets.getpocket.com": "pocket",
- "pocketcents.com": "pocketcents",
- "pointificsecure.com": "pointific",
- "pointroll.com": "pointroll",
- "poirreleast.club": "poirreleast.club",
- "mediavoice.com": "polar.me",
- "polar.me": "polar.me",
- "polarmobile.com": "polar.me",
- "polldaddy.com": "polldaddy",
- "polyad.net": "polyad",
- "polyfill.io": "polyfill.io",
- "popads.net": "popads",
- "popadscdn.net": "popads",
- "popcash.net": "popcash",
- "popcashjs.b-cdn.net": "popcash",
- "desv383oqqc0.cloudfront.net": "popcorn_metrics",
- "popin.cc": "popin.cc",
- "cdn.popmyads.com": "popmyads",
- "poponclick.com": "poponclick",
- "populis.com": "populis",
- "populisengage.com": "populis",
- "phncdn.com": "pornhub",
- "pornhub.com": "pornhub",
- "prscripts.com": "pornwave",
- "prstatics.com": "pornwave",
- "prwidgets.com": "pornwave",
- "barra.brasil.gov.br": "porta_brazil",
- "postaffiliatepro.com": "post_affiliate_pro",
- "powerlinks.com": "powerlinks",
- "powerreviews.com": "powerreviews",
- "powr.io": "powr.io",
- "api.pozvonim.com": "pozvonim",
- "prebid.org": "prebid",
- "precisionclick.com": "precisionclick",
- "adserver.com.br": "predicta",
- "predicta.net": "predicta",
- "prnx.net": "premonix",
- "ppjol.com": "press",
- "ppjol.net": "press",
- "api.pressly.com": "pressly",
- "pricegrabber.com": "pricegrabber",
- "cdn.pricespider.com": "pricespider",
- "pmdrecrute.com": "prismamediadigital.com",
- "prismamediadigital.com": "prismamediadigital.com",
- "privy.com": "privy.com",
- "pswec.com": "proclivity",
- "prodperfect.com": "prodperfect",
- "lib.productsup.io": "productsup",
- "proadsnet.com": "profiliad",
- "profitshare.ro": "profitshare",
- "tracking.proformics.com": "proformics",
- "programattik.com": "programattik",
- "projectwonderful.com": "project_wonderful",
- "propelmarketing.com": "propel_marketing",
- "oclaserver.com": "propeller_ads",
- "onclasrv.com": "propeller_ads",
- "onclickads.net": "propeller_ads",
- "onclkds.com": "propeller_ads",
- "propellerads.com": "propeller_ads",
- "propellerpops.com": "propeller_ads",
- "proper.io": "propermedia",
- "st-a.props.id": "props",
- "propvideo.net": "propvideo_net",
- "tr.prospecteye.com": "prospecteye",
- "prosperent.com": "prosperent",
- "prostor-lite.ru": "prostor",
- "reports.proton.me": "proton_ag",
- "providesupport.com": "provide_support",
- "proximic.com": "proximic",
- "proxistore.com": "proxistore.com",
- "pscp.tv": "pscp.tv",
- "pstatic.net": "pstatic.net",
- "psyma.com": "psyma",
- "ptengine.jp": "pt_engine",
- "pub-fit.com": "pub-fit",
- "pub.network": "pub.network",
- "learnpipe.com": "pubble",
- "pubble.co": "pubble",
- "pubdirecte.com": "pubdirecte",
- "pubgears.com": "pubgears",
- "publicidees.com": "public_ideas",
- "publicidad.net": "publicidad.net",
- "intgr.net": "publir",
- "pubmatic.com": "pubmatic",
- "pubnub.com": "pubnub.com",
- "puboclic.com": "puboclic",
- "pulpix.com": "pulpix.com",
- "tentaculos.net": "pulpo_media",
- "pulse360.com": "pulse360",
- "pulseinsights.com": "pulse_insights",
- "contextweb.com": "pulsepoint",
- "pulsepoint.com": "pulsepoint",
- "punchtab.com": "punchtab",
- "purch.com": "purch",
- "servebom.com": "purch",
- "purechat.com": "pure_chat",
- "cdn.pprl.io": "pureprofile",
- "oopt.fr": "purlive",
- "puserving.com": "puserving.com",
- "push.world": "push.world",
- "pushengage.com": "push_engage",
- "pushame.com": "pushame.com",
- "zebra.pushbullet.com": "pushbullet",
- "pushcrew.com": "pushcrew",
- "pusher.com": "pusher.com",
- "pusherapp.com": "pusher.com",
- "pushnative.com": "pushnative.com",
- "cdn.pushnews.eu": "pushnews",
- "pushno.com": "pushno.com",
- "pushwhy.com": "pushwhy.com",
- "pushwoosh.com": "pushwoosh.com",
- "pvclouds.com": "pvclouds.com",
- "ads.q1media.com": "q1media",
- "q1mediahydraplatform.com": "q1media",
- "q-divisioncdn.de": "q_division",
- "qbaka.net": "qbaka",
- "track.qcri.org": "qcri_analytics",
- "collect.qeado.com": "qeado",
- "s.lianmeng.360.cn": "qihoo_360",
- "qq.com": "qq.com",
- "qrius.me": "qrius",
- "qualaroo.com": "qualaroo",
- "qualcomm.com": "qualcomm",
- "gpsonextra.net": "qualcomm_location_service",
- "izatcloud.net": "qualcomm_location_service",
- "xtracloud.net": "qualcomm_location_service",
- "bluecava.com": "qualia",
- "qualtrics.com": "qualtrics",
- "quantcast.com": "quantcast",
- "quantserve.com": "quantcast",
- "quantcount.com": "quantcount",
- "quantummetric.com": "quantum_metric",
- "quartic.pl": "quartic.pl",
- "quarticon.com": "quartic.pl",
- "d3c3cq33003psk.cloudfront.net": "qubit",
- "qubit.com": "qubit",
- "easyresearch.se": "questback",
- "queue-it.net": "queue-it",
- "quick-counter.net": "quick-counter.net",
- "adsonar.com": "quigo_adsonar",
- "qnsr.com": "quinstreet",
- "quinstreet.com": "quinstreet",
- "thecounter.com": "quinstreet",
- "quintelligence.com": "quintelligence",
- "qservz.com": "quisma",
- "quisma.com": "quisma",
- "quora.com": "quora.com",
- "ads-digitalkeys.com": "r_advertising",
- "rackcdn.com": "rackcdn.com",
- "radarurl.com": "radarurl",
- "dsa.csdata1.com": "radial",
- "gwallet.com": "radiumone",
- "r1-cdn.net": "radiumone",
- "widget.raisenow.com": "raisenow",
- "mediaforge.com": "rakuten_display",
- "rmtag.com": "rakuten_display",
- "rakuten.co.jp": "rakuten_globalmarket",
- "trafficgate.net": "rakuten_globalmarket",
- "mtwidget04.affiliate.rakuten.co.jp": "rakuten_widget",
- "xml.affilliate.rakuten.co.jp": "rakuten_widget",
- "rambler.ru": "rambler",
- "top100.ru": "rambler",
- "rapidspike.com": "rapidspike",
- "ravelin.com": "ravelin",
- "rawgit.com": "rawgit",
- "raygun.io": "raygun",
- "count.rbc.ru": "rbc_counter",
- "rcs.it": "rcs.it",
- "rcsmediagroup.it": "rcs.it",
- "d335luupugsy2.cloudfront.net": "rd_station",
- "rea-group.com": "rea_group",
- "reagroupdata.com.au": "rea_group",
- "reastatic.net": "rea_group",
- "d12ulf131zb0yj.cloudfront.net": "reachforce",
- "reachforce.com": "reachforce",
- "reachjunction.com": "reachjunction",
- "cdn.rlets.com": "reachlocal",
- "reachlocal.com": "reachlocal",
- "reachlocallivechat.com": "reachlocal",
- "rlcdn.net": "reachlocal",
- "plugin.reactful.com": "reactful",
- "reactivpub.fr": "reactivpub",
- "skinected.com": "reactx",
- "readrboard.com": "readerboard",
- "readme.com": "readme",
- "readme.io": "readme",
- "readspeaker.com": "readspeaker.com",
- "realclick.co.kr": "realclick",
- "realestate.com.au": "realestate.com.au",
- "realperson.de": "realperson.de",
- "powermarketing.com": "realtime",
- "realtime.co": "realtime",
- "webspectator.com": "realtime",
- "dcniko1cv0rz.cloudfront.net": "realytics",
- "realytics.io": "realytics",
- "static.rbl.ms": "rebel_mouse",
- "recaptcha.net": "recaptcha",
- "recettes.net": "recettes.net",
- "static.recopick.com": "recopick",
- "recreativ.ru": "recreativ",
- "analytics.recruitics.com": "recruitics",
- "analytics.cohesionapps.com": "red_ventures",
- "cdn.cohesionapps.com": "red_ventures",
- "redblue.de": "redblue_de",
- "atendesoftware.pl": "redcdn.pl",
- "redd.it": "reddit",
- "reddit-image.s3.amazonaws.com": "reddit",
- "reddit.com": "reddit",
- "redditmedia.com": "reddit",
- "redditstatic.com": "reddit",
- "redhelper.ru": "redhelper",
- "pixelinteractivemedia.com": "redlotus",
- "triggit.com": "redlotus",
- "grt01.com": "redtram",
- "grt02.com": "redtram",
- "redtram.com": "redtram",
- "rdtcdn.com": "redtube.com",
- "redtube.com": "redtube.com",
- "reduxmedia.com": "redux_media",
- "reduxmediagroup.com": "redux_media",
- "reedbusiness.net": "reed_business_information",
- "reembed.com": "reembed.com",
- "reevoo.com": "reevoo.com",
- "refericon.pl": "refericon",
- "ads.referlocal.com": "referlocal",
- "refersion.com": "refersion",
- "refinedads.com": "refined_labs",
- "product.reflektion.com": "reflektion",
- "reformal.ru": "reformal",
- "reinvigorate.net": "reinvigorate",
- "convertglobal.com": "rekko",
- "convertglobal.s3.amazonaws.com": "rekko",
- "dnhgz729v27ca.cloudfront.net": "rekko",
- "reklamstore.com": "reklam_store",
- "ad.reklamport.com": "reklamport",
- "delivery.reklamz.com": "reklamz",
- "adimg.rekmob.com": "rekmob",
- "relap.io": "relap",
- "svtrd.com": "relay42",
- "synovite-scripts.com": "relay42",
- "tdn.r42tag.com": "relay42",
- "relestar.com": "relestar",
- "relevant4.com": "relevant4.com",
- "remintrex.com": "remintrex",
- "remove.video": "remove.video",
- "rp-api.com": "repost.us",
- "republer.com": "republer.com",
- "resmeter.respublica.al": "res-meter",
- "researchnow.com": "research_now",
- "reson8.com": "resonate_networks",
- "respondhq.com": "respond",
- "adinsight.com": "responsetap",
- "adinsight.eu": "responsetap",
- "responsetap.com": "responsetap",
- "data.resultlinks.com": "result_links",
- "sli-system.com": "resultspage.com",
- "retailrocket.net": "retailrocket.net",
- "retailrocket.ru": "retailrocket.net",
- "shopify.retargetapp.com": "retarget_app",
- "retargeter.com": "retargeter_beacon",
- "retargeting.cl": "retargeting.cl",
- "d1stxfv94hrhia.cloudfront.net": "retention_science",
- "waves.retentionscience.com": "retention_science",
- "reutersmedia.net": "reuters_media",
- "revcontent.com": "revcontent",
- "socialtwist.com": "reve_marketing",
- "revenue.com": "revenue",
- "clkads.com": "revenuehits",
- "clkmon.com": "revenuehits",
- "clkrev.com": "revenuehits",
- "clksite.com": "revenuehits",
- "eclkspbn.com": "revenuehits",
- "imageshack.host": "revenuehits",
- "revenuemantra.com": "revenuemantra",
- "revive-adserver.com": "revive_adserver",
- "revolvermaps.com": "revolver_maps",
- "cts.tradepub.com": "revresponse",
- "revresponse.com": "revresponse",
- "incontext.pl": "rewords",
- "pl-engine.intextad.net": "rewords",
- "addesktop.com": "rhythmone",
- "1rx.io": "rhythmone_beacon",
- "ria.ru": "ria.ru",
- "rmbn.ru": "rich_media_banner_network",
- "ics0.com": "richrelevance",
- "richrelevance.com": "richrelevance",
- "ringier.ch": "ringier.ch",
- "meteorsolutions.com": "rio_seo",
- "riskified.com": "riskfield.com",
- "rncdn3.com": "rncdn3.com",
- "ro2.biz": "ro2.biz",
- "rbxcdn.com": "roblox",
- "getrockerbox.com": "rockerbox",
- "rocket.la": "rocket.ia",
- "trk.sodoit.com": "roi_trax",
- "collector.roistat.com": "roistat",
- "rollad.ru": "rollad",
- "d37gvrvc0wt4s1.cloudfront.net": "rollbar",
- "get.roost.me": "roost",
- "getrooster.com": "rooster",
- "rqtrk.eu": "roq.ad",
- "rotaban.ru": "rotaban",
- "routenplaner-karten.com": "routenplaner-karten.com",
- "rovion.com": "rovion",
- "rsspump.com": "rsspump",
- "creativecdn.com": "rtb_house",
- "rvty.net": "rtblab",
- "rtbsuperhub.com": "rtbsuperhub.com",
- "rtl.de": "rtl_group",
- "static-fra.de": "rtl_group",
- "technical-service.net": "rtl_group",
- "rtmark.net": "rtmark.net",
- "dpclk.com": "rubicon",
- "mobsmith.com": "rubicon",
- "nearbyad.com": "rubicon",
- "rubiconproject.com": "rubicon",
- "tracker.ruhrgebiet-onlineservices.de": "ruhrgebiet",
- "click.rummycircle.com": "rummycircle",
- "runadtag.com": "run",
- "rundsp.com": "run",
- "un-syndicate.com": "runative",
- "cdn.secretrune.com": "rune",
- "runmewivel.com": "runmewivel.com",
- "rhythmxchange.com": "rythmxchange",
- "s24.com": "s24_com",
- "s3xified.com": "s3xified.com",
- "camp.sabavision.com": "sabavision",
- "sageanalyst.net": "sagemetrics",
- "sail-horizon.com": "sailthru_horizon",
- "sail-personalize.com": "sailthru_horizon",
- "sailthru.com": "sailthru_horizon",
- "d16fk4ms6rqz1v.cloudfront.net": "salecycle",
- "salecycle.com": "salecycle",
- "api.salesfeed.com": "sales_feed",
- "salesmanago.com": "sales_manago",
- "salesmanago.pl": "sales_manago",
- "force.com": "salesforce.com",
- "salesforce.com": "salesforce.com",
- "liveagentforsalesforce.com": "salesforce_live_agent",
- "salesforceliveagent.com": "salesforce_live_agent",
- "msgapp.com": "salesfusion",
- "salespidermedia.com": "salespider_media",
- "salesviewer.com": "salesviewer",
- "samba.tv": "samba.tv",
- "game-mode.net": "samsung",
- "gos-gsp.io": "samsung",
- "lldns.net": "samsung",
- "pavv.co.kr": "samsung",
- "remotesamsung.com": "samsung",
- "samsung-gamelauncher.com": "samsung",
- "samsung.co.kr": "samsung",
- "samsung.com": "samsung",
- "samsung.com.cn": "samsung",
- "samsungcloud.com": "samsung",
- "samsungcloudcdn.com": "samsung",
- "samsungcloudprint.com": "samsung",
- "samsungcloudsolution.com": "samsung",
- "samsungcloudsolution.net": "samsung",
- "samsungelectronics.com": "samsung",
- "samsunghealth.com": "samsung",
- "samsungiotcloud.com": "samsung",
- "samsungknox.com": "samsung",
- "samsungnyc.com": "samsung",
- "samsungosp.com": "samsung",
- "samsungotn.net": "samsung",
- "samsungpositioning.com": "samsung",
- "samsungqbe.com": "samsung",
- "samsungrm.net": "samsung",
- "samsungrs.com": "samsung",
- "samsungsemi.com": "samsung",
- "samsungsetup.com": "samsung",
- "samsungusa.com": "samsung",
- "secb2b.com": "samsung",
- "smartthings.com": "samsung",
- "adgear.com": "samsungads",
- "adgrx.com": "samsungads",
- "samsungacr.com": "samsungads",
- "samsungadhub.com": "samsungads",
- "samsungads.com": "samsungads",
- "samsungtifa.com": "samsungads",
- "aibixby.com": "samsungapps",
- "findmymobile.samsung.com": "samsungapps",
- "samsapps.cust.lldns.net": "samsungapps",
- "samsung-omc.com": "samsungapps",
- "samsungapps.com": "samsungapps",
- "samsungdiroute.net": "samsungapps",
- "samsungdive.com": "samsungapps",
- "samsungdm.com": "samsungapps",
- "samsungdmroute.com": "samsungapps",
- "samsungmdec.com": "samsungapps",
- "samsungvisioncloud.com": "samsungapps",
- "sbixby.com": "samsungapps",
- "ospserver.net": "samsungmobile",
- "samsungdms.net": "samsungmobile",
- "samsungmax.com": "samsungmobile",
- "samsungmobile.com": "samsungmobile",
- "secmobilesvc.com": "samsungmobile",
- "push.samsungosp.com": "samsungpush",
- "pushmessage.samsung.com": "samsungpush",
- "scs.samsungqbe.com": "samsungpush",
- "ssp.samsung.com": "samsungpush",
- "samsungsds.com": "samsungsds",
- "internetat.tv": "samsungtv",
- "samsungcloud.tv": "samsungtv",
- "tizenservice.com": "samsungtv",
- "ilsemedia.nl": "sanoma.fi",
- "sanoma.fi": "sanoma.fi",
- "d13im3ek7neeqp.cloudfront.net": "sap_crm",
- "d28ethi6slcjbm.cloudfront.net": "sap_crm",
- "d2uevgmgh16uk4.cloudfront.net": "sap_crm",
- "d3m83gvgzupli.cloudfront.net": "sap_crm",
- "saas.seewhy.com": "sap_crm",
- "leadforce1.com": "sap_sales_cloud",
- "vlog.leadformix.com": "sap_sales_cloud",
- "sap-xm.org": "sap_xm",
- "sape.ru": "sape.ru",
- "js.sl.pt": "sapo_ads",
- "aimatch.com": "sas",
- "sas.com": "sas",
- "say.ac": "say.ac",
- "ads.saymedia.com": "say_media",
- "srv.sayyac.net": "sayyac",
- "scarabresearch.com": "scarabresearch",
- "schibsted.com": "schibsted",
- "schibsted.io": "schibsted",
- "schneevonmorgen.com": "schneevonmorgen.com",
- "svonm.com": "schneevonmorgen.com",
- "rockabox.co": "scoota",
- "scorecardresearch.com": "scorecard_research_beacon",
- "scoreresearch.com": "scorecard_research_beacon",
- "scrsrch.com": "scorecard_research_beacon",
- "securestudies.com": "scorecard_research_beacon",
- "scout.scoutanalytics.net": "scout_analytics",
- "scribblelive.com": "scribblelive",
- "scribol.com": "scribol",
- "analytics.snidigital.com": "scripps_analytics",
- "scroll.com": "scroll",
- "scupio.com": "scupio",
- "search123.uk.com": "search123",
- "searchforce.net": "searchforce",
- "searchignite.com": "searchignite",
- "srtk.net": "searchrev",
- "tacticalrepublic.com": "second_media",
- "sectigo.com": "sectigo",
- "securedtouch.com": "securedtouch",
- "securedvisit.com": "securedvisit",
- "bacontent.de": "seeding_alliance",
- "nativendo.de": "seeding_alliance",
- "seedtag.com": "seedtag.com",
- "svlu.net": "seevolution",
- "d2dq2ahtl5zl1z.cloudfront.net": "segment",
- "d47xnnr8b1rki.cloudfront.net": "segment",
- "segment.com": "segment",
- "segment.io": "segment",
- "rutarget.ru": "segmento",
- "segmint.net": "segmint",
- "sekindo.com": "sekindo",
- "sellpoint.net": "sellpoints",
- "sellpoints.com": "sellpoints",
- "semantiqo.com": "semantiqo.com",
- "semasio.net": "semasio",
- "semilo.com": "semilo",
- "semknox.com": "semknox.com",
- "sibautomation.com": "sendinblue",
- "sendpulse.com": "sendpulse.com",
- "sendsay.ru": "sendsay",
- "track.sensedigital.in": "sense_digital",
- "static.sensorsdata.cn": "sensors_data",
- "sentifi.com": "sentifi.com",
- "d3nslu0hdya83q.cloudfront.net": "sentry",
- "getsentry.com": "sentry",
- "ravenjs.com": "sentry",
- "sentry.io": "sentry",
- "sepyra.com": "sepyra",
- "d2oh4tlt9mrke9.cloudfront.net": "sessioncam",
- "sessioncam.com": "sessioncam",
- "sessionly.io": "sessionly",
- "71i.de": "sevenone_media",
- "sexad.net": "sexadnetwork",
- "ads.sexinyourcity.com": "sexinyourcity",
- "sextracker.com": "sextracker",
- "sexypartners.net": "sexypartners.net",
- "im.cz": "seznam",
- "imedia.cz": "seznam",
- "szn.cz": "seznam",
- "dtym7iokkjlif.cloudfront.net": "shareaholic",
- "shareaholic.com": "shareaholic",
- "shareasale.com": "shareasale",
- "quintrics.nl": "sharecompany",
- "sharecompany.nl": "sharecompany",
- "sharepointonline.com": "sharepoint",
- "onmicrosoft.com": "sharepoint",
- "sharepoint.com": "sharepoint",
- "sharethis.com": "sharethis",
- "shareth.ru": "sharethrough",
- "sharethrough.com": "sharethrough",
- "marketingautomation.services": "sharpspring",
- "sharpspring.com": "sharpspring",
- "sheego.de": "sheego.de",
- "services.sheerid.com": "sheerid",
- "shinystat.com": "shinystat",
- "shinystat.it": "shinystat",
- "app.shoptarget.com.br": "shop_target",
- "retargeter.com.br": "shop_target",
- "shopauskunft.de": "shopauskunft.de",
- "shopgate.com": "shopgate.com",
- "shopify.com": "shopify",
- "shopifycdn.com": "shopify",
- "cdn.shopify.com": "shopify",
- "myshopify.com": "shopify",
- "shop.app": "shopify",
- "shopify.co.za": "shopify",
- "shopify.com.au": "shopify",
- "shopify.com.mx": "shopify",
- "shopify.dev": "shopify",
- "shopifyapps.com": "shopify",
- "shopifycdn.net": "shopify",
- "shopifynetwork.com": "shopify",
- "shopifypreview.com": "shopify",
- "shopifysvc.com": "shopify_stats",
- "stats.shopify.com": "shopify_stats",
- "v.shopify.com": "shopify_stats",
- "shopifycloud.com": "shopifycloud.com",
- "shopperapproved.com": "shopper_approved",
- "shoppingshadow.com": "shopping_com",
- "tracking.shopping-flux.com": "shopping_flux",
- "shoprunner.com": "shoprunner",
- "shopsocially.com": "shopsocially",
- "shopzilla.com": "shopzilla",
- "shortnews.de": "shortnews",
- "showrss.info": "showrss",
- "shink.in": "shrink",
- "shutterstock.com": "shutterstock",
- "siblesectiveal.club": "siblesectiveal.club",
- "d3v27wwd40f0xu.cloudfront.net": "sidecar",
- "getsidecar.com": "sidecar",
- "dtlilztwypawv.cloudfront.net": "sift_science",
- "siftscience.com": "sift_science",
- "btstatic.com": "signal",
- "signal.co": "signal",
- "thebrighttag.com": "signal",
- "cdn-scripts.signifyd.com": "signifyd",
- "signifyd.com": "signifyd",
- "gw-services.vtrenz.net": "silverpop",
- "mkt51.net": "silverpop",
- "mkt912.com": "silverpop",
- "mkt922.com": "silverpop",
- "mkt941.com": "silverpop",
- "pages01.net": "silverpop",
- "pages02.net": "silverpop",
- "pages04.net": "silverpop",
- "pages05.net": "silverpop",
- "similardeals.net": "similardeals.net",
- "similarweb.com": "similarweb",
- "similarweb.io": "similarweb",
- "d8rk54i4mohrb.cloudfront.net": "simplereach",
- "simplereach.com": "simplereach",
- "simpli.fi": "simpli.fi",
- "sina.com.cn": "sina",
- "sinaimg.cn": "sina_cdn",
- "reporting.singlefeed.com": "singlefeed",
- "sddan.com": "sirdata",
- "site24x7rum.com": "site24x7",
- "site24x7rum.eu": "site24x7",
- "sitebooster-fjfmworld-production.azureedge.net": "site_booster",
- "a5.ogt.jp": "site_stratos",
- "siteapps.com": "siteapps",
- "sitebro.com": "sitebro",
- "sitebro.com.tw": "sitebro",
- "sitebro.net": "sitebro",
- "sitebro.tw": "sitebro",
- "siteheart.com": "siteheart",
- "siteimprove.com": "siteimprove",
- "siteimproveanalytics.com": "siteimprove_analytics",
- "sitelabweb.com": "sitelabweb.com",
- "sitemeter.com": "sitemeter",
- "pixel.ad": "sitescout",
- "sitescout.com": "sitescout",
- "ad.sitemaji.com": "sitetag",
- "sitetag.us": "sitetag",
- "analytics.sitewit.com": "sitewit",
- "ads.sixapart.com": "six_apart_advertising",
- "sixt-neuwagen.de": "sixt-neuwagen.de",
- "skadtec.com": "skadtec.com",
- "redirectingat.com": "skimlinks",
- "skimlinks.com": "skimlinks",
- "skimresources.com": "skimlinks",
- "analytics.skroutz.gr": "skroutz",
- "skyglue.com": "skyglue",
- "skype.com": "skype",
- "skypeassets.com": "skype",
- "skysa.com": "skysa",
- "skyscnr.com": "skyscnr.com",
- "slack-edge.com": "slack",
- "slack-imgs.com": "slack",
- "slack.com": "slack",
- "slackb.com": "slack",
- "slashdot.org": "slashdot_widget",
- "sleeknotestaticcontent.sleeknote.com": "sleeknote",
- "resultspage.com": "sli_systems",
- "builder.extensionfactory.com": "slice_factory",
- "freeskreen.com": "slimcutmedia",
- "slingpic.com": "slingpic",
- "smaato.net": "smaato",
- "smart4ads.com": "smart4ads",
- "sascdn.com": "smart_adserver",
- "smartadserver.com": "smart_adserver",
- "styria-digital.com": "smart_adserver",
- "yoc-adserver.com": "smart_adserver",
- "smartcall.kz": "smart_call",
- "getsmartcontent.com": "smart_content",
- "smartdevicemedia.com": "smart_device_media",
- "x.cnt.my": "smart_leads",
- "tracking.smartselling.cz": "smart_selling",
- "bepolite.eu": "smartad",
- "smartbn.ru": "smartbn",
- "smartclick.net": "smartclick.net",
- "smartclip.net": "smartclip",
- "smartcontext.pl": "smartcontext",
- "d1n00d49gkbray.cloudfront.net": "smarter_remarketer",
- "dhxtx5wtu812h.cloudfront.net": "smarter_remarketer",
- "smartertravel.com": "smarter_travel",
- "travelsmarter.net": "smarter_travel",
- "smct.co": "smarterclick",
- "smartertrack.com": "smartertrack",
- "smartlink.cool": "smartlink.cool",
- "getsmartlook.com": "smartlook",
- "smartlook.com": "smartlook",
- "smartstream.tv": "smartstream.tv",
- "smartsuppchat.com": "smartsupp_chat",
- "smi2.net": "smi2.ru",
- "smi2.ru": "smi2.ru",
- "stat.media": "smi2.ru",
- "cdn.smooch.io": "smooch",
- "smowtion.com": "smowtion",
- "smxindia.in": "smx_ventures",
- "smyte.com": "smyte",
- "snacktv.de": "snacktv",
- "snap.com": "snap",
- "addlive.io": "snap",
- "feelinsonice.com": "snap",
- "sc-cdn.net": "snap",
- "sc-corp.net": "snap",
- "sc-gw.com": "snap",
- "sc-jpl.com": "snap",
- "sc-prod.net": "snap",
- "snap-dev.net": "snap",
- "snapads.com": "snap",
- "snapkit.com": "snap",
- "snapengage.com": "snap_engage",
- "sc-static.net": "snapchat",
- "snapchat.com": "snapchat",
- "snapcraft.io": "snapcraft",
- "snapcraftcontent.com": "snapcraft",
- "h-bid.com": "snigelweb",
- "eu2.snoobi.eu": "snoobi",
- "snoobi.com": "snoobi_analytics",
- "d346whrrklhco7.cloudfront.net": "snowplow",
- "d78fikflryjgj.cloudfront.net": "snowplow",
- "dc8xl0ndzn2cb.cloudfront.net": "snowplow",
- "playwire.com": "snowplow",
- "snplow.net": "snowplow",
- "go-mpulse.net": "soasta_mpulse",
- "mpstat.us": "soasta_mpulse",
- "tiaa-cref.org": "soasta_mpulse",
- "sociablelabs.com": "sociable_labs",
- "socialamp.com": "social_amp",
- "socialannex.com": "social_annex",
- "soclminer.com.br": "social_miner",
- "duu8lzqdm8tsz.cloudfront.net": "socialbeat",
- "ratevoice.com": "socialrms",
- "sociaplus.com": "sociaplus.com",
- "sociomantic.com": "sociomantic",
- "images.sohu.com": "sohu",
- "sojern.com": "sojern",
- "sokrati.com": "sokrati",
- "solads.media": "solads.media",
- "solaredge.com": "solaredge",
- "solidopinion.com": "solidopinion",
- "pixel.solvemedia.com": "solve_media",
- "soma2.de": "soma_2",
- "mobileadtrading.com": "somoaudience",
- "sonobi.com": "sonobi",
- "sonos.com": "sonos",
- "sophus3.com": "sophus3",
- "deployads.com": "sortable",
- "sndcdn.com": "soundcloud",
- "soundcloud.com": "soundcloud",
- "provenpixel.com": "sourceknowledge_pixel",
- "decenthat.com": "sourcepoint",
- "summerhamster.com": "sourcepoint",
- "d3pkae9owd2lcf.cloudfront.net": "sovrn",
- "lijit.com": "sovrn",
- "onscroll.com": "sovrn_viewability_solutions",
- "rts.sparkstudios.com": "spark_studios",
- "sparkasse.de": "sparkasse.de",
- "speakpipe.com": "speakpipe",
- "adviva.net": "specific_media",
- "specificclick.net": "specific_media",
- "specificmedia.com": "specific_media",
- "spectate.com": "spectate",
- "speedshiftmedia.com": "speed_shift_media",
- "speedcurve.com": "speedcurve",
- "admarket.entireweb.com": "speedyads",
- "affiliate.entireweb.com": "speedyads",
- "sa.entireweb.com": "speedyads",
- "speee-ad.akamaized.net": "speee",
- "sphere.com": "sphere",
- "surphace.com": "sphere",
- "api.spheremall.com": "spheremall",
- "zdwidget3-bs.sphereup.com": "sphereup",
- "static.sspicy.ru": "spicy",
- "spider.ad": "spider.ad",
- "metrics.spiderads.eu": "spider_ads",
- "spn.ee": "spinnakr",
- "embed.spokenlayer.com": "spokenlayer",
- "spongecell.com": "spongecell",
- "sponsorads.de": "sponsorads.de",
- "sportsbetaffiliates.com.au": "sportsbet_affiliates",
- "spot.im": "spot.im",
- "spoteffects.net": "spoteffect",
- "scdn.co": "spotify",
- "spotify.com": "spotify",
- "pscdn.co": "spotify",
- "spotifycdn.com": "spotify",
- "spotifycdn.net": "spotify",
- "spotilocal.com": "spotify",
- "embed.spotify.com": "spotify_embed",
- "spotscenered.info": "spotscenered.info",
- "spotx.tv": "spotxchange",
- "spotxcdn.com": "spotxchange",
- "spotxchange.com": "spotxchange",
- "spoutable.com": "spoutable",
- "cdn.springboardplatform.com": "springboard",
- "springserve.com": "springserve",
- "pixel.sprinklr.com": "sprinklr",
- "stat.sputnik.ru": "sputnik",
- "email-match.com": "squadata",
- "squarespace.com": "squarespace.com",
- "srvtrck.com": "srvtrck.com",
- "srvvtrk.com": "srvvtrk.com",
- "sstatic.net": "sstatic.net",
- "hatena.ne.jp": "st-hatena",
- "st-hatena.com": "st-hatena",
- "stackadapt.com": "stackadapt",
- "stackpathdns.com": "stackpathdns.com",
- "stailamedia.com": "stailamedia_com",
- "stalluva.pro": "stalluva.pro",
- "startappservice.com": "startapp",
- "hit.stat24.com": "stat24",
- "adstat.4u.pl": "stat4u",
- "stat.4u.pl": "stat4u",
- "statcounter.com": "statcounter",
- "stathat.com": "stathat",
- "statisfy.net": "statisfy",
- "statsy.net": "statsy.net",
- "statuscake.com": "statuscake",
- "statuspage.io": "statuspage.io",
- "stspg-customer.com": "statuspage.io",
- "stayfriends.de": "stayfriends.de",
- "steelhousemedia.com": "steelhouse",
- "steepto.com": "steepto.com",
- "stepstone.com": "stepstone.com",
- "4stats.de": "stetic",
- "stetic.com": "stetic",
- "stickyadstv.com": "stickyads",
- "stocktwits.com": "stocktwits",
- "storify.com": "storify",
- "storygize.net": "storygize",
- "bizsolutions.strands.com": "strands_recommender",
- "strava.com": "strava",
- "mailfoogae.appspot.com": "streak",
- "streamotion.com.au": "streamotion",
- "streamrail.com": "streamrail.com",
- "streamrail.net": "streamrail.com",
- "stridespark.com": "stride",
- "stripcdn.com": "stripchat.com",
- "stripchat.com": "stripchat.com",
- "stripe.com": "stripe.com",
- "stripe.network": "stripe.com",
- "stripst.com": "stripst.com",
- "interactivemedia.net": "stroer_digital_media",
- "stroeerdigitalgroup.de": "stroer_digital_media",
- "stroeerdigitalmedia.de": "stroer_digital_media",
- "stroeerdp.de": "stroer_digital_media",
- "stroeermediabrands.de": "stroer_digital_media",
- "spklw.com": "strossle",
- "sprinklecontent.com": "strossle",
- "strossle.it": "strossle",
- "struq.com": "struq",
- "stumble-upon.com": "stumbleupon_widgets",
- "stumbleupon.com": "stumbleupon_widgets",
- "su.pr": "stumbleupon_widgets",
- "sub2tech.com": "sub2",
- "ayads.co": "sublime_skinz",
- "suggest.io": "suggest.io",
- "sumologic.com": "sumologic.com",
- "sumo.com": "sumome",
- "sumome.com": "sumome",
- "sundaysky.com": "sundaysky",
- "supercell.com": "supercell",
- "supercellsupport.com": "supercell",
- "supercounters.com": "supercounters",
- "superfastcdn.com": "superfastcdn.com",
- "socdm.com": "supership",
- "supplyframe.com": "supplyframe",
- "surfingbird.ru": "surf_by_surfingbird",
- "px.surveywall-api.survata.com": "survata",
- "cdn.sweettooth.io": "sweettooth",
- "swiftypecdn.com": "swiftype",
- "swisscom.ch": "swisscom",
- "myswitchads.com": "switch_concepts",
- "switchadhub.com": "switch_concepts",
- "switchads.com": "switch_concepts",
- "switchafrica.com": "switch_concepts",
- "switch.tv": "switchtv",
- "shopximity.com": "swoop",
- "swoop.com": "swoop",
- "analytics-cdn.sykescottages.co.uk": "sykes",
- "norton.com": "symantec",
- "seal.verisign.com": "symantec",
- "symantec.com": "symantec",
- "d.hodes.com": "symphony_talent",
- "technorati.com": "synacor",
- "technoratimedia.com": "synacor",
- "cn.clickable.net": "syncapse",
- "synergy-e.com": "synergy-e",
- "sdp-campaign.de": "t-mobile",
- "t-online.de": "t-mobile",
- "telekom-dienste.de": "t-mobile",
- "telekom.com": "t-mobile",
- "telekom.de": "t-mobile",
- "toi.de": "t-mobile",
- "t8cdn.com": "t8cdn.com",
- "tableteducation.com": "tableteducation.com",
- "basebanner.com": "taboola",
- "taboola.com": "taboola",
- "taboolasyndication.com": "taboola",
- "tacoda.net": "tacoda",
- "commander1.com": "tag_commander",
- "tagcommander.com": "tag_commander",
- "tags.tagcade.com": "tagcade",
- "taggify.net": "taggify",
- "taggyad.jp": "taggy",
- "levexis.com": "tagman",
- "tailtarget.com": "tail_target",
- "tailsweep.com": "tailsweep",
- "tamedia.ch": "tamedia.ch",
- "tanx.com": "tanx",
- "alipcsec.com": "taobao",
- "taobao.com": "taobao",
- "tapad.com": "tapad",
- "theblogfrog.com": "tapinfluence",
- "tarafdari.com": "tarafdari",
- "target2sell.com": "target_2_sell",
- "trackmytarget.com": "target_circle",
- "cdn.targetfuel.com": "target_fuel",
- "tawk.to": "tawk",
- "tbn.ru": "tbn.ru",
- "tchibo-content.de": "tchibo_de",
- "tchibo.de": "tchibo_de",
- "tdsrmbl.net": "tdsrmbl_net",
- "teads.tv": "teads",
- "tealeaf.ibmcloud.com": "tealeaf",
- "tealium.com": "tealium",
- "tealium.hs.llnwd.net": "tealium",
- "tealiumiq.com": "tealium",
- "tiqcdn.com": "tealium",
- "teaser.cc": "teaser.cc",
- "emailretargeting.com": "tedemis",
- "tracking.dsmmadvantage.com": "teletech",
- "telstra.com": "telstra",
- "telstra.com.au": "telstra",
- "tenderapp.com": "tender",
- "tensitionschoo.club": "tensitionschoo.club",
- "watch.teroti.com": "teroti",
- "webterren.com": "terren",
- "teufel.de": "teufel.de",
- "theadex.com": "the_adex",
- "connect.decknetwork.net": "the_deck",
- "gu-web.net": "the_guardian",
- "guardianapps.co.uk": "the_guardian",
- "guim.co.uk": "the_guardian",
- "deepthought.online": "the_reach_group",
- "reachgroup.com": "the_reach_group",
- "redintelligence.net": "the_reach_group",
- "thesearchagency.net": "the_search_agency",
- "thesun.co.uk": "the_sun",
- "w-x.co": "the_weather_company",
- "weather.com": "the_weather_company",
- "wfxtriggers.com": "the_weather_company",
- "tmdb.org": "themoviedb",
- "thinglink.com": "thinglink",
- "online-metrix.net": "threatmetrix",
- "tidbit.co.in": "tidbit",
- "code.tidio.co": "tidio",
- "widget-v4.tidiochat.com": "tidio",
- "analytics.tiktok.com": "tiktok_analytics",
- "optimized.by.tiller.co": "tiller",
- "vip.timezonedb.com": "timezondb",
- "npttech.com": "tinypass",
- "tinypass.com": "tinypass",
- "tisoomi-services.com": "tisoomi",
- "ad.tlvmedia.com": "tlv_media",
- "ads.tlvmedia.com": "tlv_media",
- "tag.tlvmedia.com": "tlv_media",
- "research-int.se": "tns",
- "sesamestats.com": "tns",
- "spring-tns.net": "tns",
- "statistik-gallup.net": "tns",
- "tns-cs.net": "tns",
- "tns-gallup.dk": "tns",
- "tomnewsupdate.info": "tomnewsupdate.info",
- "tfag.de": "tomorrow_focus",
- "srv.clickfuse.com": "tonefuse",
- "toplist.cz": "toplist.cz",
- "toponclick.com": "toponclick_com",
- "topsy.com": "topsy",
- "insight.torbit.com": "torbit",
- "toro-tags.com": "toro",
- "toroadvertising.com": "toro",
- "toroadvertisingmedia.com": "toro",
- "tororango.com": "tororango.com",
- "i.total-media.net": "total_media",
- "inq.com": "touchcommerce",
- "tovarro.com": "tovarro.com",
- "rialpay.com": "tp-cdn.com",
- "tp-cdn.com": "tp-cdn.com",
- "kiwe.io": "tracc.it",
- "tracc.it": "tracc.it",
- "ipnoid.com": "tracemyip",
- "tracemyip.org": "tracemyip",
- "d2gfdmu30u15x7.cloudfront.net": "traceview",
- "tracelytics.com": "traceview",
- "cdn.trackduck.com": "track_duck",
- "d2zah9y47r7bi2.cloudfront.net": "trackjs",
- "dl1d2m8ri9v3j.cloudfront.net": "trackjs",
- "trackjs.com": "trackjs",
- "conversionlab.trackset.com": "trackset_conversionlab",
- "trackuity.com": "trackuity",
- "adsrvr.org": "tradedesk",
- "tradedoubler.com": "tradedoubler",
- "tradelab.fr": "tradelab",
- "tradetracker.net": "tradetracker",
- "cdntrf.com": "traffective",
- "traffective.com": "traffective",
- "my.trafficfuel.com": "traffic_fuel",
- "trafficrevenue.net": "traffic_revenue",
- "trafficstars.com": "traffic_stars",
- "tsyndicate.com": "traffic_stars",
- "trafficbroker.com": "trafficbroker",
- "trafficfabrik.com": "trafficfabrik.com",
- "trafficfactory.biz": "trafficfactory",
- "trafficforce.com": "trafficforce",
- "traffichaus.com": "traffichaus",
- "trafficjunky.net": "trafficjunky",
- "traffiliate.com": "traffiliate",
- "storage.trafic.ro": "trafic",
- "trafmag.com": "trafmag.com",
- "api.transcend.io": "transcend",
- "cdn.transcend.io": "transcend",
- "sync-transcend-cdn.com": "transcend",
- "transcend-cdn.com": "transcend",
- "transcend.io": "transcend",
- "telemetry.transcend.io": "transcend_telemetry",
- "backoffice.transmatico.com": "transmatic",
- "travelaudience.com": "travel_audience",
- "trbo.com": "trbo",
- "treasuredata.com": "treasuredata",
- "scanscout.com": "tremor_video",
- "tremorhub.com": "tremor_video",
- "tremormedia.com": "tremor_video",
- "tremorvideo.com": "tremor_video",
- "videohub.tv": "tremor_video",
- "s.tcimg.com": "trendcounter",
- "tcimg.com": "trendcounter",
- "trendemon.com": "trendemon",
- "exponential.com": "tribal_fusion",
- "tribalfusion.com": "tribal_fusion",
- "tribl.io": "triblio",
- "api.temails.com": "trigger_mail_marketing",
- "t.myvisitors.se": "triggerbee",
- "jscache.com": "tripadvisor",
- "tacdn.com": "tripadvisor",
- "tamgrt.com": "tripadvisor",
- "tripadvisor.co.uk": "tripadvisor",
- "tripadvisor.com": "tripadvisor",
- "tripadvisor.de": "tripadvisor",
- "3lift.com": "triplelift",
- "d3iwjrnl4m67rd.cloudfront.net": "triplelift",
- "triplelift.com": "triplelift",
- "static.triptease.io": "triptease",
- "andomedia.com": "triton_digital",
- "tritondigital.com": "triton_digital",
- "revelations.trovus.co.uk": "trovus_revelations",
- "trsv3.com": "trsv3.com",
- "truefitcorp.com": "true_fit",
- "tru.am": "trueanthem",
- "adlegend.com": "trueffect",
- "addoer.com": "truehits.net",
- "truehits.in.th": "truehits.net",
- "truehits.net": "truehits.net",
- "trumba.com": "trumba",
- "truoptik.com": "truoptik",
- "trustarc.com": "trustarc",
- "truste.com": "trustarc",
- "consent.truste.com": "truste_consent",
- "choices-or.truste.com": "truste_notice",
- "choices.truste.com": "truste_notice",
- "privacy-policy.truste.com": "truste_seal",
- "trustedshops.com": "trusted_shops",
- "trustev.com": "trustev",
- "secure.comodo.net": "trustlogo",
- "trustlogo.com": "trustlogo",
- "usertrust.com": "trustlogo",
- "trustpilot.com": "trustpilot",
- "trustwave.com": "trustwave.com",
- "tubecorporate.com": "tubecorporate",
- "tubecup.org": "tubecup.org",
- "tubemogul.com": "tubemogul",
- "sre-perim.com": "tumblr_analytics",
- "txmblr.com": "tumblr_analytics",
- "platform.tumblr.com": "tumblr_buttons",
- "lib.tunein.com": "tune_in",
- "adagio.turboadv.com": "turbo",
- "turn.com": "turn_inc.",
- "ngtv.io": "turner",
- "turner.com": "turner",
- "warnermedia.com": "turner",
- "turnsocial.com": "turnsocial",
- "turnto.com": "turnto",
- "tvsquared.com": "tvsquared.com",
- "tweetboard.com": "tweetboard",
- "tweetmeme.com": "tweetmeme",
- "c4tw.net": "twenga",
- "twiago.com": "twiago",
- "twinedigital.go2cloud.org": "twine",
- "ext-twitch.tv": "twitch.tv",
- "twitch.tv": "twitch.tv",
- "jtvnw.net": "twitch_cdn",
- "ttvnw.net": "twitch_cdn",
- "twitchcdn.net": "twitch_cdn",
- "twitchsvc.net": "twitch_cdn",
- "t.co": "twitter",
- "twimg.com": "twitter",
- "twitter.com": "twitter",
- "twttr.com": "twitter",
- "x.com": "twitter",
- "ads-twitter.com": "twitter_ads",
- "analytics.twitter.com": "twitter_analytics",
- "tellapart.com": "twitter_for_business",
- "syndication.twitter.com": "twitter_syndication",
- "twittercounter.com": "twittercounter",
- "twyn.com": "twyn",
- "txxx.com": "txxx.com",
- "tynt.com": "tynt",
- "typeform.com": "typeform",
- "typepad.com": "typepad_stats",
- "typography.com": "typography.com",
- "tyroodirect.com": "tyroo",
- "tyroodr.com": "tyroo",
- "tzetze.it": "tzetze",
- "ubersetzung-app.com": "ubersetzung-app.com",
- "ubuntu.com": "ubuntu",
- "ubuntucompanyservices.co.za": "ubuntu",
- "aralego.net": "ucfunnel",
- "ucfunnel.com": "ucfunnel",
- "at.ua": "ucoz",
- "do.am": "ucoz",
- "ucoz.net": "ucoz",
- "ad-api-v01.uliza.jp": "uliza",
- "api.umbel.com": "umbel",
- "umebiggestern.club": "umebiggestern.club",
- "unanimis.co.uk": "unanimis",
- "d3pkntwtp2ukl5.cloudfront.net": "unbounce",
- "t.unbounce.com": "unbounce",
- "d21gpk1vhmjuf5.cloudfront.net": "unbxd",
- "tracker.unbxdapi.com": "unbxd",
- "under-box.com": "under-box.com",
- "undercomputer.com": "undercomputer.com",
- "udmserve.net": "underdog_media",
- "undertone.com": "undertone",
- "roitesting.com": "unica",
- "unica.com": "unica",
- "unister-adservices.com": "unister",
- "unister-gmbh.de": "unister",
- "uadx.com": "unite",
- "nonstoppartner.net": "united_digital_group",
- "tifbs.net": "united_internet_media_gmbh",
- "ui-portal.de": "united_internet_media_gmbh",
- "uimserv.net": "united_internet_media_gmbh",
- "unity.com": "unity",
- "unity3d.com": "unity",
- "unity3dusercontent.com": "unity",
- "unityads.unity3d.com": "unity_ads",
- "univide.com": "univide",
- "unpkg.com": "unpkg.com",
- "unrulymedia.com": "unruly_media",
- "src.kitcode.net": "untriel_finger_printing",
- "s.clickability.com": "upland_clickability_beacon",
- "uppr.de": "uppr.de",
- "upravel.com": "upravel.com",
- "upsellit.com": "upsellit",
- "kontagent.net": "upsight",
- "app.uptain.de": "uptain",
- "uptolike.com": "uptolike.com",
- "uptrends.com": "uptrends",
- "urban-media.com": "urban-media.com",
- "urbanairship.com": "urban_airship",
- "mobile.usabilitytools.com": "usability_tools",
- "usabilla.com": "usabilla",
- "usemax.de": "usemax",
- "usemaxserver.de": "usemax",
- "usemessages.com": "usemessages.com",
- "api.usercycle.com": "usercycle",
- "userdive.com": "userdive",
- "userecho.com": "userecho",
- "dq4irj27fs462.cloudfront.net": "userlike.com",
- "userlike-cdn-widgets.s3-eu-west-1.amazonaws.com": "userlike.com",
- "userlike.com": "userlike.com",
- "contactusplus.com": "userpulse",
- "user-pulse.appspot.com": "userpulse",
- "userpulse.com": "userpulse",
- "userreplay.net": "userreplay",
- "sdsbucket.s3.amazonaws.com": "userreport",
- "userreport.com": "userreport",
- "dtkm4pd19nw6z.cloudfront.net": "userrules",
- "api.usersnap.com": "usersnap",
- "d3mvnvhjmkxpjz.cloudfront.net": "usersnap",
- "uservoice.com": "uservoice",
- "userzoom.com": "userzoom.com",
- "usocial.pro": "usocial",
- "utarget.ru": "utarget",
- "uuidksinc.net": "uuidksinc.net",
- "v12group.com": "v12_group",
- "vacaneedasap.com": "vacaneedasap.com",
- "ads.brand.net": "valassis",
- "vdrn.redplum.com": "valassis",
- "api.searchlinks.com": "validclick",
- "js.searchlinks.com": "validclick",
- "vinsight.de": "valiton",
- "valueclick.net": "valueclick_media",
- "valuecommerce.com": "valuecommerce",
- "valuedopinions.co.uk": "valued_opinions",
- "buzzparadise.com": "vanksen",
- "vmmpxl.com": "varick_media_management",
- "vcita.com": "vcita",
- "tracking.vcommission.com": "vcommission",
- "vdopia.com": "vdopia",
- "veinteractive.com": "ve_interactive",
- "vee24.com": "vee24",
- "velocecdn.com": "velocecdn.com",
- "mdcn.mobi": "velti_mgage_visualize",
- "velti.com": "velti_mgage_visualize",
- "vendemore.com": "vendemore",
- "venturead.com": "venturead.com",
- "api.venyoo.ru": "venyoo",
- "veoxa.com": "veoxa",
- "vergic.com": "vergic.com",
- "d3qxef4rp70elm.cloudfront.net": "vero",
- "getvero.com": "vero",
- "verticalacuity.com": "vertical_acuity",
- "roi.vertical-leap.co.uk": "vertical_leap",
- "cts.vresp.com": "verticalresponse",
- "verticalscope.com": "verticalscope",
- "ads.vertoz.com": "vertoz",
- "banner.vrtzads.com": "vertoz",
- "veruta.com": "veruta",
- "vrvm.com": "verve_mobile",
- "vgwort.de": "vg_wort",
- "digitaltarget.ru": "vi",
- "btg.mtvnservices.com": "viacom_tag_container",
- "viafoura.com": "viafoura",
- "viafoura.net": "viafoura",
- "intellitxt.com": "vibrant_ads",
- "vicomi.com": "vicomi.com",
- "vidazoo.com": "vidazoo.com",
- "module-videodesk.com": "video_desk",
- "vidtok.ru": "video_potok",
- "videoadex.com": "videoadex.com",
- "tidaltv.com": "videology",
- "videonow.ru": "videonow",
- "videoplayerhub.com": "videoplayerhub.com",
- "videoplaza.tv": "videoplaza",
- "kweb.videostep.com": "videostep",
- "content.vidgyor.com": "vidgyor",
- "vidible.tv": "vidible",
- "assets.vidora.com": "vidora",
- "vietad.vn": "vietad",
- "viglink.com": "viglink",
- "vigo.one": "vigo",
- "vigo.ru": "vigo",
- "vimeo.com": "vimeo",
- "vimeocdn.com": "vimeo",
- "vindicosuite.com": "vindico_group",
- "vinted.net": "vinted",
- "viraladnetwork.net": "viral_ad_network",
- "app.viral-loops.com": "viral_loops",
- "viralgains.com": "viralgains",
- "viralmint.com": "viralmint",
- "virgul.com": "virgul",
- "ssp.virool.com": "virool_player",
- "virtusize.com": "virtusize",
- "viewablemedia.net": "visible_measures",
- "visiblemeasures.com": "visible_measures",
- "visioncriticalpanels.com": "vision_critical",
- "visitstreamer.com": "visit_streamer",
- "visitortracklog.com": "visitortrack",
- "visitorville.com": "visitorville",
- "d2hkbi3gan6yg6.cloudfront.net": "visscore",
- "myvisualiq.net": "visual_iq",
- "visualrevenue.com": "visual_revenue",
- "d5phz18u4wuww.cloudfront.net": "visual_website_optimizer",
- "visualwebsiteoptimizer.com": "visual_website_optimizer",
- "wingify.com": "visual_website_optimizer",
- "vdna-assets.com": "visualdna",
- "visualdna.com": "visualdna",
- "visualstudio.com": "visualstudio.com",
- "id-visitors.com": "visualvisitor",
- "vi-tag.net": "vivalu",
- "vivistats.com": "vivistats",
- "vizury.com": "vizury",
- "vizzit.se": "vizzit",
- "cdn-vk.com": "vk.com",
- "vk-analytics.com": "vk.com",
- "vkuservideo.net": "vk.com",
- "userapi.com": "vkontakte",
- "vk.com": "vkontakte",
- "vkontakte.ru": "vkontakte",
- "vntsm.com": "vntsm.com",
- "vodafone.de": "vodafone.de",
- "voicefive.com": "voicefive",
- "volusion.com": "volusion_chat",
- "cwkuki.com": "voluum",
- "volumtrk.com": "voluum",
- "voluumtrk3.com": "voluum",
- "vooxe.com": "vooxe.com",
- "vorwerk.de": "vorwerk.de",
- "vox-cdn.com": "vox",
- "embed.voxus.tv": "voxus",
- "voxus-targeting-voxusmidia.netdna-ssl.com": "voxus",
- "c-dsp.vpadn.com": "vpon",
- "tools.vpscash.nl": "vpscash",
- "vsassets.io": "vs",
- "exp-tas.com": "vscode",
- "v0cdn.net": "vscode",
- "vscode-cdn.net": "vscode",
- "vscode-unpkg.net": "vscode",
- "vtracy.de": "vtracy.de",
- "liftoff.io": "vungle",
- "vungle.com": "vungle",
- "vuukle.com": "vuukle",
- "view.vzaar.com": "vzaar",
- "w3counter.com": "w3counter",
- "w3roi.com": "w3roi",
- "contentwidgets.net": "wahoha",
- "wahoha.com": "wahoha",
- "walkme.com": "walkme.com",
- "wsod.com": "wall_street_on_demand",
- "walmart.com": "walmart",
- "wamcash.com": "wamcash",
- "cdn-saveit.wanelo.com": "wanelo",
- "static.warp.ly": "warp.ly",
- "way2traffic.com": "way2traffic",
- "wayfair.com": "wayfair_com",
- "wdr.de": "wdr.de",
- "web-stat.com": "web-stat",
- "web.de": "web.de",
- "webde.de": "web.de",
- "webstat.net": "web.stat",
- "ssl.webserviceaward.com": "web_service_award",
- "webtraxs.com": "web_traxs",
- "wipe.de": "web_wipe_analytics",
- "webads.nl": "webads",
- "tr.webantenna.info": "webantenna",
- "webclicks24.com": "webclicks24_com",
- "webclose.net": "webclose.net",
- "webcollage.net": "webcollage",
- "goutee.top": "webedia",
- "mediaathay.org.uk": "webedia",
- "wbdx.fr": "webedia",
- "webeffective.keynote.com": "webeffective",
- "widgets.webengage.com": "webengage",
- "webgains.com": "webgains",
- "webgozar.com": "webgozar",
- "webgozar.ir": "webgozar",
- "webhelpje.be": "webhelpje",
- "webhelpje.nl": "webhelpje",
- "webleads-tracker.com": "webleads_tracker",
- "automation.webmecanik.com": "webmecanik",
- "adrcdn.com": "weborama",
- "adrcntr.com": "weborama",
- "weborama.com": "weborama",
- "weborama.fr": "weborama",
- "webprospector.de": "webprospector",
- "webstat.com": "webstat",
- "webstat.se": "webstat.se",
- "stat.webtrack.biz": "webtrack",
- "webtraffic.no": "webtraffic",
- "webtraffic.se": "webtraffic",
- "d1r27qvpjiaqj3.cloudfront.net": "webtrekk",
- "mateti.net": "webtrekk",
- "wbtrk.net": "webtrekk",
- "wcfbc.net": "webtrekk",
- "webtrekk-asia.net": "webtrekk",
- "webtrekk.com": "webtrekk",
- "webtrekk.de": "webtrekk",
- "webtrekk.net": "webtrekk",
- "wt-eu02.net": "webtrekk",
- "wt-safetag.com": "webtrekk",
- "webtrends.com": "webtrends",
- "webtrendslive.com": "webtrends",
- "rd.clickshift.com": "webtrends_ads",
- "web-visor.com": "webvisor",
- "weebly.com": "weebly_ads",
- "widget.weibo.com": "weibo_widget",
- "westlotto.com": "westlotto_com",
- "wetter.com": "wetter_com",
- "wettercomassets.com": "wetter_com",
- "whatsbroadcast.com": "whatbroadcast",
- "whatsapp.com": "whatsapp",
- "whatsapp.net": "whatsapp",
- "whisper.onelink.me": "whisper",
- "whisper.sh": "whisper",
- "amung.us": "whos.amung.us",
- "whoson.com": "whoson",
- "api.wibbitz.com": "wibbitz",
- "cdn4.wibbitz.com": "wibbitz",
- "cdn.wibiya.com": "wibiya_toolbar",
- "predictad.com": "widdit",
- "widerplanet.com": "widerplanet",
- "widespace.com": "widespace",
- "widgetserver.com": "widgetbox",
- "3c45d848d99.se": "wiget_media",
- "wigetmedia.com": "wiget_media",
- "tracker.wigzopush.com": "wigzo",
- "wikia-services.com": "wikia-services.com",
- "wikia-beacon.com": "wikia_beacon",
- "nocookie.net": "wikia_cdn",
- "wikimedia.org": "wikimedia.org",
- "wikipedia.org": "wikimedia.org",
- "wikiquote.org": "wikimedia.org",
- "tracking.winaffiliates.com": "winaffiliates",
- "maps.windows.com": "windows_maps",
- "client.wns.windows.com": "windows_notifications",
- "time.windows.com": "windows_time",
- "windowsupdate.com": "windowsupdate",
- "api.wipmania.com": "wipmania",
- "col1.wiqhit.com": "wiqhit",
- "wirecard.com": "wirecard",
- "wirecard.de": "wirecard",
- "leadlab.click": "wiredminds",
- "wiredminds.com": "wiredminds",
- "wiredminds.de": "wiredminds",
- "adtotal.pl": "wirtualna_polska",
- "wisepops.com": "wisepops",
- "cdn.wishpond.net": "wishpond",
- "wistia.com": "wistia",
- "wistia.net": "wistia",
- "parastorage.com": "wix.com",
- "wix.com": "wix.com",
- "public.wixab-cloud.com": "wixab",
- "wixmp.com": "wixmp",
- "wnzmauurgol.com": "wnzmauurgol.com",
- "wonderpush.com": "wonderpush",
- "woopic.com": "woopic.com",
- "woopra.com": "woopra",
- "pubmine.com": "wordpress_ads",
- "w.org": "wordpress_stats",
- "wordpress.com": "wordpress_stats",
- "wp.com": "wordpress_stats",
- "tracker.wordstream.com": "wordstream",
- "worldnaturenet.xyz": "worldnaturenet_xyz",
- "wp.pl": "wp.pl",
- "wpimg.pl": "wp.pl",
- "wpengine.com": "wp_engine",
- "clickanalyzer.jp": "writeup_clickanalyzer",
- "wurfl.io": "wurfl",
- "wwwpromoter.com": "wwwpromoter",
- "imgwykop.pl": "wykop",
- "wykop.pl": "wykop",
- "wysistat.com": "wysistat.com",
- "wysistat.net": "wysistat.com",
- "wywy.com": "wywy.com",
- "wywyuserservice.com": "wywy.com",
- "cdn.x-lift.jp": "x-lift",
- "xapads.com": "xapads",
- "xen-media.com": "xen-media.com",
- "xfreeservice.com": "xfreeservice.com",
- "xhamster.com": "xhamster",
- "xhamsterlive.com": "xhamster",
- "xhamsterpremium.com": "xhamster",
- "xhcdn.com": "xhamster",
- "huami.com": "xiaomi",
- "mi-img.com": "xiaomi",
- "mi.com": "xiaomi",
- "miui.com": "xiaomi",
- "xiaomi.com": "xiaomi",
- "xiaomi.net": "xiaomi",
- "xiaomiyoupin.com": "xiaomi",
- "xing-share.com": "xing",
- "xing.com": "xing",
- "xmediaclicks.com": "xmediaclicks",
- "xnxx-cdn.com": "xnxx_cdn",
- "xplosion.de": "xplosion",
- "xtendmedia.com": "xtend",
- "xvideos-cdn.com": "xvideos_com",
- "xvideos.com": "xvideos_com",
- "xxxlshop.de": "xxxlshop.de",
- "xxxlutz.de": "xxxlutz",
- "adx.com.ru": "yabbi",
- "yabbi.me": "yabbi",
- "yabuka.com": "yabuka",
- "tumblr.com": "yahoo",
- "yahoo.com": "yahoo",
- "yahooapis.com": "yahoo",
- "yimg.com": "yahoo",
- "oath.cloud": "yahoo",
- "yahoo.net": "yahoo",
- "yahooinc.com": "yahoo",
- "yahoodns.net": "yahoo",
- "yads.yahoo.com": "yahoo_ad_exchange",
- "yieldmanager.com": "yahoo_ad_exchange",
- "pr-bh.ybp.yahoo.com": "yahoo_ad_manager",
- "ads.yahoo.com": "yahoo_advertising",
- "adtech.yahooinc.com": "yahoo_advertising",
- "analytics.yahoo.com": "yahoo_analytics",
- "np.lexity.com": "yahoo_commerce_central",
- "storage-yahoo.jp": "yahoo_japan_retargeting",
- "yahoo.co.jp": "yahoo_japan_retargeting",
- "yahooapis.jp": "yahoo_japan_retargeting",
- "yimg.jp": "yahoo_japan_retargeting",
- "yjtag.jp": "yahoo_japan_retargeting",
- "ov.yahoo.co.jp": "yahoo_overture",
- "overture.com": "yahoo_overture",
- "search.yahooinc.com": "yahoo_search",
- "luminate.com": "yahoo_small_business",
- "pixazza.com": "yahoo_small_business",
- "awaps.yandex.ru": "yandex",
- "d31j93rd8oukbv.cloudfront.net": "yandex",
- "webvisor.org": "yandex",
- "yandex.net": "yandex",
- "yandex.ru": "yandex",
- "yastatic.net": "yandex",
- "ya.ru": "yandex",
- "yandex.by": "yandex",
- "yandex.com": "yandex",
- "yandex.com.tr": "yandex",
- "yandex.fr": "yandex",
- "yandex.kz": "yandex",
- "yandex.st": "yandex.api",
- "yandexadexchange.net": "yandex_adexchange",
- "metabar.ru": "yandex_advisor",
- "appmetrica.yandex.com": "yandex_appmetrica",
- "an.webvisor.org": "yandex_direct",
- "an.yandex.ru": "yandex_direct",
- "bs.yandex.ru": "yandex_direct",
- "mc.yandex.ru": "yandex_metrika",
- "passport.yandex.ru": "yandex_passport",
- "yapfiles.ru": "yapfiles.ru",
- "yashi.com": "yashi",
- "ad.adserverplus.com": "ybrant_media",
- "player.sambaads.com": "ycontent",
- "cdn.yektanet.com": "yektanet",
- "fetch.yektanet.com": "yektanet",
- "yengo.com": "yengo",
- "yengointernational.com": "yengo",
- "link.p0.com": "yesmail",
- "adsrevenue.net": "yesup_advertising",
- "infinityads.com": "yesup_advertising",
- "momentsharing.com": "yesup_advertising",
- "multipops.com": "yesup_advertising",
- "onlineadultadvertising.com": "yesup_advertising",
- "paypopup.com": "yesup_advertising",
- "popupxxx.com": "yesup_advertising",
- "xtargeting.com": "yesup_advertising",
- "xxxwebtraffic.com": "yesup_advertising",
- "app.yesware.com": "yesware",
- "yldbt.com": "yieldbot",
- "yieldify.com": "yieldify",
- "yieldlab.net": "yieldlab",
- "yieldlove-ad-serving.net": "yieldlove",
- "yieldlove.com": "yieldlove",
- "yieldmo.com": "yieldmo",
- "254a.com": "yieldr",
- "collect.yldr.io": "yieldr_air",
- "yieldsquare.com": "yieldsquare",
- "analytics-sdk.yle.fi": "yle",
- "yllix.com": "yllixmedia",
- "ymetrica1.com": "ymetrica1.com",
- "ymzrrizntbhde.com": "ymzrrizntbhde.com",
- "yoapp.s3.amazonaws.com": "yo_button",
- "natpal.com": "yodle",
- "analytics.yola.net": "yola_analytics",
- "pixel.yola.net": "yola_analytics",
- "delivery.yomedia.vn": "yomedia",
- "yoochoose.net": "yoochoose.net",
- "yotpo.com": "yotpo",
- "yottaa.net": "yottaa",
- "yottlyscript.com": "yottly",
- "api.youcanbook.me": "youcanbookme",
- "youcanbook.me": "youcanbookme",
- "player.youku.com": "youku",
- "youporn.com": "youporn",
- "ypncdn.com": "youporn",
- "googlevideo.com": "youtube",
- "youtube-nocookie.com": "youtube",
- "youtube.com": "youtube",
- "ytimg.com": "youtube",
- "c.ypcdn.com": "yp",
- "i1.ypcdn.com": "yp",
- "yellowpages.com": "yp",
- "prod-js.aws.y-track.com": "ysance",
- "y-track.com": "ysance",
- "yume.com": "yume",
- "yumenetworks.com": "yume,_inc.",
- "gravityrd-services.com": "yusp",
- "api.zadarma.com": "zadarma",
- "zalan.do": "zalando_de",
- "zalando.de": "zalando_de",
- "ztat.net": "zalando_de",
- "zaloapp.com": "zalo",
- "zanox-affiliate.de": "zanox",
- "zanox.com": "zanox",
- "zanox.ws": "zanox",
- "zaparena.com": "zaparena",
- "zapunited.com": "zaparena",
- "track.zappos.com": "zappos",
- "zdassets.com": "zdassets.com",
- "zebestof.com": "zebestof.com",
- "zedo.com": "zedo",
- "zemanta.com": "zemanta",
- "zencdn.net": "zencoder",
- "zendesk.com": "zendesk",
- "zergnet.com": "zergnet",
- "zero.kz": "zero.kz",
- "app.insightgrit.com": "zeta",
- "app.ubertags.com": "zeta",
- "cdn.boomtrain.com": "zeta",
- "events.api.boomtrain.com": "zeta",
- "rfihub.com": "zeta",
- "rfihub.net": "zeta",
- "ru4.com": "zeta",
- "xplusone.com": "zeta",
- "zeusclicks.com": "zeusclicks",
- "webtest.net": "ziff_davis",
- "zdbb.net": "ziff_davis",
- "ziffdavis.com": "ziff_davis",
- "ziffdavisinternational.com": "ziff_davis",
- "ziffprod.com": "ziff_davis",
- "ziffstatic.com": "ziff_davis",
- "analytics.ziftsolutions.com": "zift_solutions",
- "zimbio.com": "zimbio.com",
- "api.zippyshare.com": "zippyshare_widget",
- "zmags.com": "zmags",
- "zmctrack.net": "zmctrack.net",
- "zog.link": "zog.link",
- "js.zohostatic.eu": "zoho",
- "zononi.com": "zononi.com",
- "zopim.com": "zopim",
- "zukxd6fkxqn.com": "zukxd6fkxqn.com",
- "zwaar.net": "zwaar",
- "zwaar.org": "zwaar",
- "extend.tv": "zypmedia"
- }
-}
diff --git a/staticbak/static/domain-info/tracker/trackers.json.bak b/staticbak/static/domain-info/tracker/trackers.json.bak
deleted file mode 100644
index ee042be..0000000
--- a/staticbak/static/domain-info/tracker/trackers.json.bak
+++ /dev/null
@@ -1,25333 +0,0 @@
-{
- "timeUpdated": "2025-03-17T10:05:02.622Z",
- "categories": {
- "0": "audio_video_player",
- "1": "comments",
- "2": "customer_interaction",
- "3": "pornvertising",
- "4": "advertising",
- "5": "essential",
- "6": "site_analytics",
- "7": "social_media",
- "8": "misc",
- "9": "cdn",
- "10": "hosting",
- "11": "unknown",
- "12": "extensions",
- "13": "email",
- "14": "consent",
- "15": "telemetry",
- "101": "mobile_analytics"
- },
-
- "trackers": {
- "163": {
- "name": "163",
- "categoryId": 4,
- "url": "http://www.163.com/",
- "companyId": "163"
- },
- "miui.com":{
- "name": "MIUI",
- "categoryId": 101,
- "url": "http://tracking.miui.com",
- "companyId": "miui"
- },
- "1000mercis": {
- "name": "1000mercis",
- "categoryId": 6,
- "url": "http://www.1000mercis.com/",
- "companyId": "1000mercis"
- },
- "161media": {
- "name": "Platform161",
- "categoryId": 4,
- "url": "https://platform161.com/",
- "companyId": "platform161"
- },
- "1822direkt.de": {
- "name": "1822direkt.de",
- "categoryId": 8,
- "url": "https://www.1822direkt.de/",
- "companyId": "1822direkt",
- "source": "AdGuard"
- },
- "1dmp.io": {
- "name": "1DMP",
- "categoryId": 4,
- "url": "https://1dmp.io/",
- "companyId": "1dmp"
- },
- "1plusx": {
- "name": "1plusX",
- "categoryId": 6,
- "url": "https://www.1plusx.com/",
- "companyId": "1plusx"
- },
- "1sponsor": {
- "name": "1sponsor",
- "categoryId": 4,
- "url": "http://fr.1sponsor.com/",
- "companyId": "1sponsor"
- },
- "1tag": {
- "name": "1tag",
- "categoryId": 6,
- "url": "http://www.dentsuaegisnetwork.com/",
- "companyId": "dentsu_aegis_network"
- },
- "1und1": {
- "name": "1&1 IONOS",
- "categoryId": 8,
- "url": "http://www.ionos.com/",
- "companyId": "1und1",
- "source": "AdGuard"
- },
- "24-ads.com": {
- "name": "24-ADS",
- "categoryId": 4,
- "url": "http://www.24-ads.com/",
- "companyId": "24-ads.com",
- "source": "AdGuard"
- },
- "24_7": {
- "name": "[24]7",
- "categoryId": 2,
- "url": "http://www.247-inc.com/",
- "companyId": "24_7"
- },
- "24log": {
- "name": "24log",
- "categoryId": 6,
- "url": "http://24log.ru/",
- "companyId": "24log"
- },
- "24smi": {
- "name": "24SMI",
- "categoryId": 8,
- "url": "https://24smi.org/",
- "companyId": "24smi",
- "source": "AdGuard"
- },
- "2leep": {
- "name": "2leep",
- "categoryId": 4,
- "url": "http://2leep.com/",
- "companyId": "2leep"
- },
- "33across": {
- "name": "33Across",
- "categoryId": 4,
- "url": "http://33across.com/",
- "companyId": "33across"
- },
- "3dstats": {
- "name": "3DStats",
- "categoryId": 6,
- "url": "http://www.3dstats.com/",
- "companyId": "3dstats"
- },
- "3gpp": {
- "name": "3GPP Network",
- "categoryId": 5,
- "url": "https://www.3gpp.org/",
- "companyId": "3gpp",
- "source": "AdGuard"
- },
- "4chan": {
- "name": "4Chan",
- "categoryId": 8,
- "url": "https://www.4chan.org/",
- "companyId": "4chan",
- "source": "AdGuard"
- },
- "4finance_com": {
- "name": "4finance",
- "categoryId": 2,
- "url": "https://4finance.com/",
- "companyId": "4finance",
- "source": "AdGuard"
- },
- "4w_marketplace": {
- "name": "4w Marketplace",
- "categoryId": 4,
- "url": "http://www.4wmarketplace.com/",
- "companyId": "4w_marketplace"
- },
- "500friends": {
- "name": "500friends",
- "categoryId": 2,
- "url": "http://500friends.com/",
- "companyId": "500friends"
- },
- "51.la": {
- "name": "51.La",
- "categoryId": 6,
- "url": "http://www.51.la/",
- "companyId": "51.la"
- },
- "5min_media": {
- "name": "5min Media",
- "categoryId": 0,
- "url": "http://www.5min.com/",
- "companyId": "verizon"
- },
- "6sense": {
- "name": "6Sense",
- "categoryId": 6,
- "url": "http://home.grepdata.com",
- "companyId": "6sense"
- },
- "77tracking": {
- "name": "77Tracking",
- "categoryId": 6,
- "url": "http://www.77agency.com/",
- "companyId": "77agency"
- },
- "7plus": {
- "name": "7plus",
- "categoryId": 0,
- "url": "https://7plus.com.au/",
- "companyId": "seven_group_holdings",
- "source": "AdGuard"
- },
- "7tv.de": {
- "name": "7tv.app",
- "categoryId": 0,
- "url": "https://www.7tv.app/",
- "companyId": "7tv",
- "source": "AdGuard"
- },
- "888media": {
- "name": "888media",
- "categoryId": 4,
- "url": "http://888media.net/",
- "companyId": "888_media"
- },
- "8digits": {
- "name": "8digits",
- "categoryId": 6,
- "url": "http://8digits.com/",
- "companyId": "8digits"
- },
- "94j7afz2nr.xyz": {
- "name": "94j7afz2nr.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "99stats": {
- "name": "99stats",
- "categoryId": 6,
- "url": "http://www.99stats.com/",
- "companyId": "99stats"
- },
- "a3cloud_net": {
- "name": "a3cloud.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "a8": {
- "name": "A8",
- "categoryId": 4,
- "url": "http://www.a8.net/",
- "companyId": "a8"
- },
- "aaxads.com": {
- "name": "Acceptable Ads Exchange",
- "categoryId": 4,
- "url": "https://aax.media/",
- "companyId": null
- },
- "ab_tasty": {
- "name": "AB Tasty",
- "categoryId": 6,
- "url": "https://en.abtasty.com",
- "companyId": "ab_tasty"
- },
- "abc": {
- "name": "Australian Broadcasting Corporation",
- "categoryId": 8,
- "url": "https://www.abc.net.au/",
- "companyId": "australian_government",
- "source": "AdGuard"
- },
- "ablida": {
- "name": "ablida",
- "categoryId": 4,
- "url": "https://www.ablida.de/",
- "companyId": null
- },
- "accelia": {
- "name": "Accelia",
- "categoryId": 4,
- "url": "http://www.durasite.net/",
- "companyId": "accelia"
- },
- "accengage": {
- "name": "Accengage",
- "categoryId": 4,
- "url": "https://www.accengage.com/",
- "companyId": "accengage"
- },
- "accessanalyzer": {
- "name": "AccessAnalyzer",
- "categoryId": 6,
- "url": "http://ax.xrea.com/",
- "companyId": "accessanalyzer"
- },
- "accesstrade": {
- "name": "AccessTrade",
- "categoryId": 4,
- "url": "http://accesstrade.net/",
- "companyId": "accesstrade"
- },
- "accord_group": {
- "name": "Accord Group",
- "categoryId": 4,
- "url": "http://www.accordgroup.co.uk/",
- "companyId": "accord_group"
- },
- "accordant_media": {
- "name": "Accordant Media",
- "categoryId": 4,
- "url": "http://www.accordantmedia.com/",
- "companyId": "accordant_media"
- },
- "accuen_media": {
- "name": "Accuen Media",
- "categoryId": 4,
- "url": "http://www.accuenmedia.com/",
- "companyId": "accuen_media"
- },
- "acestream.net": {
- "name": "ActStream",
- "categoryId": 12,
- "url": "http://www.acestream.org/",
- "companyId": null
- },
- "acint.net": {
- "name": "Artificial Computation Intelligence",
- "categoryId": 6,
- "url": "https://www.acint.net/",
- "companyId": "acint"
- },
- "acloudimages": {
- "name": "Acloudimages",
- "categoryId": 4,
- "url": "http://adsterra.com",
- "companyId": "adsterra"
- },
- "acpm.fr": {
- "name": "ACPM",
- "categoryId": 6,
- "url": "http://www.acpm.fr/",
- "companyId": null
- },
- "acquia.com": {
- "name": "Acquia",
- "categoryId": 6,
- "url": "https://www.acquia.com/",
- "companyId": null
- },
- "acrweb": {
- "name": "ACRWEB",
- "categoryId": 7,
- "url": "http://www.ziyu.net/",
- "companyId": "acrweb"
- },
- "actionpay": {
- "name": "actionpay",
- "categoryId": 4,
- "url": "http://actionpay.ru/",
- "companyId": "actionpay"
- },
- "active_agent": {
- "name": "Active Agent",
- "categoryId": 4,
- "url": "http://www.active-agent.com/",
- "companyId": "active_agent"
- },
- "active_campaign": {
- "name": "Active Campaign",
- "categoryId": 6,
- "url": "https://www.activecampaign.com",
- "companyId": "active_campaign"
- },
- "active_performance": {
- "name": "Active Performance",
- "categoryId": 4,
- "url": "http://www.active-performance.de/",
- "companyId": "active_performance"
- },
- "activeconversion": {
- "name": "ActiveConversion",
- "categoryId": 4,
- "url": "http://www.activeconversion.com/",
- "companyId": "activeconversion"
- },
- "activecore": {
- "name": "activecore",
- "categoryId": 6,
- "url": "http://activecore.jp/",
- "companyId": "activecore"
- },
- "activemeter": {
- "name": "ActiveMeter",
- "categoryId": 4,
- "url": "http://www.activemeter.com/",
- "companyId": "activeconversion"
- },
- "activengage": {
- "name": "ActivEngage",
- "categoryId": 2,
- "url": "http://www.activengage.com",
- "companyId": "activengage"
- },
- "acton": {
- "name": "Act-On Beacon",
- "categoryId": 4,
- "url": "http://www.actonsoftware.com/",
- "companyId": "act-on"
- },
- "acuity_ads": {
- "name": "Acuity Ads",
- "categoryId": 4,
- "url": "http://www.acuityads.com/",
- "companyId": "acuity_ads"
- },
- "acxiom": {
- "name": "Acxiom",
- "categoryId": 4,
- "url": "http://www.acxiom.com",
- "companyId": "acxiom"
- },
- "ad-blocker.org": {
- "name": "ad-blocker.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ad-center": {
- "name": "Ad-Center",
- "categoryId": 6,
- "url": "http://www.ad-center.com",
- "companyId": "ad-center"
- },
- "ad-delivery.net": {
- "name": "ad-delivery.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ad-sys": {
- "name": "Ad-Sys",
- "categoryId": 4,
- "url": "http://www.ad-sys.com/",
- "companyId": "ad-sys"
- },
- "ad.agio": {
- "name": "Ad.agio",
- "categoryId": 4,
- "url": "http://neodatagroup.com/",
- "companyId": "neodata"
- },
- "ad2click": {
- "name": "Ad2Click",
- "categoryId": 4,
- "url": "http://www.ad2click.com/",
- "companyId": "ad2click_media"
- },
- "ad2games": {
- "name": "ad2games",
- "categoryId": 4,
- "url": "http://web.ad2games.com/",
- "companyId": "ad2games"
- },
- "ad360": {
- "name": "Ad360",
- "categoryId": 4,
- "url": "http://ad360.vn",
- "companyId": "ad360"
- },
- "ad4game": {
- "name": "ad4game",
- "categoryId": 4,
- "url": "http://www.ad4game.com/",
- "companyId": "ad4game"
- },
- "ad4mat": {
- "name": "ad4mat",
- "categoryId": 4,
- "url": "http://ad4mat.info",
- "companyId": "ad4mat"
- },
- "ad6media": {
- "name": "ad6media",
- "categoryId": 4,
- "url": "https://www.ad6media.fr/",
- "companyId": "ad6media"
- },
- "ad_decisive": {
- "name": "Ad Decisive",
- "categoryId": 4,
- "url": "http://www.lagardere-global-advertising.com/",
- "companyId": "lagardere_advertising"
- },
- "ad_dynamo": {
- "name": "Ad Dynamo",
- "categoryId": 4,
- "url": "http://www.addynamo.com/",
- "companyId": "ad_dynamo"
- },
- "ad_ebis": {
- "name": "AD EBiS",
- "categoryId": 4,
- "url": "http://www.ebis.ne.jp/en/",
- "companyId": "ad_ebis"
- },
- "ad_lightning": {
- "name": "Ad Lightning",
- "categoryId": 4,
- "url": "https://www.adlightning.com/",
- "companyId": "ad_lightning"
- },
- "ad_magnet": {
- "name": "Ad Magnet",
- "categoryId": 4,
- "url": "http://www.admagnet.com/",
- "companyId": "ad_magnet"
- },
- "ad_spirit": {
- "name": "Ad Spirit",
- "categoryId": 4,
- "url": "http://www.adspirit.de",
- "companyId": "adspirit"
- },
- "adac_de": {
- "name": "adac.de",
- "categoryId": 8,
- "url": "http://adac.de/",
- "companyId": null
- },
- "adacado": {
- "name": "Adacado",
- "categoryId": 4,
- "url": "http://www.adacado.com/",
- "companyId": "adacado"
- },
- "adadyn": {
- "name": "Adadyn",
- "categoryId": 4,
- "url": "http://ozonemedia.com/index.html",
- "companyId": "adadyn"
- },
- "adality_gmbh": {
- "name": "adality GmbH",
- "categoryId": 4,
- "url": "https://www.arvato.com/",
- "companyId": "arvato"
- },
- "adalliance.io": {
- "name": "Ad Alliance",
- "categoryId": 4,
- "url": "https://www.ad-alliance.de/",
- "companyId": null
- },
- "adalyser.com": {
- "name": "Adalyser",
- "categoryId": 6,
- "url": "https://www.adalyser.com/",
- "companyId": "onesoon"
- },
- "adaos": {
- "name": "ADAOS",
- "categoryId": 4,
- "url": "http://www.24-interactive.com",
- "companyId": "24_interactive"
- },
- "adap.tv": {
- "name": "Adap.tv",
- "categoryId": 4,
- "url": "http://www.adap.tv/",
- "companyId": "verizon"
- },
- "adaptiveblue_smartlinks": {
- "name": "AdaptiveBlue SmartLinks",
- "categoryId": 2,
- "url": "http://www.adaptiveblue.com/smartlinks.html",
- "companyId": "telfie"
- },
- "adara_analytics": {
- "name": "ADARA Analytics",
- "categoryId": 4,
- "url": "http://www.adaramedia.com/",
- "companyId": "adara_analytics"
- },
- "adasia_holdings": {
- "name": "AdAsia Holdings",
- "categoryId": 4,
- "url": "https://adasiaholdings.com/",
- "companyId": "adasia_holdings"
- },
- "adbetclickin.pink": {
- "name": "adbetnet",
- "categoryId": 4,
- "url": "http://adbetnet.com/",
- "companyId": null
- },
- "adbetnet.com": {
- "name": "adbetnet",
- "categoryId": 4,
- "url": "https://adbetnet.com/",
- "companyId": null
- },
- "adblade.com": {
- "name": "Adblade",
- "categoryId": 4,
- "url": "https://adblade.com/",
- "companyId": "adblade"
- },
- "adbooth": {
- "name": "Adbooth",
- "categoryId": 4,
- "url": "http://www.adbooth.com/",
- "companyId": "adbooth_media_group"
- },
- "adbox": {
- "name": "AdBox",
- "categoryId": 4,
- "url": "http://www.adbox.lv/",
- "companyId": "adbox"
- },
- "adbrain": {
- "name": "Adbrain",
- "categoryId": 6,
- "url": "https://www.adbrain.com/",
- "companyId": "adbrain"
- },
- "adbrite": {
- "name": "AdBrite",
- "categoryId": 4,
- "url": "http://www.adbrite.com/",
- "companyId": "centro"
- },
- "adbull": {
- "name": "AdBull",
- "categoryId": 4,
- "url": "http://www.adbull.com/",
- "companyId": "adbull"
- },
- "adbutler": {
- "name": "AdButler",
- "categoryId": 4,
- "url": "https://www.adbutler.com/d",
- "companyId": "sparklit_networks"
- },
- "adc_media": {
- "name": "ad:C media",
- "categoryId": 4,
- "url": "http://www.adcmedia.de/en/",
- "companyId": "ad:c_media"
- },
- "adcash": {
- "name": "Adcash",
- "categoryId": 4,
- "url": "http://www.adcash.com",
- "companyId": "adcash"
- },
- "adchakra": {
- "name": "AdChakra",
- "categoryId": 6,
- "url": "http://adchakra.com/",
- "companyId": "adchakra"
- },
- "adchina": {
- "name": "AdChina",
- "categoryId": 4,
- "url": "http://www.adchina.com/",
- "companyId": null,
- "source": "AdGuard"
- },
- "adcito": {
- "name": "Adcito",
- "categoryId": 4,
- "url": "http://adcito.com/",
- "companyId": "adcito"
- },
- "adclear": {
- "name": "AdClear",
- "categoryId": 4,
- "url": "http://www.adclear.de/en/home.html",
- "companyId": "adclear"
- },
- "adclerks": {
- "name": "Adclerks",
- "categoryId": 4,
- "url": "https://adclerks.com/",
- "companyId": "adclerks"
- },
- "adclickmedia": {
- "name": "AdClickMedia",
- "categoryId": 4,
- "url": "http://www.adclickmedia.com/",
- "companyId": "adclickmedia"
- },
- "adclickzone": {
- "name": "AdClickZone",
- "categoryId": 4,
- "url": "http://www.adclickzone.com/",
- "companyId": "adclickzone"
- },
- "adcloud": {
- "name": "adcloud",
- "categoryId": 4,
- "url": "https://ad-cloud.jp",
- "companyId": "adcloud"
- },
- "adcolony": {
- "name": "AdColony",
- "categoryId": 4,
- "url": "https://www.adcolony.com/history-of-adcolony/",
- "companyId": "digital_turbine",
- "source": "AdGuard"
- },
- "adconion": {
- "name": "Adconion",
- "categoryId": 4,
- "url": "http://www.adconion.com/",
- "companyId": "singtel"
- },
- "adcrowd": {
- "name": "Adcrowd",
- "categoryId": 4,
- "url": "https://www.adcrowd.com",
- "companyId": "adcrowd"
- },
- "adcurve": {
- "name": "AdCurve",
- "categoryId": 4,
- "url": "http://www.shop2market.com/",
- "companyId": "adcurve"
- },
- "add_to_calendar": {
- "name": "Add To Calendar",
- "categoryId": 2,
- "url": "http://addtocalendar.com/",
- "companyId": "addtocalendar"
- },
- "addaptive": {
- "name": "Addaptive",
- "categoryId": 4,
- "url": "http://www.datapointmedia.com/",
- "companyId": "addaptive"
- },
- "addefend": {
- "name": "AdDefend",
- "categoryId": 4,
- "url": "https://www.addefend.com/",
- "companyId": null
- },
- "addfreestats": {
- "name": "AddFreeStats",
- "categoryId": 6,
- "url": "http://www.addfreestats.com/",
- "companyId": "3dstats"
- },
- "addinto": {
- "name": "AddInto",
- "categoryId": 2,
- "url": "http://www.addinto.com/",
- "companyId": "addinto"
- },
- "addshoppers": {
- "name": "AddShoppers",
- "categoryId": 7,
- "url": "http://www.addshoppers.com/",
- "companyId": "addshoppers"
- },
- "addthis": {
- "name": "AddThis",
- "categoryId": 4,
- "url": "http://www.addthis.com/",
- "companyId": "oracle"
- },
- "addvalue": {
- "name": "Addvalue",
- "categoryId": 6,
- "url": "http://www.addvalue.de/en/",
- "companyId": "addvalue.de"
- },
- "addyon": {
- "name": "AddyON",
- "categoryId": 4,
- "url": "http://www.addyon.com/homepage.php",
- "companyId": "addyon"
- },
- "adeasy": {
- "name": "AdEasy",
- "categoryId": 4,
- "url": "http://www.adeasy.ru/",
- "companyId": "adeasy"
- },
- "adelphic": {
- "name": "Adelphic",
- "categoryId": 6,
- "url": "http://www.adelphic.com/",
- "companyId": "adelphic"
- },
- "adengage": {
- "name": "AdEngage",
- "categoryId": 4,
- "url": "http://www.adengage.com",
- "companyId": "synacor"
- },
- "adespresso": {
- "name": "AdEspresso",
- "categoryId": 4,
- "url": "http://adespresso.com",
- "companyId": "adespresso"
- },
- "adexcite": {
- "name": "AdExcite",
- "categoryId": 4,
- "url": "http://adexcite.com",
- "companyId": "adexcite"
- },
- "adextent": {
- "name": "AdExtent",
- "categoryId": 4,
- "url": "http://www.adextent.com/",
- "companyId": "adextent"
- },
- "adf.ly": {
- "name": "AdF.ly",
- "categoryId": 4,
- "url": "http://adf.ly/",
- "companyId": "adf.ly"
- },
- "adfalcon": {
- "name": "AdFalcon",
- "categoryId": 4,
- "url": "http://www.adfalcon.com/",
- "companyId": "adfalcon"
- },
- "adfocus": {
- "name": "AdFocus",
- "categoryId": 4,
- "url": "http://adfoc.us/",
- "companyId": "adfoc.us"
- },
- "adforgames": {
- "name": "AdForGames",
- "categoryId": 4,
- "url": "http://www.adforgames.com/",
- "companyId": "adforgames"
- },
- "adform": {
- "name": "Adform",
- "categoryId": 4,
- "url": "http://www.adform.com",
- "companyId": "adform"
- },
- "adfox": {
- "name": "AdFox",
- "categoryId": 4,
- "url": "http://adfox.ru",
- "companyId": "yandex"
- },
- "adfreestyle": {
- "name": "adFreestyle",
- "categoryId": 4,
- "url": "http://www.adfreestyle.pl/",
- "companyId": "adfreestyle"
- },
- "adfront": {
- "name": "AdFront",
- "categoryId": 4,
- "url": "http://buysellads.com/",
- "companyId": "buysellads.com"
- },
- "adfrontiers": {
- "name": "AdFrontiers",
- "categoryId": 4,
- "url": "http://www.adfrontiers.com/",
- "companyId": "adfrontiers"
- },
- "adgear": {
- "name": "AdGear",
- "categoryId": 4,
- "url": "http://adgear.com/",
- "companyId": "samsung"
- },
- "adgebra": {
- "name": "Adgebra",
- "categoryId": 4,
- "url": "https://adgebra.in/",
- "companyId": "adgebra"
- },
- "adgenie": {
- "name": "adGENIE",
- "categoryId": 4,
- "url": "http://www.adgenie.co.uk/",
- "companyId": "ve"
- },
- "adgile": {
- "name": "Adgile",
- "categoryId": 4,
- "url": "http://www.adgile.com/",
- "companyId": "adgile_media"
- },
- "adglare.net": {
- "name": "Adglare",
- "categoryId": 4,
- "url": "https://www.adglare.com/",
- "companyId": null
- },
- "adglue": {
- "name": "Adglue",
- "categoryId": 4,
- "url": "http://admans.de/de.html",
- "companyId": "admans"
- },
- "adgoal": {
- "name": "adgoal",
- "categoryId": 4,
- "url": "http://www.adgoal.de/",
- "companyId": "adgoal"
- },
- "adgorithms": {
- "name": "Adgorithms",
- "categoryId": 4,
- "url": "http://www.adgorithms.com/",
- "companyId": "albert"
- },
- "adgoto": {
- "name": "ADGoto",
- "categoryId": 4,
- "url": "http://adgoto.com/",
- "companyId": "adgoto"
- },
- "adguard": {
- "name": "AdGuard",
- "categoryId": 8,
- "url": "https://adguard.com/",
- "companyId": "adguard",
- "source": "AdGuard"
- },
- "adguard_dns": {
- "name": "AdGuard DNS",
- "categoryId": 8,
- "url": "https://adguard-dns.io/",
- "companyId": "adguard",
- "source": "AdGuard"
- },
- "adguard_vpn": {
- "name": "AdGuard VPN",
- "categoryId": 8,
- "url": "https://adguard-vpn.com/",
- "companyId": "adguard",
- "source": "AdGuard"
- },
- "adhands": {
- "name": "AdHands",
- "categoryId": 4,
- "url": "http://promo.adhands.ru/",
- "companyId": "adhands"
- },
- "adhese": {
- "name": "Adhese",
- "categoryId": 4,
- "url": "http://adhese.com",
- "companyId": "adhese"
- },
- "adhitz": {
- "name": "AdHitz",
- "categoryId": 4,
- "url": "http://www.adhitz.com/",
- "companyId": "adhitz"
- },
- "adhood": {
- "name": "adhood",
- "categoryId": 4,
- "url": "http://www.adhood.com/",
- "companyId": "adhood"
- },
- "adify": {
- "name": "Adify",
- "categoryId": 4,
- "url": "http://www.adify.com/",
- "companyId": "cox_enterpries"
- },
- "adikteev": {
- "name": "Adikteev",
- "categoryId": 4,
- "url": "http://www.adikteev.com/",
- "companyId": "adikteev"
- },
- "adimpact": {
- "name": "Adimpact",
- "categoryId": 4,
- "url": "http://www.adimpact.com/",
- "companyId": "adimpact"
- },
- "adinch": {
- "name": "Adinch",
- "categoryId": 4,
- "url": "http://adinch.com/",
- "companyId": "adinch"
- },
- "adition": {
- "name": "Adition",
- "categoryId": 4,
- "url": "http://en.adition.com/",
- "companyId": "prosieben_sat1"
- },
- "adjal": {
- "name": "Adjal",
- "categoryId": 4,
- "url": "http://adjal.com/",
- "companyId": "marketing_adjal"
- },
- "adjs": {
- "name": "ADJS",
- "categoryId": 4,
- "url": "https://github.com/widgital/adjs",
- "companyId": "adjs"
- },
- "adjug": {
- "name": "AdJug",
- "categoryId": 4,
- "url": "http://www.adjug.com/",
- "companyId": "adjug"
- },
- "adjust": {
- "name": "Adjust GmbH",
- "categoryId": 101,
- "url": "https://www.adjust.com/",
- "companyId": "applovin",
- "source": "AdGuard"
- },
- "adk2": {
- "name": "adk2",
- "categoryId": 4,
- "url": "http://www.adk2.com/",
- "companyId": "adk2_plymedia"
- },
- "adklip": {
- "name": "adklip",
- "categoryId": 4,
- "url": "http://adklip.com",
- "companyId": "adklip"
- },
- "adknowledge": {
- "name": "Adknowledge",
- "categoryId": 4,
- "url": "http://www.adknowledge.com/",
- "companyId": "adknowledge"
- },
- "adkontekst": {
- "name": "Adkontekst",
- "categoryId": 4,
- "url": "http://www.en.adkontekst.pl/",
- "companyId": "adkontekst"
- },
- "adkontekst.pl": {
- "name": "Adkontekst",
- "categoryId": 4,
- "url": "http://netsprint.eu/",
- "companyId": "netsprint"
- },
- "adlabs": {
- "name": "AdLabs",
- "categoryId": 4,
- "url": "https://www.adlabs.ru/",
- "companyId": "adlabs"
- },
- "adlantic": {
- "name": "AdLantic",
- "categoryId": 4,
- "url": "http://www.adlantic.nl/",
- "companyId": "adlantic_online_advertising"
- },
- "adlantis": {
- "name": "AdLantis",
- "categoryId": 4,
- "url": "http://www.adlantis.jp/",
- "companyId": "adlantis"
- },
- "adless": {
- "name": "Adless",
- "categoryId": 4,
- "url": "https://www.adless.io/",
- "companyId": "adless"
- },
- "adlive_header_bidding": {
- "name": "Adlive Header Bidding",
- "categoryId": 4,
- "url": "http://adlive.io/",
- "companyId": "adlive"
- },
- "adloox": {
- "name": "Adloox",
- "categoryId": 4,
- "url": "http://www.adloox.com",
- "companyId": "adloox"
- },
- "admachine": {
- "name": "AdMachine",
- "categoryId": 4,
- "url": "https://admachine.co/",
- "companyId": null
- },
- "adman": {
- "name": "ADMAN",
- "categoryId": 4,
- "url": "http://www.adman.gr/",
- "companyId": "adman"
- },
- "adman_media": {
- "name": "ADman Media",
- "categoryId": 4,
- "url": "http://www.admanmedia.com/",
- "companyId": "ad_man_media"
- },
- "admantx.com": {
- "name": "ADmantX",
- "categoryId": 4,
- "url": "http://www.admantx.com/",
- "companyId": "expert_system_spa"
- },
- "admaster": {
- "name": "AdMaster",
- "categoryId": 4,
- "url": "http://admaster.net",
- "companyId": "admaster"
- },
- "admaster.cn": {
- "name": "AdMaster.cn",
- "categoryId": 4,
- "url": "http://www.admaster.com.cn/",
- "companyId": "admaster"
- },
- "admatic": {
- "name": "Admatic",
- "categoryId": 4,
- "url": "http://www.admatic.com.tr/#1page",
- "companyId": "admatic"
- },
- "admatrix": {
- "name": "Admatrix",
- "categoryId": 4,
- "url": "https://admatrix.jp/login#block01",
- "companyId": "admatrix"
- },
- "admax": {
- "name": "Admax",
- "categoryId": 4,
- "url": "http://www.admaxnetwork.com/index.php",
- "companyId": "komli"
- },
- "admaxim": {
- "name": "AdMaxim",
- "categoryId": 4,
- "url": "http://admaxim.com/",
- "companyId": "admaxim"
- },
- "admaya": {
- "name": "Admaya",
- "categoryId": 4,
- "url": "http://www.admaya.in/",
- "companyId": "admaya"
- },
- "admedia": {
- "name": "AdMedia",
- "categoryId": 4,
- "url": "http://admedia.com/",
- "companyId": "admedia"
- },
- "admedo_com": {
- "name": "Admedo",
- "categoryId": 4,
- "url": "http://admedo.com/",
- "companyId": "admedo"
- },
- "admeira.ch": {
- "name": "AdMeira",
- "categoryId": 4,
- "url": "http://admeira.ch/",
- "companyId": "admeira"
- },
- "admeld": {
- "name": "AdMeld",
- "categoryId": 4,
- "url": "http://www.admeld.com",
- "companyId": "google"
- },
- "admeo": {
- "name": "Admeo",
- "categoryId": 4,
- "url": "http://admeo.ru/",
- "companyId": "admeo.ru"
- },
- "admeta": {
- "name": "Admeta",
- "categoryId": 4,
- "url": "http://www.admeta.com/",
- "companyId": "admeta"
- },
- "admicro": {
- "name": "AdMicro",
- "categoryId": 4,
- "url": "http://www.admicro.vn/",
- "companyId": "admicro"
- },
- "admitad.com": {
- "name": "Admitad",
- "categoryId": 4,
- "url": "https://www.admitad.com/en/#",
- "companyId": "admitad"
- },
- "admixer": {
- "name": "Admixer",
- "categoryId": 4,
- "url": "https://admixer.com/",
- "companyId": "admixer",
- "source": "AdGuard"
- },
- "admixer.net": {
- "name": "Admixer",
- "categoryId": 4,
- "url": "https://admixer.net/",
- "companyId": "admixer"
- },
- "admized": {
- "name": "ADMIZED",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "admo.tv": {
- "name": "Admo.tv",
- "categoryId": 4,
- "url": "https://admo.tv/",
- "companyId": "admo.tv"
- },
- "admob": {
- "name": "AdMob",
- "categoryId": 4,
- "url": "http://www.admob.com/",
- "companyId": "google"
- },
- "admost": {
- "name": "adMOST",
- "categoryId": 4,
- "url": "http://www.admost.com/",
- "companyId": "admost"
- },
- "admotion": {
- "name": "Admotion",
- "categoryId": 4,
- "url": "http://www.admotionus.com/",
- "companyId": "admotion"
- },
- "admulti": {
- "name": "ADmulti",
- "categoryId": 4,
- "url": "http://admulti.com",
- "companyId": "admulti"
- },
- "adnegah": {
- "name": "Adnegah",
- "categoryId": 4,
- "url": "https://adnegah.net/",
- "companyId": "adnegah"
- },
- "adnet": {
- "name": "Adnet",
- "categoryId": 4,
- "url": "http://www.adnet.vn/",
- "companyId": "adnet"
- },
- "adnet.de": {
- "name": "adNET.de",
- "categoryId": 4,
- "url": "http://www.adnet.de",
- "companyId": "adnet.de"
- },
- "adnet_media": {
- "name": "Adnet Media",
- "categoryId": 4,
- "url": "http://www.adnetmedia.lt/",
- "companyId": "adnet_media"
- },
- "adnetwork.net": {
- "name": "AdNetwork.net",
- "categoryId": 4,
- "url": "http://www.adnetwork.net/",
- "companyId": "adnetwork.net"
- },
- "adnetworkperformance.com": {
- "name": "adnetworkperformance.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "adnexio": {
- "name": "AdNexio",
- "categoryId": 4,
- "url": "http://adnexio.com/",
- "companyId": "adnexio"
- },
- "adnium.com": {
- "name": "Adnium",
- "categoryId": 4,
- "url": "https://adnium.com/",
- "companyId": null
- },
- "adnologies": {
- "name": "Adnologies",
- "categoryId": 4,
- "url": "http://www.adnologies.com/",
- "companyId": "adnologies_gmbh"
- },
- "adnow": {
- "name": "Adnow",
- "categoryId": 4,
- "url": "http://adnow.com/",
- "companyId": "adnow"
- },
- "adnymics": {
- "name": "Adnymics",
- "categoryId": 4,
- "url": "http://adnymics.com/en/",
- "companyId": "adnymics"
- },
- "adobe_audience_manager": {
- "name": "Adobe Audience Manager",
- "categoryId": 4,
- "url": "http://www.demdex.com/",
- "companyId": "adobe"
- },
- "adobe_developer": {
- "name": "Adobe Developer",
- "categoryId": 8,
- "url": "https://developer.adobe.com/",
- "companyId": "adobe",
- "source": "AdGuard"
- },
- "adobe_dynamic_media": {
- "name": "Adobe Dynamic Media",
- "categoryId": 4,
- "url": "http://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_dynamic_tag_management": {
- "name": "Adobe Dynamic Tag Management",
- "categoryId": 5,
- "url": "https://dtm.adobe.com/sign_in",
- "companyId": "adobe"
- },
- "adobe_experience_cloud": {
- "name": "Adobe Experience Cloud",
- "categoryId": 6,
- "url": "https://business.adobe.com/",
- "companyId": "adobe",
- "source": "AdGuard"
- },
- "adobe_experience_league": {
- "name": "Adobe Experience League",
- "categoryId": 6,
- "url": "https://experienceleague.adobe.com/",
- "companyId": "adobe",
- "source": "AdGuard"
- },
- "adobe_login": {
- "name": "Adobe Login",
- "categoryId": 2,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_tagmanager": {
- "name": "Adobe TagManager",
- "categoryId": 4,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adobe_test_and_target": {
- "name": "Adobe Target",
- "categoryId": 4,
- "url": "https://www.adobe.com/marketing/target.html",
- "companyId": "adobe"
- },
- "adobe_typekit": {
- "name": "Adobe Typekit",
- "categoryId": 5,
- "url": "https://www.adobe.com/",
- "companyId": "adobe"
- },
- "adocean": {
- "name": "AdOcean",
- "categoryId": 4,
- "url": "http://adocean.cz/en",
- "companyId": "adocean"
- },
- "adometry": {
- "name": "Adometry",
- "categoryId": 4,
- "url": "http://www.adometry.com/",
- "companyId": "google"
- },
- "adomik": {
- "name": "Adomik",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "adon_network": {
- "name": "AdOn Network",
- "categoryId": 4,
- "url": "http://www.adonnetwork.com/",
- "companyId": "adon_network"
- },
- "adonion": {
- "name": "AdOnion",
- "categoryId": 4,
- "url": "http://www.adonion.com/",
- "companyId": "adonion"
- },
- "adonly": {
- "name": "AdOnly",
- "categoryId": 4,
- "url": "https://gloadmarket.com/",
- "companyId": "adonly"
- },
- "adoperator": {
- "name": "AdOperator",
- "categoryId": 4,
- "url": "http://www.adoperator.com/start/",
- "companyId": "adoperator"
- },
- "adoric": {
- "name": "Adoric",
- "categoryId": 6,
- "url": "https://adoric.com/",
- "companyId": "adoric"
- },
- "adorika": {
- "name": "Adorika",
- "categoryId": 4,
- "url": "http://www.adorika.com/",
- "companyId": "adorika"
- },
- "adosia": {
- "name": "Adosia",
- "categoryId": 4,
- "url": "https://adosia.com",
- "companyId": "adosia"
- },
- "adotmob.com": {
- "name": "Adotmob",
- "categoryId": 4,
- "url": "https://adotmob.com/",
- "companyId": "adotmob"
- },
- "adotube": {
- "name": "AdoTube",
- "categoryId": 4,
- "url": "http://www.adotube.com",
- "companyId": "exponential_interactive"
- },
- "adparlor": {
- "name": "AdParlor",
- "categoryId": 4,
- "url": "http://www.adparlor.com/",
- "companyId": "fluent"
- },
- "adpartner": {
- "name": "adpartner",
- "categoryId": 4,
- "url": "http://adpartner.pro/",
- "companyId": "adpartner"
- },
- "adpeeps": {
- "name": "Ad Peeps",
- "categoryId": 4,
- "url": "http://www.adpeeps.com/",
- "companyId": "ad_peeps"
- },
- "adperfect": {
- "name": "AdPerfect",
- "categoryId": 4,
- "url": "http://www.adperfect.com/",
- "companyId": "adperfect"
- },
- "adperium": {
- "name": "AdPerium",
- "categoryId": 4,
- "url": "http://www.adperium.com/",
- "companyId": "adperium"
- },
- "adpilot": {
- "name": "AdPilot",
- "categoryId": 4,
- "url": "http://www.adpilotgroup.com/",
- "companyId": "adpilot"
- },
- "adplan": {
- "name": "AdPlan",
- "categoryId": 4,
- "url": "http://www.adplan.ne.jp/",
- "companyId": "adplan"
- },
- "adplus": {
- "name": "ADPLUS",
- "categoryId": 4,
- "url": "http://www.adplus.co.id/",
- "companyId": "adplus"
- },
- "adprofex": {
- "name": "AdProfex",
- "categoryId": 4,
- "url": "https://adprofex.com/",
- "companyId": "adprofex",
- "source": "AdGuard"
- },
- "adprofy": {
- "name": "AdProfy",
- "categoryId": 4,
- "url": "http://adprofy.com/",
- "companyId": "adprofy"
- },
- "adpulse": {
- "name": "AdPulse",
- "categoryId": 4,
- "url": "http://adpulse.ir/",
- "companyId": "adpulse.ir"
- },
- "adpv": {
- "name": "Adpv",
- "categoryId": 4,
- "url": "http://www.adpv.com/",
- "companyId": "adpv"
- },
- "adreactor": {
- "name": "AdReactor",
- "categoryId": 4,
- "url": "http://www.adreactor.com/",
- "companyId": "adreactor"
- },
- "adrecord": {
- "name": "Adrecord",
- "categoryId": 4,
- "url": "http://www.adrecord.com/",
- "companyId": "adrecord"
- },
- "adrecover": {
- "name": "AdRecover",
- "categoryId": 4,
- "url": "https://www.adrecover.com/",
- "companyId": "adpushup"
- },
- "adresult": {
- "name": "ADResult",
- "categoryId": 4,
- "url": "http://www.adresult.jp/",
- "companyId": "adresult"
- },
- "adriver": {
- "name": "AdRiver",
- "categoryId": 4,
- "url": "http://www.adriver.ru/",
- "companyId": "ad_river"
- },
- "adroll": {
- "name": "AdRoll",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adroll_pixel": {
- "name": "AdRoll Pixel",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adroll_roundtrip": {
- "name": "AdRoll Roundtrip",
- "categoryId": 4,
- "url": "https://www.adroll.com/",
- "companyId": "adroll"
- },
- "adrom": {
- "name": "adRom",
- "categoryId": 4,
- "url": "http://www.adrom.net/",
- "companyId": null
- },
- "adru.net": {
- "name": "adru.net",
- "categoryId": 4,
- "url": "http://adru.net/",
- "companyId": "adru.net"
- },
- "adrunnr": {
- "name": "AdRunnr",
- "categoryId": 4,
- "url": "https://adrunnr.com/",
- "companyId": "adrunnr"
- },
- "adsame": {
- "name": "Adsame",
- "categoryId": 4,
- "url": "http://adsame.com/",
- "companyId": "adsame"
- },
- "adsbookie": {
- "name": "AdsBookie",
- "categoryId": 4,
- "url": "http://adsbookie.com/",
- "companyId": null
- },
- "adscale": {
- "name": "AdScale",
- "categoryId": 4,
- "url": "http://www.adscale.de/",
- "companyId": "stroer"
- },
- "adscience": {
- "name": "Adscience",
- "categoryId": 4,
- "url": "http://www.adscience.nl/",
- "companyId": "adscience"
- },
- "adsco.re": {
- "name": "Adscore",
- "categoryId": 4,
- "url": "https://www.adscore.com/",
- "companyId": null
- },
- "adsensecamp": {
- "name": "AdsenseCamp",
- "categoryId": 4,
- "url": "http://adsensecamp.com",
- "companyId": "adsensecamp"
- },
- "adserverpub": {
- "name": "AdServerPub",
- "categoryId": 4,
- "url": "http://www.adserverpub.com/",
- "companyId": "adserverpub"
- },
- "adservice_media": {
- "name": "Adservice Media",
- "categoryId": 4,
- "url": "http://www.adservicemedia.com/",
- "companyId": "adservice_media"
- },
- "adsfactor": {
- "name": "Adsfactor",
- "categoryId": 4,
- "url": "http://www.adsfactor.com/",
- "companyId": "pixels_asia"
- },
- "adside": {
- "name": "AdSide",
- "categoryId": 4,
- "url": "http://www.adside.com/",
- "companyId": "adside"
- },
- "adskeeper": {
- "name": "AdsKeeper",
- "categoryId": 4,
- "url": "http://adskeeper.co.uk/",
- "companyId": "adskeeper"
- },
- "adskom": {
- "name": "ADSKOM",
- "categoryId": 4,
- "url": "http://adskom.com/",
- "companyId": "adskom"
- },
- "adslot": {
- "name": "Adslot",
- "categoryId": 4,
- "url": "http://www.adslot.com/",
- "companyId": "adslot"
- },
- "adsnative": {
- "name": "adsnative",
- "categoryId": 4,
- "url": "http://www.adsnative.com/",
- "companyId": "adsnative"
- },
- "adsniper.ru": {
- "name": "AdSniper",
- "categoryId": 4,
- "url": "http://ad-sniper.com/",
- "companyId": "adsniper"
- },
- "adspeed": {
- "name": "AdSpeed",
- "categoryId": 4,
- "url": "http://www.adspeed.com/",
- "companyId": "adspeed"
- },
- "adspyglass": {
- "name": "AdSpyglass",
- "categoryId": 4,
- "url": "https://www.adspyglass.com/",
- "companyId": "adspyglass"
- },
- "adstage": {
- "name": "AdStage",
- "categoryId": 4,
- "url": "http://www.adstage.io/",
- "companyId": "adstage"
- },
- "adstanding": {
- "name": "AdStanding",
- "categoryId": 4,
- "url": "http://www.adstanding.com/en/",
- "companyId": "adstanding"
- },
- "adstars": {
- "name": "Adstars",
- "categoryId": 4,
- "url": "http://adstars.co.id",
- "companyId": "adstars"
- },
- "adstir": {
- "name": "adstir",
- "categoryId": 4,
- "url": "https://en.ad-stir.com/",
- "companyId": "united_inc"
- },
- "adsupply": {
- "name": "AdSupply",
- "categoryId": 4,
- "url": "http://www.adsupply.com/",
- "companyId": "adsupply"
- },
- "adswizz": {
- "name": "AdsWizz",
- "categoryId": 4,
- "url": "http://www.adswizz.com/",
- "companyId": "adswizz"
- },
- "adtaily": {
- "name": "AdTaily",
- "categoryId": 4,
- "url": "http://www.adtaily.pl/",
- "companyId": "adtaily"
- },
- "adtarget.me": {
- "name": "Adtarget.me",
- "categoryId": 4,
- "url": "http://www.adtarget.me/",
- "companyId": "adtarget.me"
- },
- "adtech": {
- "name": "ADTECH",
- "categoryId": 6,
- "url": "http://www.adtechus.com/",
- "companyId": "verizon"
- },
- "adtegrity": {
- "name": "Adtegrity",
- "categoryId": 4,
- "url": "http://www.adtegrity.com/",
- "companyId": "adtegrity"
- },
- "adtelligence.de": {
- "name": "Adtelligence",
- "categoryId": 4,
- "url": "https://adtelligence.com/",
- "companyId": null
- },
- "adtheorent": {
- "name": "Adtheorent",
- "categoryId": 4,
- "url": "http://adtheorent.com/",
- "companyId": "adtheorant"
- },
- "adthink": {
- "name": "Adthink",
- "categoryId": 4,
- "url": "https://adthink.com/",
- "companyId": "adthink"
- },
- "adtiger": {
- "name": "AdTiger",
- "categoryId": 4,
- "url": "http://www.adtiger.de/",
- "companyId": "adtiger"
- },
- "adtima": {
- "name": "Adtima",
- "categoryId": 4,
- "url": "http://adtima.vn/",
- "companyId": "adtima"
- },
- "adtng.com": {
- "name": "adtng.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "adtoma": {
- "name": "Adtoma",
- "categoryId": 4,
- "url": "http://www.adtoma.com/",
- "companyId": "adtoma"
- },
- "adtr02.com": {
- "name": "adtr02.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "adtraction": {
- "name": "Adtraction",
- "categoryId": 4,
- "url": "http://adtraction.com/",
- "companyId": "adtraction"
- },
- "adtraxx": {
- "name": "AdTraxx",
- "categoryId": 4,
- "url": "https://www1.adtraxx.de/",
- "companyId": "adtrax"
- },
- "adtriba.com": {
- "name": "AdTriba",
- "categoryId": 6,
- "url": "https://www.adtriba.com/",
- "companyId": null
- },
- "adtrue": {
- "name": "Adtrue",
- "categoryId": 4,
- "url": "http://adtrue.com/",
- "companyId": "adtrue"
- },
- "adtrustmedia": {
- "name": "AdTrustMedia",
- "categoryId": 4,
- "url": "https://adtrustmedia.com/",
- "companyId": "adtrustmedia"
- },
- "adtube": {
- "name": "AdTube",
- "categoryId": 4,
- "url": "http://adtube.ir/",
- "companyId": "adtube"
- },
- "adult_webmaster_empire": {
- "name": "Adult Webmaster Empire",
- "categoryId": 3,
- "url": "http://www.awempire.com/",
- "companyId": "adult_webmaster_empire"
- },
- "adultadworld": {
- "name": "AdultAdWorld",
- "categoryId": 3,
- "url": "http://adultadworld.com/",
- "companyId": "adult_adworld"
- },
- "adup-tech.com": {
- "name": "AdUp Technology",
- "categoryId": 4,
- "url": "https://www.adup-tech.com/",
- "companyId": "adup_technology"
- },
- "advaction": {
- "name": "Advaction",
- "categoryId": 4,
- "url": "http://advaction.ru/",
- "companyId": "advaction"
- },
- "advalo": {
- "name": "Advalo",
- "categoryId": 4,
- "url": "https://www.advalo.com",
- "companyId": "advalo"
- },
- "advanced_hosters": {
- "name": "Advanced Hosters",
- "categoryId": 9,
- "url": "https://advancedhosters.com/",
- "companyId": null
- },
- "advark": {
- "name": "Advark",
- "categoryId": 4,
- "url": "https://advarkads.com/",
- "companyId": "advark"
- },
- "adventori": {
- "name": "ADventori",
- "categoryId": 8,
- "url": "https://www.adventori.com/",
- "companyId": "adventori"
- },
- "adverline": {
- "name": "Adverline",
- "categoryId": 4,
- "url": "http://www.adverline.com/",
- "companyId": "adverline"
- },
- "adversal": {
- "name": "Adversal",
- "categoryId": 4,
- "url": "https://www.adversal.com/",
- "companyId": "adversal"
- },
- "adverserve": {
- "name": "adverServe",
- "categoryId": 4,
- "url": "http://www.adverserve.com/",
- "companyId": "adverserve"
- },
- "adverteerdirect": {
- "name": "Adverteerdirect",
- "categoryId": 4,
- "url": "http://www.adverteerdirect.nl/",
- "companyId": "adverteerdirect"
- },
- "adverticum": {
- "name": "Adverticum",
- "categoryId": 4,
- "url": "https://adverticum.net/english/",
- "companyId": "adverticum"
- },
- "advertise.com": {
- "name": "Advertise.com",
- "categoryId": 4,
- "url": "http://advertise.com/",
- "companyId": "advertise.com"
- },
- "advertisespace": {
- "name": "AdvertiseSpace",
- "categoryId": 4,
- "url": "http://www.advertisespace.com/",
- "companyId": "advertisespace"
- },
- "advertising.com": {
- "name": "Verizon Media",
- "categoryId": 4,
- "url": "https://www.verizonmedia.com/",
- "companyId": "verizon"
- },
- "advertlets": {
- "name": "Advertlets",
- "categoryId": 4,
- "url": "http://www.advertlets.com/",
- "companyId": "advertlets"
- },
- "advertserve": {
- "name": "AdvertServe",
- "categoryId": 4,
- "url": "https://secure.advertserve.com/",
- "companyId": "advertserve"
- },
- "advidi": {
- "name": "Advidi",
- "categoryId": 4,
- "url": "http://advidi.com/",
- "companyId": "advidi"
- },
- "advmaker.ru": {
- "name": "advmaker.ru",
- "categoryId": 4,
- "url": "http://advmaker.ru/",
- "companyId": "advmaker.ru"
- },
- "advolution": {
- "name": "Advolution",
- "categoryId": 4,
- "url": "http://www.advolution.de",
- "companyId": "advolution"
- },
- "adwebster": {
- "name": "adwebster",
- "categoryId": 4,
- "url": "http://adwebster.com",
- "companyId": "adwebster"
- },
- "adwit": {
- "name": "Adwit",
- "categoryId": 4,
- "url": "http://www.adwitserver.com",
- "companyId": "adwit"
- },
- "adworx.at": {
- "name": "ADworx",
- "categoryId": 4,
- "url": "http://www.adworx.at/",
- "companyId": "ors"
- },
- "adworxs.net": {
- "name": "adworxs.net",
- "categoryId": 4,
- "url": "http://www.adworxs.net/?lang=en",
- "companyId": null
- },
- "adxion": {
- "name": "adXion",
- "categoryId": 4,
- "url": "http://www.adxion.com",
- "companyId": "adxion"
- },
- "adxpansion": {
- "name": "AdXpansion",
- "categoryId": 3,
- "url": "http://www.adxpansion.com/",
- "companyId": "adxpansion"
- },
- "adxpose": {
- "name": "AdXpose",
- "categoryId": 4,
- "url": "http://www.adxpose.com/home.page",
- "companyId": "comscore"
- },
- "adxprtz.com": {
- "name": "adxprtz.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "adyoulike": {
- "name": "Adyoulike",
- "categoryId": 4,
- "url": "http://www.adyoulike.com/",
- "companyId": "adyoulike"
- },
- "adzerk": {
- "name": "Adzerk",
- "categoryId": 4,
- "url": "http://adzerk.com/",
- "companyId": "adzerk"
- },
- "adzly": {
- "name": "adzly",
- "categoryId": 4,
- "url": "http://www.adzly.com/",
- "companyId": "adzly"
- },
- "aemediatraffic": {
- "name": "Aemediatraffic",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "aerify_media": {
- "name": "Aerify Media",
- "categoryId": 4,
- "url": "http://aerifymedia.com/",
- "companyId": "aerify_media"
- },
- "aeris_weather": {
- "name": "Aeris Weather",
- "categoryId": 2,
- "url": "https://www.aerisweather.com/",
- "companyId": "aerisweather"
- },
- "affectv": {
- "name": "Hybrid Theory",
- "categoryId": 4,
- "url": "https://hybridtheory.com/",
- "companyId": "affectv"
- },
- "affilbox": {
- "name": "Affilbox",
- "categoryId": 4,
- "url": "https://affilbox.com/",
- "companyId": "affilbox",
- "source": "AdGuard"
- },
- "affiliate-b": {
- "name": "Affiliate-B",
- "categoryId": 4,
- "url": "https://www.affiliate-b.com/",
- "companyId": "affiliate_b"
- },
- "affiliate4you": {
- "name": "Affiliate4You",
- "categoryId": 4,
- "url": "http://www.affiliate4you.nl/",
- "companyId": "family_blend"
- },
- "affiliatebuzz": {
- "name": "AffiliateBuzz",
- "categoryId": 4,
- "url": "http://www.affiliatebuzz.com/",
- "companyId": "affiliatebuzz"
- },
- "affiliatefuture": {
- "name": "AffiliateFuture",
- "categoryId": 4,
- "url": "http://www.affiliatefuture.com",
- "companyId": "affiliatefuture"
- },
- "affiliatelounge": {
- "name": "AffiliateLounge",
- "categoryId": 4,
- "url": "http://www.affiliatelounge.com/",
- "companyId": "betsson_group_affiliates"
- },
- "affiliation_france": {
- "name": "Affiliation France",
- "categoryId": 4,
- "url": "http://www.affiliation-france.com/",
- "companyId": "affiliation-france"
- },
- "affiliator": {
- "name": "Affiliator",
- "categoryId": 4,
- "url": "http://www.affiliator.com/",
- "companyId": "affiliator"
- },
- "affiliaweb": {
- "name": "Affiliaweb",
- "categoryId": 4,
- "url": "http://affiliaweb.fr/",
- "companyId": "affiliaweb"
- },
- "affilinet": {
- "name": "affilinet",
- "categoryId": 4,
- "url": "https://www.affili.net/",
- "companyId": "axel_springer"
- },
- "affimax": {
- "name": "AffiMax",
- "categoryId": 4,
- "url": "https://www.affimax.de",
- "companyId": "affimax"
- },
- "affinity": {
- "name": "Affinity",
- "categoryId": 4,
- "url": "http://www.affinity.com/",
- "companyId": "affinity"
- },
- "affinity.by": {
- "name": "Affinity.by",
- "categoryId": 4,
- "url": "http://affinity.by",
- "companyId": "affinity_digital_agency"
- },
- "affiz_cpm": {
- "name": "Affiz CPM",
- "categoryId": 4,
- "url": "http://cpm.affiz.com/home",
- "companyId": "affiz_cpm"
- },
- "afftrack": {
- "name": "Afftrack",
- "categoryId": 6,
- "url": "http://www.afftrack.com/",
- "companyId": "afftrack"
- },
- "afgr2.com": {
- "name": "afgr2.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "afilio": {
- "name": "Afilio",
- "categoryId": 6,
- "url": "http://afilio.com.br/",
- "companyId": "afilio"
- },
- "afs_analystics": {
- "name": "AFS Analystics",
- "categoryId": 6,
- "url": "https://www.afsanalytics.com/",
- "companyId": "afs_analytics"
- },
- "aftonbladet_ads": {
- "name": "Aftonbladet Ads",
- "categoryId": 4,
- "url": "http://annonswebb.aftonbladet.se/",
- "companyId": "aftonbladet"
- },
- "aftv-serving.bid": {
- "name": "aftv-serving.bid",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "aggregate_knowledge": {
- "name": "Aggregate Knowledge",
- "categoryId": 4,
- "url": "http://www.aggregateknowledge.com/",
- "companyId": "neustar"
- },
- "agilone": {
- "name": "AgilOne",
- "categoryId": 6,
- "url": "http://www.agilone.com/",
- "companyId": "agilone"
- },
- "agora": {
- "name": "Agora",
- "categoryId": 4,
- "url": "https://www.agora.pl/",
- "companyId": "agora_sa"
- },
- "ahalogy": {
- "name": "Ahalogy",
- "categoryId": 7,
- "url": "http://www.ahalogy.com/",
- "companyId": "ahalogy"
- },
- "ai_media_group": {
- "name": "Ai Media Group",
- "categoryId": 4,
- "url": "http://aimediagroup.com/",
- "companyId": "ai_media_group"
- },
- "aidata": {
- "name": "Aidata",
- "categoryId": 4,
- "url": "http://aidata.me/",
- "companyId": "aidata"
- },
- "aim4media": {
- "name": "Aim4Media",
- "categoryId": 4,
- "url": "http://aim4media.com",
- "companyId": "aim4media"
- },
- "airbnb": {
- "name": "Airbnb",
- "categoryId": 6,
- "url": "https://affiliate.withairbnb.com/",
- "companyId": null
- },
- "airbrake": {
- "name": "Airbrake",
- "categoryId": 4,
- "url": "https://airbrake.io/",
- "companyId": "airbrake"
- },
- "airpr.com": {
- "name": "AirPR",
- "categoryId": 6,
- "url": "https://airpr.com/",
- "companyId": "airpr"
- },
- "airpush": {
- "name": "Airpush",
- "categoryId": 4,
- "url": "http://www.airpush.com/",
- "companyId": "airpush"
- },
- "akamai_technologies": {
- "name": "Akamai Technologies",
- "categoryId": 9,
- "url": "https://www.akamai.com/",
- "companyId": "akamai",
- "source": "AdGuard"
- },
- "akamoihd.net": {
- "name": "akamoihd.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "akane": {
- "name": "AkaNe",
- "categoryId": 4,
- "url": "http://akane-ad.com/",
- "companyId": "akane"
- },
- "akanoo": {
- "name": "Akanoo",
- "categoryId": 6,
- "url": "http://www.akanoo.com/",
- "companyId": "akanoo"
- },
- "akavita": {
- "name": "Akavita",
- "categoryId": 4,
- "url": "http://www.akavita.by/en",
- "companyId": "akavita"
- },
- "al_bawaba_advertising": {
- "name": "Al Bawaba Advertising",
- "categoryId": 4,
- "url": "http://www.albawaba.com/advertising",
- "companyId": "al_bawaba"
- },
- "albacross": {
- "name": "Albacross",
- "categoryId": 4,
- "url": "https://albacross.com",
- "companyId": "albacross"
- },
- "aldi-international.com": {
- "name": "aldi-international.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "alenty": {
- "name": "Alenty",
- "categoryId": 4,
- "url": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "alephd.com": {
- "name": "alephd",
- "categoryId": 4,
- "url": "https://www.alephd.com/",
- "companyId": "verizon"
- },
- "alexa_metrics": {
- "name": "Alexa Metrics",
- "categoryId": 6,
- "url": "http://www.alexa.com/",
- "companyId": "amazon_associates"
- },
- "alexa_traffic_rank": {
- "name": "Alexa Traffic Rank",
- "categoryId": 4,
- "url": "http://www.alexa.com/",
- "companyId": "amazon_associates"
- },
- "algolia.net": {
- "name": "algolia",
- "categoryId": 4,
- "url": "https://www.algolia.com/",
- "companyId": null
- },
- "algovid.com": {
- "name": "algovid.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "alibaba.com": {
- "name": "Alibaba",
- "categoryId": 8,
- "url": "http://www.alibaba.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "alibaba_cloud": {
- "name": "Alibaba Cloud",
- "categoryId": 10,
- "url": "https://www.alibabacloud.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "alibaba_ucbrowser": {
- "name": "UC Browser",
- "categoryId": 8,
- "url": "https://ucweb.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "alipay.com": {
- "name": "Alipay",
- "categoryId": 2,
- "url": "https://global.alipay.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "alivechat": {
- "name": "AliveChat",
- "categoryId": 2,
- "url": "http://www.websitealive.com/",
- "companyId": "websitealive"
- },
- "allegro.pl": {
- "name": "Allegro",
- "categoryId": 8,
- "url": "https://allegro.pl",
- "companyId": "allegro.pl"
- },
- "allin": {
- "name": "Allin",
- "categoryId": 6,
- "url": "http://allin.com.br/",
- "companyId": "allin"
- },
- "allo-pages.fr": {
- "name": "Allo-Pages",
- "categoryId": 2,
- "url": "http://www.allo-pages.fr/",
- "companyId": "links_lab"
- },
- "allotraffic": {
- "name": "AlloTraffic",
- "categoryId": 4,
- "url": "http://www.allotraffic.com/",
- "companyId": "allotraffic"
- },
- "allure_media": {
- "name": "Allure Media",
- "categoryId": 4,
- "url": "http://www.alluremedia.com.au",
- "companyId": "allure_media"
- },
- "allyes": {
- "name": "Allyes",
- "categoryId": 4,
- "url": "http://www.allyes.com/",
- "companyId": "allyes"
- },
- "alooma": {
- "name": "Alooma",
- "categoryId": 4,
- "url": "https://www.alooma.com/",
- "companyId": "alooma"
- },
- "altitude_digital": {
- "name": "Altitude Digital",
- "categoryId": 4,
- "url": "http://www.altitudedigital.com/",
- "companyId": "altitude_digital"
- },
- "amadesa": {
- "name": "Amadesa",
- "categoryId": 4,
- "url": "http://www.amadesa.com/",
- "companyId": "amadesa"
- },
- "amap": {
- "name": "Amap",
- "categoryId": 2,
- "url": "https://www.amap.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "amazon": {
- "name": "Amazon.com",
- "categoryId": 8,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_adsystem": {
- "name": "Amazon Advertising",
- "categoryId": 4,
- "url": "https://advertising.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_associates": {
- "name": "Amazon Associates",
- "categoryId": 4,
- "url": "http://aws.amazon.com/associates/",
- "companyId": "amazon_associates"
- },
- "amazon_cdn": {
- "name": "Amazon CDN",
- "categoryId": 9,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_cloudfront": {
- "name": "Amazon CloudFront",
- "categoryId": 10,
- "url": "https://aws.amazon.com/cloudfront/?nc1=h_ls",
- "companyId": "amazon_associates"
- },
- "amazon_mobile_ads": {
- "name": "Amazon Mobile Ads",
- "categoryId": 4,
- "url": "http://www.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_payments": {
- "name": "Amazon Payments",
- "categoryId": 2,
- "url": "https://pay.amazon.com/",
- "companyId": "amazon_associates"
- },
- "amazon_video": {
- "name": "Amazon Instant Video",
- "categoryId": 0,
- "url": "https://www.amazon.com",
- "companyId": "amazon_associates"
- },
- "amazon_web_services": {
- "name": "Amazon Web Services",
- "categoryId": 10,
- "url": "https://aws.amazon.com/",
- "companyId": "amazon_associates"
- },
- "ambient_digital": {
- "name": "Ambient Digital",
- "categoryId": 4,
- "url": "http://www.adnetwork.vn/",
- "companyId": "ambient_digital"
- },
- "amgload.net": {
- "name": "amgload.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "amoad": {
- "name": "AMoAd",
- "categoryId": 4,
- "url": "http://www.amoad.com/",
- "companyId": "amoad"
- },
- "amobee": {
- "name": "Amobee",
- "categoryId": 4,
- "url": "https://www.amobee.com/",
- "companyId": "singtel"
- },
- "amp_platform": {
- "name": "AMP Platform",
- "categoryId": 4,
- "url": "http://www.collective.com/",
- "companyId": "collective"
- },
- "amplitude": {
- "name": "Amplitude",
- "categoryId": 6,
- "url": "https://amplitude.com/",
- "companyId": "amplitude"
- },
- "ampproject.org": {
- "name": "AMP Project",
- "categoryId": 8,
- "url": "https://www.ampproject.org/",
- "companyId": "google"
- },
- "anametrix": {
- "name": "Anametrix",
- "categoryId": 6,
- "url": "http://anametrix.com/",
- "companyId": "anametrix"
- },
- "ancestry_cdn": {
- "name": "Ancestry CDN",
- "categoryId": 9,
- "url": "https://www.ancestry.com/",
- "companyId": "ancestry"
- },
- "ancora": {
- "name": "Ancora",
- "categoryId": 6,
- "url": "http://www.ancoramediasolutions.com/",
- "companyId": "ancora"
- },
- "android": {
- "name": "Android",
- "categoryId": 101,
- "url": "https://www.android.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "anetwork": {
- "name": "Anetwork",
- "categoryId": 4,
- "url": "http://anetwork.ir/",
- "companyId": "anetwork"
- },
- "aniview.com": {
- "name": "AniView",
- "categoryId": 4,
- "url": "https://www.aniview.com/",
- "companyId": null
- },
- "anonymousads": {
- "name": "AnonymousAds",
- "categoryId": 4,
- "url": "https://a-ads.com/",
- "companyId": "anonymousads"
- },
- "anormal_tracker": {
- "name": "Anormal Tracker",
- "categoryId": 6,
- "url": "http://anormal-tracker.de/",
- "companyId": "anormal-tracker"
- },
- "answers_cloud_service": {
- "name": "Answers Cloud Service",
- "categoryId": 1,
- "url": "http://www.answers.com/",
- "companyId": "answers.com"
- },
- "ants": {
- "name": "Ants",
- "categoryId": 7,
- "url": "http://ants.vn/en/",
- "companyId": "ants"
- },
- "anvato": {
- "name": "Anvato",
- "categoryId": 0,
- "url": "https://www.anvato.com/",
- "companyId": "google"
- },
- "anyclip": {
- "name": "AnyClip",
- "categoryId": 0,
- "url": "https://anyclip.com",
- "companyId": "anyclip"
- },
- "aol_be_on": {
- "name": "AOL Be On",
- "categoryId": 4,
- "url": "http://beon.aolnetworks.com/",
- "companyId": "verizon"
- },
- "aol_cdn": {
- "name": "AOL CDN",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "aol_images_cdn": {
- "name": "AOL Images CDN",
- "categoryId": 5,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "apa.at": {
- "name": "Apa",
- "categoryId": 8,
- "url": "http://www.apa.at/Site/index.de.html",
- "companyId": "apa"
- },
- "apester": {
- "name": "Apester",
- "categoryId": 4,
- "url": "http://apester.com/",
- "companyId": "apester"
- },
- "apicit.net": {
- "name": "apicit.net",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "aplus_analytics": {
- "name": "Aplus Analytics",
- "categoryId": 6,
- "url": "https://ww.deluxe.com/",
- "companyId": "deluxe"
- },
- "appcenter": {
- "name": "Microsoft App Center",
- "categoryId": 5,
- "url": "https://appcenter.ms/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "appcues": {
- "name": "Appcues",
- "categoryId": 2,
- "url": "https://www.appcues.com/",
- "companyId": null
- },
- "appdynamics": {
- "name": "AppDynamics",
- "categoryId": 6,
- "url": "http://www.appdynamics.com",
- "companyId": "appdynamics"
- },
- "appier": {
- "name": "Appier",
- "categoryId": 4,
- "url": "http://www.appier.com/en/index.html",
- "companyId": "appier"
- },
- "apple": {
- "name": "Apple",
- "categoryId": 8,
- "url": "https://www.apple.com/",
- "companyId": "apple",
- "source": "AdGuard"
- },
- "apple_ads": {
- "name": "Apple Search Ads",
- "categoryId": 4,
- "url": "https://searchads.apple.com/",
- "companyId": "apple",
- "source": "AdGuard"
- },
- "applifier": {
- "name": "Applifier",
- "categoryId": 4,
- "url": "http://www.applifier.com/",
- "companyId": "applifier"
- },
- "applovin": {
- "name": "AppLovin",
- "categoryId": 4,
- "url": "https://www.applovin.com",
- "companyId": "applovin"
- },
- "appmetrx": {
- "name": "AppMetrx",
- "categoryId": 4,
- "url": "http://www.engago.com",
- "companyId": "engago_technologies"
- },
- "appnexus": {
- "name": "AppNexus",
- "categoryId": 4,
- "url": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "appsflyer": {
- "name": "AppsFlyer",
- "categoryId": 101,
- "url": "https://www.appsflyer.com/",
- "companyId": "appsflyer",
- "source": "AdGuard"
- },
- "apptv": {
- "name": "appTV",
- "categoryId": 4,
- "url": "http://www.apptv.com/",
- "companyId": "apptv"
- },
- "apture": {
- "name": "Apture",
- "categoryId": 2,
- "url": "http://www.apture.com/",
- "companyId": "google"
- },
- "arcpublishing": {
- "name": "Arc Publishing",
- "categoryId": 6,
- "url": "https://www.arcpublishing.com/",
- "companyId": "arc_publishing"
- },
- "ard.de": {
- "name": "ard.de",
- "categoryId": 0,
- "url": null,
- "companyId": null
- },
- "are_you_a_human": {
- "name": "Are You a Human",
- "categoryId": 6,
- "url": "https://areyouahuman.com/",
- "companyId": "distil_networks"
- },
- "arkoselabs.com": {
- "name": "Arkose Labs",
- "categoryId": 6,
- "url": "https://www.arkoselabs.com/",
- "companyId": null
- },
- "art19": {
- "name": "Art19",
- "categoryId": 4,
- "url": "https://art19.com/",
- "companyId": "art19"
- },
- "artimedia": {
- "name": "Artimedia",
- "categoryId": 4,
- "url": "http://arti-media.net/en/",
- "companyId": "artimedia"
- },
- "artlebedev.ru": {
- "name": "Art.Lebedev",
- "categoryId": 8,
- "url": "https://www.artlebedev.ru/",
- "companyId": "art.lebedev_studio"
- },
- "aruba_media_marketing": {
- "name": "Aruba Media Marketing",
- "categoryId": 4,
- "url": "http://www.arubamediamarketing.it/",
- "companyId": "aruba_media_marketing"
- },
- "arvato_canvas_fp": {
- "name": "Arvato Canvas FP",
- "categoryId": 6,
- "url": "https://www.arvato.com/",
- "companyId": "arvato"
- },
- "asambeauty.com": {
- "name": "asambeauty.com",
- "categoryId": 8,
- "url": "https://www.asambeauty.com/",
- "companyId": null
- },
- "ask.com": {
- "name": "Ask.com",
- "categoryId": 7,
- "url": null,
- "companyId": null
- },
- "aspnetcdn": {
- "name": "Microsoft Ajax CDN",
- "categoryId": 9,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "assemblyexchange": {
- "name": "Assembly Exchange",
- "categoryId": 4,
- "url": "https://www.medialab.la/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "astronomer": {
- "name": "Astronomer",
- "categoryId": 6,
- "url": "https://www.astronomer.io",
- "companyId": "astronomer"
- },
- "at_internet": {
- "name": "AT Internet",
- "categoryId": 6,
- "url": "http://www.xiti.com/",
- "companyId": "at_internet"
- },
- "atedra": {
- "name": "Atedra",
- "categoryId": 4,
- "url": "http://www.atedra.com/",
- "companyId": "atedra"
- },
- "atg_group": {
- "name": "ATG Ad Tech Group",
- "categoryId": 4,
- "url": "https://ad-tech-group.com/",
- "companyId": null
- },
- "atg_optimization": {
- "name": "ATG Optimization",
- "categoryId": 4,
- "url": "http://www.atg.com/en/products-services/optimization/",
- "companyId": "oracle"
- },
- "atg_recommendations": {
- "name": "ATG Recommendations",
- "categoryId": 4,
- "url": "http://www.atg.com/en/products-services/optimization/recommendations/",
- "companyId": "oracle"
- },
- "atlas": {
- "name": "Atlas",
- "categoryId": 4,
- "url": "https://atlassolutions.com",
- "companyId": "facebook"
- },
- "atlas_profitbuilder": {
- "name": "Atlas ProfitBuilder",
- "categoryId": 4,
- "url": "http://www.atlassolutions.com/",
- "companyId": "atlas"
- },
- "atlassian.net": {
- "name": "Atlassian",
- "categoryId": 2,
- "url": "https://www.atlassian.com/",
- "companyId": "atlassian"
- },
- "atlassian_marketplace": {
- "name": "Atlassian Marketplace",
- "categoryId": 9,
- "url": "https://marketplace.atlassian.com/",
- "companyId": "atlassian"
- },
- "atomz_search": {
- "name": "Atomz Search",
- "categoryId": 2,
- "url": "http://atomz.com/",
- "companyId": "atomz"
- },
- "atsfi_de": {
- "name": "atsfi.de",
- "categoryId": 11,
- "url": "http://www.axelspringer.de/en/index.html",
- "companyId": "axel_springer"
- },
- "attracta": {
- "name": "Attracta",
- "categoryId": 4,
- "url": "http://www.attracta.com/",
- "companyId": "attracta"
- },
- "attraqt": {
- "name": "Attraqt",
- "categoryId": 6,
- "url": "http://www.locayta.com/",
- "companyId": "attraqt"
- },
- "audience2media": {
- "name": "Audience2Media",
- "categoryId": 4,
- "url": "http://www.audience2media.com/",
- "companyId": "audience2media"
- },
- "audience_ad_network": {
- "name": "Audience Ad Network",
- "categoryId": 4,
- "url": "http://www.audienceadnetwork.com",
- "companyId": "bridgeline_digital"
- },
- "audience_science": {
- "name": "Audience Science",
- "categoryId": 4,
- "url": "http://www.audiencescience.com/",
- "companyId": "audiencescience"
- },
- "audiencerate": {
- "name": "AudienceRate",
- "categoryId": 4,
- "url": "http://www.audiencerate.com/",
- "companyId": "audiencerate"
- },
- "audiencesquare.com": {
- "name": "Audience Square",
- "categoryId": 4,
- "url": "http://www.audiencesquare.fr/",
- "companyId": "audience_square"
- },
- "auditude": {
- "name": "Auditude",
- "categoryId": 0,
- "url": "http://www.auditude.com/",
- "companyId": "adobe"
- },
- "audtd.com": {
- "name": "Auditorius",
- "categoryId": 4,
- "url": "http://www.auditorius.ru/",
- "companyId": "auditorius"
- },
- "augur": {
- "name": "Augur",
- "categoryId": 6,
- "url": "https://www.augur.io/",
- "companyId": "augur"
- },
- "aumago": {
- "name": "Aumago",
- "categoryId": 4,
- "url": "http://www.aumago.com/",
- "companyId": "aumago"
- },
- "aurea_clicktracks": {
- "name": "Aurea ClickTracks",
- "categoryId": 4,
- "url": "http://www.clicktracks.com/",
- "companyId": "aurea"
- },
- "ausgezeichnet_org": {
- "name": "ausgezeichnet.org",
- "categoryId": 2,
- "url": "http://ausgezeichnet.org/",
- "companyId": null
- },
- "australia.gov": {
- "name": "Australia.gov",
- "categoryId": 4,
- "url": "http://www.australia.gov.au/",
- "companyId": "australian_government"
- },
- "auth0": {
- "name": "Auth0 Inc.",
- "categoryId": 6,
- "url": "https://auth0.com/",
- "companyId": "auth0"
- },
- "autoid": {
- "name": "AutoID",
- "categoryId": 6,
- "url": "http://www.autoid.com/",
- "companyId": "autoid"
- },
- "autonomy": {
- "name": "Autonomy",
- "categoryId": 4,
- "url": "http://www.optimost.com/",
- "companyId": "hp"
- },
- "autonomy_campaign": {
- "name": "Autonomy Campaign",
- "categoryId": 4,
- "url": "http://www.autonomy.com/",
- "companyId": "hp"
- },
- "autopilothq": {
- "name": "Auto Pilot",
- "categoryId": 4,
- "url": "https://www.autopilothq.com/",
- "companyId": "autopilothq"
- },
- "autoscout24.com": {
- "name": "Autoscout24",
- "categoryId": 8,
- "url": "http://www.scout24.com/",
- "companyId": "scout24"
- },
- "avail": {
- "name": "Avail",
- "categoryId": 4,
- "url": "http://avail.com",
- "companyId": "richrelevance"
- },
- "avanser": {
- "name": "AVANSER",
- "categoryId": 2,
- "url": "http://www.avanser.com.au/",
- "companyId": "avanser"
- },
- "avant_metrics": {
- "name": "Avant Metrics",
- "categoryId": 6,
- "url": "http://www.avantlink.com/",
- "companyId": "avantlink"
- },
- "avantlink": {
- "name": "AvantLink",
- "categoryId": 4,
- "url": "http://www.avantlink.com/",
- "companyId": "avantlink"
- },
- "avazu_network": {
- "name": "Avazu Network",
- "categoryId": 4,
- "url": "http://www.avazudsp.net/",
- "companyId": "avazu_network"
- },
- "avenseo": {
- "name": "Avenseo",
- "categoryId": 4,
- "url": "http://avenseo.com",
- "companyId": "avenseo"
- },
- "avid_media": {
- "name": "Avid Media",
- "categoryId": 0,
- "url": "http://www.avidglobalmedia.com/",
- "companyId": "avid_media"
- },
- "avocet": {
- "name": "Avocet",
- "categoryId": 8,
- "url": "https://avocet.io/",
- "companyId": "avocet"
- },
- "aweber": {
- "name": "AWeber",
- "categoryId": 4,
- "url": "http://www.aweber.com/",
- "companyId": "aweber_communications"
- },
- "awin": {
- "name": "AWIN",
- "categoryId": 4,
- "url": "https://www.awin.com",
- "companyId": "axel_springer"
- },
- "axill": {
- "name": "Axill",
- "categoryId": 4,
- "url": "http://www.axill.com/",
- "companyId": "axill"
- },
- "azadify": {
- "name": "Azadify",
- "categoryId": 4,
- "url": "http://azadify.com/engage/index.php",
- "companyId": "azadify"
- },
- "azure": {
- "name": "Microsoft Azure",
- "categoryId": 10,
- "url": "https://azure.microsoft.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "azure_blob_storage": {
- "name": "Azure Blob Storage",
- "categoryId": 8,
- "url": "https://azure.microsoft.com/en-us/products/storage/blobs",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "azureedge.net": {
- "name": "Azure CDN",
- "categoryId": 9,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "b2bcontext": {
- "name": "B2BContext",
- "categoryId": 4,
- "url": "http://b2bcontext.ru/",
- "companyId": "b2bcontext"
- },
- "b2bvideo": {
- "name": "B2Bvideo",
- "categoryId": 4,
- "url": "http://b2bvideo.ru/",
- "companyId": "b2bvideo"
- },
- "babator.com": {
- "name": "Babator",
- "categoryId": 6,
- "url": "https://www.babator.com/",
- "companyId": null
- },
- "back_beat_media": {
- "name": "Back Beat Media",
- "categoryId": 4,
- "url": "http://www.backbeatmedia.com",
- "companyId": "backbeat_media"
- },
- "backtype_widgets": {
- "name": "BackType Widgets",
- "categoryId": 4,
- "url": "http://www.backtype.com/widgets",
- "companyId": "backtype"
- },
- "bahn_de": {
- "name": "Deutsche Bahn",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "baidu_ads": {
- "name": "Baidu Ads",
- "categoryId": 4,
- "url": "http://www.baidu.com/",
- "companyId": "baidu"
- },
- "baidu_static": {
- "name": "Baidu Static",
- "categoryId": 8,
- "url": "https://www.baidu.com/",
- "companyId": "baidu"
- },
- "baletingo.com": {
- "name": "baletingo.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bangdom.com": {
- "name": "BangBros",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bankrate": {
- "name": "Bankrate",
- "categoryId": 4,
- "url": "https://www.bankrate.com/",
- "companyId": "bankrate"
- },
- "banner_connect": {
- "name": "Banner Connect",
- "categoryId": 4,
- "url": "http://www.bannerconnect.net/",
- "companyId": "bannerconnect"
- },
- "bannerflow.com": {
- "name": "Bannerflow",
- "categoryId": 4,
- "url": "https://www.bannerflow.com/",
- "companyId": "bannerflow"
- },
- "bannerplay": {
- "name": "BannerPlay",
- "categoryId": 4,
- "url": "http://www.bannerplay.com/",
- "companyId": "bannerplay"
- },
- "bannersnack": {
- "name": "Bannersnack",
- "categoryId": 4,
- "url": "http://www.bannersnack.com/",
- "companyId": "bannersnack"
- },
- "barilliance": {
- "name": "Barilliance",
- "categoryId": 4,
- "url": "http://www.barilliance.com/",
- "companyId": "barilliance"
- },
- "barometer": {
- "name": "Barometer",
- "categoryId": 2,
- "url": "http://getbarometer.com/",
- "companyId": "barometer"
- },
- "basilic.io": {
- "name": "basilic.io",
- "categoryId": 6,
- "url": "https://basilic.io/",
- "companyId": null
- },
- "batanga_network": {
- "name": "Batanga Network",
- "categoryId": 4,
- "url": "http://www.batanganetwork.com/",
- "companyId": "batanga_network"
- },
- "batch_media": {
- "name": "Batch Media",
- "categoryId": 4,
- "url": "http://batch.ba/",
- "companyId": "prosieben_sat1"
- },
- "bauer_media": {
- "name": "Bauer Media",
- "categoryId": 4,
- "url": "http://www.bauermedia.com",
- "companyId": "bauer_media"
- },
- "baur.de": {
- "name": "baur.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "baynote_observer": {
- "name": "Baynote Observer",
- "categoryId": 4,
- "url": "http://www.baynote.com/",
- "companyId": "baynote"
- },
- "bazaarvoice": {
- "name": "Bazaarvoice",
- "categoryId": 2,
- "url": "http://www.bazaarvoice.com/",
- "companyId": "bazaarvoice"
- },
- "bbci": {
- "name": "BBC",
- "categoryId": 10,
- "url": "https://bbc.co.uk",
- "companyId": null
- },
- "bd4travel": {
- "name": "bd4travel",
- "categoryId": 4,
- "url": "https://bd4travel.com/",
- "companyId": "bd4travel"
- },
- "be_opinion": {
- "name": "Be Opinion",
- "categoryId": 2,
- "url": "http://beopinion.com/",
- "companyId": "be_opinion"
- },
- "beachfront": {
- "name": "Beachfront Media",
- "categoryId": 4,
- "url": "http://beachfrontmedia.com/",
- "companyId": null
- },
- "beacon_ad_network": {
- "name": "Beacon Ad Network",
- "categoryId": 4,
- "url": "http://beaconads.com/",
- "companyId": "beacon_ad_network"
- },
- "beampulse.com": {
- "name": "BeamPulse",
- "categoryId": 4,
- "url": "https://en.beampulse.com/",
- "companyId": null
- },
- "beanstalk_data": {
- "name": "Beanstalk Data",
- "categoryId": 4,
- "url": "http://www.beanstalkdata.com/",
- "companyId": "beanstalk_data"
- },
- "bebi": {
- "name": "Bebi Media",
- "categoryId": 4,
- "url": "https://www.bebi.com/",
- "companyId": "bebi_media"
- },
- "beeketing.com": {
- "name": "Beeketing",
- "categoryId": 4,
- "url": "https://beeketing.com/",
- "companyId": "beeketing"
- },
- "beeline.ru": {
- "name": "Beeline",
- "categoryId": 4,
- "url": "https://moskva.beeline.ru/",
- "companyId": null
- },
- "beeswax": {
- "name": "Beeswax",
- "categoryId": 4,
- "url": "http://beeswax.com/",
- "companyId": "beeswax"
- },
- "beezup": {
- "name": "BeezUP",
- "categoryId": 4,
- "url": "http://www.beezup.co.uk/",
- "companyId": "beezup"
- },
- "begun": {
- "name": "Begun",
- "categoryId": 4,
- "url": "http://begun.ru/",
- "companyId": "begun"
- },
- "behavioralengine": {
- "name": "BehavioralEngine",
- "categoryId": 4,
- "url": "http://www.behavioralengine.com/",
- "companyId": "behavioralengine"
- },
- "belboon_gmbh": {
- "name": "belboon GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "belco": {
- "name": "Belco",
- "categoryId": 2,
- "url": "https://www.belco.io/",
- "companyId": "belco"
- },
- "belstat": {
- "name": "BelStat",
- "categoryId": 6,
- "url": "http://www.belstat.com/",
- "companyId": "belstat"
- },
- "bemobile.ua": {
- "name": "Bemobile",
- "categoryId": 10,
- "url": "http://bemobile.ua/en/",
- "companyId": "bemobile"
- },
- "bench_platform": {
- "name": "Bench Platform",
- "categoryId": 4,
- "url": "https://benchplatform.com",
- "companyId": "bench_platform"
- },
- "betterttv": {
- "name": "BetterTTV",
- "categoryId": 7,
- "url": "https://nightdev.com/betterttv/",
- "companyId": "nightdev"
- },
- "betweendigital.com": {
- "name": "Between Digital",
- "categoryId": 4,
- "url": "http://betweendigital.ru/ssp",
- "companyId": "between_digital"
- },
- "bid.run": {
- "name": "Bid Run",
- "categoryId": 4,
- "url": "http://bid.run/",
- "companyId": "bid.run"
- },
- "bidgear": {
- "name": "BidGear",
- "categoryId": 6,
- "url": "https://bidgear.com/",
- "companyId": "bidgear"
- },
- "bidswitch": {
- "name": "Bidswitch",
- "categoryId": 4,
- "url": "http://www.iponweb.com/",
- "companyId": "iponweb"
- },
- "bidtellect": {
- "name": "Bidtellect",
- "categoryId": 4,
- "url": "https://www.bidtellect.com/",
- "companyId": "bidtellect"
- },
- "bidtheatre": {
- "name": "BidTheatre",
- "categoryId": 4,
- "url": "http://www.bidtheatre.com/",
- "companyId": "bidtheatre"
- },
- "bidvertiser": {
- "name": "BidVertiser",
- "categoryId": 4,
- "url": "http://www.bidvertiser.com/",
- "companyId": "bidvertiser"
- },
- "big_mobile": {
- "name": "Big Mobile",
- "categoryId": 4,
- "url": "http://www.bigmobile.com/",
- "companyId": "big_mobile"
- },
- "bigcommerce.com": {
- "name": "BigCommerce",
- "categoryId": 6,
- "url": "https://www.bigcommerce.com/",
- "companyId": "bigcommerce"
- },
- "bigmir.net": {
- "name": "bigmir",
- "categoryId": 6,
- "url": "https://www.bigmir.net/",
- "companyId": "bigmir-internet"
- },
- "bigpoint": {
- "name": "Bigpoint",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "bild": {
- "name": "Bild.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "bilgin_pro": {
- "name": "Bilgin Pro",
- "categoryId": 4,
- "url": "http://bilgin.pro/",
- "companyId": "bilginpro"
- },
- "bilin": {
- "name": "Bilin",
- "categoryId": 4,
- "url": "http://www.bilintechnology.com/",
- "companyId": "bilin"
- },
- "bing_ads": {
- "name": "Bing Ads",
- "categoryId": 4,
- "url": "https://bingads.microsoft.com/",
- "companyId": "microsoft"
- },
- "bing_maps": {
- "name": "Bing Maps",
- "categoryId": 2,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "binge": {
- "name": "Binge",
- "categoryId": 0,
- "url": "https://binge.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "binlayer": {
- "name": "BinLayer",
- "categoryId": 4,
- "url": "http://binlayer.com/",
- "companyId": "binlayer"
- },
- "binotel": {
- "name": "Binotel",
- "categoryId": 4,
- "url": "http://www.binotel.ua/",
- "companyId": "binotel"
- },
- "bisnode": {
- "name": "Bisnode",
- "categoryId": 4,
- "url": "http://www.esendra.fi/",
- "companyId": "bisnode"
- },
- "bitcoin_miner": {
- "name": "Bitcoin Miner",
- "categoryId": 2,
- "url": "http://www.bitcoinplus.com/",
- "companyId": "bitcoin_plus"
- },
- "bitly": {
- "name": "Bitly",
- "categoryId": 6,
- "url": "https://bitly.com/",
- "companyId": null
- },
- "bitrix": {
- "name": "Bitrix24",
- "categoryId": 4,
- "url": "https://www.bitrix24.com/",
- "companyId": "bitrix24"
- },
- "bitwarden": {
- "name": "Bitwarden",
- "categoryId": 8,
- "url": "https://bitwarden.com/",
- "companyId": "bitwarden",
- "source": "AdGuard"
- },
- "bizcn": {
- "name": "Bizcn",
- "categoryId": 4,
- "url": "http://www.bizcn.com/",
- "companyId": "bizcn"
- },
- "blackdragon": {
- "name": "BlackDragon",
- "categoryId": 4,
- "url": "http://www.jd.com/",
- "companyId": "jing_dong"
- },
- "blau.de": {
- "name": "Blau",
- "categoryId": 8,
- "url": "https://www.blau.de/",
- "companyId": null
- },
- "blink_new_media": {
- "name": "Blink New Media",
- "categoryId": 4,
- "url": "http://engagebdr.com/",
- "companyId": "engage_bdr"
- },
- "blis": {
- "name": "Blis",
- "categoryId": 6,
- "url": "http://www.blis.com/index.php",
- "companyId": "blis"
- },
- "blogad": {
- "name": "BlogAD",
- "categoryId": 4,
- "url": "http://www.blogad.com.tw/",
- "companyId": "blogad"
- },
- "blogbang": {
- "name": "BlogBang",
- "categoryId": 4,
- "url": "http://www.blogbang.com/",
- "companyId": "blogbang"
- },
- "blogcatalog": {
- "name": "BlogCatalog",
- "categoryId": 2,
- "url": "http://www.blogcatalog.com/",
- "companyId": "blogcatalog"
- },
- "blogcounter": {
- "name": "BlogCounter",
- "categoryId": 6,
- "url": "http://blogcounter.com/",
- "companyId": "adfire_gmbh"
- },
- "blogfoster.com": {
- "name": "Blogfoster",
- "categoryId": 8,
- "url": "http://www.blogfoster.com/",
- "companyId": "blogfoster"
- },
- "bloggerads": {
- "name": "BloggerAds",
- "categoryId": 4,
- "url": "http://www.bloggerads.net/",
- "companyId": "bloggerads"
- },
- "blogher": {
- "name": "BlogHer Ads",
- "categoryId": 4,
- "url": "https://www.blogher.com/",
- "companyId": "penske_media_corp"
- },
- "blogimg.jp": {
- "name": "blogimg.jp",
- "categoryId": 9,
- "url": "https://line.me/",
- "companyId": "line"
- },
- "blogsmithmedia.com": {
- "name": "blogsmithmedia.com",
- "categoryId": 8,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "blogspot_com": {
- "name": "blogspot.com",
- "categoryId": 8,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "bloomreach": {
- "name": "BloomReach",
- "categoryId": 4,
- "url": "https://www.bloomreach.com/en",
- "companyId": "bloomreach"
- },
- "blue_cherry_group": {
- "name": "Blue Cherry Group",
- "categoryId": 4,
- "url": "http://www.bluecherrygroup.com",
- "companyId": "blue_cherry_group"
- },
- "blue_seed": {
- "name": "Blue Seed",
- "categoryId": 4,
- "url": "http://blueseed.tv/#/en/platform",
- "companyId": "blue_seed"
- },
- "blueconic.net": {
- "name": "BlueConic Plugin",
- "categoryId": 6,
- "url": "https://www.blueconic.com/",
- "companyId": "blueconic"
- },
- "bluecore": {
- "name": "Bluecore",
- "categoryId": 4,
- "url": "https://www.bluecore.com/",
- "companyId": "triggermail"
- },
- "bluekai": {
- "name": "BlueKai",
- "categoryId": 4,
- "url": "http://www.bluekai.com/",
- "companyId": "oracle"
- },
- "bluelithium": {
- "name": "Bluelithium",
- "categoryId": 4,
- "url": "http://www.bluelithium.com/",
- "companyId": "verizon"
- },
- "bluemetrix": {
- "name": "Bluemetrix",
- "categoryId": 4,
- "url": "http://www.bluemetrix.ie/",
- "companyId": "bluemetrix"
- },
- "bluenewsupdate.info": {
- "name": "bluenewsupdate.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bluestreak": {
- "name": "BlueStreak",
- "categoryId": 4,
- "url": "http://www.bluestreak.com/",
- "companyId": "dentsu_aegis_network"
- },
- "bluetriangle": {
- "name": "Blue Triangle",
- "categoryId": 6,
- "url": "https://www.bluetriangle.com/",
- "companyId": "blue_triangle"
- },
- "bodelen.com": {
- "name": "bodelen.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "bol_affiliate_program": {
- "name": "BOL Affiliate Program",
- "categoryId": 4,
- "url": "http://www.bol.com",
- "companyId": "bol.com"
- },
- "bold": {
- "name": "Bold",
- "categoryId": 4,
- "url": "https://boldcommerce.com/",
- "companyId": "bold"
- },
- "boldchat": {
- "name": "Boldchat",
- "categoryId": 2,
- "url": "http://www.boldchat.com/",
- "companyId": "boldchat"
- },
- "boltdns.net": {
- "name": "boltdns.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bom": {
- "name": "Bureau of Meteorology",
- "categoryId": 9,
- "url": "http://bom.gov.au/",
- "companyId": "australian_government",
- "source": "AdGuard"
- },
- "bombora": {
- "name": "Bombora",
- "categoryId": 6,
- "url": "http://bombora.com/",
- "companyId": "bombora"
- },
- "bongacams.com": {
- "name": "bongacams.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bonial": {
- "name": "Bonial Connect",
- "categoryId": 2,
- "url": "http://www.bonial.com/",
- "companyId": null
- },
- "boo-box": {
- "name": "boo-box",
- "categoryId": 4,
- "url": "http://boo-box.com/",
- "companyId": "boo-box"
- },
- "booking.com": {
- "name": "Booking.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "boost_box": {
- "name": "Boost Box",
- "categoryId": 6,
- "url": "http://www.boostbox.com.br/",
- "companyId": "boost_box"
- },
- "booster_video": {
- "name": "Booster Video",
- "categoryId": 0,
- "url": "https://boostervideo.ru/",
- "companyId": "booster_video"
- },
- "bootstrap": {
- "name": "Bootstrap CDN",
- "categoryId": 9,
- "url": "http://getbootstrap.com/",
- "companyId": "bootstrap_cdn"
- },
- "borrango.com": {
- "name": "borrango.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "botscanner": {
- "name": "BotScanner",
- "categoryId": 6,
- "url": "http://botscanner.com",
- "companyId": "botscanner"
- },
- "boudja.com": {
- "name": "boudja.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bounce_exchange": {
- "name": "Bounce Exchange",
- "categoryId": 4,
- "url": "http://bounceexchange.com",
- "companyId": "bounce_exchange"
- },
- "bouncex": {
- "name": "BounceX",
- "categoryId": 4,
- "url": "https://www.bouncex.com/",
- "companyId": null
- },
- "box_uk": {
- "name": "Box UK",
- "categoryId": 6,
- "url": "http://www.clickdensity.com",
- "companyId": "box_uk"
- },
- "boxever": {
- "name": "Boxever",
- "categoryId": 4,
- "url": "https://www.boxever.com/",
- "companyId": "boxever"
- },
- "brainient": {
- "name": "Brainient",
- "categoryId": 4,
- "url": "http://www.brainient.com/",
- "companyId": "brainient"
- },
- "brainsins": {
- "name": "BrainSINS",
- "categoryId": 4,
- "url": "http://www.brainsins.com/",
- "companyId": "brainsins"
- },
- "branch": {
- "name": "Branch.io",
- "categoryId": 101,
- "url": "https://branch.io/",
- "companyId": "branch_metrics_inc",
- "source": "AdGuard"
- },
- "branch_metrics": {
- "name": "Branch",
- "categoryId": 4,
- "url": "https://branch.io/",
- "companyId": "branch_metrics_inc"
- },
- "brand_affinity": {
- "name": "Brand Affinity",
- "categoryId": 4,
- "url": "http://brandaffinity.net/about",
- "companyId": "yoonla"
- },
- "brand_networks": {
- "name": "Brand Networks",
- "categoryId": 4,
- "url": "http://www.xa.net/",
- "companyId": "brand_networks"
- },
- "brandmetrics.com": {
- "name": "Brandmetrics.com",
- "categoryId": 4,
- "url": "https://www.brandmetrics.com/",
- "companyId": null
- },
- "brandreach": {
- "name": "BrandReach",
- "categoryId": 4,
- "url": "http://www.brandreach.com/",
- "companyId": "brandreach"
- },
- "brandscreen": {
- "name": "Brandscreen",
- "categoryId": 4,
- "url": "http://www.brandscreen.com/",
- "companyId": "zenovia"
- },
- "brandwire.tv": {
- "name": "BrandWire",
- "categoryId": 4,
- "url": "https://brandwire.tv/",
- "companyId": null
- },
- "branica": {
- "name": "Branica",
- "categoryId": 4,
- "url": "http://www.branica.com/",
- "companyId": "branica"
- },
- "braze": {
- "name": "Braze, Inc.",
- "categoryId": 6,
- "url": "https://www.braze.com/",
- "companyId": "braze",
- "source": "AdGuard"
- },
- "brealtime": {
- "name": "EMX Digital",
- "categoryId": 4,
- "url": "https://emxdigital.com/",
- "companyId": null
- },
- "bridgetrack": {
- "name": "BridgeTrack",
- "categoryId": 4,
- "url": "http://www.bridgetrack.com/",
- "companyId": "bridgetrack"
- },
- "brightcove": {
- "name": "Brightcove",
- "categoryId": 0,
- "url": "http://www.brightcove.com/en/",
- "companyId": "brightcove"
- },
- "brightcove_player": {
- "name": "Brightcove Player",
- "categoryId": 0,
- "url": "http://www.brightcove.com/en/",
- "companyId": "brightcove"
- },
- "brightedge": {
- "name": "BrightEdge",
- "categoryId": 4,
- "url": "http://www.brightedge.com/",
- "companyId": "brightedge"
- },
- "brightfunnel": {
- "name": "BrightFunnel",
- "categoryId": 6,
- "url": "http://www.brightfunnel.com/",
- "companyId": "brightfunnel"
- },
- "brightonclick.com": {
- "name": "brightonclick.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "brightroll": {
- "name": "BrightRoll",
- "categoryId": 4,
- "url": "http://www.brightroll.com/",
- "companyId": "verizon"
- },
- "brilig": {
- "name": "Brilig",
- "categoryId": 4,
- "url": "http://www.brilig.com/",
- "companyId": "dentsu_aegis_network"
- },
- "brillen.de": {
- "name": "brillen.de",
- "categoryId": 8,
- "url": "https://www.brillen.de/",
- "companyId": null
- },
- "broadstreet": {
- "name": "Broadstreet",
- "categoryId": 4,
- "url": "http://broadstreetads.com/",
- "companyId": "broadstreet"
- },
- "bronto": {
- "name": "Bronto",
- "categoryId": 4,
- "url": "http://bronto.com/",
- "companyId": "bronto"
- },
- "brow.si": {
- "name": "Brow.si",
- "categoryId": 4,
- "url": "https://brow.si/",
- "companyId": "brow.si"
- },
- "browser-statistik": {
- "name": "Browser-Statistik",
- "categoryId": 6,
- "url": "http://www.browser-statistik.de/",
- "companyId": "browser-statistik"
- },
- "browser_update": {
- "name": "Browser Update",
- "categoryId": 2,
- "url": "http://www.browser-update.org/",
- "companyId": "browser-update"
- },
- "btncdn.com": {
- "name": "btncdn.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "bubblestat": {
- "name": "Bubblestat",
- "categoryId": 4,
- "url": "http://www.bubblestat.com/",
- "companyId": "bubblestat"
- },
- "buddy_media": {
- "name": "Buddy Media",
- "categoryId": 7,
- "url": "http://www.salesforce.com/",
- "companyId": "salesforce"
- },
- "buffer_button": {
- "name": "Buffer Button",
- "categoryId": 7,
- "url": "http://www.bufferapp.com/",
- "companyId": "buffer"
- },
- "bugherd.com": {
- "name": "BugHerd",
- "categoryId": 2,
- "url": "https://bugherd.com",
- "companyId": "bugherd"
- },
- "bugsnag": {
- "name": "Bugsnag",
- "categoryId": 6,
- "url": "https://bugsnag.com",
- "companyId": "bugsnag"
- },
- "bulkhentai.com": {
- "name": "bulkhentai.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "bumlam.com": {
- "name": "bumlam.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "bunchbox": {
- "name": "Bunchbox",
- "categoryId": 6,
- "url": "https://app.bunchbox.co/login",
- "companyId": "bunchbox"
- },
- "burda": {
- "name": "BurdaForward",
- "categoryId": 4,
- "url": "http://www.hubert-burda-media.com/",
- "companyId": "hubert_burda_media"
- },
- "burda_digital_systems": {
- "name": "Burda Digital Systems",
- "categoryId": 4,
- "url": "http://www.hubert-burda-media.com/",
- "companyId": "hubert_burda_media"
- },
- "burst_media": {
- "name": "Burst Media",
- "categoryId": 4,
- "url": "http://www.burstmedia.com/",
- "companyId": "rhythmone"
- },
- "burt": {
- "name": "Burt",
- "categoryId": 4,
- "url": "http://www.burtcorp.com/",
- "companyId": "burt"
- },
- "businessonline_analytics": {
- "name": "BusinessOnLine Analytics",
- "categoryId": 6,
- "url": "http://www.businessol.com/",
- "companyId": "businessonline"
- },
- "button": {
- "name": "Button",
- "categoryId": 4,
- "url": "https://www.usebutton.com/",
- "companyId": "button",
- "source": "AdGuard"
- },
- "buysellads": {
- "name": "BuySellAds",
- "categoryId": 4,
- "url": "http://buysellads.com/",
- "companyId": "buysellads.com"
- },
- "buzzadexchange.com": {
- "name": "buzzadexchange.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "buzzador": {
- "name": "Buzzador",
- "categoryId": 7,
- "url": "http://www.buzzador.com",
- "companyId": "buzzador"
- },
- "buzzfeed": {
- "name": "BuzzFeed",
- "categoryId": 2,
- "url": "http://www.buzzfeed.com",
- "companyId": "buzzfeed"
- },
- "bwbx.io": {
- "name": "Bloomberg CDN",
- "categoryId": 9,
- "url": "https://www.bloomberg.com/",
- "companyId": null
- },
- "bypass": {
- "name": "Bypass",
- "categoryId": 4,
- "url": "http://bypass.jp/",
- "companyId": "united_inc"
- },
- "c1_exchange": {
- "name": "C1 Exchange",
- "categoryId": 4,
- "url": "http://c1exchange.com/",
- "companyId": "c1_exchange"
- },
- "c3_metrics": {
- "name": "C3 Metrics",
- "categoryId": 6,
- "url": "http://c3metrics.com/",
- "companyId": "c3_metrics"
- },
- "c8_network": {
- "name": "C8 Network",
- "categoryId": 4,
- "url": "http://c8.net.ua/",
- "companyId": "c8_network"
- },
- "cackle.me": {
- "name": "Cackle",
- "categoryId": 3,
- "url": "https://cackle.me/",
- "companyId": null
- },
- "cadreon": {
- "name": "Cadreon",
- "categoryId": 4,
- "url": "http://www.cadreon.com/",
- "companyId": "cadreon"
- },
- "call_page": {
- "name": "Call Page",
- "categoryId": 2,
- "url": "https://www.callpage.io/",
- "companyId": "call_page"
- },
- "callbackhunter": {
- "name": "CallbackHunter",
- "categoryId": 2,
- "url": "http://callbackhunter.com/main",
- "companyId": "callbackhunter"
- },
- "callbox": {
- "name": "CallBox",
- "categoryId": 2,
- "url": "http://www.centuryinteractive.com",
- "companyId": "callbox"
- },
- "callibri": {
- "name": "Callibri",
- "categoryId": 4,
- "url": "https://callibri.ru/",
- "companyId": "callibri"
- },
- "callrail": {
- "name": "CallRail",
- "categoryId": 2,
- "url": "http://www.callrail.com/",
- "companyId": "callrail"
- },
- "calltracking": {
- "name": "Calltracking",
- "categoryId": 2,
- "url": "https://calltracking.ru",
- "companyId": "calltracking"
- },
- "caltat.com": {
- "name": "Caltat",
- "categoryId": 2,
- "url": "https://caltat.com/",
- "companyId": null
- },
- "cam-content.com": {
- "name": "Cam-Content.com",
- "categoryId": 3,
- "url": "https://www.cam-content.com/",
- "companyId": null
- },
- "camakaroda.com": {
- "name": "camakaroda.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "campus_explorer": {
- "name": "Campus Explorer",
- "categoryId": 6,
- "url": "http://www.campusexplorer.com/",
- "companyId": "campus_explorer"
- },
- "canddi": {
- "name": "CANDDI",
- "categoryId": 6,
- "url": "https://www.canddi.com/",
- "companyId": "canddi"
- },
- "canonical": {
- "name": "Canonical",
- "categoryId": 8,
- "url": "https://canonical.com/",
- "companyId": "canonical",
- "source": "AdGuard"
- },
- "canvas": {
- "name": "Canvas",
- "categoryId": 2,
- "url": "https://www.canvas.net/",
- "companyId": null
- },
- "capitaldata": {
- "name": "CapitalData",
- "categoryId": 6,
- "url": "https://www.capitaldata.fr/",
- "companyId": "highco"
- },
- "captora": {
- "name": "Captora",
- "categoryId": 4,
- "url": "http://www.captora.com/",
- "companyId": "captora"
- },
- "capture_media": {
- "name": "Capture Media",
- "categoryId": 4,
- "url": "http://capturemedia.ch/",
- "companyId": "capture_media"
- },
- "capturly": {
- "name": "Capturly",
- "categoryId": 6,
- "url": "http://capturly.com/",
- "companyId": "capturly"
- },
- "carambola": {
- "name": "Carambola",
- "categoryId": 4,
- "url": "http://carambo.la/",
- "companyId": "carambola"
- },
- "carbonads": {
- "name": "Carbon Ads",
- "categoryId": 4,
- "url": "https://www.carbonads.net/",
- "companyId": "buysellads.com"
- },
- "cardinal": {
- "name": "Cardinal",
- "categoryId": 6,
- "url": "https://www.cardinalcommerce.com/",
- "companyId": "visa"
- },
- "cardlytics": {
- "name": "Cardlytics",
- "categoryId": 6,
- "url": "http://www.cardlytics.com/",
- "companyId": null
- },
- "carrot_quest": {
- "name": "Carrot Quest",
- "categoryId": 6,
- "url": "http://www.carrotquest.io/",
- "companyId": "carrot_quest"
- },
- "cartstack": {
- "name": "CartStack",
- "categoryId": 2,
- "url": "http://cartstack.com/",
- "companyId": "cartstack"
- },
- "caspion": {
- "name": "Caspion",
- "categoryId": 6,
- "url": "http://caspion.com/",
- "companyId": "caspion"
- },
- "castle": {
- "name": "Castle",
- "categoryId": 2,
- "url": "https://castle.io",
- "companyId": "castle"
- },
- "catchpoint": {
- "name": "Catchpoint",
- "categoryId": 6,
- "url": "http://www.catchpoint.com/",
- "companyId": "catchpoint_systems"
- },
- "cbox": {
- "name": "Cbox",
- "categoryId": 2,
- "url": "http://cbox.ws",
- "companyId": "cbox"
- },
- "cbs_interactive": {
- "name": "CBS Interactive",
- "categoryId": 0,
- "url": "http://www.cbsinteractive.com/",
- "companyId": "cbs_interactive"
- },
- "ccm_benchmark": {
- "name": "CCM Benchmark",
- "categoryId": 4,
- "url": "http://www.ccmbenchmark.com/",
- "companyId": null
- },
- "cdk_digital_marketing": {
- "name": "CDK Digital Marketing",
- "categoryId": 4,
- "url": "http://www.cobaltgroup.com",
- "companyId": "cdk_digital_marketing"
- },
- "cdn-net.com": {
- "name": "cdn-net.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdn13.com": {
- "name": "cdn13.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "cdn77": {
- "name": "CDN77",
- "categoryId": 9,
- "url": "https://www.cdn77.com/",
- "companyId": null
- },
- "cdnetworks.net": {
- "name": "cdnetworks.net",
- "categoryId": 9,
- "url": "https://www.cdnetworks.com/",
- "companyId": null
- },
- "cdnnetwok_xyz": {
- "name": "cdnnetwok.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "cdnondemand.org": {
- "name": "cdnondemand.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdnsure.com": {
- "name": "cdnsure.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cdnvideo.com": {
- "name": "CDNvideo",
- "categoryId": 9,
- "url": "https://www.cdnvideo.com/",
- "companyId": "cdnvideo"
- },
- "cdnwidget.com": {
- "name": "cdnwidget.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "cedexis_radar": {
- "name": "Cedexis Radar",
- "categoryId": 6,
- "url": "http://www.cedexis.com/products_radar.html",
- "companyId": "cedexis"
- },
- "celebrus": {
- "name": "Celebrus",
- "categoryId": 6,
- "url": "https://www.celebrus.com/",
- "companyId": "celebrus"
- },
- "celtra": {
- "name": "Celtra",
- "categoryId": 0,
- "url": "http://www.celtra.com/",
- "companyId": "celtra"
- },
- "cendyn": {
- "name": "Cendyn",
- "categoryId": 4,
- "url": "http://www.cendyn.com/",
- "companyId": "cendyn"
- },
- "centraltag": {
- "name": "CentralTag",
- "categoryId": 4,
- "url": "http://www.centraltag.com/",
- "companyId": "centraltag"
- },
- "centro": {
- "name": "Centro",
- "categoryId": 4,
- "url": "http://centro.net/",
- "companyId": "centro"
- },
- "cerberus_speed-trap": {
- "name": "Cerberus Speed-Trap",
- "categoryId": 6,
- "url": "http://cerberusip.com/",
- "companyId": "cerberus"
- },
- "certainsource": {
- "name": "CertainSource",
- "categoryId": 4,
- "url": "http://www.ewaydirect.com",
- "companyId": "certainsource"
- },
- "certifica_metric": {
- "name": "Certifica Metric",
- "categoryId": 4,
- "url": "http://www.comscore.com/Products_Services/Product_Index/Certifica_Metric",
- "companyId": "comscore"
- },
- "certona": {
- "name": "Certona",
- "categoryId": 4,
- "url": "http://www.certona.com/products/recommendation.php",
- "companyId": "certona"
- },
- "chameleon": {
- "name": "Chameleon",
- "categoryId": 4,
- "url": "http://chameleon.ad/",
- "companyId": "chamaleon"
- },
- "chango": {
- "name": "Chango",
- "categoryId": 4,
- "url": "http://www.chango.com/",
- "companyId": "rubicon_project"
- },
- "channel_intelligence": {
- "name": "Channel Intelligence",
- "categoryId": 4,
- "url": "http://www.channelintelligence.com/",
- "companyId": "google"
- },
- "channel_pilot_solutions": {
- "name": "ChannelPilot Solutions",
- "categoryId": 6,
- "url": "https://www.channelpilot.de/",
- "companyId": null
- },
- "channeladvisor": {
- "name": "ChannelAdvisor",
- "categoryId": 4,
- "url": "http://www.channeladvisor.com/",
- "companyId": "channeladvisor"
- },
- "channelfinder": {
- "name": "ChannelFinder",
- "categoryId": 4,
- "url": "http://www.kpicentral.com/",
- "companyId": "kaleidoscope_promotions"
- },
- "chaordic": {
- "name": "Chaordic",
- "categoryId": 4,
- "url": "https://www.chaordic.com.br/",
- "companyId": "chaordic"
- },
- "chartbeat": {
- "name": "ChartBeat",
- "categoryId": 6,
- "url": "http://chartbeat.com/",
- "companyId": "chartbeat"
- },
- "chartboost": {
- "name": "Chartboost",
- "categoryId": 4,
- "url": "http://chartboost.com/",
- "companyId": "take-two",
- "source": "AdGuard"
- },
- "chaser": {
- "name": "Chaser",
- "categoryId": 2,
- "url": "http://chaser.ru/",
- "companyId": "chaser"
- },
- "chat_beacon": {
- "name": "Chat Beacon",
- "categoryId": 2,
- "url": "https://www.chatbeacon.io/",
- "companyId": "chat_beacon"
- },
- "chatango": {
- "name": "Chatango",
- "categoryId": 2,
- "url": "http://www.chatango.com/",
- "companyId": "chatango"
- },
- "chatra": {
- "name": "Chatra",
- "categoryId": 2,
- "url": "https://chatra.io",
- "companyId": "chatra"
- },
- "chaturbate.com": {
- "name": "chaturbate.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "chatwing": {
- "name": "ChatWing",
- "categoryId": 2,
- "url": "http://chatwing.com/",
- "companyId": "chatwing"
- },
- "checkmystats": {
- "name": "CheckMyStats",
- "categoryId": 4,
- "url": "http://checkmystats.com.au",
- "companyId": "checkmystats"
- },
- "chefkoch_de": {
- "name": "chefkoch.de",
- "categoryId": 8,
- "url": "http://chefkoch.de/",
- "companyId": null
- },
- "chin_media": {
- "name": "Chin Media",
- "categoryId": 4,
- "url": "http://www.chinmedia.vn/#",
- "companyId": "chin_media"
- },
- "chinesean": {
- "name": "ChineseAN",
- "categoryId": 4,
- "url": "http://www.chinesean.com/",
- "companyId": "chinesean"
- },
- "chitika": {
- "name": "Chitika",
- "categoryId": 4,
- "url": "http://chitika.com/",
- "companyId": "chitika"
- },
- "choicestream": {
- "name": "ChoiceStream",
- "categoryId": 4,
- "url": "http://www.choicestream.com/",
- "companyId": "choicestream"
- },
- "chute": {
- "name": "Chute",
- "categoryId": 5,
- "url": "https://www.getchute.com/",
- "companyId": "esw_capital"
- },
- "circit": {
- "name": "circIT",
- "categoryId": 6,
- "url": "http://www.circit.de/",
- "companyId": null
- },
- "circulate": {
- "name": "Circulate",
- "categoryId": 6,
- "url": "http://circulate.com/",
- "companyId": "circulate"
- },
- "city_spark": {
- "name": "City Spark",
- "categoryId": 4,
- "url": "http://www.cityspark.com/",
- "companyId": "city_spark"
- },
- "cityads": {
- "name": "CityAds",
- "categoryId": 4,
- "url": "http://cityads.ru/",
- "companyId": "cityads"
- },
- "ciuvo.com": {
- "name": "ciuvo.com",
- "categoryId": 12,
- "url": "https://www.ciuvo.com/",
- "companyId": null
- },
- "civey_widgets": {
- "name": "Civey Widgets",
- "categoryId": 2,
- "url": "https://civey.com/",
- "companyId": "civey"
- },
- "civicscience.com": {
- "name": "CivicScience",
- "categoryId": 6,
- "url": "https://civicscience.com/",
- "companyId": "civicscience"
- },
- "ciwebgroup": {
- "name": "CIWebGroup",
- "categoryId": 4,
- "url": "http://www.ciwebgroup.com/",
- "companyId": "ciwebgroup"
- },
- "clcknads.pro": {
- "name": "clcknads.pro",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "clear_pier": {
- "name": "ClearPier",
- "categoryId": 4,
- "url": "http://clearpier.com/",
- "companyId": "clear_pier"
- },
- "clearbit.com": {
- "name": "Clearbit",
- "categoryId": 6,
- "url": "https://clearbit.com/",
- "companyId": "clearbit"
- },
- "clearsale": {
- "name": "clearsale",
- "categoryId": 4,
- "url": "https://www.clear.sale/",
- "companyId": null
- },
- "clearstream.tv": {
- "name": "Clearstream.TV",
- "categoryId": 4,
- "url": "http://clearstream.tv/",
- "companyId": "clearstream.tv"
- },
- "clerk.io": {
- "name": "Clerk.io",
- "categoryId": 4,
- "url": "https://clerk.io/",
- "companyId": "clerk.io"
- },
- "clever_push": {
- "name": "Clever Push",
- "categoryId": 6,
- "url": "https://clevertap.com/",
- "companyId": "clever_push"
- },
- "clever_tap": {
- "name": "CleverTap",
- "categoryId": 6,
- "url": "https://clevertap.com/",
- "companyId": "clever_tap"
- },
- "cleversite": {
- "name": "Cleversite",
- "categoryId": 2,
- "url": "http://cleversite.ru/",
- "companyId": "cleversite"
- },
- "click360": {
- "name": "Click360",
- "categoryId": 6,
- "url": "https://www.click360.io/",
- "companyId": "click360"
- },
- "click_and_chat": {
- "name": "Click and Chat",
- "categoryId": 2,
- "url": "http://www.clickandchat.com/",
- "companyId": "clickandchat"
- },
- "click_back": {
- "name": "Click Back",
- "categoryId": 4,
- "url": "http://www.clickback.com/",
- "companyId": "clickback"
- },
- "clickaider": {
- "name": "ClickAider",
- "categoryId": 4,
- "url": "http://clickaider.com/",
- "companyId": "clickaider"
- },
- "clickaine": {
- "name": "Clickaine",
- "categoryId": 4,
- "url": "https://clickaine.com/",
- "companyId": "clickaine",
- "source": "AdGuard"
- },
- "clickbank": {
- "name": "ClickBank",
- "categoryId": 4,
- "url": "http://www.clickbank.com/",
- "companyId": "clickbank"
- },
- "clickbank_proads": {
- "name": "ClickBank ProAds",
- "categoryId": 4,
- "url": "http://www.cbproads.com/",
- "companyId": "clickbank_proads"
- },
- "clickbooth": {
- "name": "Clickbooth",
- "categoryId": 4,
- "url": "http://www.clickbooth.com/",
- "companyId": "clickbooth"
- },
- "clickcease": {
- "name": "ClickCease",
- "categoryId": 2,
- "url": "https://www.clickcease.com/",
- "companyId": "click_cease"
- },
- "clickcertain": {
- "name": "ClickCertain",
- "categoryId": 4,
- "url": "http://www.clickcertain.com",
- "companyId": "clickcertain"
- },
- "clickdesk": {
- "name": "ClickDesk",
- "categoryId": 2,
- "url": "https://www.clickdesk.com/",
- "companyId": "clickdesk"
- },
- "clickdimensions": {
- "name": "ClickDimensions",
- "categoryId": 4,
- "url": "http://www.clickdimensions.com/",
- "companyId": "clickdimensions"
- },
- "clickequations": {
- "name": "ClickEquations",
- "categoryId": 4,
- "url": "http://www.clickequations.com/",
- "companyId": "acquisio"
- },
- "clickexperts": {
- "name": "ClickExperts",
- "categoryId": 4,
- "url": "http://clickexperts.com/corp/index.php?lang=en",
- "companyId": "clickexperts"
- },
- "clickforce": {
- "name": "ClickForce",
- "categoryId": 4,
- "url": "http://www.clickforce.com.tw/",
- "companyId": "clickforce"
- },
- "clickinc": {
- "name": "ClickInc",
- "categoryId": 4,
- "url": "http://www.clickinc.com",
- "companyId": "clickinc"
- },
- "clickintext": {
- "name": "ClickInText",
- "categoryId": 4,
- "url": "http://www.clickintext.com/",
- "companyId": "clickintext"
- },
- "clickky": {
- "name": "Clickky",
- "categoryId": 4,
- "url": "http://www.clickky.biz/",
- "companyId": "clickky"
- },
- "clickmeter": {
- "name": "ClickMeter",
- "categoryId": 4,
- "url": "http://www.clickmeter.com",
- "companyId": "clickmeter"
- },
- "clickonometrics": {
- "name": "Clickonometrics",
- "categoryId": 4,
- "url": "http://clickonometrics.pl/",
- "companyId": "clickonometrics"
- },
- "clickpoint": {
- "name": "Clickpoint",
- "categoryId": 4,
- "url": "http://clickpoint.com/",
- "companyId": "clickpoint"
- },
- "clickprotector": {
- "name": "ClickProtector",
- "categoryId": 6,
- "url": "http://www.clickprotector.com/",
- "companyId": "clickprotector"
- },
- "clickreport": {
- "name": "ClickReport",
- "categoryId": 6,
- "url": "http://clickreport.com/",
- "companyId": "clickreport"
- },
- "clicks_thru_networks": {
- "name": "Clicks Thru Networks",
- "categoryId": 4,
- "url": "http://www.clicksthrunetwork.com/",
- "companyId": "clicksthrunetwork"
- },
- "clicksor": {
- "name": "Clicksor",
- "categoryId": 4,
- "url": "http://clicksor.com/",
- "companyId": "clicksor"
- },
- "clicktale": {
- "name": "ClickTale",
- "categoryId": 6,
- "url": "http://www.clicktale.com/",
- "companyId": "clicktale"
- },
- "clicktripz": {
- "name": "ClickTripz",
- "categoryId": 4,
- "url": "https://www.clicktripz.com",
- "companyId": "clicktripz"
- },
- "clickwinks": {
- "name": "Clickwinks",
- "categoryId": 4,
- "url": "http://www.clickwinks.com/",
- "companyId": "clickwinks"
- },
- "clicky": {
- "name": "Clicky",
- "categoryId": 6,
- "url": "http://getclicky.com/",
- "companyId": "clicky"
- },
- "clickyab": {
- "name": "Clickyab",
- "categoryId": 4,
- "url": "https://www.clickyab.com/",
- "companyId": "clickyab"
- },
- "clicmanager": {
- "name": "ClicManager",
- "categoryId": 4,
- "url": "http://www.clicmanager.fr/",
- "companyId": "clicmanager"
- },
- "clip_syndicate": {
- "name": "Clip Syndicate",
- "categoryId": 4,
- "url": "http://www.clipsyndicate.com/",
- "companyId": "clip_syndicate"
- },
- "clixgalore": {
- "name": "clixGalore",
- "categoryId": 4,
- "url": "http://www.clixgalore.com/",
- "companyId": "clixgalore"
- },
- "clixmetrix": {
- "name": "ClixMetrix",
- "categoryId": 4,
- "url": "http://www.clixmetrix.com/",
- "companyId": "clixmedia"
- },
- "clixsense": {
- "name": "ClixSense",
- "categoryId": 4,
- "url": "http://www.clixsense.com/",
- "companyId": "clixsense"
- },
- "cloud-media.fr": {
- "name": "CloudMedia",
- "categoryId": 4,
- "url": "https://cloudmedia.fr/",
- "companyId": null
- },
- "cloudflare": {
- "name": "CloudFlare",
- "categoryId": 9,
- "url": "https://www.cloudflare.com/",
- "companyId": "cloudflare"
- },
- "cloudimage.io": {
- "name": "Cloudimage.io",
- "categoryId": 9,
- "url": "https://www.cloudimage.io/en/home",
- "companyId": "scaleflex_sas"
- },
- "cloudinary": {
- "name": "Cloudinary",
- "categoryId": 9,
- "url": "https://cloudinary.com/",
- "companyId": null
- },
- "clove_network": {
- "name": "Clove Network",
- "categoryId": 4,
- "url": "http://www.clovenetwork.com/",
- "companyId": "clove_network"
- },
- "clustrmaps": {
- "name": "ClustrMaps",
- "categoryId": 4,
- "url": "http://www.clustrmaps.com/",
- "companyId": "clustrmaps"
- },
- "cnbc": {
- "name": "CNBC",
- "categoryId": 8,
- "url": "https://www.cnbc.com/",
- "companyId": "nbcuniversal"
- },
- "cnetcontent.com": {
- "name": "Cnetcontent",
- "categoryId": 8,
- "url": "http://cnetcontent.com/",
- "companyId": "cbs_interactive"
- },
- "cnstats": {
- "name": "CNStats",
- "categoryId": 6,
- "url": "http://cnstats.ru/",
- "companyId": "cnstats"
- },
- "cnzz.com": {
- "name": "Umeng",
- "categoryId": 6,
- "url": "http://www.umeng.com/",
- "companyId": "umeng"
- },
- "coadvertise": {
- "name": "COADVERTISE",
- "categoryId": 4,
- "url": "http://www.coadvertise.com/",
- "companyId": "coadvertise"
- },
- "cobrowser": {
- "name": "CoBrowser",
- "categoryId": 2,
- "url": "https://www.cobrowser.net/",
- "companyId": "cobrowser.net"
- },
- "codeonclick.com": {
- "name": "codeonclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cogocast": {
- "name": "CogoCast",
- "categoryId": 4,
- "url": "http://www.cogocast.com",
- "companyId": "cogocast"
- },
- "coin_have": {
- "name": "Coin Have",
- "categoryId": 4,
- "url": "https://coin-have.com/",
- "companyId": "coin_have"
- },
- "coin_traffic": {
- "name": "Coin Traffic",
- "categoryId": 2,
- "url": "https://cointraffic.io/",
- "companyId": "coin_traffic"
- },
- "coinhive": {
- "name": "Coinhive",
- "categoryId": 8,
- "url": "https://coinhive.com/",
- "companyId": "coinhive"
- },
- "coinurl": {
- "name": "CoinURL",
- "categoryId": 4,
- "url": "https://coinurl.com/",
- "companyId": "coinurl"
- },
- "coll1onf.com": {
- "name": "coll1onf.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "coll2onf.com": {
- "name": "coll2onf.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "collarity": {
- "name": "Collarity",
- "categoryId": 4,
- "url": "http://www.collarity.com/",
- "companyId": "collarity"
- },
- "columbia_online": {
- "name": "Columbia Online",
- "categoryId": 4,
- "url": "https://www.colombiaonline.com/",
- "companyId": "columbia_online"
- },
- "combotag": {
- "name": "ComboTag",
- "categoryId": 4,
- "url": "https://www.combotag.com/",
- "companyId": null
- },
- "comcast_technology_solutions": {
- "name": "Comcast Technology Solutions",
- "categoryId": 0,
- "url": "https://www.comcasttechnologysolutions.com/",
- "companyId": "comcast_technology_solutions"
- },
- "comm100": {
- "name": "Comm100",
- "categoryId": 2,
- "url": "http://www.comm100.com/",
- "companyId": "comm100"
- },
- "commerce_sciences": {
- "name": "Commerce Sciences",
- "categoryId": 4,
- "url": "http://commercesciences.com/",
- "companyId": "commerce_sciences"
- },
- "commercehub": {
- "name": "CommerceHub",
- "categoryId": 4,
- "url": "http://www.mercent.com/",
- "companyId": "commercehub"
- },
- "commercialvalue.org": {
- "name": "commercialvalue.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "commission_junction": {
- "name": "CJ Affiliate",
- "categoryId": 4,
- "url": "http://www.cj.com/",
- "companyId": "conversant"
- },
- "communicator_corp": {
- "name": "Communicator Corp",
- "categoryId": 4,
- "url": "http://www.communicatorcorp.com/",
- "companyId": "communicator_corp"
- },
- "communigator": {
- "name": "CommuniGator",
- "categoryId": 6,
- "url": "http://www.wowanalytics.co.uk/",
- "companyId": "communigator"
- },
- "competexl": {
- "name": "CompeteXL",
- "categoryId": 6,
- "url": "http://www.compete.com/help/s12",
- "companyId": "wpp"
- },
- "complex_media_network": {
- "name": "Complex Media",
- "categoryId": 4,
- "url": "https://www.complex.com/",
- "companyId": "verizon"
- },
- "comprigo": {
- "name": "comprigo",
- "categoryId": 12,
- "url": "https://www.comprigo.com/",
- "companyId": null
- },
- "comscore": {
- "name": "ComScore, Inc.",
- "categoryId": 6,
- "url": "https://www.comscore.com/",
- "companyId": "comscore"
- },
- "conative.de": {
- "name": "CoNative",
- "categoryId": 4,
- "url": "http://www.conative.de/",
- "companyId": null
- },
- "condenastdigital.com": {
- "name": "Condé Nast Digital",
- "categoryId": 8,
- "url": "http://www.condenast.com/",
- "companyId": "conde_nast"
- },
- "conduit": {
- "name": "Conduit",
- "categoryId": 4,
- "url": "http://www.conduit.com/",
- "companyId": "conduit"
- },
- "confirmit": {
- "name": "Confirmit",
- "categoryId": 4,
- "url": "http://confirmit.com/",
- "companyId": "confirmit"
- },
- "congstar.de": {
- "name": "congstar.de",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "connatix.com": {
- "name": "Connatix",
- "categoryId": 4,
- "url": "https://connatix.com/",
- "companyId": "connatix"
- },
- "connectad": {
- "name": "ConnectAd",
- "categoryId": 4,
- "url": "https://connectad.io/",
- "companyId": "connectad"
- },
- "connecto": {
- "name": "Connecto",
- "categoryId": 6,
- "url": "http://www.connecto.io/",
- "companyId": "connecto"
- },
- "connexity": {
- "name": "Connexity",
- "categoryId": 4,
- "url": "http://www.connexity.com",
- "companyId": "shopzilla"
- },
- "connextra": {
- "name": "Connextra",
- "categoryId": 4,
- "url": "http://connextra.com/",
- "companyId": "connextra"
- },
- "constant_contact": {
- "name": "Constant Contact",
- "categoryId": 4,
- "url": "http://www.constantcontact.com/index.jsp",
- "companyId": "constant_contact"
- },
- "consumable": {
- "name": "Consumable",
- "categoryId": 4,
- "url": "http://consumable.com/index.html",
- "companyId": "giftconnect"
- },
- "contact_at_once": {
- "name": "Contact At Once!",
- "categoryId": 2,
- "url": "http://www.contactatonce.com/",
- "companyId": "contact_at_once!"
- },
- "contact_impact": {
- "name": "Contact Impact",
- "categoryId": 4,
- "url": "https://www.contactimpact.de/",
- "companyId": "axel_springer"
- },
- "contactme": {
- "name": "ContactMe",
- "categoryId": 4,
- "url": "http://www.contactme.com",
- "companyId": "contactme"
- },
- "contaxe": {
- "name": "Contaxe",
- "categoryId": 5,
- "url": "http://www.contaxe.com/",
- "companyId": "contaxe"
- },
- "content.ad": {
- "name": "Content.ad",
- "categoryId": 4,
- "url": "https://www.content.ad/",
- "companyId": "content.ad"
- },
- "content_insights": {
- "name": "Content Insights",
- "categoryId": 6,
- "url": "https://contentinsights.com/",
- "companyId": "content_insights"
- },
- "contentexchange.me": {
- "name": "Content Exchange",
- "categoryId": 6,
- "url": "https://www.contentexchange.me/",
- "companyId": "i.r.v."
- },
- "contentful_gmbh": {
- "name": "Contentful GmbH",
- "categoryId": 9,
- "url": "https://www.contentful.com/",
- "companyId": "contentful_gmbh"
- },
- "contentpass": {
- "name": "ContentPass",
- "categoryId": 6,
- "url": "https://www.contentpass.de/",
- "companyId": "contentpass"
- },
- "contentsquare.net": {
- "name": "ContentSquare",
- "categoryId": 4,
- "url": "https://www.contentsquare.com/",
- "companyId": "content_square"
- },
- "contentwrx": {
- "name": "Contentwrx",
- "categoryId": 6,
- "url": "http://contentwrx.com/",
- "companyId": "contentwrx"
- },
- "context": {
- "name": "C|ON|TEXT",
- "categoryId": 4,
- "url": "http://c-on-text.com",
- "companyId": "c_on_text"
- },
- "context.ad": {
- "name": "Context.ad",
- "categoryId": 4,
- "url": "http://contextad.pl/",
- "companyId": "context.ad"
- },
- "continum_net": {
- "name": "continum.net",
- "categoryId": 10,
- "url": "http://continum.net/",
- "companyId": null
- },
- "contribusource": {
- "name": "Contribusource",
- "categoryId": 4,
- "url": "https://www.contribusource.com/",
- "companyId": "contribusource"
- },
- "convergetrack": {
- "name": "ConvergeTrack",
- "categoryId": 6,
- "url": "http://www.convergedirect.com/technology/convergetrack.shtml",
- "companyId": "convergedirect"
- },
- "conversant": {
- "name": "Conversant",
- "categoryId": 4,
- "url": "https://www.conversantmedia.eu/",
- "companyId": "conversant"
- },
- "conversio": {
- "name": "CM Commerce",
- "categoryId": 6,
- "url": "https://cm-commerce.com/",
- "companyId": "conversio"
- },
- "conversion_logic": {
- "name": "Conversion Logic",
- "categoryId": 6,
- "url": "http://www.conversionlogic.com/",
- "companyId": "conversion_logic"
- },
- "conversionruler": {
- "name": "ConversionRuler",
- "categoryId": 4,
- "url": "http://www.conversionruler.com/",
- "companyId": "market_ruler"
- },
- "conversions_box": {
- "name": "Conversions Box",
- "categoryId": 7,
- "url": "http://www.conversionsbox.com/",
- "companyId": "conversions_box"
- },
- "conversions_on_demand": {
- "name": "Conversions On Demand",
- "categoryId": 5,
- "url": "https://www.conversionsondemand.com/",
- "companyId": "conversions_on_demand"
- },
- "conversive": {
- "name": "Conversive",
- "categoryId": 4,
- "url": "http://www.conversive.nl/",
- "companyId": "conversive"
- },
- "convert": {
- "name": "Convert",
- "categoryId": 6,
- "url": "https://www.convert.com/",
- "companyId": "convert"
- },
- "convertfox": {
- "name": "ConvertFox",
- "categoryId": 2,
- "url": "https://convertfox.com/",
- "companyId": "convertfox"
- },
- "convertro": {
- "name": "Convertro",
- "categoryId": 4,
- "url": "http://www.convertro.com/",
- "companyId": "verizon"
- },
- "conviva": {
- "name": "Conviva",
- "categoryId": 6,
- "url": "http://www.conviva.com/",
- "companyId": "conviva"
- },
- "cookie_consent": {
- "name": "Cookie Consent",
- "categoryId": 5,
- "url": "https://silktide.com/",
- "companyId": "silktide"
- },
- "cookie_script": {
- "name": "Cookie Script",
- "categoryId": 5,
- "url": "https://cookie-script.com/",
- "companyId": "cookie_script"
- },
- "cookiebot": {
- "name": "Cookiebot",
- "categoryId": 5,
- "url": "https://www.cookiebot.com/en/",
- "companyId": "cybot"
- },
- "cookieq": {
- "name": "CookieQ",
- "categoryId": 5,
- "url": "http://cookieq.com/CookieQ",
- "companyId": "baycloud"
- },
- "cooliris": {
- "name": "Cooliris",
- "categoryId": 2,
- "url": "http://www.cooliris.com",
- "companyId": "cooliris"
- },
- "copacet": {
- "name": "Copacet",
- "categoryId": 4,
- "url": "http://copacet.com/",
- "companyId": "copacet"
- },
- "coreaudience": {
- "name": "CoreAudience",
- "categoryId": 4,
- "url": "http://www.redaril.com/",
- "companyId": "hearst"
- },
- "coremotives": {
- "name": "CoreMotives",
- "categoryId": 4,
- "url": "http://coremotives.com/",
- "companyId": "coremotives"
- },
- "coull": {
- "name": "Coull",
- "categoryId": 4,
- "url": "http://coull.com/",
- "companyId": "coull"
- },
- "cpm_rocket": {
- "name": "CPM Rocket",
- "categoryId": 4,
- "url": "http://www.cpmrocket.com/",
- "companyId": "cpm_rocket"
- },
- "cpmprofit": {
- "name": "CPMProfit",
- "categoryId": 4,
- "url": "http://www.cpmprofit.com/",
- "companyId": "cpmprofit"
- },
- "cpmstar": {
- "name": "CPMStar",
- "categoryId": 4,
- "url": "http://www.cpmstar.com",
- "companyId": "cpmstar"
- },
- "cpx.to": {
- "name": "Captify",
- "categoryId": 4,
- "url": "https://www.captify.co.uk/",
- "companyId": "captify"
- },
- "cq_counter": {
- "name": "CQ Counter",
- "categoryId": 6,
- "url": "http://www.cqcounter.com/",
- "companyId": "cq_counter"
- },
- "cqq5id8n.com": {
- "name": "cqq5id8n.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "cquotient.com": {
- "name": "CQuotient",
- "categoryId": 6,
- "url": "https://www.demandware.com/#cquotient",
- "companyId": "salesforce"
- },
- "craftkeys": {
- "name": "CraftKeys",
- "categoryId": 4,
- "url": "http://craftkeys.com/",
- "companyId": "craftkeys"
- },
- "crakmedia_network": {
- "name": "Crakmedia Network",
- "categoryId": 4,
- "url": "http://crakmedia.com/",
- "companyId": "crakmedia_network"
- },
- "crankyads": {
- "name": "CrankyAds",
- "categoryId": 4,
- "url": "http://www.crankyads.com",
- "companyId": "crankyads"
- },
- "crashlytics": {
- "name": "Crashlytics",
- "categoryId": 101,
- "url": "https://crashlytics.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "crazy_egg": {
- "name": "Crazy Egg",
- "categoryId": 6,
- "url": "http://crazyegg.com/",
- "companyId": "crazy_egg"
- },
- "creafi": {
- "name": "Creafi",
- "categoryId": 4,
- "url": "http://www.creafi.com/en/home/",
- "companyId": "crazy4media"
- },
- "createjs": {
- "name": "CreateJS",
- "categoryId": 9,
- "url": "https://createjs.com/",
- "companyId": null
- },
- "creative_commons": {
- "name": "Creative Commons",
- "categoryId": 8,
- "url": "https://creativecommons.org/",
- "companyId": "creative_commons_corp"
- },
- "crimsonhexagon_com": {
- "name": "Brandwatch",
- "categoryId": 6,
- "url": "https://www.brandwatch.com/",
- "companyId": "brandwatch"
- },
- "crimtan": {
- "name": "Crimtan",
- "categoryId": 4,
- "url": "http://www.crimtan.com/",
- "companyId": "crimtan"
- },
- "crisp": {
- "name": "Crisp",
- "categoryId": 2,
- "url": "https://crisp.chat/",
- "companyId": "crisp"
- },
- "criteo": {
- "name": "Criteo",
- "categoryId": 4,
- "url": "http://www.criteo.com/",
- "companyId": "criteo"
- },
- "crm4d": {
- "name": "CRM4D",
- "categoryId": 6,
- "url": "https://crm4d.com/",
- "companyId": "crm4d"
- },
- "crossengage": {
- "name": "CrossEngage",
- "categoryId": 6,
- "url": "https://www.crossengage.io/",
- "companyId": "crossengage"
- },
- "crosspixel": {
- "name": "Cross Pixel",
- "categoryId": 4,
- "url": "http://crosspixel.net/",
- "companyId": "cross_pixel"
- },
- "crosssell.info": {
- "name": "econda Cross Sell",
- "categoryId": 4,
- "url": "https://www.econda.de/en/solutions/personalization/cross-sell/",
- "companyId": "econda"
- },
- "crossss": {
- "name": "Crossss",
- "categoryId": 4,
- "url": "http://crossss.ru/",
- "companyId": "crossss"
- },
- "crowd_ignite": {
- "name": "Crowd Ignite",
- "categoryId": 4,
- "url": "http://get.crowdignite.com/",
- "companyId": "gorilla_nation_media"
- },
- "crowd_science": {
- "name": "Crowd Science",
- "categoryId": 4,
- "url": "http://www.crowdscience.com/",
- "companyId": "crowd_science"
- },
- "crowdprocess": {
- "name": "CrowdProcess",
- "categoryId": 2,
- "url": "https://crowdprocess.com",
- "companyId": "crowdprocess"
- },
- "crowdynews": {
- "name": "Crowdynews",
- "categoryId": 7,
- "url": "http://www.crowdynews.com/",
- "companyId": "crowdynews"
- },
- "crownpeak": {
- "name": "Crownpeak",
- "categoryId": 5,
- "url": "https://www.crownpeak.com/",
- "companyId": "crownpeak"
- },
- "cryptoloot_miner": {
- "name": "CryptoLoot Miner",
- "categoryId": 4,
- "url": "https://crypto-loot.com/",
- "companyId": "cryptoloot"
- },
- "ctnetwork": {
- "name": "CTnetwork",
- "categoryId": 4,
- "url": "http://ctnetwork.hu/",
- "companyId": "ctnetwork"
- },
- "ctrlshift": {
- "name": "CtrlShift",
- "categoryId": 4,
- "url": "http://www.adzcentral.com/",
- "companyId": "ctrlshift"
- },
- "cubed": {
- "name": "Cubed",
- "categoryId": 6,
- "url": "http://withcubed.com/",
- "companyId": "cubed_attribution"
- },
- "cuelinks": {
- "name": "CueLinks",
- "categoryId": 4,
- "url": "http://www.cuelinks.com/",
- "companyId": "cuelinks"
- },
- "cup_interactive": {
- "name": "Cup Interactive",
- "categoryId": 4,
- "url": "http://www.cupinteractive.com/",
- "companyId": "cup_interactive"
- },
- "curse.com": {
- "name": "Curse",
- "categoryId": 8,
- "url": "https://www.curse.com/",
- "companyId": "amazon_associates"
- },
- "cursecdn.com": {
- "name": "Curse CDN",
- "categoryId": 9,
- "url": "https://www.curse.com/",
- "companyId": "amazon_associates"
- },
- "customer.io": {
- "name": "Customer.io",
- "categoryId": 2,
- "url": "http://www.customer.io/",
- "companyId": "customer.io"
- },
- "customerly": {
- "name": "Customerly",
- "categoryId": 2,
- "url": "https://www.customerly.io/",
- "companyId": "customerly"
- },
- "cxense": {
- "name": "cXense",
- "categoryId": 4,
- "url": "http://www.cxense.com/",
- "companyId": "cxense"
- },
- "cxo.name": {
- "name": "Chip Analytics",
- "categoryId": 6,
- "url": "http://www.chip.de/",
- "companyId": null
- },
- "cyber_wing": {
- "name": "Cyber Wing",
- "categoryId": 4,
- "url": "http://www.cyberwing.co.jp/",
- "companyId": "cyberwing"
- },
- "cybersource": {
- "name": "CyberSource",
- "categoryId": 6,
- "url": "https://www.cybersource.com/en-gb.html",
- "companyId": "visa"
- },
- "cygnus": {
- "name": "Cygnus",
- "categoryId": 4,
- "url": "http://www.cygnus.com/",
- "companyId": "cygnus"
- },
- "da-ads.com": {
- "name": "da-ads.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "dailymail.co.uk": {
- "name": "Daily Mail",
- "categoryId": 8,
- "url": "http://www.dailymail.co.uk/home/index.html",
- "companyId": "dmg_media"
- },
- "dailymotion": {
- "name": "Dailymotion",
- "categoryId": 8,
- "url": "https://vivendi.com/",
- "companyId": "vivendi"
- },
- "dailymotion_advertising": {
- "name": "Dailymotion Advertising",
- "categoryId": 4,
- "url": "http://advertising.dailymotion.com/",
- "companyId": "vivendi"
- },
- "daisycon": {
- "name": "Daisycon",
- "categoryId": 4,
- "url": "http://www.daisycon.com",
- "companyId": "daisycon"
- },
- "dantrack.net": {
- "name": "DANtrack",
- "categoryId": 4,
- "url": "http://media.dantrack.net/privacy/",
- "companyId": "dentsu_aegis_network"
- },
- "darwin_marketing": {
- "name": "Darwin Marketing",
- "categoryId": 4,
- "url": "http://www.darwinmarketing.com/",
- "companyId": "darwin_marketing"
- },
- "dashboard_ad": {
- "name": "Dashboard Ad",
- "categoryId": 4,
- "url": "http://www.dashboardad.com/",
- "companyId": "premium_access"
- },
- "datacaciques.com": {
- "name": "DataCaciques",
- "categoryId": 6,
- "url": "http://www.datacaciques.com/",
- "companyId": null
- },
- "datacoral": {
- "name": "Datacoral",
- "categoryId": 4,
- "url": "https://datacoral.com/",
- "companyId": "datacoral"
- },
- "datacrushers": {
- "name": "Datacrushers",
- "categoryId": 6,
- "url": "https://www.datacrushers.com/",
- "companyId": "datacrushers"
- },
- "datadome": {
- "name": "DataDome",
- "categoryId": 6,
- "url": "https://datadome.co/",
- "companyId": "datadome"
- },
- "datalicious_datacollector": {
- "name": "Datalicious DataCollector",
- "categoryId": 6,
- "url": "http://www.datalicious.com/",
- "companyId": "datalicious"
- },
- "datalicious_supertag": {
- "name": "Datalicious SuperTag",
- "categoryId": 5,
- "url": "http://www.datalicious.com/",
- "companyId": "datalicious"
- },
- "datalogix": {
- "name": "Datalogix",
- "categoryId": 4,
- "url": "https://www.oracle.com/corporate/acquisitions/datalogix/",
- "companyId": "oracle"
- },
- "datamind.ru": {
- "name": "DataMind",
- "categoryId": 4,
- "url": "http://datamind.ru/",
- "companyId": "datamind"
- },
- "datatables": {
- "name": "DataTables",
- "categoryId": 2,
- "url": "https://datatables.net/",
- "companyId": null
- },
- "datawrkz": {
- "name": "Datawrkz",
- "categoryId": 4,
- "url": "http://datawrkz.com/",
- "companyId": "datawrkz"
- },
- "dataxpand": {
- "name": "Dataxpand",
- "categoryId": 4,
- "url": "http://dataxpand.com/",
- "companyId": "dataxpand"
- },
- "dataxu": {
- "name": "DataXu",
- "categoryId": 4,
- "url": "http://www.dataxu.com/",
- "companyId": "dataxu"
- },
- "datds.net": {
- "name": "datds.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "datonics": {
- "name": "Datonics",
- "categoryId": 4,
- "url": "http://datonics.com/",
- "companyId": "almondnet"
- },
- "datran": {
- "name": "Pulsepoint",
- "categoryId": 4,
- "url": "https://www.pulsepoint.com/",
- "companyId": "pulsepoint_ad_exchange"
- },
- "davebestdeals.com": {
- "name": "davebestdeals.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "dawandastatic.com": {
- "name": "Dawanda CDN",
- "categoryId": 8,
- "url": "https://dawanda.com/",
- "companyId": null
- },
- "dc_stormiq": {
- "name": "DC StormIQ",
- "categoryId": 4,
- "url": "http://www.dc-storm.com/",
- "companyId": "dc_storm"
- },
- "dcbap.com": {
- "name": "dcbap.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "dcmn.com": {
- "name": "DCMN",
- "categoryId": 4,
- "url": "https://www.dcmn.com/",
- "companyId": null
- },
- "de_persgroep": {
- "name": "De Persgroep",
- "categoryId": 4,
- "url": "https://www.persgroep.nl",
- "companyId": "de_persgroep"
- },
- "deadline_funnel": {
- "name": "Deadline Funnel",
- "categoryId": 6,
- "url": "https://deadlinefunnel.com/",
- "companyId": "deadline_funnel"
- },
- "dealer.com": {
- "name": "Dealer.com",
- "categoryId": 6,
- "url": "http://www.dealer.com/",
- "companyId": "dealer.com"
- },
- "decibel_insight": {
- "name": "Decibel Insight",
- "categoryId": 6,
- "url": "https://www.decibelinsight.com/",
- "companyId": "decibel_insight"
- },
- "dedicated_media": {
- "name": "Dedicated Media",
- "categoryId": 4,
- "url": "http://www.dedicatedmedia.com/",
- "companyId": "dedicated_media"
- },
- "deep.bi": {
- "name": "Deep.BI",
- "categoryId": 6,
- "url": "http://www.deep.bi/#",
- "companyId": "deep.bi"
- },
- "deepintent.com": {
- "name": "DeepIntent",
- "categoryId": 4,
- "url": "https://www.deepintent.com/",
- "companyId": "deep_intent"
- },
- "defpush.com": {
- "name": "defpush.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "deichmann.com": {
- "name": "deichmann.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "delacon": {
- "name": "Delacon",
- "categoryId": 6,
- "url": "http://www.delacon.com.au/",
- "companyId": "delacon"
- },
- "delivr": {
- "name": "Delivr",
- "categoryId": 6,
- "url": "http://www.percentmobile.com/",
- "companyId": "delivr"
- },
- "delta_projects": {
- "name": "Delta Projects",
- "categoryId": 4,
- "url": "http://www.adaction.se/",
- "companyId": "delta_projects"
- },
- "deluxe": {
- "name": "Deluxe",
- "categoryId": 6,
- "url": "https://ww.deluxe.com/",
- "companyId": "deluxe"
- },
- "delve_networks": {
- "name": "Delve Networks",
- "categoryId": 7,
- "url": "http://www.delvenetworks.com/",
- "companyId": "limelight_networks"
- },
- "demandbase": {
- "name": "Demandbase",
- "categoryId": 4,
- "url": "http://www.demandbase.com/",
- "companyId": "demandbase"
- },
- "demandmedia": {
- "name": "DemandMedia",
- "categoryId": 4,
- "url": "http://www.demandmedia.com",
- "companyId": "leaf_group"
- },
- "deqwas": {
- "name": "Deqwas",
- "categoryId": 6,
- "url": "http://www.deqwas.com/",
- "companyId": "deqwas"
- },
- "devatics": {
- "name": "Devatics",
- "categoryId": 2,
- "url": "http://www.devatics.co.uk/",
- "companyId": "devatics"
- },
- "developer_media": {
- "name": "Developer Media",
- "categoryId": 4,
- "url": "http://www.developermedia.com/",
- "companyId": "developer_media"
- },
- "deviantart.net": {
- "name": "deviantart.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dex_platform": {
- "name": "DEX Platform",
- "categoryId": 4,
- "url": "http://blueadvertise.com/",
- "companyId": "dex_platform"
- },
- "dgm": {
- "name": "dgm",
- "categoryId": 4,
- "url": "http://www.dgm-au.com/",
- "companyId": "apd"
- },
- "dialogtech": {
- "name": "Dialogtech",
- "categoryId": 6,
- "url": "https://www.dialogtech.com/",
- "companyId": "dialogtech"
- },
- "dianomi": {
- "name": "Dianomi",
- "categoryId": 4,
- "url": "http://www.dianomi.com/cms/",
- "companyId": "dianomi"
- },
- "didit_blizzard": {
- "name": "Didit Blizzard",
- "categoryId": 4,
- "url": "http://www.didit.com/blizzard",
- "companyId": "didit"
- },
- "didit_maestro": {
- "name": "Didit Maestro",
- "categoryId": 4,
- "url": "http://www.didit.com/maestro",
- "companyId": "didit"
- },
- "didomi": {
- "name": "Didomi",
- "categoryId": 5,
- "url": "https://www.didomi.io/en/",
- "companyId": "didomi"
- },
- "digg_widget": {
- "name": "Digg Widget",
- "categoryId": 2,
- "url": "http://digg.com/apple/Digg_Widget",
- "companyId": "buysellads.com"
- },
- "digicert_trust_seal": {
- "name": "Digicert Trust Seal",
- "categoryId": 5,
- "url": "http://www.digicert.com/",
- "companyId": "digicert"
- },
- "digidip": {
- "name": "Digidip",
- "categoryId": 4,
- "url": "http://www.digidip.net/",
- "companyId": "digidip"
- },
- "digiglitz": {
- "name": "Digiglitz",
- "categoryId": 6,
- "url": "http://www.digiglitz.com/",
- "companyId": "digiglitz"
- },
- "digilant": {
- "name": "Digilant",
- "categoryId": 4,
- "url": "https://www.digilant.com/",
- "companyId": "digilant"
- },
- "digioh": {
- "name": "Digioh",
- "categoryId": 4,
- "url": "https://digioh.com/",
- "companyId": "digioh",
- "source": "AdGuard"
- },
- "digital.gov": {
- "name": "Digital.gov",
- "categoryId": 6,
- "url": "https://digital.gov/",
- "companyId": "us_government"
- },
- "digital_control_room": {
- "name": "Digital Control Room",
- "categoryId": 5,
- "url": "http://www.cookiereports.com/",
- "companyId": "digital_control_room"
- },
- "digital_nomads": {
- "name": "Digital Nomads",
- "categoryId": 4,
- "url": "http://dnomads.net/",
- "companyId": null
- },
- "digital_remedy": {
- "name": "Digital Remedy",
- "categoryId": 4,
- "url": "https://www.digitalremedy.com/",
- "companyId": "digital_remedy"
- },
- "digital_river": {
- "name": "Digital River",
- "categoryId": 4,
- "url": "http://corporate.digitalriver.com",
- "companyId": "digital_river"
- },
- "digital_window": {
- "name": "Digital Window",
- "categoryId": 4,
- "url": "http://www.digitalwindow.com/",
- "companyId": "axel_springer"
- },
- "digiteka": {
- "name": "Digiteka",
- "categoryId": 4,
- "url": "http://digiteka.com/",
- "companyId": "digiteka"
- },
- "digitrust": {
- "name": "DigiTrust",
- "categoryId": 4,
- "url": "http://www.digitru.st/",
- "companyId": "iab"
- },
- "dihitt_badge": {
- "name": "diHITT Badge",
- "categoryId": 7,
- "url": "http://www.dihitt.com.br/",
- "companyId": "dihitt"
- },
- "dimml": {
- "name": "DimML",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "direct_keyword_link": {
- "name": "Direct Keyword Link",
- "categoryId": 4,
- "url": "http://www.keywordsconnect.com/",
- "companyId": "direct_keyword_link"
- },
- "directadvert": {
- "name": "Direct/ADVERT",
- "categoryId": 4,
- "url": "http://www.directadvert.ru/",
- "companyId": "directadvert"
- },
- "directrev": {
- "name": "DirectREV",
- "categoryId": 4,
- "url": "http://www.directrev.com/",
- "companyId": "directrev"
- },
- "discord": {
- "name": "Discord",
- "categoryId": 2,
- "url": "https://discordapp.com/",
- "companyId": null
- },
- "disneyplus": {
- "name": "Disney+",
- "categoryId": 0,
- "url": "https://www.disneyplus.com/",
- "companyId": "disney",
- "source": "AdGuard"
- },
- "disneystreaming": {
- "name": "Disney Streaming",
- "categoryId": 0,
- "url": "https://press.disneyplus.com",
- "companyId": "disney",
- "source": "AdGuard"
- },
- "display_block": {
- "name": "display block",
- "categoryId": 4,
- "url": "https://www.displayblock.com/",
- "companyId": "display_block"
- },
- "disqus": {
- "name": "Disqus",
- "categoryId": 1,
- "url": "https://disqus.com/",
- "companyId": "zeta"
- },
- "disqus_ads": {
- "name": "Disqus Ads",
- "categoryId": 4,
- "url": "https://disqusads.com/",
- "companyId": "zeta"
- },
- "distil_tag": {
- "name": "Distil Networks",
- "categoryId": 5,
- "url": "https://www.distilnetworks.com/",
- "companyId": "distil_networks"
- },
- "districtm.io": {
- "name": "district m",
- "categoryId": 4,
- "url": "https://districtm.net/",
- "companyId": "district_m"
- },
- "distroscale": {
- "name": "Distroscale",
- "categoryId": 6,
- "url": "http://www.distroscale.com/",
- "companyId": "distroscale"
- },
- "div.show": {
- "name": "div.show",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "diva": {
- "name": "DiVa",
- "categoryId": 6,
- "url": "http://www.vertriebsassistent.de/",
- "companyId": "diva"
- },
- "divvit": {
- "name": "Divvit",
- "categoryId": 6,
- "url": "https://www.divvit.com/",
- "companyId": "divvit"
- },
- "dm2": {
- "name": "DM2",
- "categoryId": 4,
- "url": "http://digitalmediamanagement.com/",
- "companyId": "digital_media_management"
- },
- "dmg_media": {
- "name": "DMG Media",
- "categoryId": 8,
- "url": "https://www.dmgmedia.co.uk/",
- "companyId": "dmgt"
- },
- "dmm": {
- "name": "DMM",
- "categoryId": 3,
- "url": "http://www.dmm.co.jp",
- "companyId": "dmm.r18"
- },
- "dmwd": {
- "name": "DMWD",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dockvine": {
- "name": "dockvine",
- "categoryId": 2,
- "url": "https://www.dockvine.com",
- "companyId": "dockvine"
- },
- "docler": {
- "name": "Docler",
- "categoryId": 0,
- "url": "https://www.doclerholding.com/en/about/companies/33/",
- "companyId": "docler_ip"
- },
- "dogannet": {
- "name": "Dogannet",
- "categoryId": 4,
- "url": "http://s.dogannet.tv/",
- "companyId": "dogannet"
- },
- "domainglass": {
- "name": "Domain Glass",
- "categoryId": 8,
- "url": "https://domain.glass/",
- "companyId": "domainglass",
- "source": "AdGuard"
- },
- "domodomain": {
- "name": "DomoDomain",
- "categoryId": 6,
- "url": "http://www.domodomain.com/",
- "companyId": "intelligencefocus"
- },
- "donationtools": {
- "name": "iRobinHood",
- "categoryId": 12,
- "url": "http://www.irobinhood.org",
- "companyId": null
- },
- "doofinder.com": {
- "name": "doofinder",
- "categoryId": 2,
- "url": "https://www.doofinder.com/",
- "companyId": null
- },
- "doorbell.io": {
- "name": "Doorbell.io",
- "categoryId": 5,
- "url": "https://doorbell.io/",
- "companyId": "doorbell.io"
- },
- "dotandmedia": {
- "name": "DotAndMedia",
- "categoryId": 4,
- "url": "http://www.dotandmedia.com",
- "companyId": "dotandmedia"
- },
- "dotmailer": {
- "name": "dotMailer",
- "categoryId": 2,
- "url": "http://www.dotdigitalgroup.com/",
- "companyId": "dotdigital_group"
- },
- "dotmetrics.net": {
- "name": "Dotmetrics",
- "categoryId": 6,
- "url": "https://dotmetrics.net/",
- "companyId": null
- },
- "dotomi": {
- "name": "Dotomi",
- "categoryId": 4,
- "url": "http://www.dotomi.com/",
- "companyId": "conversant"
- },
- "double.net": {
- "name": "Double.net",
- "categoryId": 4,
- "url": "http://double.net/en/",
- "companyId": "double.net"
- },
- "doubleclick": {
- "name": "DoubleClick",
- "categoryId": 4,
- "url": "http://www.doubleclick.com",
- "companyId": "google"
- },
- "doubleclick_ad_buyer": {
- "name": "DoubleClick Ad Exchange-Buyer",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "doubleclick_bid_manager": {
- "name": "DoubleClick Bid Manager",
- "categoryId": 4,
- "url": "http://www.invitemedia.com",
- "companyId": "google"
- },
- "doubleclick_floodlight": {
- "name": "DoubleClick Floodlight",
- "categoryId": 4,
- "url": "http://www.google.com/support/dfa/partner/bin/topic.py?topic=23943",
- "companyId": "google"
- },
- "doubleclick_spotlight": {
- "name": "DoubleClick Spotlight",
- "categoryId": 4,
- "url": "http://www.doubleclick.com/products/richmedia",
- "companyId": "google"
- },
- "doubleclick_video_stats": {
- "name": "Doubleclick Video Stats",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "doublepimp": {
- "name": "DoublePimp",
- "categoryId": 3,
- "url": "http://www.doublepimp.com/",
- "companyId": "doublepimp"
- },
- "doubleverify": {
- "name": "DoubleVerify",
- "categoryId": 4,
- "url": "http://www.doubleverify.com/",
- "companyId": "doubleverify"
- },
- "dratio": {
- "name": "Dratio",
- "categoryId": 6,
- "url": "http://www.dratio.com/",
- "companyId": "dratio"
- },
- "drawbridge": {
- "name": "Drawbridge",
- "categoryId": 4,
- "url": "http://www.drawbrid.ge/",
- "companyId": "drawbridge"
- },
- "dreame_tech": {
- "name": "Dreame Technology",
- "categoryId": 8,
- "url": "https://www.dreame.tech/",
- "companyId": "xiaomi",
- "source": "AdGuard"
- },
- "dreamlab.pl": {
- "name": "DreamLab.pl",
- "categoryId": 4,
- "url": "https://www.dreamlab.pl/",
- "companyId": "onet.pl"
- },
- "drift": {
- "name": "Drift",
- "categoryId": 2,
- "url": "https://www.drift.com/",
- "companyId": "drift"
- },
- "drip": {
- "name": "Drip",
- "categoryId": 2,
- "url": "https://www.getdrip.com",
- "companyId": "drip"
- },
- "dropbox.com": {
- "name": "Dropbox",
- "categoryId": 2,
- "url": "https://www.dropbox.com/",
- "companyId": null
- },
- "dsnr_media_group": {
- "name": "DSNR Media Group",
- "categoryId": 4,
- "url": "http://www.dsnrmg.com/",
- "companyId": "dsnr_media_group"
- },
- "dsp_rambler": {
- "name": "Rambler DSP",
- "categoryId": 4,
- "url": "http://dsp.rambler.ru/",
- "companyId": "rambler"
- },
- "dstillery": {
- "name": "Dstillery",
- "categoryId": 4,
- "url": "https://dstillery.com/",
- "companyId": "dstillery"
- },
- "dtscout.com": {
- "name": "DTScout",
- "categoryId": 4,
- "url": "http://www.dtscout.com/",
- "companyId": "dtscout"
- },
- "dudamobile": {
- "name": "DudaMobile",
- "categoryId": 4,
- "url": "https://www.dudamobile.com/",
- "companyId": "dudamobile"
- },
- "dun_and_bradstreet": {
- "name": "Dun and Bradstreet",
- "categoryId": 6,
- "url": "http://www.dnb.com/#",
- "companyId": "dun_&_bradstreet"
- },
- "dwstat.cn": {
- "name": "dwstat.cn",
- "categoryId": 6,
- "url": "http://www.dwstat.cn/",
- "companyId": "dwstat"
- },
- "dynad": {
- "name": "DynAd",
- "categoryId": 4,
- "url": "http://dynad.net/",
- "companyId": "dynad"
- },
- "dynadmic": {
- "name": "DynAdmic",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "dynamic_1001_gmbh": {
- "name": "Dynamic 1001 GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "dynamic_logic": {
- "name": "Dynamic Logic",
- "categoryId": 4,
- "url": "http://www.dynamiclogic.com/",
- "companyId": "millward_brown"
- },
- "dynamic_yield": {
- "name": "Dynamic Yield",
- "categoryId": 5,
- "url": "https://www.dynamicyield.com/",
- "companyId": "dynamic_yield"
- },
- "dynamic_yield_analytics": {
- "name": "Dynamic Yield Analytics",
- "categoryId": 6,
- "url": "http://www.dynamicyield.com/",
- "companyId": "dynamic_yield"
- },
- "dynata": {
- "name": "Dynata",
- "categoryId": 4,
- "url": "http://hottraffic.nl/en",
- "companyId": "dynata"
- },
- "dynatrace.com": {
- "name": "Dynatrace",
- "categoryId": 6,
- "url": "https://www.dynatrace.com/",
- "companyId": "thoma_bravo"
- },
- "dyncdn.me": {
- "name": "dyncdn.me",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "e-planning": {
- "name": "e-planning",
- "categoryId": 4,
- "url": "http://www.e-planning.net/",
- "companyId": "e-planning"
- },
- "eadv": {
- "name": "eADV",
- "categoryId": 4,
- "url": "http://eadv.it/",
- "companyId": "eadv"
- },
- "eanalyzer.de": {
- "name": "eanalyzer.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "early_birds": {
- "name": "Early Birds",
- "categoryId": 4,
- "url": "http://www.early-birds.fr/",
- "companyId": "early_birds"
- },
- "earnify": {
- "name": "Earnify",
- "categoryId": 4,
- "url": "https://www.earnify.com/",
- "companyId": "earnify"
- },
- "earnify_tracker": {
- "name": "Earnify Tracker",
- "categoryId": 6,
- "url": "https://www.earnify.com/",
- "companyId": "earnify"
- },
- "easyads": {
- "name": "EasyAds",
- "categoryId": 4,
- "url": "https://easyads.bg/",
- "companyId": "easyads"
- },
- "easylist_club": {
- "name": "easylist.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ebay": {
- "name": "eBay Stats",
- "categoryId": 4,
- "url": "https://partnernetwork.ebay.com/",
- "companyId": "ebay_partner_network"
- },
- "ebay_korea": {
- "name": "eBay Korea",
- "categoryId": 4,
- "url": "http://www.ebay.com/",
- "companyId": "ebay"
- },
- "ebay_partner_network": {
- "name": "eBay Partner Network",
- "categoryId": 4,
- "url": "https://www.ebaypartnernetwork.com/files/hub/en-US/index.html",
- "companyId": "ebay_partner_network"
- },
- "ebuzzing": {
- "name": "eBuzzing",
- "categoryId": 4,
- "url": "http://www.ebuzzing.com/",
- "companyId": "ebuzzing"
- },
- "echo": {
- "name": "Echo",
- "categoryId": 4,
- "url": "http://js-kit.com/",
- "companyId": "echo"
- },
- "eclick": {
- "name": "eClick",
- "categoryId": 4,
- "url": "http://eclick.vn",
- "companyId": "eclick"
- },
- "econda": {
- "name": "Econda",
- "categoryId": 6,
- "url": "http://www.econda.de/",
- "companyId": "econda"
- },
- "ecotag": {
- "name": "ecotag",
- "categoryId": 4,
- "url": "http://www.eco-tag.jp/",
- "companyId": "ecotag"
- },
- "edgio": {
- "name": "Edgio",
- "categoryId": 9,
- "url": "https://edg.io/",
- "companyId": "edgio",
- "source": "AdGuard"
- },
- "edigitalresearch": {
- "name": "eDigitalResearch",
- "categoryId": 4,
- "url": "http://www.edigitalresearch.com/",
- "companyId": "edigitalresearch"
- },
- "effective_measure": {
- "name": "Effective Measure",
- "categoryId": 4,
- "url": "http://www.effectivemeasure.com/",
- "companyId": "effective_measure"
- },
- "effiliation": {
- "name": "Effiliation",
- "categoryId": 4,
- "url": "http://www.effiliation.com/",
- "companyId": "effiliation"
- },
- "egain": {
- "name": "eGain",
- "categoryId": 2,
- "url": "http://www.egain.com/",
- "companyId": "egain"
- },
- "egain_analytics": {
- "name": "eGain Analytics",
- "categoryId": 6,
- "url": "http://www.egain.com/",
- "companyId": "egain"
- },
- "ehi-siegel_de": {
- "name": "ehi-siegel.de",
- "categoryId": 2,
- "url": "http://ehi-siegel.de/",
- "companyId": null
- },
- "ekmpinpoint": {
- "name": "ekmPinPoint",
- "categoryId": 6,
- "url": "http://ekmpinpoint.com/",
- "companyId": "ekmpinpoint"
- },
- "ekomi": {
- "name": "eKomi",
- "categoryId": 1,
- "url": "http://www.ekomi.co.uk",
- "companyId": "ekomi"
- },
- "elastic_ad": {
- "name": "Elastic Ad",
- "categoryId": 4,
- "url": "http://www.elasticad.com",
- "companyId": "elastic_ad"
- },
- "elastic_beanstalk": {
- "name": "Elastic Beanstalk",
- "categoryId": 6,
- "url": "http://www.amazon.com/",
- "companyId": "amazon_associates"
- },
- "electronic_arts": {
- "name": "Electronic Arts",
- "categoryId": 2,
- "url": "https://www.ea.com/",
- "companyId": "electronic_arts",
- "source": "AdGuard"
- },
- "element": {
- "name": "Element",
- "categoryId": 7,
- "url": "https://element.io/",
- "companyId": "element",
- "source": "AdGuard"
- },
- "elicit": {
- "name": "elicit",
- "categoryId": 4,
- "url": "http://www.elicitsearch.com/",
- "companyId": "elicit"
- },
- "eloqua": {
- "name": "Eloqua",
- "categoryId": 4,
- "url": "http://www.eloqua.com/",
- "companyId": "oracle"
- },
- "eluxer_net": {
- "name": "eluxer.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "email_aptitude": {
- "name": "Email Aptitude",
- "categoryId": 4,
- "url": "http://www.emailaptitude.com/",
- "companyId": "email_aptitude"
- },
- "email_attitude": {
- "name": "Email Attitude",
- "categoryId": 4,
- "url": "http://us.email-attitude.com/Default.aspx",
- "companyId": "1000mercis"
- },
- "emarketeer": {
- "name": "emarketeer",
- "categoryId": 4,
- "url": "http://www.emarketeer.com/",
- "companyId": "emarketeer"
- },
- "embed.ly": {
- "name": "Embedly",
- "categoryId": 6,
- "url": "http://embed.ly/",
- "companyId": "medium"
- },
- "emediate": {
- "name": "Emediate",
- "categoryId": 4,
- "url": "http://www.emediate.biz/",
- "companyId": "cxense"
- },
- "emetriq": {
- "name": "emetriq",
- "categoryId": 4,
- "url": "http://www.emetriq.com",
- "companyId": "emetriq"
- },
- "emma": {
- "name": "Emma",
- "categoryId": 4,
- "url": "http://myemma.com/",
- "companyId": "emma"
- },
- "emnet": {
- "name": "eMnet",
- "categoryId": 4,
- "url": "http://www.emnet.co.kr",
- "companyId": "emnet"
- },
- "empathy": {
- "name": "Empathy",
- "categoryId": 4,
- "url": "http://www.colbenson.com",
- "companyId": "empathy"
- },
- "emsmobile.de": {
- "name": "EMS Mobile",
- "categoryId": 8,
- "url": "http://www.emsmobile.com/",
- "companyId": null
- },
- "encore_metrics": {
- "name": "Encore Metrics",
- "categoryId": 4,
- "url": "http://sitecompass.com",
- "companyId": "flashtalking"
- },
- "enecto_analytics": {
- "name": "Enecto Analytics",
- "categoryId": 6,
- "url": "http://www.enecto.com/en/",
- "companyId": "enecto"
- },
- "engage_sciences": {
- "name": "Engage Sciences",
- "categoryId": 6,
- "url": "http://www.engagesciences.com/",
- "companyId": "engagesciences"
- },
- "engageya_widget": {
- "name": "Engageya Widget",
- "categoryId": 4,
- "url": "http://www.engageya.com/home/",
- "companyId": "engageya"
- },
- "engagio": {
- "name": "Engagio",
- "categoryId": 6,
- "url": "https://www.engagio.com/",
- "companyId": "engagio"
- },
- "engineseeker": {
- "name": "EngineSeeker",
- "categoryId": 4,
- "url": "http://www.engineseeker.com/",
- "companyId": "engineseeker"
- },
- "enquisite": {
- "name": "Enquisite",
- "categoryId": 4,
- "url": "http://www.enquisite.com/",
- "companyId": "inboundwriter"
- },
- "enreach": {
- "name": "Enreach",
- "categoryId": 4,
- "url": "https://enreach.me/",
- "companyId": "enreach"
- },
- "ensemble": {
- "name": "Ensemble",
- "categoryId": 4,
- "url": "http://www.tumri.com",
- "companyId": "ensemble"
- },
- "ensighten": {
- "name": "Ensighten",
- "categoryId": 5,
- "url": "http://www.ensighten.com",
- "companyId": "ensighten"
- },
- "envolve": {
- "name": "Envolve",
- "categoryId": 2,
- "url": "https://www.envolve.com/",
- "companyId": "envolve"
- },
- "envybox": {
- "name": "Envybox",
- "categoryId": 2,
- "url": "https://envybox.io/",
- "companyId": "envybox"
- },
- "eperflex": {
- "name": "Eperflex",
- "categoryId": 4,
- "url": "https://eperflex.com/",
- "companyId": "ividence"
- },
- "epic_game_ads": {
- "name": "Epic Game Ads",
- "categoryId": 4,
- "url": "http://www.epicgameads.com/",
- "companyId": "epic_game_ads"
- },
- "epic_marketplace": {
- "name": "Epic Marketplace",
- "categoryId": 4,
- "url": "http://www.trafficmarketplace.com/",
- "companyId": "epic_advertising"
- },
- "epom": {
- "name": "Epom",
- "categoryId": 4,
- "url": "http://epom.com/",
- "companyId": "epom"
- },
- "epoq": {
- "name": "epoq",
- "categoryId": 2,
- "url": "http://www.epoq.de/",
- "companyId": "epoq"
- },
- "eprice": {
- "name": "ePrice",
- "categoryId": 4,
- "url": "http://banzaiadv.it/",
- "companyId": "eprice"
- },
- "eproof": {
- "name": "eProof",
- "categoryId": 6,
- "url": "http://www.eproof.com/",
- "companyId": "eproof"
- },
- "eqs_group": {
- "name": "EQS Group",
- "categoryId": 6,
- "url": "https://www.eqs.com/",
- "companyId": "eqs_group"
- },
- "eqworks": {
- "name": "EQWorks",
- "categoryId": 4,
- "url": "http://eqads.com",
- "companyId": "eq_works"
- },
- "eroadvertising": {
- "name": "EroAdvertising",
- "categoryId": 3,
- "url": "http://www.ero-advertising.com/",
- "companyId": "ero_advertising"
- },
- "errorception": {
- "name": "Errorception",
- "categoryId": 6,
- "url": "http://errorception.com/",
- "companyId": "errorception"
- },
- "eshopcomp.com": {
- "name": "eshopcomp.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "espn_cdn": {
- "name": "ESPN CDN",
- "categoryId": 9,
- "url": "http://www.espn.com/",
- "companyId": "disney"
- },
- "esprit.de": {
- "name": "esprit.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "estat": {
- "name": "eStat",
- "categoryId": 6,
- "url": "http://www.mediametrie-estat.com/",
- "companyId": "mediametrie"
- },
- "etag": {
- "name": "etag",
- "categoryId": 4,
- "url": "http://etagdigital.com.br/",
- "companyId": "etag"
- },
- "etahub.com": {
- "name": "etahub.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "etarget": {
- "name": "Etarget",
- "categoryId": 4,
- "url": "http://etargetnet.com/",
- "companyId": "etarget"
- },
- "ethnio": {
- "name": "Ethnio",
- "categoryId": 4,
- "url": "http://ethn.io/",
- "companyId": "ethnio"
- },
- "etology": {
- "name": "Etology",
- "categoryId": 4,
- "url": "http://www.etology.com",
- "companyId": "etology"
- },
- "etp": {
- "name": "ETP",
- "categoryId": 6,
- "url": "https://www.etpgroup.com",
- "companyId": "etp"
- },
- "etracker": {
- "name": "etracker",
- "categoryId": 6,
- "url": "http://www.etracker.com/en/",
- "companyId": "etracker_gmbh"
- },
- "etrigue": {
- "name": "eTrigue",
- "categoryId": 4,
- "url": "http://www.etrigue.com/",
- "companyId": "etrigue"
- },
- "etsystatic": {
- "name": "Etsy CDN",
- "categoryId": 9,
- "url": "https://www.etsy.com/",
- "companyId": "etsy"
- },
- "eulerian": {
- "name": "Eulerian",
- "categoryId": 6,
- "url": "https://www.eulerian.com/",
- "companyId": "eulerian"
- },
- "euroads": {
- "name": "Euroads",
- "categoryId": 4,
- "url": "http://euroads.com/en/",
- "companyId": "euroads"
- },
- "europecash": {
- "name": "Europecash",
- "categoryId": 4,
- "url": "https://www.europacash.com/",
- "companyId": "europacash"
- },
- "euroweb_counter": {
- "name": "Euroweb Counter",
- "categoryId": 4,
- "url": "http://www.euroweb.de/",
- "companyId": "euroweb"
- },
- "evergage.com": {
- "name": "Evergage",
- "categoryId": 2,
- "url": "https://www.evergage.com",
- "companyId": "evergage"
- },
- "everstring": {
- "name": "Everstring",
- "categoryId": 6,
- "url": "http://www.everstring.com/",
- "companyId": "everstring"
- },
- "everyday_health": {
- "name": "Everyday Health",
- "categoryId": 7,
- "url": "http://www.everydayhealth.com/",
- "companyId": "everyday_health"
- },
- "evidon": {
- "name": "Evidon",
- "categoryId": 5,
- "url": "https://www.evidon.com/",
- "companyId": "crownpeak"
- },
- "evisit_analyst": {
- "name": "eVisit Analyst",
- "categoryId": 4,
- "url": "http://www.evisitanalyst.com",
- "companyId": "evisit_analyst"
- },
- "exact_drive": {
- "name": "Exact Drive",
- "categoryId": 4,
- "url": "http://www.exactdrive.com/",
- "companyId": "exact_drive"
- },
- "exactag": {
- "name": "Exactag",
- "categoryId": 6,
- "url": "http://www.exactag.com",
- "companyId": "exactag"
- },
- "exelate": {
- "name": "eXelate",
- "categoryId": 4,
- "url": "http://www.exelate.com/",
- "companyId": "nielsen"
- },
- "exitjunction": {
- "name": "ExitJunction",
- "categoryId": 4,
- "url": "https://secure.exitjunction.com",
- "companyId": "exitjunction"
- },
- "exoclick": {
- "name": "ExoClick",
- "categoryId": 3,
- "url": "http://exoclick.com/",
- "companyId": "exoclick"
- },
- "exoticads.com": {
- "name": "exoticads",
- "categoryId": 3,
- "url": "https://exoticads.com/welcome/",
- "companyId": null
- },
- "expedia": {
- "name": "Expedia",
- "categoryId": 8,
- "url": "https://www.trvl-px.com/",
- "companyId": "iac_apps"
- },
- "experian": {
- "name": "Experian",
- "categoryId": 8,
- "url": "https://www.experian.com/",
- "companyId": "experian_inc"
- },
- "experian_marketing_services": {
- "name": "Experian Marketing Services",
- "categoryId": 4,
- "url": "http://www.experian.com/",
- "companyId": "experian_inc"
- },
- "expo-max": {
- "name": "expo-MAX",
- "categoryId": 4,
- "url": "http://expo-max.com/",
- "companyId": "expo-max"
- },
- "expose_box": {
- "name": "Expose Box",
- "categoryId": 4,
- "url": "http://www.exposebox.com/",
- "companyId": "expose_box"
- },
- "expose_box_widgets": {
- "name": "Expose Box Widgets",
- "categoryId": 2,
- "url": "http://www.exposebox.com/",
- "companyId": "expose_box"
- },
- "express.co.uk": {
- "name": "express.co.uk",
- "categoryId": 8,
- "url": "https://www.express.co.uk/",
- "companyId": null
- },
- "expressvpn": {
- "name": "ExpressVPN",
- "categoryId": 2,
- "url": "https://www.expressvpn.com/",
- "companyId": "expressvpn"
- },
- "extreme_tracker": {
- "name": "eXTReMe Tracker",
- "categoryId": 6,
- "url": "http://www.extremetracking.com/",
- "companyId": "extreme_digital"
- },
- "eye_newton": {
- "name": "Eye Newton",
- "categoryId": 2,
- "url": "http://eyenewton.ru/",
- "companyId": "eyenewton"
- },
- "eyeota": {
- "name": "Eyeota",
- "categoryId": 4,
- "url": "http://www.eyeota.com/",
- "companyId": "eyeota"
- },
- "eyereturnmarketing": {
- "name": "Eyereturn Marketing",
- "categoryId": 4,
- "url": "https://eyereturnmarketing.com/",
- "companyId": "torstar_corp"
- },
- "eyeview": {
- "name": "Eyeview",
- "categoryId": 4,
- "url": "http://www.eyeviewdigital.com/",
- "companyId": "eyeview"
- },
- "ezakus": {
- "name": "Ezakus",
- "categoryId": 4,
- "url": "http://www.ezakus.com/",
- "companyId": "np6"
- },
- "f11-ads.com": {
- "name": "Factor Eleven",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "facebook": {
- "name": "Facebook",
- "categoryId": 4,
- "url": "https://www.facebook.com",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_audience": {
- "name": "Facebook Audience Network",
- "categoryId": 4,
- "url": "https://www.facebook.com/business/products/audience-network",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_beacon": {
- "name": "Facebook Beacon",
- "categoryId": 7,
- "url": "http://www.facebook.com/beacon/faq.php",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_cdn": {
- "name": "Facebook CDN",
- "categoryId": 9,
- "url": "https://www.facebook.com",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_connect": {
- "name": "Facebook Connect",
- "categoryId": 6,
- "url": "https://developers.facebook.com/connect.php",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_conversion_tracking": {
- "name": "Facebook Conversion Tracking",
- "categoryId": 4,
- "url": "http://www.facebook.com/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_custom_audience": {
- "name": "Facebook Custom Audience",
- "categoryId": 4,
- "url": "https://www.facebook.com",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_graph": {
- "name": "Facebook Social Graph",
- "categoryId": 7,
- "url": "https://developers.facebook.com/docs/reference/api/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_impressions": {
- "name": "Facebook Impressions",
- "categoryId": 4,
- "url": "https://www.facebook.com/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facebook_social_plugins": {
- "name": "Facebook Social Plugins",
- "categoryId": 7,
- "url": "https://developers.facebook.com/plugins",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "facetz.dca": {
- "name": "Facetz.DCA",
- "categoryId": 4,
- "url": "http://facetz.net",
- "companyId": "dca"
- },
- "facilitate_digital": {
- "name": "Facilitate Digital",
- "categoryId": 4,
- "url": "http://www.facilitatedigital.com/",
- "companyId": "adslot"
- },
- "faktor.io": {
- "name": "faktor.io",
- "categoryId": 6,
- "url": "https://faktor.io/",
- "companyId": "faktor.io"
- },
- "fancy_widget": {
- "name": "Fancy Widget",
- "categoryId": 7,
- "url": "http://www.thefancy.com/",
- "companyId": "fancy"
- },
- "fanplayr": {
- "name": "Fanplayr",
- "categoryId": 4,
- "url": "http://www.fanplayr.com/",
- "companyId": "fanplayr"
- },
- "fap.to": {
- "name": "Imagefap",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "farlight_pte_ltd": {
- "name": "Farlight Pte Ltd.",
- "categoryId": 8,
- "url": "https://farlightgames.com/",
- "companyId": "farlight",
- "source": "AdGuard"
- },
- "fastly_insights": {
- "name": "Fastly Insights",
- "categoryId": 6,
- "url": "https://insights.fastlylabs.com/",
- "companyId": "fastly"
- },
- "fastlylb.net": {
- "name": "Fastly",
- "categoryId": 9,
- "url": "https://www.fastly.com/",
- "companyId": "fastly"
- },
- "fastpic.ru": {
- "name": "FastPic",
- "categoryId": 10,
- "url": "http://fastpic.ru/",
- "companyId": "fastpic"
- },
- "federated_media": {
- "name": "Federated Media",
- "categoryId": 4,
- "url": "http://www.federatedmedia.net/",
- "companyId": "hyfn"
- },
- "feedbackify": {
- "name": "Feedbackify",
- "categoryId": 2,
- "url": "http://www.feedbackify.com/",
- "companyId": "feedbackify"
- },
- "feedburner.com": {
- "name": "FeedBurner",
- "categoryId": 4,
- "url": "https://feedburner.com",
- "companyId": "google"
- },
- "feedify": {
- "name": "Feedify",
- "categoryId": 7,
- "url": "http://feedify.de/",
- "companyId": "feedify"
- },
- "feedjit": {
- "name": "Feedjit",
- "categoryId": 4,
- "url": "http://feedjit.com/",
- "companyId": "feedjit"
- },
- "feedperfect": {
- "name": "FeedPerfect",
- "categoryId": 4,
- "url": "http://www.feedperfect.com/",
- "companyId": "feedperfect"
- },
- "feedsportal": {
- "name": "Feedsportal",
- "categoryId": 4,
- "url": "http://www.mediafed.com/",
- "companyId": "mediafed"
- },
- "feefo": {
- "name": "Feefo",
- "categoryId": 2,
- "url": "http://www.feefo.com/web/en/us/",
- "companyId": "feefo"
- },
- "fidelity_media": {
- "name": "Fidelity Media",
- "categoryId": 4,
- "url": "http://fidelity-media.com/",
- "companyId": "fidelity_media"
- },
- "fiksu": {
- "name": "Fiksu",
- "categoryId": 4,
- "url": "https://fiksu.com/",
- "companyId": "noosphere"
- },
- "filament.io": {
- "name": "Filament.io",
- "categoryId": 4,
- "url": "http://sharethis.com/",
- "companyId": "sharethis"
- },
- "fileserve": {
- "name": "FileServe",
- "categoryId": 10,
- "url": "http://fileserve.com/",
- "companyId": "fileserve"
- },
- "financeads": {
- "name": "FinanceADs",
- "categoryId": 4,
- "url": "https://www.financeads.net/",
- "companyId": "financeads_gmbh_&_co._kg"
- },
- "financial_content": {
- "name": "Financial Content",
- "categoryId": 4,
- "url": "http://www.financialcontent.com",
- "companyId": "financial_content"
- },
- "findizer.fr": {
- "name": "Findizer",
- "categoryId": 8,
- "url": "http://www.findizer.fr/",
- "companyId": null
- },
- "findologic.com": {
- "name": "Findologic",
- "categoryId": 2,
- "url": "https://www.findologic.com/",
- "companyId": "findologic"
- },
- "firebase": {
- "name": "Firebase",
- "categoryId": 101,
- "url": "https://firebase.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "firebaseio.com": {
- "name": "Firebase",
- "categoryId": 8,
- "url": "https://firebase.google.com/",
- "companyId": "google"
- },
- "first_impression": {
- "name": "First Impression",
- "categoryId": 4,
- "url": "http://www.firstimpression.io",
- "companyId": "first_impression"
- },
- "fit_analytics": {
- "name": "Fit Analytics",
- "categoryId": 6,
- "url": "http://www.fitanalytics.com/",
- "companyId": "fit_analytics"
- },
- "fivetran": {
- "name": "Fivetran",
- "categoryId": 6,
- "url": "https://fivetran.com/",
- "companyId": "fivetran"
- },
- "flag_ads": {
- "name": "Flag Ads",
- "categoryId": 4,
- "url": "http://www.flagads.net/",
- "companyId": "flag_ads"
- },
- "flag_counter": {
- "name": "Flag Counter",
- "categoryId": 4,
- "url": "http://flagcounter.com/",
- "companyId": "flag_counter"
- },
- "flash": {
- "name": "Flash",
- "categoryId": 0,
- "url": "https://flashnews.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "flashtalking": {
- "name": "Flashtalking",
- "categoryId": 4,
- "url": "http://www.flashtalking.com/",
- "companyId": "flashtalking"
- },
- "flattr_button": {
- "name": "Flattr Button",
- "categoryId": 7,
- "url": "http://flattr.com/",
- "companyId": "flattr"
- },
- "flexoffers": {
- "name": "FlexOffers",
- "categoryId": 4,
- "url": "http://www.flexoffers.com/",
- "companyId": "flexoffers.com"
- },
- "flickr_badge": {
- "name": "Flickr Badge",
- "categoryId": 7,
- "url": "http://www.flickr.com/",
- "companyId": "smugmug"
- },
- "flipboard": {
- "name": "Flipboard",
- "categoryId": 6,
- "url": "http://www.flipboard.com/",
- "companyId": "flipboard"
- },
- "flite": {
- "name": "Flite",
- "categoryId": 4,
- "url": "http://www.flite.com/",
- "companyId": "flite"
- },
- "flixcdn.com": {
- "name": "flixcdn.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "flixmedia": {
- "name": "Flixmedia",
- "categoryId": 8,
- "url": "https://flixmedia.eu",
- "companyId": "flixmedia"
- },
- "flocktory.com": {
- "name": "Flocktory",
- "categoryId": 6,
- "url": "https://www.flocktory.com/",
- "companyId": "flocktory"
- },
- "flowplayer": {
- "name": "Flowplayer",
- "categoryId": 4,
- "url": "https://flowplayer.org/",
- "companyId": "flowplayer"
- },
- "fluct": {
- "name": "Fluct",
- "categoryId": 4,
- "url": "https://corp.fluct.jp/",
- "companyId": "fluct"
- },
- "fluent": {
- "name": "Fluent",
- "categoryId": 4,
- "url": "http://www.fluentco.com/",
- "companyId": "fluent"
- },
- "fluid": {
- "name": "Fluid",
- "categoryId": 4,
- "url": "http://www.8thbridge.com/",
- "companyId": "fluid"
- },
- "fluidads": {
- "name": "FluidAds",
- "categoryId": 4,
- "url": "http://www.fluidads.co/",
- "companyId": "fluidads"
- },
- "fluidsurveys": {
- "name": "FluidSurveys",
- "categoryId": 2,
- "url": "http://fluidsurveys.com/",
- "companyId": "fluidware"
- },
- "flurry": {
- "name": "Flurry",
- "categoryId": 101,
- "url": "http://www.flurry.com/",
- "companyId": "apollo_global_management",
- "source": "AdGuard"
- },
- "flxone": {
- "name": "FLXONE",
- "categoryId": 4,
- "url": "http://www.flxone.com/",
- "companyId": "flxone"
- },
- "flyertown": {
- "name": "Flyertown",
- "categoryId": 6,
- "url": "http://www.flyertown.ca/",
- "companyId": "flyertown"
- },
- "fmadserving": {
- "name": "FMAdserving",
- "categoryId": 4,
- "url": "http://www.fmadserving.dk/",
- "companyId": "fm_adserving"
- },
- "fonbet": {
- "name": "Fonbet",
- "categoryId": 6,
- "url": "https://www.fonbet.ru",
- "companyId": "fonbet"
- },
- "fonecta": {
- "name": "Fonecta",
- "categoryId": 2,
- "url": "http://www.fonecta.com/",
- "companyId": "fonecta"
- },
- "fontawesome_com": {
- "name": "fontawesome.com",
- "categoryId": 9,
- "url": "http://fontawesome.com/",
- "companyId": null
- },
- "foodie_blogroll": {
- "name": "Foodie Blogroll",
- "categoryId": 7,
- "url": "http://www.foodieblogroll.com",
- "companyId": "foodie_blogroll"
- },
- "footprint": {
- "name": "Footprint",
- "categoryId": 4,
- "url": "http://www.footprintlive.com/",
- "companyId": "opentracker"
- },
- "footprintdns.com": {
- "name": "Footprint DNS",
- "categoryId": 11,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "forcetrac": {
- "name": "ForceTrac",
- "categoryId": 2,
- "url": "http://www.forcetrac.com/",
- "companyId": "force_marketing"
- },
- "forensiq": {
- "name": "Forensiq",
- "categoryId": 4,
- "url": "http://www.cpadetective.com/",
- "companyId": "impact"
- },
- "foresee": {
- "name": "ForeSee",
- "categoryId": 5,
- "url": "https://www.foresee.com/",
- "companyId": "foresee_results"
- },
- "formisimo": {
- "name": "Formisimo",
- "categoryId": 4,
- "url": "https://www.formisimo.com/",
- "companyId": "formisimo"
- },
- "forter": {
- "name": "Forter",
- "categoryId": 4,
- "url": "https://www.forter.com/",
- "companyId": "forter"
- },
- "fortlachanhecksof.info": {
- "name": "fortlachanhecksof.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "foursquare_widget": {
- "name": "Foursquare Widget",
- "categoryId": 4,
- "url": "https://foursquare.com/",
- "companyId": "foursquare"
- },
- "fout.jp": {
- "name": "FreakOut",
- "categoryId": 4,
- "url": "https://www.fout.co.jp/",
- "companyId": "freakout"
- },
- "fox_audience_network": {
- "name": "Fox Audience Network",
- "categoryId": 4,
- "url": "https://publishers.foxaudiencenetwork.com/",
- "companyId": "fox_audience_network"
- },
- "fox_sports": {
- "name": "Fox Sports",
- "categoryId": 0,
- "url": "https://foxsports.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "foxnews_static": {
- "name": "Fox News CDN",
- "categoryId": 9,
- "url": "http://www.foxnews.com/",
- "companyId": "fox_news"
- },
- "foxpush": {
- "name": "FoxPush",
- "categoryId": 4,
- "url": "https://www.foxpush.com/",
- "companyId": "foxpush"
- },
- "foxtel": {
- "name": "Foxtel",
- "categoryId": 0,
- "url": "https://foxtel.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "foxydeal_com": {
- "name": "foxydeal.com",
- "categoryId": 12,
- "url": "https://www.foxydeal.de",
- "companyId": null
- },
- "fraudlogix": {
- "name": "FraudLogix",
- "categoryId": 4,
- "url": "https://www.fraudlogix.com/",
- "companyId": null
- },
- "free_counter": {
- "name": "Free Counter",
- "categoryId": 6,
- "url": "http://www.statcounterfree.com/",
- "companyId": "free_counter"
- },
- "free_online_users": {
- "name": "Free Online Users",
- "categoryId": 6,
- "url": "http://www.freeonlineusers.com",
- "companyId": "free_online_users"
- },
- "free_pagerank": {
- "name": "Free PageRank",
- "categoryId": 6,
- "url": "http://www.free-pagerank.com/",
- "companyId": "free_pagerank"
- },
- "freedom_mortgage": {
- "name": "Freedom Mortgage",
- "categoryId": 6,
- "url": "https://www.freedommortgage.com/",
- "companyId": "freedom_mortgage"
- },
- "freegeoip_net": {
- "name": "freegeoip.net",
- "categoryId": 6,
- "url": "http://freegeoip.net/",
- "companyId": null
- },
- "freenet_de": {
- "name": "freenet.de",
- "categoryId": 4,
- "url": "http://freenet.de/",
- "companyId": "debitel"
- },
- "freeview": {
- "name": "Freeview",
- "categoryId": 0,
- "url": "https://freeview.com.au/",
- "companyId": "freeview",
- "source": "AdGuard"
- },
- "freewheel": {
- "name": "FreeWheel",
- "categoryId": 4,
- "url": "http://www.freewheel.tv/",
- "companyId": "comcast"
- },
- "fresh8": {
- "name": "Fresh8",
- "categoryId": 6,
- "url": "http://fresh8gaming.com/",
- "companyId": "fresh_8_gaming"
- },
- "freshdesk": {
- "name": "Freshdesk",
- "categoryId": 2,
- "url": "http://www.freshdesk.com",
- "companyId": "freshdesk"
- },
- "freshplum": {
- "name": "Freshplum",
- "categoryId": 4,
- "url": "https://freshplum.com/",
- "companyId": "freshplum"
- },
- "friendbuy": {
- "name": "FriendBuy",
- "categoryId": 6,
- "url": "https://www.friendbuy.com",
- "companyId": "friendbuy"
- },
- "friendfeed": {
- "name": "FriendFeed",
- "categoryId": 7,
- "url": "http://friendfeed.com/",
- "companyId": "facebook"
- },
- "friendfinder_network": {
- "name": "FriendFinder Network",
- "categoryId": 3,
- "url": "http://www.ffn.com/",
- "companyId": "friendfinder_networks"
- },
- "frosmo_optimizer": {
- "name": "Frosmo Optimizer",
- "categoryId": 4,
- "url": "http://frosmo.com/",
- "companyId": "frosmo"
- },
- "fruitflan": {
- "name": "FruitFlan",
- "categoryId": 4,
- "url": "http://flan-tech.com/",
- "companyId": "keytiles"
- },
- "fstrk.net": {
- "name": "24metrics Fraudshield",
- "categoryId": 6,
- "url": "https://24metrics.com/",
- "companyId": "24metrics"
- },
- "fuelx": {
- "name": "FuelX",
- "categoryId": 4,
- "url": "http://fuelx.com/",
- "companyId": "fuelx"
- },
- "fullstory": {
- "name": "FullStory",
- "categoryId": 6,
- "url": "http://fullstory.com",
- "companyId": "fullstory"
- },
- "funnelytics": {
- "name": "Funnelytics",
- "categoryId": 6,
- "url": "https://funnelytics.io/",
- "companyId": "funnelytics"
- },
- "fyber": {
- "name": "Fyber",
- "categoryId": 4,
- "url": "https://www.fyber.com/",
- "companyId": "fyber"
- },
- "ga_audiences": {
- "name": "GA Audiences",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "game_advertising_online": {
- "name": "Game Advertising Online",
- "categoryId": 4,
- "url": "http://www.game-advertising-online.com/",
- "companyId": "game_advertising_online"
- },
- "gameanalytics": {
- "name": "GameAnalytics",
- "categoryId": 101,
- "url": "https://gameanalytics.com/",
- "companyId": "mobvista",
- "source": "AdGuard"
- },
- "gamedistribution.com": {
- "name": "Gamedistribution.com",
- "categoryId": 8,
- "url": "http://gamedistribution.com/",
- "companyId": null
- },
- "gamerdna": {
- "name": "gamerDNA",
- "categoryId": 7,
- "url": "http://www.gamerdnamedia.com/",
- "companyId": "gamerdna_media"
- },
- "gannett": {
- "name": "Gannett Media",
- "categoryId": 0,
- "url": "https://www.gannett.com/",
- "companyId": "gannett_digital_media_network"
- },
- "gaug.es": {
- "name": "Gaug.es",
- "categoryId": 6,
- "url": "http://get.gaug.es/",
- "companyId": "euroweb"
- },
- "gazprom-media_digital": {
- "name": "Gazprom-Media Digital",
- "categoryId": 0,
- "url": "http://www.gpm-digital.com/",
- "companyId": "gazprom-media_digital"
- },
- "gb-world": {
- "name": "GB-World",
- "categoryId": 7,
- "url": "http://www.gb-world.net/",
- "companyId": "gb-world"
- },
- "gdeslon": {
- "name": "GdeSlon",
- "categoryId": 4,
- "url": "http://www.gdeslon.ru/",
- "companyId": "gdeslon"
- },
- "gdm_digital": {
- "name": "GDM Digital",
- "categoryId": 4,
- "url": "http://www.gdmdigital.com/",
- "companyId": "ve_interactive"
- },
- "geeen": {
- "name": "Geeen",
- "categoryId": 6,
- "url": "https://www.geeen.co.jp/",
- "companyId": "geeen"
- },
- "gemius": {
- "name": "Gemius",
- "categoryId": 4,
- "url": "http://www.gemius.com",
- "companyId": "gemius_sa"
- },
- "generaltracking_de": {
- "name": "generaltracking.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "genesis": {
- "name": "Genesis",
- "categoryId": 4,
- "url": "http://genesismedia.com/",
- "companyId": "genesis_media"
- },
- "geniee": {
- "name": "GENIEE",
- "categoryId": 4,
- "url": "http://geniee.co.jp/",
- "companyId": null
- },
- "genius": {
- "name": "Genius",
- "categoryId": 6,
- "url": "http://www.genius.com/",
- "companyId": "genius"
- },
- "genoo": {
- "name": "Genoo",
- "categoryId": 4,
- "url": "http://www.genoo.com/",
- "companyId": "genoo"
- },
- "geoads": {
- "name": "GeoAds",
- "categoryId": 4,
- "url": "http://www.geoads.com",
- "companyId": "geoads"
- },
- "geolify": {
- "name": "Geolify",
- "categoryId": 4,
- "url": "http://geolify.com/",
- "companyId": "geolify"
- },
- "geoplugin": {
- "name": "geoPlugin",
- "categoryId": 6,
- "url": "http://www.geoplugin.com/",
- "companyId": "geoplugin"
- },
- "geotrust": {
- "name": "GeoTrust",
- "categoryId": 5,
- "url": "http://www.geotrust.com/",
- "companyId": "symantec"
- },
- "geovisite": {
- "name": "Geovisite",
- "categoryId": 6,
- "url": "http://www.geovisite.com/",
- "companyId": "geovisite"
- },
- "gestionpub": {
- "name": "GestionPub",
- "categoryId": 4,
- "url": "http://www.gestionpub.com/",
- "companyId": "gestionpub"
- },
- "get_response": {
- "name": "Get Response",
- "categoryId": 2,
- "url": "https://www.getresponse.com/?marketing_gv=v2",
- "companyId": "getresponse"
- },
- "get_site_control": {
- "name": "Get Site Control",
- "categoryId": 4,
- "url": "https://getsitecontrol.com/",
- "companyId": "getsitecontrol"
- },
- "getconversion": {
- "name": "GetConversion",
- "categoryId": 2,
- "url": "http://www.getconversion.net/",
- "companyId": "getconversion"
- },
- "getglue": {
- "name": "GetGlue",
- "categoryId": 0,
- "url": "http://getglue.com",
- "companyId": "telfie"
- },
- "getintent": {
- "name": "GetIntent",
- "categoryId": 4,
- "url": "http://www.getintent.com/",
- "companyId": "getintent"
- },
- "getkudos": {
- "name": "GetKudos",
- "categoryId": 1,
- "url": "https://www.getkudos.me/",
- "companyId": "zendesk"
- },
- "getmyad": {
- "name": "GetMyAd",
- "categoryId": 4,
- "url": "http://yottos.com",
- "companyId": "yottos"
- },
- "getsatisfaction": {
- "name": "GetSatisfaction",
- "categoryId": 1,
- "url": "http://getsatisfaction.com/",
- "companyId": "get_satisfaction"
- },
- "gettyimages": {
- "name": "Getty Images",
- "categoryId": 8,
- "url": "https://www.gettyimages.com/",
- "companyId": null
- },
- "gfk": {
- "name": "GfK",
- "categoryId": 4,
- "url": "http://nurago.com/",
- "companyId": "gfk_nurago"
- },
- "gfycat.com": {
- "name": "gfycat",
- "categoryId": 7,
- "url": "https://gfycat.com/",
- "companyId": null
- },
- "giant_realm": {
- "name": "Giant Realm",
- "categoryId": 4,
- "url": "http://corp.giantrealm.com/",
- "companyId": "giant_realm"
- },
- "giantmedia": {
- "name": "GiantMedia",
- "categoryId": 4,
- "url": "http://giantmedia.com/",
- "companyId": "adknowledge"
- },
- "giga": {
- "name": "Giga",
- "categoryId": 4,
- "url": "https://gigaonclick.com",
- "companyId": "giga"
- },
- "gigya": {
- "name": "Gigya",
- "categoryId": 6,
- "url": "https://www.sap.com/index.html",
- "companyId": "sap"
- },
- "gigya_beacon": {
- "name": "Gigya Beacon",
- "categoryId": 2,
- "url": "http://www.gigya.com",
- "companyId": "sap"
- },
- "gigya_socialize": {
- "name": "Gigya Socialize",
- "categoryId": 2,
- "url": "http://www.gigya.com",
- "companyId": "sap"
- },
- "gigya_toolbar": {
- "name": "Gigya Toolbar",
- "categoryId": 2,
- "url": "http://www.gigya.com/",
- "companyId": "sap"
- },
- "giosg": {
- "name": "Giosg",
- "categoryId": 6,
- "url": "https://www.giosg.com/",
- "companyId": "giosg"
- },
- "giphy.com": {
- "name": "Giphy",
- "categoryId": 7,
- "url": "https://giphy.com/",
- "companyId": null
- },
- "giraff.io": {
- "name": "Giraff.io",
- "categoryId": 4,
- "url": "https://www.giraff.io/",
- "companyId": null
- },
- "github": {
- "name": "GitHub, Inc.",
- "categoryId": 2,
- "url": "https://github.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "github_apps": {
- "name": "GitHub Apps",
- "categoryId": 2,
- "url": "https://github.com/",
- "companyId": "github"
- },
- "github_pages": {
- "name": "Github Pages",
- "categoryId": 10,
- "url": "https://pages.github.com/",
- "companyId": "github"
- },
- "gittigidiyor_affiliate_program": {
- "name": "GittiGidiyor Affiliate Program",
- "categoryId": 4,
- "url": "http://www.ebay.com/",
- "companyId": "ebay"
- },
- "gittip": {
- "name": "Gittip",
- "categoryId": 2,
- "url": "https://www.gittip.com/",
- "companyId": "gittip"
- },
- "glad_cube": {
- "name": "Glad Cube",
- "categoryId": 6,
- "url": "http://www.glad-cube.com/",
- "companyId": "glad_cube_inc."
- },
- "glganltcs.space": {
- "name": "glganltcs.space",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "global_web_index": {
- "name": "GlobalWebIndex",
- "categoryId": 6,
- "url": "https://www.globalwebindex.com/",
- "companyId": "global_web_index"
- },
- "globalnotifier.com": {
- "name": "globalnotifier.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "globalsign": {
- "name": "GlobalSign",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "globaltakeoff": {
- "name": "GlobalTakeoff",
- "categoryId": 4,
- "url": "http://www.globaltakeoff.net/",
- "companyId": "globaltakeoff"
- },
- "glomex.com": {
- "name": "Glomex",
- "categoryId": 0,
- "url": "https://www.glomex.com/",
- "companyId": "glomex"
- },
- "glotgrx.com": {
- "name": "glotgrx.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "gm_delivery": {
- "name": "GM Delivery",
- "categoryId": 4,
- "url": "http://a.gmdelivery.com/",
- "companyId": "gm_delivery"
- },
- "gmail": {
- "name": "Gmail",
- "categoryId": 13,
- "url": "https://mail.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "gmo": {
- "name": "GMO",
- "categoryId": 4,
- "url": "https://www.gmo.media/",
- "companyId": "gmo_media"
- },
- "gmx_net": {
- "name": "gmx.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "go.com": {
- "name": "go.com",
- "categoryId": 8,
- "url": "go.com",
- "companyId": "disney"
- },
- "godaddy_affiliate_program": {
- "name": "GoDaddy Affiliate Program",
- "categoryId": 4,
- "url": "http://www.godaddy.com/",
- "companyId": "godaddy"
- },
- "godaddy_site_analytics": {
- "name": "GoDaddy Site Analytics",
- "categoryId": 6,
- "url": "https://www.godaddy.com/gdshop/hosting/stats_",
- "companyId": "godaddy"
- },
- "godaddy_site_seal": {
- "name": "GoDaddy Site Seal",
- "categoryId": 5,
- "url": "http://www.godaddy.com/",
- "companyId": "godaddy"
- },
- "godatafeed": {
- "name": "GoDataFeed",
- "categoryId": 6,
- "url": "http://www.godatafeed.com",
- "companyId": "godatafeed"
- },
- "goingup": {
- "name": "GoingUp",
- "categoryId": 6,
- "url": "http://www.goingup.com/",
- "companyId": "goingup"
- },
- "gomez": {
- "name": "Gomez",
- "categoryId": 6,
- "url": "http://www.gomez.com/",
- "companyId": "dynatrace"
- },
- "goodadvert": {
- "name": "GoodADVERT",
- "categoryId": 4,
- "url": "http://goodadvert.ru/",
- "companyId": "goodadvert"
- },
- "google": {
- "name": "Google",
- "categoryId": 4,
- "url": "https://www.google.com/",
- "companyId": "google"
- },
- "google_ads_measurement": {
- "name": "Google Ads Measurement",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_adsense": {
- "name": "Google Adsense",
- "categoryId": 4,
- "url": "https://www.google.com/adsense/",
- "companyId": "google"
- },
- "google_adservices": {
- "name": "Google AdServices",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_adwords_conversion": {
- "name": "Google AdWords Conversion",
- "categoryId": 4,
- "url": "https://adwords.google.com/",
- "companyId": "google"
- },
- "google_adwords_user_lists": {
- "name": "Google Adwords User Lists",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_analytics": {
- "name": "Google Analytics",
- "categoryId": 6,
- "url": "http://www.google.com/analytics/",
- "companyId": "google"
- },
- "google_appspot": {
- "name": "Google Appspot",
- "categoryId": 10,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_auth": {
- "name": "Google Auth",
- "categoryId": 2,
- "url": "https://myaccount.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_beacons": {
- "name": "Google Beacons",
- "categoryId": 6,
- "url": "https://google.xyz",
- "companyId": "google"
- },
- "google_chat": {
- "name": "Google Chat",
- "categoryId": 7,
- "url": "https://mail.google.com/chat/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_cloud_platform": {
- "name": "Google Cloud Platform",
- "categoryId": 10,
- "url": "https://cloud.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_cloud_storage": {
- "name": "Google Cloud Storage",
- "categoryId": 10,
- "url": "https://cloud.google.com/storage/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_custom_search": {
- "name": "Google Custom Search Ads",
- "categoryId": 4,
- "url": "https://developers.google.com/custom-search-ads/",
- "companyId": "google"
- },
- "google_custom_search_engine": {
- "name": "Google Programmable Search Engine",
- "categoryId": 5,
- "url": "https://programmablesearchengine.google.com/about/",
- "companyId": "google"
- },
- "google_dns": {
- "name": "Google DNS",
- "categoryId": 10,
- "url": "https://dns.google/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_domains": {
- "name": "Google Domains",
- "categoryId": 10,
- "url": "https://domains.google/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_edge": {
- "name": "Google Edge CDN",
- "categoryId": 9,
- "url": "https://peering.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_email": {
- "name": "Google Email",
- "categoryId": 13,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_fonts": {
- "name": "Google Fonts",
- "categoryId": 9,
- "url": "https://fonts.google.com/",
- "companyId": "google"
- },
- "google_hosted": {
- "name": "Google Hosted",
- "categoryId": 10,
- "url": "https://workspace.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_ima": {
- "name": "Google IMA",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_location": {
- "name": "Google Location",
- "categoryId": 8,
- "url": "https://patents.google.com/patent/WO2007025143A1/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_maps": {
- "name": "Google Maps",
- "categoryId": 2,
- "url": "https://www.google.com/maps/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_marketing": {
- "name": "Google Marketing",
- "categoryId": 4,
- "url": "https://marketingplatform.google.com/about/enterprise",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_meet": {
- "name": "Google Meet",
- "categoryId": 2,
- "url": "https://meet.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_photos": {
- "name": "Google Photos",
- "categoryId": 9,
- "url": "https://photos.google.com/",
- "companyId": "google"
- },
- "google_pingback": {
- "name": "Google Pingback",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_play": {
- "name": "Google Play",
- "categoryId": 8,
- "url": "https://play.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_plus": {
- "name": "Google+ Platform",
- "categoryId": 7,
- "url": "http://www.google.com/+1/button/",
- "companyId": "google"
- },
- "google_publisher_tags": {
- "name": "Google Publisher Tags",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_remarketing": {
- "name": "Google Dynamic Remarketing",
- "categoryId": 4,
- "url": "http://adwords.google.com/",
- "companyId": "google"
- },
- "google_safeframe": {
- "name": "Google Safeframe",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_servers": {
- "name": "Google Servers",
- "categoryId": 8,
- "url": "https://support.google.com/faqs/answer/174717?hl=en",
- "companyId": "google"
- },
- "google_shopping_reviews": {
- "name": "Google Shopping Reviews",
- "categoryId": 2,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_syndication": {
- "name": "Google Syndication",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_tag_manager": {
- "name": "Google Tag Manager",
- "categoryId": 5,
- "url": "https://marketingplatform.google.com/about/tag-manager/",
- "companyId": "google"
- },
- "google_translate": {
- "name": "Google Translate",
- "categoryId": 2,
- "url": "https://translate.google.com/manager",
- "companyId": "google"
- },
- "google_travel_adds": {
- "name": "Google Travel Adds",
- "categoryId": 4,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_trust_services": {
- "name": "Google Trust Services",
- "categoryId": 5,
- "url": "https://pki.goog/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_trusted_stores": {
- "name": "Google Trusted Stores",
- "categoryId": 6,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_users": {
- "name": "Google User Content",
- "categoryId": 9,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_voice": {
- "name": "Google Voice",
- "categoryId": 2,
- "url": "https://voice.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "google_website_optimizer": {
- "name": "Google Website Optimizer",
- "categoryId": 6,
- "url": "https://www.google.com/analytics/siteopt/prev",
- "companyId": "google"
- },
- "google_widgets": {
- "name": "Google Widgets",
- "categoryId": 2,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "google_workspace": {
- "name": "Google Workspace",
- "categoryId": 2,
- "url": "https://workspace.google.com/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "googleapis.com": {
- "name": "Google APIs",
- "categoryId": 9,
- "url": "https://www.googleapis.com/",
- "companyId": "google"
- },
- "goooal": {
- "name": "Goooal",
- "categoryId": 6,
- "url": "http://mailchimp.com/",
- "companyId": "mailchimp"
- },
- "gorilla_nation": {
- "name": "Gorilla Nation",
- "categoryId": 4,
- "url": "http://www.gorillanationmedia.com",
- "companyId": "gorilla_nation_media"
- },
- "gosquared": {
- "name": "GoSquared",
- "categoryId": 6,
- "url": "http://www.gosquared.com/livestats/",
- "companyId": "gosquared"
- },
- "gostats": {
- "name": "GoStats",
- "categoryId": 6,
- "url": "http://gostats.com/",
- "companyId": "gostats"
- },
- "govmetric": {
- "name": "GovMetric",
- "categoryId": 6,
- "url": "http://www.govmetric.com/",
- "companyId": "govmetric"
- },
- "grabo_affiliate": {
- "name": "Grabo Affiliate",
- "categoryId": 4,
- "url": "http://grabo.bg/",
- "companyId": "grabo_media"
- },
- "grandslammedia": {
- "name": "GrandSlamMedia",
- "categoryId": 4,
- "url": "http://www.grandslammedia.com/",
- "companyId": "grand_slam_media"
- },
- "granify": {
- "name": "Granify",
- "categoryId": 6,
- "url": "http://granify.com/",
- "companyId": "granify"
- },
- "grapeshot": {
- "name": "Grapeshot",
- "categoryId": 4,
- "url": "https://www.grapeshot.com/",
- "companyId": "oracle"
- },
- "graph_comment": {
- "name": "Graph Comment",
- "categoryId": 5,
- "url": "https://graphcomment.com/en/",
- "companyId": "graph_comment"
- },
- "gravatar": {
- "name": "Gravatar",
- "categoryId": 7,
- "url": "http://en.gravatar.com/",
- "companyId": "automattic"
- },
- "gravitec": {
- "name": "Gravitec",
- "categoryId": 6,
- "url": "https://gravitec.net/",
- "companyId": "gravitec"
- },
- "gravity_insights": {
- "name": "Gravity Insights",
- "categoryId": 6,
- "url": "http://www.gravity.com/",
- "companyId": "verizon"
- },
- "greatviews.de": {
- "name": "GreatViews",
- "categoryId": 4,
- "url": "http://greatviews.de/",
- "companyId": "parship"
- },
- "green_and_red": {
- "name": "Green and Red",
- "categoryId": 4,
- "url": "http://www.green-red.com/",
- "companyId": "green_&_red_technologies"
- },
- "green_certified_site": {
- "name": "Green Certified Site",
- "categoryId": 2,
- "url": "http://www.advenity.com/",
- "companyId": "advenity"
- },
- "green_story": {
- "name": "Green Story",
- "categoryId": 6,
- "url": "https://greenstory.ca/",
- "companyId": "green_story"
- },
- "greentube.com": {
- "name": "Greentube Internet Entertainment Solutions",
- "categoryId": 7,
- "url": "https://www.greentube.com/",
- "companyId": null
- },
- "greystripe": {
- "name": "Greystripe",
- "categoryId": 4,
- "url": "http://www.greystripe.com/",
- "companyId": "conversant"
- },
- "groove": {
- "name": "Groove",
- "categoryId": 2,
- "url": "http://www.groovehq.com/",
- "companyId": "groove_networks"
- },
- "groovinads": {
- "name": "GroovinAds",
- "categoryId": 4,
- "url": "http://www.groovinads.com/en",
- "companyId": "groovinads"
- },
- "groundtruth": {
- "name": "GroundTruth",
- "categoryId": 4,
- "url": "http://www.groundtruth.com/",
- "companyId": "groundtruth"
- },
- "groupm_server": {
- "name": "GroupM Server",
- "categoryId": 4,
- "url": "http://www.groupm.com/",
- "companyId": "wpp"
- },
- "gsi_media": {
- "name": "GSI Media",
- "categoryId": 4,
- "url": "http://gsimedia.net",
- "companyId": "gsi_media_network"
- },
- "gstatic": {
- "name": "Google Static",
- "categoryId": 9,
- "url": "http://www.google.com",
- "companyId": "google"
- },
- "gtop": {
- "name": "GTop",
- "categoryId": 6,
- "url": "http://www.gtopstats.com",
- "companyId": "gtopstats"
- },
- "gugaboo": {
- "name": "Gugaboo",
- "categoryId": 4,
- "url": "https://www.gubagoo.com/",
- "companyId": "gubagoo"
- },
- "guj.de": {
- "name": "Gruner + Jahr",
- "categoryId": 4,
- "url": "https://www.guj.de/",
- "companyId": "gruner_jahr_ag"
- },
- "gujems": {
- "name": "G+J e|MS",
- "categoryId": 4,
- "url": "http://www.gujmedia.de/",
- "companyId": "gruner_jahr_ag"
- },
- "gumgum": {
- "name": "gumgum",
- "categoryId": 4,
- "url": "http://gumgum.com/",
- "companyId": "gumgum"
- },
- "gumroad": {
- "name": "Gumroad",
- "categoryId": 7,
- "url": "https://gumroad.com/",
- "companyId": "gumroad"
- },
- "gunggo": {
- "name": "Gunggo",
- "categoryId": 4,
- "url": "http://www.gunggo.com/",
- "companyId": "gunggo"
- },
- "h12_ads": {
- "name": "H12 Ads",
- "categoryId": 4,
- "url": "http://www.h12-media.com/",
- "companyId": "h12_media_ads"
- },
- "hacker_news_button": {
- "name": "Hacker News Button",
- "categoryId": 7,
- "url": "http://news.ycombinator.com/",
- "companyId": "hacker_news"
- },
- "haendlerbund.de": {
- "name": "Händlerbund",
- "categoryId": 2,
- "url": "https://www.haendlerbund.de/en",
- "companyId": null
- },
- "halogen_network": {
- "name": "Halogen Network",
- "categoryId": 7,
- "url": "http://www.halogennetwork.com/",
- "companyId": "social_chorus"
- },
- "happy_fox_chat": {
- "name": "Happy Fox Chat",
- "categoryId": 2,
- "url": "https://happyfoxchat.com/",
- "companyId": "happy_fox_chat"
- },
- "harren_media": {
- "name": "Harren Media",
- "categoryId": 4,
- "url": "http://www.harrenmedia.com/index.html",
- "companyId": "harren_media"
- },
- "hatchbuck": {
- "name": "Hatchbuck",
- "categoryId": 6,
- "url": "http://www.hatchbuck.com/",
- "companyId": "hatchbuck"
- },
- "head_hunter": {
- "name": "Head Hunter",
- "categoryId": 6,
- "url": "https://hh.ru/",
- "companyId": "head_hunter"
- },
- "healte.de": {
- "name": "healte.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "heap": {
- "name": "Heap",
- "categoryId": 6,
- "url": "https://heapanalytics.com/",
- "companyId": "heap"
- },
- "heatmap": {
- "name": "Heatmap",
- "categoryId": 6,
- "url": "https://heatmap.me/",
- "companyId": "heatmap"
- },
- "heimspiel": {
- "name": "HEIM:SPIEL Medien GmbH",
- "categoryId": 8,
- "url": "http://www.heimspiel.de",
- "companyId": null
- },
- "hello_bar": {
- "name": "Hello Bar",
- "categoryId": 7,
- "url": "https://www.hellobar.com/",
- "companyId": "crazy_egg"
- },
- "hellosociety": {
- "name": "HelloSociety",
- "categoryId": 6,
- "url": "http://hellosociety.com",
- "companyId": "hellosociety"
- },
- "here": {
- "name": "HERE",
- "categoryId": 8,
- "url": "https://www.here.com/",
- "companyId": null
- },
- "heroku": {
- "name": "Heroku",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "heureka-widget": {
- "name": "Heureka-Widget",
- "categoryId": 4,
- "url": "https://www.heurekashopping.cz/",
- "companyId": "heureka"
- },
- "heybubble": {
- "name": "HeyBubble",
- "categoryId": 2,
- "url": "https://www.heybubble.com/",
- "companyId": "heybubble"
- },
- "heyos": {
- "name": "Heyos",
- "categoryId": 4,
- "url": "http://www.heyos.com/",
- "companyId": "heyos"
- },
- "hi-media_performance": {
- "name": "Hi-Media Performance",
- "categoryId": 4,
- "url": "http://www.hi-mediaperformance.co.uk/",
- "companyId": "hi-media_performance"
- },
- "hiconversion": {
- "name": "HiConversion",
- "categoryId": 4,
- "url": "http://www.hiconversion.com",
- "companyId": "hiconversion"
- },
- "highwebmedia.com": {
- "name": "highwebmedia.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "highwinds": {
- "name": "Highwinds",
- "categoryId": 6,
- "url": "https://www.highwinds.com/",
- "companyId": "highwinds"
- },
- "hiiir": {
- "name": "Hiiir",
- "categoryId": 4,
- "url": "http://adpower.hiiir.com/",
- "companyId": "hiiir"
- },
- "hiro": {
- "name": "HIRO",
- "categoryId": 4,
- "url": "http://www.hiro-media.com/",
- "companyId": "hiro_media"
- },
- "histats": {
- "name": "Histats",
- "categoryId": 4,
- "url": "http://www.histats.com/",
- "companyId": "histats"
- },
- "hit-parade": {
- "name": "Hit-Parade",
- "categoryId": 4,
- "url": "http://www.hit-parade.com/",
- "companyId": "hit-parade"
- },
- "hit.ua": {
- "name": "HIT.UA",
- "categoryId": 4,
- "url": "http://hit.ua/",
- "companyId": "hit.ua"
- },
- "hitslink": {
- "name": "HitsLink",
- "categoryId": 4,
- "url": "http://www.hitslink.com/",
- "companyId": "net_applications"
- },
- "hitsniffer": {
- "name": "HitSniffer",
- "categoryId": 4,
- "url": "http://hitsniffer.com/",
- "companyId": "hit_sniffer"
- },
- "hittail": {
- "name": "HitTail",
- "categoryId": 4,
- "url": "http://www.hittail.com/",
- "companyId": "hittail"
- },
- "hivedx.com": {
- "name": "hiveDX",
- "categoryId": 4,
- "url": "https://www.hivedx.com/",
- "companyId": null
- },
- "hiveworks": {
- "name": "Hive Networks",
- "categoryId": 4,
- "url": "https://hiveworkscomics.com/",
- "companyId": "hive_works"
- },
- "hockeyapp": {
- "name": "HockeyApp",
- "categoryId": 101,
- "url": "https://hockeyapp.net/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "hoholikik.club": {
- "name": "hoholikik.club",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "hola_player": {
- "name": "Hola Player",
- "categoryId": 0,
- "url": "https://holacdn.com/",
- "companyId": "hola_cdn"
- },
- "homeaway": {
- "name": "HomeAway",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "honeybadger": {
- "name": "Honeybadger",
- "categoryId": 6,
- "url": "https://www.honeybadger.io/",
- "companyId": "honeybadger"
- },
- "hooklogic": {
- "name": "HookLogic",
- "categoryId": 4,
- "url": "http://hooklogic.com/",
- "companyId": "criteo"
- },
- "hop-cube": {
- "name": "Hop-Cube",
- "categoryId": 4,
- "url": "http://www.hop-cube.com/",
- "companyId": "hop-cube"
- },
- "hotdogsandads.com": {
- "name": "hotdogsandads.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "hotjar": {
- "name": "Hotjar",
- "categoryId": 6,
- "url": "http://www.hotjar.com/",
- "companyId": "hotjar"
- },
- "hotkeys": {
- "name": "HotKeys",
- "categoryId": 4,
- "url": "http://www.demandmedia.com/",
- "companyId": "leaf_group"
- },
- "hotlog.ru": {
- "name": "HotLog",
- "categoryId": 4,
- "url": "https://hotlog.ru/",
- "companyId": "hotlog"
- },
- "hotwords": {
- "name": "HOTWords",
- "categoryId": 4,
- "url": "http://hotwords.com/",
- "companyId": "hotwords"
- },
- "howtank.com": {
- "name": "howtank",
- "categoryId": 7,
- "url": "https://www.howtank.com/",
- "companyId": null
- },
- "hqentertainmentnetwork.com": {
- "name": "HQ Entertainment Network",
- "categoryId": 4,
- "url": "https://hqentertainmentnetwork.com/",
- "companyId": null
- },
- "hsoub": {
- "name": "Hsoub",
- "categoryId": 4,
- "url": "http://www.hsoub.com/",
- "companyId": "hsoub"
- },
- "hstrck.com": {
- "name": "HEIM:SPIEL Medien GmbH",
- "categoryId": 8,
- "url": "https://www.heimspiel.de/",
- "companyId": null
- },
- "httpool": {
- "name": "HTTPool",
- "categoryId": 4,
- "url": "http://www.httpool.com/",
- "companyId": "httpool"
- },
- "hubrus": {
- "name": "HUBRUS",
- "categoryId": 4,
- "url": "http://www.hubrus.com/",
- "companyId": "hubrus"
- },
- "hubspot": {
- "name": "HubSpot",
- "categoryId": 6,
- "url": "http://www.hubspot.com/",
- "companyId": "hubspot"
- },
- "hubspot_forms": {
- "name": "HubSpot Forms",
- "categoryId": 2,
- "url": "http://www.hubspot.com",
- "companyId": "hubspot"
- },
- "hubvisor.io": {
- "name": "Hubvisor",
- "categoryId": 4,
- "url": "https://hubvisor.io/",
- "companyId": null
- },
- "hucksterbot": {
- "name": "HucksterBot",
- "categoryId": 4,
- "url": "http://hucksterbot.ru/",
- "companyId": "hucksterbot"
- },
- "hupso": {
- "name": "Hupso",
- "categoryId": 7,
- "url": "http://www.hupso.com/",
- "companyId": "hupso"
- },
- "hurra_tracker": {
- "name": "Hurra Tracker",
- "categoryId": 4,
- "url": "http://www.hurra.com/en/",
- "companyId": "hurra_communications"
- },
- "hybrid.ai": {
- "name": "Hybrid.ai",
- "categoryId": 4,
- "url": "https://hybrid.ai/",
- "companyId": "hybrid_adtech"
- },
- "hype_exchange": {
- "name": "Hype Exchange",
- "categoryId": 4,
- "url": "http://www.hypeexchange.com/",
- "companyId": "hype_exchange"
- },
- "hypercomments": {
- "name": "HyperComments",
- "categoryId": 1,
- "url": "http://www.hypercomments.com/",
- "companyId": "hypercomments"
- },
- "hyves_widgets": {
- "name": "Hyves Widgets",
- "categoryId": 4,
- "url": "http://www.hyves.nl/",
- "companyId": "hyves"
- },
- "hyvyd": {
- "name": "Hyvyd GmbH",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "i-behavior": {
- "name": "i-Behavior",
- "categoryId": 4,
- "url": "http://www.i-behavior.com/",
- "companyId": "kbm_group"
- },
- "i-mobile": {
- "name": "i-mobile",
- "categoryId": 4,
- "url": "https://www2.i-mobile.co.jp/en/index.aspx",
- "companyId": "i-mobile"
- },
- "i.ua": {
- "name": "i.ua",
- "categoryId": 4,
- "url": "http://www.i.ua/",
- "companyId": "i.ua"
- },
- "i10c.net": {
- "name": "i10c.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "i2i.jp": {
- "name": "i2i.jp",
- "categoryId": 6,
- "url": "http://www.i2i.jp/",
- "companyId": "i2i.jp"
- },
- "iab_consent": {
- "name": "IAB Consent",
- "categoryId": 5,
- "url": "https://iabtechlab.com/standards/gdpr-transparency-and-consent-framework/",
- "companyId": "iab"
- },
- "iadvize": {
- "name": "iAdvize",
- "categoryId": 2,
- "url": "http://www.iadvize.com/",
- "companyId": "iadvize"
- },
- "ibm_customer_experience": {
- "name": "IBM Digital Analytics",
- "categoryId": 6,
- "url": "http://www.coremetrics.com/",
- "companyId": "ibm"
- },
- "icerocket_tracker": {
- "name": "IceRocket Tracker",
- "categoryId": 7,
- "url": "http://tracker.icerocket.com/",
- "companyId": "meltwater_icerocket"
- },
- "icf_technology": {
- "name": "ICF Technology",
- "categoryId": 2,
- "url": "http://www.icftechnology.com/",
- "companyId": null
- },
- "iclick": {
- "name": "iClick",
- "categoryId": 4,
- "url": "http://optimix.asia/",
- "companyId": "iclick_interactive"
- },
- "icrossing": {
- "name": "iCrossing",
- "categoryId": 4,
- "url": "http://www.icrossing.com/",
- "companyId": "hearst"
- },
- "icstats": {
- "name": "ICStats",
- "categoryId": 6,
- "url": "http://www.icstats.nl/",
- "companyId": "icstats"
- },
- "icuazeczpeoohx.com": {
- "name": "icuazeczpeoohx.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "id-news.net": {
- "name": "Ippen Digital",
- "categoryId": 4,
- "url": "https://www.ippen-digital.de/",
- "companyId": null
- },
- "id5-sync": {
- "name": "ID5 Sync",
- "categoryId": 4,
- "url": "https://id5.io/",
- "companyId": "id5-sync",
- "source": "AdGuard"
- },
- "id_services": {
- "name": "ID Services",
- "categoryId": 6,
- "url": "https://id.services/",
- "companyId": "id_services"
- },
- "ideal_media": {
- "name": "Ideal Media",
- "categoryId": 4,
- "url": "http://idealmedia.com/",
- "companyId": "ideal_media"
- },
- "idealo_com": {
- "name": "idealo.com",
- "categoryId": 4,
- "url": "http://idealo.com/",
- "companyId": null
- },
- "identrust": {
- "name": "IdenTrust, Inc.",
- "categoryId": 5,
- "url": "https://identrust.com/",
- "companyId": "identrust",
- "source": "AdGuard"
- },
- "ideoclick": {
- "name": "IdeoClick",
- "categoryId": 4,
- "url": "http://ideoclick.com",
- "companyId": "ideoclick"
- },
- "idio": {
- "name": "Idio",
- "categoryId": 4,
- "url": "https://www.idio.ai/",
- "companyId": "idio"
- },
- "ie8eamus.com": {
- "name": "ie8eamus.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ientry": {
- "name": "iEntry",
- "categoryId": 4,
- "url": "http://www.ientry.com/",
- "companyId": "ientry"
- },
- "iflychat": {
- "name": "iFlyChat",
- "categoryId": 2,
- "url": "https://iflychat.com/",
- "companyId": "iflychat"
- },
- "ignitionone": {
- "name": "IgnitionOne",
- "categoryId": 6,
- "url": "https://www.ignitionone.com/",
- "companyId": "zeta"
- },
- "igodigital": {
- "name": "iGoDigital",
- "categoryId": 2,
- "url": "http://igodigital.com/",
- "companyId": "salesforce"
- },
- "ihs_markit": {
- "name": "IHS Markit",
- "categoryId": 6,
- "url": "https://ihsmarkit.com/index.html",
- "companyId": "ihs"
- },
- "ihs_markit_online_shopper_insigh": {
- "name": "IHS Markit Online Shopper Insigh",
- "categoryId": 6,
- "url": "http://www.visicogn.com/vcu.htm",
- "companyId": "ihs"
- },
- "ihvmcqojoj.com": {
- "name": "ihvmcqojoj.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "iias.eu": {
- "name": "Insight Image",
- "categoryId": 3,
- "url": "http://insightimage.com/",
- "companyId": null
- },
- "ijento": {
- "name": "iJento",
- "categoryId": 6,
- "url": "http://www.ijento.com/",
- "companyId": "ijento"
- },
- "imad": {
- "name": "imad",
- "categoryId": 4,
- "url": "http://www.imad.co.kr/",
- "companyId": "i'mad_republic"
- },
- "image_advantage": {
- "name": "Image Advantage",
- "categoryId": 4,
- "url": "http://www.worthathousandwords.com/",
- "companyId": "image_advantage"
- },
- "image_space_media": {
- "name": "Image Space Media",
- "categoryId": 4,
- "url": "http://www.imagespacemedia.com/",
- "companyId": "image_space_media"
- },
- "imgix.net": {
- "name": "ImgIX",
- "categoryId": 9,
- "url": "https://www.imgix.com/",
- "companyId": null
- },
- "imgur": {
- "name": "Imgur",
- "categoryId": 8,
- "url": "https://imgur.com/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "imho_vi": {
- "name": "imho vi",
- "categoryId": 4,
- "url": "http://www.imho.ru",
- "companyId": "imho"
- },
- "immanalytics": {
- "name": "Immanalytics",
- "categoryId": 2,
- "url": "https://www.roku.com/",
- "companyId": "roku"
- },
- "immobilienscout24_de": {
- "name": "immobilienscout24.de",
- "categoryId": 8,
- "url": "http://www.scout24.com/",
- "companyId": "scout24"
- },
- "imonomy": {
- "name": "imonomy",
- "categoryId": 6,
- "url": "http://imonomy.com/",
- "companyId": "imonomy"
- },
- "impact_radius": {
- "name": "Impact Radius",
- "categoryId": 5,
- "url": "http://www.impactradius.com/",
- "companyId": "impact_radius"
- },
- "impresiones_web": {
- "name": "Impresiones Web",
- "categoryId": 4,
- "url": "http://www.iw-advertising.com/",
- "companyId": "impresiones_web"
- },
- "improve_digital": {
- "name": "Improve Digital",
- "categoryId": 4,
- "url": "http://www.improvedigital.com/",
- "companyId": "improve_digital"
- },
- "improvely": {
- "name": "Improvely",
- "categoryId": 6,
- "url": "https://www.improvely.com/",
- "companyId": "awio_web_services"
- },
- "inbenta": {
- "name": "Inbenta",
- "categoryId": 6,
- "url": "https://www.inbenta.com/en/",
- "companyId": "inbenta"
- },
- "inboxsdk.com": {
- "name": "Inbox SDK",
- "categoryId": 8,
- "url": "https://www.inboxsdk.com/",
- "companyId": null
- },
- "indeed": {
- "name": "Indeed",
- "categoryId": 4,
- "url": "http://www.indeed.com/",
- "companyId": "indeed"
- },
- "index_exchange": {
- "name": "Index Exchange",
- "categoryId": 4,
- "url": "http://www.casalemedia.com/",
- "companyId": "index_exchange"
- },
- "indieclick": {
- "name": "IndieClick",
- "categoryId": 4,
- "url": "http://www.indieclick.com/",
- "companyId": "leaf_group"
- },
- "industry_brains": {
- "name": "Industry Brains",
- "categoryId": 4,
- "url": "http://www.industrybrains.com/",
- "companyId": "industrybrains"
- },
- "infectious_media": {
- "name": "Impression Desk",
- "categoryId": 4,
- "url": "https://impressiondesk.com/",
- "companyId": "infectious_media"
- },
- "infinite_analytics": {
- "name": "Infinite Analytics",
- "categoryId": 6,
- "url": "http://infiniteanalytics.com/products/",
- "companyId": "infinite_analytics"
- },
- "infinity_tracking": {
- "name": "Infinity Tracking",
- "categoryId": 6,
- "url": "http://www.infinity-tracking.com",
- "companyId": "infinity_tracking"
- },
- "influads": {
- "name": "InfluAds",
- "categoryId": 4,
- "url": "http://www.influads.com/",
- "companyId": "influads"
- },
- "infolinks": {
- "name": "InfoLinks",
- "categoryId": 4,
- "url": "http://www.infolinks.com/",
- "companyId": "infolinks"
- },
- "infonline": {
- "name": "INFOnline",
- "categoryId": 6,
- "url": "http://www.infonline.de/",
- "companyId": "infonline"
- },
- "informer_technologies": {
- "name": "Informer Technologies",
- "categoryId": 6,
- "url": "http://www.informer.com/",
- "companyId": "informer_technologies"
- },
- "infusionsoft": {
- "name": "Infusionsoft by Keap",
- "categoryId": 4,
- "url": "https://keap.com/",
- "companyId": "infusionsoft"
- },
- "innity": {
- "name": "Innity",
- "categoryId": 4,
- "url": "http://www.innity.com/",
- "companyId": "innity"
- },
- "innogames.de": {
- "name": "InnoGames",
- "categoryId": 8,
- "url": "https://www.innogames.com/",
- "companyId": null
- },
- "innovid": {
- "name": "Innovid",
- "categoryId": 4,
- "url": "https://www.innovid.com/",
- "companyId": "innovid"
- },
- "inside": {
- "name": "inside",
- "categoryId": 7,
- "url": "http://www.inside.tm/",
- "companyId": "powerfront"
- },
- "insider": {
- "name": "Insider",
- "categoryId": 6,
- "url": "http://useinsider.com/",
- "companyId": "insider"
- },
- "insightexpress": {
- "name": "InsightExpress",
- "categoryId": 6,
- "url": "https://www.millwardbrowndigital.com/",
- "companyId": "millward_brown"
- },
- "inskin_media": {
- "name": "InSkin Media",
- "categoryId": 4,
- "url": "http://www.inskinmedia.com/",
- "companyId": "inskin_media"
- },
- "inspectlet": {
- "name": "Inspectlet",
- "categoryId": 6,
- "url": "https://www.inspectlet.com/",
- "companyId": "inspectlet"
- },
- "inspsearchapi.com": {
- "name": "Infospace Search",
- "categoryId": 4,
- "url": "http://infospace.com/",
- "companyId": "system1"
- },
- "instagram_com": {
- "name": "Instagram",
- "categoryId": 8,
- "url": "https://www.facebook.com/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "instant_check_mate": {
- "name": "Instant Check Mate",
- "categoryId": 2,
- "url": "https://www.instantcheckmate.com/",
- "companyId": "instant_check_mate"
- },
- "instart_logic": {
- "name": "Instart Logic",
- "categoryId": 4,
- "url": "https://www.instartlogic.com/",
- "companyId": "instart_logic_inc"
- },
- "insticator": {
- "name": "Insticator",
- "categoryId": 4,
- "url": "https://www.insticator.com/landingpage",
- "companyId": "insticator"
- },
- "instinctive": {
- "name": "Instinctive",
- "categoryId": 4,
- "url": "https://instinctive.io/",
- "companyId": "instinctive"
- },
- "intango": {
- "name": "Intango",
- "categoryId": 4,
- "url": "https://intango.com/",
- "companyId": "intango"
- },
- "integral_ad_science": {
- "name": "Integral Ad Science",
- "categoryId": 4,
- "url": "https://integralads.com/",
- "companyId": "integral_ad_science"
- },
- "integral_marketing": {
- "name": "Integral Marketing",
- "categoryId": 4,
- "url": "http://integral-marketing.com/",
- "companyId": "integral_marketing"
- },
- "intelliad": {
- "name": "intelliAd",
- "categoryId": 6,
- "url": "http://www.intelliad.de/",
- "companyId": "intelliad"
- },
- "intelligencefocus": {
- "name": "IntelligenceFocus",
- "categoryId": 6,
- "url": "http://www.intelligencefocus.com",
- "companyId": "intelligencefocus"
- },
- "intelligent_reach": {
- "name": "Intelligent Reach",
- "categoryId": 4,
- "url": "http://www.intelligentreach.com/",
- "companyId": "intelligent_reach"
- },
- "intense_debate": {
- "name": "Intense Debate",
- "categoryId": 2,
- "url": "http://intensedebate.com/",
- "companyId": "automattic"
- },
- "intent_iq": {
- "name": "Intent IQ",
- "categoryId": 4,
- "url": "http://datonics.com/",
- "companyId": "almondnet"
- },
- "intent_media": {
- "name": "Intent",
- "categoryId": 4,
- "url": "https://intent.com/",
- "companyId": "intent_media"
- },
- "intercom": {
- "name": "Intercom",
- "categoryId": 2,
- "url": "http://intercom.io/",
- "companyId": "intercom"
- },
- "interedy.info": {
- "name": "interedy.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "intergi": {
- "name": "Intergi",
- "categoryId": 4,
- "url": "http://www.intergi.com/",
- "companyId": "intergi_entertainment"
- },
- "intermarkets.net": {
- "name": "Intermarkets",
- "categoryId": 4,
- "url": "http://intermarkets.net/",
- "companyId": "intermarkets"
- },
- "intermundo_media": {
- "name": "InterMundo Media",
- "categoryId": 4,
- "url": "http://intermundomedia.com/",
- "companyId": "intermundo_media"
- },
- "internet_billboard": {
- "name": "Internet BillBoard",
- "categoryId": 4,
- "url": "http://www.ibillboard.com/en/",
- "companyId": "internet_billboard"
- },
- "internetaudioads": {
- "name": "InternetAudioAds",
- "categoryId": 0,
- "url": "http://www.internetaudioads.com/",
- "companyId": "internetaudioads"
- },
- "internetbrands": {
- "name": "InternetBrands",
- "categoryId": 7,
- "url": "http://www.internetbrands.com/",
- "companyId": "internet_brands"
- },
- "interpolls": {
- "name": "Interpolls",
- "categoryId": 4,
- "url": "http://www.interpolls.com/",
- "companyId": "interpolls"
- },
- "interyield": {
- "name": "Interyield",
- "categoryId": 4,
- "url": "http://www.advertise.com/publisher-solutions/",
- "companyId": "advertise.com"
- },
- "intilery": {
- "name": "Intilery",
- "categoryId": 6,
- "url": "http://www.intilery.com",
- "companyId": "intilery"
- },
- "intimate_merger": {
- "name": "Intimate Merger",
- "categoryId": 6,
- "url": "https://corp.intimatemerger.com/",
- "companyId": "intimate_merger"
- },
- "investingchannel": {
- "name": "Investing Channel",
- "categoryId": 8,
- "url": "http://www.investingchannel.com/",
- "companyId": "investingchannel"
- },
- "inviziads": {
- "name": "InviziAds",
- "categoryId": 4,
- "url": "http://www.inviziads.com",
- "companyId": "inviziads"
- },
- "invoca": {
- "name": "Invoca",
- "categoryId": 4,
- "url": "http://www.invoca.com/",
- "companyId": "invoca"
- },
- "invodo": {
- "name": "Invodo",
- "categoryId": 6,
- "url": "http://www.invodo.com/",
- "companyId": "invodo"
- },
- "ionicframework.com": {
- "name": "Ionic",
- "categoryId": 8,
- "url": "https://ionicframework.com/",
- "companyId": null
- },
- "iotec": {
- "name": "iotec",
- "categoryId": 4,
- "url": "https://www.iotecglobal.com/",
- "companyId": "iotec"
- },
- "iovation": {
- "name": "iovation",
- "categoryId": 5,
- "url": "http://www.iovation.com/",
- "companyId": "iovation"
- },
- "ip-label": {
- "name": "ip-label",
- "categoryId": 6,
- "url": "http://www.ip-label.co.uk/",
- "companyId": "ip-label"
- },
- "ip_targeting": {
- "name": "IP Targeting",
- "categoryId": 6,
- "url": "https://www.iptargeting.com/",
- "companyId": "el_toro"
- },
- "ip_tracker": {
- "name": "IP Tracker",
- "categoryId": 6,
- "url": "http://www.ip-tracker.org/",
- "companyId": "ip_tracker"
- },
- "iperceptions": {
- "name": "iPerceptions",
- "categoryId": 2,
- "url": "http://www.iperceptions.com/",
- "companyId": "iperceptions"
- },
- "ipfingerprint": {
- "name": "IPFingerprint",
- "categoryId": 6,
- "url": "http://www.ipfingerprint.com/",
- "companyId": "ipfingerprint"
- },
- "ipg_mediabrands": {
- "name": "IPG Mediabrands",
- "categoryId": 4,
- "url": "https://www.ipgmediabrands.com/",
- "companyId": "ipg_mediabrands"
- },
- "ipify": {
- "name": "ipify",
- "categoryId": 8,
- "url": "https://www.ipify.org/",
- "companyId": null
- },
- "ipinfo": {
- "name": "Ipinfo",
- "categoryId": 2,
- "url": "https://ipinfo.io/",
- "companyId": "ipinfo.io"
- },
- "iplogger": {
- "name": "IPLogger",
- "categoryId": 6,
- "url": "http://iplogger.ru/",
- "companyId": "iplogger"
- },
- "iprom": {
- "name": "iprom",
- "categoryId": 4,
- "url": "http://www.iprom.si/",
- "companyId": "iprom"
- },
- "ipromote": {
- "name": "iPromote",
- "categoryId": 4,
- "url": "http://www.ipromote.com/",
- "companyId": "ipromote"
- },
- "iprospect": {
- "name": "iProspect",
- "categoryId": 4,
- "url": "http://www.iprospect.com/",
- "companyId": "dentsu_aegis_network"
- },
- "iqiyi": {
- "name": "iQiyi",
- "categoryId": 0,
- "url": "https://www.iqiyi.com/",
- "companyId": "iqiyi",
- "source": "AdGuard"
- },
- "ironsource": {
- "name": "ironSource Ltd.",
- "categoryId": 4,
- "url": "https://www.is.com",
- "companyId": "unity",
- "source": "AdGuard"
- },
- "isocket": {
- "name": "isocket",
- "categoryId": 4,
- "url": "http://www.isocket.com/",
- "companyId": "rubicon_project"
- },
- "isolarcloud": {
- "name": "iSolarCloud",
- "categoryId": 6,
- "url": "https://isolarcloud.com/",
- "companyId": "sungrow",
- "source": "AdGuard"
- },
- "ispot.tv": {
- "name": "iSpot.tv",
- "categoryId": 4,
- "url": "https://www.ispot.tv/",
- "companyId": null
- },
- "itineraire.info": {
- "name": "itineraire.info",
- "categoryId": 2,
- "url": "https://www.itineraire.info/",
- "companyId": null
- },
- "itunes_link_maker": {
- "name": "iTunes Link Maker",
- "categoryId": 4,
- "url": "https://www.apple.com/",
- "companyId": "apple"
- },
- "ity.im": {
- "name": "ity.im",
- "categoryId": 4,
- "url": "http://ity.im/",
- "companyId": "ity.im"
- },
- "iubenda.com": {
- "name": "iubenda",
- "categoryId": 5,
- "url": "https://www.iubenda.com/",
- "companyId": "iubenda"
- },
- "ivcbrasil.org.br": {
- "name": "IVC Brasil",
- "categoryId": 6,
- "url": "https://ivcbrasil.org.br/#/home",
- "companyId": null
- },
- "ividence": {
- "name": "Ividence",
- "categoryId": 4,
- "url": "https://www.ividence.com/home/",
- "companyId": "sien"
- },
- "iwiw_widgets": {
- "name": "iWiW Widgets",
- "categoryId": 2,
- "url": "http://iwiw.hu",
- "companyId": "iwiw"
- },
- "ixi_digital": {
- "name": "IXI Digital",
- "categoryId": 4,
- "url": "http://www.equifax.com/home/en_us",
- "companyId": "equifax"
- },
- "ixquick.com": {
- "name": "ixquick",
- "categoryId": 8,
- "url": "https://www.ixquick.com/",
- "companyId": "startpage"
- },
- "izooto": {
- "name": "iZooto",
- "categoryId": 6,
- "url": "https://www.izooto.com/",
- "companyId": "izooto"
- },
- "j-list_affiliate_program": {
- "name": "J-List Affiliate Program",
- "categoryId": 4,
- "url": "http://www.jlist.com/page/affiliates.html",
- "companyId": "j-list"
- },
- "jaco": {
- "name": "Jaco",
- "categoryId": 6,
- "url": "https://www.walkme.com/",
- "companyId": "walkme"
- },
- "janrain": {
- "name": "Janrain",
- "categoryId": 6,
- "url": "http://www.janrain.com/",
- "companyId": "akamai"
- },
- "jeeng": {
- "name": "Jeeng",
- "categoryId": 4,
- "url": "https://jeeng.com/",
- "companyId": "jeeng"
- },
- "jeeng_widgets": {
- "name": "Jeeng Widgets",
- "categoryId": 4,
- "url": "https://jeeng.com/",
- "companyId": "jeeng"
- },
- "jet_interactive": {
- "name": "Jet Interactive",
- "categoryId": 6,
- "url": "http://www.jetinteractive.com.au/",
- "companyId": "jet_interactive"
- },
- "jetbrains": {
- "name": "JetBrains",
- "categoryId": 8,
- "url": "https://www.jetbrains.com/",
- "companyId": "jetbrains",
- "source": "AdGuard"
- },
- "jetlore": {
- "name": "Jetlore",
- "categoryId": 6,
- "url": "http://www.jetlore.com/",
- "companyId": "jetlore"
- },
- "jetpack": {
- "name": "Jetpack",
- "categoryId": 6,
- "url": "https://jetpack.com/",
- "companyId": "automattic"
- },
- "jetpack_digital": {
- "name": "Jetpack Digital",
- "categoryId": 6,
- "url": "http://www.jetpack.com/",
- "companyId": "jetpack_digital"
- },
- "jimdo.com": {
- "name": "jimdo.com",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "jink": {
- "name": "Jink",
- "categoryId": 4,
- "url": "http://www.jink.de/",
- "companyId": "jink"
- },
- "jirafe": {
- "name": "Jirafe",
- "categoryId": 6,
- "url": "http://jirafe.com/",
- "companyId": "jirafe"
- },
- "jivochat": {
- "name": "JivoSite",
- "categoryId": 2,
- "url": "https://www.jivochat.com/",
- "companyId": "jivochat"
- },
- "jivox": {
- "name": "Jivox",
- "categoryId": 4,
- "url": "http://www.jivox.com/",
- "companyId": "jivox"
- },
- "jobs_2_careers": {
- "name": "Jobs 2 Careers",
- "categoryId": 4,
- "url": "http://www.jobs2careers.com/",
- "companyId": "jobs_2_careers"
- },
- "joinhoney": {
- "name": "Honey",
- "categoryId": 8,
- "url": "https://www.joinhoney.com/",
- "companyId": null
- },
- "jornaya": {
- "name": "Jornaya",
- "categoryId": 6,
- "url": "http://leadid.com/",
- "companyId": "jornaya"
- },
- "jquery": {
- "name": "jQuery",
- "categoryId": 9,
- "url": "https://jquery.org/",
- "companyId": "js_foundation"
- },
- "js_communications": {
- "name": "JS Communications",
- "categoryId": 4,
- "url": "http://www.jssearch.net/",
- "companyId": "js_communications"
- },
- "jsdelivr": {
- "name": "jsDelivr",
- "categoryId": 9,
- "url": "https://www.jsdelivr.com/",
- "companyId": null
- },
- "jse_coin": {
- "name": "JSE Coin",
- "categoryId": 4,
- "url": "https://jsecoin.com/",
- "companyId": "jse_coin"
- },
- "jsuol.com.br": {
- "name": "jsuol.com.br",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "juggcash": {
- "name": "JuggCash",
- "categoryId": 3,
- "url": "http://www.juggcash.com",
- "companyId": "juggcash"
- },
- "juiceadv": {
- "name": "JuiceADV",
- "categoryId": 4,
- "url": "http://juiceadv.com/",
- "companyId": "juiceadv"
- },
- "juicyads": {
- "name": "JuicyAds",
- "categoryId": 3,
- "url": "http://www.juicyads.com/",
- "companyId": "juicyads"
- },
- "jumplead": {
- "name": "Jumplead",
- "categoryId": 6,
- "url": "https://jumplead.com/",
- "companyId": "jumplead"
- },
- "jumpstart_tagging_solutions": {
- "name": "Jumpstart Tagging Solutions",
- "categoryId": 6,
- "url": "http://www.hearst.com/",
- "companyId": "hearst"
- },
- "jumptap": {
- "name": "Jumptap",
- "categoryId": 4,
- "url": "http://www.jumptap.com/",
- "companyId": "verizon"
- },
- "jumptime": {
- "name": "JumpTime",
- "categoryId": 6,
- "url": "http://www.jumptime.com/",
- "companyId": "openx"
- },
- "just_answer": {
- "name": "Just Answer",
- "categoryId": 2,
- "url": "https://www.justanswer.com/",
- "companyId": "just_answer"
- },
- "just_premium": {
- "name": "Just Premium",
- "categoryId": 4,
- "url": "http://justpremium.com/",
- "companyId": "just_premium"
- },
- "just_relevant": {
- "name": "Just Relevant",
- "categoryId": 4,
- "url": "http://www.justrelevant.com/",
- "companyId": "just_relevant"
- },
- "jvc.gg": {
- "name": "Jeuxvideo CDN",
- "categoryId": 9,
- "url": "http://www.jeuxvideo.com/",
- "companyId": null
- },
- "jw_player": {
- "name": "JW Player",
- "categoryId": 0,
- "url": "https://www.jwplayer.com/",
- "companyId": "jw_player"
- },
- "jw_player_ad_solutions": {
- "name": "JW Player Ad Solutions",
- "categoryId": 4,
- "url": "http://www.longtailvideo.com/adsolution/",
- "companyId": "jw_player"
- },
- "kaeufersiegel.de": {
- "name": "Käufersiegel",
- "categoryId": 2,
- "url": "https://www.kaeufersiegel.de/",
- "companyId": null
- },
- "kairion.de": {
- "name": "kairion",
- "categoryId": 4,
- "url": "https://kairion.de/",
- "companyId": "prosieben_sat1"
- },
- "kaloo.ga": {
- "name": "Kalooga",
- "categoryId": 4,
- "url": "https://www.kalooga.com/",
- "companyId": "kalooga"
- },
- "kalooga_widget": {
- "name": "Kalooga Widget",
- "categoryId": 4,
- "url": "http://kalooga.com/",
- "companyId": "kalooga"
- },
- "kaltura": {
- "name": "Kaltura",
- "categoryId": 0,
- "url": "http://corp.kaltura.com/",
- "companyId": "kaltura"
- },
- "kameleoon": {
- "name": "Kameleoon",
- "categoryId": 6,
- "url": "http://www.kameleoon.com/",
- "companyId": "kameleoon"
- },
- "kampyle": {
- "name": "Medallia",
- "categoryId": 2,
- "url": "http://www.kampyle.com/",
- "companyId": "medallia"
- },
- "kanoodle": {
- "name": "Kanoodle",
- "categoryId": 4,
- "url": "http://www.kanoodle.com/",
- "companyId": "kanoodle"
- },
- "kantar_media": {
- "name": "Kantar Media",
- "categoryId": 4,
- "url": "https://www.kantarmedia.com/",
- "companyId": "wpp"
- },
- "karambasecurity": {
- "name": "Karamba Security",
- "categoryId": 8,
- "url": "https://karambasecurity.com/",
- "companyId": "karambasecurity",
- "source": "AdGuard"
- },
- "kargo": {
- "name": "Kargo",
- "categoryId": 4,
- "url": "http://www.kargo.com/",
- "companyId": "kargo"
- },
- "kaspersky-labs.com": {
- "name": "Kaspersky Labs",
- "categoryId": 12,
- "url": "https://www.kaspersky.com/",
- "companyId": "AO Kaspersky Lab"
- },
- "kataweb.it": {
- "name": "KataWeb",
- "categoryId": 4,
- "url": "http://www.kataweb.it/",
- "companyId": null
- },
- "katchup": {
- "name": "Katchup",
- "categoryId": 4,
- "url": "http://www.katchup.fr/",
- "companyId": "katchup"
- },
- "kauli": {
- "name": "Kauli",
- "categoryId": 4,
- "url": "http://kau.li/",
- "companyId": "kauli"
- },
- "kavanga": {
- "name": "Kavanga",
- "categoryId": 4,
- "url": "http://kavanga.ru/",
- "companyId": "kavanga"
- },
- "kayo_sports": {
- "name": "Kayo Sports",
- "categoryId": 0,
- "url": "https://kayosports.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "keen_io": {
- "name": "Keen IO",
- "categoryId": 6,
- "url": "https://keen.io",
- "companyId": "keen_io"
- },
- "kelkoo": {
- "name": "Kelkoo",
- "categoryId": 4,
- "url": "http://www.kelkoo.com/",
- "companyId": "kelkoo"
- },
- "kenshoo": {
- "name": "Kenshoo",
- "categoryId": 6,
- "url": "http://www.kenshoo.com/",
- "companyId": "kenshoo"
- },
- "keymetric": {
- "name": "KeyMetric",
- "categoryId": 6,
- "url": "http://keymetric.net/",
- "companyId": "keymetric"
- },
- "keytiles": {
- "name": "Keytiles",
- "categoryId": 6,
- "url": "http://keytiles.com/",
- "companyId": "keytiles"
- },
- "keywee": {
- "name": "Keywee",
- "categoryId": 6,
- "url": "https://keywee.co/",
- "companyId": "keywee"
- },
- "keywordmax": {
- "name": "KeywordMax",
- "categoryId": 4,
- "url": "http://www.keywordmax.com/",
- "companyId": "digital_river"
- },
- "khoros": {
- "name": "Khoros",
- "categoryId": 7,
- "url": "http://www.massrelevance.com/",
- "companyId": "khoros"
- },
- "khzbeucrltin.com": {
- "name": "khzbeucrltin.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "kickfactory": {
- "name": "Kickfactory",
- "categoryId": 4,
- "url": "https://kickfactory.com/",
- "companyId": "kickfactory"
- },
- "kickfire": {
- "name": "Kickfire",
- "categoryId": 4,
- "url": "http://www.visistat.com/",
- "companyId": "kickfire"
- },
- "kik": {
- "name": "Kik",
- "categoryId": 7,
- "url": "https://kik.com/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "king.com": {
- "name": "King.com",
- "categoryId": 4,
- "url": "http://www.king.com/",
- "companyId": "king.com"
- },
- "king_com": {
- "name": "King.com",
- "categoryId": 8,
- "url": "https://king.com/",
- "companyId": "activision_blizzard"
- },
- "kinja.com": {
- "name": "Kinja",
- "categoryId": 6,
- "url": "https://kinja.com/",
- "companyId": "gizmodo"
- },
- "kiosked": {
- "name": "Kiosked",
- "categoryId": 4,
- "url": "http://www.kiosked.com/",
- "companyId": "kiosked"
- },
- "kissmetrics.com": {
- "name": "Kissmetrics",
- "categoryId": 6,
- "url": "https://www.kissmetrics.com/",
- "companyId": "kissmetrics"
- },
- "kitara_media": {
- "name": "Kitara Media",
- "categoryId": 4,
- "url": "http://www.kitaramedia.com/",
- "companyId": "kitara_media"
- },
- "kixer": {
- "name": "Kixer",
- "categoryId": 4,
- "url": "http://www.kixer.com",
- "companyId": "kixer"
- },
- "klarna.com": {
- "name": "Klarna",
- "categoryId": 2,
- "url": "https://www.klarna.com/",
- "companyId": null
- },
- "klaviyo": {
- "name": "Klaviyo",
- "categoryId": 6,
- "url": "https://www.klaviyo.com/",
- "companyId": "klaviyo"
- },
- "klikki": {
- "name": "Klikki",
- "categoryId": 4,
- "url": "http://www.klikki.com/",
- "companyId": "klikki"
- },
- "kliksaya": {
- "name": "KlikSaya",
- "categoryId": 4,
- "url": "http://www.kliksaya.com",
- "companyId": "kliksaya"
- },
- "kmeleo": {
- "name": "Kméléo",
- "categoryId": 4,
- "url": "http://www.6peo.com/",
- "companyId": "6peo"
- },
- "knoopstat": {
- "name": "Knoopstat",
- "categoryId": 6,
- "url": "http://www.knoopstat.nl",
- "companyId": "knoopstat"
- },
- "knotch": {
- "name": "Knotch",
- "categoryId": 2,
- "url": "http://knotch.it",
- "companyId": "knotch"
- },
- "komoona": {
- "name": "Komoona",
- "categoryId": 4,
- "url": "http://www.komoona.com/",
- "companyId": "komoona"
- },
- "kontera_contentlink": {
- "name": "Kontera ContentLink",
- "categoryId": 4,
- "url": "http://www.kontera.com/",
- "companyId": "singtel"
- },
- "kontextr": {
- "name": "Kontextr",
- "categoryId": 4,
- "url": "https://www.kontextr.com/",
- "companyId": "kontext"
- },
- "kontextua": {
- "name": "Kontextua",
- "categoryId": 4,
- "url": "http://www.kontextua.com/",
- "companyId": "kontextua"
- },
- "korrelate": {
- "name": "Korrelate",
- "categoryId": 4,
- "url": "http://korrelate.com/",
- "companyId": "korrelate"
- },
- "kortx": {
- "name": "Kortx",
- "categoryId": 6,
- "url": "http://www.kortx.io/",
- "companyId": "kortx"
- },
- "kount": {
- "name": "Kount",
- "categoryId": 6,
- "url": "https://kount.com/",
- "companyId": null
- },
- "krux_digital": {
- "name": "Salesforce DMP",
- "categoryId": 4,
- "url": "https://www.salesforce.com/products/marketing-cloud/data-management/?mc=DMP",
- "companyId": "salesforce"
- },
- "kupona": {
- "name": "Kupona",
- "categoryId": 4,
- "url": "http://www.kupona-media.de/en/retargeting-and-performance-media-width-kupona",
- "companyId": "kupona"
- },
- "kxcdn.com": {
- "name": "Keycdn",
- "categoryId": 9,
- "url": "https://www.keycdn.com/",
- "companyId": null
- },
- "kyto": {
- "name": "Kyto",
- "categoryId": 6,
- "url": "https://www.kyto.com/",
- "companyId": "kyto"
- },
- "ladsp.com": {
- "name": "Logicad",
- "categoryId": 4,
- "url": "https://www.logicad.com/",
- "companyId": "logicad"
- },
- "lanista_concepts": {
- "name": "Lanista Concepts",
- "categoryId": 4,
- "url": "http://lanistaconcepts.com/",
- "companyId": "lanista_concepts"
- },
- "latimes": {
- "name": "Los Angeles Times",
- "categoryId": 8,
- "url": "http://www.latimes.com/",
- "companyId": "latimes"
- },
- "launch_darkly": {
- "name": "Launch Darkly",
- "categoryId": 5,
- "url": "https://launchdarkly.com/index.html",
- "companyId": "launch_darkly"
- },
- "launchbit": {
- "name": "LaunchBit",
- "categoryId": 4,
- "url": "https://www.launchbit.com/",
- "companyId": "launchbit"
- },
- "launchpad": {
- "name": "Launchpad",
- "categoryId": 8,
- "url": "https://launchpad.net/",
- "companyId": "canonical",
- "source": "AdGuard"
- },
- "layer-ad.org": {
- "name": "Layer-ADS.net",
- "categoryId": 4,
- "url": "http://layer-ads.net/",
- "companyId": null
- },
- "lazada": {
- "name": "Lazada",
- "categoryId": 4,
- "url": "https://www.lazada.com/",
- "companyId": "lazada"
- },
- "lcx_digital": {
- "name": "LCX Digital",
- "categoryId": 4,
- "url": "http://www.lcx.com/",
- "companyId": "lcx_digital"
- },
- "le_monde.fr": {
- "name": "Le Monde.fr",
- "categoryId": 8,
- "url": "http://www.lemonde.fr/",
- "companyId": "le_monde.fr"
- },
- "lead_liaison": {
- "name": "Lead Liaison",
- "categoryId": 6,
- "url": "https://www.leadliaison.com",
- "companyId": "lead_liaison"
- },
- "leadback": {
- "name": "Leadback",
- "categoryId": 6,
- "url": "http://leadback.ru/?utm_source=leadback_widget&utm_medium=eas-balt.ru&utm_campaign=self_ad",
- "companyId": "leadback"
- },
- "leaddyno": {
- "name": "LeadDyno",
- "categoryId": 4,
- "url": "http://www.leaddyno.com",
- "companyId": "leaddyno"
- },
- "leadforensics": {
- "name": "LeadForensics",
- "categoryId": 4,
- "url": "http://www.leadforensics.com/",
- "companyId": "lead_forensics"
- },
- "leadgenic": {
- "name": "LeadGENIC",
- "categoryId": 4,
- "url": "https://leadgenic.com/",
- "companyId": "leadgenic"
- },
- "leadhit": {
- "name": "LeadHit",
- "categoryId": 2,
- "url": "http://leadhit.ru/",
- "companyId": "leadhit"
- },
- "leadin": {
- "name": "Leadin",
- "categoryId": 6,
- "url": "https://www.hubspot.com/",
- "companyId": "hubspot"
- },
- "leading_reports": {
- "name": "Leading Reports",
- "categoryId": 4,
- "url": "https://www.leadingreports.de/",
- "companyId": "leading_reports"
- },
- "leadinspector": {
- "name": "LeadInspector",
- "categoryId": 6,
- "url": "https://www.leadinspector.de/",
- "companyId": "leadinspector"
- },
- "leadlander": {
- "name": "LeadLander",
- "categoryId": 6,
- "url": "http://www.leadlander.com/",
- "companyId": "leadlander"
- },
- "leadlife": {
- "name": "LeadLife",
- "categoryId": 2,
- "url": "http://leadlife.com/",
- "companyId": "leadlife"
- },
- "leadpages": {
- "name": "Leadpages",
- "categoryId": 6,
- "url": "https://www.leadpages.net/",
- "companyId": "leadpages"
- },
- "leadplace": {
- "name": "LeadPlace",
- "categoryId": 6,
- "url": "https://temelio.com",
- "companyId": "leadplace"
- },
- "leads_by_web.com": {
- "name": "Leads by Web.com",
- "categoryId": 4,
- "url": "http://www.leadsbyweb.com",
- "companyId": "web.com_group"
- },
- "leadscoreapp": {
- "name": "LeadScoreApp",
- "categoryId": 2,
- "url": "http://leadscoreapp.com",
- "companyId": "leadscoreapp"
- },
- "leadsius": {
- "name": "Leadsius",
- "categoryId": 4,
- "url": "http://www.leadsius.com/",
- "companyId": "leadsius"
- },
- "leady": {
- "name": "Leady",
- "categoryId": 4,
- "url": "http://www.leady.cz/",
- "companyId": "leady"
- },
- "leiki": {
- "name": "Leiki",
- "categoryId": 4,
- "url": "http://www.leiki.com",
- "companyId": "leiki"
- },
- "lengow": {
- "name": "Lengow",
- "categoryId": 4,
- "url": "http://www.lengow.com/",
- "companyId": "lengow"
- },
- "lenmit.com": {
- "name": "lenmit.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lentainform.com": {
- "name": "lentainform.com",
- "categoryId": 8,
- "url": "https://www.lentainform.com/",
- "companyId": null
- },
- "lenua.de": {
- "name": "Lenua System",
- "categoryId": 4,
- "url": "http://lenua.de/",
- "companyId": "synatix"
- },
- "let_reach": {
- "name": "Let Reach",
- "categoryId": 2,
- "url": "https://letreach.com/",
- "companyId": "let_reach"
- },
- "lets_encrypt": {
- "name": "Let's Encrypt",
- "categoryId": 5,
- "url": "https://letsencrypt.org/",
- "companyId": "isrg",
- "source": "AdGuard"
- },
- "letv": {
- "name": "LeTV",
- "categoryId": 6,
- "url": "http://www.le.com/",
- "companyId": "letv"
- },
- "level3_communications": {
- "name": "Level 3 Communications, Inc.",
- "categoryId": 8,
- "url": "http://www.level3.com/en/",
- "companyId": "level3_communications"
- },
- "lgads": {
- "name": "LG Ad Solutions",
- "categoryId": 4,
- "url": "https://lgads.tv/",
- "companyId": "lgcorp",
- "source": "AdGuard"
- },
- "lgtv": {
- "name": "LG TV",
- "categoryId": 8,
- "url": "https://www.lg.com/",
- "companyId": "lgcorp",
- "source": "AdGuard"
- },
- "licensebuttons.net": {
- "name": "licensebuttons.net",
- "categoryId": 9,
- "url": "https://licensebuttons.net/",
- "companyId": null
- },
- "lifestreet_media": {
- "name": "LifeStreet Media",
- "categoryId": 4,
- "url": "http://lifestreetmedia.com/",
- "companyId": "lifestreet_media"
- },
- "ligatus": {
- "name": "Ligatus",
- "categoryId": 4,
- "url": "http://www.ligatus.com/",
- "companyId": "outbrain"
- },
- "limk": {
- "name": "Limk",
- "categoryId": 4,
- "url": "https://limk.com/",
- "companyId": "limk"
- },
- "line_apps": {
- "name": "Line",
- "categoryId": 6,
- "url": "https://line.me/en-US/",
- "companyId": "line"
- },
- "linezing": {
- "name": "LineZing",
- "categoryId": 4,
- "url": "http://www.linezing.com/",
- "companyId": "linezing"
- },
- "linkbucks": {
- "name": "Linkbucks",
- "categoryId": 4,
- "url": "http://www.linkbucks.com/",
- "companyId": "linkbucks"
- },
- "linkconnector": {
- "name": "LinkConnector",
- "categoryId": 4,
- "url": "http://www.linkconnector.com",
- "companyId": "linkconnector"
- },
- "linkedin": {
- "name": "LinkedIn",
- "categoryId": 8,
- "url": "https://www.linkedin.com/",
- "companyId": "microsoft"
- },
- "linkedin_ads": {
- "name": "LinkedIn Ads",
- "categoryId": 4,
- "url": "http://www.linkedin.com/",
- "companyId": "microsoft"
- },
- "linkedin_analytics": {
- "name": "LinkedIn Analytics",
- "categoryId": 6,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "linkedin_marketing_solutions": {
- "name": "LinkedIn Marketing Solutions",
- "categoryId": 4,
- "url": "https://business.linkedin.com/marketing-solutions",
- "companyId": "microsoft"
- },
- "linkedin_widgets": {
- "name": "LinkedIn Widgets",
- "categoryId": 7,
- "url": "https://www.linkedin.com",
- "companyId": "microsoft"
- },
- "linker": {
- "name": "Linker",
- "categoryId": 4,
- "url": "https://linker.hr/",
- "companyId": "linker"
- },
- "linkprice": {
- "name": "LinkPrice",
- "categoryId": 4,
- "url": "http://www.linkprice.com/",
- "companyId": "linkprice"
- },
- "linkpulse": {
- "name": "Linkpulse",
- "categoryId": 6,
- "url": "http://www.linkpulse.com/",
- "companyId": "linkpulse"
- },
- "linksalpha": {
- "name": "LinksAlpha",
- "categoryId": 7,
- "url": "http://www.linksalpha.com",
- "companyId": "linksalpha"
- },
- "linksmart": {
- "name": "LinkSmart",
- "categoryId": 4,
- "url": "http://www.linksmart.com/",
- "companyId": "sovrn"
- },
- "linkstorm": {
- "name": "Linkstorm",
- "categoryId": 2,
- "url": "http://www.linkstorms.com/",
- "companyId": "linkstorm"
- },
- "linksynergy.com": {
- "name": "Rakuten LinkShare",
- "categoryId": 4,
- "url": "https://rakutenmarketing.com/affiliate",
- "companyId": "rakuten"
- },
- "linkup": {
- "name": "LinkUp",
- "categoryId": 6,
- "url": "http://www.linkup.com/",
- "companyId": "linkup"
- },
- "linkwise": {
- "name": "Linkwise",
- "categoryId": 4,
- "url": "http://linkwi.se/global-en/",
- "companyId": "linkwise"
- },
- "linkwithin": {
- "name": "LinkWithin",
- "categoryId": 7,
- "url": "http://www.linkwithin.com/",
- "companyId": "linkwithin"
- },
- "liquidm_technology_gmbh": {
- "name": "LiquidM Technology GmbH",
- "categoryId": 4,
- "url": "https://liquidm.com/",
- "companyId": "liquidm"
- },
- "liqwid": {
- "name": "Liqwid",
- "categoryId": 4,
- "url": "https://liqwid.com/",
- "companyId": "liqwid"
- },
- "list.ru": {
- "name": "Rating@Mail.Ru",
- "categoryId": 7,
- "url": "http://list.ru/",
- "companyId": "megafon"
- },
- "listrak": {
- "name": "Listrak",
- "categoryId": 2,
- "url": "http://www.listrak.com/",
- "companyId": "listrak"
- },
- "live2support": {
- "name": "Live2Support",
- "categoryId": 2,
- "url": "http://www.live2support.com/",
- "companyId": "live2support"
- },
- "live800": {
- "name": "Live800",
- "categoryId": 2,
- "url": "http://live800.com",
- "companyId": "live800"
- },
- "live_agent": {
- "name": "Live Agent",
- "categoryId": 2,
- "url": "https://www.ladesk.com/",
- "companyId": "liveagent"
- },
- "live_help_now": {
- "name": "Live Help Now",
- "categoryId": 2,
- "url": "http://www.livehelpnow.net/",
- "companyId": "live_help_now"
- },
- "live_intent": {
- "name": "Live Intent",
- "categoryId": 6,
- "url": "http://www.liveintent.com/",
- "companyId": "liveintent"
- },
- "live_journal": {
- "name": "Live Journal",
- "categoryId": 6,
- "url": "http://www.livejournal.com/",
- "companyId": "livejournal"
- },
- "liveadexchanger.com": {
- "name": "liveadexchanger.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "livechat": {
- "name": "LiveChat",
- "categoryId": 2,
- "url": "http://www.livechatinc.com",
- "companyId": "livechat"
- },
- "livechatnow": {
- "name": "LiveChatNow",
- "categoryId": 2,
- "url": "http://www.livechatnow.com/",
- "companyId": "livechatnow!"
- },
- "liveclicker": {
- "name": "Liveclicker",
- "categoryId": 2,
- "url": "http://www.liveclicker.com",
- "companyId": "liveclicker"
- },
- "livecounter": {
- "name": "Livecounter",
- "categoryId": 6,
- "url": "http://www.livecounter.dk/",
- "companyId": "livecounter"
- },
- "livefyre": {
- "name": "Livefyre",
- "categoryId": 1,
- "url": "http://www.livefyre.com/",
- "companyId": "adobe"
- },
- "liveinternet": {
- "name": "LiveInternet",
- "categoryId": 1,
- "url": "http://www.liveinternet.ru/",
- "companyId": "liveinternet"
- },
- "liveperson": {
- "name": "LivePerson",
- "categoryId": 2,
- "url": "http://www.liveperson.com/",
- "companyId": "liveperson"
- },
- "liveramp": {
- "name": "LiveRamp",
- "categoryId": 4,
- "url": "https://liveramp.com/",
- "companyId": "acxiom"
- },
- "livere": {
- "name": "LiveRe",
- "categoryId": 7,
- "url": "http://www.livere.com/",
- "companyId": "livere"
- },
- "livesportmedia.eu": {
- "name": "Livesport Media",
- "categoryId": 8,
- "url": "http://www.livesportmedia.eu/",
- "companyId": null
- },
- "livestream": {
- "name": "Livestream",
- "categoryId": 0,
- "url": "http://vimeo.com/",
- "companyId": "vimeo"
- },
- "livetex.ru": {
- "name": "LiveTex",
- "categoryId": 2,
- "url": "https://livetex.ru/",
- "companyId": "livetex"
- },
- "lkqd": {
- "name": "LKQD",
- "categoryId": 4,
- "url": "http://www.lkqd.com/",
- "companyId": "nexstar"
- },
- "loadbee.com": {
- "name": "Loadbee",
- "categoryId": 4,
- "url": "https://company.loadbee.com/de/loadbee-home",
- "companyId": null
- },
- "loadercdn.com": {
- "name": "loadercdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "loadsource.org": {
- "name": "loadsource.org",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "localytics": {
- "name": "Localytics",
- "categoryId": 101,
- "url": "https://uplandsoftware.com/localytics/",
- "companyId": "upland",
- "source": "AdGuard"
- },
- "lockerdome": {
- "name": "LockerDome",
- "categoryId": 7,
- "url": "https://lockerdome.com",
- "companyId": "lockerdome"
- },
- "lockerz_share": {
- "name": "AddToAny",
- "categoryId": 7,
- "url": "http://www.addtoany.com/",
- "companyId": "addtoany"
- },
- "logan_media": {
- "name": "Logan Media",
- "categoryId": 6,
- "url": "http://loganmedia.mobi/",
- "companyId": "logan_media"
- },
- "logdna": {
- "name": "LogDNA",
- "categoryId": 4,
- "url": "http://www.answerbook.com/",
- "companyId": "logdna"
- },
- "loggly": {
- "name": "Loggly",
- "categoryId": 6,
- "url": "http://loggly.com/",
- "companyId": "loggly"
- },
- "logly": {
- "name": "logly",
- "categoryId": 6,
- "url": "http://logly.co.jp/",
- "companyId": "logly"
- },
- "logsss.com": {
- "name": "logsss.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lomadee": {
- "name": "Lomadee",
- "categoryId": 4,
- "url": "http://lomadee.com",
- "companyId": "lomadee"
- },
- "longtail_video_analytics": {
- "name": "JW Player Analytics",
- "categoryId": 4,
- "url": "http://www.longtailvideo.com/",
- "companyId": "jw_player"
- },
- "loomia": {
- "name": "Loomia",
- "categoryId": 4,
- "url": "http://www.loomia.com/",
- "companyId": "loomia"
- },
- "loop11": {
- "name": "Loop11",
- "categoryId": 6,
- "url": "https://360i.com/",
- "companyId": "360i"
- },
- "loopfuse_oneview": {
- "name": "LoopFuse OneView",
- "categoryId": 4,
- "url": "http://www.loopfuse.com/",
- "companyId": "loopfuse"
- },
- "lotame": {
- "name": "Lotame",
- "categoryId": 4,
- "url": "http://www.lotame.com/",
- "companyId": "lotame"
- },
- "lottex_inc": {
- "name": "vidcpm.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lucid": {
- "name": "Lucid",
- "categoryId": 4,
- "url": "https://luc.id/",
- "companyId": "luc.id"
- },
- "lucid_media": {
- "name": "Lucid Media",
- "categoryId": 4,
- "url": "http://www.lucidmedia.com/",
- "companyId": "singtel"
- },
- "lucini": {
- "name": "Lucini",
- "categoryId": 4,
- "url": "http://www.lucinilucini.com/",
- "companyId": "lucini_&_lucini_communications"
- },
- "lucky_orange": {
- "name": "Lucky Orange",
- "categoryId": 6,
- "url": "http://www.luckyorange.com/",
- "companyId": "lucky_orange"
- },
- "luckypushh.com": {
- "name": "luckypushh.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "lxr100": {
- "name": "LXR100",
- "categoryId": 4,
- "url": "http://www.netelixir.com/lxr100_PPC_management_tool.html",
- "companyId": "netelixir"
- },
- "lynchpin_analytics": {
- "name": "Lynchpin Analytics",
- "categoryId": 4,
- "url": "http://www.lynchpin.com/",
- "companyId": "lynchpin_analytics"
- },
- "lytics": {
- "name": "Lytics",
- "categoryId": 6,
- "url": "https://www.lytics.com/",
- "companyId": "lytics"
- },
- "lyuoaxruaqdo.com": {
- "name": "lyuoaxruaqdo.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "m-pathy": {
- "name": "m-pathy",
- "categoryId": 4,
- "url": "http://www.m-pathy.com/",
- "companyId": "m-pathy"
- },
- "m._p._newmedia": {
- "name": "M. P. NEWMEDIA",
- "categoryId": 4,
- "url": "http://www.mp-newmedia.com/",
- "companyId": "sticky"
- },
- "m4n": {
- "name": "M4N",
- "categoryId": 4,
- "url": "http://www.zanox.com/us/",
- "companyId": "axel_springer"
- },
- "mad_ads_media": {
- "name": "Mad Ads Media",
- "categoryId": 4,
- "url": "http://www.madadsmedia.com/",
- "companyId": "mad_ads_media"
- },
- "madeleine.de": {
- "name": "madeleine.de",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "madison_logic": {
- "name": "Madison Logic",
- "categoryId": 4,
- "url": "http://www.madisonlogic.com/",
- "companyId": "madison_logic"
- },
- "madnet": {
- "name": "MADNET",
- "categoryId": 4,
- "url": "http://madnet.ru/en",
- "companyId": "madnet"
- },
- "mads": {
- "name": "MADS",
- "categoryId": 4,
- "url": "http://www.mads.com/",
- "companyId": "mads"
- },
- "magna_advertise": {
- "name": "Magna Advertise",
- "categoryId": 4,
- "url": "http://magna.ru/",
- "companyId": "magna_advertise"
- },
- "magnetic": {
- "name": "Magnetic",
- "categoryId": 4,
- "url": "http://www.magnetic.is",
- "companyId": "magnetic"
- },
- "magnetise_group": {
- "name": "Magnetise Group",
- "categoryId": 4,
- "url": "http://magnetisegroup.com/",
- "companyId": "magnetise_group"
- },
- "magnify360": {
- "name": "Magnify360",
- "categoryId": 6,
- "url": "http://www.magnify360.com/",
- "companyId": "magnify360"
- },
- "magnuum.com": {
- "name": "magnuum.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mail.ru_banner": {
- "name": "Mail.Ru Banner Network",
- "categoryId": 4,
- "url": "http://mail.ru/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "mail.ru_counter": {
- "name": "Mail.Ru Counter",
- "categoryId": 2,
- "url": "http://mail.ru/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "mail.ru_group": {
- "name": "Mail.Ru Group",
- "categoryId": 7,
- "url": "http://mail.ru/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "mailchimp_tracking": {
- "name": "MailChimp Tracking",
- "categoryId": 4,
- "url": "http://mailchimp.com/",
- "companyId": "mailchimp"
- },
- "mailerlite.com": {
- "name": "Mailerlite",
- "categoryId": 10,
- "url": "https://www.mailerlite.com/",
- "companyId": "mailerlite"
- },
- "mailtrack.io": {
- "name": "MailTrack.io",
- "categoryId": 4,
- "url": "https://mailtrack.io",
- "companyId": "mailtrack"
- },
- "mainadv": {
- "name": "mainADV",
- "categoryId": 4,
- "url": "http://www.mainadv.com/",
- "companyId": "mainadv"
- },
- "makazi": {
- "name": "Makazi",
- "categoryId": 4,
- "url": "http://www.makazi.com/en/",
- "companyId": "makazi_group"
- },
- "makeappdev.xyz": {
- "name": "makeappdev.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "makesource.cool": {
- "name": "makesource.cool",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mango": {
- "name": "Mango",
- "categoryId": 4,
- "url": "https://www.mango-office.ru/",
- "companyId": "mango_office"
- },
- "manycontacts": {
- "name": "ManyContacts",
- "categoryId": 4,
- "url": "https://www.manycontacts.com/",
- "companyId": "manycontacts"
- },
- "mapandroute.de": {
- "name": "Map and Route",
- "categoryId": 2,
- "url": "http://www.mapandroute.de/",
- "companyId": null
- },
- "mapbox": {
- "name": "Mapbox",
- "categoryId": 2,
- "url": "https://www.mapbox.com/",
- "companyId": null
- },
- "maploco": {
- "name": "MapLoco",
- "categoryId": 4,
- "url": "http://www.maploco.com/",
- "companyId": "maploco"
- },
- "marchex": {
- "name": "Marchex",
- "categoryId": 4,
- "url": "http://www.industrybrains.com/",
- "companyId": "marchex"
- },
- "marimedia": {
- "name": "Marimedia",
- "categoryId": 4,
- "url": "http://www.marimedia.net/",
- "companyId": "tremor_video"
- },
- "marin_search_marketer": {
- "name": "Marin Search Marketer",
- "categoryId": 4,
- "url": "http://www.marinsoftware.com/",
- "companyId": "marin_software"
- },
- "mark_+_mini": {
- "name": "Mark & Mini",
- "categoryId": 4,
- "url": "http://www.markandmini.com/index.cfm",
- "companyId": "edm_group"
- },
- "market_thunder": {
- "name": "Market Thunder",
- "categoryId": 4,
- "url": "https://www.makethunder.com/",
- "companyId": "market_thunder"
- },
- "marketgid": {
- "name": "MarketGid",
- "categoryId": 4,
- "url": "http://www.mgid.com/",
- "companyId": "marketgid_usa"
- },
- "marketing_automation": {
- "name": "Marketing Automation",
- "categoryId": 4,
- "url": "https://en.frodx.com",
- "companyId": "frodx"
- },
- "marketo": {
- "name": "Marketo",
- "categoryId": 4,
- "url": "http://www.marketo.com/",
- "companyId": "marketo"
- },
- "markmonitor": {
- "name": "MarkMonitor",
- "categoryId": 4,
- "url": "https://www.markmonitor.com/",
- "companyId": "markmonitor",
- "source": "AdGuard"
- },
- "marktest": {
- "name": "Marktest",
- "categoryId": 4,
- "url": "http://www.marktest.com/",
- "companyId": "marktest_group"
- },
- "marshadow.io": {
- "name": "marshadow.io",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "martini_media": {
- "name": "Martini Media",
- "categoryId": 4,
- "url": "http://martinimediainc.com/",
- "companyId": "martini_media"
- },
- "maru-edu": {
- "name": "Maru-EDU",
- "categoryId": 2,
- "url": "https://www.maruedr.com",
- "companyId": "maruedr"
- },
- "marvellous_machine": {
- "name": "Marvellous Machine",
- "categoryId": 6,
- "url": "https://www.marvellousmachine.net/",
- "companyId": "marvellous_machine"
- },
- "master_banner_network": {
- "name": "Master Banner Network",
- "categoryId": 4,
- "url": "http://www.mbn.com.ua/",
- "companyId": "master_banner_network"
- },
- "mastertarget": {
- "name": "MasterTarget",
- "categoryId": 4,
- "url": "http://mastertarget.ru/",
- "companyId": "mastertarget"
- },
- "matelso": {
- "name": "Matelso",
- "categoryId": 6,
- "url": "https://www.matelso.de",
- "companyId": "matelso"
- },
- "mather_analytics": {
- "name": "Mather Analytics",
- "categoryId": 6,
- "url": "https://www.mathereconomics.com/",
- "companyId": "mather_economics"
- },
- "mathjax.org": {
- "name": "MathJax",
- "categoryId": 9,
- "url": "https://www.mathjax.org/",
- "companyId": null
- },
- "matiro": {
- "name": "Matiro",
- "categoryId": 6,
- "url": "http://matiro.com/",
- "companyId": "matiro"
- },
- "matomo": {
- "name": "Matomo",
- "categoryId": 6,
- "url": "https://matomo.org/s",
- "companyId": "matomo"
- },
- "matomy_market": {
- "name": "Matomy Market",
- "categoryId": 4,
- "url": "http://www.matomymarket.com/",
- "companyId": "matomy_media"
- },
- "matrix": {
- "name": "Matrix",
- "categoryId": 5,
- "url": "https://matrix.org/",
- "companyId": "matrix",
- "source": "AdGuard"
- },
- "maxbounty": {
- "name": "MaxBounty",
- "categoryId": 5,
- "url": "http://www.maxbounty.com/",
- "companyId": "maxbounty"
- },
- "maxcdn": {
- "name": "MaxCDN",
- "categoryId": 9,
- "url": "https://www.maxcdn.com/",
- "companyId": null
- },
- "maxlab": {
- "name": "Maxlab",
- "categoryId": 4,
- "url": "http://maxlab.ru",
- "companyId": "maxlab"
- },
- "maxmind": {
- "name": "MaxMind",
- "categoryId": 4,
- "url": "http://www.maxmind.com/",
- "companyId": "maxmind"
- },
- "maxonclick_com": {
- "name": "maxonclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "maxpoint_interactive": {
- "name": "MaxPoint Interactive",
- "categoryId": 4,
- "url": "http://www.maxpointinteractive.com/",
- "companyId": "maxpoint_interactive"
- },
- "maxymiser": {
- "name": "Oracle Maxymiser",
- "categoryId": 4,
- "url": "https://www.oracle.com/marketingcloud/products/testing-and-optimization/index.html",
- "companyId": "oracle"
- },
- "mbr_targeting": {
- "name": "mbr targeting",
- "categoryId": 4,
- "url": "https://mbr-targeting.com/",
- "companyId": "stroer"
- },
- "mbuy": {
- "name": "MBuy",
- "categoryId": 4,
- "url": "http://www.adbuyer.com/",
- "companyId": "mbuy"
- },
- "mcabi": {
- "name": "mCabi",
- "categoryId": 4,
- "url": "https://mcabi.mcloudglobal.com/#",
- "companyId": "mcabi"
- },
- "mcafee_secure": {
- "name": "McAfee Secure",
- "categoryId": 5,
- "url": "http://www.mcafeesecure.com/us/",
- "companyId": "mcafee"
- },
- "mconet": {
- "name": "MCOnet",
- "categoryId": 4,
- "url": "http://mconet.biz/",
- "companyId": "mconet"
- },
- "mdotlabs": {
- "name": "MdotLabs",
- "categoryId": 4,
- "url": "http://www.mdotlabs.com/",
- "companyId": "comscore"
- },
- "media-clic": {
- "name": "Media-clic",
- "categoryId": 4,
- "url": "http://www.media-clic.com/",
- "companyId": "media-click"
- },
- "media-imdb.com": {
- "name": "IMDB CDN",
- "categoryId": 9,
- "url": "https://www.imdb.com/",
- "companyId": "amazon_associates"
- },
- "media.net": {
- "name": "Media.net",
- "categoryId": 4,
- "url": "http://www.media.net/",
- "companyId": "media.net"
- },
- "media_impact": {
- "name": "Media Impact",
- "categoryId": 4,
- "url": "https://mediaimpact.de/index.html",
- "companyId": "media_impact"
- },
- "media_innovation_group": {
- "name": "Xaxis",
- "categoryId": 4,
- "url": "https://www.xaxis.com/",
- "companyId": "media_innovation_group"
- },
- "media_today": {
- "name": "Media Today",
- "categoryId": 4,
- "url": "http://mediatoday.ru/",
- "companyId": "media_today"
- },
- "mediaad": {
- "name": "MediaAd",
- "categoryId": 4,
- "url": "https://mediaad.org",
- "companyId": "mediaad"
- },
- "mediaglu": {
- "name": "MediaGlu",
- "categoryId": 4,
- "url": "https://www.mediaglu.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "mediahub": {
- "name": "MediaHub",
- "categoryId": 4,
- "url": "http://www.mediahub.com/",
- "companyId": "mediahub"
- },
- "medialab": {
- "name": "MediaLab.AI Inc.",
- "categoryId": 8,
- "url": "https://medialab.la/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "medialand": {
- "name": "Medialand",
- "categoryId": 4,
- "url": "http://medialand.ru",
- "companyId": "medialand"
- },
- "medialead": {
- "name": "Medialead",
- "categoryId": 4,
- "url": "https://www.medialead.de/",
- "companyId": "the_reach_group"
- },
- "mediamath": {
- "name": "MediaMath",
- "categoryId": 4,
- "url": "http://www.mediamath.com/",
- "companyId": "mediamath"
- },
- "mediametrics": {
- "name": "Mediametrics",
- "categoryId": 7,
- "url": "http://mediametrics.ru",
- "companyId": "mediametrics"
- },
- "median": {
- "name": "Median",
- "categoryId": 4,
- "url": "http://median.hu",
- "companyId": "median"
- },
- "mediapass": {
- "name": "MediaPass",
- "categoryId": 4,
- "url": "http://www.mediapass.com/",
- "companyId": "mediapass"
- },
- "mediapost_communications": {
- "name": "Mediapost Communications",
- "categoryId": 6,
- "url": "https://vrm.mediapostcommunication.net/",
- "companyId": "mediapost_communications"
- },
- "mediarithmics.com": {
- "name": "Mediarithmics",
- "categoryId": 4,
- "url": "http://www.mediarithmics.com/en/",
- "companyId": "mediarithmics"
- },
- "mediascope": {
- "name": "Mediascope",
- "categoryId": 6,
- "url": "http://mediascope.net/",
- "companyId": "mediascope"
- },
- "mediashakers": {
- "name": "MediaShakers",
- "categoryId": 4,
- "url": "http://www.mediashakers.com/",
- "companyId": "mediashakers"
- },
- "mediashift": {
- "name": "MediaShift",
- "categoryId": 4,
- "url": "http://www.mediashift.com/",
- "companyId": "mediashift"
- },
- "mediator.media": {
- "name": "Mediator",
- "categoryId": 6,
- "url": "https://mediator.media/",
- "companyId": "mycom_bv"
- },
- "mediav": {
- "name": "MediaV",
- "categoryId": 4,
- "url": "https://www.mediav.com/",
- "companyId": "mediav"
- },
- "mediawhiz": {
- "name": "Mediawhiz",
- "categoryId": 4,
- "url": "http://www.mediawhiz.com/",
- "companyId": "matomy_media"
- },
- "medigo": {
- "name": "Medigo",
- "categoryId": 4,
- "url": "https://www.mediego.com/en/",
- "companyId": "mediego"
- },
- "medley": {
- "name": "Medley",
- "categoryId": 4,
- "url": "http://medley.com/",
- "companyId": "friendfinder_networks"
- },
- "medyanet": {
- "name": "MedyaNet",
- "categoryId": 4,
- "url": "http://www.medyanet.com.tr/",
- "companyId": "medyanet"
- },
- "meebo_bar": {
- "name": "Meebo Bar",
- "categoryId": 7,
- "url": "http://bar.meebo.com/",
- "companyId": "google"
- },
- "meetrics": {
- "name": "Meetrics",
- "categoryId": 4,
- "url": "http://www.meetrics.de/",
- "companyId": "meetrics"
- },
- "megaindex": {
- "name": "MegaIndex",
- "categoryId": 4,
- "url": "http://www.megaindex.ru",
- "companyId": "megaindex"
- },
- "meganz": {
- "name": "Mega Ltd.",
- "categoryId": 8,
- "url": "https://mega.io/",
- "companyId": "meganz",
- "source": "AdGuard"
- },
- "mein-bmi.com": {
- "name": "mein-bmi.com",
- "categoryId": 12,
- "url": "https://www.mein-bmi.com/",
- "companyId": null
- },
- "melissa": {
- "name": "Melissa",
- "categoryId": 6,
- "url": "https://www.melissa.com/",
- "companyId": "melissa_global_intelligence"
- },
- "melt": {
- "name": "Melt",
- "categoryId": 4,
- "url": "http://meltdsp.com/",
- "companyId": "melt"
- },
- "menlo": {
- "name": "Menlo",
- "categoryId": 4,
- "url": "http://www.menlotechnologies.cn/",
- "companyId": "menlotechnologies"
- },
- "mentad": {
- "name": "MentAd",
- "categoryId": 4,
- "url": "http://www.mentad.com/",
- "companyId": "mentad"
- },
- "mercado": {
- "name": "Mercado",
- "categoryId": 4,
- "url": "https://www.mercadolivre.com.br/",
- "companyId": "mercado_livre"
- },
- "merchantadvantage": {
- "name": "MerchantAdvantage",
- "categoryId": 4,
- "url": "http://www.merchantadvantage.com/channelmanagement.cfm",
- "companyId": "merchantadvantage"
- },
- "merchenta": {
- "name": "Merchenta",
- "categoryId": 4,
- "url": "http://www.merchenta.com/",
- "companyId": "merchenta"
- },
- "mercury_media": {
- "name": "Mercury Media",
- "categoryId": 4,
- "url": "http://trackingsoft.com/",
- "companyId": "mercury_media"
- },
- "merkle_research": {
- "name": "Merkle Research",
- "categoryId": 6,
- "url": "http://www.dentsuaegisnetwork.com/",
- "companyId": "dentsu_aegis_network"
- },
- "merkle_rkg": {
- "name": "Merkle RKG",
- "categoryId": 6,
- "url": "https://www.merkleinc.com/what-we-do/digital-agency-services/rkg-now-fully-integrated-merkle",
- "companyId": "dentsu_aegis_network"
- },
- "messenger.com": {
- "name": "Facebook Messenger",
- "categoryId": 7,
- "url": "https://messenger.com",
- "companyId": "facebook"
- },
- "meta_network": {
- "name": "Meta Network",
- "categoryId": 7,
- "url": "http://www.metanetwork.com/",
- "companyId": "meta_network"
- },
- "metaffiliation.com": {
- "name": "Netaffiliation",
- "categoryId": 4,
- "url": "http://netaffiliation.com/",
- "companyId": "kwanko"
- },
- "metapeople": {
- "name": "Metapeople",
- "categoryId": 4,
- "url": "http://www.metapeople.com/us/",
- "companyId": "metapeople"
- },
- "metrigo": {
- "name": "Metrigo",
- "categoryId": 4,
- "url": "http://metrigo.com/",
- "companyId": "metrigo"
- },
- "metriweb": {
- "name": "MetriWeb",
- "categoryId": 4,
- "url": "http://www.metriware.be/",
- "companyId": "metriware"
- },
- "miaozhen": {
- "name": "Miaozhen",
- "categoryId": 4,
- "url": "http://miaozhen.com/en/index.html",
- "companyId": "miaozhen"
- },
- "microad": {
- "name": "MicroAd",
- "categoryId": 4,
- "url": "https://www.microad.co.jp/",
- "companyId": "microad"
- },
- "microsoft": {
- "name": "Microsoft Services",
- "categoryId": 8,
- "url": "http://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "microsoft_adcenter_conversion": {
- "name": "Microsoft adCenter Conversion",
- "categoryId": 4,
- "url": "https://adcenter.microsoft.com/",
- "companyId": "microsoft"
- },
- "microsoft_analytics": {
- "name": "Microsoft Analytics",
- "categoryId": 4,
- "url": "https://adcenter.microsoft.com",
- "companyId": "microsoft"
- },
- "microsoft_clarity": {
- "name": "Microsoft Clarity",
- "categoryId": 6,
- "url": "https://clarity.microsoft.com/",
- "companyId": "microsoft"
- },
- "mindset_media": {
- "name": "Mindset Media",
- "categoryId": 4,
- "url": "http://www.mindset-media.com/",
- "companyId": "google"
- },
- "mindspark": {
- "name": "Mindspark",
- "categoryId": 6,
- "url": "http://www.mindspark.com/",
- "companyId": "iac_apps"
- },
- "mindviz_tracker": {
- "name": "MindViz Tracker",
- "categoryId": 4,
- "url": "http://mvtracker.com/",
- "companyId": "mindviz"
- },
- "minewhat": {
- "name": "MineWhat",
- "categoryId": 4,
- "url": "http://www.minewhat.com",
- "companyId": "minewhat"
- },
- "mints_app": {
- "name": "Mints App",
- "categoryId": 2,
- "url": "https://mintsapp.io/",
- "companyId": "mints_app"
- },
- "minute.ly": {
- "name": "minute.ly",
- "categoryId": 0,
- "url": "http://minute.ly/",
- "companyId": "minute.ly"
- },
- "minute.ly_video": {
- "name": "minute.ly video",
- "categoryId": 0,
- "url": "http://minute.ly/",
- "companyId": "minute.ly"
- },
- "mirando": {
- "name": "Mirando",
- "categoryId": 4,
- "url": "http://mirando.de",
- "companyId": "mirando"
- },
- "mirtesen.ru": {
- "name": "mirtesen.ru",
- "categoryId": 7,
- "url": "https://mirtesen.ru/",
- "companyId": null
- },
- "mister_bell": {
- "name": "Mister Bell",
- "categoryId": 4,
- "url": "http://misterbell.fr/",
- "companyId": "mister_bell"
- },
- "mixi": {
- "name": "mixi",
- "categoryId": 7,
- "url": "http://mixi.jp/",
- "companyId": "mixi"
- },
- "mixpanel": {
- "name": "Mixpanel",
- "categoryId": 6,
- "url": "http://mixpanel.com/",
- "companyId": "mixpanel"
- },
- "mixpo": {
- "name": "Mixpo",
- "categoryId": 4,
- "url": "http://dynamicvideoad.mixpo.com/",
- "companyId": "mixpo"
- },
- "mluvii": {
- "name": "Mluvii",
- "categoryId": 2,
- "url": "https://www.mluvii.com",
- "companyId": "mluvii"
- },
- "mncdn.com": {
- "name": "MediaNova CDN",
- "categoryId": 9,
- "url": "https://www.medianova.com/",
- "companyId": null
- },
- "moat": {
- "name": "Moat",
- "categoryId": 4,
- "url": "http://www.moat.com/",
- "companyId": "oracle"
- },
- "mobicow": {
- "name": "Mobicow",
- "categoryId": 4,
- "url": "http://www.mobicow.com/",
- "companyId": "mobicow"
- },
- "mobify": {
- "name": "Mobify",
- "categoryId": 4,
- "url": "http://www.mobify.com/",
- "companyId": "mobify"
- },
- "mobtrks.com": {
- "name": "mobtrks.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "mocean_mobile": {
- "name": "mOcean Mobile",
- "categoryId": 4,
- "url": "http://www.moceanmobile.com/",
- "companyId": "pubmatic"
- },
- "mochapp": {
- "name": "MoChapp",
- "categoryId": 2,
- "url": "http://www.mochapp.com/",
- "companyId": "mochapp"
- },
- "modern_impact": {
- "name": "Modern Impact",
- "categoryId": 4,
- "url": "http://www.modernimpact.com/",
- "companyId": "modern_impact"
- },
- "modernus": {
- "name": "Modernus",
- "categoryId": 6,
- "url": "http://www.modernus.is",
- "companyId": "modernus"
- },
- "modulepush.com": {
- "name": "modulepush.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "mogo_interactive": {
- "name": "Mogo Interactive",
- "categoryId": 4,
- "url": "http://www.mogomarketing.com/",
- "companyId": "mogo_interactive"
- },
- "mokono_analytics": {
- "name": "Mokono Analytics",
- "categoryId": 4,
- "url": "http://www.populis.com",
- "companyId": "populis"
- },
- "monero_miner": {
- "name": "Monero Miner",
- "categoryId": 8,
- "url": "http://devappgrant.space/",
- "companyId": null
- },
- "monetate": {
- "name": "Monetate",
- "categoryId": 6,
- "url": "http://monetate.com",
- "companyId": "monetate"
- },
- "monetize_me": {
- "name": "Monetize Me",
- "categoryId": 4,
- "url": "http://www.monetize-me.com/",
- "companyId": "monetize_me"
- },
- "moneytizer": {
- "name": "Moneytizer",
- "categoryId": 4,
- "url": "https://www.themoneytizer.com/",
- "companyId": "the_moneytizer"
- },
- "mongoose_metrics": {
- "name": "Mongoose Metrics",
- "categoryId": 4,
- "url": "http://www.mongoosemetrics.com/",
- "companyId": "mongoose_metrics"
- },
- "monitis": {
- "name": "Monitis",
- "categoryId": 6,
- "url": "http://www.monitis.com/",
- "companyId": "monitis"
- },
- "monitus": {
- "name": "Monitus",
- "categoryId": 6,
- "url": "http://www.monitus.net/",
- "companyId": "monitus"
- },
- "monotype_gmbh": {
- "name": "Monotype GmbH",
- "categoryId": 9,
- "url": "http://www.monotype.com/",
- "companyId": "monotype"
- },
- "monotype_imaging": {
- "name": "Fonts.com Store",
- "categoryId": 2,
- "url": "https://www.fonts.com/",
- "companyId": "monotype"
- },
- "monsido": {
- "name": "Monsido",
- "categoryId": 6,
- "url": "https://monsido.com/",
- "companyId": "monsido"
- },
- "monster_advertising": {
- "name": "Monster Advertising",
- "categoryId": 4,
- "url": "http://www.monster.com/",
- "companyId": "monster_worldwide"
- },
- "mooxar": {
- "name": "Mooxar",
- "categoryId": 4,
- "url": "http://mooxar.com/",
- "companyId": "mooxar"
- },
- "mopinion.com": {
- "name": "Mopinion",
- "categoryId": 2,
- "url": "https://mopinion.com/",
- "companyId": "mopinion"
- },
- "mopub": {
- "name": "MoPub",
- "categoryId": 4,
- "url": "https://www.mopub.com/",
- "companyId": "twitter"
- },
- "more_communication": {
- "name": "More Communication",
- "categoryId": 4,
- "url": "http://www.more-com.co.jp/",
- "companyId": "more_communication"
- },
- "moreads": {
- "name": "moreAds",
- "categoryId": 4,
- "url": "https://www.moras.jp",
- "companyId": "moreads"
- },
- "motigo_webstats": {
- "name": "Motigo Webstats",
- "categoryId": 7,
- "url": "http://webstats.motigo.com/",
- "companyId": "motigo"
- },
- "motionpoint": {
- "name": "MotionPoint",
- "categoryId": 6,
- "url": "http://www.motionpoint.com/",
- "companyId": "motionpoint_corporation"
- },
- "mouseflow": {
- "name": "Mouseflow",
- "categoryId": 6,
- "url": "http://mouseflow.com/",
- "companyId": "mouseflow"
- },
- "mousestats": {
- "name": "MouseStats",
- "categoryId": 4,
- "url": "http://www.mousestats.com/",
- "companyId": "mousestats"
- },
- "mousetrace": {
- "name": "MouseTrace",
- "categoryId": 6,
- "url": "http://www.mousetrace.com/",
- "companyId": "mousetrace"
- },
- "mov.ad": {
- "name": "Mov.ad ",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "movable_ink": {
- "name": "Movable Ink",
- "categoryId": 2,
- "url": "https://movableink.com/",
- "companyId": "movable_ink"
- },
- "movable_media": {
- "name": "Movable Media",
- "categoryId": 4,
- "url": "http://www.movablemedia.com/",
- "companyId": "movable_media"
- },
- "moz": {
- "name": "Moz",
- "categoryId": 8,
- "url": "https://moz.com/",
- "companyId": null
- },
- "mozilla": {
- "name": "Mozilla Foundation",
- "categoryId": 8,
- "url": "https://www.mozilla.org/",
- "companyId": "mozilla",
- "source": "AdGuard"
- },
- "mozoo": {
- "name": "MoZoo",
- "categoryId": 4,
- "url": "http://mozoo.com/",
- "companyId": "mozoo"
- },
- "mrp": {
- "name": "MRP",
- "categoryId": 4,
- "url": "https://www.mrpfd.com/",
- "companyId": "mrp"
- },
- "mrpdata": {
- "name": "MRP",
- "categoryId": 6,
- "url": "http://mrpdata.com/Account/Login?ReturnUrl=%2F",
- "companyId": "fifth_story"
- },
- "mrskincash": {
- "name": "MrSkinCash",
- "categoryId": 3,
- "url": "http://mrskincash.com/",
- "companyId": "mrskincash.com"
- },
- "msedge": {
- "name": "Microsoft Edge",
- "categoryId": 8,
- "url": "https://www.microsoft.com/en-us/edge",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "msn": {
- "name": "Microsoft Network",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "muscula": {
- "name": "Muscula",
- "categoryId": 4,
- "url": "https://www.universe-surf.de/",
- "companyId": "universe_surf"
- },
- "mux_inc": {
- "name": "Mux",
- "categoryId": 0,
- "url": "https://mux.com/",
- "companyId": "mux_inc"
- },
- "mybloglog": {
- "name": "MyBlogLog",
- "categoryId": 7,
- "url": "http://www.mybloglog.com/",
- "companyId": "verizon"
- },
- "mybuys": {
- "name": "MyBuys",
- "categoryId": 4,
- "url": "http://www.mybuys.com/",
- "companyId": "magnetic"
- },
- "mycdn.me": {
- "name": "Mail.Ru CDN",
- "categoryId": 9,
- "url": "https://corp.megafon.com/",
- "companyId": "megafon"
- },
- "mycliplister.com": {
- "name": "Cliplister",
- "categoryId": 2,
- "url": "https://www.cliplister.com/",
- "companyId": null
- },
- "mycounter.ua": {
- "name": "MyCounter.ua",
- "categoryId": 6,
- "url": "http://mycounter.ua",
- "companyId": "mycounter.ua"
- },
- "myfonts": {
- "name": "MyFonts",
- "categoryId": 6,
- "url": "http://www.myfonts.com/",
- "companyId": "myfonts"
- },
- "myfonts_counter": {
- "name": "MyFonts",
- "categoryId": 6,
- "url": "http://www.myfonts.com/",
- "companyId": "myfonts"
- },
- "mypagerank": {
- "name": "MyPagerank",
- "categoryId": 6,
- "url": "http://www.mypagerank.net/",
- "companyId": "mypagerank"
- },
- "mystat": {
- "name": "MyStat",
- "categoryId": 7,
- "url": "http://mystat.hu/",
- "companyId": "myst_statistics"
- },
- "mythings": {
- "name": "myThings",
- "categoryId": 4,
- "url": "http://www.mythings.com/",
- "companyId": "mythings"
- },
- "mytop_counter": {
- "name": "Mytop Counter",
- "categoryId": 7,
- "url": "http://mytop-in.net/",
- "companyId": "mytop-in"
- },
- "nab": {
- "name": "National Australia Bank",
- "categoryId": 8,
- "url": "https://www.nab.com.au/",
- "companyId": "nab",
- "source": "AdGuard"
- },
- "nakanohito.jp": {
- "name": "Nakanohito",
- "categoryId": 4,
- "url": "http://nakanohito.jp/",
- "companyId": "userinsight"
- },
- "namogoo": {
- "name": "Namoogoo",
- "categoryId": 4,
- "url": "https://www.namogoo.com/",
- "companyId": null
- },
- "nanigans": {
- "name": "Nanigans",
- "categoryId": 4,
- "url": "http://www.nanigans.com/",
- "companyId": "nanigans"
- },
- "nano_interactive": {
- "name": "Nano Interactive",
- "categoryId": 4,
- "url": "http://www.nanointeractive.com/home/de",
- "companyId": "nano_interactive"
- },
- "nanorep": {
- "name": "nanoRep",
- "categoryId": 2,
- "url": "http://www.nanorep.com/",
- "companyId": "logmein"
- },
- "narando": {
- "name": "Narando",
- "categoryId": 0,
- "url": "https://narando.com/",
- "companyId": "narando"
- },
- "narrativ": {
- "name": "Narrativ",
- "categoryId": 4,
- "url": "https://narrativ.com/",
- "companyId": "narrativ"
- },
- "narrative_io": {
- "name": "Narrative",
- "categoryId": 6,
- "url": "http://www.narrative.io/",
- "companyId": "narrative.io"
- },
- "natimatica": {
- "name": "Natimatica",
- "categoryId": 4,
- "url": "http://natimatica.com/",
- "companyId": "natimatica"
- },
- "nativeads.com": {
- "name": "native ads",
- "categoryId": 4,
- "url": "https://nativeads.com/",
- "companyId": null
- },
- "nativeroll": {
- "name": "Nativeroll",
- "categoryId": 0,
- "url": "http://nativeroll.tv/",
- "companyId": "native_roll"
- },
- "nativo": {
- "name": "Nativo",
- "categoryId": 4,
- "url": "http://www.nativo.net/",
- "companyId": "nativo"
- },
- "navegg_dmp": {
- "name": "Navegg",
- "categoryId": 6,
- "url": "https://www.navegg.com/en/",
- "companyId": "navegg"
- },
- "naver.com": {
- "name": "Naver",
- "categoryId": 4,
- "url": "https://www.naver.com/",
- "companyId": "naver"
- },
- "naver_search": {
- "name": "Naver Search",
- "categoryId": 2,
- "url": "http://www.naver.com/",
- "companyId": "naver"
- },
- "nbc_news": {
- "name": "NBC News",
- "categoryId": 8,
- "url": "https://www.nbcnews.com/",
- "companyId": null
- },
- "ncol": {
- "name": "NCOL",
- "categoryId": 4,
- "url": "http://www.ncol.com/",
- "companyId": "ncol"
- },
- "needle": {
- "name": "Needle",
- "categoryId": 2,
- "url": "http://www.needle.com",
- "companyId": "needle"
- },
- "nekudo.com": {
- "name": "Nekudo",
- "categoryId": 2,
- "url": "https://nekudo.com/",
- "companyId": "nekudo"
- },
- "neodata": {
- "name": "Neodata",
- "categoryId": 4,
- "url": "http://neodatagroup.com/",
- "companyId": "neodata"
- },
- "neory": {
- "name": "NEORY ",
- "categoryId": 4,
- "url": "https://www.neory.com/",
- "companyId": "neory"
- },
- "nerfherdersolo_com": {
- "name": "nerfherdersolo.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "net-metrix": {
- "name": "NET-Metrix",
- "categoryId": 6,
- "url": "http://www.net-metrix.ch/",
- "companyId": "net-metrix"
- },
- "net-results": {
- "name": "Net-Results",
- "categoryId": 4,
- "url": "http://www.net-results.com/",
- "companyId": "net-results"
- },
- "net_avenir": {
- "name": "Net Avenir",
- "categoryId": 4,
- "url": "http://www.netavenir.com/",
- "companyId": "net_avenir"
- },
- "net_communities": {
- "name": "Net Communities",
- "categoryId": 4,
- "url": "http://www.netcommunities.com/",
- "companyId": "net_communities"
- },
- "net_visibility": {
- "name": "NET Visibility",
- "categoryId": 4,
- "url": "http://www.netvisibility.co.uk",
- "companyId": "net_visibility"
- },
- "netbiscuits": {
- "name": "Netbiscuits",
- "categoryId": 6,
- "url": "http://www.netbiscuits.net/",
- "companyId": "netbiscuits"
- },
- "netbooster_group": {
- "name": "NetBooster Group",
- "categoryId": 4,
- "url": "http://www.netbooster.com/",
- "companyId": "netbooster_group"
- },
- "netflix": {
- "name": "Netflix",
- "categoryId": 0,
- "url": "https://www.netflix.com/",
- "companyId": "netflix",
- "source": "AdGuard"
- },
- "netify": {
- "name": "Netify",
- "categoryId": 8,
- "url": "https://www.netify.ai/",
- "companyId": "netify",
- "source": "AdGuard"
- },
- "netletix": {
- "name": "Netletix",
- "categoryId": 4,
- "url": "http://www.netletix.com//",
- "companyId": "ip_de"
- },
- "netminers": {
- "name": "Netminers",
- "categoryId": 6,
- "url": "http://netminers.dk/",
- "companyId": "netminers"
- },
- "netmining": {
- "name": "Netmining",
- "categoryId": 4,
- "url": "http://www.netmining.com/",
- "companyId": "zeta"
- },
- "netmonitor": {
- "name": "NetMonitor",
- "categoryId": 6,
- "url": "http://www.netmanager.net/en/",
- "companyId": "netmonitor"
- },
- "netratings_sitecensus": {
- "name": "NetRatings SiteCensus",
- "categoryId": 4,
- "url": "http://www.nielsen-online.com/intlpage.html",
- "companyId": "nielsen"
- },
- "netrk.net": {
- "name": "nfxTrack",
- "categoryId": 6,
- "url": "https://netrk.net/",
- "companyId": "netzeffekt"
- },
- "netseer": {
- "name": "NetSeer",
- "categoryId": 4,
- "url": "http://www.netseer.com/",
- "companyId": "netseer"
- },
- "netshelter": {
- "name": "NetShelter",
- "categoryId": 4,
- "url": "http://www.netshelter.net/",
- "companyId": "netshelter"
- },
- "netsprint_audience": {
- "name": "Netsprint Audience",
- "categoryId": 6,
- "url": "http://audience.netsprint.eu/",
- "companyId": "netsprint"
- },
- "networkedblogs": {
- "name": "NetworkedBlogs",
- "categoryId": 7,
- "url": "http://w.networkedblogs.com/",
- "companyId": "networkedblogs"
- },
- "neustar_adadvisor": {
- "name": "Neustar AdAdvisor",
- "categoryId": 4,
- "url": "http://www.targusinfo.com/",
- "companyId": "neustar"
- },
- "new_relic": {
- "name": "New Relic",
- "categoryId": 6,
- "url": "http://newrelic.com/",
- "companyId": "new_relic"
- },
- "newscgp.com": {
- "name": "News Connect",
- "categoryId": 4,
- "url": "https://newscorp.com/",
- "companyId": "news_corp"
- },
- "newsmax": {
- "name": "Newsmax",
- "categoryId": 4,
- "url": "http://www.newsmax.com/",
- "companyId": "newsmax"
- },
- "newstogram": {
- "name": "Newstogram",
- "categoryId": 4,
- "url": "http://www.newstogram.com/",
- "companyId": "dailyme"
- },
- "newsupdatedir.info": {
- "name": "newsupdatedir.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "newsupdatewe.info": {
- "name": "newsupdatewe.info",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "newtention": {
- "name": "Newtention",
- "categoryId": 4,
- "url": "http://www.newtention.de/",
- "companyId": "next_audience"
- },
- "nexage": {
- "name": "Nexage",
- "categoryId": 4,
- "url": "http://www.nexage.com/",
- "companyId": "verizon"
- },
- "nexeps.com": {
- "name": "neXeps",
- "categoryId": 4,
- "url": "http://nexeps.com/",
- "companyId": null
- },
- "next_performance": {
- "name": "Next Performance",
- "categoryId": 4,
- "url": "http://www.nextperformance.com/",
- "companyId": "nextperf"
- },
- "next_user": {
- "name": "Next User",
- "categoryId": 4,
- "url": "https://www.nextuser.com/",
- "companyId": "next_user"
- },
- "nextag_roi_optimizer": {
- "name": "Nextag ROI Optimizer",
- "categoryId": 4,
- "url": "http://www.nextag.com/",
- "companyId": "nextag"
- },
- "nextclick": {
- "name": "Nextclick",
- "categoryId": 4,
- "url": "http://nextclick.pl/",
- "companyId": "leadbullet"
- },
- "nextstat": {
- "name": "NextSTAT",
- "categoryId": 6,
- "url": "http://www.nextstat.com/",
- "companyId": "nextstat"
- },
- "neytiv": {
- "name": "Neytiv",
- "categoryId": 6,
- "url": "http://neytiv.com/",
- "companyId": "neytiv"
- },
- "ngage_inc.": {
- "name": "NGage INC.",
- "categoryId": 6,
- "url": "https://www.nginx.com/",
- "companyId": "nginx"
- },
- "nice264.com": {
- "name": "Nice264",
- "categoryId": 0,
- "url": "http://nice264.com/",
- "companyId": null
- },
- "nimblecommerce": {
- "name": "NimbleCommerce",
- "categoryId": 4,
- "url": "http://www.nimblecommerce.com/",
- "companyId": "nimblecommerce"
- },
- "nine_direct_digital": {
- "name": "Nine Digital Direct",
- "categoryId": 4,
- "url": "https://ninedigitaldirect.com.au/",
- "companyId": "nine_entertainment",
- "source": "AdGuard"
- },
- "ninja_access_analysis": {
- "name": "Ninja Access Analysis",
- "categoryId": 6,
- "url": "http://www.ninja.co.jp/analysis/",
- "companyId": "samurai_factory"
- },
- "nirror": {
- "name": "Nirror",
- "categoryId": 6,
- "url": "https://www.nirror.com/",
- "companyId": "nirror"
- },
- "nitropay": {
- "name": "NitroPay",
- "categoryId": 4,
- "url": "https://nitropay.com/",
- "companyId": "gg_software"
- },
- "nk.pl_widgets": {
- "name": "NK.pl Widgets",
- "categoryId": 4,
- "url": "http://nk.pl",
- "companyId": "nk.pl"
- },
- "noaa.gov": {
- "name": "National Oceanic and Atmospheric Administration",
- "categoryId": 8,
- "url": "https://noaa.gov/",
- "companyId": null
- },
- "noddus": {
- "name": "Noddus",
- "categoryId": 4,
- "url": "https://www.enterprise.noddus.com/",
- "companyId": "noddus"
- },
- "nolix": {
- "name": "Nolix",
- "categoryId": 4,
- "url": "http://nolix.ru/",
- "companyId": "nolix"
- },
- "nonli": {
- "name": "Nonli",
- "categoryId": 4,
- "url": "https://www.nonli.com/",
- "companyId": "nonli",
- "source": "AdGuard"
- },
- "nonstop_consulting": {
- "name": "Resolution Media",
- "categoryId": 4,
- "url": "https://resolutionmedia.com/",
- "companyId": "resolution_media"
- },
- "noop.style": {
- "name": "noop.style",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nosto.com": {
- "name": "nosto",
- "categoryId": 6,
- "url": "http://www.nosto.com/",
- "companyId": null
- },
- "notify": {
- "name": "Notify",
- "categoryId": 4,
- "url": "http://notify.ag/en/",
- "companyId": null
- },
- "notifyfox": {
- "name": "Notifyfox",
- "categoryId": 6,
- "url": "https://notifyfox.com/",
- "companyId": "notifyfox"
- },
- "notion": {
- "name": "Notion",
- "categoryId": 8,
- "url": "https://www.notion.so/",
- "companyId": "notion",
- "source": "AdGuard"
- },
- "now_interact": {
- "name": "Now Interact",
- "categoryId": 6,
- "url": "http://nowinteract.com/",
- "companyId": "now_interact"
- },
- "npario": {
- "name": "nPario",
- "categoryId": 6,
- "url": "http://npario.com/",
- "companyId": "npario"
- },
- "nplexmedia": {
- "name": "nPlexMedia",
- "categoryId": 4,
- "url": "http://www.nplexmedia.com/",
- "companyId": "nplexmedia"
- },
- "nrelate": {
- "name": "nRelate",
- "categoryId": 2,
- "url": "http://nrelate.com/",
- "companyId": "iac_apps"
- },
- "ns8": {
- "name": "NS8",
- "categoryId": 4,
- "url": "https://www.ns8.com/",
- "companyId": null
- },
- "nt.vc": {
- "name": "Next Tuesday GmbH",
- "categoryId": 8,
- "url": "http://www.nexttuesday.de/",
- "companyId": null
- },
- "ntent": {
- "name": "NTENT",
- "categoryId": 4,
- "url": "http://www.verticalsearchworks.com",
- "companyId": "ntent"
- },
- "ntppool": {
- "name": "Network Time Protocol",
- "categoryId": 5,
- "url": "https://ntp.org/",
- "companyId": "network_time_foundation",
- "source": "AdGuard"
- },
- "nttcom_online_marketing_solutions": {
- "name": "NTTCom Online Marketing Solutions",
- "categoryId": 6,
- "url": "http://www.digitalforest.co.jp/",
- "companyId": "nttcom_online_marketing_solutions"
- },
- "nuffnang": {
- "name": "Nuffnang",
- "categoryId": 4,
- "url": "http://nuffnang.com/",
- "companyId": "nuffnang"
- },
- "nugg.ad": {
- "name": "Nugg.Ad",
- "categoryId": 4,
- "url": "http://www.nugg.ad/",
- "companyId": "nugg.ad"
- },
- "nui_media": {
- "name": "NUI Media",
- "categoryId": 4,
- "url": "http://adjuggler.com/",
- "companyId": "nui_media"
- },
- "numbers.md": {
- "name": "Numbers.md",
- "categoryId": 6,
- "url": "https://numbers.md/",
- "companyId": "numbers.md"
- },
- "numerator": {
- "name": "Numerator",
- "categoryId": 5,
- "url": "http://www.channeliq.com/",
- "companyId": "numerator"
- },
- "ny_times_tagx": {
- "name": "NY Times TagX",
- "categoryId": 6,
- "url": "https://www.nytimes.com/",
- "companyId": "the_new_york_times"
- },
- "nyacampwk.com": {
- "name": "nyacampwk.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nyetm2mkch.com": {
- "name": "nyetm2mkch.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "nyt.com": {
- "name": "The New York Times",
- "categoryId": 8,
- "url": "https://www.nytimes.com/",
- "companyId": "the_new_york_times"
- },
- "o12zs3u2n.com": {
- "name": "o12zs3u2n.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "o2.pl": {
- "name": "o2.pl",
- "categoryId": 8,
- "url": "https://www.o2.pl/",
- "companyId": "o2.pl"
- },
- "o2online.de": {
- "name": "o2online.de",
- "categoryId": 8,
- "url": "https://www.o2online.de/",
- "companyId": null
- },
- "oath_inc": {
- "name": "Oath",
- "categoryId": 8,
- "url": "https://www.oath.com/",
- "companyId": "verizon"
- },
- "observer": {
- "name": "Observer",
- "categoryId": 4,
- "url": "http://www.observerapp.com",
- "companyId": "observer"
- },
- "ocioso": {
- "name": "Ocioso",
- "categoryId": 7,
- "url": "http://ocioso.com.br/",
- "companyId": "ocioso"
- },
- "oclasrv.com": {
- "name": "oclasrv.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "octapi.net": {
- "name": "octapi.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "octavius": {
- "name": "Octavius",
- "categoryId": 4,
- "url": "http://octavius.rocks/",
- "companyId": "octavius"
- },
- "office.com": {
- "name": "office.com",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "office.net": {
- "name": "office.net",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "office365.com": {
- "name": "office365.com",
- "categoryId": 8,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "oghub.io": {
- "name": "OG Hub",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "oh_my_stats": {
- "name": "Oh My Stats",
- "categoryId": 6,
- "url": "https://ohmystats.com/",
- "companyId": "oh_my_stats"
- },
- "ohana_advertising_network": {
- "name": "Ohana Advertising Network",
- "categoryId": 4,
- "url": "http://adohana.com/",
- "companyId": "ohana_advertising_network"
- },
- "olapic": {
- "name": "Olapic",
- "categoryId": 4,
- "url": "https://www.olapic.com/",
- "companyId": "olapic"
- },
- "olark": {
- "name": "Olark",
- "categoryId": 2,
- "url": "http://www.olark.com/",
- "companyId": "olark"
- },
- "olx-st.com": {
- "name": "OLX",
- "categoryId": 8,
- "url": "http://www.olx.com/",
- "companyId": null
- },
- "omarsys.com": {
- "name": "Omarsys",
- "categoryId": 4,
- "url": "http://omarsys.com/",
- "companyId": "xcaliber"
- },
- "ometria": {
- "name": "Ometria",
- "categoryId": 4,
- "url": "http://www.ometria.com/",
- "companyId": "ometria"
- },
- "omg": {
- "name": "OMG",
- "categoryId": 7,
- "url": "http://uk.omgpm.com/",
- "companyId": "optimise_media"
- },
- "omniconvert.com": {
- "name": "Omniconvert",
- "categoryId": 4,
- "url": "https://www.omniconvert.com/",
- "companyId": "omniconvert"
- },
- "omniscienta": {
- "name": "Omniscienta",
- "categoryId": 4,
- "url": "http://www.omniscienta.com/",
- "companyId": null
- },
- "oms": {
- "name": "OMS",
- "categoryId": 4,
- "url": "http://oms.eu/",
- "companyId": null
- },
- "onaudience": {
- "name": "OnAudience",
- "categoryId": 4,
- "url": "http://www.onaudience.com/",
- "companyId": "cloud_technologies"
- },
- "oneall": {
- "name": "Oneall",
- "categoryId": 7,
- "url": "http://www.oneall.com/",
- "companyId": "oneall"
- },
- "onefeed": {
- "name": "Onefeed",
- "categoryId": 6,
- "url": "http://www.onefeed.co.uk",
- "companyId": "onefeed"
- },
- "onesignal": {
- "name": "OneSignal",
- "categoryId": 5,
- "url": "https://onesignal.com/",
- "companyId": "onesignal"
- },
- "onestat": {
- "name": "OneStat",
- "categoryId": 6,
- "url": "http://www.onestat.com/",
- "companyId": "onestat_international_b.v."
- },
- "onet.pl": {
- "name": "onet",
- "categoryId": 8,
- "url": "https://www.onet.pl/",
- "companyId": null
- },
- "onetag": {
- "name": "OneTag",
- "categoryId": 4,
- "url": "https://www.onetag.com/",
- "companyId": "onetag"
- },
- "onetrust": {
- "name": "OneTrust",
- "categoryId": 5,
- "url": "https://www.onetrust.com/",
- "companyId": "onetrust"
- },
- "onfocus.io": {
- "name": "OnFocus",
- "categoryId": 4,
- "url": "http://onfocus.io/",
- "companyId": "onfocus"
- },
- "onlinewebstat": {
- "name": "Onlinewebstat",
- "categoryId": 6,
- "url": "http://www.onlinewebstats.com/index.php?lang=en",
- "companyId": "onlinewebstat"
- },
- "onswipe": {
- "name": "Onswipe",
- "categoryId": 4,
- "url": "http://www.onswipe.com/",
- "companyId": "onswipe"
- },
- "onthe.io": {
- "name": "OnThe.io",
- "categoryId": 6,
- "url": "https://t.onthe.io/media",
- "companyId": "onthe.io"
- },
- "ontraport_autopilot": {
- "name": "Ontraport Autopilot",
- "categoryId": 4,
- "url": "http://www.moon-ray.com/",
- "companyId": "ontraport"
- },
- "ooyala.com": {
- "name": "Ooyala Player",
- "categoryId": 0,
- "url": "https://www.ooyala.com/",
- "companyId": "telstra"
- },
- "ooyala_analytics": {
- "name": "Ooyala Analytics",
- "categoryId": 6,
- "url": "https://www.telstraglobal.com/",
- "companyId": "telstra"
- },
- "open_adexchange": {
- "name": "Open AdExchange",
- "categoryId": 4,
- "url": "http://openadex.dk/",
- "companyId": "open_adexchange"
- },
- "open_adstream": {
- "name": "Open Adstream",
- "categoryId": 4,
- "url": "https://about.ads.microsoft.com/en-us/solutions/xandr/xandr-premium-programmatic-advertising",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "open_share_count": {
- "name": "Open Share Count",
- "categoryId": 4,
- "url": "http://opensharecount.com/",
- "companyId": "open_share_count"
- },
- "openai": {
- "name": "OpenAI",
- "categoryId": 8,
- "url": "https://openai.com/",
- "companyId": "openai",
- "source": "AdGuard"
- },
- "openload": {
- "name": "Openload",
- "categoryId": 9,
- "url": "https://openload.co/",
- "companyId": null
- },
- "openstat": {
- "name": "OpenStat",
- "categoryId": 6,
- "url": "https://www.openstat.ru/",
- "companyId": "openstat"
- },
- "opentracker": {
- "name": "Opentracker",
- "categoryId": 6,
- "url": "http://www.opentracker.net/",
- "companyId": "opentracker"
- },
- "openwebanalytics": {
- "name": "Open Web Analytics",
- "categoryId": 6,
- "url": "http://www.openwebanalytics.com/",
- "companyId": "open_web_analytics"
- },
- "openx": {
- "name": "OpenX",
- "categoryId": 4,
- "url": "https://www.openx.com",
- "companyId": "openx"
- },
- "operative_media": {
- "name": "Operative Media",
- "categoryId": 4,
- "url": "http://www.operative.com/",
- "companyId": "operative_media"
- },
- "opinary": {
- "name": "Opinary",
- "categoryId": 2,
- "url": "http://opinary.com/",
- "companyId": "opinary"
- },
- "opinionbar": {
- "name": "OpinionBar",
- "categoryId": 2,
- "url": "http://www.metrixlab.com",
- "companyId": "metrixlab"
- },
- "oplytic": {
- "name": "Oplytic",
- "categoryId": 6,
- "url": "http://www.oplytic.com",
- "companyId": "oplytic"
- },
- "oppo": {
- "name": "OPPO",
- "categoryId": 101,
- "url": "https://www.oppo.com/",
- "companyId": "bbk",
- "source": "AdGuard"
- },
- "opta.net": {
- "name": "Opta",
- "categoryId": 6,
- "url": "http://www.optasports.de/",
- "companyId": "opta_sports"
- },
- "optaim": {
- "name": "OptAim",
- "categoryId": 4,
- "url": "http://optaim.com/",
- "companyId": "optaim"
- },
- "optanaon": {
- "name": "Optanaon by OneTrust",
- "categoryId": 5,
- "url": "https://www.cookielaw.org/",
- "companyId": "onetrust"
- },
- "optify": {
- "name": "Optify",
- "categoryId": 4,
- "url": "http://www.optify.net",
- "companyId": "optify"
- },
- "optimatic": {
- "name": "Optimatic",
- "categoryId": 0,
- "url": "http://www.optimatic.com/",
- "companyId": "optimatic"
- },
- "optimax_media_delivery": {
- "name": "Optimax Media Delivery",
- "categoryId": 4,
- "url": "http://optmd.com/",
- "companyId": "optimax_media_delivery"
- },
- "optimicdn.com": {
- "name": "OptimiCDN",
- "categoryId": 9,
- "url": "https://en.optimicdn.com/",
- "companyId": null
- },
- "optimizely": {
- "name": "Optimizely",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_error_log": {
- "name": "Optimizely Error Log",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_geo_targeting": {
- "name": "Optimizely Geographical Targeting",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimizely_logging": {
- "name": "Optimizely Logging",
- "categoryId": 6,
- "url": "https://www.optimizely.com/",
- "companyId": "optimizely"
- },
- "optimonk": {
- "name": "Optimonk",
- "categoryId": 6,
- "url": "https://www.optimonk.com/",
- "companyId": "optimonk"
- },
- "optinmonster": {
- "name": "OptInMonster",
- "categoryId": 2,
- "url": "https://optinmonster.com/",
- "companyId": "optinmonster"
- },
- "optinproject.com": {
- "name": "OptinProject",
- "categoryId": 4,
- "url": "https://www.optincollect.com/en",
- "companyId": "optincollect"
- },
- "optomaton": {
- "name": "Optomaton",
- "categoryId": 4,
- "url": "http://www.optomaton.com/",
- "companyId": "ve"
- },
- "ora.tv": {
- "name": "Ora.TV",
- "categoryId": 4,
- "url": "http://www.ora.tv/",
- "companyId": "ora.tv"
- },
- "oracle_infinity": {
- "name": "Oracle Infinity Behavioral Intelligence",
- "categoryId": 6,
- "url": "https://www.oracle.com/au/cx/marketing/digital-intelligence/",
- "companyId": "oracle",
- "source": "AdGuard"
- },
- "oracle_live_help": {
- "name": "Oracle Live Help",
- "categoryId": 2,
- "url": "http://www.oracle.com/us/products/applications/atg/live-help-on-demand/index.html",
- "companyId": "oracle"
- },
- "oracle_rightnow": {
- "name": "Oracle RightNow",
- "categoryId": 8,
- "url": "http://www.oracle.com/",
- "companyId": "oracle"
- },
- "orange": {
- "name": "Orange",
- "categoryId": 4,
- "url": "http://www.orange.co.uk/",
- "companyId": "orange_mobile"
- },
- "orange142": {
- "name": "Orange142",
- "categoryId": 4,
- "url": "http://www.orange142.com/",
- "companyId": "orange142"
- },
- "orange_france": {
- "name": "Orange France",
- "categoryId": 8,
- "url": "https://www.orange.fr/",
- "companyId": "orange_france"
- },
- "orangesoda": {
- "name": "OrangeSoda",
- "categoryId": 4,
- "url": "http://www.orangesoda.com/",
- "companyId": "orangesoda"
- },
- "orc_international": {
- "name": "ORC International",
- "categoryId": 4,
- "url": "https://orcinternational.com/",
- "companyId": "engine_group"
- },
- "order_groove": {
- "name": "Order Groove",
- "categoryId": 4,
- "url": "http://ordergroove.com/",
- "companyId": "order_groove"
- },
- "orel_site": {
- "name": "Orel Site",
- "categoryId": 2,
- "url": "https://www.orelsite.ru/",
- "companyId": "orel_site"
- },
- "otclick": {
- "name": "otClick",
- "categoryId": 4,
- "url": "http://otclick-adv.ru/",
- "companyId": "otclick"
- },
- "othersearch.info": {
- "name": "FlowSurf",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "otm-r.com": {
- "name": "OTM",
- "categoryId": 4,
- "url": "http://otm-r.com/",
- "companyId": null
- },
- "otto.de": {
- "name": "Otto Group",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "outbrain": {
- "name": "Outbrain",
- "categoryId": 4,
- "url": "https://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_amplify": {
- "name": "Outbrain Amplify",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_analytics": {
- "name": "Outbrain Analytics",
- "categoryId": 6,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_logger": {
- "name": "Outbrain Logger",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_pixel": {
- "name": "Outbrain Pixel",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_utilities": {
- "name": "Outbrain Utilities",
- "categoryId": 6,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outbrain_widgets": {
- "name": "Outbrain Widgets",
- "categoryId": 4,
- "url": "http://www.outbrain.com/",
- "companyId": "outbrain"
- },
- "outlook": {
- "name": "Microsoft Outlook",
- "categoryId": 13,
- "url": "https://outlook.live.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "overheat.it": {
- "name": "overheat",
- "categoryId": 6,
- "url": "https://overheat.io/",
- "companyId": null
- },
- "owa": {
- "name": "OWA",
- "categoryId": 6,
- "url": "http://oewa.at/",
- "companyId": "the_austrian_web_analysis"
- },
- "owneriq": {
- "name": "OwnerIQ",
- "categoryId": 4,
- "url": "http://www.owneriq.com/",
- "companyId": "owneriq"
- },
- "ownpage": {
- "name": "Ownpage",
- "categoryId": 2,
- "url": "http://www.ownpage.fr/index.en.html",
- "companyId": null
- },
- "owox.com": {
- "name": "OWOX",
- "categoryId": 6,
- "url": "https://www.owox.com/",
- "companyId": "owox_inc"
- },
- "oxamedia": {
- "name": "OxaMedia",
- "categoryId": 2,
- "url": "http://www.oxamedia.com/",
- "companyId": "oxamedia"
- },
- "oxomi.com": {
- "name": "Oxomi",
- "categoryId": 4,
- "url": "https://oxomi.com/",
- "companyId": null
- },
- "oztam": {
- "name": "OzTAM",
- "categoryId": 8,
- "url": "https://oztam.com.au/",
- "companyId": "oztam",
- "source": "AdGuard"
- },
- "pageanalytics.space": {
- "name": "pageanalytics.space",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pagefair": {
- "name": "PageFair",
- "categoryId": 2,
- "url": "https://pagefair.com/",
- "companyId": "blockthrough"
- },
- "pagescience": {
- "name": "PageScience",
- "categoryId": 4,
- "url": "http://www.precisionhealthmedia.com/index.html",
- "companyId": "pagescience"
- },
- "paid-to-promote": {
- "name": "Paid-To-Promote",
- "categoryId": 4,
- "url": "http://www.paid-to-promote.net/",
- "companyId": "paid-to-promote"
- },
- "paperg": {
- "name": "PaperG",
- "categoryId": 4,
- "url": "http://www.paperg.com/",
- "companyId": "paperg"
- },
- "pardot": {
- "name": "Pardot",
- "categoryId": 6,
- "url": "http://www.pardot.com/",
- "companyId": "pardot"
- },
- "parsely": {
- "name": "Parse.ly",
- "categoryId": 6,
- "url": "https://www.parse.ly/",
- "companyId": "parse.ly"
- },
- "partner-ads": {
- "name": "Partner-Ads",
- "categoryId": 4,
- "url": "http://www.partner-ads.com/",
- "companyId": "partner-ads"
- },
- "passionfruit": {
- "name": "Passionfruit",
- "categoryId": 4,
- "url": "http://passionfruitads.com/",
- "companyId": "passionfruit"
- },
- "pathful": {
- "name": "Pathful",
- "categoryId": 6,
- "url": "http://www.pathful.com/",
- "companyId": "pathful"
- },
- "pay-hit": {
- "name": "Pay-Hit",
- "categoryId": 4,
- "url": "http://pay-hit.com/",
- "companyId": "pay-hit"
- },
- "payclick": {
- "name": "PayClick",
- "categoryId": 4,
- "url": "http://payclick.it/",
- "companyId": "payclick"
- },
- "paykickstart": {
- "name": "PayKickstart",
- "categoryId": 6,
- "url": "https://paykickstart.com/",
- "companyId": "paykickstart"
- },
- "paypal": {
- "name": "PayPal",
- "categoryId": 2,
- "url": "https://www.paypal.com",
- "companyId": "ebay"
- },
- "pcvark.com": {
- "name": "pcvark.com",
- "categoryId": 11,
- "url": "https://pcvark.com/",
- "companyId": null
- },
- "peer39": {
- "name": "Peer39",
- "categoryId": 4,
- "url": "http://www.peer39.com/",
- "companyId": "peer39"
- },
- "peer5.com": {
- "name": "Peer5",
- "categoryId": 9,
- "url": "https://www.peer5.com/",
- "companyId": "peer5"
- },
- "peerius": {
- "name": "Peerius",
- "categoryId": 2,
- "url": "http://www.peerius.com/",
- "companyId": "peerius"
- },
- "pendo.io": {
- "name": "pendo",
- "categoryId": 6,
- "url": "https://www.pendo.io/",
- "companyId": null
- },
- "pepper.com": {
- "name": "Pepper",
- "categoryId": 4,
- "url": "https://www.pepper.com/",
- "companyId": "6minutes"
- },
- "pepperjam": {
- "name": "Pepperjam",
- "categoryId": 4,
- "url": "http://www.pepperjam.com",
- "companyId": "pepperjam"
- },
- "pepsia": {
- "name": "Pepsia",
- "categoryId": 6,
- "url": "http://pepsia.com/en/",
- "companyId": "pepsia"
- },
- "perfdrive.com": {
- "name": "perfdrive.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "perfect_audience": {
- "name": "Perfect Audience",
- "categoryId": 4,
- "url": "https://www.perfectaudience.com/",
- "companyId": "perfect_audience"
- },
- "perfect_market": {
- "name": "Perfect Market",
- "categoryId": 4,
- "url": "http://perfectmarket.com/",
- "companyId": "perfect_market"
- },
- "perfops": {
- "name": "PerfOps",
- "categoryId": 6,
- "url": "https://perfops.net/",
- "companyId": "perfops",
- "source": "AdGuard"
- },
- "perform_group": {
- "name": "Perform Group",
- "categoryId": 5,
- "url": "http://www.performgroup.co.uk/",
- "companyId": "perform_group"
- },
- "performable": {
- "name": "Performable",
- "categoryId": 6,
- "url": "http://www.performable.com/",
- "companyId": "hubspot"
- },
- "performancing_metrics": {
- "name": "Performancing Metrics",
- "categoryId": 6,
- "url": "http://pmetrics.performancing.com",
- "companyId": "performancing"
- },
- "performax": {
- "name": "Performax",
- "categoryId": 4,
- "url": "https://www.performax.cz/",
- "companyId": "performax"
- },
- "perimeterx.net": {
- "name": "Perimeterx",
- "categoryId": 6,
- "url": "https://www.perimeterx.com/",
- "companyId": null
- },
- "permutive": {
- "name": "Permutive",
- "categoryId": 4,
- "url": "http://permutive.com/",
- "companyId": "permutive"
- },
- "persgroep": {
- "name": "De Persgroep",
- "categoryId": 4,
- "url": "https://www.persgroep.be/",
- "companyId": "de_persgroep"
- },
- "persianstat": {
- "name": "PersianStat",
- "categoryId": 6,
- "url": "http://www.persianstat.com",
- "companyId": "persianstat"
- },
- "persio": {
- "name": "Persio",
- "categoryId": 4,
- "url": "http://www.pers.io/",
- "companyId": "pers.io"
- },
- "personyze": {
- "name": "Personyze",
- "categoryId": 2,
- "url": "http://personyze.com/",
- "companyId": "personyze"
- },
- "petametrics": {
- "name": "LiftIgniter",
- "categoryId": 2,
- "url": "https://www.liftigniter.com/",
- "companyId": "liftigniter"
- },
- "pheedo": {
- "name": "Pheedo",
- "categoryId": 4,
- "url": "http://pheedo.com/",
- "companyId": "pheedo"
- },
- "phonalytics": {
- "name": "Phonalytics",
- "categoryId": 2,
- "url": "http://www.phonalytics.com/",
- "companyId": "phonalytics"
- },
- "phunware": {
- "name": "Phunware",
- "categoryId": 4,
- "url": "https://www.phunware.com",
- "companyId": "phunware"
- },
- "piguiqproxy.com": {
- "name": "piguiqproxy.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pilot": {
- "name": "Pilot",
- "categoryId": 6,
- "url": "http://www.pilot.de/en/home.html",
- "companyId": "pilot_gmbh"
- },
- "pingdom": {
- "name": "Pingdom",
- "categoryId": 6,
- "url": "https://www.pingdom.com/",
- "companyId": "pingdom"
- },
- "pinterest": {
- "name": "Pinterest",
- "categoryId": 7,
- "url": "http://pinterest.com/",
- "companyId": "pinterest"
- },
- "pinterest_conversion_tracker": {
- "name": "Pinterest Conversion Tracker",
- "categoryId": 6,
- "url": "http://pinterest.com/",
- "companyId": "pinterest"
- },
- "pipz": {
- "name": "Pipz",
- "categoryId": 4,
- "url": "https://pipz.com/br/",
- "companyId": "pipz_automation"
- },
- "piwik": {
- "name": "Tombstone (Matomo/Piwik before the split)",
- "categoryId": 6,
- "url": "http://piwik.org/",
- "companyId": "matomo"
- },
- "piwik_pro_analytics_suite": {
- "name": "Piwik PRO Analytics Suite",
- "categoryId": 6,
- "url": "https://piwik.pro/",
- "companyId": "piwik_pro"
- },
- "pixalate": {
- "name": "Pixalate",
- "categoryId": 4,
- "url": "http://www.pixalate.com/",
- "companyId": "pixalate"
- },
- "pixel_union": {
- "name": "Pixel Union",
- "categoryId": 4,
- "url": "https://www.pixelunion.net/",
- "companyId": "pixel_union"
- },
- "pixfuture": {
- "name": "PixFuture",
- "categoryId": 4,
- "url": "http://www.pixfuture.com",
- "companyId": "pixfuture"
- },
- "piximedia": {
- "name": "Piximedia",
- "categoryId": 4,
- "url": "http://www.piximedia.com/piximedia?en",
- "companyId": "piximedia"
- },
- "pizzaandads_com": {
- "name": "pizzaandads.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "placester": {
- "name": "Placester",
- "categoryId": 4,
- "url": "https://placester.com/",
- "companyId": "placester"
- },
- "pladform.ru": {
- "name": "Pladform",
- "categoryId": 4,
- "url": "https://distribution.pladform.ru/",
- "companyId": "pladform"
- },
- "plan.net_experience_cloud": {
- "name": "Plan.net Experience Cloud",
- "categoryId": 6,
- "url": "https://www.serviceplan.com/",
- "companyId": "serviceplan"
- },
- "platform360": {
- "name": "Platform360",
- "categoryId": 4,
- "url": "http://www.platform360.co/#home",
- "companyId": null
- },
- "platformone": {
- "name": "Platform One",
- "categoryId": 4,
- "url": "https://www.platform-one.co.jp/",
- "companyId": "daconsortium"
- },
- "play_by_mamba": {
- "name": "Play by Mamba",
- "categoryId": 4,
- "url": "http://play.mamba.ru/",
- "companyId": "mamba"
- },
- "playbuzz.com": {
- "name": "Playbuzz",
- "categoryId": 2,
- "url": "https://www.playbuzz.com/",
- "companyId": "playbuzz"
- },
- "plenty_of_fish": {
- "name": "Plenty Of Fish",
- "categoryId": 6,
- "url": "http://www.pof.com/",
- "companyId": "plentyoffish"
- },
- "plex": {
- "name": "Plex",
- "categoryId": 0,
- "url": "https://www.plex.tv/",
- "companyId": "plex",
- "source": "AdGuard"
- },
- "plex_metrics": {
- "name": "Plex Metrics",
- "categoryId": 6,
- "url": "https://www.plex.tv/",
- "companyId": "plex"
- },
- "plista": {
- "name": "Plista",
- "categoryId": 4,
- "url": "http://www.plista.com",
- "companyId": "plista"
- },
- "plugrush": {
- "name": "PlugRush",
- "categoryId": 4,
- "url": "http://www.plugrush.com/",
- "companyId": "plugrush"
- },
- "pluso.ru": {
- "name": "Pluso",
- "categoryId": 7,
- "url": "https://share.pluso.ru/",
- "companyId": "pluso"
- },
- "plutusads": {
- "name": "Plutusads",
- "categoryId": 4,
- "url": "http://plutusads.com",
- "companyId": "plutusads"
- },
- "pmddby.com": {
- "name": "pmddby.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "pnamic.com": {
- "name": "pnamic.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "po.st": {
- "name": "Po.st",
- "categoryId": 7,
- "url": "https://www.po.st/",
- "companyId": "rythmone"
- },
- "pocket": {
- "name": "Pocket",
- "categoryId": 6,
- "url": "http://getpocket.com/",
- "companyId": "pocket"
- },
- "pocketcents": {
- "name": "PocketCents",
- "categoryId": 4,
- "url": "http://pocketcents.com/",
- "companyId": "pocketcents"
- },
- "pointific": {
- "name": "Pointific",
- "categoryId": 6,
- "url": "http://www.pontiflex.com/",
- "companyId": "pontiflex"
- },
- "pointroll": {
- "name": "PointRoll",
- "categoryId": 4,
- "url": "http://www.pointroll.com/",
- "companyId": "gannett_digital_media_network"
- },
- "poirreleast.club": {
- "name": "poirreleast.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "polar.me": {
- "name": "Polar",
- "categoryId": 4,
- "url": "https://polar.me/",
- "companyId": "polar_inc"
- },
- "polldaddy": {
- "name": "Polldaddy",
- "categoryId": 2,
- "url": "http://polldaddy.com/",
- "companyId": "automattic"
- },
- "polyad": {
- "name": "PolyAd",
- "categoryId": 4,
- "url": "http://polyad.net",
- "companyId": "polyad"
- },
- "polyfill.io": {
- "name": "Polyfill",
- "categoryId": 8,
- "url": "https://polyfill.io/",
- "companyId": "polyfill.io"
- },
- "popads": {
- "name": "PopAds",
- "categoryId": 4,
- "url": "https://www.popads.net/",
- "companyId": "popads"
- },
- "popcash": {
- "name": "Popcash",
- "categoryId": 4,
- "url": "http://popcash.net/",
- "companyId": "popcash_network"
- },
- "popcorn_metrics": {
- "name": "Popcorn Metrics",
- "categoryId": 6,
- "url": "https://www.popcornmetrics.com/",
- "companyId": "popcorn_metrics"
- },
- "popin.cc": {
- "name": "popIn",
- "categoryId": 7,
- "url": "https://www.popin.cc/",
- "companyId": "popin"
- },
- "popmyads": {
- "name": "PopMyAds",
- "categoryId": 4,
- "url": "http://popmyads.com/",
- "companyId": "popmyads"
- },
- "poponclick": {
- "name": "PopOnClick",
- "categoryId": 4,
- "url": "http://poponclick.com",
- "companyId": "poponclick"
- },
- "populis": {
- "name": "Populis",
- "categoryId": 4,
- "url": "http://www.populis.com",
- "companyId": "populis"
- },
- "pornhub": {
- "name": "PornHub",
- "categoryId": 3,
- "url": "https://www.pornhub.com/",
- "companyId": "pornhub"
- },
- "pornwave": {
- "name": "Pornwave",
- "categoryId": 3,
- "url": "http://pornwave.com",
- "companyId": "pornwave.com"
- },
- "porta_brazil": {
- "name": "Porta Brazil",
- "categoryId": 4,
- "url": "http://brasil.gov.br/",
- "companyId": "portal_brazil"
- },
- "post_affiliate_pro": {
- "name": "Post Affiliate Pro",
- "categoryId": 4,
- "url": "http://www.qualityunit.com/",
- "companyId": "qualityunit"
- },
- "powerlinks": {
- "name": "PowerLinks",
- "categoryId": 4,
- "url": "http://www.powerlinks.com/",
- "companyId": "powerlinks"
- },
- "powerreviews": {
- "name": "PowerReviews",
- "categoryId": 2,
- "url": "http://www.powerreviews.com/",
- "companyId": "powerreviews"
- },
- "powr.io": {
- "name": "POWr",
- "categoryId": 6,
- "url": "https://www.powr.io/",
- "companyId": "powr"
- },
- "pozvonim": {
- "name": "Pozvonim",
- "categoryId": 4,
- "url": "https://pozvonim.com/",
- "companyId": "pozvonim"
- },
- "prebid": {
- "name": "Prebid",
- "categoryId": 4,
- "url": "http://prebid.org/",
- "companyId": null
- },
- "precisionclick": {
- "name": "PrecisionClick",
- "categoryId": 4,
- "url": "http://www.precisionclick.com/",
- "companyId": "precisionclick"
- },
- "predicta": {
- "name": "Predicta",
- "categoryId": 4,
- "url": "http://predicta.com.br/",
- "companyId": "predicta"
- },
- "premonix": {
- "name": "Premonix",
- "categoryId": 4,
- "url": "http://www.premonix.com/",
- "companyId": "premonix"
- },
- "press": {
- "name": "Press+",
- "categoryId": 4,
- "url": "http://www.mypressplus.com/",
- "companyId": "press+"
- },
- "pressly": {
- "name": "Pressly",
- "categoryId": 4,
- "url": "https://www.pressly.com/",
- "companyId": "pressly"
- },
- "pricegrabber": {
- "name": "PriceGrabber",
- "categoryId": 4,
- "url": "http://www.pricegrabber.com",
- "companyId": "pricegrabber"
- },
- "pricespider": {
- "name": "Pricespider",
- "categoryId": 4,
- "url": "http://www.pricespider.com/",
- "companyId": "price_spider"
- },
- "prismamediadigital.com": {
- "name": "Prisma Media Digital",
- "categoryId": 4,
- "url": "http://www.pmdrecrute.com/",
- "companyId": "prisma_media_digital"
- },
- "privy.com": {
- "name": "Privy",
- "categoryId": 2,
- "url": "https://privy.com/",
- "companyId": "privy"
- },
- "proclivity": {
- "name": "Proclivity",
- "categoryId": 4,
- "url": "http://www.proclivitysystems.com/",
- "companyId": "proclivity_media"
- },
- "prodperfect": {
- "name": "ProdPerfect",
- "categoryId": 6,
- "url": "https://prodperfect.com/",
- "companyId": "prodperfect"
- },
- "productsup": {
- "name": "ProductsUp",
- "categoryId": 4,
- "url": "https://productsup.io/",
- "companyId": "productsup"
- },
- "profiliad": {
- "name": "Profiliad",
- "categoryId": 6,
- "url": "http://profiliad.com/",
- "companyId": "profiliad"
- },
- "profitshare": {
- "name": "Profitshare",
- "categoryId": 6,
- "url": "https://profitshare.ro/",
- "companyId": "profitshare"
- },
- "proformics": {
- "name": "Proformics",
- "categoryId": 6,
- "url": "http://proformics.com/",
- "companyId": "proformics_digital"
- },
- "programattik": {
- "name": "Programattik",
- "categoryId": 4,
- "url": "http://www.programattik.com/",
- "companyId": "ttnet"
- },
- "project_wonderful": {
- "name": "Project Wonderful",
- "categoryId": 4,
- "url": "http://www.projectwonderful.com/",
- "companyId": "project_wonderful"
- },
- "propel_marketing": {
- "name": "Propel Marketing",
- "categoryId": 4,
- "url": "http://propelmarketing.com/",
- "companyId": "propel_marketing"
- },
- "propeller_ads": {
- "name": "Propeller Ads",
- "categoryId": 4,
- "url": "http://www.propellerads.com/",
- "companyId": "propeller_ads"
- },
- "propermedia": {
- "name": "Proper Media",
- "categoryId": 4,
- "url": "https://proper.io/",
- "companyId": "propermedia"
- },
- "props": {
- "name": "Props",
- "categoryId": 4,
- "url": "http://props.id/",
- "companyId": "props"
- },
- "propvideo_net": {
- "name": "propvideo.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "prospecteye": {
- "name": "ProspectEye",
- "categoryId": 4,
- "url": "https://www.prospecteye.com/",
- "companyId": "prospecteye"
- },
- "prosperent": {
- "name": "Prosperent",
- "categoryId": 4,
- "url": "http://prosperent.com",
- "companyId": "prosperent"
- },
- "prostor": {
- "name": "Prostor",
- "categoryId": 4,
- "url": "http://prostor-lite.ru/",
- "companyId": "prostor"
- },
- "proton_ag": {
- "name": "Proton AG",
- "categoryId": 2,
- "url": "https://proton.me/",
- "companyId": "proton_foundation",
- "source": "AdGuard"
- },
- "provide_support": {
- "name": "Provide Support",
- "categoryId": 2,
- "url": "http://www.providesupport.com/",
- "companyId": "provide_support"
- },
- "proximic": {
- "name": "Proximic",
- "categoryId": 4,
- "url": "http://www.proximic.com/",
- "companyId": "proximic"
- },
- "proxistore.com": {
- "name": "Proxistore",
- "categoryId": 4,
- "url": "https://www.proxistore.com/",
- "companyId": "proxistore"
- },
- "pscp.tv": {
- "name": "Periscope",
- "categoryId": 7,
- "url": "https://www.pscp.tv/",
- "companyId": "periscope"
- },
- "pstatic.net": {
- "name": "Naver CDN",
- "categoryId": 9,
- "url": "https://www.naver.com/",
- "companyId": "naver"
- },
- "psyma": {
- "name": "Psyma",
- "categoryId": 4,
- "url": "http://www.psyma.com/",
- "companyId": "psyma"
- },
- "pt_engine": {
- "name": "Pt engine",
- "categoryId": 6,
- "url": "http://www.ptengine.jp/",
- "companyId": "pt_engine"
- },
- "pub-fit": {
- "name": "Pub-Fit",
- "categoryId": 4,
- "url": "http://www.pub-fit.com/",
- "companyId": "pub-fit"
- },
- "pub.network": {
- "name": "pub.network",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "pubble": {
- "name": "Pubble",
- "categoryId": 2,
- "url": "http://www.pubble.co/",
- "companyId": "pubble"
- },
- "pubdirecte": {
- "name": "Pubdirecte",
- "categoryId": 4,
- "url": "http://www.pubdirecte.com/",
- "companyId": "pubdirecte"
- },
- "pubgears": {
- "name": "PubGears",
- "categoryId": 4,
- "url": "http://pubgears.com/",
- "companyId": "pubgears"
- },
- "public_ideas": {
- "name": "Public Ideas",
- "categoryId": 4,
- "url": "http://www.publicidees.co.uk/",
- "companyId": "public-idees"
- },
- "publicidad.net": {
- "name": "Publicidad.net",
- "categoryId": 4,
- "url": "http://www.en.publicidad.net/",
- "companyId": "publicidad.net"
- },
- "publir": {
- "name": "Publir",
- "categoryId": 4,
- "url": "http://www.publir.com",
- "companyId": "publir"
- },
- "pubmatic": {
- "name": "PubMatic",
- "categoryId": 4,
- "url": "http://www.pubmatic.com/",
- "companyId": "pubmatic"
- },
- "pubnub.com": {
- "name": "PubNub",
- "categoryId": 8,
- "url": "https://www.pubnub.com/",
- "companyId": null
- },
- "puboclic": {
- "name": "Puboclic",
- "categoryId": 4,
- "url": "http://www.puboclic.com/",
- "companyId": "puboclic"
- },
- "pulpix.com": {
- "name": "Pulpix",
- "categoryId": 4,
- "url": "https://www.pulpix.com/",
- "companyId": "adyoulike"
- },
- "pulpo_media": {
- "name": "Pulpo Media",
- "categoryId": 4,
- "url": "http://www.pulpomedia.com/home.html",
- "companyId": "pulpo_media"
- },
- "pulse360": {
- "name": "Pulse360",
- "categoryId": 4,
- "url": "http://www.pulse360.com",
- "companyId": "pulse360"
- },
- "pulse_insights": {
- "name": "Pulse Insights",
- "categoryId": 6,
- "url": "http://pulseinsights.com/",
- "companyId": "pulse_insights"
- },
- "pulsepoint": {
- "name": "PulsePoint",
- "categoryId": 4,
- "url": "http://www.contextweb.com/",
- "companyId": "pulsepoint_ad_exchange"
- },
- "punchtab": {
- "name": "PunchTab",
- "categoryId": 4,
- "url": "http://www.punchtab.com/",
- "companyId": "punchtab"
- },
- "purch": {
- "name": "Purch",
- "categoryId": 4,
- "url": "http://www.purch.com/",
- "companyId": "purch"
- },
- "pure_chat": {
- "name": "Pure Chat",
- "categoryId": 2,
- "url": "https://www.purechat.com",
- "companyId": "pure_chat"
- },
- "pureprofile": {
- "name": "Pureprofile",
- "categoryId": 6,
- "url": "https://www.pureprofile.com/us/",
- "companyId": "pureprofile"
- },
- "purlive": {
- "name": "PurLive",
- "categoryId": 4,
- "url": "http://www.purlive.com/",
- "companyId": "purlive"
- },
- "puserving.com": {
- "name": "puserving.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "push.world": {
- "name": "Push.world",
- "categoryId": 2,
- "url": "https://push.world/en",
- "companyId": "push.world"
- },
- "push_engage": {
- "name": "Push Engage",
- "categoryId": 2,
- "url": "https://www.pushengage.com/",
- "companyId": "push_engage"
- },
- "pushame.com": {
- "name": "pushame.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushbullet": {
- "name": "Pushbullet",
- "categoryId": 2,
- "url": "https://www.pushbullet.com/",
- "companyId": "pushbullet"
- },
- "pushcrew": {
- "name": "VWO Engage",
- "categoryId": 2,
- "url": "https://vwo.com/engage/",
- "companyId": "wingify"
- },
- "pusher.com": {
- "name": "Pusher",
- "categoryId": 6,
- "url": "https://pusher.com/",
- "companyId": null
- },
- "pushnative.com": {
- "name": "pushnative.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushnews": {
- "name": "Pushnews",
- "categoryId": 4,
- "url": "https://www.pushnews.eu/",
- "companyId": "pushnews"
- },
- "pushno.com": {
- "name": "pushno.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushwhy.com": {
- "name": "pushwhy.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "pushwoosh.com": {
- "name": "Pushwoosh",
- "categoryId": 2,
- "url": "https://www.pushwoosh.com/",
- "companyId": "pushwoosh"
- },
- "pvclouds.com": {
- "name": "pvclouds.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "q1media": {
- "name": "Q1Media",
- "categoryId": 4,
- "url": "http://q1media.com/",
- "companyId": "q1media"
- },
- "q_division": {
- "name": "Q-Division",
- "categoryId": 4,
- "url": "https://q-division.de/",
- "companyId": null
- },
- "qbaka": {
- "name": "Qbaka",
- "categoryId": 6,
- "url": "https://qbaka.com/",
- "companyId": "qbaka"
- },
- "qcri_analytics": {
- "name": "QCRI Analytics",
- "categoryId": 6,
- "url": "http://qcri.org/",
- "companyId": "qatar_computing_research_institute"
- },
- "qeado": {
- "name": "Qeado",
- "categoryId": 6,
- "url": "https://www.qeado.com/",
- "companyId": "qeado"
- },
- "qihoo_360": {
- "name": "Qihoo 360",
- "categoryId": 6,
- "url": "https://www.360totalsecurity.com/en/",
- "companyId": "qihoo_360_technology"
- },
- "qq.com": {
- "name": "QQ International",
- "categoryId": 2,
- "url": "https://www.qq.com/",
- "companyId": "tencent",
- "source": "AdGuard"
- },
- "qrius": {
- "name": "Qrius",
- "categoryId": 7,
- "url": "http://www.qrius.me/",
- "companyId": "mediafed"
- },
- "qualaroo": {
- "name": "Qualaroo",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "qualcomm": {
- "name": "Qualcomm",
- "categoryId": 8,
- "url": "https://www.qualcomm.com/",
- "companyId": "qualcomm",
- "source": "AdGuard"
- },
- "qualcomm_location_service": {
- "name": "Qualcomm Location Service",
- "categoryId": 15,
- "url": "https://www.qualcomm.com/site/privacy/services",
- "companyId": "qualcomm",
- "source": "AdGuard"
- },
- "qualia": {
- "name": "Qualia",
- "categoryId": 4,
- "url": "http://www.bluecava.com/",
- "companyId": "qualia"
- },
- "qualtrics": {
- "name": "Qualtrics",
- "categoryId": 6,
- "url": "http://www.qualtrics.com/",
- "companyId": "qualtrics"
- },
- "quantcast": {
- "name": "Quantcast",
- "categoryId": 4,
- "url": "http://www.quantcast.com/",
- "companyId": "quantcast"
- },
- "quantcount": {
- "name": "Quantcount",
- "categoryId": 6,
- "url": "http://www.quantcast.com",
- "companyId": "quantcast"
- },
- "quantum_metric": {
- "name": "Quantum Metric",
- "categoryId": 6,
- "url": "https://www.quantummetric.com/",
- "companyId": "quantum_metric"
- },
- "quartic.pl": {
- "name": "Quartic",
- "categoryId": 6,
- "url": "https://www.quarticon.com/",
- "companyId": "quarticon"
- },
- "qubit": {
- "name": "Qubit Opentag",
- "categoryId": 6,
- "url": "http://www.qubit.com/",
- "companyId": "qubit"
- },
- "questback": {
- "name": "Questback",
- "categoryId": 2,
- "url": "http://www1.questback.com/",
- "companyId": "questback"
- },
- "queue-it": {
- "name": "Queue-it",
- "categoryId": 6,
- "url": "https://queue-it.com/",
- "companyId": null
- },
- "quick-counter.net": {
- "name": "Quick-counter.net",
- "categoryId": 6,
- "url": "http://www.quick-counter.net/",
- "companyId": "quick-counter.net"
- },
- "quigo_adsonar": {
- "name": "Quigo AdSonar",
- "categoryId": 4,
- "url": "http://www.quigo.com",
- "companyId": "verizon"
- },
- "quinstreet": {
- "name": "QuinStreet",
- "categoryId": 4,
- "url": "http://www.quinstreet.com/",
- "companyId": "quinstreet"
- },
- "quintelligence": {
- "name": "Quintelligence",
- "categoryId": 6,
- "url": "http://www.quintelligence.com/",
- "companyId": "quintelligence"
- },
- "quisma": {
- "name": "Quisma",
- "categoryId": 4,
- "url": "http://www.quisma.com/en/",
- "companyId": "wpp"
- },
- "quora.com": {
- "name": "Quora",
- "categoryId": 7,
- "url": "https://quora.com/",
- "companyId": null
- },
- "r_advertising": {
- "name": "R-Advertising",
- "categoryId": 4,
- "url": "http://www.r-advertising.com/",
- "companyId": "r-advertising"
- },
- "rackcdn.com": {
- "name": "Rackspace",
- "categoryId": 9,
- "url": "https://www.rackspace.com/",
- "companyId": null
- },
- "radarurl": {
- "name": "RadarURL",
- "categoryId": 6,
- "url": "http://radarurl.com/",
- "companyId": "radarurl"
- },
- "radial": {
- "name": "Radial",
- "categoryId": 4,
- "url": "http://www.clearsaleing.com/",
- "companyId": "radial"
- },
- "radiumone": {
- "name": "RadiumOne",
- "categoryId": 4,
- "url": "http://www.radiumone.com/index.html",
- "companyId": "rythmone"
- },
- "raisenow": {
- "name": "RaiseNow",
- "categoryId": 6,
- "url": "https://www.raisenow.com/de",
- "companyId": "raisenow"
- },
- "rakuten_display": {
- "name": "Rakuten Display",
- "categoryId": 4,
- "url": "https://rakutenmarketing.com/display",
- "companyId": "rakuten"
- },
- "rakuten_globalmarket": {
- "name": "Rakuten",
- "categoryId": 4,
- "url": "https://www.rakuten.co.jp/",
- "companyId": "rakuten"
- },
- "rakuten_widget": {
- "name": "Rakuten Widget",
- "categoryId": 4,
- "url": "http://global.rakuten.com/corp/",
- "companyId": "rakuten"
- },
- "rambler": {
- "name": "Rambler",
- "categoryId": 6,
- "url": "https://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rambler_count": {
- "name": "Rambler Count",
- "categoryId": 2,
- "url": "http://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rambler_widget": {
- "name": "Rambler Widget",
- "categoryId": 2,
- "url": "http://www.rambler.ru/",
- "companyId": "rambler"
- },
- "rapidspike": {
- "name": "RapidSpike",
- "categoryId": 6,
- "url": "https://www.rapidspike.com",
- "companyId": "rapidspike"
- },
- "ravelin": {
- "name": "Ravelin",
- "categoryId": 6,
- "url": "https://www.ravelin.com/",
- "companyId": null
- },
- "rawgit": {
- "name": "RawGit",
- "categoryId": 9,
- "url": "http://rawgit.com/",
- "companyId": null
- },
- "raygun": {
- "name": "Raygun",
- "categoryId": 4,
- "url": "https://raygun.com/",
- "companyId": "raygun"
- },
- "rbc_counter": {
- "name": "RBC Counter",
- "categoryId": 6,
- "url": "http://www.rbc.ru/",
- "companyId": "rbc_group"
- },
- "rcs.it": {
- "name": "RCS",
- "categoryId": 4,
- "url": "http://www.rcsmediagroup.it/",
- "companyId": "rcs"
- },
- "rd_station": {
- "name": "RD Station",
- "categoryId": 6,
- "url": "http://www.rdstation.com/en/",
- "companyId": "rd_station"
- },
- "rea_group": {
- "name": "REA Group Ltd.",
- "categoryId": 4,
- "url": "https://www.rea-group.com/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "reachforce": {
- "name": "ReachForce",
- "categoryId": 6,
- "url": "http://www.reachforce.com/",
- "companyId": "reachforce"
- },
- "reachjunction": {
- "name": "ReachJunction",
- "categoryId": 4,
- "url": "http://www.reachjunction.com/",
- "companyId": "reachjunction"
- },
- "reachlocal": {
- "name": "ReachLocal",
- "categoryId": 4,
- "url": "http://www.reachlocal.com/",
- "companyId": "reachlocal"
- },
- "reactful": {
- "name": "Reactful",
- "categoryId": 4,
- "url": "http://www.reactful.com/",
- "companyId": "reactful"
- },
- "reactivpub": {
- "name": "Reactivpub",
- "categoryId": 6,
- "url": "http://www.reactivpub.com/",
- "companyId": "r-advertising"
- },
- "reactx": {
- "name": "ReactX",
- "categoryId": 4,
- "url": "http://home.skinected.com",
- "companyId": "reactx"
- },
- "readerboard": {
- "name": "ReaderBoard",
- "categoryId": 7,
- "url": "http://www.readrboard.com",
- "companyId": "centre_phi"
- },
- "readme": {
- "name": "ReadMe",
- "categoryId": 6,
- "url": "https://readme.com/",
- "companyId": "readme"
- },
- "readspeaker.com": {
- "name": "ReadSpeaker",
- "categoryId": 2,
- "url": "https://www.readspeaker.com/",
- "companyId": null
- },
- "realclick": {
- "name": "RealClick",
- "categoryId": 4,
- "url": "http://www.realclick.co.kr/",
- "companyId": "realclick"
- },
- "realestate.com.au": {
- "name": "realestate.com.au Pty Limited",
- "categoryId": 4,
- "url": "https://www.realestate.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "realperson.de": {
- "name": "Realperson Chat",
- "categoryId": 2,
- "url": "http://www.optimise-it.de/",
- "companyId": "optimise_it"
- },
- "realtime": {
- "name": "Realtime",
- "categoryId": 2,
- "url": "http://www.realtime.co/",
- "companyId": "realtime"
- },
- "realytics": {
- "name": "Realytics",
- "categoryId": 6,
- "url": "https://www.realytics.io/",
- "companyId": "realytics"
- },
- "rebel_mouse": {
- "name": "Rebel Mouse",
- "categoryId": 6,
- "url": "https://www.rebelmouse.com/",
- "companyId": "rebelmouse"
- },
- "recaptcha": {
- "name": "reCAPTCHA",
- "categoryId": 8,
- "url": "https://www.google.com/recaptcha/about/",
- "companyId": "google",
- "source": "AdGuard"
- },
- "recettes.net": {
- "name": "Recettes.net",
- "categoryId": 8,
- "url": "http://www.recettes.net/",
- "companyId": "recettes.net"
- },
- "recopick": {
- "name": "RecoPick",
- "categoryId": 4,
- "url": "https://recopick.com/",
- "companyId": "recopick"
- },
- "recreativ": {
- "name": "Recreativ",
- "categoryId": 4,
- "url": "http://recreativ.ru/",
- "companyId": "recreativ"
- },
- "recruitics": {
- "name": "Recruitics",
- "categoryId": 6,
- "url": "http://recruitics.com/",
- "companyId": "recruitics"
- },
- "red_ventures": {
- "name": "Red Ventures",
- "categoryId": 6,
- "url": "https://www.redventures.com/",
- "companyId": "red_ventures"
- },
- "redblue_de": {
- "name": "redblue",
- "categoryId": 6,
- "url": "https://www.redblue.de/",
- "companyId": null
- },
- "redcdn.pl": {
- "name": "redGalaxy CDN",
- "categoryId": 9,
- "url": "http://www.atendesoftware.pl/",
- "companyId": "atende_software"
- },
- "reddit": {
- "name": "Reddit",
- "categoryId": 7,
- "url": "https://www.reddit.com",
- "companyId": "advance",
- "source": "AdGuard"
- },
- "redhelper": {
- "name": "RedHelper",
- "categoryId": 2,
- "url": "http://redhelper.com/",
- "companyId": "redhelper"
- },
- "redlotus": {
- "name": "RedLotus",
- "categoryId": 4,
- "url": "http://triggit.com/",
- "companyId": "redlotus"
- },
- "redtram": {
- "name": "RedTram",
- "categoryId": 4,
- "url": "http://www.redtram.com/",
- "companyId": "redtram"
- },
- "redtube.com": {
- "name": "redtube.com",
- "categoryId": 9,
- "url": null,
- "companyId": null
- },
- "redux_media": {
- "name": "Redux Media",
- "categoryId": 4,
- "url": "http://reduxmedia.com/",
- "companyId": "redux_media"
- },
- "reed_business_information": {
- "name": "Reed Business Information",
- "categoryId": 6,
- "url": "http://www.reedbusiness.com/",
- "companyId": "andera_partners"
- },
- "reembed.com": {
- "name": "reEmbed",
- "categoryId": 0,
- "url": "https://www.reembed.com/",
- "companyId": "reembed"
- },
- "reevoo.com": {
- "name": "Reevoo",
- "categoryId": 4,
- "url": "https://www.reevoo.com/en/",
- "companyId": "reevoo"
- },
- "refericon": {
- "name": "Refericon",
- "categoryId": 4,
- "url": "https://refericon.pl/#",
- "companyId": "refericon"
- },
- "referlocal": {
- "name": "ReferLocal",
- "categoryId": 4,
- "url": "http://referlocal.com/",
- "companyId": "referlocal"
- },
- "refersion": {
- "name": "Refersion",
- "categoryId": 4,
- "url": "https://www.refersion.com/",
- "companyId": "refersion"
- },
- "refined_labs": {
- "name": "Refined Labs",
- "categoryId": 4,
- "url": "http://www.refinedlabs.com",
- "companyId": "refined_labs"
- },
- "reflektion": {
- "name": "Reflektion",
- "categoryId": 4,
- "url": "http://",
- "companyId": "reflektion"
- },
- "reformal": {
- "name": "Reformal",
- "categoryId": 2,
- "url": "http://reformal.ru/",
- "companyId": "reformal"
- },
- "reinvigorate": {
- "name": "Reinvigorate",
- "categoryId": 6,
- "url": "http://www.reinvigorate.net/",
- "companyId": "media_temple"
- },
- "rekko": {
- "name": "Rekko",
- "categoryId": 4,
- "url": "http://convert.us/",
- "companyId": "rekko"
- },
- "reklam_store": {
- "name": "Reklam Store",
- "categoryId": 4,
- "url": "http://www.reklamstore.com",
- "companyId": "reklam_store"
- },
- "reklamport": {
- "name": "Reklamport",
- "categoryId": 4,
- "url": "http://www.reklamport.com/",
- "companyId": "reklamport"
- },
- "reklamz": {
- "name": "ReklamZ",
- "categoryId": 4,
- "url": "http://www.reklamz.com/",
- "companyId": "reklamz"
- },
- "rekmob": {
- "name": "Rekmob",
- "categoryId": 4,
- "url": "https://www.rekmob.com/",
- "companyId": "rekmob"
- },
- "relap": {
- "name": "Relap",
- "categoryId": 4,
- "url": "https://relap.io/",
- "companyId": "relap"
- },
- "relay42": {
- "name": "Relay42",
- "categoryId": 5,
- "url": "http://synovite.com",
- "companyId": "relay42"
- },
- "relestar": {
- "name": "Relestar",
- "categoryId": 6,
- "url": "https://relestar.com/",
- "companyId": "relestar"
- },
- "relevant4.com": {
- "name": "relevant4 GmbH",
- "categoryId": 8,
- "url": "https://www.relevant4.com/",
- "companyId": null
- },
- "remintrex": {
- "name": "Remintrex",
- "categoryId": 4,
- "url": "http://www.remintrex.com/",
- "companyId": null
- },
- "remove.video": {
- "name": "remove.video",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "repost.us": {
- "name": "Repost.us",
- "categoryId": 4,
- "url": "http://www.freerangecontent.com/",
- "companyId": "repost"
- },
- "republer.com": {
- "name": "Republer",
- "categoryId": 4,
- "url": "http://republer.com/",
- "companyId": "republer"
- },
- "res-meter": {
- "name": "Res-meter",
- "categoryId": 6,
- "url": "http://respublica.al/res-meter",
- "companyId": "respublica"
- },
- "research_now": {
- "name": "Research Now",
- "categoryId": 4,
- "url": "http://www.researchnow.com/",
- "companyId": "research_now"
- },
- "resonate_networks": {
- "name": "Resonate Networks",
- "categoryId": 4,
- "url": "http://www.resonatenetworks.com/",
- "companyId": "resonate"
- },
- "respond": {
- "name": "Respond",
- "categoryId": 4,
- "url": "http://respondhq.com/",
- "companyId": "respond"
- },
- "responsetap": {
- "name": "ResponseTap",
- "categoryId": 4,
- "url": "http://www.adinsight.eu/",
- "companyId": "responsetap"
- },
- "result_links": {
- "name": "Result Links",
- "categoryId": 4,
- "url": "http://www.resultlinks.com/",
- "companyId": "result_links"
- },
- "resultspage.com": {
- "name": "SLI Systems",
- "categoryId": 6,
- "url": "https://www.sli-systems.com/",
- "companyId": "sli_systems"
- },
- "retailrocket.net": {
- "name": "Retail Rocket",
- "categoryId": 4,
- "url": "https://retailrocket.net/",
- "companyId": "retail_rocket"
- },
- "retarget_app": {
- "name": "Retarget App",
- "categoryId": 4,
- "url": "https://retargetapp.com/",
- "companyId": "retargetapp"
- },
- "retargeter_beacon": {
- "name": "ReTargeter Beacon",
- "categoryId": 4,
- "url": "http://www.retargeter.com/",
- "companyId": "retargeter"
- },
- "retargeting.cl": {
- "name": "Retargeting.cl",
- "categoryId": 4,
- "url": "http://retargeting.cl/",
- "companyId": "retargeting"
- },
- "retention_science": {
- "name": "Retention Science",
- "categoryId": 4,
- "url": "http://retentionscience.com/",
- "companyId": "retention_science"
- },
- "reuters_media": {
- "name": "Reuters media",
- "categoryId": 9,
- "url": "https://reuters.com",
- "companyId": null
- },
- "revcontent": {
- "name": "RevContent",
- "categoryId": 4,
- "url": "https://www.revcontent.com/",
- "companyId": "revcontent"
- },
- "reve_marketing": {
- "name": "Reve Marketing",
- "categoryId": 4,
- "url": "http://tellafriend.socialtwist.com/",
- "companyId": "reve_marketing"
- },
- "revenue": {
- "name": "Revenue",
- "categoryId": 4,
- "url": "https://revenue.com/",
- "companyId": "revenue"
- },
- "revenuehits": {
- "name": "RevenueHits",
- "categoryId": 4,
- "url": "http://www.revenuehits.com/",
- "companyId": "revenuehits"
- },
- "revenuemantra": {
- "name": "RevenueMantra",
- "categoryId": 4,
- "url": "http://www.revenuemantra.com/",
- "companyId": "revenuemantra"
- },
- "revive_adserver": {
- "name": "Revive Adserver",
- "categoryId": 4,
- "url": "https://www.revive-adserver.com/",
- "companyId": "revive_adserver"
- },
- "revolver_maps": {
- "name": "Revolver Maps",
- "categoryId": 6,
- "url": "http://www.revolvermaps.com/",
- "companyId": "revolver_maps"
- },
- "revresponse": {
- "name": "RevResponse",
- "categoryId": 4,
- "url": "http://www.netline.com/",
- "companyId": "netline"
- },
- "rewords": {
- "name": "ReWords",
- "categoryId": 4,
- "url": "http://www.rewords.pl/",
- "companyId": "rewords"
- },
- "rhythmone": {
- "name": "RhythmOne",
- "categoryId": 4,
- "url": "http://www.adconductor.com/",
- "companyId": "rhythmone"
- },
- "rhythmone_beacon": {
- "name": "Rhythmone Beacon",
- "categoryId": 4,
- "url": "https://www.rhythmone.com/",
- "companyId": "rythmone"
- },
- "ria.ru": {
- "name": "ria.ru",
- "categoryId": 8,
- "url": "https://ria.ru/",
- "companyId": null
- },
- "rich_media_banner_network": {
- "name": "Rich Media Banner Network",
- "categoryId": 4,
- "url": "http://rmbn.ru/",
- "companyId": "rich_media_banner_network"
- },
- "richrelevance": {
- "name": "RichRelevance",
- "categoryId": 2,
- "url": "http://www.richrelevance.com/",
- "companyId": "richrelevance"
- },
- "ringier.ch": {
- "name": "Ringier",
- "categoryId": 6,
- "url": "http://ringier.ch/en",
- "companyId": "ringier"
- },
- "rio_seo": {
- "name": "Rio SEO",
- "categoryId": 7,
- "url": "http://www.meteorsolutions.com",
- "companyId": "rio_seo"
- },
- "riskfield.com": {
- "name": "Riskified",
- "categoryId": 2,
- "url": "https://www.riskified.com/",
- "companyId": "riskfield"
- },
- "rncdn3.com": {
- "name": "Reflected Networks",
- "categoryId": 9,
- "url": "http://www.rncdn3.com/",
- "companyId": null
- },
- "ro2.biz": {
- "name": "Ro2.biz",
- "categoryId": 4,
- "url": "http://ro2.biz/index.php?r=adikku",
- "companyId": "ro2.biz"
- },
- "roblox": {
- "name": "Roblox",
- "categoryId": 8,
- "url": "https://www.roblox.com/",
- "companyId": null
- },
- "rockerbox": {
- "name": "Rockerbox",
- "categoryId": 6,
- "url": "https://www.rockerbox.com/privacy",
- "companyId": "rockerbox"
- },
- "rocket.ia": {
- "name": "Rocket.ia",
- "categoryId": 4,
- "url": "https://rocket.la/",
- "companyId": "rocket.la"
- },
- "roi_trax": {
- "name": "ROI trax",
- "categoryId": 4,
- "url": "http://www.oneupweb.com/",
- "companyId": "oneupweb"
- },
- "roistat": {
- "name": "Roistat",
- "categoryId": 6,
- "url": "https://roistat.com",
- "companyId": "roistat"
- },
- "rollad": {
- "name": "Rollad",
- "categoryId": 4,
- "url": "http://rollad.ru",
- "companyId": "rollad"
- },
- "rollbar": {
- "name": "Rollbar",
- "categoryId": 6,
- "url": "http://www.rollbar.com/",
- "companyId": "rollbar"
- },
- "roost": {
- "name": "Roost",
- "categoryId": 6,
- "url": "http://roost.me/",
- "companyId": "roost"
- },
- "rooster": {
- "name": "Rooster",
- "categoryId": 6,
- "url": "http://www.getrooster.com/",
- "companyId": "rooster"
- },
- "roq.ad": {
- "name": "Roq.ad",
- "categoryId": 4,
- "url": "https://www.roq.ad/",
- "companyId": "roq.ad"
- },
- "rotaban": {
- "name": "RotaBan",
- "categoryId": 4,
- "url": "http://www.rotaban.ru/",
- "companyId": "rotaban"
- },
- "routenplaner-karten.com": {
- "name": "Routenplaner Karten",
- "categoryId": 2,
- "url": "https://www.routenplaner-karten.com/",
- "companyId": null
- },
- "rovion": {
- "name": "Rovion",
- "categoryId": 4,
- "url": "http://www.rovion.com/",
- "companyId": "rovion"
- },
- "rsspump": {
- "name": "RSSPump",
- "categoryId": 2,
- "url": "http://www.rsspump.com",
- "companyId": "rsspump"
- },
- "rtb_house": {
- "name": "RTB House",
- "categoryId": 4,
- "url": "http://en.adpilot.com/",
- "companyId": "rtb_house"
- },
- "rtblab": {
- "name": "RTBmarkt",
- "categoryId": 4,
- "url": "http://www.rtbmarkt.de/en/home/",
- "companyId": "rtbmarkt"
- },
- "rtbsuperhub.com": {
- "name": "rtbsuperhub.com",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "rtl_group": {
- "name": "RTL Group",
- "categoryId": 8,
- "url": "http://www.rtlgroup.com/www/htm/home.aspx",
- "companyId": "rtl_group"
- },
- "rtmark.net": {
- "name": "Advertising Technologies Ltd",
- "categoryId": 4,
- "url": "http://rtmark.net/",
- "companyId": "big_wall_vision"
- },
- "rubicon": {
- "name": "Rubicon",
- "categoryId": 4,
- "url": "http://rubiconproject.com/",
- "companyId": "rubicon_project"
- },
- "ruhrgebiet": {
- "name": "Ruhrgebiet",
- "categoryId": 4,
- "url": "https://www.ruhrgebiet-onlineservices.de/",
- "companyId": "ruhrgebiet"
- },
- "rummycircle": {
- "name": "RummyCircle",
- "categoryId": 4,
- "url": "https://www.rummycircle.com/",
- "companyId": "rummycircle"
- },
- "run": {
- "name": "RUN",
- "categoryId": 4,
- "url": "http://www.rundsp.com/",
- "companyId": "run"
- },
- "runative": {
- "name": "Runative",
- "categoryId": 4,
- "url": "https://runative.com/",
- "companyId": null
- },
- "rune": {
- "name": "Rune",
- "categoryId": 6,
- "url": "http://www.secretrune.com/",
- "companyId": "rune_inc."
- },
- "runmewivel.com": {
- "name": "runmewivel.com",
- "categoryId": 10,
- "url": null,
- "companyId": null
- },
- "rythmxchange": {
- "name": "Rythmxchange",
- "categoryId": 0,
- "url": "https://www.rhythmone.com/",
- "companyId": "rythmone"
- },
- "s24_com": {
- "name": "Shopping24 internet group",
- "categoryId": 4,
- "url": "https://www.s24.com/",
- "companyId": null
- },
- "s3xified.com": {
- "name": "s3xified.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sabavision": {
- "name": "SabaVision",
- "categoryId": 4,
- "url": "http://www.sabavision.com/en/",
- "companyId": "sabavision"
- },
- "sagemetrics": {
- "name": "SageMetrics",
- "categoryId": 4,
- "url": "http://www.sagemetrics.com",
- "companyId": "ipmg"
- },
- "sailthru_horizon": {
- "name": "Sailthru Horizon",
- "categoryId": 4,
- "url": "https://www.sailthru.com",
- "companyId": "sailthru"
- },
- "salecycle": {
- "name": "SaleCycle",
- "categoryId": 4,
- "url": "http://www.salecycle.com/",
- "companyId": "salecycle"
- },
- "sales_feed": {
- "name": "Sales Feed",
- "categoryId": 4,
- "url": "https://www.salesfeed.com/",
- "companyId": "sales_feed"
- },
- "sales_manago": {
- "name": "SALESmanago",
- "categoryId": 6,
- "url": "https://www.salesmanago.com/",
- "companyId": "sales_manago"
- },
- "salesforce.com": {
- "name": "Salesforce",
- "categoryId": 4,
- "url": "https://www.salesforce.com/eu/",
- "companyId": "salesforce"
- },
- "salesforce_live_agent": {
- "name": "Salesforce Live Agent",
- "categoryId": 2,
- "url": "http://www.salesforce.com/",
- "companyId": "salesforce"
- },
- "salesfusion": {
- "name": "SalesFUSION",
- "categoryId": 4,
- "url": "http://salesfusion.com/",
- "companyId": "salesfusion"
- },
- "salespider_media": {
- "name": "SaleSpider Media",
- "categoryId": 4,
- "url": "http://salespidermedia.com/",
- "companyId": "salespider_media"
- },
- "salesviewer": {
- "name": "SalesViewer",
- "categoryId": 6,
- "url": "https://www.salesviewer.com/",
- "companyId": "salesviewer"
- },
- "samba.tv": {
- "name": "Samba TV",
- "categoryId": 4,
- "url": "https://samba.tv/",
- "companyId": "samba_tv"
- },
- "samsung": {
- "name": "Samsung",
- "categoryId": 8,
- "url": "https://www.samsung.com/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungads": {
- "name": "Samsung Ads",
- "categoryId": 4,
- "url": "https://www.samsung.com/business/samsungads/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungapps": {
- "name": "Samsung Apps",
- "categoryId": 101,
- "url": "https://www.samsung.com/au/apps/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungmobile": {
- "name": "Samsung Mobile",
- "categoryId": 101,
- "url": "https://www.samsung.com/mobile/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungpush": {
- "name": "Samsung Push",
- "categoryId": 8,
- "url": null,
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungsds": {
- "name": "Samsung SDS",
- "categoryId": 10,
- "url": "https://www.samsungsds.com/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "samsungtv": {
- "name": "Samsung TV",
- "categoryId": 15,
- "url": "https://www.samsung.com/au/tvs/",
- "companyId": "samsung",
- "source": "AdGuard"
- },
- "sanoma.fi": {
- "name": "Sanoma",
- "categoryId": 4,
- "url": "https://sanoma.com/",
- "companyId": "sanoma"
- },
- "sap_crm": {
- "name": "SAP CRM",
- "categoryId": 6,
- "url": "https://www.sap.com/products/crm.html",
- "companyId": "sap"
- },
- "sap_sales_cloud": {
- "name": "SAP Sales Cloud",
- "categoryId": 2,
- "url": "http://leadforce1.com/",
- "companyId": "sap"
- },
- "sap_xm": {
- "name": "SAP Exchange Media",
- "categoryId": 4,
- "url": "http://sapexchange.media/",
- "companyId": null
- },
- "sape.ru": {
- "name": "Sape",
- "categoryId": 6,
- "url": "https://www.sape.ru/en",
- "companyId": "sape"
- },
- "sapo_ads": {
- "name": "SAPO Ads",
- "categoryId": 4,
- "url": "http://www.sapo.pt/",
- "companyId": "sapo"
- },
- "sas": {
- "name": "SAS",
- "categoryId": 6,
- "url": "http://www.sas.com/",
- "companyId": "sas"
- },
- "say.ac": {
- "name": "Say.ac",
- "categoryId": 4,
- "url": "http://say.ac",
- "companyId": "say.ac"
- },
- "say_media": {
- "name": "Say Media",
- "categoryId": 4,
- "url": "http://www.saymedia.com/",
- "companyId": "say_media"
- },
- "sayyac": {
- "name": "Sayyac",
- "categoryId": 6,
- "url": "http://www.sayyac.com/",
- "companyId": "sayyac"
- },
- "scarabresearch": {
- "name": "Scarab Research",
- "categoryId": 4,
- "url": "https://www.scarabresearch.com/",
- "companyId": "emarsys"
- },
- "schibsted": {
- "name": "Schibsted Media Group",
- "categoryId": 8,
- "url": "http://www.schibsted.com/",
- "companyId": "schibsted_asa"
- },
- "schneevonmorgen.com": {
- "name": "Schnee von Morgen",
- "categoryId": 0,
- "url": "http://www.schneevonmorgen.com/",
- "companyId": null
- },
- "scoota": {
- "name": "Scoota",
- "categoryId": 4,
- "url": "http://scoota.com/",
- "companyId": "rockabox"
- },
- "scorecard_research_beacon": {
- "name": "ScoreCard Research Beacon",
- "categoryId": 6,
- "url": "https://www.scorecardresearch.com/",
- "companyId": "comscore"
- },
- "scout_analytics": {
- "name": "Scout Analytics",
- "categoryId": 4,
- "url": "http://scoutanalytics.com/",
- "companyId": "scout_analytics"
- },
- "scribblelive": {
- "name": "ScribbleLive",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "scribol": {
- "name": "Scribol",
- "categoryId": 4,
- "url": "http://scribol.com/",
- "companyId": "scribol"
- },
- "scripps_analytics": {
- "name": "Scripps Analytics",
- "categoryId": 6,
- "url": "http://www.scrippsnetworksinteractive.com/",
- "companyId": "scripps_networks"
- },
- "scroll": {
- "name": "Scroll",
- "categoryId": 5,
- "url": "https://scroll.com/",
- "companyId": "scroll"
- },
- "scupio": {
- "name": "Scupio",
- "categoryId": 4,
- "url": "http://ad.scupio.com/",
- "companyId": "bridgewell"
- },
- "search123": {
- "name": "Search123",
- "categoryId": 4,
- "url": "http://www.search123.com/",
- "companyId": "search123"
- },
- "searchforce": {
- "name": "SearchForce",
- "categoryId": 4,
- "url": "http://www.searchforce.com/",
- "companyId": "searchforce"
- },
- "searchignite": {
- "name": "SearchIgnite",
- "categoryId": 4,
- "url": "https://searchignite.com/",
- "companyId": "zeta"
- },
- "searchrev": {
- "name": "SearchRev",
- "categoryId": 4,
- "url": "http://www.searchrev.com/",
- "companyId": "searchrev"
- },
- "second_media": {
- "name": "Second Media",
- "categoryId": 4,
- "url": "http://www.secondmedia.com/",
- "companyId": "second_media"
- },
- "sectigo": {
- "name": "Sectigo Limited",
- "categoryId": 5,
- "url": "https://www.sectigo.com",
- "companyId": "sectigo",
- "source": "AdGuard"
- },
- "securedtouch": {
- "name": "SecuredTouch",
- "categoryId": 6,
- "url": "https://www.securedtouch.com/",
- "companyId": null
- },
- "securedvisit": {
- "name": "SecuredVisit",
- "categoryId": 4,
- "url": "http://securedvisit.com/",
- "companyId": "securedvisit"
- },
- "seeding_alliance": {
- "name": "Seeding Alliance",
- "categoryId": 4,
- "url": "http://seeding-alliance.de",
- "companyId": "stroer"
- },
- "seedtag.com": {
- "name": "Seedtag",
- "categoryId": 4,
- "url": "https://www.seedtag.com/en/",
- "companyId": "seedtag"
- },
- "seevolution": {
- "name": "SeeVolution",
- "categoryId": 6,
- "url": "http://www.seevolution.com",
- "companyId": "seevolution"
- },
- "segment": {
- "name": "Segment",
- "categoryId": 6,
- "url": "https://segment.io/",
- "companyId": "segment"
- },
- "segmento": {
- "name": "Segmento",
- "categoryId": 4,
- "url": "https://segmento.ru/en",
- "companyId": "segmento"
- },
- "segmint": {
- "name": "Segmint",
- "categoryId": 6,
- "url": "http://www.segmint.com/",
- "companyId": "segmint"
- },
- "sekindo": {
- "name": "Sekindo",
- "categoryId": 4,
- "url": "http://www.sekindo.com/",
- "companyId": "sekindo"
- },
- "sellpoints": {
- "name": "Sellpoints",
- "categoryId": 4,
- "url": "https://www.sellpoints.com/",
- "companyId": "sellpoints"
- },
- "semantiqo.com": {
- "name": "Semantiqo",
- "categoryId": 4,
- "url": "https://semantiqo.com/",
- "companyId": null
- },
- "semasio": {
- "name": "Semasio",
- "categoryId": 4,
- "url": "http://semasio.com/",
- "companyId": "semasio"
- },
- "semilo": {
- "name": "Semilo",
- "categoryId": 4,
- "url": "http://www.semilo.nl/",
- "companyId": "semilo"
- },
- "semknox.com": {
- "name": "SEMKNOX GmbH",
- "categoryId": 5,
- "url": "https://semknox.com/",
- "companyId": null
- },
- "sendinblue": {
- "name": "sendinblue",
- "categoryId": 4,
- "url": "https://fr.sendinblue.com/",
- "companyId": "sendinblue"
- },
- "sendpulse.com": {
- "name": "SendPulse",
- "categoryId": 3,
- "url": "https://sendpulse.com/",
- "companyId": null
- },
- "sendsay": {
- "name": "Sendsay",
- "categoryId": 2,
- "url": "https://sendsay.ru",
- "companyId": "sendsay"
- },
- "sense_digital": {
- "name": "Sense Digital",
- "categoryId": 6,
- "url": "http://sensedigital.in/",
- "companyId": "sense_digital"
- },
- "sensors_data": {
- "name": "Sensors Data",
- "categoryId": 6,
- "url": "https://www.sensorsdata.cn/",
- "companyId": "sensors_data"
- },
- "sentifi.com": {
- "name": "Sentifi",
- "categoryId": 6,
- "url": "https://sentifi.com/",
- "companyId": "sentifi"
- },
- "sentry": {
- "name": "Sentry",
- "categoryId": 6,
- "url": "https://sentry.io/",
- "companyId": "sentry"
- },
- "sepyra": {
- "name": "Sepyra",
- "categoryId": 4,
- "url": "http://sepyra.com/",
- "companyId": "sepyra"
- },
- "sessioncam": {
- "name": "SessionCam",
- "categoryId": 6,
- "url": "http://www.sessioncam.com/",
- "companyId": "sessioncam"
- },
- "sessionly": {
- "name": "Sessionly",
- "categoryId": 2,
- "url": "https://www.sessionly.io/",
- "companyId": "sessionly"
- },
- "sevenone_media": {
- "name": "SevenOne Media",
- "categoryId": 4,
- "url": null,
- "companyId": null
- },
- "sexadnetwork": {
- "name": "SexAdNetwork",
- "categoryId": 3,
- "url": "http://www.sexadnetwork.com/",
- "companyId": "sexadnetwork"
- },
- "sexinyourcity": {
- "name": "SexInYourCity",
- "categoryId": 3,
- "url": "http://www.sexinyourcity.com/",
- "companyId": "sexinyourcity"
- },
- "sextracker": {
- "name": "SexTracker",
- "categoryId": 3,
- "url": "http://webmasters.sextracker.com/",
- "companyId": "sextracker"
- },
- "sexypartners.net": {
- "name": "sexypartners.net",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "seznam": {
- "name": "Seznam",
- "categoryId": 6,
- "url": "https://onas.seznam.cz/cz/",
- "companyId": "seznam"
- },
- "shareaholic": {
- "name": "Shareaholic",
- "categoryId": 6,
- "url": "https://www.shareaholic.com/",
- "companyId": "shareaholic"
- },
- "shareasale": {
- "name": "ShareASale",
- "categoryId": 4,
- "url": "http://www.shareasale.com/",
- "companyId": "shareasale"
- },
- "sharecompany": {
- "name": "ShareCompany",
- "categoryId": 2,
- "url": "http://sharecompany.nl",
- "companyId": "sharecompany"
- },
- "sharepoint": {
- "name": "SharePoint",
- "categoryId": 8,
- "url": "https://www.microsoft.com/microsoft-365/sharepoint/collaboration",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "sharethis": {
- "name": "ShareThis",
- "categoryId": 4,
- "url": "http://sharethis.com/",
- "companyId": "sharethis"
- },
- "sharethrough": {
- "name": "ShareThrough",
- "categoryId": 4,
- "url": "http://www.sharethrough.com/",
- "companyId": "sharethrough"
- },
- "sharpspring": {
- "name": "Sharpspring",
- "categoryId": 6,
- "url": "https://sharpspring.com/",
- "companyId": "sharpspring"
- },
- "sheego.de": {
- "name": "sheego.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "sheerid": {
- "name": "SheerID",
- "categoryId": 4,
- "url": "http://www.sheerid.com/",
- "companyId": "sheerid"
- },
- "shinystat": {
- "name": "ShinyStat",
- "categoryId": 6,
- "url": "http://www.shinystat.com/",
- "companyId": "shinystat"
- },
- "shop_target": {
- "name": "Shop Target",
- "categoryId": 4,
- "url": "http://shoptarget.com.br/",
- "companyId": "shopback"
- },
- "shopauskunft.de": {
- "name": "ShopAuskunft.de",
- "categoryId": 2,
- "url": "https://shopauskunft.de/",
- "companyId": null
- },
- "shopgate.com": {
- "name": "Shopgate",
- "categoryId": 2,
- "url": "https://www.shopgate.com/",
- "companyId": null
- },
- "shopify": {
- "name": "Shopify Inc.",
- "categoryId": 2,
- "url": "https://www.shopify.com/",
- "companyId": "shopify",
- "source": "AdGuard"
- },
- "shopify_stats": {
- "name": "Shopify Stats",
- "categoryId": 6,
- "url": "http://www.shopify.com/",
- "companyId": "shopify",
- "source": "AdGuard"
- },
- "shopifycdn.com": {
- "name": "Shopify CDN",
- "categoryId": 9,
- "url": "https://www.shopify.com/",
- "companyId": "shopify"
- },
- "shopifycloud.com": {
- "name": "Shopify Cloud",
- "categoryId": 2,
- "url": "https://www.shopify.com/",
- "companyId": "shopify"
- },
- "shopper_approved": {
- "name": "Shopper Approved",
- "categoryId": 2,
- "url": "http://www.shopperapproved.com",
- "companyId": "shopper_approved"
- },
- "shopping_com": {
- "name": "Shopping.com",
- "categoryId": 4,
- "url": "https://partnernetwork.ebay.com/",
- "companyId": "ebay_partner_network"
- },
- "shopping_flux": {
- "name": "Shopping Flux",
- "categoryId": 6,
- "url": "http://www.shopping-flux.com/",
- "companyId": "shopping_flux"
- },
- "shoprunner": {
- "name": "ShopRunner",
- "categoryId": 2,
- "url": "https://www.shoprunner.com",
- "companyId": "shoprunner"
- },
- "shopsocially": {
- "name": "ShopSocially",
- "categoryId": 2,
- "url": "http://shopsocially.com/",
- "companyId": "shopsocially"
- },
- "shopzilla": {
- "name": "Shopzilla",
- "categoryId": 4,
- "url": "http://www.shopzilla.com/",
- "companyId": "shopzilla"
- },
- "shortnews": {
- "name": "ShortNews.de",
- "categoryId": 8,
- "url": "http://www.shortnews.de/#",
- "companyId": null
- },
- "showrss": {
- "name": "showRSS",
- "categoryId": 8,
- "url": "https://showrss.info/",
- "companyId": "showrss",
- "source": "AdGuard"
- },
- "shrink": {
- "name": "Shrink",
- "categoryId": 2,
- "url": "http://shink.in/",
- "companyId": "shrink.in"
- },
- "shutterstock": {
- "name": "Shutterstock",
- "categoryId": 8,
- "url": "https://www.shutterstock.com/",
- "companyId": "shutterstock_inc"
- },
- "siblesectiveal.club": {
- "name": "siblesectiveal.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sidecar": {
- "name": "Sidecar",
- "categoryId": 6,
- "url": "http://hello.getsidecar.com/",
- "companyId": "sidecar"
- },
- "sift_science": {
- "name": "Sift Science",
- "categoryId": 6,
- "url": "https://siftscience.com/",
- "companyId": "sift_science"
- },
- "signal": {
- "name": "Signal",
- "categoryId": 5,
- "url": "https://www.signal.co/",
- "companyId": "signal_digital"
- },
- "signifyd": {
- "name": "Signifyd",
- "categoryId": 6,
- "url": "https://www.signifyd.com/",
- "companyId": "signifyd"
- },
- "silverpop": {
- "name": "Silverpop",
- "categoryId": 2,
- "url": "http://www.silverpop.com/",
- "companyId": "ibm"
- },
- "similardeals.net": {
- "name": "SimilarDeals",
- "categoryId": 8,
- "url": "http://www.similardeals.net/",
- "companyId": null
- },
- "similarweb": {
- "name": "SimilarWeb",
- "categoryId": 6,
- "url": "https://www.similarweb.com/",
- "companyId": "similarweb",
- "source": "AdGuard"
- },
- "simplereach": {
- "name": "SimpleReach",
- "categoryId": 6,
- "url": "https://www.nativo.com/simplereach",
- "companyId": "nativo"
- },
- "simpli.fi": {
- "name": "Simpli.fi",
- "categoryId": 4,
- "url": "http://www.simpli.fi",
- "companyId": "simpli.fi"
- },
- "sina": {
- "name": "Sina",
- "categoryId": 6,
- "url": "http://www.sina.com/",
- "companyId": "sina"
- },
- "sina_cdn": {
- "name": "Sina CDN",
- "categoryId": 9,
- "url": "https://www.sina.com.cn/",
- "companyId": "sina"
- },
- "singlefeed": {
- "name": "SingleFeed",
- "categoryId": 4,
- "url": "https://www.singlefeed.com/",
- "companyId": "singlefeed"
- },
- "sirdata": {
- "name": "Sirdata",
- "categoryId": 6,
- "url": "http://www.sirdata.com/home/",
- "companyId": "sirdata"
- },
- "site24x7": {
- "name": "Site24x7",
- "categoryId": 6,
- "url": "https://www.site24x7.com/",
- "companyId": "zoho_corp"
- },
- "site_booster": {
- "name": "Site Booster",
- "categoryId": 7,
- "url": "https://sitebooster.com/",
- "companyId": "site_booster"
- },
- "site_stratos": {
- "name": "Site Stratos",
- "categoryId": 4,
- "url": "http://www.infocube.co.jp/",
- "companyId": "infocube"
- },
- "siteapps": {
- "name": "SiteApps",
- "categoryId": 2,
- "url": "http://siteapps.com",
- "companyId": "siteapps"
- },
- "sitebro": {
- "name": "SiteBro",
- "categoryId": 6,
- "url": "http://www.sitebro.net/",
- "companyId": "sitebro"
- },
- "siteheart": {
- "name": "SiteHeart",
- "categoryId": 2,
- "url": "http://siteheart.com/",
- "companyId": "siteheart"
- },
- "siteimprove": {
- "name": "Siteimprove",
- "categoryId": 6,
- "url": "http://siteimprove.com",
- "companyId": "siteimprove"
- },
- "siteimprove_analytics": {
- "name": "SiteImprove Analytics",
- "categoryId": 6,
- "url": "http://siteimprove.com",
- "companyId": "siteimprove"
- },
- "sitelabweb.com": {
- "name": "sitelabweb.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sitemeter": {
- "name": "SiteMeter",
- "categoryId": 6,
- "url": "http://www.sitemeter.com/",
- "companyId": "sitemeter,_inc."
- },
- "sitescout": {
- "name": "SiteScout by Centro",
- "categoryId": 4,
- "url": "http://www.sitescout.com",
- "companyId": "centro"
- },
- "sitetag": {
- "name": "SiteTag",
- "categoryId": 2,
- "url": "http://www.sitetag.us/",
- "companyId": "sitetag"
- },
- "sitewit": {
- "name": "SiteWit",
- "categoryId": 4,
- "url": "http://www.sitewit.com/",
- "companyId": "sitewit"
- },
- "six_apart_advertising": {
- "name": "Six Apart Advertising",
- "categoryId": 4,
- "url": "http://www.sixapart.com/advertising/",
- "companyId": "six_apart"
- },
- "sixt-neuwagen.de": {
- "name": "sixt-neuwagen.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "skadtec.com": {
- "name": "GP One GmbH",
- "categoryId": 6,
- "url": "http://www.gp-one.com/",
- "companyId": null
- },
- "skimlinks": {
- "name": "SkimLinks",
- "categoryId": 4,
- "url": "http://www.skimlinks.com/",
- "companyId": "skimlinks"
- },
- "skroutz": {
- "name": "Skroutz",
- "categoryId": 6,
- "url": "https://www.skroutz.gr/",
- "companyId": "skroutz"
- },
- "skyglue": {
- "name": "SkyGlue",
- "categoryId": 6,
- "url": "http://www.skyglue.com/",
- "companyId": "skyglue_technology"
- },
- "skype": {
- "name": "Skype",
- "categoryId": 2,
- "url": "http://www.skype.com",
- "companyId": "microsoft"
- },
- "skysa": {
- "name": "Skysa",
- "categoryId": 2,
- "url": "http://www.skysa.com/",
- "companyId": "skysa"
- },
- "skyscnr.com": {
- "name": "Skyscanner CDN",
- "categoryId": 9,
- "url": "https://www.skyscanner.net/",
- "companyId": null
- },
- "slack": {
- "name": "Slack",
- "categoryId": 8,
- "url": "https://www.slack.com/",
- "companyId": "salesforce",
- "source": "AdGuard"
- },
- "slashdot_widget": {
- "name": "Slashdot Widget",
- "categoryId": 2,
- "url": "http://slashdot.org",
- "companyId": "slashdot"
- },
- "sleeknote": {
- "name": "Sleeknote",
- "categoryId": 2,
- "url": "https://sleeknote.com/",
- "companyId": "sleeknote"
- },
- "sli_systems": {
- "name": "SLI Systems",
- "categoryId": 2,
- "url": "http://www.sli-systems.com",
- "companyId": "sli_systems"
- },
- "slice_factory": {
- "name": "Slice Factory",
- "categoryId": 2,
- "url": "http://www.slicefactory.com/",
- "companyId": "slice_factory"
- },
- "slimcutmedia": {
- "name": "SlimCutMedia",
- "categoryId": 6,
- "url": "http://www.slimcutmedia.com/",
- "companyId": "slimcutmedia"
- },
- "slingpic": {
- "name": "Slingpic",
- "categoryId": 4,
- "url": "http://slingpic.com/",
- "companyId": "affectv"
- },
- "smaato": {
- "name": "Smaato",
- "categoryId": 4,
- "url": "http://www.smaato.com/",
- "companyId": "smaato"
- },
- "smart4ads": {
- "name": "smart4ads",
- "categoryId": 4,
- "url": "http://www.smart4ads.com",
- "companyId": "smart4ads"
- },
- "smart_adserver": {
- "name": "SMART AdServer",
- "categoryId": 4,
- "url": "https://smartadserver.com/",
- "companyId": "smart_adserver"
- },
- "smart_call": {
- "name": "Smart Call",
- "categoryId": 2,
- "url": "https://smartcall.kz/",
- "companyId": "smart_call"
- },
- "smart_content": {
- "name": "Smart Content",
- "categoryId": 4,
- "url": "http://www.getsmartcontent.com",
- "companyId": "get_smart_content"
- },
- "smart_device_media": {
- "name": "Smart Device Media",
- "categoryId": 4,
- "url": "http://www.smartdevicemedia.com/",
- "companyId": "smart_device_media"
- },
- "smart_leads": {
- "name": "Smart Leads",
- "categoryId": 4,
- "url": "http://www.cnt.my/",
- "companyId": "smart_leads"
- },
- "smart_selling": {
- "name": "Smart Selling",
- "categoryId": 2,
- "url": "https://smartselling.cz/",
- "companyId": "smart_selling"
- },
- "smartad": {
- "name": "smartAD",
- "categoryId": 4,
- "url": "http://smartad.eu/",
- "companyId": "smartad"
- },
- "smartbn": {
- "name": "SmartBN",
- "categoryId": 4,
- "url": "http://smartbn.ru/",
- "companyId": "smartbn"
- },
- "smartclick.net": {
- "name": "SmartClick",
- "categoryId": 4,
- "url": "http://smartclick.net/",
- "companyId": null
- },
- "smartclip": {
- "name": "SmartClip",
- "categoryId": 4,
- "url": "http://www.smartclip.com/",
- "companyId": "smartclip"
- },
- "smartcontext": {
- "name": "SmartContext",
- "categoryId": 4,
- "url": "http://smartcontext.pl/",
- "companyId": "smartcontext"
- },
- "smarter_remarketer": {
- "name": "SmarterHQ",
- "categoryId": 4,
- "url": "https://smarterhq.com",
- "companyId": "smarterhq"
- },
- "smarter_travel": {
- "name": "Smarter Travel Media",
- "categoryId": 4,
- "url": "https://www.smartertravel.com/",
- "companyId": "iac_apps"
- },
- "smarterclick": {
- "name": "Smarterclick",
- "categoryId": 4,
- "url": "http://www.smarterclick.co.uk/",
- "companyId": "smarter_click"
- },
- "smartertrack": {
- "name": "SmarterTrack",
- "categoryId": 4,
- "url": "http://www.smartertrack.com/",
- "companyId": "smartertrack"
- },
- "smartlink.cool": {
- "name": "smartlink.cool",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "smartlook": {
- "name": "Smartlook",
- "categoryId": 2,
- "url": "https://www.smartlook.com/",
- "companyId": "smartlook"
- },
- "smartstream.tv": {
- "name": "SmartStream.TV",
- "categoryId": 4,
- "url": "https://www.smartstream.tv/en",
- "companyId": "smartstream"
- },
- "smartsupp_chat": {
- "name": "Smartsupp Chat",
- "categoryId": 2,
- "url": "https://www.smartsupp.com/",
- "companyId": "smartsuppp"
- },
- "smi2.ru": {
- "name": "smi2.ru",
- "categoryId": 6,
- "url": "https://smi2.net/",
- "companyId": "media2_stat.media"
- },
- "smooch": {
- "name": "Smooch",
- "categoryId": 2,
- "url": "https://smooch.io/",
- "companyId": "smooch"
- },
- "smowtion": {
- "name": "Smowtion",
- "categoryId": 4,
- "url": "http://www.smowtion.com/",
- "companyId": "smowtion"
- },
- "smx_ventures": {
- "name": "SMX Ventures",
- "categoryId": 6,
- "url": "http://smxeventures.com/",
- "companyId": "smx_ventures"
- },
- "smyte": {
- "name": "Smyte",
- "categoryId": 6,
- "url": "https://www.smyte.com/",
- "companyId": "smyte"
- },
- "snacktv": {
- "name": "SnackTV",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "snacktv_player": {
- "name": "SnackTV-Player",
- "categoryId": 0,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "snap": {
- "name": "Snap",
- "categoryId": 2,
- "url": "http://www.snap.com/",
- "companyId": "snap_technologies"
- },
- "snap_engage": {
- "name": "Snap Engage",
- "categoryId": 2,
- "url": "https://snapengage.com/",
- "companyId": "snap_engage"
- },
- "snapchat": {
- "name": "Snapchat For Business",
- "categoryId": 4,
- "url": "https://www.snapchat.com/",
- "companyId": "snap_technologies"
- },
- "snapcraft": {
- "name": "Snapcraft",
- "categoryId": 8,
- "url": "https://snapcraft.io",
- "companyId": "canonical",
- "source": "AdGuard"
- },
- "snigelweb": {
- "name": "SnigelWeb, Inc.",
- "categoryId": 4,
- "url": "http://www.snigelweb.com/",
- "companyId": "snigelweb_inc"
- },
- "snoobi": {
- "name": "Snoobi",
- "categoryId": 6,
- "url": "http://www.snoobi.eu/",
- "companyId": "snoobi"
- },
- "snoobi_analytics": {
- "name": "Snoobi Analytics",
- "categoryId": 6,
- "url": "http://www.snoobi.com/",
- "companyId": "snoobi_oy"
- },
- "snowplow": {
- "name": "Snowplow",
- "categoryId": 6,
- "url": "http://snowplowanalytics.com/",
- "companyId": "snowplow"
- },
- "soasta_mpulse": {
- "name": "SOASTA mPulse",
- "categoryId": 6,
- "url": "http://www.soasta.com/",
- "companyId": "akamai"
- },
- "sociable_labs": {
- "name": "Sociable Labs",
- "categoryId": 4,
- "url": "http://www.sociablelabs.com/",
- "companyId": "sociable_labs"
- },
- "social_amp": {
- "name": "Social Amp",
- "categoryId": 4,
- "url": "http://www.merkleinc.com/",
- "companyId": "dentsu_aegis_network"
- },
- "social_annex": {
- "name": "Social Annex",
- "categoryId": 4,
- "url": "http://www.socialannex.com",
- "companyId": "social_annex"
- },
- "social_miner": {
- "name": "Social Miner",
- "categoryId": 7,
- "url": "https://socialminer.com/",
- "companyId": "social_miner"
- },
- "socialbeat": {
- "name": "socialbeat",
- "categoryId": 4,
- "url": "http://www.socialbeat.it/",
- "companyId": "socialbeat"
- },
- "socialrms": {
- "name": "SocialRMS",
- "categoryId": 7,
- "url": "http://socialinterface.com/socialrms/",
- "companyId": "socialinterface"
- },
- "sociaplus.com": {
- "name": "SociaPlus",
- "categoryId": 6,
- "url": "https://sociaplus.com/",
- "companyId": null
- },
- "sociomantic": {
- "name": "Sociomantic",
- "categoryId": 4,
- "url": "http://www.sociomantic.com/",
- "companyId": "sociomantic_labs_gmbh"
- },
- "sohu": {
- "name": "Sohu",
- "categoryId": 7,
- "url": "http://www.sohu.com",
- "companyId": "sohu"
- },
- "sojern": {
- "name": "Sojern",
- "categoryId": 4,
- "url": "http://www.sojern.com/",
- "companyId": "sojern"
- },
- "sokrati": {
- "name": "Sokrati",
- "categoryId": 4,
- "url": "http://sokrati.com/",
- "companyId": "sokrati"
- },
- "solads.media": {
- "name": "solads.media",
- "categoryId": 4,
- "url": "http://solads.media/",
- "companyId": null
- },
- "solaredge": {
- "name": "SolarEdge Technologies, Inc.",
- "categoryId": 8,
- "url": "https://www.solaredge.com/",
- "companyId": "solaredge",
- "source": "AdGuard"
- },
- "solidopinion": {
- "name": "SolidOpinion",
- "categoryId": 2,
- "url": "https://solidopinion.com/",
- "companyId": "solidopinion"
- },
- "solve_media": {
- "name": "Solve Media",
- "categoryId": 4,
- "url": "http://solvemedia.com/",
- "companyId": "solve_media"
- },
- "soma_2": {
- "name": "SOMA 2",
- "categoryId": 4,
- "url": "http://www.webcombi.de/",
- "companyId": "soma_2_gmbh"
- },
- "somoaudience": {
- "name": "SoMo Audience",
- "categoryId": 4,
- "url": "https://somoaudience.com/",
- "companyId": "somoaudience"
- },
- "sonobi": {
- "name": "Sonobi",
- "categoryId": 4,
- "url": "http://sonobi.com/",
- "companyId": "sonobi"
- },
- "sonos": {
- "name": "Sonos",
- "categoryId": 8,
- "url": "https://www.sonos.com/",
- "companyId": "sonos",
- "source": "AdGuard"
- },
- "sophus3": {
- "name": "Sophus3",
- "categoryId": 4,
- "url": "http://www.sophus3.com/",
- "companyId": "sophus3"
- },
- "sortable": {
- "name": "Sortable",
- "categoryId": 4,
- "url": "https://sortable.com/",
- "companyId": "sortable"
- },
- "soundcloud": {
- "name": "SoundCloud",
- "categoryId": 0,
- "url": "http://soundcloud.com/",
- "companyId": "soundcloud"
- },
- "sourceknowledge_pixel": {
- "name": "SourceKnowledge Pixel",
- "categoryId": 4,
- "url": "http://www.provenpixel.com/",
- "companyId": "sourceknowledge"
- },
- "sourcepoint": {
- "name": "Sourcepoint",
- "categoryId": 4,
- "url": "https://www.sourcepoint.com/",
- "companyId": "sourcepoint"
- },
- "sovrn": {
- "name": "sovrn",
- "categoryId": 4,
- "url": "https://www.sovrn.com/",
- "companyId": "sovrn"
- },
- "sovrn_viewability_solutions": {
- "name": "Sovrn Signal",
- "categoryId": 4,
- "url": "https://www.sovrn.com/publishers/signal/",
- "companyId": "sovrn"
- },
- "spark_studios": {
- "name": "Spark Studios",
- "categoryId": 0,
- "url": "http://www.sparkstudios.com/",
- "companyId": "spark_studios"
- },
- "sparkasse.de": {
- "name": "sparkasse.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "speakpipe": {
- "name": "SpeakPipe",
- "categoryId": 2,
- "url": "http://www.speakpipe.com/",
- "companyId": "speakpipe"
- },
- "specific_media": {
- "name": "Specific Media",
- "categoryId": 4,
- "url": "http://www.specificmedia.com",
- "companyId": "specific_media"
- },
- "spectate": {
- "name": "Spectate",
- "categoryId": 6,
- "url": "http://spectate.com/",
- "companyId": "spectate"
- },
- "speed_shift_media": {
- "name": "Speed Shift Media",
- "categoryId": 4,
- "url": "http://www.speedshiftmedia.com/",
- "companyId": "speed_shift_media"
- },
- "speedcurve": {
- "name": "SpeedCurve",
- "categoryId": 6,
- "url": "https://speedcurve.com/",
- "companyId": null
- },
- "speedyads": {
- "name": "SpeedyAds",
- "categoryId": 4,
- "url": "http://www.entireweb.com/speedyads/",
- "companyId": "entireweb"
- },
- "speee": {
- "name": "Speee",
- "categoryId": 4,
- "url": "https://speee.jp",
- "companyId": "speee"
- },
- "sphere": {
- "name": "Sphere",
- "categoryId": 4,
- "url": "http://www.sphere.com/",
- "companyId": "verizon"
- },
- "spheremall": {
- "name": "SphereMall",
- "categoryId": 6,
- "url": "https://spheremall.com",
- "companyId": "spheremall"
- },
- "sphereup": {
- "name": "SphereUp",
- "categoryId": 2,
- "url": "http://zoomd.com/",
- "companyId": "zoomd"
- },
- "spicy": {
- "name": "Spicy",
- "categoryId": 4,
- "url": "http://sspicy.ru/#main",
- "companyId": "spicy_ssp"
- },
- "spider.ad": {
- "name": "Spider.Ad",
- "categoryId": 4,
- "url": "http://spider.ad/",
- "companyId": "spider.ad"
- },
- "spider_ads": {
- "name": "Spider Ads",
- "categoryId": 4,
- "url": "http://www.spiderads.eu/",
- "companyId": "spiderads"
- },
- "spinnakr": {
- "name": "Spinnakr",
- "categoryId": 6,
- "url": "http://spinnakr.com/",
- "companyId": "spinnakr"
- },
- "spokenlayer": {
- "name": "SpokenLayer",
- "categoryId": 0,
- "url": "http://www.spokenlayer.com",
- "companyId": "spokenlayer"
- },
- "spongecell": {
- "name": "Spongecell",
- "categoryId": 4,
- "url": "http://www.spongecell.com/",
- "companyId": "spongecell"
- },
- "sponsorads.de": {
- "name": "SponsorAds.de",
- "categoryId": 4,
- "url": "http://sponsorads.de",
- "companyId": "sponsorads.de"
- },
- "sportsbet_affiliates": {
- "name": "Sportsbet Affiliates",
- "categoryId": 4,
- "url": "http://www.sportsbetaffiliates.com.au/",
- "companyId": "sportsbet_affiliates"
- },
- "spot.im": {
- "name": "Spot.IM",
- "categoryId": 7,
- "url": "https://www.spot.im/",
- "companyId": "spot.im"
- },
- "spoteffect": {
- "name": "Spoteffect",
- "categoryId": 6,
- "url": "http://www.spoteffects.com/home/",
- "companyId": "spoteffect"
- },
- "spotify": {
- "name": "Spotify",
- "categoryId": 0,
- "url": "https://www.spotify.com/",
- "companyId": "spotify"
- },
- "spotify_embed": {
- "name": "Spotify Embed",
- "categoryId": 0,
- "url": "https://www.spotify.com",
- "companyId": "spotify"
- },
- "spotscenered.info": {
- "name": "spotscenered.info",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "spotxchange": {
- "name": "SpotX",
- "categoryId": 4,
- "url": "https://www.spotx.tv/",
- "companyId": "rtl_group"
- },
- "spoutable": {
- "name": "Spoutable",
- "categoryId": 4,
- "url": "http://spoutable.com/",
- "companyId": "spoutable"
- },
- "springboard": {
- "name": "SpringBoard",
- "categoryId": 4,
- "url": "http://home.springboardplatform.com/",
- "companyId": "springboard"
- },
- "springserve": {
- "name": "SpringServe",
- "categoryId": 4,
- "url": "http://springserve.com/",
- "companyId": "springserve"
- },
- "sprinklr": {
- "name": "Sprinklr",
- "categoryId": 4,
- "url": "https://www.sprinklr.com/",
- "companyId": "sprinklr"
- },
- "sputnik": {
- "name": "Sputnik",
- "categoryId": 6,
- "url": "https://cnt.sputnik.ru/",
- "companyId": "sputnik"
- },
- "squadata": {
- "name": "Squadata",
- "categoryId": 4,
- "url": "http://www.email-match.net/",
- "companyId": "squadata"
- },
- "squarespace.com": {
- "name": "Squarespace",
- "categoryId": 6,
- "url": "https://www.squarespace.com/",
- "companyId": null
- },
- "srvtrck.com": {
- "name": "srvtrck.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "srvvtrk.com": {
- "name": "srvvtrk.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "sstatic.net": {
- "name": "Stack Exchange",
- "categoryId": 9,
- "url": "https://sstatic.net/",
- "companyId": null
- },
- "st-hatena": {
- "name": "Hatena",
- "categoryId": 7,
- "url": "http://www.hatena.ne.jp/",
- "companyId": "hatena_jp"
- },
- "stackadapt": {
- "name": "StackAdapt",
- "categoryId": 4,
- "url": "http://www.stackadapt.com/",
- "companyId": "stackadapt"
- },
- "stackpathdns.com": {
- "name": "StackPath",
- "categoryId": 9,
- "url": "https://www.stackpath.com/",
- "companyId": null
- },
- "stailamedia_com": {
- "name": "stailamedia.com",
- "categoryId": 4,
- "url": "http://stailamedia.com/",
- "companyId": null
- },
- "stalluva.pro": {
- "name": "stalluva.pro",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "startapp": {
- "name": "StartApp",
- "categoryId": 4,
- "url": "https://www.startapp.com/",
- "companyId": null
- },
- "stat24": {
- "name": "Stat24",
- "categoryId": 6,
- "url": "http://www.stat24.com/en/",
- "companyId": "stat24"
- },
- "stat4u": {
- "name": "stat4u",
- "categoryId": 6,
- "url": "http://stat.4u.pl/",
- "companyId": "stat4u"
- },
- "statcounter": {
- "name": "Statcounter",
- "categoryId": 6,
- "url": "http://www.statcounter.com/",
- "companyId": "statcounter"
- },
- "stathat": {
- "name": "StatHat",
- "categoryId": 6,
- "url": "http://www.stathat.com/",
- "companyId": "stathat"
- },
- "statisfy": {
- "name": "Statisfy",
- "categoryId": 6,
- "url": "http://www.statisfy.com/",
- "companyId": "statisfy"
- },
- "statsy.net": {
- "name": "statsy.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "statuscake": {
- "name": "StatusCake",
- "categoryId": 6,
- "url": "https://www.statuscake.com/",
- "companyId": "statuscake"
- },
- "statuspage.io": {
- "name": "Statuspage",
- "categoryId": 2,
- "url": "https://www.statuspage.io/",
- "companyId": "atlassian"
- },
- "stayfriends.de": {
- "name": "stayfriends.de",
- "categoryId": 8,
- "url": "https://www.stayfriends.de/",
- "companyId": null
- },
- "steelhouse": {
- "name": "Steel House Media",
- "categoryId": 4,
- "url": "https://steelhouse.com/",
- "companyId": "steelhouse"
- },
- "steepto.com": {
- "name": "Steepto",
- "categoryId": 4,
- "url": "https://www.steepto.com/",
- "companyId": null
- },
- "stepstone.com": {
- "name": "StepStone",
- "categoryId": 8,
- "url": "https://www.stepstone.com/",
- "companyId": null
- },
- "stetic": {
- "name": "Stetic",
- "categoryId": 6,
- "url": "https://www.stetic.com/",
- "companyId": "stetic"
- },
- "stickyads": {
- "name": "StickyAds",
- "categoryId": 4,
- "url": "http://corporate.comcast.com/",
- "companyId": "comcast"
- },
- "stocktwits": {
- "name": "StockTwits",
- "categoryId": 2,
- "url": "http://stocktwits.com",
- "companyId": "stocktwits"
- },
- "storify": {
- "name": "Storify",
- "categoryId": 4,
- "url": "https://storify.com/",
- "companyId": "adobe"
- },
- "storygize": {
- "name": "Storygize",
- "categoryId": 4,
- "url": "http://www.storygize.com/",
- "companyId": null
- },
- "strands_recommender": {
- "name": "Strands Recommender",
- "categoryId": 4,
- "url": "http://recommender.strands.com",
- "companyId": "strands"
- },
- "strava": {
- "name": "Strava",
- "categoryId": 6,
- "url": "https://strava.com",
- "companyId": "strava"
- },
- "streak": {
- "name": "Streak",
- "categoryId": 2,
- "url": "http://www.streak.com/",
- "companyId": "streak"
- },
- "streamotion": {
- "name": "Streamotion",
- "categoryId": 0,
- "url": "https://streamotion.com.au/",
- "companyId": "news_corp",
- "source": "AdGuard"
- },
- "streamrail.com": {
- "name": "StreamRail",
- "categoryId": 4,
- "url": "https://www.streamrail.com/",
- "companyId": "ironsource"
- },
- "stride": {
- "name": "Stride",
- "categoryId": 6,
- "url": "https://www.getstride.com/",
- "companyId": "stride_software"
- },
- "stripchat.com": {
- "name": "stripchat.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "stripe.com": {
- "name": "Stripe",
- "categoryId": 2,
- "url": "https://stripe.com/",
- "companyId": null
- },
- "stripst.com": {
- "name": "stripst.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "stroer_digital_media": {
- "name": "Stroer Digital Media",
- "categoryId": 4,
- "url": "http://www.stroeer.de/",
- "companyId": "stroer"
- },
- "strossle": {
- "name": "Strossle",
- "categoryId": 4,
- "url": "https://strossle.com/",
- "companyId": "strossle"
- },
- "struq": {
- "name": "Struq",
- "categoryId": 4,
- "url": "http://www.struq.com/",
- "companyId": "quantcast"
- },
- "stumbleupon_widgets": {
- "name": "StumbleUpon Widgets",
- "categoryId": 7,
- "url": "http://www.stumbleupon.com/",
- "companyId": "stumbleupon"
- },
- "sub2": {
- "name": "Sub2",
- "categoryId": 4,
- "url": "http://www.sub2tech.com/",
- "companyId": "sub2"
- },
- "sublime_skinz": {
- "name": "Sublime",
- "categoryId": 4,
- "url": "https://sublimeskinz.com/home",
- "companyId": "sublime_skinz"
- },
- "suggest.io": {
- "name": "Suggest.io",
- "categoryId": 4,
- "url": "https://suggest.io/",
- "companyId": "suggest.io"
- },
- "sumologic.com": {
- "name": "Sumologic",
- "categoryId": 6,
- "url": "https://www.sumologic.com/",
- "companyId": null
- },
- "sumome": {
- "name": "Sumo",
- "categoryId": 6,
- "url": "https://sumo.com/",
- "companyId": "sumome"
- },
- "sundaysky": {
- "name": "SundaySky",
- "categoryId": 4,
- "url": "http://www.sundaysky.com/",
- "companyId": "sundaysky"
- },
- "supercell": {
- "name": "Supercell",
- "categoryId": 2,
- "url": "https://supercell.com/",
- "companyId": "supercell",
- "source": "AdGuard"
- },
- "supercounters": {
- "name": "SuperCounters",
- "categoryId": 6,
- "url": "http://www.supercounters.com/",
- "companyId": "supercounters"
- },
- "superfastcdn.com": {
- "name": "superfastcdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "supership": {
- "name": "Supership",
- "categoryId": 4,
- "url": "https://supership.jp/en/",
- "companyId": "supership"
- },
- "supplyframe": {
- "name": "SupplyFrame",
- "categoryId": 4,
- "url": "https://supplyframe.com/",
- "companyId": "supplyframe"
- },
- "surf_by_surfingbird": {
- "name": "Surf by Surfingbird",
- "categoryId": 2,
- "url": "http://surfingbird.ru/",
- "companyId": "surfingbird"
- },
- "survata": {
- "name": "Survata",
- "categoryId": 4,
- "url": "https://www.survata.com/",
- "companyId": "survata"
- },
- "sweettooth": {
- "name": "Sweettooth",
- "categoryId": 2,
- "url": "https://www.sweettoothrewards.com/",
- "companyId": "sweet_tooth_rewards"
- },
- "swiftype": {
- "name": "Swiftype",
- "categoryId": 9,
- "url": "https://swiftype.com/",
- "companyId": "elastic"
- },
- "swisscom": {
- "name": "Swisscom",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "switch_concepts": {
- "name": "Switch Concepts",
- "categoryId": 4,
- "url": "http://www.switchconcepts.co.uk/",
- "companyId": "switch_concepts"
- },
- "switchtv": {
- "name": "Switch Media",
- "categoryId": 8,
- "url": "https://www.switch.tv/",
- "companyId": "switchtv",
- "source": "AdGuard"
- },
- "swoop": {
- "name": "Swoop",
- "categoryId": 4,
- "url": "http://swoop.com/",
- "companyId": "swoop"
- },
- "sykes": {
- "name": "Sykes",
- "categoryId": 6,
- "url": "http://www.sykescottages.co.uk/",
- "companyId": "sykes_cottages"
- },
- "symantec": {
- "name": "Symantec (Norton Secured Seal)",
- "categoryId": 5,
- "url": "https://www.symantec.com/page.jsp?id=ssl-resources&tabID=3#",
- "companyId": "symantec"
- },
- "symphony_talent": {
- "name": "Symphony Talent",
- "categoryId": 2,
- "url": "http://www.symphonytalent.com/",
- "companyId": "symphony_talent"
- },
- "synacor": {
- "name": "Synacor",
- "categoryId": 4,
- "url": "https://www.synacor.com/",
- "companyId": "synacor"
- },
- "syncapse": {
- "name": "Syncapse",
- "categoryId": 4,
- "url": "http://www.clickable.com/",
- "companyId": "syncapse"
- },
- "synergy-e": {
- "name": "Synergy-E",
- "categoryId": 4,
- "url": "http://synergy-e.com/",
- "companyId": "synergy-e"
- },
- "t-mobile": {
- "name": "Deutsche Telekom",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "t8cdn.com": {
- "name": "t8cdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "tableteducation.com": {
- "name": "tableteducation.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "taboola": {
- "name": "Taboola",
- "categoryId": 4,
- "url": "http://www.taboola.com",
- "companyId": "taboola"
- },
- "tacoda": {
- "name": "Tacoda",
- "categoryId": 4,
- "url": "http://www.tacoda.com/",
- "companyId": "verizon"
- },
- "tag_commander": {
- "name": "Commanders Act",
- "categoryId": 5,
- "url": "https://www.commandersact.com/en/",
- "companyId": "tag_commander"
- },
- "tagcade": {
- "name": "Tagcade",
- "categoryId": 4,
- "url": "https://www.pubvantage.com/",
- "companyId": "pubvantage"
- },
- "taggify": {
- "name": "Taggify",
- "categoryId": 4,
- "url": "http://new.taggify.net/",
- "companyId": "taggify"
- },
- "taggy": {
- "name": "TAGGY",
- "categoryId": 4,
- "url": "http://taggy.jp/",
- "companyId": "taggy"
- },
- "tagman": {
- "name": "TagMan",
- "categoryId": 5,
- "url": "http://www.tagman.com/",
- "companyId": "ensighten"
- },
- "tail_target": {
- "name": "Tail",
- "categoryId": 6,
- "url": "https://www.tail.digital/",
- "companyId": "tail.digital"
- },
- "tailsweep": {
- "name": "Tailsweep",
- "categoryId": 4,
- "url": "http://www.tailsweep.se/",
- "companyId": "tailsweep"
- },
- "tamedia.ch": {
- "name": "Tamedia",
- "categoryId": 4,
- "url": "https://www.tamedia.ch/",
- "companyId": null
- },
- "tanx": {
- "name": "Tanx",
- "categoryId": 4,
- "url": "http://tanx.com/",
- "companyId": "tanx"
- },
- "taobao": {
- "name": "Taobao",
- "categoryId": 4,
- "url": "https://world.taobao.com/",
- "companyId": "softbank",
- "source": "AdGuard"
- },
- "tapad": {
- "name": "Tapad",
- "categoryId": 4,
- "url": "http://www.tapad.com/",
- "companyId": "telenor"
- },
- "tapinfluence": {
- "name": "TapInfluence",
- "categoryId": 4,
- "url": "http://theblogfrog.com/",
- "companyId": "tapinfluence"
- },
- "tarafdari": {
- "name": "Tarafdari",
- "categoryId": 4,
- "url": "https://www.tarafdari.com/",
- "companyId": "tarafdari"
- },
- "target_2_sell": {
- "name": "Target 2 Sell",
- "categoryId": 4,
- "url": "http://www.target2sell.com/en/",
- "companyId": "target_2_sell"
- },
- "target_circle": {
- "name": "Target Circle",
- "categoryId": 6,
- "url": "http://targetcircle.com",
- "companyId": "target_circle"
- },
- "target_fuel": {
- "name": "Target Fuel",
- "categoryId": 6,
- "url": "http://targetfuel.com/",
- "companyId": "target_fuel"
- },
- "tawk": {
- "name": "Tawk",
- "categoryId": 2,
- "url": "https://www.tawk.to/",
- "companyId": "tawk"
- },
- "tbn.ru": {
- "name": "TBN.ru",
- "categoryId": 4,
- "url": "http://www.agava.ru",
- "companyId": "agava"
- },
- "tchibo_de": {
- "name": "tchibo.de",
- "categoryId": 8,
- "url": "http://tchibo.de/",
- "companyId": null
- },
- "tdsrmbl_net": {
- "name": "tdsrmbl.net",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "teads": {
- "name": "Teads",
- "categoryId": 4,
- "url": "http://teads.tv/",
- "companyId": "teads"
- },
- "tealeaf": {
- "name": "Tealeaf",
- "categoryId": 6,
- "url": "https://www.ibm.com/digital-marketing",
- "companyId": "ibm"
- },
- "tealium": {
- "name": "Tealium",
- "categoryId": 5,
- "url": "http://www.tealium.com/",
- "companyId": "tealium"
- },
- "teaser.cc": {
- "name": "Teaser.cc",
- "categoryId": 4,
- "url": "http://www.teaser.cc/",
- "companyId": "teaser.cc"
- },
- "tedemis": {
- "name": "Tedemis",
- "categoryId": 4,
- "url": "http://www.tedemis.com",
- "companyId": "tedemis"
- },
- "teletech": {
- "name": "TeleTech",
- "categoryId": 4,
- "url": "http://www.webmetro.com/whoweare/technology.aspx",
- "companyId": "teletech"
- },
- "telstra": {
- "name": "Telstra",
- "categoryId": 8,
- "url": "https://www.telstra.com.au/",
- "companyId": "telstra",
- "source": "AdGuard"
- },
- "tender": {
- "name": "Tender",
- "categoryId": 2,
- "url": "http://www.tenderapp.com/",
- "companyId": "tender"
- },
- "tensitionschoo.club": {
- "name": "tensitionschoo.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "teroti": {
- "name": "Teroti",
- "categoryId": 4,
- "url": "http://www.teroti.com/",
- "companyId": "teroti"
- },
- "terren": {
- "name": "Terren",
- "categoryId": 4,
- "url": "http://www.webterren.com/",
- "companyId": "terren"
- },
- "teufel.de": {
- "name": "teufel.de",
- "categoryId": 8,
- "url": "https://www.teufel.de/",
- "companyId": null
- },
- "the_adex": {
- "name": "The ADEX",
- "categoryId": 4,
- "url": "http://www.theadex.com/",
- "companyId": "prosieben_sat1"
- },
- "the_deck": {
- "name": "The DECK",
- "categoryId": 4,
- "url": "http://decknetwork.net/",
- "companyId": "the_deck"
- },
- "the_guardian": {
- "name": "The Guardian",
- "categoryId": 8,
- "url": "https://www.theguardian.com/",
- "companyId": "the_guardian"
- },
- "the_reach_group": {
- "name": "The Reach Group",
- "categoryId": 4,
- "url": "http://www.redvertisment.com",
- "companyId": "the_reach_group"
- },
- "the_search_agency": {
- "name": "The Search Agency",
- "categoryId": 4,
- "url": "http://www.thesearchagency.com/",
- "companyId": "the_search_agency"
- },
- "the_sun": {
- "name": "The Sun",
- "categoryId": 8,
- "url": "https://www.thesun.co.uk/",
- "companyId": "the_sun"
- },
- "the_weather_company": {
- "name": "The Weather Company",
- "categoryId": 4,
- "url": "http://www.theweathercompany.com/",
- "companyId": "ibm"
- },
- "themoviedb": {
- "name": "The Movie DB",
- "categoryId": 8,
- "url": "https://www.themoviedb.org/",
- "companyId": "themoviedb"
- },
- "thinglink": {
- "name": "ThingLink",
- "categoryId": 4,
- "url": "http://www.thinglink.com/",
- "companyId": "thinglink"
- },
- "threatmetrix": {
- "name": "ThreatMetrix",
- "categoryId": 6,
- "url": "http://threatmetrix.com/",
- "companyId": "threatmetrix"
- },
- "tidbit": {
- "name": "Tidbit",
- "categoryId": 2,
- "url": "http://tidbit.co.in/",
- "companyId": "tidbit"
- },
- "tidio": {
- "name": "Tidio",
- "categoryId": 2,
- "url": "https://www.tidio.com/",
- "companyId": "tidio_chat"
- },
- "tiktok_analytics": {
- "name": "TikTok Analytics",
- "categoryId": 6,
- "url": "https://analytics.tiktok.com",
- "companyId": "bytedance_inc"
- },
- "tiller": {
- "name": "Tiller",
- "categoryId": 4,
- "url": "https://www.tiller.com/",
- "companyId": "tiller"
- },
- "timezondb": {
- "name": "TimezonDB",
- "categoryId": 4,
- "url": "https://timezonedb.com/",
- "companyId": "timezonedb"
- },
- "tinypass": {
- "name": "Piano",
- "categoryId": 5,
- "url": "https://piano.io/",
- "companyId": "piano"
- },
- "tisoomi": {
- "name": "Tisoomi",
- "categoryId": 4,
- "url": "https://tisoomi-services.com/",
- "companyId": null
- },
- "tlv_media": {
- "name": "TLV Media",
- "categoryId": 4,
- "url": "http://www.tlvmedia.com",
- "companyId": "tlvmedia"
- },
- "tns": {
- "name": "TNS",
- "categoryId": 6,
- "url": "http://www.tnsglobal.com/",
- "companyId": "wpp"
- },
- "tomnewsupdate.info": {
- "name": "tomnewsupdate.info",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "tomorrow_focus": {
- "name": "Tomorrow Focus",
- "categoryId": 4,
- "url": "http://www.tomorrow-focus.com",
- "companyId": "hubert_burda_media"
- },
- "tonefuse": {
- "name": "ToneFuse",
- "categoryId": 4,
- "url": "http://www.tonefuse.com/",
- "companyId": "tonefuse"
- },
- "top_mail": {
- "name": "Top Mail",
- "categoryId": 6,
- "url": "https://corp.megafon.com/",
- "companyId": "megafon"
- },
- "toplist.cz": {
- "name": "toplist.cz",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "toponclick_com": {
- "name": "toponclick.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "topsy": {
- "name": "Topsy",
- "categoryId": 4,
- "url": "http://topsy.com/",
- "companyId": "topsy"
- },
- "torbit": {
- "name": "Torbit",
- "categoryId": 6,
- "url": "http://torbit.com/",
- "companyId": "torbit"
- },
- "toro": {
- "name": "TORO",
- "categoryId": 4,
- "url": "http://toroadvertising.com/",
- "companyId": "toro_advertising"
- },
- "tororango.com": {
- "name": "tororango.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "total_media": {
- "name": "Total Media",
- "categoryId": 4,
- "url": "http://www.totalmedia.co.il/eng/",
- "companyId": "total_media"
- },
- "touchcommerce": {
- "name": "Nuance",
- "categoryId": 2,
- "url": "https://www.nuance.com/omni-channel-customer-engagement/digital.html",
- "companyId": "touchcommerce"
- },
- "tovarro.com": {
- "name": "Tovarro",
- "categoryId": 4,
- "url": "https://www.tovarro.com/",
- "companyId": null
- },
- "tp-cdn.com": {
- "name": "TrialPay",
- "categoryId": 4,
- "url": "https://www.trialpay.com/",
- "companyId": null
- },
- "tracc.it": {
- "name": "Kiwe.io",
- "categoryId": 6,
- "url": "https://www.kiwe.io/",
- "companyId": null
- },
- "tracemyip": {
- "name": "TraceMyIP",
- "categoryId": 4,
- "url": "http://www.tracemyip.org/",
- "companyId": "tracemyip"
- },
- "traceview": {
- "name": "TraceView",
- "categoryId": 6,
- "url": "http://www.appneta.com/",
- "companyId": "appneta"
- },
- "track_duck": {
- "name": "Track Duck",
- "categoryId": 6,
- "url": "https://trackduck.com/",
- "companyId": "track_duck"
- },
- "trackjs": {
- "name": "TrackJS",
- "categoryId": 6,
- "url": "http://www.trackjs.com/",
- "companyId": "trackjs"
- },
- "trackset_conversionlab": {
- "name": "Trackset ConversionLab",
- "categoryId": 4,
- "url": "http://www.trackset.com/",
- "companyId": "trackset"
- },
- "trackuity": {
- "name": "Trackuity",
- "categoryId": 2,
- "url": "http://www.trackuity.com/",
- "companyId": "trackuity"
- },
- "tradedesk": {
- "name": "TradeDesk",
- "categoryId": 4,
- "url": "http://www.thetradedesk.com/",
- "companyId": "the_trade_desk"
- },
- "tradedoubler": {
- "name": "TradeDoubler",
- "categoryId": 4,
- "url": "http://www.tradedoubler.com/",
- "companyId": "tradedoubler"
- },
- "tradelab": {
- "name": "Tradelab",
- "categoryId": 4,
- "url": "http://www.tradelab.fr/",
- "companyId": "tradelab"
- },
- "tradetracker": {
- "name": "TradeTracker",
- "categoryId": 4,
- "url": "http://www.tradetracker.com",
- "companyId": "tradetracker"
- },
- "traffective": {
- "name": "Traffective",
- "categoryId": 4,
- "url": "https://traffective.com/",
- "companyId": null
- },
- "traffic_fuel": {
- "name": "Traffic Fuel",
- "categoryId": 4,
- "url": "https://trafficfuel.com/",
- "companyId": "traffic_fuel"
- },
- "traffic_revenue": {
- "name": "Traffic Revenue",
- "categoryId": 4,
- "url": "http://www.trafficrevenue.net/",
- "companyId": "traffic_revenue"
- },
- "traffic_stars": {
- "name": "Traffic Stars",
- "categoryId": 3,
- "url": "https://trafficstars.com/#index_page",
- "companyId": "traffic_stars"
- },
- "trafficbroker": {
- "name": "TrafficBroker",
- "categoryId": 4,
- "url": "http://trafficbroker.com/",
- "companyId": "trafficbroker"
- },
- "trafficfabrik.com": {
- "name": "Traffic Fabrik",
- "categoryId": 3,
- "url": "https://www.trafficfabrik.com/",
- "companyId": null
- },
- "trafficfactory": {
- "name": "Traffic Factory",
- "categoryId": 4,
- "url": "https://www.trafficfactory.biz/",
- "companyId": null
- },
- "trafficforce": {
- "name": "TrafficForce",
- "categoryId": 4,
- "url": "http://www.trafficforce.com/",
- "companyId": "trafficforce"
- },
- "traffichaus": {
- "name": "TrafficHaus",
- "categoryId": 3,
- "url": "http://www.traffichaus.com",
- "companyId": "traffichaus"
- },
- "trafficjunky": {
- "name": "TrafficJunky",
- "categoryId": 3,
- "url": "http://www.trafficjunky.net/",
- "companyId": "trafficjunky"
- },
- "traffiliate": {
- "name": "Traffiliate",
- "categoryId": 4,
- "url": "http://www.traffiliate.com/",
- "companyId": "dsnr_media_group"
- },
- "trafic": {
- "name": "Trafic",
- "categoryId": 6,
- "url": "http://www.trafic.ro/",
- "companyId": "trafic"
- },
- "trafmag.com": {
- "name": "TrafMag",
- "categoryId": 4,
- "url": "https://trafmag.com/",
- "companyId": "trafmag"
- },
- "transcend": {
- "name": "Transcend Consent",
- "categoryId": 14,
- "url": "https://transcend.io/consent/",
- "companyId": "transcend"
- },
- "transcend_telemetry": {
- "name": "Transcend Telemetry",
- "categoryId": 6,
- "url": "https://transcend.io",
- "companyId": "transcend"
- },
- "transmatic": {
- "name": "Transmatic",
- "categoryId": 6,
- "url": "http://www.transmatico.com/en/",
- "companyId": "transmatico"
- },
- "travel_audience": {
- "name": "Travel Audience",
- "categoryId": 6,
- "url": "https://travelaudience.com/",
- "companyId": "travel_audience"
- },
- "trbo": {
- "name": "trbo",
- "categoryId": 4,
- "url": "http://www.trbo.com/",
- "companyId": "trbo"
- },
- "treasuredata": {
- "name": "Treasure Data",
- "categoryId": 6,
- "url": "https://www.treasuredata.com/",
- "companyId": "arm"
- },
- "tremor_video": {
- "name": "Tremor Video",
- "categoryId": 0,
- "url": "http://www.tremormedia.com/",
- "companyId": "tremor_video"
- },
- "trendcounter": {
- "name": "trendcounter",
- "categoryId": 6,
- "url": "http://www.trendcounter.com/",
- "companyId": "trendcounter"
- },
- "trendemon": {
- "name": "TrenDemon",
- "categoryId": 6,
- "url": "http://trendemon.com",
- "companyId": "trendemon"
- },
- "tribal_fusion": {
- "name": "Tribal Fusion",
- "categoryId": 4,
- "url": "http://www.tribalfusion.com/",
- "companyId": "exponential_interactive"
- },
- "tribal_fusion_notice": {
- "name": "Tribal Fusion Notice",
- "categoryId": 4,
- "url": "http://www.tribalfusion.com",
- "companyId": "exponential_interactive"
- },
- "triblio": {
- "name": "Triblio",
- "categoryId": 6,
- "url": "https://triblio.com/",
- "companyId": "triblio"
- },
- "trigger_mail_marketing": {
- "name": "Trigger Mail Marketing",
- "categoryId": 4,
- "url": "http://www.triggeremailmarketing.com/",
- "companyId": "trigger_mail_marketing"
- },
- "triggerbee": {
- "name": "Triggerbee",
- "categoryId": 2,
- "url": "https://triggerbee.com/",
- "companyId": "triggerbee"
- },
- "tripadvisor": {
- "name": "TripAdvisor",
- "categoryId": 8,
- "url": "http://iac.com/",
- "companyId": "iac_apps"
- },
- "triplelift": {
- "name": "TripleLift",
- "categoryId": 4,
- "url": "http://triplelift.com/",
- "companyId": "triplelift"
- },
- "triptease": {
- "name": "Triptease",
- "categoryId": 2,
- "url": "https://www.triptease.com",
- "companyId": "triptease"
- },
- "triton_digital": {
- "name": "Triton Digital",
- "categoryId": 0,
- "url": "http://www.tritondigital.com/",
- "companyId": "triton_digital"
- },
- "trovus_revelations": {
- "name": "Trovus Revelations",
- "categoryId": 4,
- "url": "http://www.trovus.co.uk/",
- "companyId": "trovus_revelations"
- },
- "trsv3.com": {
- "name": "trsv3.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "true_fit": {
- "name": "True Fit",
- "categoryId": 4,
- "url": "https://www.truefit.com/",
- "companyId": "true_fit"
- },
- "trueanthem": {
- "name": "True Anthem",
- "categoryId": 4,
- "url": "https://www.trueanthem.com/",
- "companyId": "trueanthem"
- },
- "trueffect": {
- "name": "TruEffect",
- "categoryId": 4,
- "url": "http://www.trueffect.com/",
- "companyId": "trueffect"
- },
- "truehits.net": {
- "name": "Truehits.net",
- "categoryId": 6,
- "url": "http://truehits.net/",
- "companyId": "truehits.net"
- },
- "trumba": {
- "name": "Trumba",
- "categoryId": 4,
- "url": "http://www.trumba.com",
- "companyId": "trumba"
- },
- "truoptik": {
- "name": "Tru Optik",
- "categoryId": 6,
- "url": "http://truoptik.com/",
- "companyId": null
- },
- "trustarc": {
- "name": "TrustArc",
- "categoryId": 5,
- "url": "http://www.trustarc.com/",
- "companyId": "trustarc"
- },
- "truste_consent": {
- "name": "Truste Consent",
- "categoryId": 5,
- "url": "http://www.trustarc.com/",
- "companyId": "trustarc"
- },
- "truste_notice": {
- "name": "TRUSTe Notice",
- "categoryId": 5,
- "url": "http://www.truste.com/",
- "companyId": "trustarc"
- },
- "truste_seal": {
- "name": "TRUSTe Seal",
- "categoryId": 5,
- "url": "http://www.truste.com/",
- "companyId": "trustarc"
- },
- "trusted_shops": {
- "name": "Trusted Shops",
- "categoryId": 5,
- "url": "http://www.trustedshops.com/",
- "companyId": "trusted_shops"
- },
- "trustev": {
- "name": "Trustev",
- "categoryId": 6,
- "url": "http://www.trustev.com/",
- "companyId": "trustev"
- },
- "trustlogo": {
- "name": "TrustLogo",
- "categoryId": 5,
- "url": "http://www.comodo.com/",
- "companyId": "comodo"
- },
- "trustpilot": {
- "name": "Trustpilot",
- "categoryId": 2,
- "url": "http://www.trustpilot.com",
- "companyId": "trustpilot"
- },
- "trustwave.com": {
- "name": "Trustwave",
- "categoryId": 8,
- "url": "https://www.trustwave.com/home/",
- "companyId": null
- },
- "tubecorporate": {
- "name": "Tube Corporate",
- "categoryId": 3,
- "url": "https://tubecorporate.com/",
- "companyId": null
- },
- "tubecup.org": {
- "name": "tubecup.org",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "tubemogul": {
- "name": "TubeMogul",
- "categoryId": 4,
- "url": "http://tubemogul.com/",
- "companyId": "tubemogul"
- },
- "tumblr_analytics": {
- "name": "Tumblr Analytics",
- "categoryId": 6,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "tumblr_buttons": {
- "name": "Tumblr Buttons",
- "categoryId": 7,
- "url": "http://www.tumblr.com/",
- "companyId": "verizon"
- },
- "tumblr_dashboard": {
- "name": "Tumblr Dashboard",
- "categoryId": 7,
- "url": "http://www.tumblr.com/",
- "companyId": "verizon"
- },
- "tune_in": {
- "name": "Tune In",
- "categoryId": 0,
- "url": "http://tunein.com/",
- "companyId": "tunein"
- },
- "turbo": {
- "name": "Turbo",
- "categoryId": 4,
- "url": "http://www.turboadv.com/",
- "companyId": "turbo"
- },
- "turn_inc.": {
- "name": "Turn Inc.",
- "categoryId": 4,
- "url": "https://www.amobee.com/company/",
- "companyId": "singtel"
- },
- "turner": {
- "name": "Warner Media",
- "categoryId": 6,
- "url": "https://www.warnermedia.com/",
- "companyId": "turner"
- },
- "turnsocial": {
- "name": "TurnSocial",
- "categoryId": 7,
- "url": "http://turnsocial.com/",
- "companyId": "turnsocial"
- },
- "turnto": {
- "name": "TurnTo",
- "categoryId": 2,
- "url": "http://www.turntonetworks.com/",
- "companyId": "turnto_networks"
- },
- "tvsquared.com": {
- "name": "TVSquared",
- "categoryId": 4,
- "url": "http://tvsquared.com/",
- "companyId": "tvsquared"
- },
- "tweetboard": {
- "name": "Tweetboard",
- "categoryId": 7,
- "url": "http://tweetboard.com/alpha/",
- "companyId": "tweetboard"
- },
- "tweetmeme": {
- "name": "TweetMeme",
- "categoryId": 7,
- "url": "http://tweetmeme.com/",
- "companyId": "tweetmeme"
- },
- "twenga": {
- "name": "Twenga Solutions",
- "categoryId": 4,
- "url": "https://www.twenga-solutions.com/",
- "companyId": null
- },
- "twiago": {
- "name": "Twiago",
- "categoryId": 4,
- "url": "https://www.twiago.com/",
- "companyId": "twiago"
- },
- "twine": {
- "name": "Twine",
- "categoryId": 6,
- "url": "http://twinedigital.com/",
- "companyId": "twine_digital"
- },
- "twitch.tv": {
- "name": "Twitch",
- "categoryId": 0,
- "url": "https://www.twitch.tv/",
- "companyId": "amazon_associates"
- },
- "twitch_cdn": {
- "name": "Twitch CDN",
- "categoryId": 0,
- "url": "https://www.twitch.tv/",
- "companyId": "amazon_associates"
- },
- "twitter": {
- "name": "X (formerly Twitter)",
- "categoryId": 7,
- "url": "https://twitter.com",
- "companyId": "twitter",
- "source": "AdGuard"
- },
- "twitter_ads": {
- "name": "Twitter Advertising",
- "categoryId": 4,
- "url": "http://twitter.com/widgets",
- "companyId": "twitter"
- },
- "twitter_analytics": {
- "name": "Twitter Analytics",
- "categoryId": 6,
- "url": "https://twitter.com",
- "companyId": "twitter"
- },
- "twitter_badge": {
- "name": "Twitter Badge",
- "categoryId": 7,
- "url": "http://twitter.com/widgets",
- "companyId": "twitter"
- },
- "twitter_button": {
- "name": "Twitter Button",
- "categoryId": 7,
- "url": "http://twitter.com",
- "companyId": "twitter"
- },
- "twitter_conversion_tracking": {
- "name": "Twitter Conversion Tracking",
- "categoryId": 4,
- "url": "https://twitter.com/",
- "companyId": "twitter"
- },
- "twitter_for_business": {
- "name": "Twitter for Business",
- "categoryId": 4,
- "url": "https://business.twitter.com/",
- "companyId": "twitter"
- },
- "twitter_syndication": {
- "name": "Twitter Syndication",
- "categoryId": 7,
- "url": "https://twitter.com",
- "companyId": "twitter"
- },
- "twittercounter": {
- "name": "TwitterCounter",
- "categoryId": 6,
- "url": "http://twittercounter.com/",
- "companyId": "twitter_counter"
- },
- "twyn": {
- "name": "Twyn",
- "categoryId": 4,
- "url": "http://www.twyn.com",
- "companyId": "twyn"
- },
- "txxx.com": {
- "name": "txxx.com",
- "categoryId": 8,
- "url": "https://txxx.com",
- "companyId": null
- },
- "tynt": {
- "name": "33Across",
- "categoryId": 4,
- "url": "http://www.tynt.com/",
- "companyId": "33across"
- },
- "typeform": {
- "name": "Typeform",
- "categoryId": 2,
- "url": "https://www.typeform.com/",
- "companyId": null
- },
- "typepad_stats": {
- "name": "Typepad Stats",
- "categoryId": 6,
- "url": "http://www.typepad.com/features/statistics.ht",
- "companyId": "typepad"
- },
- "typography.com": {
- "name": "Webfonts by Hoefler&Co",
- "categoryId": 9,
- "url": "https://www.typography.com/",
- "companyId": null
- },
- "tyroo": {
- "name": "Tyroo",
- "categoryId": 7,
- "url": "http://www.tyroo.com/",
- "companyId": "tyroo"
- },
- "tzetze": {
- "name": "TzeTze",
- "categoryId": 2,
- "url": "http://www.tzetze.it/",
- "companyId": "tzetze"
- },
- "ubersetzung-app.com": {
- "name": "ubersetzung-app.com",
- "categoryId": 12,
- "url": "https://www.ubersetzung-app.com/",
- "companyId": null
- },
- "ubuntu": {
- "name": "Ubuntu",
- "categoryId": 8,
- "url": "https://ubuntu.com/",
- "companyId": "canonical",
- "source": "AdGuard"
- },
- "ucfunnel": {
- "name": "ucfunnel",
- "categoryId": 4,
- "url": "https://www.ucfunnel.com/",
- "companyId": "ucfunnel"
- },
- "ucoz": {
- "name": "uCoz",
- "categoryId": 6,
- "url": "http://www.ucoz.net/",
- "companyId": "ucoz"
- },
- "uliza": {
- "name": "Uliza",
- "categoryId": 4,
- "url": "http://uliza.jp/index.html",
- "companyId": "uliza"
- },
- "umbel": {
- "name": "Umbel",
- "categoryId": 6,
- "url": "http://umbel.com",
- "companyId": "umbel"
- },
- "umebiggestern.club": {
- "name": "umebiggestern.club",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "unanimis": {
- "name": "Unanimis",
- "categoryId": 4,
- "url": "http://www.unanimis.co.uk/",
- "companyId": "switch_concepts"
- },
- "unbounce": {
- "name": "Unbounce",
- "categoryId": 6,
- "url": "http://unbounce.com/",
- "companyId": "unbounce"
- },
- "unbxd": {
- "name": "UNBXD",
- "categoryId": 6,
- "url": "http://unbxd.com/",
- "companyId": "unbxd"
- },
- "under-box.com": {
- "name": "under-box.com",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "undercomputer.com": {
- "name": "undercomputer.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "underdog_media": {
- "name": "Underdog Media",
- "categoryId": 4,
- "url": "http://www.underdogmedia.com",
- "companyId": "underdog_media"
- },
- "undertone": {
- "name": "Undertone",
- "categoryId": 4,
- "url": "https://www.undertone.com/",
- "companyId": "perion"
- },
- "unica": {
- "name": "Unica",
- "categoryId": 2,
- "url": "http://www.unica.com/",
- "companyId": "ibm"
- },
- "unister": {
- "name": "Unister",
- "categoryId": 6,
- "url": "http://www.unister.de/",
- "companyId": "unister"
- },
- "unite": {
- "name": "Unite",
- "categoryId": 4,
- "url": "http://unite.me/#",
- "companyId": "unite"
- },
- "united_digital_group": {
- "name": "United Digital Group",
- "categoryId": 4,
- "url": "https://www.udg.de/",
- "companyId": "united_digital_group"
- },
- "united_internet_media_gmbh": {
- "name": "United Internet Media GmbH",
- "categoryId": 4,
- "url": "https://www.united-internet.de/",
- "companyId": "united_internet"
- },
- "unity": {
- "name": "Unity",
- "categoryId": 8,
- "url": "https://unity.com/",
- "companyId": "unity",
- "source": "AdGuard"
- },
- "unity_ads": {
- "name": "Unity Ads",
- "categoryId": 4,
- "url": "https://unity.com/products/unity-ads",
- "companyId": "unity",
- "source": "AdGuard"
- },
- "univide": {
- "name": "Univide",
- "categoryId": 4,
- "url": "http://www.oracle.com/",
- "companyId": "oracle"
- },
- "unpkg.com": {
- "name": "unpkg",
- "categoryId": 9,
- "url": "https://unpkg.com/#/",
- "companyId": null
- },
- "unruly_media": {
- "name": "Unruly Media",
- "categoryId": 4,
- "url": "http://www.unrulymedia.com/",
- "companyId": "unruly"
- },
- "untriel_finger_printing": {
- "name": "Untriel Finger Printing",
- "categoryId": 6,
- "url": "https://www.untriel.nl/",
- "companyId": "untriel"
- },
- "upland_clickability_beacon": {
- "name": "Upland Clickability Beacon",
- "categoryId": 4,
- "url": "http://www.clickability.com/",
- "companyId": "upland_software"
- },
- "uppr.de": {
- "name": "uppr GmbH",
- "categoryId": 4,
- "url": "https://uppr.de/",
- "companyId": null
- },
- "upravel.com": {
- "name": "upravel.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "upsellit": {
- "name": "UpSellit",
- "categoryId": 2,
- "url": "http://www.upsellit.com",
- "companyId": "upsellit"
- },
- "upsight": {
- "name": "Upsight",
- "categoryId": 6,
- "url": "http://www.upsight.com/",
- "companyId": "upsight"
- },
- "uptain": {
- "name": "Uptain",
- "categoryId": 6,
- "url": "http://www.uptain.de/en/regaining-lost-customers/",
- "companyId": "uptain"
- },
- "uptolike.com": {
- "name": "Uptolike",
- "categoryId": 7,
- "url": "https://www.uptolike.com/",
- "companyId": "uptolike"
- },
- "uptrends": {
- "name": "Uptrends",
- "categoryId": 6,
- "url": "http://www.uptrends.com/",
- "companyId": "uptrends"
- },
- "urban-media.com": {
- "name": "Urban Media GmbH",
- "categoryId": 4,
- "url": "https://www.urban-media.com/",
- "companyId": null
- },
- "urban_airship": {
- "name": "Urban Airship",
- "categoryId": 6,
- "url": "https://www.urbanairship.com/",
- "companyId": "urban_airship"
- },
- "usability_tools": {
- "name": "Usability Tools",
- "categoryId": 6,
- "url": "http://usabilitytools.com/",
- "companyId": "usability_tools"
- },
- "usabilla": {
- "name": "Usabilla",
- "categoryId": 2,
- "url": "https://usabilla.com/",
- "companyId": "usabilla"
- },
- "usemax": {
- "name": "Usemax",
- "categoryId": 4,
- "url": "http://www.usemax.de",
- "companyId": "usemax"
- },
- "usemessages.com": {
- "name": "usemessages.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "usercycle": {
- "name": "USERcycle",
- "categoryId": 6,
- "url": "http://usercycle.com/",
- "companyId": "usercycle"
- },
- "userdive": {
- "name": "USERDIVE",
- "categoryId": 6,
- "url": "http://userdive.com/",
- "companyId": "userdive"
- },
- "userecho": {
- "name": "UserEcho",
- "categoryId": 2,
- "url": "http://userecho.com",
- "companyId": "userecho"
- },
- "userlike.com": {
- "name": "Userlike",
- "categoryId": 2,
- "url": "https://www.userlike.com/",
- "companyId": "userlike"
- },
- "userpulse": {
- "name": "UserPulse",
- "categoryId": 2,
- "url": "http://www.userpulse.com/",
- "companyId": "userpulse"
- },
- "userreplay": {
- "name": "UserReplay",
- "categoryId": 6,
- "url": "https://www.userreplay.com/",
- "companyId": "userreplay"
- },
- "userreport": {
- "name": "UserReport",
- "categoryId": 2,
- "url": "http://www.userreport.com/",
- "companyId": "userreport"
- },
- "userrules": {
- "name": "UserRules",
- "categoryId": 2,
- "url": "http://www.userrules.com/",
- "companyId": "userrules_software"
- },
- "usersnap": {
- "name": "Usersnap",
- "categoryId": 2,
- "url": "http://usersnap.com/",
- "companyId": "usersnap"
- },
- "uservoice": {
- "name": "UserVoice",
- "categoryId": 2,
- "url": "http://uservoice.com/",
- "companyId": "uservoice"
- },
- "userzoom.com": {
- "name": "UserZoom",
- "categoryId": 2,
- "url": "https://www.userzoom.com/",
- "companyId": "userzoom"
- },
- "usocial": {
- "name": "Usocial",
- "categoryId": 7,
- "url": "https://usocial.pro/en",
- "companyId": "usocial"
- },
- "utarget": {
- "name": "uTarget",
- "categoryId": 4,
- "url": "http://utarget.ru/",
- "companyId": "utarget"
- },
- "uuidksinc.net": {
- "name": "uuidksinc.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "v12_group": {
- "name": "V12 Group",
- "categoryId": 6,
- "url": null,
- "companyId": null
- },
- "vacaneedasap.com": {
- "name": "vacaneedasap.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "valassis": {
- "name": "Valassis",
- "categoryId": 4,
- "url": "http://www.brand.net/",
- "companyId": "valassis"
- },
- "validclick": {
- "name": "ValidClick",
- "categoryId": 4,
- "url": "http://inuvo.com/",
- "companyId": "inuvo"
- },
- "valiton": {
- "name": "Valiton",
- "categoryId": 4,
- "url": "https://www.valiton.com/",
- "companyId": "hubert_burda_media"
- },
- "valueclick_media": {
- "name": "ValueClick Media",
- "categoryId": 4,
- "url": "https://www.conversantmedia.eu/",
- "companyId": "conversant"
- },
- "valuecommerce": {
- "name": "ValueCommerce",
- "categoryId": 4,
- "url": "https://www.valuecommerce.ne.jp",
- "companyId": "valuecommerce"
- },
- "valued_opinions": {
- "name": "Valued Opinions",
- "categoryId": 4,
- "url": "http://valuedopinions.com",
- "companyId": "valued_opinions"
- },
- "vanksen": {
- "name": "Vanksen",
- "categoryId": 4,
- "url": "http://www.buzzparadise.com/",
- "companyId": "vanksen"
- },
- "varick_media_management": {
- "name": "Varick Media Management",
- "categoryId": 4,
- "url": "http://www.varickmm.com/",
- "companyId": "varick_media_management"
- },
- "vcita": {
- "name": "Vcita",
- "categoryId": 6,
- "url": "https://www.vcita.com/",
- "companyId": "vcita"
- },
- "vcommission": {
- "name": "vCommission",
- "categoryId": 4,
- "url": "http://www.vcommission.com/",
- "companyId": "vcommission"
- },
- "vdopia": {
- "name": "Vdopia",
- "categoryId": 4,
- "url": "http://mobile.vdopia.com/",
- "companyId": "vdopia"
- },
- "ve_interactive": {
- "name": "Ve Interactive",
- "categoryId": 4,
- "url": "https://www.veinteractive.com",
- "companyId": "ve_interactive"
- },
- "vee24": {
- "name": "VEE24",
- "categoryId": 0,
- "url": "https://www.vee24.com/",
- "companyId": "vee24"
- },
- "velocecdn.com": {
- "name": "velocecdn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "velti_mgage_visualize": {
- "name": "Velti mGage Visualize",
- "categoryId": 4,
- "url": "http://www.velti.com/",
- "companyId": "velti"
- },
- "vendemore": {
- "name": "Vendemore",
- "categoryId": 1,
- "url": "https://vendemore.com/",
- "companyId": "ratos"
- },
- "venturead.com": {
- "name": "venturead.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "venyoo": {
- "name": "Venyoo",
- "categoryId": 2,
- "url": "http://venyoo.ru/",
- "companyId": "venyoo"
- },
- "veoxa": {
- "name": "Veoxa",
- "categoryId": 4,
- "url": "http://www.veoxa.com/",
- "companyId": "veoxa"
- },
- "vergic.com": {
- "name": "Vergic",
- "categoryId": 1,
- "url": "https://www.vergic.com/",
- "companyId": null
- },
- "vero": {
- "name": "Vero",
- "categoryId": 4,
- "url": "http://www.getvero.com/",
- "companyId": "vero"
- },
- "vertical_acuity": {
- "name": "Vertical Acuity",
- "categoryId": 4,
- "url": "http://www.verticalacuity.com/",
- "companyId": "outbrain"
- },
- "vertical_leap": {
- "name": "Vertical Leap",
- "categoryId": 4,
- "url": "http://www.vertical-leap.co.uk/",
- "companyId": "vertical_leap"
- },
- "verticalresponse": {
- "name": "VerticalResponse",
- "categoryId": 4,
- "url": "http://www.verticalresponse.com",
- "companyId": "verticalresponse"
- },
- "verticalscope": {
- "name": "VerticalScope",
- "categoryId": 4,
- "url": "http://www.verticalscope.com",
- "companyId": "verticalscope"
- },
- "vertoz": {
- "name": "Vertoz",
- "categoryId": 4,
- "url": "http://www.vertoz.com/",
- "companyId": "vertoz"
- },
- "veruta": {
- "name": "Veruta",
- "categoryId": 4,
- "url": "http://www.veruta.com/",
- "companyId": "veruta"
- },
- "verve_mobile": {
- "name": "Verve Mobile",
- "categoryId": 4,
- "url": "http://www.vervemobile.com/",
- "companyId": "verve_mobile"
- },
- "vg_wort": {
- "name": "VG Wort",
- "categoryId": 6,
- "url": "https://tom.vgwort.de/portal/showHelp",
- "companyId": "vg_wort"
- },
- "vi": {
- "name": "Vi",
- "categoryId": 4,
- "url": "http://www.vi.ru/",
- "companyId": "vi"
- },
- "viacom_tag_container": {
- "name": "Viacom Tag Container",
- "categoryId": 4,
- "url": "http://www.viacom.com/",
- "companyId": "viacom"
- },
- "viafoura": {
- "name": "Viafoura",
- "categoryId": 4,
- "url": "http://www.viafoura.com/",
- "companyId": "viafoura"
- },
- "vibrant_ads": {
- "name": "Vibrant Ads",
- "categoryId": 4,
- "url": "http://www.vibrantmedia.com/",
- "companyId": "vibrant_media"
- },
- "vicomi.com": {
- "name": "Vicomi",
- "categoryId": 6,
- "url": "http://www.vicomi.com/",
- "companyId": "vicomi"
- },
- "vidazoo.com": {
- "name": "Vidazoo",
- "categoryId": 4,
- "url": "https://www.vidazoo.com/",
- "companyId": null
- },
- "video_desk": {
- "name": "Video Desk",
- "categoryId": 0,
- "url": "https://www.videodesk.com/",
- "companyId": "video_desk"
- },
- "video_potok": {
- "name": "Video Potok",
- "categoryId": 0,
- "url": "http://videopotok.pro/",
- "companyId": "videopotok"
- },
- "videoadex.com": {
- "name": "VideoAdX",
- "categoryId": 4,
- "url": "https://www.videoadex.com/",
- "companyId": "digiteka"
- },
- "videology": {
- "name": "Videology",
- "categoryId": 4,
- "url": "https://videologygroup.com/",
- "companyId": "singtel"
- },
- "videonow": {
- "name": "VideoNow",
- "categoryId": 4,
- "url": "https://videonow.ru/",
- "companyId": "videonow"
- },
- "videoplayerhub.com": {
- "name": "videoplayerhub.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "videoplaza": {
- "name": "Videoplaza",
- "categoryId": 4,
- "url": "http://www.videoplaza.com/",
- "companyId": "videoplaza"
- },
- "videostep": {
- "name": "VideoStep",
- "categoryId": 4,
- "url": "https://www.videostep.com/",
- "companyId": "videostep"
- },
- "vidgyor": {
- "name": "Vidgyor",
- "categoryId": 0,
- "url": "http://vidgyor.com/",
- "companyId": "vidgyor"
- },
- "vidible": {
- "name": "Vidible",
- "categoryId": 4,
- "url": "http://vidible.tv/",
- "companyId": "verizon"
- },
- "vidora": {
- "name": "Vidora",
- "categoryId": 0,
- "url": "https://www.vidora.com/",
- "companyId": "vidora"
- },
- "vietad": {
- "name": "VietAd",
- "categoryId": 4,
- "url": "http://vietad.vn/",
- "companyId": "vietad"
- },
- "viglink": {
- "name": "VigLink",
- "categoryId": 4,
- "url": "http://www.viglink.com",
- "companyId": "viglink"
- },
- "vigo": {
- "name": "Vigo",
- "categoryId": 6,
- "url": "https://vigo.one/",
- "companyId": "vigo"
- },
- "vimeo": {
- "name": "Vimeo",
- "categoryId": 0,
- "url": "http://vimeo.com/",
- "companyId": "vimeo"
- },
- "vindico_group": {
- "name": "Vindico Group",
- "categoryId": 4,
- "url": "http://www.vindicogroup.com/",
- "companyId": "vindico_group"
- },
- "vinted": {
- "name": "Vinted",
- "categoryId": 8,
- "url": "https://www.vinted.com/",
- "companyId": null
- },
- "viral_ad_network": {
- "name": "Viral Ad Network",
- "categoryId": 4,
- "url": "http://viraladnetwork.joinvan.com/",
- "companyId": "viral_ad_network"
- },
- "viral_loops": {
- "name": "Viral Loops",
- "categoryId": 2,
- "url": "https://viral-loops.com/",
- "companyId": "viral-loops"
- },
- "viralgains": {
- "name": "ViralGains",
- "categoryId": 4,
- "url": "https://www.viralgains.com/",
- "companyId": null
- },
- "viralmint": {
- "name": "ViralMint",
- "categoryId": 7,
- "url": "http://www.viralmint.com",
- "companyId": "viralmint"
- },
- "virgul": {
- "name": "Virgul",
- "categoryId": 4,
- "url": "http://www.virgul.com/",
- "companyId": "virgul"
- },
- "virool_player": {
- "name": "Virool Player",
- "categoryId": 4,
- "url": "https://www.virool.com/",
- "companyId": "virool"
- },
- "virtusize": {
- "name": "Virtusize",
- "categoryId": 5,
- "url": "http://www.virtusize.com/",
- "companyId": "virtusize"
- },
- "visible_measures": {
- "name": "Visible Measures",
- "categoryId": 4,
- "url": "http://www.visiblemeasures.com/",
- "companyId": "visible_measures"
- },
- "vision_critical": {
- "name": "Vision Critical",
- "categoryId": 6,
- "url": "http://visioncritical.com/",
- "companyId": "vision_critical"
- },
- "visit_streamer": {
- "name": "Visit Streamer",
- "categoryId": 6,
- "url": "http://www.visitstreamer.com/",
- "companyId": "visit_streamer"
- },
- "visitortrack": {
- "name": "VisitorTrack",
- "categoryId": 4,
- "url": "http://www.netfactor.com/",
- "companyId": "netfactor"
- },
- "visitorville": {
- "name": "VisitorVille",
- "categoryId": 6,
- "url": "http://www.visitorville.com",
- "companyId": "visitorville"
- },
- "visscore": {
- "name": "VisScore",
- "categoryId": 4,
- "url": "http://withcubed.com/",
- "companyId": "cubed_attribution"
- },
- "visual_iq": {
- "name": "Visual IQ",
- "categoryId": 6,
- "url": "http://visualiq.com/",
- "companyId": "visualiq"
- },
- "visual_revenue": {
- "name": "Visual Revenue",
- "categoryId": 6,
- "url": "http://visualrevenue.com/",
- "companyId": "outbrain"
- },
- "visual_website_optimizer": {
- "name": "VWO",
- "categoryId": 6,
- "url": "https://vwo.com/",
- "companyId": "wingify"
- },
- "visualdna": {
- "name": "VisualDNA",
- "categoryId": 4,
- "url": "http://www.visualdna.com/",
- "companyId": "nielsen"
- },
- "visualstudio.com": {
- "name": "Visualstudio.com",
- "categoryId": 8,
- "url": "https://www.visualstudio.com/",
- "companyId": "microsoft"
- },
- "visualvisitor": {
- "name": "VisualVisitor",
- "categoryId": 6,
- "url": "http://www.visualvisitor.com/",
- "companyId": "visualvisitor"
- },
- "vivalu": {
- "name": "VIVALU",
- "categoryId": 4,
- "url": "https://www.vivalu.com/",
- "companyId": "vivalu"
- },
- "vivistats": {
- "name": "ViviStats",
- "categoryId": 6,
- "url": "http://en.vivistats.com/",
- "companyId": "vivistats"
- },
- "vizury": {
- "name": "Vizury",
- "categoryId": 4,
- "url": "http://www.vizury.com/website/",
- "companyId": "vizury"
- },
- "vizzit": {
- "name": "Vizzit",
- "categoryId": 4,
- "url": "http://www.vizzit.se/h/en/",
- "companyId": "vizzit"
- },
- "vk.com": {
- "name": "Vk.com",
- "categoryId": 7,
- "url": "https://vk.com/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "vkontakte": {
- "name": "VKontakte",
- "categoryId": 7,
- "url": "https://vk.com/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "vkontakte_widgets": {
- "name": "VKontakte Widgets",
- "categoryId": 7,
- "url": "https://dev.vk.com/",
- "companyId": "vk",
- "source": "AdGuard"
- },
- "vntsm.com": {
- "name": "Venatus Media",
- "categoryId": 4,
- "url": "https://www.venatusmedia.com/",
- "companyId": "venatus"
- },
- "vodafone.de": {
- "name": "vodafone.de",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "voicefive": {
- "name": "VoiceFive",
- "categoryId": 6,
- "url": "https://www.voicefive.com",
- "companyId": "comscore"
- },
- "volusion_chat": {
- "name": "Volusion Chat",
- "categoryId": 2,
- "url": "https://www.volusion.com/",
- "companyId": "volusion"
- },
- "voluum": {
- "name": "Voluum",
- "categoryId": 4,
- "url": "https://voluum.com/",
- "companyId": "codewise"
- },
- "vooxe.com": {
- "name": "vooxe.com",
- "categoryId": 8,
- "url": "http://www.vooxe.com/",
- "companyId": null
- },
- "vorwerk.de": {
- "name": "vorwerk.de",
- "categoryId": 8,
- "url": "https://corporate.vorwerk.de/home/",
- "companyId": null
- },
- "vox": {
- "name": "Vox",
- "categoryId": 2,
- "url": "https://www.voxmedia.com/",
- "companyId": "vox"
- },
- "voxus": {
- "name": "Voxus",
- "categoryId": 4,
- "url": "http://www.voxus.tv/",
- "companyId": "voxus"
- },
- "vpon": {
- "name": "VPON",
- "categoryId": 4,
- "url": "http://www.vpon.com/en/",
- "companyId": "vpon"
- },
- "vpscash": {
- "name": "VPSCash",
- "categoryId": 4,
- "url": "http://vpscash.nl/home",
- "companyId": "vps_cash"
- },
- "vs": {
- "name": "Visual Studio",
- "categoryId": 8,
- "url": "https://visualstudio.microsoft.com",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "vscode": {
- "name": "Visual Studio Code",
- "categoryId": 8,
- "url": "https://code.visualstudio.com/",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "vtracy.de": {
- "name": "vtracy.de",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "vungle": {
- "name": "Vungle",
- "categoryId": 4,
- "url": "https://vungle.com/",
- "companyId": "blackstone",
- "source": "AdGuard"
- },
- "vuukle": {
- "name": "Vuukle",
- "categoryId": 6,
- "url": "http://vuukle.com/",
- "companyId": "vuukle"
- },
- "vzaar": {
- "name": "Vzaar",
- "categoryId": 0,
- "url": "http://vzaar.com/",
- "companyId": "vzaar"
- },
- "w3counter": {
- "name": "W3Counter",
- "categoryId": 6,
- "url": "http://www.w3counter.com/",
- "companyId": "awio_web_services"
- },
- "w3roi": {
- "name": "w3roi",
- "categoryId": 6,
- "url": "http://www.w3roi.com/",
- "companyId": "w3roi"
- },
- "wahoha": {
- "name": "Wahoha",
- "categoryId": 2,
- "url": "http://wahoha.com/",
- "companyId": "wahoha"
- },
- "walkme.com": {
- "name": "WalkMe",
- "categoryId": 2,
- "url": "https://www.walkme.com/",
- "companyId": "walkme"
- },
- "wall_street_on_demand": {
- "name": "Wall Street on Demand",
- "categoryId": 4,
- "url": "http://www.wallst.com",
- "companyId": "markit_on_demand"
- },
- "walmart": {
- "name": "Walmart",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "wamcash": {
- "name": "Wamcash",
- "categoryId": 3,
- "url": "http://wamcash.com/",
- "companyId": "wamcash"
- },
- "wanelo": {
- "name": "Wanelo",
- "categoryId": 2,
- "url": "https://wanelo.com/",
- "companyId": "wanelo"
- },
- "warp.ly": {
- "name": "Warp.ly",
- "categoryId": 6,
- "url": "https://warp.ly/",
- "companyId": "warp.ly"
- },
- "way2traffic": {
- "name": "Way2traffic",
- "categoryId": 4,
- "url": "http://www.way2traffic.com/",
- "companyId": "way2traffic"
- },
- "wayfair_com": {
- "name": "Wayfair",
- "categoryId": 8,
- "url": "https://www.wayfair.com/",
- "companyId": null
- },
- "wdr.de": {
- "name": "wdr.de",
- "categoryId": 8,
- "url": "https://www1.wdr.de/index.html",
- "companyId": null
- },
- "web-stat": {
- "name": "Web-Stat",
- "categoryId": 6,
- "url": "http://www.web-stat.net/",
- "companyId": "web-stat"
- },
- "web.de": {
- "name": "web.de",
- "categoryId": 8,
- "url": "https://web.de/",
- "companyId": null
- },
- "web.stat": {
- "name": "Web.STAT",
- "categoryId": 6,
- "url": "http://webstat.net/",
- "companyId": "web.stat"
- },
- "web_service_award": {
- "name": "Web Service Award",
- "categoryId": 6,
- "url": "http://webserviceaward.com/english/",
- "companyId": "web_service_award"
- },
- "web_traxs": {
- "name": "Web Traxs",
- "categoryId": 6,
- "url": "http://websolutions.thomasnet.com/web-traxs-analytics.php",
- "companyId": "thomasnet_websolutions"
- },
- "web_wipe_analytics": {
- "name": "Web Wipe Analytics",
- "categoryId": 6,
- "url": "http://tensquare.de",
- "companyId": "tensquare"
- },
- "webads": {
- "name": "WebAds",
- "categoryId": 4,
- "url": "http://www.webads.co.uk/",
- "companyId": "webads"
- },
- "webantenna": {
- "name": "WebAntenna",
- "categoryId": 6,
- "url": "http://www.bebit.co.jp/webantenna/",
- "companyId": "webantenna"
- },
- "webclicks24_com": {
- "name": "webclicks24.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "webclose.net": {
- "name": "webclose.net",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "webcollage": {
- "name": "Webcollage",
- "categoryId": 2,
- "url": "http://www.webcollage.com/",
- "companyId": "webcollage"
- },
- "webedia": {
- "name": "Webedia",
- "categoryId": 4,
- "url": "http://fr.webedia-group.com/",
- "companyId": "fimalac_group"
- },
- "webeffective": {
- "name": "WebEffective",
- "categoryId": 6,
- "url": "http://www.keynote.com/",
- "companyId": "keynote_systems"
- },
- "webengage": {
- "name": "WebEngage",
- "categoryId": 2,
- "url": "http://webengage.com/",
- "companyId": "webengage"
- },
- "webgains": {
- "name": "Webgains",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "webgozar": {
- "name": "WebGozar",
- "categoryId": 6,
- "url": "http://webgozar.com/",
- "companyId": "webgozar"
- },
- "webhelpje": {
- "name": "Webhelpje",
- "categoryId": 2,
- "url": "http://www.webhelpje.nl/",
- "companyId": "webhelpje"
- },
- "webleads_tracker": {
- "name": "Webleads Tracker",
- "categoryId": 6,
- "url": "http://www.webleads-tracker.fr/",
- "companyId": "webleads_tracker"
- },
- "webmecanik": {
- "name": "Webmecanik",
- "categoryId": 6,
- "url": "http://www.webmecanik.com/en/",
- "companyId": "webmecanik"
- },
- "weborama": {
- "name": "Weborama",
- "categoryId": 4,
- "url": "https://weborama.com/",
- "companyId": "weborama"
- },
- "webprospector": {
- "name": "WebProspector",
- "categoryId": 6,
- "url": "http://www.webprospector.de/",
- "companyId": "webprospector"
- },
- "webstat": {
- "name": "WebSTAT",
- "categoryId": 6,
- "url": "http://www.webstat.com/",
- "companyId": "webstat"
- },
- "webstat.se": {
- "name": "Webstat.se",
- "categoryId": 6,
- "url": "http://www.webstat.se/",
- "companyId": "webstat.se"
- },
- "webtrack": {
- "name": "webtrack",
- "categoryId": 6,
- "url": "http://www.webtrack.biz/",
- "companyId": "webtrack"
- },
- "webtraffic": {
- "name": "Webtraffic",
- "categoryId": 6,
- "url": "http://www.webtraffic.se/",
- "companyId": "schibsted_asa"
- },
- "webtrekk": {
- "name": "Webtrekk",
- "categoryId": 6,
- "url": "http://www.webtrekk.com/",
- "companyId": "webtrekk"
- },
- "webtrekk_cc": {
- "name": "Webtrek Control Cookie",
- "categoryId": 6,
- "url": "https://www.webtrekk.com/en/home/",
- "companyId": "webtrekk"
- },
- "webtrends": {
- "name": "Webtrends",
- "categoryId": 6,
- "url": "http://www.webtrends.com/",
- "companyId": "webtrends"
- },
- "webtrends_ads": {
- "name": "Webtrends Ads",
- "categoryId": 4,
- "url": "http://www.webtrends.com",
- "companyId": "webtrends"
- },
- "webvisor": {
- "name": "WebVisor",
- "categoryId": 6,
- "url": "http://webvisor.ru",
- "companyId": "yandex"
- },
- "wedcs": {
- "name": "WEDCS",
- "categoryId": 4,
- "url": "https://www.microsoft.com/",
- "companyId": "microsoft"
- },
- "weebly_ads": {
- "name": "Weebly Ads",
- "categoryId": 4,
- "url": "http://www.weebly.com",
- "companyId": "weebly"
- },
- "weibo_widget": {
- "name": "Weibo Widget",
- "categoryId": 4,
- "url": "http://www.sina.com/",
- "companyId": "sina"
- },
- "westlotto_com": {
- "name": "westlotto.com",
- "categoryId": 8,
- "url": "http://westlotto.com/",
- "companyId": null
- },
- "wetter_com": {
- "name": "Wetter.com",
- "categoryId": 8,
- "url": "http://www.wetter.com/",
- "companyId": null
- },
- "whatbroadcast": {
- "name": "Whatbroadcast",
- "categoryId": 2,
- "url": "https://www.whatsbroadcast.com/",
- "companyId": "whatsbroadcast"
- },
- "whatsapp": {
- "name": "WhatsApp",
- "categoryId": 8,
- "url": "https://www.whatsapp.com/",
- "companyId": "meta",
- "source": "AdGuard"
- },
- "whisper": {
- "name": "Whisper",
- "categoryId": 7,
- "url": "https://whisper.sh/",
- "companyId": "medialab",
- "source": "AdGuard"
- },
- "whos.amung.us": {
- "name": "Whos.amung.us",
- "categoryId": 6,
- "url": "http://whos.amung.us/",
- "companyId": "whos.amung.us"
- },
- "whoson": {
- "name": "WhosOn",
- "categoryId": 6,
- "url": "http://www.whoson.com/",
- "companyId": "whoson"
- },
- "wibbitz": {
- "name": "Wibbitz",
- "categoryId": 0,
- "url": "http://www.wibbitz.com/",
- "companyId": "wibbitz"
- },
- "wibiya_toolbar": {
- "name": "Wibiya Toolbar",
- "categoryId": 7,
- "url": "http://www.wibiya.com/",
- "companyId": "wibiya"
- },
- "widdit": {
- "name": "Widdit",
- "categoryId": 2,
- "url": "http://www.predictad.com/",
- "companyId": "widdit"
- },
- "widerplanet": {
- "name": "WiderPlanet",
- "categoryId": 4,
- "url": "http://widerplanet.com/",
- "companyId": "wider_planet"
- },
- "widespace": {
- "name": "Widespace",
- "categoryId": 4,
- "url": "https://www.widespace.com/",
- "companyId": "widespace"
- },
- "widgetbox": {
- "name": "WidgetBox",
- "categoryId": 2,
- "url": "http://www.widgetbox.com/",
- "companyId": "widgetbox"
- },
- "wiget_media": {
- "name": "Wiget Media",
- "categoryId": 4,
- "url": "http://wigetmedia.com",
- "companyId": "wiget_media"
- },
- "wigzo": {
- "name": "Wigzo",
- "categoryId": 4,
- "url": "https://www.wigzo.com/",
- "companyId": "wigzo"
- },
- "wikia-services.com": {
- "name": "Wikia Services",
- "categoryId": 8,
- "url": "http://www.wikia.com/fandom",
- "companyId": "wikia"
- },
- "wikia_beacon": {
- "name": "Wikia Beacon",
- "categoryId": 6,
- "url": "http://www.wikia.com/",
- "companyId": "wikia"
- },
- "wikia_cdn": {
- "name": "Wikia CDN",
- "categoryId": 9,
- "url": "http://www.wikia.com/fandom",
- "companyId": "wikia"
- },
- "wikimedia.org": {
- "name": "WikiMedia",
- "categoryId": 9,
- "url": "https://wikimediafoundation.org/",
- "companyId": "wikimedia_foundation"
- },
- "winaffiliates": {
- "name": "Winaffiliates",
- "categoryId": 6,
- "url": "http://www.winaffiliates.com/",
- "companyId": "winaffiliates"
- },
- "windows_maps": {
- "name": "Windows Maps",
- "categoryId": 8,
- "url": "https://www.microsoft.com/store/apps/9wzdncrdtbvb",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "windows_notifications": {
- "name": "The Windows Push Notification Services",
- "categoryId": 8,
- "url": "https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "windows_time": {
- "name": "Windows Time Service",
- "categoryId": 8,
- "url": "https://learn.microsoft.com/en-us/windows-server/networking/windows-time-service/how-the-windows-time-service-works",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "windowsupdate": {
- "name": "Windows Update",
- "categoryId": 9,
- "url": "https://support.microsoft.com/en-us/windows/windows-update-faq-8a903416-6f45-0718-f5c7-375e92dddeb2",
- "companyId": "microsoft",
- "source": "AdGuard"
- },
- "wipmania": {
- "name": "WIPmania",
- "categoryId": 6,
- "url": "http://www.wipmania.com/",
- "companyId": "wipmania"
- },
- "wiqhit": {
- "name": "WiQhit",
- "categoryId": 6,
- "url": "https://wiqhit.com/nl/",
- "companyId": "wiqhit"
- },
- "wirecard": {
- "name": "Wirecard",
- "categoryId": 2,
- "url": "https://www.wirecard.com/",
- "companyId": null
- },
- "wiredminds": {
- "name": "WiredMinds",
- "categoryId": 6,
- "url": "http://www.wiredminds.de/",
- "companyId": "wiredminds"
- },
- "wirtualna_polska": {
- "name": "Wirtualna Polska",
- "categoryId": 4,
- "url": "http://reklama.wp.pl/",
- "companyId": "wirtualna_polska"
- },
- "wisepops": {
- "name": "WisePops",
- "categoryId": 4,
- "url": "http://wisepops.com/",
- "companyId": "wisepops"
- },
- "wishpond": {
- "name": "Wishpond",
- "categoryId": 2,
- "url": "http://wishpond.com",
- "companyId": "wishpond"
- },
- "wistia": {
- "name": "Wistia",
- "categoryId": 6,
- "url": "http://wistia.com/",
- "companyId": "wistia"
- },
- "wix.com": {
- "name": "Wix",
- "categoryId": 8,
- "url": "https://www.wix.com/",
- "companyId": "wix"
- },
- "wixab": {
- "name": "Wixab",
- "categoryId": 6,
- "url": "http://wixab.com/en/",
- "companyId": "wixab"
- },
- "wixmp": {
- "name": "Wix Media Platform",
- "categoryId": 9,
- "url": "https://www.wixmp.com/",
- "companyId": "wix"
- },
- "wnzmauurgol.com": {
- "name": "wnzmauurgol.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "wonderpush": {
- "name": "WonderPush",
- "categoryId": 2,
- "url": "https://www.wonderpush.com/",
- "companyId": "wonderpush"
- },
- "woopic.com": {
- "name": "woopic.com",
- "categoryId": 8,
- "url": null,
- "companyId": null
- },
- "woopra": {
- "name": "Woopra",
- "categoryId": 6,
- "url": "http://www.woopra.com/",
- "companyId": "woopra"
- },
- "wordpress_ads": {
- "name": "Wordpress Ads",
- "categoryId": 4,
- "url": "https://wordpress.com/",
- "companyId": "automattic"
- },
- "wordpress_stats": {
- "name": "WordPress Stats",
- "categoryId": 6,
- "url": "http://wordpress.org/extend/plugins/stats/",
- "companyId": "automattic"
- },
- "wordstream": {
- "name": "WordStream",
- "categoryId": 6,
- "url": "http://www.wordstream.com/",
- "companyId": "wordstream"
- },
- "worldnaturenet_xyz": {
- "name": "worldnaturenet.xyz",
- "categoryId": 12,
- "url": null,
- "companyId": null
- },
- "wp.pl": {
- "name": "Wirtualna Polska ",
- "categoryId": 4,
- "url": "https://www.wp.pl/",
- "companyId": "wp"
- },
- "wp_engine": {
- "name": "WP Engine",
- "categoryId": 5,
- "url": "https://wpengine.com/",
- "companyId": "wp_engine"
- },
- "writeup_clickanalyzer": {
- "name": "WriteUp ClickAnalyzer",
- "categoryId": 6,
- "url": "http://www.writeup.co.jp/",
- "companyId": "writeup"
- },
- "wurfl": {
- "name": "WURFL",
- "categoryId": 6,
- "url": "https://web.wurfl.io/",
- "companyId": "scientiamobile"
- },
- "wwwpromoter": {
- "name": "WWWPromoter",
- "categoryId": 4,
- "url": "http://wwwpromoter.com/",
- "companyId": "wwwpromoter"
- },
- "wykop": {
- "name": "Wykop",
- "categoryId": 7,
- "url": "http://www.wykop.pl",
- "companyId": "wykop"
- },
- "wysistat.com": {
- "name": "WysiStat",
- "categoryId": 6,
- "url": "https://www.wysistat.net/",
- "companyId": "wysistat"
- },
- "wywy.com": {
- "name": "wywy",
- "categoryId": 4,
- "url": "http://wywy.com/",
- "companyId": "tvsquared"
- },
- "x-lift": {
- "name": "X-lift",
- "categoryId": 4,
- "url": "https://www.x-lift.jp/",
- "companyId": "x-lift"
- },
- "xapads": {
- "name": "Xapads",
- "categoryId": 4,
- "url": "http://www.xapads.com/",
- "companyId": "xapads"
- },
- "xen-media.com": {
- "name": "Xen Media",
- "categoryId": 11,
- "url": "https://www.xenmedia.net/",
- "companyId": "xenmedia",
- "source": "AdGuard"
- },
- "xfreeservice.com": {
- "name": "xfreeservice.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "xhamster": {
- "name": "xHamster",
- "categoryId": 3,
- "url": "https://xhamster.com/",
- "companyId": "xhamster",
- "source": "AdGuard"
- },
- "xiaomi": {
- "name": "Xiaomi",
- "categoryId": 8,
- "url": "https://www.mi.com/",
- "companyId": "xiaomi",
- "source": "AdGuard"
- },
- "xing": {
- "name": "Xing",
- "categoryId": 6,
- "url": "http://www.xing.com/",
- "companyId": "xing"
- },
- "xmediaclicks": {
- "name": "XmediaClicks",
- "categoryId": 3,
- "url": "http://exoclick.com/",
- "companyId": "exoclick"
- },
- "xnxx_cdn": {
- "name": "XNXX",
- "categoryId": 9,
- "url": "https://www.xnxx.com",
- "companyId": "xnxx",
- "source": "AdGuard"
- },
- "xplosion": {
- "name": "xplosion",
- "categoryId": 4,
- "url": "http://www.xplosion.de/",
- "companyId": "xplosion_interactive"
- },
- "xtend": {
- "name": "XTEND",
- "categoryId": 4,
- "url": "http://www.xtendmedia.com/",
- "companyId": "matomy_media"
- },
- "xvideos_com": {
- "name": "Xvideos",
- "categoryId": 8,
- "url": "https://www.xvideos.com",
- "companyId": "xvideos",
- "source": "AdGuard"
- },
- "xxxlshop.de": {
- "name": "XXXLutz",
- "categoryId": 8,
- "url": "https://www.xxxlutz.de/",
- "companyId": "xxxlutz",
- "source": "AdGuard"
- },
- "xxxlutz": {
- "name": "XXXLutz",
- "categoryId": 8,
- "url": "https://www.xxxlutz.de/",
- "companyId": "xxxlutz"
- },
- "yabbi": {
- "name": "Yabbi",
- "categoryId": 4,
- "url": "https://yabbi.me/",
- "companyId": "yabbi",
- "source": "AdGuard"
- },
- "yabuka": {
- "name": "Yabuka",
- "categoryId": 4,
- "url": "http://www.yabuka.com/",
- "companyId": "yabuka"
- },
- "yahoo": {
- "name": "Yahoo!",
- "categoryId": 6,
- "url": "https://yahoo.com/",
- "companyId": "apollo_global_management",
- "source": "AdGuard"
- },
- "yahoo_ad_exchange": {
- "name": "Yahoo! Ad Exchange",
- "categoryId": 4,
- "url": "https://www.verizonmedia.com/advertising",
- "companyId": "verizon"
- },
- "yahoo_ad_manager": {
- "name": "Yahoo! Ad Manager Plus",
- "categoryId": 4,
- "url": "https://developer.yahoo.com/analytics/",
- "companyId": "verizon"
- },
- "yahoo_advertising": {
- "name": "Yahoo! Advertising",
- "categoryId": 4,
- "url": "https://www.advertising.yahooinc.com/",
- "companyId": "apollo_global_management",
- "source": "AdGuard"
- },
- "yahoo_analytics": {
- "name": "Yahoo! Analytics",
- "categoryId": 6,
- "url": "http://web.analytics.yahoo.com/",
- "companyId": "verizon"
- },
- "yahoo_commerce_central": {
- "name": "Yahoo! Commerce Central",
- "categoryId": 4,
- "url": "http://lexity.com/",
- "companyId": "verizon"
- },
- "yahoo_dot_tag": {
- "name": "Yahoo! DOT tag",
- "categoryId": 4,
- "url": "https://www.verizon.com/",
- "companyId": "verizon"
- },
- "yahoo_japan_retargeting": {
- "name": "Yahoo! Japan Retargeting",
- "categoryId": 4,
- "url": "http://www.yahoo.com/",
- "companyId": "yahoo_japan"
- },
- "yahoo_overture": {
- "name": "Yahoo! Overture",
- "categoryId": 4,
- "url": "http://searchmarketing.yahoo.com",
- "companyId": "verizon"
- },
- "yahoo_search": {
- "name": "Yahoo! Search",
- "categoryId": 4,
- "url": "https://search.yahooinc.com/",
- "companyId": "apollo_global_management",
- "source": "AdGuard"
- },
- "yahoo_small_business": {
- "name": "Yahoo! Small Business",
- "categoryId": 4,
- "url": "http://www.pixazza.com/",
- "companyId": "verizon"
- },
- "yandex": {
- "name": "Yandex",
- "categoryId": 4,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yandex.api": {
- "name": "Yandex.API",
- "categoryId": 2,
- "url": "http://api.yandex.ru/",
- "companyId": "yandex"
- },
- "yandex_adexchange": {
- "name": "Yandex AdExchange",
- "categoryId": 4,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_advisor": {
- "name": "Yandex.Advisor",
- "categoryId": 12,
- "url": "https://sovetnik.yandex.ru/",
- "companyId": "yandex"
- },
- "yandex_appmetrica": {
- "name": "Yandex AppMetrica",
- "categoryId": 101,
- "url": "https://appmetrica.yandex.com/",
- "companyId": "yandex",
- "source": "AdGuard"
- },
- "yandex_direct": {
- "name": "Yandex.Direct",
- "categoryId": 6,
- "url": "https://direct.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_metrika": {
- "name": "Yandex Metrika",
- "categoryId": 6,
- "url": "https://metrica.yandex.com/",
- "companyId": "yandex"
- },
- "yandex_passport": {
- "name": "Yandex Passport",
- "categoryId": 2,
- "url": "https://www.yandex.com/",
- "companyId": "yandex"
- },
- "yapfiles.ru": {
- "name": "yapfiles.ru",
- "categoryId": 8,
- "url": "https://www.yapfiles.ru/",
- "companyId": null
- },
- "yashi": {
- "name": "Yashi",
- "categoryId": 4,
- "url": "http://www.yashi.com/",
- "companyId": "mass2"
- },
- "ybrant_media": {
- "name": "Ybrant Media",
- "categoryId": 4,
- "url": "http://www.addynamix.com/index.html",
- "companyId": "ybrant_media"
- },
- "ycontent": {
- "name": "Ycontent",
- "categoryId": 0,
- "url": "http://ycontent.com.br/",
- "companyId": "ycontent"
- },
- "yektanet": {
- "name": "Yektanet",
- "categoryId": 4,
- "url": "https://yektanet.com/",
- "companyId": "yektanet"
- },
- "yengo": {
- "name": "Yengo",
- "categoryId": 4,
- "url": "http://www.yengo.com/",
- "companyId": "yengo"
- },
- "yesmail": {
- "name": "Yesmail",
- "categoryId": 4,
- "url": "http://www.yesmail.com/",
- "companyId": "yes_mail"
- },
- "yesup_advertising": {
- "name": "YesUp Advertising",
- "categoryId": 4,
- "url": "http://yesup.net/",
- "companyId": "yesup"
- },
- "yesware": {
- "name": "Yesware",
- "categoryId": 2,
- "url": "http://www.yesware.com/",
- "companyId": "yesware"
- },
- "yieldbot": {
- "name": "Yieldbot",
- "categoryId": 6,
- "url": "https://www.yieldbot.com/",
- "companyId": "yieldbot"
- },
- "yieldify": {
- "name": "Yieldify",
- "categoryId": 4,
- "url": "http://www.yieldify.com/",
- "companyId": "yieldify"
- },
- "yieldlab": {
- "name": "Yieldlab",
- "categoryId": 4,
- "url": "http://www.yieldlab.de/",
- "companyId": "prosieben_sat1"
- },
- "yieldlove": {
- "name": "Yieldlove",
- "categoryId": 4,
- "url": "https://www.yieldlove.com/",
- "companyId": "yieldlove"
- },
- "yieldmo": {
- "name": "Yieldmo",
- "categoryId": 4,
- "url": "https://www.yieldmo.com/",
- "companyId": "yieldmo"
- },
- "yieldr": {
- "name": "Yieldr Ads",
- "categoryId": 4,
- "url": "https://www.yieldr.com/",
- "companyId": "yieldr"
- },
- "yieldr_air": {
- "name": "Yieldr Air",
- "categoryId": 6,
- "url": "https://www.yieldr.com/",
- "companyId": "yieldr"
- },
- "yieldsquare": {
- "name": "YieldSquare",
- "categoryId": 4,
- "url": "http://www.yieldsquare.com/",
- "companyId": "yieldsquare"
- },
- "yle": {
- "name": "YLE",
- "categoryId": 6,
- "url": "http://yle.fi/",
- "companyId": "yle"
- },
- "yllixmedia": {
- "name": "YllixMedia",
- "categoryId": 4,
- "url": "http://yllix.com/",
- "companyId": "yllixmedia"
- },
- "ymetrica1.com": {
- "name": "ymetrica1.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "ymzrrizntbhde.com": {
- "name": "ymzrrizntbhde.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "yo_button": {
- "name": "Yo Button",
- "categoryId": 2,
- "url": "http://www.justyo.co/",
- "companyId": "yo"
- },
- "yodle": {
- "name": "Yodle",
- "categoryId": 4,
- "url": "http://www.yodle.com/",
- "companyId": "yodle"
- },
- "yola_analytics": {
- "name": "Yola Analytics",
- "categoryId": 6,
- "url": "https://www.yola.com/",
- "companyId": "yola"
- },
- "yomedia": {
- "name": "Yomedia",
- "categoryId": 4,
- "url": "http://www.pinetech.vn/",
- "companyId": "yomedia"
- },
- "yoochoose.net": {
- "name": "Ibexa Personalizaton Software",
- "categoryId": 4,
- "url": "https://yoochoose.net/",
- "companyId": "ibexa",
- "source": "AdGuard"
- },
- "yotpo": {
- "name": "Yotpo",
- "categoryId": 1,
- "url": "https://www.yotpo.com/",
- "companyId": "yotpo"
- },
- "yottaa": {
- "name": "Yottaa",
- "categoryId": 6,
- "url": "https://www.yottaa.com/",
- "companyId": "yottaa"
- },
- "yottly": {
- "name": "Yottly",
- "categoryId": 4,
- "url": "https://yottly.com/",
- "companyId": "yottly"
- },
- "youcanbookme": {
- "name": "YouCanBookMe",
- "categoryId": 2,
- "url": "https://youcanbook.me/",
- "companyId": "youcanbookme"
- },
- "youku": {
- "name": "Youku",
- "categoryId": 0,
- "url": "http://www.youku.com/",
- "companyId": "youku"
- },
- "youporn": {
- "name": "YouPorn",
- "categoryId": 3,
- "url": "https://www.youporn.com/",
- "companyId": "youporn",
- "source": "AdGuard"
- },
- "youtube": {
- "name": "YouTube",
- "categoryId": 0,
- "url": "https://www.youtube.com/",
- "companyId": "google"
- },
- "youtube_subscription": {
- "name": "YouTube Subscription",
- "categoryId": 2,
- "url": "http://www.youtube.com/",
- "companyId": "google"
- },
- "yp": {
- "name": "YellowPages",
- "categoryId": 4,
- "url": "https://www.yellowpages.com/",
- "companyId": "thryv"
- },
- "ysance": {
- "name": "YSance",
- "categoryId": 4,
- "url": "http://www.ysance.com/en/index.html",
- "companyId": "ysance"
- },
- "yume": {
- "name": "YuMe",
- "categoryId": 4,
- "url": "http://www.yume.com/",
- "companyId": "yume"
- },
- "yume,_inc.": {
- "name": "YuMe, Inc.",
- "categoryId": 4,
- "url": "http://www.yume.com/",
- "companyId": "yume"
- },
- "yusp": {
- "name": "Yusp",
- "categoryId": 6,
- "url": "https://www.yusp.com/",
- "companyId": "yusp"
- },
- "zadarma": {
- "name": "Zadarma",
- "categoryId": 2,
- "url": "https://zadarma.com/",
- "companyId": "zadarma"
- },
- "zalando_de": {
- "name": "zalando.de",
- "categoryId": 8,
- "url": "https://zalando.de/",
- "companyId": "zalando"
- },
- "zalo": {
- "name": "Zalo",
- "categoryId": 2,
- "url": "https://zaloapp.com/",
- "companyId": "zalo"
- },
- "zanox": {
- "name": "Zanox",
- "categoryId": 4,
- "url": "http://www.zanox.com/us/",
- "companyId": "axel_springer"
- },
- "zaparena": {
- "name": "zaparena",
- "categoryId": 4,
- "url": "http://www.zaparena.com/",
- "companyId": "zapunited"
- },
- "zappos": {
- "name": "Zappos",
- "categoryId": 4,
- "url": "http://www.zappos.com/",
- "companyId": "zappos"
- },
- "zdassets.com": {
- "name": "Zendesk CDN",
- "categoryId": 8,
- "url": "http://www.zendesk.com/",
- "companyId": "zendesk"
- },
- "zebestof.com": {
- "name": "Zebestof",
- "categoryId": 4,
- "url": "http://www.zebestof.com/en/home/",
- "companyId": "zebestof"
- },
- "zedo": {
- "name": "Zedo",
- "categoryId": 4,
- "url": "http://www.zedo.com/",
- "companyId": "zedo"
- },
- "zemanta": {
- "name": "Zemanta",
- "categoryId": 2,
- "url": "http://www.zemanta.com/",
- "companyId": "zemanta"
- },
- "zencoder": {
- "name": "Zencoder",
- "categoryId": 0,
- "url": "https://zencoder.com/en/",
- "companyId": "zencoder"
- },
- "zendesk": {
- "name": "Zendesk",
- "categoryId": 2,
- "url": "http://www.zendesk.com/",
- "companyId": "zendesk"
- },
- "zergnet": {
- "name": "ZergNet",
- "categoryId": 2,
- "url": "http://www.zergnet.com/info",
- "companyId": "zergnet"
- },
- "zero.kz": {
- "name": "ZERO.kz",
- "categoryId": 6,
- "url": "http://zero.kz/",
- "companyId": "neolabs_zero"
- },
- "zeta": {
- "name": "Zeta",
- "categoryId": 2,
- "url": "https://zetaglobal.com/",
- "companyId": "zeta"
- },
- "zeusclicks": {
- "name": "ZeusClicks",
- "categoryId": 4,
- "url": "http://zeusclicks.com/",
- "companyId": "zeusclicks",
- "source": "AdGuard"
- },
- "ziff_davis": {
- "name": "Ziff Davis",
- "categoryId": 4,
- "url": "https://www.ziffdavis.com/",
- "companyId": "ziff_davis"
- },
- "zift_solutions": {
- "name": "Zift Solutions",
- "categoryId": 6,
- "url": "https://ziftsolutions.com/",
- "companyId": "zift_solutions"
- },
- "zimbio.com": {
- "name": "Zimbio",
- "categoryId": 8,
- "url": "http://www.zimbio.com/",
- "companyId": "livinglymedia",
- "source": "AdGuard"
- },
- "zippyshare_widget": {
- "name": "Zippyshare Widget",
- "categoryId": 2,
- "url": "http://www.zippyshare.com",
- "companyId": "zippyshare"
- },
- "zmags": {
- "name": "Zmags",
- "categoryId": 6,
- "url": "https://zmags.com/",
- "companyId": "zmags"
- },
- "zmctrack.net": {
- "name": "zmctrack.net",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zog.link": {
- "name": "zog.link",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zoho": {
- "name": "Zoho",
- "categoryId": 6,
- "url": "https://www.zohocorp.com/index.html",
- "companyId": "zoho_corp"
- },
- "zononi.com": {
- "name": "zononi.com",
- "categoryId": 3,
- "url": null,
- "companyId": null
- },
- "zopim": {
- "name": "Zopim",
- "categoryId": 2,
- "url": "http://www.zopim.com/",
- "companyId": "zendesk"
- },
- "zukxd6fkxqn.com": {
- "name": "zukxd6fkxqn.com",
- "categoryId": 11,
- "url": null,
- "companyId": null
- },
- "zwaar": {
- "name": "Zwaar",
- "categoryId": 4,
- "url": "http://www.zwaar.org",
- "companyId": "zwaar"
- },
- "zypmedia": {
- "name": "ZypMedia",
- "categoryId": 4,
- "url": "http://www.zypmedia.com/",
- "companyId": "zypmedia"
- }
- },
- "trackerDomains": {
- "mmtro.com": "1000mercis",
- "creative-serving.com": "161media",
- "p161.net": "161media",
- "analytics.163.com": "163",
- "1822direkt.de": "1822direkt.de",
- "1dmp.io": "1dmp.io",
- "opecloud.com": "1plusx",
- "1sponsor.com": "1sponsor",
- "tm.dentsu.de": "1tag",
- "1and1.com": "1und1",
- "1und1.de": "1und1",
- "uicdn.com": "1und1",
- "website-start.de": "1und1",
- "24-ads.com": "24-ads.com",
- "247-inc.net": "24_7",
- "d1af033869koo7.cloudfront.net": "24_7",
- "counter.24log.ru": "24log",
- "24smi.net": "24smi",
- "24smi.org": "24smi",
- "2leep.com": "2leep",
- "33across.com": "33across",
- "3dstats.com": "3dstats",
- "3gpp.org": "3gpp",
- "3gppnetwork.org": "3gpp",
- "4cdn.org": "4chan",
- "4finance.com": "4finance_com",
- "4wnet.com": "4w_marketplace",
- "d3aa0ztdn3oibi.cloudfront.net": "500friends",
- "51.la": "51.la",
- "5min.com": "5min_media",
- "d1lm7kd3bd3yo9.cloudfront.net": "6sense",
- "grepdata.com": "6sense",
- "77tracking.com": "77tracking",
- "swm.digital": "7plus",
- "7tv.de": "7tv.de",
- "888media.net": "888media",
- "hit.8digits.com": "8digits",
- "94j7afz2nr.xyz": "94j7afz2nr.xyz",
- "statsanalytics.com": "99stats",
- "a3cloud.net": "a3cloud_net",
- "a8.net": "a8",
- "aaxads.com": "aaxads.com",
- "abtasty.com": "ab_tasty",
- "d1447tq2m68ekg.cloudfront.net": "ab_tasty",
- "ab.co": "abc",
- "abc-cdn.net.au": "abc",
- "abc-host.net": "abc",
- "abc-host.net.au": "abc",
- "abc-prod.net.au": "abc",
- "abc-stage.net.au": "abc",
- "abc-test.net.au": "abc",
- "abc.net.au": "abc",
- "abcaustralia.net.au": "abc",
- "abcradio.net.au": "abc",
- "ablida.de": "ablida",
- "ablida.net": "ablida",
- "durasite.net": "accelia",
- "accengage.net": "accengage",
- "ax.xrea.com": "accessanalyzer",
- "accesstrade.net": "accesstrade",
- "agcdn.com": "accord_group",
- "accmgr.com": "accordant_media",
- "p-td.com": "accuen_media",
- "acestream.net": "acestream.net",
- "acint.net": "acint.net",
- "acloudimages.com": "acloudimages",
- "acpm.fr": "acpm.fr",
- "acquia.com": "acquia.com",
- "ziyu.net": "acrweb",
- "actionpay.ru": "actionpay",
- "adnwb.ru": "actionpay",
- "adonweb.ru": "actionpay",
- "active-agent.com": "active_agent",
- "trackcmp.net": "active_campaign",
- "active-srv02.de": "active_performance",
- "active-tracking.de": "active_performance",
- "activeconversion.com": "activeconversion",
- "a-cast.jp": "activecore",
- "activemeter.com": "activemeter",
- "go.activengage.com": "activengage",
- "actonsoftware.com": "acton",
- "acuityplatform.com": "acuity_ads",
- "acxiom-online.com": "acxiom",
- "acxiom.com": "acxiom",
- "ad-blocker.org": "ad-blocker.org",
- "ads.ad-center.com": "ad-center",
- "ad-delivery.net": "ad-delivery.net",
- "ad-sys.com": "ad-sys",
- "adagionet.com": "ad.agio",
- "ad2click.go2cloud.org": "ad2click",
- "ad2games.com": "ad2games",
- "ad360.vn": "ad360",
- "ads.ad4game.com": "ad4game",
- "ad4mat.ar": "ad4mat",
- "ad4mat.at": "ad4mat",
- "ad4mat.be": "ad4mat",
- "ad4mat.bg": "ad4mat",
- "ad4mat.br": "ad4mat",
- "ad4mat.ch": "ad4mat",
- "ad4mat.co.uk": "ad4mat",
- "ad4mat.cz": "ad4mat",
- "ad4mat.de": "ad4mat",
- "ad4mat.dk": "ad4mat",
- "ad4mat.es": "ad4mat",
- "ad4mat.fi": "ad4mat",
- "ad4mat.fr": "ad4mat",
- "ad4mat.gr": "ad4mat",
- "ad4mat.hu": "ad4mat",
- "ad4mat.it": "ad4mat",
- "ad4mat.mx": "ad4mat",
- "ad4mat.net": "ad4mat",
- "ad4mat.nl": "ad4mat",
- "ad4mat.no": "ad4mat",
- "ad4mat.pl": "ad4mat",
- "ad4mat.ro": "ad4mat",
- "ad4mat.ru": "ad4mat",
- "ad4mat.se": "ad4mat",
- "ad4mat.tr": "ad4mat",
- "ad6.fr": "ad6media",
- "ad6media.co.uk": "ad6media",
- "ad6media.com": "ad6media",
- "ad6media.es": "ad6media",
- "ad6media.fr": "ad6media",
- "a2dfp.net": "ad_decisive",
- "addynamo.net": "ad_dynamo",
- "ebis.ne.jp": "ad_ebis",
- "adlightning.com": "ad_lightning",
- "admagnet.net": "ad_magnet",
- "amimg.net": "ad_magnet",
- "adspirit.de": "ad_spirit",
- "adspirit.net": "ad_spirit",
- "adac.de": "adac_de",
- "adacado.com": "adacado",
- "ozonemedia.com": "adadyn",
- "adrtx.net": "adality_gmbh",
- "adalliance.io": "adalliance.io",
- "adalyser.com": "adalyser.com",
- "adaos-ads.net": "adaos",
- "adap.tv": "adap.tv",
- "smrtlnks.com": "adaptiveblue_smartlinks",
- "yieldoptimizer.com": "adara_analytics",
- "adnetwork.adasiaholdings.com": "adasia_holdings",
- "adbetclickin.pink": "adbetclickin.pink",
- "adbetnet.com": "adbetnet.com",
- "adblade.com": "adblade.com",
- "adbooth.com": "adbooth",
- "adbooth.net": "adbooth",
- "adbox.lv": "adbox",
- "adbrn.com": "adbrain",
- "adbrite.com": "adbrite",
- "adbull.com": "adbull",
- "adbutler.com": "adbutler",
- "adc-serv.net": "adc_media",
- "adc-srv.net": "adc_media",
- "adcash.com": "adcash",
- "vuroll.in": "adchakra",
- "acs86.com": "adchina",
- "csbew.com": "adchina",
- "irs09.com": "adchina",
- "adcito.com": "adcito",
- "adcitomedia.com": "adcito",
- "adclear.net": "adclear",
- "swift.adclerks.com": "adclerks",
- "adclickmedia.com": "adclickmedia",
- "adclickzone.go2cloud.org": "adclickzone",
- "ad-cloud.jp": "adcloud",
- "admarvel.s3.amazonaws.com": "adcolony",
- "ads.admarvel.com": "adcolony",
- "adcolony.com": "adcolony",
- "adrdgt.com": "adconion",
- "amgdgt.com": "adconion",
- "adcrowd.com": "adcrowd",
- "shop2market.com": "adcurve",
- "addtocalendar.com": "add_to_calendar",
- "dpmsrv.com": "addaptive",
- "yagiay.com": "addefend",
- "addfreestats.com": "addfreestats",
- "addinto.com": "addinto",
- "addshoppers.com": "addshoppers",
- "shop.pe": "addshoppers",
- "addthis.com": "addthis",
- "addthiscdn.com": "addthis",
- "addthisedge.com": "addthis",
- "b2btracking.addvalue.de": "addvalue",
- "addyon.com": "addyon",
- "adeasy.ru": "adeasy",
- "ipredictive.com": "adelphic",
- "adengage.com": "adengage",
- "adespresso.com": "adespresso",
- "adexcite.com": "adexcite",
- "adextent.com": "adextent",
- "adf.ly": "adf.ly",
- "adfalcon.com": "adfalcon",
- "adfoc.us": "adfocus",
- "js.adforgames.com": "adforgames",
- "adform.net": "adform",
- "adformdsp.net": "adform",
- "seadform.net": "adform",
- "adfox.ru": "adfox",
- "adwolf.ru": "adfox",
- "adfreestyle.pl": "adfreestyle",
- "adfront.org": "adfront",
- "adfrontiers.com": "adfrontiers",
- "adgebra.co.in": "adgebra",
- "adgenie.co.uk": "adgenie",
- "ad.adgile.com": "adgile",
- "ad.antventure.com": "adgile",
- "adglare.net": "adglare.net",
- "adsafety.net": "adglue",
- "smartadcheck.de": "adgoal",
- "smartredirect.de": "adgoal",
- "adgorithms.com": "adgorithms",
- "adgoto.com": "adgoto",
- "adguard.com": "adguard",
- "adguard.app": "adguard",
- "adguard.info": "adguard",
- "adguard.io": "adguard",
- "adguard.org": "adguard",
- "adtidy.org": "adguard",
- "agrd.io": "adguard",
- "agrd.eu": "adguard",
- "adguard-dns.com": "adguard_dns",
- "adguard-dns.io": "adguard_dns",
- "adguard-vpn.com": "adguard_vpn",
- "adguard-vpn.online": "adguard_vpn",
- "adguardvpn.com": "adguard_vpn",
- "adhands.ru": "adhands",
- "adhese.be": "adhese",
- "adhese.com": "adhese",
- "adhese.net": "adhese",
- "adhitzads.com": "adhitz",
- "adhood.com": "adhood",
- "afy11.net": "adify",
- "cdn.adikteev.com": "adikteev",
- "adimpact.com": "adimpact",
- "adinch.com": "adinch",
- "adition.com": "adition",
- "adjal.com": "adjal",
- "cdn.adjs.net": "adjs",
- "adjug.com": "adjug",
- "adjust.com": "adjust",
- "adj.st": "adjust",
- "adjust.io": "adjust",
- "adjust.net.in": "adjust",
- "adjust.world": "adjust",
- "apptrace.com": "adjust",
- "adk2.com": "adk2",
- "cdn.adsrvmedia.com": "adk2",
- "cdn.cdnrl.com": "adk2",
- "adklip.com": "adklip",
- "adkengage.com": "adknowledge",
- "adknowledge.com": "adknowledge",
- "bidsystem.com": "adknowledge",
- "blogads.com": "adknowledge",
- "cubics.com": "adknowledge",
- "yarpp.org": "adknowledge",
- "adsearch.adkontekst.pl": "adkontekst",
- "netsprint.eu": "adkontekst.pl",
- "adlabs.ru": "adlabs",
- "clickiocdn.com": "adlabs",
- "luxup.ru": "adlabs",
- "mixmarket.biz": "adlabs",
- "ad-serverparc.nl": "adlantic",
- "adimg.net": "adlantis",
- "adlantis.jp": "adlantis",
- "cdn.adless.io": "adless",
- "api.publishers.adlive.io": "adlive_header_bidding",
- "adlooxtracking.com": "adloox",
- "adx1.com": "admachine",
- "adman.gr": "adman",
- "adman.in.gr": "adman",
- "admanmedia.com": "adman_media",
- "admantx.com": "admantx.com",
- "admaster.net": "admaster",
- "cdnmaster.com": "admaster",
- "admaster.com.cn": "admaster.cn",
- "admasterapi.com": "admaster.cn",
- "admatic.com.tr": "admatic",
- "ads5.admatic.com.tr": "admatic",
- "cdn2.admatic.com.tr": "admatic",
- "lib-3pas.admatrix.jp": "admatrix",
- "admaxserver.com": "admax",
- "admaxim.com": "admaxim",
- "admaya.in": "admaya",
- "admedia.com": "admedia",
- "adizio.com": "admedo_com",
- "admedo.com": "admedo_com",
- "admeira.ch": "admeira.ch",
- "admeld.com": "admeld",
- "admeo.ru": "admeo",
- "admaym.com": "admeta",
- "atemda.com": "admeta",
- "admicro.vn": "admicro",
- "vcmedia.vn": "admicro",
- "admitad.com": "admitad.com",
- "admixer.net": "admixer",
- "admixer.com": "admixer",
- "admized.com": "admized",
- "admo.tv": "admo.tv",
- "a.admob.com": "admob",
- "mm.admob.com": "admob",
- "mmv.admob.com": "admob",
- "p.admob.com": "admob",
- "run.admost.com": "admost",
- "dmmotion.com": "admotion",
- "nspmotion.com": "admotion",
- "admulti.com": "admulti",
- "adnegah.net": "adnegah",
- "adnet.vn": "adnet",
- "adnet.biz": "adnet.de",
- "adnet.de": "adnet.de",
- "adclick.lt": "adnet_media",
- "adnet.lt": "adnet_media",
- "ad.adnetwork.net": "adnetwork.net",
- "adnetworkperformance.com": "adnetworkperformance.com",
- "adserver.adnexio.com": "adnexio",
- "adnium.com": "adnium.com",
- "heias.com": "adnologies",
- "smaclick.com": "adnow",
- "st-n.ads3-adnow.com": "adnow",
- "adnymics.com": "adnymics",
- "adobe.com": "adobe_audience_manager",
- "demdex.net": "adobe_audience_manager",
- "everestjs.net": "adobe_audience_manager",
- "everesttech.net": "adobe_audience_manager",
- "adobe.io": "adobe_developer",
- "scene7.com": "adobe_dynamic_media",
- "adobedtm.com": "adobe_dynamic_tag_management",
- "2o7.net": "adobe_experience_cloud",
- "du8783wkf05yr.cloudfront.net": "adobe_experience_cloud",
- "hitbox.com": "adobe_experience_cloud",
- "imageg.net": "adobe_experience_cloud",
- "nedstat.com": "adobe_experience_cloud",
- "omtrdc.net": "adobe_experience_cloud",
- "sitestat.com": "adobe_experience_cloud",
- "adobedc.net": "adobe_experience_league",
- "adobelogin.com": "adobe_login",
- "adobetag.com": "adobe_tagmanager",
- "typekit.com": "adobe_typekit",
- "typekit.net": "adobe_typekit",
- "adocean.pl": "adocean",
- "dmtry.com": "adometry",
- "adomik.com": "adomik",
- "adcde.com": "adon_network",
- "addlvr.com": "adon_network",
- "adfeedstrk.com": "adon_network",
- "adtrgt.com": "adon_network",
- "bannertgt.com": "adon_network",
- "cptgt.com": "adon_network",
- "cpvfeed.com": "adon_network",
- "cpvtgt.com": "adon_network",
- "mygeek.com": "adon_network",
- "popcde.com": "adon_network",
- "sdfje.com": "adon_network",
- "urtbk.com": "adon_network",
- "adonion.com": "adonion",
- "t.adonly.com": "adonly",
- "adoperator.com": "adoperator",
- "adoric.com": "adoric",
- "adorika.com": "adorika",
- "adorika.net": "adorika",
- "adosia.com": "adosia",
- "adotmob.com": "adotmob.com",
- "adotube.com": "adotube",
- "adparlor.com": "adparlor",
- "adparlour.com": "adparlor",
- "a4p.adpartner.pro": "adpartner",
- "adpeepshosted.com": "adpeeps",
- "adperfect.com": "adperfect",
- "adperium.com": "adperium",
- "adpilot.at": "adpilot",
- "erne.co": "adpilot",
- "adplan-ds.com": "adplan",
- "advg.jp": "adplan",
- "c.p-advg.com": "adplan",
- "adplus.co.id": "adplus",
- "adprofex.com": "adprofex",
- "ads2.bid": "adprofex",
- "adframesrc.com": "adprofy",
- "adserve.adpulse.ir": "adpulse",
- "ads.adpv.com": "adpv",
- "adreactor.com": "adreactor",
- "adrecord.com": "adrecord",
- "adrecover.com": "adrecover",
- "ad.vcm.jp": "adresult",
- "adresult.jp": "adresult",
- "adriver.ru": "adriver",
- "adroll.com": "adroll",
- "adrom.net": "adrom",
- "txt.eu": "adrom",
- "adru.net": "adru.net",
- "adrunnr.com": "adrunnr",
- "adsame.com": "adsame",
- "adsbookie.com": "adsbookie",
- "adscale.de": "adscale",
- "adscience.nl": "adscience",
- "adsco.re": "adsco.re",
- "adsensecamp.com": "adsensecamp",
- "adserverpub.com": "adserverpub",
- "online.adservicemedia.dk": "adservice_media",
- "adsfactor.net": "adsfactor",
- "ads.doclix.com": "adside",
- "adskeeper.co.uk": "adskeeper",
- "ssp.adskom.com": "adskom",
- "adslot.com": "adslot",
- "adsnative.com": "adsnative",
- "adsniper.ru": "adsniper.ru",
- "adspeed.com": "adspeed",
- "adspeed.net": "adspeed",
- "o333o.com": "adspyglass",
- "adstage-analytics.herokuapp.com": "adstage",
- "code.adstanding.com": "adstanding",
- "adstars.co.id": "adstars",
- "ad-stir.com": "adstir",
- "4dsply.com": "adsupply",
- "cdn.engine.adsupply.com": "adsupply",
- "trklnks.com": "adsupply",
- "adswizz.com": "adswizz",
- "adtaily.com": "adtaily",
- "adtaily.pl": "adtaily",
- "adtarget.me": "adtarget.me",
- "adtech.de": "adtech",
- "adtechus.com": "adtech",
- "adtegrity.net": "adtegrity",
- "adtpix.com": "adtegrity",
- "adtelligence.de": "adtelligence.de",
- "adentifi.com": "adtheorent",
- "adthink.com": "adthink",
- "advertstream.com": "adthink",
- "audienceinsights.net": "adthink",
- "adtiger.de": "adtiger",
- "adtimaserver.vn": "adtima",
- "adtng.com": "adtng.com",
- "adtoma.com": "adtoma",
- "adtomafusion.com": "adtoma",
- "adtr02.com": "adtr02.com",
- "track.adtraction.com": "adtraction",
- "adtraxx.de": "adtraxx",
- "adtriba.com": "adtriba.com",
- "adtrue.com": "adtrue",
- "adtrustmedia.com": "adtrustmedia",
- "ad.adtube.ir": "adtube",
- "awempire.com": "adult_webmaster_empire",
- "dditscdn.com": "adult_webmaster_empire",
- "livejasmin.com": "adult_webmaster_empire",
- "adultadworld.com": "adultadworld",
- "adworldmedia.com": "adultadworld",
- "adup-tech.com": "adup-tech.com",
- "advaction.ru": "advaction",
- "aucourant.info": "advaction",
- "schetu.net": "advaction",
- "dqfw2hlp4tfww.cloudfront.net": "advalo",
- "ahcdn.com": "advanced_hosters",
- "pix-cdn.org": "advanced_hosters",
- "s3.advarkads.com": "advark",
- "adventori.com": "adventori",
- "adnext.fr": "adverline",
- "adverline.com": "adverline",
- "surinter.net": "adverline",
- "adversaldisplay.com": "adversal",
- "adversalservers.com": "adversal",
- "go.adversal.com": "adversal",
- "adverserve.net": "adverserve",
- "ad.adverteerdirect.nl": "adverteerdirect",
- "adverticum.net": "adverticum",
- "advertise.com": "advertise.com",
- "advertisespace.com": "advertisespace",
- "adsdk.com": "advertising.com",
- "advertising.com": "advertising.com",
- "aol.com": "advertising.com",
- "atwola.com": "advertising.com",
- "pictela.net": "advertising.com",
- "verizonmedia.com": "advertising.com",
- "advertlets.com": "advertlets",
- "advertserve.com": "advertserve",
- "advidi.com": "advidi",
- "am10.ru": "advmaker.ru",
- "am15.net": "advmaker.ru",
- "advolution.de": "advolution",
- "adwebster.com": "adwebster",
- "ads.adwitserver.com": "adwit",
- "adworx.at": "adworx.at",
- "adworxs.net": "adworxs.net",
- "adxion.com": "adxion",
- "adxpansion.com": "adxpansion",
- "ads.adxpose.com": "adxpose",
- "event.adxpose.com": "adxpose",
- "servedby.adxpose.com": "adxpose",
- "adxprtz.com": "adxprtz.com",
- "adyoulike.com": "adyoulike",
- "omnitagjs.com": "adyoulike",
- "adzerk.net": "adzerk",
- "adzly.com": "adzly",
- "aemediatraffic.com": "aemediatraffic",
- "hprofits.com": "aemediatraffic",
- "amxdt.com": "aerify_media",
- "aerisapi.com": "aeris_weather",
- "aerisweather.com": "aeris_weather",
- "affectv.com": "affectv",
- "go.affec.tv": "affectv",
- "hybridtheory.com": "affectv",
- "affilbox.com": "affilbox",
- "affilbox.cz": "affilbox",
- "track.affiliate-b.com": "affiliate-b",
- "affiliate4you.nl": "affiliate4you",
- "ads.affbuzzads.com": "affiliatebuzz",
- "affiliatefuture.com": "affiliatefuture",
- "affiliatelounge.com": "affiliatelounge",
- "affiliation-france.com": "affiliation_france",
- "affiliator.com": "affiliator",
- "affiliaweb.fr": "affiliaweb",
- "banner-rotation.com": "affilinet",
- "webmasterplan.com": "affilinet",
- "affimax.de": "affimax",
- "affinity.com": "affinity",
- "countby.com": "affinity.by",
- "affiz.net": "affiz_cpm",
- "pml.afftrack.com": "afftrack",
- "afgr2.com": "afgr2.com",
- "v2.afilio.com.br": "afilio",
- "afsanalytics.com": "afs_analystics",
- "ads.aftonbladet.se": "aftonbladet_ads",
- "aftv-serving.bid": "aftv-serving.bid",
- "agkn.com": "aggregate_knowledge",
- "agilone.com": "agilone",
- "adview.pl": "agora",
- "pingagenow.com": "ahalogy",
- "aimediagroup.com": "ai_media_group",
- "advombat.ru": "aidata",
- "aidata.io": "aidata",
- "aim4media.com": "aim4media",
- "muscache.com": "airbnb",
- "musthird.com": "airbnb",
- "airbrake.io": "airbrake",
- "airpr.com": "airpr.com",
- "ab.airpush.com": "airpush",
- "abmr.net": "akamai_technologies",
- "akamai.net": "akamai_technologies",
- "akamaihd.net": "akamai_technologies",
- "akamaized.net": "akamai_technologies",
- "akstat.io": "akamai_technologies",
- "edgekey.net": "akamai_technologies",
- "edgesuite.net": "akamai_technologies",
- "imiclk.com": "akamai_technologies",
- "akadns.net": "akamai_technologies",
- "akamaiedge.net": "akamai_technologies",
- "akaquill.net": "akamai_technologies",
- "akamoihd.net": "akamoihd.net",
- "adn-d.sp.gmossp-sp.jp": "akane",
- "akanoo.com": "akanoo",
- "akavita.com": "akavita",
- "ads.albawaba.com": "al_bawaba_advertising",
- "serve.albacross.com": "albacross",
- "aldi-international.com": "aldi-international.com",
- "alenty.com": "alenty",
- "alephd.com": "alephd.com",
- "alexametrics.com": "alexa_metrics",
- "d31qbv1cthcecs.cloudfront.net": "alexa_metrics",
- "d5nxst8fruw4z.cloudfront.net": "alexa_metrics",
- "alexa.com": "alexa_traffic_rank",
- "algolia.com": "algolia.net",
- "algolia.net": "algolia.net",
- "algovid.com": "algovid.com",
- "alibaba.com": "alibaba.com",
- "alicdn.com": "alibaba.com",
- "aliapp.org": "alibaba.com",
- "alibabachengdun.com": "alibaba.com",
- "alibabausercontent.com": "alibaba.com",
- "aliexpress.com": "alibaba.com",
- "alikunlun.com": "alibaba.com",
- "aliyuncs.com": "alibaba.com",
- "alibabacloud.com": "alibaba_cloud",
- "alibabadns.com": "alibaba_cloud",
- "aliyun.com": "alibaba_cloud",
- "ucweb.com": "alibaba_ucbrowser",
- "alipay.com": "alipay.com",
- "alipayobjects.com": "alipay.com",
- "websitealive.com": "alivechat",
- "allegroimg.com": "allegro.pl",
- "allegrostatic.com": "allegro.pl",
- "allegrostatic.pl": "allegro.pl",
- "ngacm.com": "allegro.pl",
- "ngastatic.com": "allegro.pl",
- "i.btg360.com.br": "allin",
- "allo-pages.fr": "allo-pages.fr",
- "allotraffic.com": "allotraffic",
- "edge.alluremedia.com.au": "allure_media",
- "allyes.com": "allyes",
- "inputs.alooma.com": "alooma",
- "arena.altitude-arena.com": "altitude_digital",
- "amadesa.com": "amadesa",
- "amap.com": "amap",
- "amazon.ca": "amazon",
- "amazon.co.jp": "amazon",
- "amazon.co.uk": "amazon",
- "amazon.com": "amazon",
- "amazon.de": "amazon",
- "amazon.es": "amazon",
- "amazon.fr": "amazon",
- "amazon.it": "amazon",
- "d3io1k5o0zdpqr.cloudfront.net": "amazon",
- "a2z.com": "amazon",
- "aamazoncognito.com": "amazon",
- "amazon-corp.com": "amazon",
- "amazon-dss.com": "amazon",
- "amazon.com.au": "amazon",
- "amazon.com.mx": "amazon",
- "amazon.dev": "amazon",
- "amazon.in": "amazon",
- "amazon.nl": "amazon",
- "amazon.sa": "amazon",
- "amazonbrowserapp.co.uk": "amazon",
- "amazonbrowserapp.es": "amazon",
- "amazoncrl.com": "amazon",
- "firetvcaptiveportal.com": "amazon",
- "ntp-fireos.com": "amazon",
- "amazon-adsystem.com": "amazon_adsystem",
- "serving-sys.com": "amazon_adsystem",
- "sizmek.com": "amazon_adsystem",
- "assoc-amazon.ca": "amazon_associates",
- "assoc-amazon.co.uk": "amazon_associates",
- "assoc-amazon.com": "amazon_associates",
- "assoc-amazon.de": "amazon_associates",
- "assoc-amazon.fr": "amazon_associates",
- "assoc-amazon.jp": "amazon_associates",
- "images-amazon.com": "amazon_cdn",
- "media-amazon.com": "amazon_cdn",
- "ssl-images-amazon.com": "amazon_cdn",
- "amazontrust.com": "amazon_cdn",
- "associates-amazon.com": "amazon_cdn",
- "cloudfront.net": "amazon_cloudfront",
- "ota-cloudfront.net": "amazon_cloudfront",
- "axx-eu.amazon-adsystem.com": "amazon_mobile_ads",
- "amazonpay.com": "amazon_payments",
- "payments-amazon.com": "amazon_payments",
- "amazonpay.in": "amazon_payments",
- "aiv-cdn.net": "amazon_video",
- "aiv-delivery.net": "amazon_video",
- "amazonvideo.com": "amazon_video",
- "pv-cdn.net": "amazon_video",
- "primevideo.com": "amazon_video",
- "amazonaws.com": "amazon_web_services",
- "amazonwebservices.com": "amazon_web_services",
- "awsstatic.com": "amazon_web_services",
- "adnetwork.net.vn": "ambient_digital",
- "adnetwork.vn": "ambient_digital",
- "ambientplatform.vn": "ambient_digital",
- "amgload.net": "amgload.net",
- "amoad.com": "amoad",
- "ad.amgdgt.com": "amobee",
- "ads.amgdgt.com": "amobee",
- "amobee.com": "amobee",
- "collective-media.net": "amp_platform",
- "amplitude.com": "amplitude",
- "d24n15hnbwhuhn.cloudfront.net": "amplitude",
- "ampproject.org": "ampproject.org",
- "anametrix.net": "anametrix",
- "ancestrycdn.com": "ancestry_cdn",
- "ancoraplatform.com": "ancora",
- "android.com": "android",
- "anetwork.ir": "anetwork",
- "aniview.com": "aniview.com",
- "a-ads.com": "anonymousads",
- "anormal-tracker.de": "anormal_tracker",
- "answerscloud.com": "answers_cloud_service",
- "anthill.vn": "ants",
- "ants.vn": "ants",
- "rt.analytics.anvato.net": "anvato",
- "tkx2-prod.anvato.net": "anvato",
- "w3.cdn.anvato.net": "anvato",
- "player.anyclip.com": "anyclip",
- "video-loader.com": "aol_be_on",
- "aolcdn.com": "aol_cdn",
- "isp.netscape.com": "aol_cdn",
- "apa.at": "apa.at",
- "apester.com": "apester",
- "apicit.net": "apicit.net",
- "carrierzone.com": "aplus_analytics",
- "appcenter.ms": "appcenter",
- "appcues.com": "appcues",
- "appdynamics.com": "appdynamics",
- "de8of677fyt0b.cloudfront.net": "appdynamics",
- "eum-appdynamics.com": "appdynamics",
- "jscdn.appier.net": "appier",
- "apple.com": "apple",
- "aaplimg.com": "apple",
- "apple-cloudkit.com": "apple",
- "apple-dns.net": "apple",
- "apple-livephotoskit.com": "apple",
- "apple-mapkit.com": "apple",
- "apple.news": "apple",
- "apzones.com": "apple",
- "cdn-apple.com": "apple",
- "icloud-content.com": "apple",
- "icloud.com": "apple",
- "icons.axm-usercontent-apple.com": "apple",
- "itunes.com": "apple",
- "me.com": "apple",
- "mzstatic.com": "apple",
- "safebrowsing.apple": "apple",
- "safebrowsing.g.applimg.com": "apple",
- "iadsdk.apple.com": "apple_ads",
- "applifier.com": "applifier",
- "assets.applovin.com": "applovin",
- "applovin.com": "applovin",
- "applvn.com": "applovin",
- "appmetrx.com": "appmetrx",
- "adnxs.com": "appnexus",
- "adnxs.net": "appnexus",
- "appsflyer.com": "appsflyer",
- "appsflyersdk.com": "appsflyer",
- "adne.tv": "apptv",
- "readserver.net": "apptv",
- "www.apture.com": "apture",
- "arcpublishing.com": "arcpublishing",
- "ard.de": "ard.de",
- "areyouahuman.com": "are_you_a_human",
- "arkoselabs.com": "arkoselabs.com",
- "art19.com": "art19",
- "banners.advsnx.net": "artimedia",
- "artlebedev.ru": "artlebedev.ru",
- "ammadv.it": "aruba_media_marketing",
- "arubamediamarketing.it": "aruba_media_marketing",
- "cya2.net": "arvato_canvas_fp",
- "asambeauty.com": "asambeauty.com",
- "ask.com": "ask.com",
- "aspnetcdn.com": "aspnetcdn",
- "ads.assemblyexchange.com": "assemblyexchange",
- "cdn.astronomer.io": "astronomer",
- "ati-host.net": "at_internet",
- "aticdn.net": "at_internet",
- "xiti.com": "at_internet",
- "atedra.com": "atedra",
- "oadts.com": "atg_group",
- "as00.estara.com": "atg_optimization",
- "atgsvcs.com": "atg_recommendations",
- "adbureau.net": "atlas",
- "atdmt.com": "atlas",
- "atlassbx.com": "atlas",
- "track.roiservice.com": "atlas_profitbuilder",
- "atl-paas.net": "atlassian.net",
- "atlassian.com": "atlassian.net",
- "atlassian.net": "atlassian.net",
- "d12ramskps3070.cloudfront.net": "atlassian.net",
- "bitbucket.org": "atlassian.net",
- "jira.com": "atlassian.net",
- "ss-inf.net": "atlassian.net",
- "d1xfq2052q7thw.cloudfront.net": "atlassian_marketplace",
- "marketplace.atlassian.com": "atlassian_marketplace",
- "atomz.com": "atomz_search",
- "atsfi.de": "atsfi_de",
- "cdn.attracta.com": "attracta",
- "locayta.com": "attraqt",
- "ads.audience2media.com": "audience2media",
- "qwobl.net": "audience_ad_network",
- "revsci.net": "audience_science",
- "wunderloop.net": "audience_science",
- "12mlbe.com": "audiencerate",
- "audiencesquare.com": "audiencesquare.com",
- "ad.gt": "audiencesquare.com",
- "audigent.com": "audiencesquare.com",
- "hadronid.net": "audiencesquare.com",
- "auditude.com": "auditude",
- "audtd.com": "audtd.com",
- "cdn.augur.io": "augur",
- "aumago.com": "aumago",
- "clicktracks.com": "aurea_clicktracks",
- "ausgezeichnet.org": "ausgezeichnet_org",
- "advertising.gov.au": "australia.gov",
- "auth0.com": "auth0",
- "ai.autoid.com": "autoid",
- "optimost.com": "autonomy",
- "oc-track.autonomycloud.com": "autonomy_campaign",
- "track.yieldsoftware.com": "autonomy_campaign",
- "api.autopilothq.com": "autopilothq",
- "autoscout24.com": "autoscout24.com",
- "autoscout24.net": "autoscout24.com",
- "avail.net": "avail",
- "analytics.avanser.com.au": "avanser",
- "avmws.com": "avant_metrics",
- "avantlink.com": "avantlink",
- "ads.avazu.net": "avazu_network",
- "avenseo.com": "avenseo",
- "adspdbl.com": "avid_media",
- "avocet.io": "avocet",
- "aweber.com": "aweber",
- "awin.com": "awin",
- "awin1.com": "awin",
- "perfb.com": "awin",
- "ad.globe7.com": "axill",
- "azadify.com": "azadify",
- "azure.com": "azure",
- "azure.net": "azure",
- "azurefd.net": "azure",
- "trafficmanager.net": "azure",
- "blob.core.windows.net": "azure_blob_storage",
- "azureedge.net": "azureedge.net",
- "b2bcontext.ru": "b2bcontext",
- "b2bvideo.ru": "b2bvideo",
- "babator.com": "babator.com",
- "backbeatmedia.com": "back_beat_media",
- "widgets.backtype.com": "backtype_widgets",
- "bahn.de": "bahn_de",
- "img-bahn.de": "bahn_de",
- "baidu.com": "baidu_ads",
- "baidustatic.com": "baidu_ads",
- "bdimg.com": "baidu_static",
- "bdstatic.com": "baidu_static",
- "baletingo.com": "baletingo.com",
- "bangdom.com": "bangdom.com",
- "widgets.bankrate.com": "bankrate",
- "bannerconnect.net": "banner_connect",
- "bannerflow.com": "bannerflow.com",
- "bannerplay.com": "bannerplay",
- "cdn.bannersnack.com": "bannersnack",
- "dn3y71tq7jf07.cloudfront.net": "barilliance",
- "getbarometer.s3.amazonaws.com": "barometer",
- "basilic.io": "basilic.io",
- "batanga.com": "batanga_network",
- "t4ft.de": "batch_media",
- "bauernative.com": "bauer_media",
- "baur.de": "baur.de",
- "baynote.net": "baynote_observer",
- "bazaarvoice.com": "bazaarvoice",
- "bbci.co.uk": "bbci",
- "tracking.bd4travel.com": "bd4travel",
- "beopinion.com": "be_opinion",
- "bfmio.com": "beachfront",
- "beaconads.com": "beacon_ad_network",
- "beampulse.com": "beampulse.com",
- "beanstalkdata.com": "beanstalk_data",
- "bebi.com": "bebi",
- "beeketing.com": "beeketing.com",
- "beeline.ru": "beeline.ru",
- "bidr.io": "beeswax",
- "tracker.beezup.com": "beezup",
- "begun.ru": "begun",
- "behavioralengine.com": "behavioralengine",
- "belboon.de": "belboon_gmbh",
- "cdn.belco.io": "belco",
- "belstat.be": "belstat",
- "belstat.com": "belstat",
- "belstat.de": "belstat",
- "belstat.fr": "belstat",
- "belstat.nl": "belstat",
- "bemobile.ua": "bemobile.ua",
- "tag.benchplatform.com": "bench_platform",
- "betterttv.net": "betterttv",
- "betweendigital.com": "betweendigital.com",
- "intencysrv.com": "betweendigital.com",
- "bid.run": "bid.run",
- "bidgear.com": "bidgear",
- "bidswitch.net": "bidswitch",
- "exe.bid": "bidswitch",
- "bttrack.com": "bidtellect",
- "bidtheatre.com": "bidtheatre",
- "bidvertiser.com": "bidvertiser",
- "bigmobileads.com": "big_mobile",
- "bigcommerce.com": "bigcommerce.com",
- "bigmir.net": "bigmir.net",
- "bigpoint-payment.com": "bigpoint",
- "bigpoint.com": "bigpoint",
- "bigpoint.net": "bigpoint",
- "bpcdn.net": "bigpoint",
- "bpsecure.com": "bigpoint",
- "bildstatic.de": "bild",
- "ad-cdn.bilgin.pro": "bilgin_pro",
- "pixel.bilinmedia.net": "bilin",
- "bat.r.msn.com": "bing_ads",
- "bing.com": "bing_ads",
- "bing.net": "bing_ads",
- "virtualearth.net": "bing_maps",
- "binge.com.au": "binge",
- "view.binlayer.com": "binlayer",
- "widgets.binotel.com": "binotel",
- "esendra.fi": "bisnode",
- "bitcoinplus.com": "bitcoin_miner",
- "bit.ly": "bitly",
- "bitrix.de": "bitrix",
- "bitrix.info": "bitrix",
- "bitrix.ru": "bitrix",
- "bitrix24.com": "bitrix",
- "bitrix24.com.br": "bitrix",
- "bitwarden.com": "bitwarden",
- "traffic.adxprts.com": "bizcn",
- "jssr.jd.com": "blackdragon",
- "blau.de": "blau.de",
- "bnmla.com": "blink_new_media",
- "blismedia.com": "blis",
- "blogad.com.tw": "blogad",
- "blogbang.com": "blogbang",
- "www.blogcatalog.com": "blogcatalog",
- "track.blogcounter.de": "blogcounter",
- "blogfoster.com": "blogfoster.com",
- "bloggerads.net": "bloggerads",
- "blogher.com": "blogher",
- "blogherads.com": "blogher",
- "blogimg.jp": "blogimg.jp",
- "blogsmithmedia.com": "blogsmithmedia.com",
- "blogblog.com": "blogspot_com",
- "blogger.com": "blogspot_com",
- "blogspot.com": "blogspot_com",
- "brcdn.com": "bloomreach",
- "brsrvr.com": "bloomreach",
- "brtstats.com": "bloomreach",
- "offerpoint.net": "blue_cherry_group",
- "blueserving.com": "blue_seed",
- "blueconic.net": "blueconic.net",
- "bluecore.com": "bluecore",
- "triggeredmail.appspot.com": "bluecore",
- "bkrtx.com": "bluekai",
- "bluekai.com": "bluekai",
- "adrevolver.com": "bluelithium",
- "bluelithium.com": "bluelithium",
- "bmmetrix.com": "bluemetrix",
- "japanmetrix.jp": "bluemetrix",
- "bluenewsupdate.info": "bluenewsupdate.info",
- "bluestreak.com": "bluestreak",
- "bluetriangletech.com": "bluetriangle",
- "btttag.com": "bluetriangle",
- "bodelen.com": "bodelen.com",
- "tracking.bol.com": "bol_affiliate_program",
- "qb.boldapps.net": "bold",
- "secure.apps.shappify.com": "bold",
- "boldchat.com": "boldchat",
- "boltdns.net": "boltdns.net",
- "bom.gov.au": "bom",
- "ml314.com": "bombora",
- "bongacams.com": "bongacams.com",
- "bonial.com": "bonial",
- "bonialconnect.com": "bonial",
- "bonialserviceswidget.de": "bonial",
- "boo-box.com": "boo-box",
- "booking.com": "booking.com",
- "bstatic.com": "booking.com",
- "boostbox.com.br": "boost_box",
- "boostervideo.ru": "booster_video",
- "bootstrapcdn.com": "bootstrap",
- "borrango.com": "borrango.com",
- "scan.botscanner.com": "botscanner",
- "boudja.com": "boudja.com",
- "bounceexchange.com": "bounce_exchange",
- "bouncex.com": "bouncex",
- "bouncex.net": "bouncex",
- "j.clickdensity.com": "box_uk",
- "boxever.com": "boxever",
- "brainient.com": "brainient",
- "brainsins.com": "brainsins",
- "d2xkqxdy6ewr93.cloudfront.net": "brainsins",
- "mobileapptracking.com": "branch",
- "app.link": "branch_metrics",
- "branch.io": "branch_metrics",
- "brandaffinity.net": "brand_affinity",
- "go.cpmadvisors.com": "brand_networks",
- "optorb.com": "brand_networks",
- "brandmetrics.com": "brandmetrics.com",
- "brandreachsys.com": "brandreach",
- "rtbidder.net": "brandscreen",
- "brandwire.tv": "brandwire.tv",
- "branica.com": "branica",
- "appboycdn.com": "braze",
- "braze.com": "braze",
- "brealtime.com": "brealtime",
- "bridgetrack.com": "bridgetrack",
- "brightcove.com": "brightcove",
- "brightcove.net": "brightcove_player",
- "analytics.brightedge.com": "brightedge",
- "munchkin.brightfunnel.com": "brightfunnel",
- "brightonclick.com": "brightonclick.com",
- "btrll.com": "brightroll",
- "p.brilig.com": "brilig",
- "brillen.de": "brillen.de",
- "broadstreetads.com": "broadstreet",
- "bm23.com": "bronto",
- "brow.si": "brow.si",
- "browser-statistik.de": "browser-statistik",
- "browser-update.org": "browser_update",
- "btncdn.com": "btncdn.com",
- "in.bubblestat.com": "bubblestat",
- "brighteroption.com": "buddy_media",
- "bufferapp.com": "buffer_button",
- "bugherd.com": "bugherd.com",
- "bugsnag.com": "bugsnag",
- "d2wy8f7a9ursnm.cloudfront.net": "bugsnag",
- "bulkhentai.com": "bulkhentai.com",
- "bumlam.com": "bumlam.com",
- "bunchbox.co": "bunchbox",
- "bf-ad.net": "burda",
- "bf-tools.net": "burda",
- "bstatic.de": "burda_digital_systems",
- "burstbeacon.com": "burst_media",
- "burstnet.com": "burst_media",
- "burt.io": "burt",
- "d3q6px0y2suh5n.cloudfront.net": "burt",
- "rich-agent.s3.amazonaws.com": "burt",
- "richmetrics.com": "burt",
- "stats.businessol.com": "businessonline_analytics",
- "bttn.io": "button",
- "buysellads.com": "buysellads",
- "servedby-buysellads.com": "buysellads",
- "buzzadexchange.com": "buzzadexchange.com",
- "buzzador.com": "buzzador",
- "buzzfed.com": "buzzfeed",
- "bwbx.io": "bwbx.io",
- "bypass.jp": "bypass",
- "c1exchange.com": "c1_exchange",
- "c3metrics.com": "c3_metrics",
- "c3tag.com": "c3_metrics",
- "c8.net.ua": "c8_network",
- "cackle.me": "cackle.me",
- "d1cerpgff739r9.cloudfront.net": "cadreon",
- "d1qpxk1wfeh8v1.cloudfront.net": "cadreon",
- "callpage.io": "call_page",
- "callbackhunter.com": "callbackhunter",
- "callmeasurement.com": "callbox",
- "callibri.ru": "callibri",
- "callrail.com": "callrail",
- "calltracking.ru": "calltracking",
- "caltat.com": "caltat.com",
- "cam-content.com": "cam-content.com",
- "camakaroda.com": "camakaroda.com",
- "s.edkay.com": "campus_explorer",
- "canddi.com": "canddi",
- "canonical.com": "canonical",
- "canvas.net": "canvas",
- "canvasnetwork.com": "canvas",
- "du11hjcvx0uqb.cloudfront.net": "canvas",
- "kdata.fr": "capitaldata",
- "captora.com": "captora",
- "edge.capturemedia.network": "capture_media",
- "cdn.capturly.com": "capturly",
- "route.carambo.la": "carambola",
- "carbonads.com": "carbonads",
- "carbonads.net": "carbonads",
- "fusionads.net": "carbonads",
- "cardinalcommerce.com": "cardinal",
- "cardlytics.com": "cardlytics",
- "cdn.carrotquest.io": "carrot_quest",
- "api.cartstack.com": "cartstack",
- "caspion.com": "caspion",
- "t.castle.io": "castle",
- "3gl.net": "catchpoint",
- "cbox.ws": "cbox",
- "adlog.com.com": "cbs_interactive",
- "cbsinteractive.com": "cbs_interactive",
- "dw.com.com": "cbs_interactive",
- "ccmbg.com": "ccm_benchmark",
- "admission.net": "cdk_digital_marketing",
- "cdn-net.com": "cdn-net.com",
- "cdn13.com": "cdn13.com",
- "cdn77.com": "cdn77",
- "cdn77.org": "cdn77",
- "cdnetworks.com": "cdnetworks.net",
- "cdnetworks.net": "cdnetworks.net",
- "cdnnetwok.xyz": "cdnnetwok_xyz",
- "cdnondemand.org": "cdnondemand.org",
- "cdnsure.com": "cdnsure.com",
- "cdnvideo.com": "cdnvideo.com",
- "cdnwidget.com": "cdnwidget.com",
- "cedexis-radar.net": "cedexis_radar",
- "cedexis-test.com": "cedexis_radar",
- "cedexis.com": "cedexis_radar",
- "cedexis.fastlylb.net": "cedexis_radar",
- "cedexis.net": "cedexis_radar",
- "celebrus.com": "celebrus",
- "celtra.com": "celtra",
- "cendyn.adtrack.calls.net": "cendyn",
- "centraltag.com": "centraltag",
- "brand-server.com": "centro",
- "speed-trap.nl": "cerberus_speed-trap",
- "link.ixs1.net": "certainsource",
- "hits.e.cl": "certifica_metric",
- "certona.net": "certona",
- "res-x.com": "certona",
- "gsn.chameleon.ad": "chameleon",
- "chango.ca": "chango",
- "chango.com": "chango",
- "channelintelligence.com": "channel_intelligence",
- "cptrack.de": "channel_pilot_solutions",
- "channeladvisor.com": "channeladvisor",
- "searchmarketing.com": "channeladvisor",
- "channelfinder.net": "channelfinder",
- "chaordicsystems.com": "chaordic",
- "chartbeat.com": "chartbeat",
- "chartbeat.net": "chartbeat",
- "chartboost.com": "chartboost",
- "chaser.ru": "chaser",
- "cloud.chatbeacon.io": "chat_beacon",
- "chatango.com": "chatango",
- "call.chatra.io": "chatra",
- "chaturbate.com": "chaturbate.com",
- "chatwing.com": "chatwing",
- "checkmystats.com.au": "checkmystats",
- "chefkoch-cdn.de": "chefkoch_de",
- "chefkoch.de": "chefkoch_de",
- "tracker.chinmedia.vn": "chin_media",
- "chinesean.com": "chinesean",
- "chitika.net": "chitika",
- "choicestream.com": "choicestream",
- "api.getchute.com": "chute",
- "media.chute.io": "chute",
- "iqcontentplatform.de": "circit",
- "data.circulate.com": "circulate",
- "p.cityspark.com": "city_spark",
- "cityads.ru": "cityads",
- "gameleads.ru": "cityads",
- "ciuvo.com": "ciuvo.com",
- "widget.civey.com": "civey_widgets",
- "civicscience.com": "civicscience.com",
- "ciweb.ciwebgroup.com": "ciwebgroup",
- "clcknads.pro": "clcknads.pro",
- "pulseradius.com": "clear_pier",
- "clearbit.com": "clearbit.com",
- "clearsale.com.br": "clearsale",
- "tag.clrstm.com": "clearstream.tv",
- "api.clerk.io": "clerk.io",
- "cleverpush.com": "clever_push",
- "wzrkt.com": "clever_tap",
- "cleversite.ru": "cleversite",
- "script.click360.io": "click360",
- "clickandchat.com": "click_and_chat",
- "software.clickback.com": "click_back",
- "hit.clickaider.com": "clickaider",
- "clickaine.com": "clickaine",
- "clickbank.net": "clickbank",
- "cbproads.com": "clickbank_proads",
- "adtoll.com": "clickbooth",
- "clickbooth.com": "clickbooth",
- "clickboothlnk.com": "clickbooth",
- "clickcease.com": "clickcease",
- "clickcertain.com": "clickcertain",
- "remarketstats.com": "clickcertain",
- "clickdesk.com": "clickdesk",
- "analytics.clickdimensions.com": "clickdimensions",
- "clickequations.net": "clickequations",
- "clickexperts.net": "clickexperts",
- "doublemax.net": "clickforce",
- "clickinc.com": "clickinc",
- "clickintext.net": "clickintext",
- "clickky.biz": "clickky",
- "9nl.be": "clickmeter",
- "9nl.com": "clickmeter",
- "9nl.eu": "clickmeter",
- "9nl.it": "clickmeter",
- "9nl.me": "clickmeter",
- "clickmeter.com": "clickmeter",
- "clickonometrics.pl": "clickonometrics",
- "clickpoint.com": "clickpoint",
- "clickpoint.it": "clickpoint",
- "clickprotector.com": "clickprotector",
- "clickreport.com": "clickreport",
- "doogleonduty.com": "clickreport",
- "ctn.go2cloud.org": "clicks_thru_networks",
- "clicksor.com": "clicksor",
- "hatid.com": "clicksor",
- "lzjl.com": "clicksor",
- "myroitracking.com": "clicksor",
- "clicktale.com": "clicktale",
- "clicktale.net": "clicktale",
- "clicktale.pantherssl.com": "clicktale",
- "clicktalecdn.sslcs.cdngc.net": "clicktale",
- "clicktripz.com": "clicktripz",
- "clickwinks.com": "clickwinks",
- "getclicky.com": "clicky",
- "staticstuff.net": "clicky",
- "clickyab.com": "clickyab",
- "clicmanager.fr": "clicmanager",
- "eplayer.clipsyndicate.com": "clip_syndicate",
- "www.is1.clixgalore.com": "clixgalore",
- "clixmetrix.com": "clixmetrix",
- "clixsense.com": "clixsense",
- "cloud-media.fr": "cloud-media.fr",
- "cloudflare.com": "cloudflare",
- "cloudflare.net": "cloudflare",
- "cloudflare-dm-cmpimg.com": "cloudflare",
- "cloudflare-dns.com": "cloudflare",
- "cloudflare-ipfs.com": "cloudflare",
- "cloudflare-quic.com": "cloudflare",
- "cloudflare-terms-of-service-abuse.com": "cloudflare",
- "cloudflare.tv": "cloudflare",
- "cloudflareaccess.com": "cloudflare",
- "cloudflareclient.com": "cloudflare",
- "cloudflareinsights.com": "cloudflare",
- "cloudflareok.com": "cloudflare",
- "cloudflareportal.com": "cloudflare",
- "cloudflareresolve.com": "cloudflare",
- "cloudflaressl.com": "cloudflare",
- "cloudflarestatus.com": "cloudflare",
- "cloudflarestream.com": "cloudflare",
- "pacloudflare.com": "cloudflare",
- "sn-cloudflare.com": "cloudflare",
- "videodelivery.net": "cloudflare",
- "cloudimg.io": "cloudimage.io",
- "cloudinary.com": "cloudinary",
- "clovenetwork.com": "clove_network",
- "clustrmaps.com": "clustrmaps",
- "cnbc.com": "cnbc",
- "cnetcontent.com": "cnetcontent.com",
- "cnstats.ru": "cnstats",
- "cnzz.com": "cnzz.com",
- "umeng.com": "cnzz.com",
- "acc-hd.de": "coadvertise",
- "client.cobrowser.net": "cobrowser",
- "codeonclick.com": "codeonclick.com",
- "cogocast.net": "cogocast",
- "coin-have.com": "coin_have",
- "appsha1.cointraffic.io": "coin_traffic",
- "authedmine.com": "coinhive",
- "coin-hive.com": "coinhive",
- "coinhive.com": "coinhive",
- "coinurl.com": "coinurl",
- "coll1onf.com": "coll1onf.com",
- "coll2onf.com": "coll2onf.com",
- "service.collarity.com": "collarity",
- "static.clmbtech.com": "columbia_online",
- "combotag.com": "combotag",
- "pdk.theplatform.com": "comcast_technology_solutions",
- "theplatform.com": "comcast_technology_solutions",
- "comm100.cn": "comm100",
- "comm100.com": "comm100",
- "cdn-cs.com": "commerce_sciences",
- "cdn.mercent.com": "commercehub",
- "link.mercent.com": "commercehub",
- "commercialvalue.org": "commercialvalue.org",
- "afcyhf.com": "commission_junction",
- "anrdoezrs.net": "commission_junction",
- "apmebf.com": "commission_junction",
- "awltovhc.com": "commission_junction",
- "emjcd.com": "commission_junction",
- "ftjcfx.com": "commission_junction",
- "lduhtrp.net": "commission_junction",
- "qksz.net": "commission_junction",
- "tkqlhce.com": "commission_junction",
- "tqlkg.com": "commission_junction",
- "yceml.net": "commission_junction",
- "communicatorcorp.com": "communicator_corp",
- "wowanalytics.co.uk": "communigator",
- "c-col.com": "competexl",
- "c.compete.com": "competexl",
- "complex.com": "complex_media_network",
- "complexmedianetwork.com": "complex_media_network",
- "comprigo.com": "comprigo",
- "comscore.com": "comscore",
- "zqtk.net": "comscore",
- "conative.de": "conative.de",
- "condenast.com": "condenastdigital.com",
- "conduit-banners.com": "conduit",
- "conduit-data.com": "conduit",
- "conduit.com": "conduit",
- "confirmit.com": "confirmit",
- "congstar.de": "congstar.de",
- "connatix.com": "connatix.com",
- "connected-by.connectad.io": "connectad",
- "cdn.connecto.io": "connecto",
- "connexity.net": "connexity",
- "cxt.ms": "connexity",
- "connextra.com": "connextra",
- "rs6.net": "constant_contact",
- "serverbid.com": "consumable",
- "contactatonce.com": "contact_at_once",
- "adrolays.de": "contact_impact",
- "c-i.as": "contact_impact",
- "df-srv.de": "contact_impact",
- "d1uwd25yvxu96k.cloudfront.net": "contactme",
- "static.contactme.com": "contactme",
- "contaxe.com": "contaxe",
- "content.ad": "content.ad",
- "ingestion.contentinsights.com": "content_insights",
- "contentexchange.me": "contentexchange.me",
- "ctfassets.net": "contentful_gmbh",
- "contentpass.de": "contentpass",
- "contentpass.net": "contentpass",
- "contentsquare.net": "contentsquare.net",
- "d1aug3dv5magti.cloudfront.net": "contentwrx",
- "d39se0h2uvfakd.cloudfront.net": "contentwrx",
- "c-on-text.com": "context",
- "intext.contextad.pl": "context.ad",
- "continum.net": "continum_net",
- "s2.contribusourcesyndication.com": "contribusource",
- "hits.convergetrack.com": "convergetrack",
- "fastclick.net": "conversant",
- "mediaplex.com": "conversant",
- "mplxtms.com": "conversant",
- "cm-commerce.com": "conversio",
- "media.conversio.com": "conversio",
- "c.conversionlogic.net": "conversion_logic",
- "conversionruler.com": "conversionruler",
- "conversionsbox.com": "conversions_box",
- "conversionsondemand.com": "conversions_on_demand",
- "ant.conversive.nl": "conversive",
- "convertexperiments.com": "convert",
- "d3sjgucddk68ji.cloudfront.net": "convertfox",
- "convertro.com": "convertro",
- "d1ivexoxmp59q7.cloudfront.net": "convertro",
- "conviva.com": "conviva",
- "cookieconsent.silktide.com": "cookie_consent",
- "cookie-script.com": "cookie_script",
- "cookiebot.com": "cookiebot",
- "cookieq.com": "cookieq",
- "lite.piclens.com": "cooliris",
- "copacet.com": "copacet",
- "raasnet.com": "coreaudience",
- "coremotives.com": "coremotives",
- "coull.com": "coull",
- "cpmrocket.com": "cpm_rocket",
- "cpmprofit.com": "cpmprofit",
- "cpmstar.com": "cpmstar",
- "captifymedia.com": "cpx.to",
- "cpx.to": "cpx.to",
- "cqcounter.com": "cq_counter",
- "cqq5id8n.com": "cqq5id8n.com",
- "cquotient.com": "cquotient.com",
- "craftkeys.com": "craftkeys",
- "ads.crakmedia.com": "crakmedia_network",
- "craktraffic.com": "crakmedia_network",
- "crankyads.com": "crankyads",
- "crashlytics.com": "crashlytics",
- "cetrk.com": "crazy_egg",
- "crazyegg.com": "crazy_egg",
- "dnn506yrbagrg.cloudfront.net": "crazy_egg",
- "creafi-online-media.com": "creafi",
- "createjs.com": "createjs",
- "creativecommons.org": "creative_commons",
- "brandwatch.com": "crimsonhexagon_com",
- "crimsonhexagon.com": "crimsonhexagon_com",
- "hexagon-analytics.com": "crimsonhexagon_com",
- "ctnsnet.com": "crimtan",
- "crisp.chat": "crisp",
- "crisp.im": "crisp",
- "criteo.com": "criteo",
- "criteo.net": "criteo",
- "p.crm4d.com": "crm4d",
- "crossengage.io": "crossengage",
- "crosspixel.net": "crosspixel",
- "crsspxl.com": "crosspixel",
- "crosssell.info": "crosssell.info",
- "crossss.com": "crossss",
- "widget.crowdignite.com": "crowd_ignite",
- "static.crowdscience.com": "crowd_science",
- "ss.crowdprocess.com": "crowdprocess",
- "our.glossip.nl": "crowdynews",
- "widget.breakingburner.com": "crowdynews",
- "widget.crowdynews.com": "crowdynews",
- "searchg2.crownpeak.net": "crownpeak",
- "snippet.omm.crownpeak.com": "crownpeak",
- "cryptoloot.pro": "cryptoloot_miner",
- "ctnetwork.hu": "ctnetwork",
- "adzhub.com": "ctrlshift",
- "data.withcubed.com": "cubed",
- "cuelinks.com": "cuelinks",
- "cdn.cupinteractive.com": "cup_interactive",
- "curse.com": "curse.com",
- "cursecdn.com": "cursecdn.com",
- "assets.customer.io": "customer.io",
- "widget.customerly.io": "customerly",
- "cxense.com": "cxense",
- "cxo.name": "cxo.name",
- "cyberwing.co.jp": "cyber_wing",
- "cybersource.com": "cybersource",
- "cygnus.com": "cygnus",
- "da-ads.com": "da-ads.com",
- "dailymail.co.uk": "dailymail.co.uk",
- "dailymotion.com": "dailymotion",
- "dailymotionbus.com": "dailymotion",
- "dm-event.net": "dailymotion",
- "dmcdn.net": "dailymotion",
- "dmxleo.com": "dailymotion_advertising",
- "ds1.nl": "daisycon",
- "dantrack.net": "dantrack.net",
- "dmclick.cn": "darwin_marketing",
- "tags.dashboardad.net": "dashboard_ad",
- "datacaciques.com": "datacaciques.com",
- "datacoral.com": "datacoral",
- "abandonaid.com": "datacrushers",
- "datacrushers.com": "datacrushers",
- "datadome.co": "datadome",
- "optimahub.com": "datalicious_datacollector",
- "supert.ag": "datalicious_supertag",
- "inextaction.net": "datalogix",
- "nexac.com": "datalogix",
- "datamind.ru": "datamind.ru",
- "datatables.net": "datatables",
- "adunits.datawrkz.com": "datawrkz",
- "dataxpand.script.ag": "dataxpand",
- "tc.dataxpand.com": "dataxpand",
- "w55c.net": "dataxu",
- "datds.net": "datds.net",
- "pro-market.net": "datonics",
- "displaymarketplace.com": "datran",
- "davebestdeals.com": "davebestdeals.com",
- "dawandastatic.com": "dawandastatic.com",
- "dc-storm.com": "dc_stormiq",
- "h4k5.com": "dc_stormiq",
- "stormcontainertag.com": "dc_stormiq",
- "stormiq.com": "dc_stormiq",
- "dcbap.com": "dcbap.com",
- "dcmn.com": "dcmn.com",
- "statslogger.rocket.persgroep.cloud": "de_persgroep",
- "deadlinefunnel.com": "deadline_funnel",
- "cc2.dealer.com": "dealer.com",
- "d9lq0o81skkdj.cloudfront.net": "dealer.com",
- "esm1.net": "dealer.com",
- "static.dealer.com": "dealer.com",
- "decibelinsight.net": "decibel_insight",
- "ads.dedicatedmedia.com": "dedicated_media",
- "api.deep.bi": "deep.bi",
- "deepintent.com": "deepintent.com",
- "defpush.com": "defpush.com",
- "deichmann.com": "deichmann.com",
- "vxml4.delacon.com.au": "delacon",
- "tracking.percentmobile.com": "delivr",
- "adaction.se": "delta_projects",
- "de17a.com": "delta_projects",
- "deluxe.script.ag": "deluxe",
- "delvenetworks.com": "delve_networks",
- "company-target.com": "demandbase",
- "demandbase.com": "demandbase",
- "dmd53.com": "demandmedia",
- "dmtracker.com": "demandmedia",
- "deqwas.net": "deqwas",
- "devatics.com": "devatics",
- "developermedia.com": "developer_media",
- "dapxl.com": "deviantart.net",
- "deviantart.net": "deviantart.net",
- "my.blueadvertise.com": "dex_platform",
- "dgm-au.com": "dgm",
- "s2d6.com": "dgm",
- "d31y97ze264gaa.cloudfront.net": "dialogtech",
- "d3von6il1wr7wo.cloudfront.net": "dianomi",
- "dianomi.com": "dianomi",
- "dianomioffers.co.uk": "dianomi",
- "tag.didit.com": "didit_blizzard",
- "track.did-it.com": "didit_maestro",
- "privacy-center.org": "didomi",
- "digg.com": "digg_widget",
- "digicert.com": "digicert_trust_seal",
- "phicdn.net": "digicert_trust_seal",
- "digidip.net": "digidip",
- "digiglitzmarketing.go2cloud.org": "digiglitz",
- "wtp101.com": "digilant",
- "digioh.com": "digioh",
- "lightboxcdn.com": "digioh",
- "digitalgov.gov": "digital.gov",
- "cookiereports.com": "digital_control_room",
- "adtag.cc": "digital_nomads",
- "adready.com": "digital_remedy",
- "adreadytractions.com": "digital_remedy",
- "cpxinteractive.com": "digital_remedy",
- "directtrack.com": "digital_river",
- "onenetworkdirect.net": "digital_river",
- "track.digitalriver.com": "digital_river",
- "dwin1.com": "digital_window",
- "digiteka.net": "digiteka",
- "ultimedia.com": "digiteka",
- "digitru.st": "digitrust",
- "widget.dihitt.com.br": "dihitt_badge",
- "dimml.io": "dimml",
- "keywordsconnect.com": "direct_keyword_link",
- "directadvert.ru": "directadvert",
- "directrev.com": "directrev",
- "discordapp.com": "discord",
- "disneyplus.com": "disneyplus",
- "bamgrid.com": "disneystreaming",
- "dssedge.com": "disneystreaming",
- "dssott.com": "disneystreaming",
- "d81mfvml8p5ml.cloudfront.net": "display_block",
- "disqus.com": "disqus",
- "disquscdn.com": "disqus",
- "disqusads.com": "disqus_ads",
- "distiltag.com": "distil_tag",
- "districtm.ca": "districtm.io",
- "districtm.io": "districtm.io",
- "jsrdn.com": "distroscale",
- "div.show": "div.show",
- "stats.vertriebsassistent.de": "diva",
- "tag.divvit.com": "divvit",
- "d-msquared.com": "dm2",
- "and.co.uk": "dmg_media",
- "dmm.co.jp": "dmm",
- "ctret.de": "dmwd",
- "toolbar.dockvine.com": "dockvine",
- "awecr.com": "docler",
- "fwbntw.com": "docler",
- "s.dogannet.tv": "dogannet",
- "domain.glass": "domainglass",
- "www.domodomain.com": "domodomain",
- "donation-tools.org": "donationtools",
- "doofinder.com": "doofinder.com",
- "embed.doorbell.io": "doorbell.io",
- "dotandad.com": "dotandmedia",
- "trackedlink.net": "dotmailer",
- "dotmetrics.net": "dotmetrics.net",
- "dotomi.com": "dotomi",
- "dtmc.com": "dotomi",
- "dtmpub.com": "dotomi",
- "double.net": "double.net",
- "2mdn.net": "doubleclick",
- "doublepimp.com": "doublepimp",
- "doublepimpssl.com": "doublepimp",
- "redcourtside.com": "doublepimp",
- "xeontopa.com": "doublepimp",
- "zerezas.com": "doublepimp",
- "doubleverify.com": "doubleverify",
- "wrating.com": "dratio",
- "adsymptotic.com": "drawbridge",
- "dreame.tech": "dreame_tech",
- "dreametech.com": "dreame_tech",
- "dreamlab.pl": "dreamlab.pl",
- "drift.com": "drift",
- "js.driftt.com": "drift",
- "getdrip.com": "drip",
- "dropbox.com": "dropbox.com",
- "dropboxstatic.com": "dropbox.com",
- "z5x.net": "dsnr_media_group",
- "dsp-rambler.ru": "dsp_rambler",
- "m6d.com": "dstillery",
- "media6degrees.com": "dstillery",
- "dtscout.com": "dtscout.com",
- "dd-cdn.multiscreensite.com": "dudamobile",
- "px.multiscreensite.com": "dudamobile",
- "cdn-0.d41.co": "dun_and_bradstreet",
- "cn01.dwstat.cn": "dwstat.cn",
- "dynad.net": "dynad",
- "dyntrk.com": "dynadmic",
- "dyntracker.de": "dynamic_1001_gmbh",
- "media01.eu": "dynamic_1001_gmbh",
- "content.dl-rms.com": "dynamic_logic",
- "dlqm.net": "dynamic_logic",
- "questionmarket.com": "dynamic_logic",
- "dynamicyield.com": "dynamic_yield",
- "beacons.hottraffic.nl": "dynata",
- "dynatrace.com": "dynatrace.com",
- "dyncdn.me": "dyncdn.me",
- "e-planning.net": "e-planning",
- "eadv.it": "eadv",
- "eanalyzer.de": "eanalyzer.de",
- "early-birds.fr": "early_birds",
- "cdn.earnify.com": "earnify",
- "earnify.com": "earnify_tracker",
- "easyads.bg": "easyads",
- "easylist.club": "easylist_club",
- "classistatic.de": "ebay",
- "ebay-us.com": "ebay",
- "ebay.com": "ebay",
- "ebay.de": "ebay",
- "ebayclassifiedsgroup.com": "ebay",
- "ebaycommercenetwork.com": "ebay",
- "ebaydesc.com": "ebay",
- "ebayimg.com": "ebay",
- "ebayrtm.com": "ebay",
- "ebaystatic.com": "ebay",
- "ad.about.co.kr": "ebay_korea",
- "adcheck.about.co.kr": "ebay_korea",
- "adn.ebay.com": "ebay_partner_network",
- "beead.co.uk": "ebuzzing",
- "beead.fr": "ebuzzing",
- "beead.net": "ebuzzing",
- "ebuzzing.com": "ebuzzing",
- "ebz.io": "ebuzzing",
- "echoenabled.com": "echo",
- "eclick.vn": "eclick",
- "econda-monitor.de": "econda",
- "eco-tag.jp": "ecotag",
- "alphacdn.net": "edgio",
- "edg.io": "edgio",
- "edgecast.com": "edgio",
- "edgecastcdn.net": "edgio",
- "edgecastdns.net": "edgio",
- "sigmacdn.net": "edgio",
- "ecustomeropinions.com": "edigitalresearch",
- "effectivemeasure.net": "effective_measure",
- "effiliation.com": "effiliation",
- "egain.net": "egain",
- "cloud-emea.analytics-egain.com": "egain_analytics",
- "ehi-siegel.de": "ehi-siegel_de",
- "ekmpinpoint.com": "ekmpinpoint",
- "ekomi.de": "ekomi",
- "elasticad.net": "elastic_ad",
- "elasticbeanstalk.com": "elastic_beanstalk",
- "cloudcell.com": "electronic_arts",
- "ea.com": "electronic_arts",
- "eamobile.com": "electronic_arts",
- "element.io": "element",
- "riot.im": "element",
- "elicitapp.com": "elicit",
- "eloqua.com": "eloqua",
- "en25.com": "eloqua",
- "eluxer.net": "eluxer_net",
- "tracker.emailaptitude.com": "email_aptitude",
- "tag.email-attitude.com": "email_attitude",
- "app.emarketeer.com": "emarketeer",
- "embed.ly": "embed.ly",
- "embedly.com": "embed.ly",
- "emediate.dk": "emediate",
- "emediate.eu": "emediate",
- "emediate.se": "emediate",
- "emetriq.de": "emetriq",
- "e2ma.net": "emma",
- "adinsight.co.kr": "emnet",
- "colbenson.es": "empathy",
- "emsmobile.de": "emsmobile.de",
- "sitecompass.com": "encore_metrics",
- "enectoanalytics.com": "enecto_analytics",
- "trk.enecto.com": "enecto_analytics",
- "track.engagesciences.com": "engage_sciences",
- "widget.engageya.com": "engageya_widget",
- "engagio.com": "engagio",
- "engineseeker.com": "engineseeker",
- "enquisite.com": "enquisite",
- "adtlgc.com": "enreach",
- "ats.tumri.net": "ensemble",
- "ensighten.com": "ensighten",
- "envolve.com": "envolve",
- "cdn.callbackkiller.com": "envybox",
- "email-reflex.com": "eperflex",
- "epicgameads.com": "epic_game_ads",
- "trafficmp.com": "epic_marketplace",
- "adshost1.com": "epom",
- "adshost2.com": "epom",
- "epom.com": "epom",
- "epoq.de": "epoq",
- "banzaiadv.it": "eprice",
- "eproof.com": "eproof",
- "equitystory.com": "eqs_group",
- "eqads.com": "eqworks",
- "ero-advertising.com": "eroadvertising",
- "eroadvertising.com": "eroadvertising",
- "d15qhc0lu1ghnk.cloudfront.net": "errorception",
- "errorception.com": "errorception",
- "eshopcomp.com": "eshopcomp.com",
- "espncdn.com": "espn_cdn",
- "esprit.de": "esprit.de",
- "cybermonitor.com": "estat",
- "estat.com": "estat",
- "teste-s3-maycon.s3.amazonaws.com": "etag",
- "etahub.com": "etahub.com",
- "etargetnet.com": "etarget",
- "ethn.io": "ethnio",
- "pages.etology.com": "etology",
- "sa.etp-prod.com": "etp",
- "etracker.com": "etracker",
- "etracker.de": "etracker",
- "sedotracker.com": "etracker",
- "etrigue.com": "etrigue",
- "etsystatic.com": "etsystatic",
- "eulerian.net": "eulerian",
- "eultech.fnac.com": "eulerian",
- "ew3.io": "eulerian",
- "euroads.dk": "euroads",
- "euroads.fi": "euroads",
- "euroads.no": "euroads",
- "newpromo.europacash.com": "europecash",
- "tracker.euroweb.net": "euroweb_counter",
- "apptegic.com": "evergage.com",
- "evergage.com": "evergage.com",
- "listener.everstring.com": "everstring",
- "waterfrontmedia.com": "everyday_health",
- "betrad.com": "evidon",
- "evidon.com": "evidon",
- "evisitanalyst.com": "evisit_analyst",
- "evisitcs.com": "evisit_analyst",
- "websiteperform.com": "evisit_analyst",
- "ads.exactdrive.com": "exact_drive",
- "exactag.com": "exactag",
- "exelator.com": "exelate",
- "dynamicoxygen.com": "exitjunction",
- "exitjunction.com": "exitjunction",
- "exdynsrv.com": "exoclick",
- "exoclick.com": "exoclick",
- "exosrv.com": "exoclick",
- "exoticads.com": "exoticads.com",
- "expedia.com": "expedia",
- "trvl-px.com": "expedia",
- "eccmp.com": "experian",
- "audienceiq.com": "experian_marketing_services",
- "techlightenment.com": "experian_marketing_services",
- "expo-max.com": "expo-max",
- "server.exposebox.com": "expose_box",
- "sf.exposebox.com": "expose_box_widgets",
- "express.co.uk": "express.co.uk",
- "d1lp05q4sghme9.cloudfront.net": "expressvpn",
- "extreme-dm.com": "extreme_tracker",
- "eyenewton.ru": "eye_newton",
- "eyeota.net": "eyeota",
- "eyereturn.com": "eyereturnmarketing",
- "eyeviewads.com": "eyeview",
- "ezakus.net": "ezakus",
- "f11-ads.com": "f11-ads.com",
- "facebook.com": "facebook",
- "facebook.net": "facebook",
- "graph.facebook.com": "facebook_audience",
- "fbcdn.net": "facebook_cdn",
- "fbsbx.com": "facebook_cdn",
- "facetz.net": "facetz.dca",
- "adsfac.eu": "facilitate_digital",
- "adsfac.net": "facilitate_digital",
- "adsfac.sg": "facilitate_digital",
- "adsfac.us": "facilitate_digital",
- "faktor.io": "faktor.io",
- "thefancy.com": "fancy_widget",
- "d1q7pknmpq2wkm.cloudfront.net": "fanplayr",
- "fap.to": "fap.to",
- "farlightgames.com": "farlight_pte_ltd",
- "fastly-insights.com": "fastly_insights",
- "fastly.net": "fastlylb.net",
- "fastlylb.net": "fastlylb.net",
- "fastly-edge.com": "fastlylb.net",
- "fastly-masque.net": "fastlylb.net",
- "fastpic.ru": "fastpic.ru",
- "fmpub.net": "federated_media",
- "fby.s3.amazonaws.com": "feedbackify",
- "feedbackify.com": "feedbackify",
- "feedburner.com": "feedburner.com",
- "feedify.de": "feedify",
- "feedjit.com": "feedjit",
- "log.feedjit.com": "feedjit",
- "tracking.feedperfect.com": "feedperfect",
- "feedsportal.com": "feedsportal",
- "feefo.com": "feefo",
- "fidelity-media.com": "fidelity_media",
- "fiksu.com": "fiksu",
- "filamentapp.s3.amazonaws.com": "filament.io",
- "fileserve.xyz": "fileserve",
- "tools.financeads.net": "financeads",
- "tracker.financialcontent.com": "financial_content",
- "findizer.fr": "findizer.fr",
- "findologic.com": "findologic.com",
- "app-measurement.com": "firebase",
- "fcm.googleapis.com": "firebase",
- "firebase.com": "firebase",
- "firebase.google.com": "firebase",
- "firebase.googleapis.com": "firebase",
- "firebaseapp.com": "firebase",
- "firebaseappcheck.googleapis.com": "firebase",
- "firebasedynamiclinks-ipv4.googleapis.com": "firebase",
- "firebasedynamiclinks-ipv6.googleapis.com": "firebase",
- "firebasedynamiclinks.googleapis.com": "firebase",
- "firebaseinappmessaging.googleapis.com": "firebase",
- "firebaseinstallations.googleapis.com": "firebase",
- "firebaselogging-pa.googleapis.com": "firebase",
- "firebaselogging.googleapis.com": "firebase",
- "firebaseperusertopics-pa.googleapis.com": "firebase",
- "firebaseremoteconfig.googleapis.com": "firebase",
- "firebaseio.com": "firebaseio.com",
- "firstimpression.io": "first_impression",
- "fitanalytics.com": "fit_analytics",
- "fivetran.com": "fivetran",
- "flagads.net": "flag_ads",
- "flagcounter.com": "flag_counter",
- "flashnews.com.au": "flash",
- "flashtalking.com": "flashtalking",
- "flattr.com": "flattr_button",
- "flexlinks.com": "flexoffers",
- "linkoffers.net": "flexoffers",
- "flickr.com": "flickr_badge",
- "staticflickr.com": "flickr_badge",
- "lflipboard.com": "flipboard",
- "flipboard.com": "flipboard",
- "flite.com": "flite",
- "flixcdn.com": "flixcdn.com",
- "flix360.com": "flixmedia",
- "flixcar.com": "flixmedia",
- "flocktory.com": "flocktory.com",
- "flowplayer.org": "flowplayer",
- "adingo.jp": "fluct",
- "clicken.us": "fluent",
- "strcst.net": "fluid",
- "fluidads.co": "fluidads",
- "fluidsurveys.com": "fluidsurveys",
- "cdn.flurry.com": "flurry",
- "data.flurry.com": "flurry",
- "flurry.com": "flurry",
- "flx1.com": "flxone",
- "flxpxl.com": "flxone",
- "api.flyertown.ca": "flyertown",
- "adservinghost.com": "fmadserving",
- "adservinginternational.com": "fmadserving",
- "special.matchtv.ru": "fonbet",
- "kavijaseuranta.fi": "fonecta",
- "fontawesome.com": "fontawesome_com",
- "foodieblogroll.com": "foodie_blogroll",
- "footprintlive.com": "footprint",
- "footprintdns.com": "footprintdns.com",
- "forcetrac.com": "forcetrac",
- "fqsecure.com": "forensiq",
- "fqtag.com": "forensiq",
- "securepaths.com": "forensiq",
- "4seeresults.com": "foresee",
- "foresee.com": "foresee",
- "cdn-static.formisimo.com": "formisimo",
- "forter.com": "forter",
- "fortlachanhecksof.info": "fortlachanhecksof.info",
- "platform.foursquare.com": "foursquare_widget",
- "fout.jp": "fout.jp",
- "fimserve.com": "fox_audience_network",
- "foxsports.com.au": "fox_sports",
- "fncstatic.com": "foxnews_static",
- "cdn.foxpush.net": "foxpush",
- "foxpush.com": "foxpush",
- "foxtel.com.au": "foxtel",
- "foxtelgroupcdn.net.au": "foxtel",
- "foxydeal.com": "foxydeal_com",
- "yabidos.com": "fraudlogix",
- "besucherstatistiken.com": "free_counter",
- "compteurdevisite.com": "free_counter",
- "contadorvisitasgratis.com": "free_counter",
- "contatoreaccessi.com": "free_counter",
- "freecounterstat.com": "free_counter",
- "statcounterfree.com": "free_counter",
- "webcontadores.com": "free_counter",
- "fastonlineusers.com": "free_online_users",
- "fastwebcounter.com": "free_online_users",
- "freeonlineusers.com": "free_online_users",
- "atoomic.com": "free_pagerank",
- "free-pagerank.com": "free_pagerank",
- "freedom.com": "freedom_mortgage",
- "freegeoip.net": "freegeoip_net",
- "freenet.de": "freenet_de",
- "freent.de": "freenet_de",
- "freeview.com": "freeview",
- "freeview.com.au": "freeview",
- "freeviewaustralia.tv": "freeview",
- "fwmrm.net": "freewheel",
- "heimdall.fresh8.co": "fresh8",
- "d36mpcpuzc4ztk.cloudfront.net": "freshdesk",
- "freshdesk.com": "freshdesk",
- "freshplum.com": "freshplum",
- "friendbuy.com": "friendbuy",
- "friendfeed.com": "friendfeed",
- "adultfriendfinder.com": "friendfinder_network",
- "amigos.com": "friendfinder_network",
- "board-books.com": "friendfinder_network",
- "cams.com": "friendfinder_network",
- "facebookofsex.com": "friendfinder_network",
- "getiton.com": "friendfinder_network",
- "nostringsattached.com": "friendfinder_network",
- "pop6.com": "friendfinder_network",
- "streamray.com": "friendfinder_network",
- "inpref.com": "frosmo_optimizer",
- "inpref.s3-external-3.amazonaws.com": "frosmo_optimizer",
- "inpref.s3.amazonaws.com": "frosmo_optimizer",
- "adflan.com": "fruitflan",
- "fruitflan.com": "fruitflan",
- "fstrk.net": "fstrk.net",
- "cookie.fuel451.com": "fuelx",
- "fullstory.com": "fullstory",
- "track.funnelytics.io": "funnelytics",
- "angsrvr.com": "fyber",
- "fyber.com": "fyber",
- "game-advertising-online.com": "game_advertising_online",
- "gameanalytics.com": "gameanalytics",
- "gamedistribution.com": "gamedistribution.com",
- "gamerdna.com": "gamerdna",
- "gannett-cdn.com": "gannett",
- "gaug.es": "gaug.es",
- "gpm-digital.com": "gazprom-media_digital",
- "js.gb-world.net": "gb-world",
- "gdeslon.ru": "gdeslon",
- "gdmdigital.com": "gdm_digital",
- "gntm.geeen.co.jp": "geeen",
- "lpomax.net": "geeen",
- "gemius.pl": "gemius",
- "generaltracking.de": "generaltracking_de",
- "genesismedia.com": "genesis",
- "gssprt.jp": "geniee",
- "rsvpgenius.com": "genius",
- "genoo.com": "genoo",
- "js.geoads.com": "geoads",
- "geolify.com": "geolify",
- "geoplugin.net": "geoplugin",
- "geotrust.com": "geotrust",
- "geovisite.com": "geovisite",
- "gestionpub.com": "gestionpub",
- "app.getresponse.com": "get_response",
- "getsitecontrol.com": "get_site_control",
- "getconversion.net": "getconversion",
- "widgets.getglue.com": "getglue",
- "adhigh.net": "getintent",
- "static.getkudos.me": "getkudos",
- "yottos.com": "getmyad",
- "gsfn.us": "getsatisfaction",
- "gettyimages.com": "gettyimages",
- "sensic.net": "gfk",
- "gfycat.com": "gfycat.com",
- "a.giantrealm.com": "giant_realm",
- "videostat.com": "giantmedia",
- "gigaonclick.com": "giga",
- "analytics.gigyahosting1.com": "gigya",
- "gigcount.com": "gigya",
- "gigya.com": "gigya",
- "service.giosg.com": "giosg",
- "giphy.com": "giphy.com",
- "giraff.io": "giraff.io",
- "github.com": "github",
- "githubassets.com": "github",
- "githubusercontent.com": "github",
- "ghcr.io": "github",
- "github.blog": "github",
- "github.dev": "github",
- "octocaptcha.com": "github",
- "githubapp.com": "github_apps",
- "github.io": "github_pages",
- "aff3.gittigidiyor.com": "gittigidiyor_affiliate_program",
- "gittip.com": "gittip",
- "sitest.jp": "glad_cube",
- "glganltcs.space": "glganltcs.space",
- "globalwebindex.net": "global_web_index",
- "globalnotifier.com": "globalnotifier.com",
- "globalsign.com": "globalsign",
- "ad.globaltakeoff.net": "globaltakeoff",
- "glomex.cloud": "glomex.com",
- "glomex.com": "glomex.com",
- "glotgrx.com": "glotgrx.com",
- "a.gmdelivery.com": "gm_delivery",
- "gmail.com": "gmail",
- "ad.atown.jp": "gmo",
- "gmx.net": "gmx_net",
- "gmxpro.net": "gmx_net",
- "go.com": "go.com",
- "affiliate.godaddy.com": "godaddy_affiliate_program",
- "trafficfacts.com": "godaddy_site_analytics",
- "seal.godaddy.com": "godaddy_site_seal",
- "tracking.godatafeed.com": "godatafeed",
- "counter.goingup.com": "goingup",
- "axf8.net": "gomez",
- "goodadvert.ru": "goodadvert",
- "google.at": "google",
- "google.be": "google",
- "google.ca": "google",
- "google.ch": "google",
- "google.co.id": "google",
- "google.co.in": "google",
- "google.co.jp": "google",
- "google.co.ma": "google",
- "google.co.th": "google",
- "google.co.uk": "google",
- "google.com": "google",
- "google.com.ar": "google",
- "google.com.au": "google",
- "google.com.br": "google",
- "google.com.mx": "google",
- "google.com.tr": "google",
- "google.com.tw": "google",
- "google.com.ua": "google",
- "google.cz": "google",
- "google.de": "google",
- "google.dk": "google",
- "google.dz": "google",
- "google.es": "google",
- "google.fi": "google",
- "google.fr": "google",
- "google.gr": "google",
- "google.hu": "google",
- "google.ie": "google",
- "google.it": "google",
- "google.nl": "google",
- "google.no": "google",
- "google.pl": "google",
- "google.pt": "google",
- "google.ro": "google",
- "google.rs": "google",
- "google.ru": "google",
- "google.se": "google",
- "google.tn": "google",
- "1e100.net": "google",
- "agnss.goog": "google",
- "channel.status.request.url": "google",
- "g.cn": "google",
- "g.co": "google",
- "google.ad": "google",
- "google.ae": "google",
- "google.al": "google",
- "google.am": "google",
- "google.as": "google",
- "google.az": "google",
- "google.ba": "google",
- "google.bf": "google",
- "google.bg": "google",
- "google.bi": "google",
- "google.bj": "google",
- "google.bs": "google",
- "google.bt": "google",
- "google.by": "google",
- "google.cat": "google",
- "google.cd": "google",
- "google.cf": "google",
- "google.cg": "google",
- "google.ci": "google",
- "google.cl": "google",
- "google.cm": "google",
- "google.cn": "google",
- "google.co.ao": "google",
- "google.co.bw": "google",
- "google.co.ck": "google",
- "google.co.cr": "google",
- "google.co.il": "google",
- "google.co.ke": "google",
- "google.co.kr": "google",
- "google.co.ls": "google",
- "google.co.mz": "google",
- "google.co.nz": "google",
- "google.co.tz": "google",
- "google.co.ug": "google",
- "google.co.uz": "google",
- "google.co.ve": "google",
- "google.co.vi": "google",
- "google.co.za": "google",
- "google.co.zm": "google",
- "google.co.zw": "google",
- "google.com.af": "google",
- "google.com.ag": "google",
- "google.com.ai": "google",
- "google.com.bd": "google",
- "google.com.bh": "google",
- "google.com.bn": "google",
- "google.com.bo": "google",
- "google.com.bz": "google",
- "google.com.co": "google",
- "google.com.cu": "google",
- "google.com.cy": "google",
- "google.com.ec": "google",
- "google.com.eg": "google",
- "google.com.et": "google",
- "google.com.fj": "google",
- "google.com.gh": "google",
- "google.com.gi": "google",
- "google.com.gt": "google",
- "google.com.hk": "google",
- "google.com.jm": "google",
- "google.com.kh": "google",
- "google.com.kw": "google",
- "google.com.lb": "google",
- "google.com.my": "google",
- "google.com.na": "google",
- "google.com.nf": "google",
- "google.com.ng": "google",
- "google.com.ni": "google",
- "google.com.np": "google",
- "google.com.om": "google",
- "google.com.pa": "google",
- "google.com.pe": "google",
- "google.com.pg": "google",
- "google.com.ph": "google",
- "google.com.pk": "google",
- "google.com.pr": "google",
- "google.com.py": "google",
- "google.com.qa": "google",
- "google.com.sa": "google",
- "google.com.sb": "google",
- "google.com.sg": "google",
- "google.com.sl": "google",
- "google.com.sv": "google",
- "google.com.tj": "google",
- "google.com.uy": "google",
- "google.com.vc": "google",
- "google.com.vn": "google",
- "google.cv": "google",
- "google.dj": "google",
- "google.dm": "google",
- "google.ee": "google",
- "google.fm": "google",
- "google.ga": "google",
- "google.ge": "google",
- "google.gg": "google",
- "google.gl": "google",
- "google.gm": "google",
- "google.gp": "google",
- "google.gy": "google",
- "google.hn": "google",
- "google.hr": "google",
- "google.ht": "google",
- "google.im": "google",
- "google.in": "google",
- "google.iq": "google",
- "google.is": "google",
- "google.je": "google",
- "google.jo": "google",
- "google.kg": "google",
- "google.ki": "google",
- "google.kz": "google",
- "google.la": "google",
- "google.li": "google",
- "google.lk": "google",
- "google.lt": "google",
- "google.lu": "google",
- "google.lv": "google",
- "google.md": "google",
- "google.me": "google",
- "google.mg": "google",
- "google.mk": "google",
- "google.ml": "google",
- "google.mn": "google",
- "google.ms": "google",
- "google.mu": "google",
- "google.mv": "google",
- "google.mw": "google",
- "google.ne": "google",
- "google.net": "google",
- "google.nr": "google",
- "google.nu": "google",
- "google.org": "google",
- "google.pn": "google",
- "google.ps": "google",
- "google.rw": "google",
- "google.sc": "google",
- "google.sh": "google",
- "google.si": "google",
- "google.sk": "google",
- "google.sm": "google",
- "google.sn": "google",
- "google.so": "google",
- "google.sr": "google",
- "google.st": "google",
- "google.td": "google",
- "google.tg": "google",
- "google.tk": "google",
- "google.tl": "google",
- "google.tm": "google",
- "google.to": "google",
- "google.tt": "google",
- "google.us": "google",
- "google.vg": "google",
- "google.vu": "google",
- "google.ws": "google",
- "googleapis.cn": "google",
- "googlecode.com": "google",
- "googledownloads.cn": "google",
- "googleoptimize.com": "google",
- "googleweblight.in": "google",
- "googlezip.net": "google",
- "gstatic.cn": "google",
- "news.google.com": "google",
- "oo.gl": "google",
- "withgoogle.com": "google",
- "googleadservices.com": "google_adservices",
- "google-analytics.com": "google_analytics",
- "app-analytics-services.com": "google_analytics",
- "ssl-google-analytics.l.google.com": "google_analytics",
- "www-googletagmanager.l.google.com": "google_analytics",
- "appspot.com": "google_appspot",
- "googlehosted.com": "google_appspot",
- "accounts.google.com": "google_auth",
- "myaccount.google.com": "google_auth",
- "oauth2.googleapis.com": "google_auth",
- "ogs.google.com": "google_auth",
- "securetoken.googleapis.com": "google_auth",
- "beacons-google.com": "google_beacons",
- "alt1-mtalk.google.com": "google_chat",
- "alt2-mtalk.google.com": "google_chat",
- "alt3-mtalk.google.com": "google_chat",
- "alt4-mtalk.google.com": "google_chat",
- "alt5-mtalk.google.com": "google_chat",
- "alt6-mtalk.google.com": "google_chat",
- "alt7-mtalk.google.com": "google_chat",
- "alt8-mtalk.google.com": "google_chat",
- "chat.google.com": "google_chat",
- "mobile-gtalk.l.google.com": "google_chat",
- "mobile-gtalk4.l.google.com": "google_chat",
- "mtalk.google.com": "google_chat",
- "mtalk4.google.com": "google_chat",
- "talk.google.com": "google_chat",
- "talk.l.google.com": "google_chat",
- "talkx.l.google.com": "google_chat",
- "cloud.google.com": "google_cloud_platform",
- "gcp.gvt2.com": "google_cloud_platform",
- "storage.googleapis.com": "google_cloud_storage",
- "adsensecustomsearchads.com": "google_custom_search",
- "dns.google": "google_dns",
- "dns.google.com": "google_dns",
- "google-public-dns-a.google.com": "google_dns",
- "google-public-dns-b.google.com": "google_dns",
- "domains.google": "google_domains",
- "googledomains.com": "google_domains",
- "nic.google": "google_domains",
- "registry.google": "google_domains",
- "edge.google.com": "google_edge",
- "mail-ads.google.com": "google_email",
- "fonts.googleapis.com": "google_fonts",
- "cloudfunctions.net": "google_hosted",
- "ghs.googlehosted.com": "google_hosted",
- "ghs4.googlehosted.com": "google_hosted",
- "ghs46.googlehosted.com": "google_hosted",
- "ghs6.googlehosted.com": "google_hosted",
- "googlehosted.l.googleusercontent.com": "google_hosted",
- "run.app": "google_hosted",
- "supl.google.com": "google_location",
- "earth.app.goo.gl": "google_maps",
- "geo0.ggpht.com": "google_maps",
- "geo1.ggpht.com": "google_maps",
- "geo2.ggpht.com": "google_maps",
- "geo3.ggpht.com": "google_maps",
- "kh.google.com": "google_maps",
- "maps.app.goo.gl": "google_maps",
- "maps.google.ca": "google_maps",
- "maps.google.ch": "google_maps",
- "maps.google.co.jp": "google_maps",
- "maps.google.co.uk": "google_maps",
- "maps.google.com": "google_maps",
- "maps.google.com.mx": "google_maps",
- "maps.google.es": "google_maps",
- "maps.google.se": "google_maps",
- "maps.gstatic.com": "google_maps",
- "doubleclick.net": "google_marketing",
- "invitemedia.com": "google_marketing",
- "adsense.google.com": "google_marketing",
- "adservice.google.ca": "google_marketing",
- "adservice.google.co.in": "google_marketing",
- "adservice.google.co.kr": "google_marketing",
- "adservice.google.co.uk": "google_marketing",
- "adservice.google.co.za": "google_marketing",
- "adservice.google.com": "google_marketing",
- "adservice.google.com.ar": "google_marketing",
- "adservice.google.com.au": "google_marketing",
- "adservice.google.com.br": "google_marketing",
- "adservice.google.com.co": "google_marketing",
- "adservice.google.com.gt": "google_marketing",
- "adservice.google.com.mx": "google_marketing",
- "adservice.google.com.pe": "google_marketing",
- "adservice.google.com.ph": "google_marketing",
- "adservice.google.com.pk": "google_marketing",
- "adservice.google.com.tr": "google_marketing",
- "adservice.google.com.tw": "google_marketing",
- "adservice.google.com.vn": "google_marketing",
- "adservice.google.de": "google_marketing",
- "adservice.google.dk": "google_marketing",
- "adservice.google.es": "google_marketing",
- "adservice.google.fr": "google_marketing",
- "adservice.google.nl": "google_marketing",
- "adservice.google.no": "google_marketing",
- "adservice.google.pl": "google_marketing",
- "adservice.google.ru": "google_marketing",
- "adservice.google.vg": "google_marketing",
- "adtrafficquality.google": "google_marketing",
- "dai.google.com": "google_marketing",
- "doubleclick.com": "google_marketing",
- "doubleclickbygoogle.com": "google_marketing",
- "googlesyndication-cn.com": "google_marketing",
- "duo.google.com": "google_meet",
- "hangouts.clients6.google.com": "google_meet",
- "hangouts.google.com": "google_meet",
- "hangouts.googleapis.com": "google_meet",
- "meet.google.com": "google_meet",
- "meetings.googleapis.com": "google_meet",
- "stun.l.google.com": "google_meet",
- "stun1.l.google.com": "google_meet",
- "ggpht.com": "google_photos",
- "play-fe.googleapis.com": "google_play",
- "play-lh.googleusercontent.com": "google_play",
- "play.google.com": "google_play",
- "play.googleapis.com": "google_play",
- "1e100cdn.net": "google_servers",
- "gvt1.com": "google_servers",
- "gvt2.com": "google_servers",
- "gvt3.com": "google_servers",
- "googlesyndication.com": "google_syndication",
- "googletagmanager.com": "google_tag_manager",
- "googletagservices.com": "google_tag_manager",
- "translate.google.com": "google_translate",
- "googletraveladservices.com": "google_travel_adds",
- "pki.goog": "google_trust_services",
- "googlecommerce.com": "google_trusted_stores",
- "googleusercontent.com": "google_users",
- "telephony.goog": "google_voice",
- "voice.google.com": "google_voice",
- "gmodules.com": "google_widgets",
- "calendar.google.com": "google_workspace",
- "contacts.google.com": "google_workspace",
- "currents.google.com": "google_workspace",
- "docs.google.com": "google_workspace",
- "drive.google.com": "google_workspace",
- "forms.google.com": "google_workspace",
- "gsuite.google.com": "google_workspace",
- "jamboard.google.com": "google_workspace",
- "keep.google.com": "google_workspace",
- "plus.google.com": "google_workspace",
- "sheets.google.com": "google_workspace",
- "slides.google.com": "google_workspace",
- "spreadsheets.google.com": "google_workspace",
- "googleapis.com": "googleapis.com",
- "gooal.herokuapp.com": "goooal",
- "gooo.al": "goooal",
- "cdn.triggertag.gorillanation.com": "gorilla_nation",
- "evolvemediametrics.com": "gorilla_nation",
- "d1l6p2sc9645hc.cloudfront.net": "gosquared",
- "gosquared.com": "gosquared",
- "gostats.com": "gostats",
- "govmetric.com": "govmetric",
- "servmetric.com": "govmetric",
- "b.grabo.bg": "grabo_affiliate",
- "trw12.com": "grandslammedia",
- "tuberewards.com": "grandslammedia",
- "d2bw638ufki166.cloudfront.net": "granify",
- "granify.com": "granify",
- "grapeshot.co.uk": "grapeshot",
- "gscontxt.net": "grapeshot",
- "graphcomment.com": "graph_comment",
- "gravatar.com": "gravatar",
- "cdn.gravitec.net": "gravitec",
- "gravity.com": "gravity_insights",
- "grvcdn.com": "gravity_insights",
- "greatviews.de": "greatviews.de",
- "gandrad.org": "green_and_red",
- "green-red.com": "green_and_red",
- "co2stats.com": "green_certified_site",
- "greenstory.ca": "green_story",
- "greentube.com": "greentube.com",
- "gt-cdn.net": "greentube.com",
- "greystripe.com": "greystripe",
- "groovehq.com": "groove",
- "groovinads.com": "groovinads",
- "bidagent.xad.com": "groundtruth",
- "gmads.net": "groupm_server",
- "grmtech.net": "groupm_server",
- "media.gsimedia.net": "gsi_media",
- "gstatic.com": "gstatic",
- "fx.gtop.ro": "gtop",
- "fx.gtopstats.com": "gtop",
- "gubagootracking.com": "gugaboo",
- "guj.de": "guj.de",
- "emsservice.de": "gujems",
- "gumgum.com": "gumgum",
- "gumroad.com": "gumroad",
- "gunggo.com": "gunggo",
- "h12-media.com": "h12_ads",
- "h12-media.net": "h12_ads",
- "hnbutton.appspot.com": "hacker_news_button",
- "haendlerbund.de": "haendlerbund.de",
- "halogennetwork.com": "halogen_network",
- "d1l7z5ofrj6ab8.cloudfront.net": "happy_fox_chat",
- "ad.harrenmedianetwork.com": "harren_media",
- "ads.networkhm.com": "harren_media",
- "app.hatchbuck.com": "hatchbuck",
- "hhcdn.ru": "head_hunter",
- "healte.de": "healte.de",
- "d36lvucg9kzous.cloudfront.net": "heap",
- "heapanalytics.com": "heap",
- "heatmap.it": "heatmap",
- "weltsport.net": "heimspiel",
- "hellobar.com": "hello_bar",
- "hellosociety.com": "hellosociety",
- "here.com": "here",
- "herokuapp.com": "heroku",
- "heureka.cz": "heureka-widget",
- "heybubble.com": "heybubble",
- "heyos.com": "heyos",
- "adlink.net": "hi-media_performance",
- "comclick.com": "hi-media_performance",
- "hi-mediaserver.com": "hi-media_performance",
- "himediads.com": "hi-media_performance",
- "himediadx.com": "hi-media_performance",
- "hiconversion.com": "hiconversion",
- "highwebmedia.com": "highwebmedia.com",
- "hwcdn.net": "highwinds",
- "hiiir.com": "hiiir",
- "hiro.tv": "hiro",
- "histats.com": "histats",
- "hit-parade.com": "hit-parade",
- "hit.ua": "hit.ua",
- "hitslink.com": "hitslink",
- "hitsprocessor.com": "hitslink",
- "hitsniffer.com": "hitsniffer",
- "hittail.com": "hittail",
- "hivedx.com": "hivedx.com",
- "ads.thehiveworks.com": "hiveworks",
- "hockeyapp.net": "hockeyapp",
- "hoholikik.club": "hoholikik.club",
- "h-cdn.com": "hola_player",
- "homeaway.com": "homeaway",
- "honeybadger.io": "honeybadger",
- "hlserve.com": "hooklogic",
- "apiae.hopscore.com": "hop-cube",
- "hotdogsandads.com": "hotdogsandads.com",
- "hotjar.com": "hotjar",
- "hotkeys.com": "hotkeys",
- "hotlog.ru": "hotlog.ru",
- "hotwords.com": "hotwords",
- "hotwords.es": "hotwords",
- "howtank.com": "howtank.com",
- "hqentertainmentnetwork.com": "hqentertainmentnetwork.com",
- "justservingfiles.net": "hqentertainmentnetwork.com",
- "hsoub.com": "hsoub",
- "hstrck.com": "hstrck.com",
- "httpool.com": "httpool",
- "toboads.com": "httpool",
- "hubrus.com": "hubrus",
- "hs-analytics.net": "hubspot",
- "hs-scripts.com": "hubspot",
- "hsleadflows.net": "hubspot",
- "hubapi.com": "hubspot",
- "hubspot.com": "hubspot",
- "forms.hubspot.com": "hubspot_forms",
- "hubvisor.io": "hubvisor.io",
- "files.hucksterbot.com": "hucksterbot",
- "hupso.com": "hupso",
- "hurra.com": "hurra_tracker",
- "hybrid.ai": "hybrid.ai",
- "targetix.net": "hybrid.ai",
- "hypeads.org": "hype_exchange",
- "hypercomments.com": "hypercomments",
- "hyves.nl": "hyves_widgets",
- "hyvyd.com": "hyvyd",
- "ib-ibi.com": "i-behavior",
- "i-mobile.co.jp": "i-mobile",
- "r.i.ua": "i.ua",
- "i10c.net": "i10c.net",
- "i2i.jp": "i2i.jp",
- "i2idata.com": "i2i.jp",
- "consensu.org": "iab_consent",
- "iadvize.com": "iadvize",
- "cmcore.com": "ibm_customer_experience",
- "coremetrics.com": "ibm_customer_experience",
- "coremetrics.eu": "ibm_customer_experience",
- "tracker.icerocket.com": "icerocket_tracker",
- "nsimg.net": "icf_technology",
- "optimix.asia": "iclick",
- "ic-live.com": "icrossing",
- "icstats.nl": "icstats",
- "icuazeczpeoohx.com": "icuazeczpeoohx.com",
- "id-news.net": "id-news.net",
- "idcdn.de": "id-news.net",
- "eu-1-id5-sync.com": "id5-sync",
- "id5-sync.com": "id5-sync",
- "id5.io": "id5-sync",
- "cdn.id.services": "id_services",
- "e-generator.com": "ideal_media",
- "idealo.com": "idealo_com",
- "identrust.com": "identrust",
- "ideoclick.com": "ideoclick",
- "s.idio.co": "idio",
- "ie8eamus.com": "ie8eamus.com",
- "600z.com": "ientry",
- "api.iflychat.com": "iflychat",
- "ignitionone.com": "ignitionone",
- "knotice.net": "ignitionone",
- "igodigital.com": "igodigital",
- "ad.wsod.com": "ihs_markit",
- "collserve.com": "ihs_markit_online_shopper_insigh",
- "ihvmcqojoj.com": "ihvmcqojoj.com",
- "iias.eu": "iias.eu",
- "ijento.com": "ijento",
- "adv.imadrep.co.kr": "imad",
- "worthathousandwords.com": "image_advantage",
- "picadmedia.com": "image_space_media",
- "imgix.net": "imgix.net",
- "imgur.com": "imgur",
- "vidigital.ru": "imho_vi",
- "immanalytics.com": "immanalytics",
- "immobilienscout24.de": "immobilienscout24_de",
- "static-immobilienscout24.de": "immobilienscout24_de",
- "imonomy.com": "imonomy",
- "7eer.net": "impact_radius",
- "d3cxv97fi8q177.cloudfront.net": "impact_radius",
- "evyy.net": "impact_radius",
- "impactradius-event.com": "impact_radius",
- "impactradius-tag.com": "impact_radius",
- "impactradius.com": "impact_radius",
- "ojrq.net": "impact_radius",
- "r7ls.net": "impact_radius",
- "impresionesweb.com": "impresiones_web",
- "360yield.com": "improve_digital",
- "iljmp.com": "improvely",
- "inbenta.com": "inbenta",
- "inboxsdk.com": "inboxsdk.com",
- "indeed.com": "indeed",
- "casalemedia.com": "index_exchange",
- "indexww.com": "index_exchange",
- "indieclick.com": "indieclick",
- "industrybrains.com": "industry_brains",
- "impdesk.com": "infectious_media",
- "impressiondesk.com": "infectious_media",
- "zachysprod.infiniteanalytics.com": "infinite_analytics",
- "infinity-tracking.net": "infinity_tracking",
- "engine.influads.com": "influads",
- "infolinks.com": "infolinks",
- "intextscript.com": "infolinks",
- "ioam.de": "infonline",
- "iocnt.net": "infonline",
- "ivwbox.de": "infonline",
- "informer.com": "informer_technologies",
- "infusionsoft.com": "infusionsoft",
- "keap.com": "infusionsoft",
- "innity.com": "innity",
- "innity.net": "innity",
- "innogames.com": "innogames.de",
- "innogames.de": "innogames.de",
- "innogamescdn.com": "innogames.de",
- "innovid.com": "innovid",
- "inside-graph.com": "inside",
- "useinsider.com": "insider",
- "insightexpressai.com": "insightexpress",
- "inskinad.com": "inskin_media",
- "inskinmedia.com": "inskin_media",
- "inspectlet.com": "inspectlet",
- "inspsearchapi.com": "inspsearchapi.com",
- "cdninstagram.com": "instagram_com",
- "instagram.com": "instagram_com",
- "tcgtrkr.com": "instant_check_mate",
- "sdad.guru": "instart_logic",
- "insticator.com": "insticator",
- "load.instinctiveads.com": "instinctive",
- "intango.com": "intango",
- "adsafeprotected.com": "integral_ad_science",
- "iasds01.com": "integral_ad_science",
- "integral-marketing.com": "integral_marketing",
- "intelliad.com": "intelliad",
- "intelliad.de": "intelliad",
- "saas.intelligencefocus.com": "intelligencefocus",
- "ist-track.com": "intelligent_reach",
- "intensedebate.com": "intense_debate",
- "intentiq.com": "intent_iq",
- "intentmedia.net": "intent_media",
- "intercom.com": "intercom",
- "intercom.io": "intercom",
- "intercomassets.com": "intercom",
- "intercomcdn.com": "intercom",
- "interedy.info": "interedy.info",
- "ads.intergi.com": "intergi",
- "intermarkets.net": "intermarkets.net",
- "intermundomedia.com": "intermundo_media",
- "bbelements.com": "internet_billboard",
- "goadservices.com": "internet_billboard",
- "ibillboard.com": "internet_billboard",
- "mediainter.net": "internet_billboard",
- "voice2page.com": "internetaudioads",
- "ibpxl.com": "internetbrands",
- "ibsrv.net": "internetbrands",
- "interpolls.com": "interpolls",
- "ps7894.com": "interyield",
- "intilery-analytics.com": "intilery",
- "im-apps.net": "intimate_merger",
- "investingchannel.com": "investingchannel",
- "inviziads.com": "inviziads",
- "js12.invoca.net": "invoca",
- "ringrevenue.com": "invoca",
- "invodo.com": "invodo",
- "ionicframework.com": "ionicframework.com",
- "dsp.io": "iotec",
- "iesnare.com": "iovation",
- "iovation.com": "iovation",
- "ip-label.net": "ip-label",
- "eltoro.com": "ip_targeting",
- "iptargeting.com": "ip_targeting",
- "ip-tracker.org": "ip_tracker",
- "iptrack.io": "ip_tracker",
- "iperceptions.com": "iperceptions",
- "dust.ipfingerprint.com": "ipfingerprint",
- "mbww.com": "ipg_mediabrands",
- "ipify.org": "ipify",
- "ipinfo.io": "ipinfo",
- "iplogger.ru": "iplogger",
- "centraliprom.com": "iprom",
- "iprom.net": "iprom",
- "ipromote.com": "ipromote",
- "clickmanage.com": "iprospect",
- "iq.com": "iqiyi",
- "iqiyi.com": "iqiyi",
- "qy.net": "iqiyi",
- "addelive.com": "ironsource",
- "afdads.com": "ironsource",
- "delivery47.com": "ironsource",
- "ironsrc.com": "ironsource",
- "ironsrc.net": "ironsource",
- "is.com": "ironsource",
- "soom.la": "ironsource",
- "supersonicads.com": "ironsource",
- "tapjoy.com": "ironsource",
- "adsbyisocket.com": "isocket",
- "isocket.com": "isocket",
- "isolarcloud.com": "isolarcloud",
- "isolarcloud.com.a.lahuashanbx.com": "isolarcloud",
- "isolarcloud.com.w.cdngslb.com": "isolarcloud",
- "isolarcloud.com.w.kunlunsl.com": "isolarcloud",
- "ispot.tv": "ispot.tv",
- "itineraire.info": "itineraire.info",
- "autolinkmaker.itunes.apple.com": "itunes_link_maker",
- "ity.im": "ity.im",
- "iubenda.com": "iubenda.com",
- "ivcbrasil.org.br": "ivcbrasil.org.br",
- "ivitrack.com": "ividence",
- "iwiw.hu": "iwiw_widgets",
- "ixiaa.com": "ixi_digital",
- "ixquick.com": "ixquick.com",
- "cdn.izooto.com": "izooto",
- "jlist.com": "j-list_affiliate_program",
- "getjaco.com": "jaco",
- "janrainbackplane.com": "janrain",
- "rpxnow.com": "janrain",
- "jeeng.com": "jeeng",
- "api.jeeng.com": "jeeng_widgets",
- "phone-analytics.com": "jet_interactive",
- "grazie.ai": "jetbrains",
- "intellij.net": "jetbrains",
- "jb.gg": "jetbrains",
- "jetbrains.ai": "jetbrains",
- "jetbrains.com": "jetbrains",
- "jetbrains.com.cn": "jetbrains",
- "jetbrains.dev": "jetbrains",
- "jetbrains.net": "jetbrains",
- "jetbrains.org": "jetbrains",
- "jetbrains.ru": "jetbrains",
- "jetbrains.space": "jetbrains",
- "kotl.in": "jetbrains",
- "kotlinconf.com": "jetbrains",
- "kotlinlang.org": "jetbrains",
- "myjetbrains.com": "jetbrains",
- "talkingkotlin.com": "jetbrains",
- "jetlore.com": "jetlore",
- "pixel.wp.com": "jetpack",
- "stats.wp.com": "jetpack",
- "jetpackdigital.com": "jetpack_digital",
- "jimcdn.com": "jimdo.com",
- "jimdo.com": "jimdo.com",
- "jimstatic.com": "jimdo.com",
- "ads.jinkads.com": "jink",
- "jirafe.com": "jirafe",
- "jivosite.com": "jivochat",
- "jivox.com": "jivox",
- "jobs2careers.com": "jobs_2_careers",
- "joinhoney.com": "joinhoney",
- "create.leadid.com": "jornaya",
- "d1tprjo2w7krrh.cloudfront.net": "jornaya",
- "cdnjquery.com": "jquery",
- "jquery.com": "jquery",
- "cjmooter.xcache.kinxcdn.com": "js_communications",
- "jsdelivr.net": "jsdelivr",
- "jsecoin.com": "jse_coin",
- "jsuol.com.br": "jsuol.com.br",
- "contentabc.com": "juggcash",
- "mofos.com": "juggcash",
- "juiceadv.com": "juiceadv",
- "juicyads.com": "juicyads",
- "cdn.jumplead.com": "jumplead",
- "jumpstarttaggingsolutions.com": "jumpstart_tagging_solutions",
- "jumptap.com": "jumptap",
- "jump-time.net": "jumptime",
- "jumptime.com": "jumptime",
- "components.justanswer.com": "just_answer",
- "justpremium.com": "just_premium",
- "justpremium.nl": "just_premium",
- "justrelevant.com": "just_relevant",
- "jvc.gg": "jvc.gg",
- "d21rhj7n383afu.cloudfront.net": "jw_player",
- "jwpcdn.com": "jw_player",
- "jwplatform.com": "jw_player",
- "jwplayer.com": "jw_player",
- "jwpltx.com": "jw_player",
- "jwpsrv.com": "jw_player",
- "ltassrv.com": "jw_player_ad_solutions",
- "kaeufersiegel.de": "kaeufersiegel.de",
- "kairion.de": "kairion.de",
- "kctag.net": "kairion.de",
- "kaloo.ga": "kaloo.ga",
- "kaltura.com": "kaltura",
- "kameleoon.com": "kameleoon",
- "kameleoon.eu": "kameleoon",
- "kampyle.com": "kampyle",
- "kanoodle.com": "kanoodle",
- "kmi-us.com": "kantar_media",
- "tnsinternet.be": "kantar_media",
- "karambasecurity.com": "karambasecurity",
- "kargo.com": "kargo",
- "kaspersky-labs.com": "kaspersky-labs.com",
- "kataweb.it": "kataweb.it",
- "cen.katchup.fr": "katchup",
- "kau.li": "kauli",
- "kavanga.ru": "kavanga",
- "kayosports.com.au": "kayo_sports",
- "dc8na2hxrj29i.cloudfront.net": "keen_io",
- "keen.io": "keen_io",
- "widget.kelkoo.com": "kelkoo",
- "xg4ken.com": "kenshoo",
- "keymetric.net": "keymetric",
- "lb.keytiles.com": "keytiles",
- "keywee.co": "keywee",
- "keywordmax.com": "keywordmax",
- "massrelevance.com": "khoros",
- "tweetriver.com": "khoros",
- "khzbeucrltin.com": "khzbeucrltin.com",
- "ping.kickfactory.com": "kickfactory",
- "sa-as.com": "kickfire",
- "sniff.visistat.com": "kickfire",
- "stats.visistat.com": "kickfire",
- "apikik.com": "kik",
- "kik-gateway-use1.meetme.com": "kik",
- "kik-live.com": "kik",
- "kik-stream.meetme.com": "kik",
- "kik.com": "kik",
- "king.com": "king.com",
- "midasplayer.com": "king_com",
- "kinja-img.com": "kinja.com",
- "kinja-static.com": "kinja.com",
- "kinja.com": "kinja.com",
- "kiosked.com": "kiosked",
- "doug1izaerwt3.cloudfront.net": "kissmetrics.com",
- "kissmetrics.com": "kissmetrics.com",
- "ad.103092804.com": "kitara_media",
- "kmdisplay.com": "kitara_media",
- "kixer.com": "kixer",
- "klarna.com": "klarna.com",
- "a.klaviyo.com": "klaviyo",
- "klaviyo.com": "klaviyo",
- "klikki.com": "klikki",
- "scr.kliksaya.com": "kliksaya",
- "mediapeo2.com": "kmeleo",
- "knoopstat.nl": "knoopstat",
- "knotch.it": "knotch",
- "komoona.com": "komoona",
- "kona.kontera.com": "kontera_contentlink",
- "ktxtr.com": "kontextr",
- "kontextua.com": "kontextua",
- "cleanrm.net": "korrelate",
- "korrelate.net": "korrelate",
- "trackit.ktxlytics.io": "kortx",
- "kaptcha.com": "kount",
- "krxd.net": "krux_digital",
- "d31bfnnwekbny6.cloudfront.net": "kupona",
- "kpcustomer.de": "kupona",
- "q-sis.de": "kupona",
- "kxcdn.com": "kxcdn.com",
- "cdn.kyto.com": "kyto",
- "cd-ladsp-com.s3.amazonaws.com": "ladsp.com",
- "ladmp.com": "ladsp.com",
- "ladsp.com": "ladsp.com",
- "lanistaads.com": "lanista_concepts",
- "latimes.com": "latimes",
- "events.launchdarkly.com": "launch_darkly",
- "launchdarkly.com": "launch_darkly",
- "launchbit.com": "launchbit",
- "launchpad.net": "launchpad",
- "launchpadcontent.net": "launchpad",
- "layer-ad.org": "layer-ad.org",
- "ph-live.slatic.net": "lazada",
- "slatic.net": "lazada",
- "lcxdigital.com": "lcx_digital",
- "lemde.fr": "le_monde.fr",
- "t1.llanalytics.com": "lead_liaison",
- "leadback.ru": "leadback",
- "leaddyno.com": "leaddyno",
- "123-tracker.com": "leadforensics",
- "55-trk-srv.com": "leadforensics",
- "business-path-55.com": "leadforensics",
- "click-to-trace.com": "leadforensics",
- "cloud-exploration.com": "leadforensics",
- "cloud-journey.com": "leadforensics",
- "cloud-trail.com": "leadforensics",
- "cloudpath82.com": "leadforensics",
- "cloudtracer101.com": "leadforensics",
- "discover-path.com": "leadforensics",
- "discovertrail.net": "leadforensics",
- "domainanalytics.net": "leadforensics",
- "dthvdr9.com": "leadforensics",
- "explore-123.com": "leadforensics",
- "finger-info.net": "leadforensics",
- "forensics1000.com": "leadforensics",
- "ip-route.net": "leadforensics",
- "ipadd-path.com": "leadforensics",
- "iproute66.com": "leadforensics",
- "lead-123.com": "leadforensics",
- "lead-analytics-1000.com": "leadforensics",
- "lead-watcher.com": "leadforensics",
- "leadforensics.com": "leadforensics",
- "ledradn.com": "leadforensics",
- "letterbox-path.com": "leadforensics",
- "letterboxtrail.com": "leadforensics",
- "network-handle.com": "leadforensics",
- "path-follower.com": "leadforensics",
- "path-trail.com": "leadforensics",
- "scan-trail.com": "leadforensics",
- "site-research.net": "leadforensics",
- "srv1010elan.com": "leadforensics",
- "the-lead-tracker.com": "leadforensics",
- "trace-2000.com": "leadforensics",
- "track-web.net": "leadforensics",
- "trackdiscovery.net": "leadforensics",
- "trackercloud.net": "leadforensics",
- "trackinvestigate.net": "leadforensics",
- "trail-viewer.com": "leadforensics",
- "trail-web.com": "leadforensics",
- "trailbox.net": "leadforensics",
- "trailinvestigator.com": "leadforensics",
- "web-path.com": "leadforensics",
- "webforensics.co.uk": "leadforensics",
- "websiteexploration.com": "leadforensics",
- "www-path.com": "leadforensics",
- "gate.leadgenic.com": "leadgenic",
- "leadhit.ru": "leadhit",
- "js.leadin.com": "leadin",
- "io.leadingreports.de": "leading_reports",
- "js.leadinspector.de": "leadinspector",
- "formalyzer.com": "leadlander",
- "trackalyzer.com": "leadlander",
- "analytics.leadlifesolutions.net": "leadlife",
- "my.leadpages.net": "leadpages",
- "leadplace.fr": "leadplace",
- "scorecard.wspisp.net": "leads_by_web.com",
- "www.leadscoreapp.dk": "leadscoreapp",
- "tracker.leadsius.com": "leadsius",
- "leady.com": "leady",
- "leady.cz": "leady",
- "leiki.com": "leiki",
- "lengow.com": "lengow",
- "lenmit.com": "lenmit.com",
- "lentainform.com": "lentainform.com",
- "lenua.de": "lenua.de",
- "letreach.com": "let_reach",
- "lencr.org": "lets_encrypt",
- "letsencrypt.org": "lets_encrypt",
- "js.letvcdn.com": "letv",
- "footprint.net": "level3_communications",
- "alphonso.tv": "lgads",
- "lgads.tv": "lgads",
- "lg.com": "lgtv",
- "lge.com": "lgtv",
- "lgsmartad.com": "lgtv",
- "lgtvcommon.com": "lgtv",
- "lgtvsdp.com": "lgtv",
- "licensebuttons.net": "licensebuttons.net",
- "lfstmedia.com": "lifestreet_media",
- "content-recommendation.net": "ligatus",
- "ligadx.com": "ligatus",
- "ligatus.com": "ligatus",
- "ligatus.de": "ligatus",
- "veeseo.com": "ligatus",
- "limk.com": "limk",
- "line-apps.com": "line_apps",
- "line-scdn.net": "line_apps",
- "line.me": "line_apps",
- "tongji.linezing.com": "linezing",
- "linkbucks.com": "linkbucks",
- "linkconnector.com": "linkconnector",
- "bizo.com": "linkedin",
- "licdn.com": "linkedin",
- "linkedin.com": "linkedin",
- "lynda.com": "linkedin",
- "ads.linkedin.com": "linkedin_ads",
- "snap.licdn.com": "linkedin_analytics",
- "bizographics.com": "linkedin_marketing_solutions",
- "platform.linkedin.com": "linkedin_widgets",
- "linker.hr": "linker",
- "linkprice.com": "linkprice",
- "lp4.io": "linkpulse",
- "linksalpha.com": "linksalpha",
- "erovinmo.com": "linksmart",
- "linksmart.com": "linksmart",
- "linkstorm.net": "linkstorm",
- "linksynergy.com": "linksynergy.com",
- "linkup.com": "linkup",
- "linkwi.se": "linkwise",
- "linkwithin.com": "linkwithin",
- "lqm.io": "liquidm_technology_gmbh",
- "lqmcdn.com": "liquidm_technology_gmbh",
- "liqwid.net": "liqwid",
- "list.ru": "list.ru",
- "listrakbi.com": "listrak",
- "live2support.com": "live2support",
- "live800.com": "live800",
- "ladesk.com": "live_agent",
- "livehelpnow.net": "live_help_now",
- "liadm.com": "live_intent",
- "l-stat.livejournal.net": "live_journal",
- "liveadexchanger.com": "liveadexchanger.com",
- "livechat.s3.amazonaws.com": "livechat",
- "livechatinc.com": "livechat",
- "livechatinc.net": "livechat",
- "livechatnow.com": "livechatnow",
- "livechatnow.net": "livechatnow",
- "liveclicker.net": "liveclicker",
- "livecounter.dk": "livecounter",
- "fyre.co": "livefyre",
- "livefyre.com": "livefyre",
- "yadro.ru": "liveinternet",
- "liveperson.net": "liveperson",
- "lpsnmedia.net": "liveperson",
- "pippio.com": "liveramp",
- "rapleaf.com": "liveramp",
- "rlcdn.com": "liveramp",
- "livere.co.kr": "livere",
- "livere.co.kr.cizion.ixcloud.net": "livere",
- "livesportmedia.eu": "livesportmedia.eu",
- "analytics.livestream.com": "livestream",
- "livetex.ru": "livetex.ru",
- "lkqd.net": "lkqd",
- "loadbee.com": "loadbee.com",
- "loadercdn.com": "loadercdn.com",
- "loadsource.org": "loadsource.org",
- "web.localytics.com": "localytics",
- "localytics.com": "localytics",
- "cdn2.lockerdome.com": "lockerdome",
- "addtoany.com": "lockerz_share",
- "pixel.loganmedia.mobi": "logan_media",
- "ping.answerbook.com": "logdna",
- "loggly.com": "loggly",
- "logly.co.jp": "logly",
- "logsss.com": "logsss.com",
- "lomadee.com": "lomadee",
- "assets.loomia.com": "loomia",
- "loop11.com": "loop11",
- "lfov.net": "loopfuse_oneview",
- "crwdcntrl.net": "lotame",
- "vidcpm.com": "lottex_inc",
- "tracker.samplicio.us": "lucid",
- "lucidmedia.com": "lucid_media",
- "lead.adsender.us": "lucini",
- "livestatserver.com": "lucky_orange",
- "luckyorange.com": "lucky_orange",
- "luckyorange.net": "lucky_orange",
- "luckypushh.com": "luckypushh.com",
- "adelixir.com": "lxr100",
- "lypn.com": "lynchpin_analytics",
- "lypn.net": "lynchpin_analytics",
- "lytics.io": "lytics",
- "lyuoaxruaqdo.com": "lyuoaxruaqdo.com",
- "m-pathy.com": "m-pathy",
- "mpnrs.com": "m._p._newmedia",
- "m4n.nl": "m4n",
- "madadsmedia.com": "mad_ads_media",
- "madeleine.de": "madeleine.de",
- "dinclinx.com": "madison_logic",
- "madisonlogic.com": "madison_logic",
- "madnet.ru": "madnet",
- "eu2.madsone.com": "mads",
- "magna.ru": "magna_advertise",
- "d3ezl4ajpp2zy8.cloudfront.net": "magnetic",
- "domdex.com": "magnetic",
- "domdex.net": "magnetic",
- "magnetisemedia.com": "magnetise_group",
- "magnify360.com": "magnify360",
- "magnuum.com": "magnuum.com",
- "ad.mail.ru": "mail.ru_banner",
- "imgsmail.ru": "mail.ru_group",
- "mail.ru": "mail.ru_group",
- "mradx.net": "mail.ru_group",
- "odnoklassniki.ru": "mail.ru_group",
- "ok.ru": "mail.ru_group",
- "chimpstatic.com": "mailchimp_tracking",
- "list-manage.com": "mailchimp_tracking",
- "mailchimp.com": "mailchimp_tracking",
- "mailerlite.com": "mailerlite.com",
- "mailtrack.io": "mailtrack.io",
- "mainadv.com": "mainadv",
- "makazi.com": "makazi",
- "makeappdev.xyz": "makeappdev.xyz",
- "makesource.cool": "makesource.cool",
- "widgets.mango-office.ru": "mango",
- "manycontacts.com": "manycontacts",
- "mapandroute.de": "mapandroute.de",
- "mapbox.com": "mapbox",
- "www.maploco.com": "maploco",
- "px.marchex.io": "marchex",
- "voicestar.com": "marchex",
- "mmadsgadget.com": "marimedia",
- "qadabra.com": "marimedia",
- "qadserve.com": "marimedia",
- "qadservice.com": "marimedia",
- "marinsm.com": "marin_search_marketer",
- "markandmini.com": "mark_+_mini",
- "ak-cdn.placelocal.com": "market_thunder",
- "dt00.net": "marketgid",
- "dt07.net": "marketgid",
- "marketgid.com": "marketgid",
- "mgid.com": "marketgid",
- "marketingautomation.si": "marketing_automation",
- "marketo.com": "marketo",
- "marketo.net": "marketo",
- "mktoresp.com": "marketo",
- "caanalytics.com": "markmonitor",
- "mmstat.com": "markmonitor",
- "markmonitor.com": "markmonitor",
- "netscope.data.marktest.pt": "marktest",
- "marshadow.io": "marshadow.io",
- "martiniadnetwork.com": "martini_media",
- "edigitalsurvey.com": "maru-edu",
- "marvellousmachine.net": "marvellous_machine",
- "mbn.com.ua": "master_banner_network",
- "mastertarget.ru": "mastertarget",
- "rns.matelso.de": "matelso",
- "matheranalytics.com": "mather_analytics",
- "mathjax.org": "mathjax.org",
- "nzaza.com": "matiro",
- "matomo.cloud": "matomo",
- "matomo.org": "matomo",
- "piwik.org": "matomo",
- "adsmarket.com": "matomy_market",
- "m2pub.com": "matomy_market",
- "matrix.org": "matrix",
- "mb01.com": "maxbounty",
- "maxcdn.com": "maxcdn",
- "netdna-cdn.com": "maxcdn",
- "netdna-ssl.com": "maxcdn",
- "maxlab.ru": "maxlab",
- "maxmind.com": "maxmind",
- "maxonclick.com": "maxonclick_com",
- "mxptint.net": "maxpoint_interactive",
- "maxymiser.hs.llnwd.net": "maxymiser",
- "maxymiser.net": "maxymiser",
- "m6r.eu": "mbr_targeting",
- "pixel.adbuyer.com": "mbuy",
- "mcabi.mcloudglobal.com": "mcabi",
- "scanalert.com": "mcafee_secure",
- "ywxi.net": "mcafee_secure",
- "mconet.biz": "mconet",
- "mdotlabs.com": "mdotlabs",
- "media-clic.com": "media-clic",
- "media-imdb.com": "media-imdb.com",
- "media.net": "media.net",
- "mediaimpact.de": "media_impact",
- "mookie1.com": "media_innovation_group",
- "idntfy.ru": "media_today",
- "s1.mediaad.org": "mediaad",
- "mlnadvertising.com": "mediaglu",
- "fhserve.com": "mediahub",
- "media-lab.ai": "medialab",
- "medialab.la": "medialab",
- "adnet.ru": "medialand",
- "medialand.ru": "medialand",
- "medialead.de": "medialead",
- "mathads.com": "mediamath",
- "mathtag.com": "mediamath",
- "mediametrics.ru": "mediametrics",
- "audit.median.hu": "median",
- "mediapass.com": "mediapass",
- "mt.mediapostcommunication.net": "mediapost_communications",
- "mediarithmics.com": "mediarithmics.com",
- "tns-counter.ru": "mediascope",
- "ad.media-servers.net": "mediashakers",
- "adsvc1107131.net": "mediashift",
- "mediator.media": "mediator.media",
- "mediav.com": "mediav",
- "adnetinteractive.com": "mediawhiz",
- "adnetinteractive.net": "mediawhiz",
- "mediego.com": "medigo",
- "medleyads.com": "medley",
- "adnet.com.tr": "medyanet",
- "e-kolay.net": "medyanet",
- "medyanetads.com": "medyanet",
- "cim.meebo.com": "meebo_bar",
- "meetrics.net": "meetrics",
- "mxcdn.net": "meetrics",
- "research.de.com": "meetrics",
- "counter.megaindex.ru": "megaindex",
- "mega.co.nz": "meganz",
- "mega.io": "meganz",
- "mega.nz": "meganz",
- "mein-bmi.com": "mein-bmi.com",
- "webvisitor.melissadata.net": "melissa",
- "meltdsp.com": "melt",
- "mlt01.com": "menlo",
- "mentad.com": "mentad",
- "mercadoclics.com": "mercado",
- "mercadolivre.com.br": "mercado",
- "mlstatic.com": "mercado",
- "merchantadvantage.com": "merchantadvantage",
- "merchenta.com": "merchenta",
- "roia.biz": "mercury_media",
- "cdn.merklesearch.com": "merkle_research",
- "rkdms.com": "merkle_rkg",
- "messenger.com": "messenger.com",
- "ad.metanetwork.com": "meta_network",
- "metaffiliation.com": "metaffiliation.com",
- "netaffiliation.com": "metaffiliation.com",
- "metalyzer.com": "metapeople",
- "mlsat02.de": "metapeople",
- "metrigo.com": "metrigo",
- "metriweb.be": "metriweb",
- "miaozhen.com": "miaozhen",
- "microad.co.jp": "microad",
- "microad.jp": "microad",
- "microad.net": "microad",
- "microadinc.com": "microad",
- "azurewebsites.net": "microsoft",
- "cloudapp.net": "microsoft",
- "gfx.ms": "microsoft",
- "microsoft.com": "microsoft",
- "microsoftonline-p.com": "microsoft",
- "microsoftonline.com": "microsoft",
- "microsofttranslator.com": "microsoft",
- "msecnd.net": "microsoft",
- "msedge.net": "microsoft",
- "msocdn.com": "microsoft",
- "onestore.ms": "microsoft",
- "s-microsoft.com": "microsoft",
- "trouter.io": "microsoft",
- "windows.net": "microsoft",
- "aka.ms": "microsoft",
- "microsoftazuread-sso.com": "microsoft",
- "bingapis.com": "microsoft",
- "msauth.net": "microsoft",
- "msauthimages.net": "microsoft",
- "msftauth.net": "microsoft",
- "msftstatic.com": "microsoft",
- "msidentity.com": "microsoft",
- "nelreports.net": "microsoft",
- "windowscentral.com": "microsoft",
- "analytics.live.com": "microsoft_analytics",
- "a.clarity.ms": "microsoft_clarity",
- "b.clarity.ms": "microsoft_clarity",
- "c.clarity.ms": "microsoft_clarity",
- "d.clarity.ms": "microsoft_clarity",
- "e.clarity.ms": "microsoft_clarity",
- "f.clarity.ms": "microsoft_clarity",
- "g.clarity.ms": "microsoft_clarity",
- "h.clarity.ms": "microsoft_clarity",
- "i.clarity.ms": "microsoft_clarity",
- "j.clarity.ms": "microsoft_clarity",
- "log.clarity.ms": "microsoft_clarity",
- "www.clarity.ms": "microsoft_clarity",
- "mmismm.com": "mindset_media",
- "imgfarm.com": "mindspark",
- "mindspark.com": "mindspark",
- "staticimgfarm.com": "mindspark",
- "mvtracker.com": "mindviz_tracker",
- "minewhat.com": "minewhat",
- "mintsapp.io": "mints_app",
- "snackly.co": "minute.ly",
- "snippet.minute.ly": "minute.ly",
- "apv.configuration.minute.ly": "minute.ly_video",
- "get.mirando.de": "mirando",
- "mirtesen.ru": "mirtesen.ru",
- "misterbell.com": "mister_bell",
- "mixi.jp": "mixi",
- "mixpanel.com": "mixpanel",
- "mxpnl.com": "mixpanel",
- "mxpnl.net": "mixpanel",
- "swf.mixpo.com": "mixpo",
- "app.mluvii.com": "mluvii",
- "mncdn.com": "mncdn.com",
- "moatads.com": "moat",
- "moatpixel.com": "moat",
- "mobicow.com": "mobicow",
- "a.mobify.com": "mobify",
- "mobtrks.com": "mobtrks.com",
- "ads.mocean.mobi": "mocean_mobile",
- "ads.moceanads.com": "mocean_mobile",
- "chat.mochapp.com": "mochapp",
- "intelligentpixel.modernimpact.com": "modern_impact",
- "teljari.is": "modernus",
- "modulepush.com": "modulepush.com",
- "mogointeractive.com": "mogo_interactive",
- "mokonocdn.com": "mokono_analytics",
- "devappgrant.space": "monero_miner",
- "monetate.net": "monetate",
- "monetize-me.com": "monetize_me",
- "ads.themoneytizer.com": "moneytizer",
- "mongoosemetrics.com": "mongoose_metrics",
- "track.monitis.com": "monitis",
- "monitus.net": "monitus",
- "fonts.net": "monotype_gmbh",
- "fonts.com": "monotype_imaging",
- "cdn.monsido.com": "monsido",
- "monster.com": "monster_advertising",
- "mooxar.com": "mooxar",
- "mopinion.com": "mopinion.com",
- "mopub.com": "mopub",
- "ad.ad-arata.com": "more_communication",
- "moras.jp": "moreads",
- "nedstatbasic.net": "motigo_webstats",
- "webstats.motigo.com": "motigo_webstats",
- "analytics.convertlanguage.com": "motionpoint",
- "mouseflow.com": "mouseflow",
- "mousestats.com": "mousestats",
- "s.mousetrace.com": "mousetrace",
- "movad.de": "mov.ad",
- "movad.net": "mov.ad",
- "micpn.com": "movable_ink",
- "mvb.me": "movable_media",
- "moz.com": "moz",
- "firefox.com": "mozilla",
- "mozaws.net": "mozilla",
- "mozgcp.net": "mozilla",
- "mozilla.com": "mozilla",
- "mozilla.net": "mozilla",
- "mozilla.org": "mozilla",
- "storage.mozoo.com": "mozoo",
- "tracker.mrpfd.com": "mrp",
- "mrpdata.com": "mrpdata",
- "mrpdata.net": "mrpdata",
- "mrskincash.com": "mrskincash",
- "a-msedge.net": "msedge",
- "b-msedge.net": "msedge",
- "dual-s-msedge.net": "msedge",
- "e-msedge.net": "msedge",
- "k-msedge.net": "msedge",
- "l-msedge.net": "msedge",
- "s-msedge.net": "msedge",
- "spo-msedge.net": "msedge",
- "t-msedge.net": "msedge",
- "wac-msedge.net": "msedge",
- "msn.com": "msn",
- "s-msn.com": "msn",
- "musculahq.appspot.com": "muscula",
- "litix.io": "mux_inc",
- "mybloglog.com": "mybloglog",
- "t.p.mybuys.com": "mybuys",
- "mycdn.me": "mycdn.me",
- "mycliplister.com": "mycliplister.com",
- "mycounter.com.ua": "mycounter.ua",
- "mycounter.ua": "mycounter.ua",
- "myfonts.net": "myfonts",
- "mypagerank.net": "mypagerank",
- "stat.mystat.hu": "mystat",
- "mythings.com": "mythings",
- "mystat-in.net": "mytop_counter",
- "nab.com": "nab",
- "nab.com.au": "nab",
- "nab.net": "nab",
- "nabgroup.com": "nab",
- "national.com.au": "nab",
- "nationalaustraliabank.com.au": "nab",
- "nationalbank.com.au": "nab",
- "nakanohito.jp": "nakanohito.jp",
- "namogoo.coom": "namogoo",
- "nanigans.com": "nanigans",
- "audiencemanager.de": "nano_interactive",
- "nanorep.com": "nanorep",
- "narando.com": "narando",
- "static.bam-x.com": "narrativ",
- "narrative.io": "narrative_io",
- "p1.ntvk1.ru": "natimatica",
- "nativeads.com": "nativeads.com",
- "cdn01.nativeroll.tv": "nativeroll",
- "ntv.io": "nativo",
- "postrelease.com": "nativo",
- "navdmp.com": "navegg_dmp",
- "naver.com": "naver.com",
- "naver.net": "naver.com",
- "s-nbcnews.com": "nbc_news",
- "richmedia247.com": "ncol",
- "needle.com": "needle",
- "nekudo.com": "nekudo.com",
- "neodatagroup.com": "neodata",
- "ad-srv.net": "neory",
- "contentspread.net": "neory",
- "neory-tm.com": "neory",
- "simptrack.com": "neory",
- "nerfherdersolo.com": "nerfherdersolo_com",
- "wemfbox.ch": "net-metrix",
- "cdnma.com": "net-results",
- "nr7.us": "net-results",
- "netavenir.com": "net_avenir",
- "netcommunities.com": "net_communities",
- "visibility-stats.com": "net_visibility",
- "netbiscuits.net": "netbiscuits",
- "bbtrack.net": "netbooster_group",
- "netbooster.com": "netbooster_group",
- "netflix.com": "netflix",
- "nflxext.com": "netflix",
- "nflximg.net": "netflix",
- "nflxso.net": "netflix",
- "nflxvideo.net": "netflix",
- "flxvpn.net": "netflix",
- "netflix.ca": "netflix",
- "netflix.com.au": "netflix",
- "netflix.net": "netflix",
- "netflixdnstest1.com": "netflix",
- "netflixdnstest10.com": "netflix",
- "netflixdnstest2.com": "netflix",
- "netflixdnstest3.com": "netflix",
- "netflixdnstest4.com": "netflix",
- "netflixdnstest5.com": "netflix",
- "netflixdnstest6.com": "netflix",
- "netflixdnstest7.com": "netflix",
- "netflixdnstest8.com": "netflix",
- "netflixdnstest9.com": "netflix",
- "netflixinvestor.com": "netflix",
- "netflixstudios.com": "netflix",
- "netflixtechblog.com": "netflix",
- "nflximg.com": "netflix",
- "netify.ai": "netify",
- "netzathleten-media.de": "netletix",
- "netminers.dk": "netminers",
- "netmining.com": "netmining",
- "netmng.com": "netmining",
- "stat.netmonitor.fi": "netmonitor",
- "glanceguide.com": "netratings_sitecensus",
- "imrworldwide.com": "netratings_sitecensus",
- "vizu.com": "netratings_sitecensus",
- "netrk.net": "netrk.net",
- "netseer.com": "netseer",
- "netshelter.net": "netshelter",
- "nsaudience.pl": "netsprint_audience",
- "nwidget.networkedblogs.com": "networkedblogs",
- "adadvisor.net": "neustar_adadvisor",
- "d1ros97qkrwjf5.cloudfront.net": "new_relic",
- "newrelic.com": "new_relic",
- "nr-data.net": "new_relic",
- "codestream.com": "new_relic",
- "newscgp.com": "newscgp.com",
- "nmcdn.us": "newsmax",
- "newstogram.com": "newstogram",
- "newsupdatedir.info": "newsupdatedir.info",
- "newsupdatewe.info": "newsupdatewe.info",
- "ads.newtention.net": "newtention",
- "ads.newtentionassets.net": "newtention",
- "nexage.com": "nexage",
- "nexeps.com": "nexeps.com",
- "nxtck.com": "next_performance",
- "track.nextuser.com": "next_user",
- "imgsrv.nextag.com": "nextag_roi_optimizer",
- "nextclick.pl": "nextclick",
- "nextstat.com": "nextstat",
- "d1d8vn0fpluuz7.cloudfront.net": "neytiv",
- "ads.ngageinc.com": "ngage_inc.",
- "nice264.com": "nice264.com",
- "nimblecommerce.com": "nimblecommerce",
- "nineanalytics.io": "nine_direct_digital",
- "cho-chin.com": "ninja_access_analysis",
- "donburako.com": "ninja_access_analysis",
- "hishaku.com": "ninja_access_analysis",
- "shinobi.jp": "ninja_access_analysis",
- "static.nirror.com": "nirror",
- "nitropay.com": "nitropay",
- "nk.pl": "nk.pl_widgets",
- "noaa.gov": "noaa.gov",
- "track.noddus.com": "noddus",
- "contextbar.ru": "nolix",
- "nonli.com": "nonli",
- "non.li": "nonli",
- "trkme.net": "nonstop_consulting",
- "noop.style": "noop.style",
- "nosto.com": "nosto.com",
- "adleadevent.com": "notify",
- "notifyfox.com": "notifyfox",
- "notion.so": "notion",
- "nowinteract.com": "now_interact",
- "npario-inc.net": "npario",
- "nplexmedia.com": "nplexmedia",
- "nrelate.com": "nrelate",
- "ns8.com": "ns8",
- "nt.vc": "nt.vc",
- "featurelink.com": "ntent",
- "ntp.org": "ntppool",
- "ntppool.org": "ntppool",
- "tracer.jp": "nttcom_online_marketing_solutions",
- "nuffnang.com": "nuffnang",
- "nuggad.net": "nugg.ad",
- "rotator.adjuggler.com": "nui_media",
- "numbers.md": "numbers.md",
- "channeliq.com": "numerator",
- "nyacampwk.com": "nyacampwk.com",
- "nyetm2mkch.com": "nyetm2mkch.com",
- "nyt.com": "nyt.com",
- "nytimes.com": "nyt.com",
- "o12zs3u2n.com": "o12zs3u2n.com",
- "o2.pl": "o2.pl",
- "o2online.de": "o2online.de",
- "oath.com": "oath_inc",
- "observerapp.com": "observer",
- "ocioso.com.br": "ocioso",
- "oclasrv.com": "oclasrv.com",
- "octapi.net": "octapi.net",
- "service.octavius.rocks": "octavius",
- "office.com": "office.com",
- "office.net": "office.net",
- "office365.com": "office365.com",
- "oghub.io": "oghub.io",
- "ohmystats.com": "oh_my_stats",
- "adohana.com": "ohana_advertising_network",
- "photorank.me": "olapic",
- "olark.com": "olark",
- "olx-st.com": "olx-st.com",
- "onap.io": "olx-st.com",
- "omarsys.com": "omarsys.com",
- "ometria.com": "ometria",
- "omgpm.com": "omg",
- "omniconvert.com": "omniconvert.com",
- "omnidsp.com": "omniscienta",
- "oms.eu": "oms",
- "omsnative.de": "oms",
- "onaudience.com": "onaudience",
- "btc-echode.api.oneall.com": "oneall",
- "tracking.onefeed.co.uk": "onefeed",
- "onesignal.com": "onesignal",
- "os.tc": "onesignal",
- "stat.onestat.com": "onestat",
- "ocdn.eu": "onet.pl",
- "onet.pl": "onet.pl",
- "onetag.com": "onetag",
- "s-onetag.com": "onetag",
- "onetrust.com": "onetrust",
- "fogl1onf.com": "onfocus.io",
- "onfocus.io": "onfocus.io",
- "onlinewebstat.com": "onlinewebstat",
- "onlinewebstats.com": "onlinewebstat",
- "onswipe.com": "onswipe",
- "onthe.io": "onthe.io",
- "moon-ray.com": "ontraport_autopilot",
- "moonraymarketing.com": "ontraport_autopilot",
- "ooyala.com": "ooyala.com",
- "openadex.dk": "open_adexchange",
- "247realmedia.com": "open_adstream",
- "oaserve.com": "open_adstream",
- "realmedia.com": "open_adstream",
- "realmediadigital.com": "open_adstream",
- "opensharecount.com": "open_share_count",
- "chatgpt.com": "openai",
- "oaistatic.com": "openai",
- "oaiusercontent.com": "openai",
- "openai.com": "openai",
- "oloadcdn.net": "openload",
- "openload.co": "openload",
- "openstat.net": "openstat",
- "spylog.com": "openstat",
- "spylog.ru": "openstat",
- "opentracker.net": "opentracker",
- "openwebanalytics.com": "openwebanalytics",
- "odnxs.net": "openx",
- "openx.net": "openx",
- "openx.org": "openx",
- "openxenterprise.com": "openx",
- "servedbyopenx.com": "openx",
- "adsummos.net": "operative_media",
- "opinary.com": "opinary",
- "opinionbar.com": "opinionbar",
- "emagazines.com": "oplytic",
- "allawnos.com": "oppo",
- "allawntech.com": "oppo",
- "heytapdl.com": "oppo",
- "heytapmobi.com": "oppo",
- "heytapmobile.com": "oppo",
- "oppomobile.com": "oppo",
- "opta.net": "opta.net",
- "optaim.com": "optaim",
- "cookielaw.org": "optanaon",
- "service.optify.net": "optify",
- "optimatic.com": "optimatic",
- "optmd.com": "optimax_media_delivery",
- "optimicdn.com": "optimicdn.com",
- "optimizely.com": "optimizely",
- "episerver.net": "optimizely",
- "optimonk.com": "optimonk",
- "mstrlytcs.com": "optinmonster",
- "optmnstr.com": "optinmonster",
- "optmstr.com": "optinmonster",
- "optnmstr.com": "optinmonster",
- "optincollect.com": "optinproject.com",
- "volvelle.tech": "optomaton",
- "ora.tv": "ora.tv",
- "oracleinfinity.io": "oracle_infinity",
- "instantservice.com": "oracle_live_help",
- "ts.istrack.com": "oracle_live_help",
- "rightnowtech.com": "oracle_rightnow",
- "rnengage.com": "oracle_rightnow",
- "orange.fr": "orange",
- "orangeads.fr": "orange",
- "ads.orange142.com": "orange142",
- "wanadoo.fr": "orange_france",
- "otracking.com": "orangesoda",
- "emxdgt.com": "orc_international",
- "static.ordergroove.com": "order_groove",
- "orelsite.ru": "orel_site",
- "otclick-adv.ru": "otclick",
- "othersearch.info": "othersearch.info",
- "otm-r.com": "otm-r.com",
- "otto.de": "otto.de",
- "ottogroup.media": "otto.de",
- "outbrain.com": "outbrain",
- "outbrainimg.com": "outbrain",
- "live.com": "outlook",
- "cloud.microsoft": "outlook",
- "hotmail.com": "outlook",
- "outlook.com": "outlook",
- "svc.ms": "outlook",
- "overheat.it": "overheat.it",
- "oewabox.at": "owa",
- "owneriq.net": "owneriq",
- "ownpage.fr": "ownpage",
- "owox.com": "owox.com",
- "adconnexa.com": "oxamedia",
- "adsbwm.com": "oxamedia",
- "oxomi.com": "oxomi.com",
- "oztam.com.au": "oztam",
- "pageanalytics.space": "pageanalytics.space",
- "blockmetrics.com": "pagefair",
- "pagefair.com": "pagefair",
- "pagefair.net": "pagefair",
- "btloader.com": "pagefair",
- "ghmedia.com": "pagescience",
- "777seo.com": "paid-to-promote",
- "paid-to-promote.net": "paid-to-promote",
- "ptp22.com": "paid-to-promote",
- "ptp33.com": "paid-to-promote",
- "paperg.com": "paperg",
- "pardot.com": "pardot",
- "d1z2jf7jlzjs58.cloudfront.net": "parsely",
- "parsely.com": "parsely",
- "partner-ads.com": "partner-ads",
- "passionfruitads.com": "passionfruit",
- "pathful.com": "pathful",
- "pay-hit.com": "pay-hit",
- "payclick.it": "payclick",
- "app.paykickstart.com": "paykickstart",
- "paypal.com": "paypal",
- "paypalobjects.com": "paypal",
- "pcvark.com": "pcvark.com",
- "peer39.com": "peer39",
- "peer39.net": "peer39",
- "peer5.com": "peer5.com",
- "peerius.com": "peerius",
- "pendo.io": "pendo.io",
- "pepper.com": "pepper.com",
- "gopjn.com": "pepperjam",
- "pjatr.com": "pepperjam",
- "pjtra.com": "pepperjam",
- "pntra.com": "pepperjam",
- "pntrac.com": "pepperjam",
- "pntrs.com": "pepperjam",
- "player.pepsia.com": "pepsia",
- "perfdrive.com": "perfdrive.com",
- "perfectaudience.com": "perfect_audience",
- "prfct.co": "perfect_audience",
- "perfectmarket.com": "perfect_market",
- "perfops.io": "perfops",
- "performgroup.com": "perform_group",
- "analytics.performable.com": "performable",
- "performancing.com": "performancing_metrics",
- "performax.cz": "performax",
- "perimeterx.net": "perimeterx.net",
- "permutive.com": "permutive",
- "persgroep.net": "persgroep",
- "persianstat.com": "persianstat",
- "code.pers.io": "persio",
- "counter.personyze.com": "personyze",
- "petametrics.com": "petametrics",
- "ads.pheedo.com": "pheedo",
- "app.phonalytics.com": "phonalytics",
- "d2bgg7rjywcwsy.cloudfront.net": "phunware",
- "piguiqproxy.com": "piguiqproxy.com",
- "trgt.eu": "pilot",
- "pingdom.net": "pingdom",
- "pinimg.com": "pinterest",
- "pinterest.com": "pinterest",
- "app.pipz.io": "pipz",
- "disabled.invalid": "piwik",
- "piwik.pro": "piwik_pro_analytics_suite",
- "adrta.com": "pixalate",
- "app.pixelpop.co": "pixel_union",
- "pixfuture.net": "pixfuture",
- "vast1.pixfuture.com": "pixfuture",
- "piximedia.com": "piximedia",
- "pizzaandads.com": "pizzaandads_com",
- "ads.placester.net": "placester",
- "d3uemyw1e5n0jw.cloudfront.net": "placester",
- "pladform.com": "pladform.ru",
- "tag.bi.serviceplan.com": "plan.net_experience_cloud",
- "pfrm.co": "platform360",
- "impact-ad.jp": "platformone",
- "loveadvert.ru": "play_by_mamba",
- "playbuzz.com": "playbuzz.com",
- "pof.com": "plenty_of_fish",
- "plex.bz": "plex",
- "plex.direct": "plex",
- "plex.tv": "plex",
- "analytics.plex.tv": "plex_metrics",
- "metrics.plex.tv": "plex_metrics",
- "plista.com": "plista",
- "plugrush.com": "plugrush",
- "pluso.ru": "pluso.ru",
- "plutusads.com": "plutusads",
- "pmddby.com": "pmddby.com",
- "pnamic.com": "pnamic.com",
- "po.st": "po.st",
- "widgets.getpocket.com": "pocket",
- "pocketcents.com": "pocketcents",
- "pointificsecure.com": "pointific",
- "pointroll.com": "pointroll",
- "poirreleast.club": "poirreleast.club",
- "mediavoice.com": "polar.me",
- "polar.me": "polar.me",
- "polarmobile.com": "polar.me",
- "polldaddy.com": "polldaddy",
- "polyad.net": "polyad",
- "polyfill.io": "polyfill.io",
- "popads.net": "popads",
- "popadscdn.net": "popads",
- "popcash.net": "popcash",
- "popcashjs.b-cdn.net": "popcash",
- "desv383oqqc0.cloudfront.net": "popcorn_metrics",
- "popin.cc": "popin.cc",
- "cdn.popmyads.com": "popmyads",
- "poponclick.com": "poponclick",
- "populis.com": "populis",
- "populisengage.com": "populis",
- "phncdn.com": "pornhub",
- "pornhub.com": "pornhub",
- "prscripts.com": "pornwave",
- "prstatics.com": "pornwave",
- "prwidgets.com": "pornwave",
- "barra.brasil.gov.br": "porta_brazil",
- "postaffiliatepro.com": "post_affiliate_pro",
- "powerlinks.com": "powerlinks",
- "powerreviews.com": "powerreviews",
- "powr.io": "powr.io",
- "api.pozvonim.com": "pozvonim",
- "prebid.org": "prebid",
- "precisionclick.com": "precisionclick",
- "adserver.com.br": "predicta",
- "predicta.net": "predicta",
- "prnx.net": "premonix",
- "ppjol.com": "press",
- "ppjol.net": "press",
- "api.pressly.com": "pressly",
- "pricegrabber.com": "pricegrabber",
- "cdn.pricespider.com": "pricespider",
- "pmdrecrute.com": "prismamediadigital.com",
- "prismamediadigital.com": "prismamediadigital.com",
- "privy.com": "privy.com",
- "pswec.com": "proclivity",
- "prodperfect.com": "prodperfect",
- "lib.productsup.io": "productsup",
- "proadsnet.com": "profiliad",
- "profitshare.ro": "profitshare",
- "tracking.proformics.com": "proformics",
- "programattik.com": "programattik",
- "projectwonderful.com": "project_wonderful",
- "propelmarketing.com": "propel_marketing",
- "oclaserver.com": "propeller_ads",
- "onclasrv.com": "propeller_ads",
- "onclickads.net": "propeller_ads",
- "onclkds.com": "propeller_ads",
- "propellerads.com": "propeller_ads",
- "propellerpops.com": "propeller_ads",
- "proper.io": "propermedia",
- "st-a.props.id": "props",
- "propvideo.net": "propvideo_net",
- "tr.prospecteye.com": "prospecteye",
- "prosperent.com": "prosperent",
- "prostor-lite.ru": "prostor",
- "reports.proton.me": "proton_ag",
- "providesupport.com": "provide_support",
- "proximic.com": "proximic",
- "proxistore.com": "proxistore.com",
- "pscp.tv": "pscp.tv",
- "pstatic.net": "pstatic.net",
- "psyma.com": "psyma",
- "ptengine.jp": "pt_engine",
- "pub-fit.com": "pub-fit",
- "pub.network": "pub.network",
- "learnpipe.com": "pubble",
- "pubble.co": "pubble",
- "pubdirecte.com": "pubdirecte",
- "pubgears.com": "pubgears",
- "publicidees.com": "public_ideas",
- "publicidad.net": "publicidad.net",
- "intgr.net": "publir",
- "pubmatic.com": "pubmatic",
- "pubnub.com": "pubnub.com",
- "puboclic.com": "puboclic",
- "pulpix.com": "pulpix.com",
- "tentaculos.net": "pulpo_media",
- "pulse360.com": "pulse360",
- "pulseinsights.com": "pulse_insights",
- "contextweb.com": "pulsepoint",
- "pulsepoint.com": "pulsepoint",
- "punchtab.com": "punchtab",
- "purch.com": "purch",
- "servebom.com": "purch",
- "purechat.com": "pure_chat",
- "cdn.pprl.io": "pureprofile",
- "oopt.fr": "purlive",
- "puserving.com": "puserving.com",
- "push.world": "push.world",
- "pushengage.com": "push_engage",
- "pushame.com": "pushame.com",
- "zebra.pushbullet.com": "pushbullet",
- "pushcrew.com": "pushcrew",
- "pusher.com": "pusher.com",
- "pusherapp.com": "pusher.com",
- "pushnative.com": "pushnative.com",
- "cdn.pushnews.eu": "pushnews",
- "pushno.com": "pushno.com",
- "pushwhy.com": "pushwhy.com",
- "pushwoosh.com": "pushwoosh.com",
- "pvclouds.com": "pvclouds.com",
- "ads.q1media.com": "q1media",
- "q1mediahydraplatform.com": "q1media",
- "q-divisioncdn.de": "q_division",
- "qbaka.net": "qbaka",
- "track.qcri.org": "qcri_analytics",
- "collect.qeado.com": "qeado",
- "s.lianmeng.360.cn": "qihoo_360",
- "qq.com": "qq.com",
- "qrius.me": "qrius",
- "qualaroo.com": "qualaroo",
- "qualcomm.com": "qualcomm",
- "gpsonextra.net": "qualcomm_location_service",
- "izatcloud.net": "qualcomm_location_service",
- "xtracloud.net": "qualcomm_location_service",
- "bluecava.com": "qualia",
- "qualtrics.com": "qualtrics",
- "quantcast.com": "quantcast",
- "quantserve.com": "quantcast",
- "quantcount.com": "quantcount",
- "quantummetric.com": "quantum_metric",
- "quartic.pl": "quartic.pl",
- "quarticon.com": "quartic.pl",
- "d3c3cq33003psk.cloudfront.net": "qubit",
- "qubit.com": "qubit",
- "easyresearch.se": "questback",
- "queue-it.net": "queue-it",
- "quick-counter.net": "quick-counter.net",
- "adsonar.com": "quigo_adsonar",
- "qnsr.com": "quinstreet",
- "quinstreet.com": "quinstreet",
- "thecounter.com": "quinstreet",
- "quintelligence.com": "quintelligence",
- "qservz.com": "quisma",
- "quisma.com": "quisma",
- "quora.com": "quora.com",
- "ads-digitalkeys.com": "r_advertising",
- "rackcdn.com": "rackcdn.com",
- "radarurl.com": "radarurl",
- "dsa.csdata1.com": "radial",
- "gwallet.com": "radiumone",
- "r1-cdn.net": "radiumone",
- "widget.raisenow.com": "raisenow",
- "mediaforge.com": "rakuten_display",
- "rmtag.com": "rakuten_display",
- "rakuten.co.jp": "rakuten_globalmarket",
- "trafficgate.net": "rakuten_globalmarket",
- "mtwidget04.affiliate.rakuten.co.jp": "rakuten_widget",
- "xml.affilliate.rakuten.co.jp": "rakuten_widget",
- "rambler.ru": "rambler",
- "top100.ru": "rambler",
- "rapidspike.com": "rapidspike",
- "ravelin.com": "ravelin",
- "rawgit.com": "rawgit",
- "raygun.io": "raygun",
- "count.rbc.ru": "rbc_counter",
- "rcs.it": "rcs.it",
- "rcsmediagroup.it": "rcs.it",
- "d335luupugsy2.cloudfront.net": "rd_station",
- "rea-group.com": "rea_group",
- "reagroupdata.com.au": "rea_group",
- "reastatic.net": "rea_group",
- "d12ulf131zb0yj.cloudfront.net": "reachforce",
- "reachforce.com": "reachforce",
- "reachjunction.com": "reachjunction",
- "cdn.rlets.com": "reachlocal",
- "reachlocal.com": "reachlocal",
- "reachlocallivechat.com": "reachlocal",
- "rlcdn.net": "reachlocal",
- "plugin.reactful.com": "reactful",
- "reactivpub.fr": "reactivpub",
- "skinected.com": "reactx",
- "readrboard.com": "readerboard",
- "readme.com": "readme",
- "readme.io": "readme",
- "readspeaker.com": "readspeaker.com",
- "realclick.co.kr": "realclick",
- "realestate.com.au": "realestate.com.au",
- "realperson.de": "realperson.de",
- "powermarketing.com": "realtime",
- "realtime.co": "realtime",
- "webspectator.com": "realtime",
- "dcniko1cv0rz.cloudfront.net": "realytics",
- "realytics.io": "realytics",
- "static.rbl.ms": "rebel_mouse",
- "recaptcha.net": "recaptcha",
- "recettes.net": "recettes.net",
- "static.recopick.com": "recopick",
- "recreativ.ru": "recreativ",
- "analytics.recruitics.com": "recruitics",
- "analytics.cohesionapps.com": "red_ventures",
- "cdn.cohesionapps.com": "red_ventures",
- "redblue.de": "redblue_de",
- "atendesoftware.pl": "redcdn.pl",
- "redd.it": "reddit",
- "reddit-image.s3.amazonaws.com": "reddit",
- "reddit.com": "reddit",
- "redditmedia.com": "reddit",
- "redditstatic.com": "reddit",
- "redhelper.ru": "redhelper",
- "pixelinteractivemedia.com": "redlotus",
- "triggit.com": "redlotus",
- "grt01.com": "redtram",
- "grt02.com": "redtram",
- "redtram.com": "redtram",
- "rdtcdn.com": "redtube.com",
- "redtube.com": "redtube.com",
- "reduxmedia.com": "redux_media",
- "reduxmediagroup.com": "redux_media",
- "reedbusiness.net": "reed_business_information",
- "reembed.com": "reembed.com",
- "reevoo.com": "reevoo.com",
- "refericon.pl": "refericon",
- "ads.referlocal.com": "referlocal",
- "refersion.com": "refersion",
- "refinedads.com": "refined_labs",
- "product.reflektion.com": "reflektion",
- "reformal.ru": "reformal",
- "reinvigorate.net": "reinvigorate",
- "convertglobal.com": "rekko",
- "convertglobal.s3.amazonaws.com": "rekko",
- "dnhgz729v27ca.cloudfront.net": "rekko",
- "reklamstore.com": "reklam_store",
- "ad.reklamport.com": "reklamport",
- "delivery.reklamz.com": "reklamz",
- "adimg.rekmob.com": "rekmob",
- "relap.io": "relap",
- "svtrd.com": "relay42",
- "synovite-scripts.com": "relay42",
- "tdn.r42tag.com": "relay42",
- "relestar.com": "relestar",
- "relevant4.com": "relevant4.com",
- "remintrex.com": "remintrex",
- "remove.video": "remove.video",
- "rp-api.com": "repost.us",
- "republer.com": "republer.com",
- "resmeter.respublica.al": "res-meter",
- "researchnow.com": "research_now",
- "reson8.com": "resonate_networks",
- "respondhq.com": "respond",
- "adinsight.com": "responsetap",
- "adinsight.eu": "responsetap",
- "responsetap.com": "responsetap",
- "data.resultlinks.com": "result_links",
- "sli-system.com": "resultspage.com",
- "retailrocket.net": "retailrocket.net",
- "retailrocket.ru": "retailrocket.net",
- "shopify.retargetapp.com": "retarget_app",
- "retargeter.com": "retargeter_beacon",
- "retargeting.cl": "retargeting.cl",
- "d1stxfv94hrhia.cloudfront.net": "retention_science",
- "waves.retentionscience.com": "retention_science",
- "reutersmedia.net": "reuters_media",
- "revcontent.com": "revcontent",
- "socialtwist.com": "reve_marketing",
- "revenue.com": "revenue",
- "clkads.com": "revenuehits",
- "clkmon.com": "revenuehits",
- "clkrev.com": "revenuehits",
- "clksite.com": "revenuehits",
- "eclkspbn.com": "revenuehits",
- "imageshack.host": "revenuehits",
- "revenuemantra.com": "revenuemantra",
- "revive-adserver.com": "revive_adserver",
- "revolvermaps.com": "revolver_maps",
- "cts.tradepub.com": "revresponse",
- "revresponse.com": "revresponse",
- "incontext.pl": "rewords",
- "pl-engine.intextad.net": "rewords",
- "addesktop.com": "rhythmone",
- "1rx.io": "rhythmone_beacon",
- "ria.ru": "ria.ru",
- "rmbn.ru": "rich_media_banner_network",
- "ics0.com": "richrelevance",
- "richrelevance.com": "richrelevance",
- "ringier.ch": "ringier.ch",
- "meteorsolutions.com": "rio_seo",
- "riskified.com": "riskfield.com",
- "rncdn3.com": "rncdn3.com",
- "ro2.biz": "ro2.biz",
- "rbxcdn.com": "roblox",
- "getrockerbox.com": "rockerbox",
- "rocket.la": "rocket.ia",
- "trk.sodoit.com": "roi_trax",
- "collector.roistat.com": "roistat",
- "rollad.ru": "rollad",
- "d37gvrvc0wt4s1.cloudfront.net": "rollbar",
- "get.roost.me": "roost",
- "getrooster.com": "rooster",
- "rqtrk.eu": "roq.ad",
- "rotaban.ru": "rotaban",
- "routenplaner-karten.com": "routenplaner-karten.com",
- "rovion.com": "rovion",
- "rsspump.com": "rsspump",
- "creativecdn.com": "rtb_house",
- "rvty.net": "rtblab",
- "rtbsuperhub.com": "rtbsuperhub.com",
- "rtl.de": "rtl_group",
- "static-fra.de": "rtl_group",
- "technical-service.net": "rtl_group",
- "rtmark.net": "rtmark.net",
- "dpclk.com": "rubicon",
- "mobsmith.com": "rubicon",
- "nearbyad.com": "rubicon",
- "rubiconproject.com": "rubicon",
- "tracker.ruhrgebiet-onlineservices.de": "ruhrgebiet",
- "click.rummycircle.com": "rummycircle",
- "runadtag.com": "run",
- "rundsp.com": "run",
- "un-syndicate.com": "runative",
- "cdn.secretrune.com": "rune",
- "runmewivel.com": "runmewivel.com",
- "rhythmxchange.com": "rythmxchange",
- "s24.com": "s24_com",
- "s3xified.com": "s3xified.com",
- "camp.sabavision.com": "sabavision",
- "sageanalyst.net": "sagemetrics",
- "sail-horizon.com": "sailthru_horizon",
- "sail-personalize.com": "sailthru_horizon",
- "sailthru.com": "sailthru_horizon",
- "d16fk4ms6rqz1v.cloudfront.net": "salecycle",
- "salecycle.com": "salecycle",
- "api.salesfeed.com": "sales_feed",
- "salesmanago.com": "sales_manago",
- "salesmanago.pl": "sales_manago",
- "force.com": "salesforce.com",
- "salesforce.com": "salesforce.com",
- "liveagentforsalesforce.com": "salesforce_live_agent",
- "salesforceliveagent.com": "salesforce_live_agent",
- "msgapp.com": "salesfusion",
- "salespidermedia.com": "salespider_media",
- "salesviewer.com": "salesviewer",
- "samba.tv": "samba.tv",
- "game-mode.net": "samsung",
- "gos-gsp.io": "samsung",
- "lldns.net": "samsung",
- "pavv.co.kr": "samsung",
- "remotesamsung.com": "samsung",
- "samsung-gamelauncher.com": "samsung",
- "samsung.co.kr": "samsung",
- "samsung.com": "samsung",
- "samsung.com.cn": "samsung",
- "samsungcloud.com": "samsung",
- "samsungcloudcdn.com": "samsung",
- "samsungcloudprint.com": "samsung",
- "samsungcloudsolution.com": "samsung",
- "samsungcloudsolution.net": "samsung",
- "samsungelectronics.com": "samsung",
- "samsunghealth.com": "samsung",
- "samsungiotcloud.com": "samsung",
- "samsungknox.com": "samsung",
- "samsungnyc.com": "samsung",
- "samsungosp.com": "samsung",
- "samsungotn.net": "samsung",
- "samsungpositioning.com": "samsung",
- "samsungqbe.com": "samsung",
- "samsungrm.net": "samsung",
- "samsungrs.com": "samsung",
- "samsungsemi.com": "samsung",
- "samsungsetup.com": "samsung",
- "samsungusa.com": "samsung",
- "secb2b.com": "samsung",
- "smartthings.com": "samsung",
- "adgear.com": "samsungads",
- "adgrx.com": "samsungads",
- "samsungacr.com": "samsungads",
- "samsungadhub.com": "samsungads",
- "samsungads.com": "samsungads",
- "samsungtifa.com": "samsungads",
- "aibixby.com": "samsungapps",
- "findmymobile.samsung.com": "samsungapps",
- "samsapps.cust.lldns.net": "samsungapps",
- "samsung-omc.com": "samsungapps",
- "samsungapps.com": "samsungapps",
- "samsungdiroute.net": "samsungapps",
- "samsungdive.com": "samsungapps",
- "samsungdm.com": "samsungapps",
- "samsungdmroute.com": "samsungapps",
- "samsungmdec.com": "samsungapps",
- "samsungvisioncloud.com": "samsungapps",
- "sbixby.com": "samsungapps",
- "ospserver.net": "samsungmobile",
- "samsungdms.net": "samsungmobile",
- "samsungmax.com": "samsungmobile",
- "samsungmobile.com": "samsungmobile",
- "secmobilesvc.com": "samsungmobile",
- "push.samsungosp.com": "samsungpush",
- "pushmessage.samsung.com": "samsungpush",
- "scs.samsungqbe.com": "samsungpush",
- "ssp.samsung.com": "samsungpush",
- "samsungsds.com": "samsungsds",
- "internetat.tv": "samsungtv",
- "samsungcloud.tv": "samsungtv",
- "tizenservice.com": "samsungtv",
- "ilsemedia.nl": "sanoma.fi",
- "sanoma.fi": "sanoma.fi",
- "d13im3ek7neeqp.cloudfront.net": "sap_crm",
- "d28ethi6slcjbm.cloudfront.net": "sap_crm",
- "d2uevgmgh16uk4.cloudfront.net": "sap_crm",
- "d3m83gvgzupli.cloudfront.net": "sap_crm",
- "saas.seewhy.com": "sap_crm",
- "leadforce1.com": "sap_sales_cloud",
- "vlog.leadformix.com": "sap_sales_cloud",
- "sap-xm.org": "sap_xm",
- "sape.ru": "sape.ru",
- "js.sl.pt": "sapo_ads",
- "aimatch.com": "sas",
- "sas.com": "sas",
- "say.ac": "say.ac",
- "ads.saymedia.com": "say_media",
- "srv.sayyac.net": "sayyac",
- "scarabresearch.com": "scarabresearch",
- "schibsted.com": "schibsted",
- "schibsted.io": "schibsted",
- "schneevonmorgen.com": "schneevonmorgen.com",
- "svonm.com": "schneevonmorgen.com",
- "rockabox.co": "scoota",
- "scorecardresearch.com": "scorecard_research_beacon",
- "scoreresearch.com": "scorecard_research_beacon",
- "scrsrch.com": "scorecard_research_beacon",
- "securestudies.com": "scorecard_research_beacon",
- "scout.scoutanalytics.net": "scout_analytics",
- "scribblelive.com": "scribblelive",
- "scribol.com": "scribol",
- "analytics.snidigital.com": "scripps_analytics",
- "scroll.com": "scroll",
- "scupio.com": "scupio",
- "search123.uk.com": "search123",
- "searchforce.net": "searchforce",
- "searchignite.com": "searchignite",
- "srtk.net": "searchrev",
- "tacticalrepublic.com": "second_media",
- "sectigo.com": "sectigo",
- "securedtouch.com": "securedtouch",
- "securedvisit.com": "securedvisit",
- "bacontent.de": "seeding_alliance",
- "nativendo.de": "seeding_alliance",
- "seedtag.com": "seedtag.com",
- "svlu.net": "seevolution",
- "d2dq2ahtl5zl1z.cloudfront.net": "segment",
- "d47xnnr8b1rki.cloudfront.net": "segment",
- "segment.com": "segment",
- "segment.io": "segment",
- "rutarget.ru": "segmento",
- "segmint.net": "segmint",
- "sekindo.com": "sekindo",
- "sellpoint.net": "sellpoints",
- "sellpoints.com": "sellpoints",
- "semantiqo.com": "semantiqo.com",
- "semasio.net": "semasio",
- "semilo.com": "semilo",
- "semknox.com": "semknox.com",
- "sibautomation.com": "sendinblue",
- "sendpulse.com": "sendpulse.com",
- "sendsay.ru": "sendsay",
- "track.sensedigital.in": "sense_digital",
- "static.sensorsdata.cn": "sensors_data",
- "sentifi.com": "sentifi.com",
- "d3nslu0hdya83q.cloudfront.net": "sentry",
- "getsentry.com": "sentry",
- "ravenjs.com": "sentry",
- "sentry.io": "sentry",
- "sepyra.com": "sepyra",
- "d2oh4tlt9mrke9.cloudfront.net": "sessioncam",
- "sessioncam.com": "sessioncam",
- "sessionly.io": "sessionly",
- "71i.de": "sevenone_media",
- "sexad.net": "sexadnetwork",
- "ads.sexinyourcity.com": "sexinyourcity",
- "sextracker.com": "sextracker",
- "sexypartners.net": "sexypartners.net",
- "im.cz": "seznam",
- "imedia.cz": "seznam",
- "szn.cz": "seznam",
- "dtym7iokkjlif.cloudfront.net": "shareaholic",
- "shareaholic.com": "shareaholic",
- "shareasale.com": "shareasale",
- "quintrics.nl": "sharecompany",
- "sharecompany.nl": "sharecompany",
- "sharepointonline.com": "sharepoint",
- "onmicrosoft.com": "sharepoint",
- "sharepoint.com": "sharepoint",
- "sharethis.com": "sharethis",
- "shareth.ru": "sharethrough",
- "sharethrough.com": "sharethrough",
- "marketingautomation.services": "sharpspring",
- "sharpspring.com": "sharpspring",
- "sheego.de": "sheego.de",
- "services.sheerid.com": "sheerid",
- "shinystat.com": "shinystat",
- "shinystat.it": "shinystat",
- "app.shoptarget.com.br": "shop_target",
- "retargeter.com.br": "shop_target",
- "shopauskunft.de": "shopauskunft.de",
- "shopgate.com": "shopgate.com",
- "shopify.com": "shopify",
- "shopifycdn.com": "shopify",
- "cdn.shopify.com": "shopify",
- "myshopify.com": "shopify",
- "shop.app": "shopify",
- "shopify.co.za": "shopify",
- "shopify.com.au": "shopify",
- "shopify.com.mx": "shopify",
- "shopify.dev": "shopify",
- "shopifyapps.com": "shopify",
- "shopifycdn.net": "shopify",
- "shopifynetwork.com": "shopify",
- "shopifypreview.com": "shopify",
- "shopifysvc.com": "shopify_stats",
- "stats.shopify.com": "shopify_stats",
- "v.shopify.com": "shopify_stats",
- "shopifycloud.com": "shopifycloud.com",
- "shopperapproved.com": "shopper_approved",
- "shoppingshadow.com": "shopping_com",
- "tracking.shopping-flux.com": "shopping_flux",
- "shoprunner.com": "shoprunner",
- "shopsocially.com": "shopsocially",
- "shopzilla.com": "shopzilla",
- "shortnews.de": "shortnews",
- "showrss.info": "showrss",
- "shink.in": "shrink",
- "shutterstock.com": "shutterstock",
- "siblesectiveal.club": "siblesectiveal.club",
- "d3v27wwd40f0xu.cloudfront.net": "sidecar",
- "getsidecar.com": "sidecar",
- "dtlilztwypawv.cloudfront.net": "sift_science",
- "siftscience.com": "sift_science",
- "btstatic.com": "signal",
- "signal.co": "signal",
- "thebrighttag.com": "signal",
- "cdn-scripts.signifyd.com": "signifyd",
- "signifyd.com": "signifyd",
- "gw-services.vtrenz.net": "silverpop",
- "mkt51.net": "silverpop",
- "mkt912.com": "silverpop",
- "mkt922.com": "silverpop",
- "mkt941.com": "silverpop",
- "pages01.net": "silverpop",
- "pages02.net": "silverpop",
- "pages04.net": "silverpop",
- "pages05.net": "silverpop",
- "similardeals.net": "similardeals.net",
- "similarweb.com": "similarweb",
- "similarweb.io": "similarweb",
- "d8rk54i4mohrb.cloudfront.net": "simplereach",
- "simplereach.com": "simplereach",
- "simpli.fi": "simpli.fi",
- "sina.com.cn": "sina",
- "sinaimg.cn": "sina_cdn",
- "reporting.singlefeed.com": "singlefeed",
- "sddan.com": "sirdata",
- "site24x7rum.com": "site24x7",
- "site24x7rum.eu": "site24x7",
- "sitebooster-fjfmworld-production.azureedge.net": "site_booster",
- "a5.ogt.jp": "site_stratos",
- "siteapps.com": "siteapps",
- "sitebro.com": "sitebro",
- "sitebro.com.tw": "sitebro",
- "sitebro.net": "sitebro",
- "sitebro.tw": "sitebro",
- "siteheart.com": "siteheart",
- "siteimprove.com": "siteimprove",
- "siteimproveanalytics.com": "siteimprove_analytics",
- "sitelabweb.com": "sitelabweb.com",
- "sitemeter.com": "sitemeter",
- "pixel.ad": "sitescout",
- "sitescout.com": "sitescout",
- "ad.sitemaji.com": "sitetag",
- "sitetag.us": "sitetag",
- "analytics.sitewit.com": "sitewit",
- "ads.sixapart.com": "six_apart_advertising",
- "sixt-neuwagen.de": "sixt-neuwagen.de",
- "skadtec.com": "skadtec.com",
- "redirectingat.com": "skimlinks",
- "skimlinks.com": "skimlinks",
- "skimresources.com": "skimlinks",
- "analytics.skroutz.gr": "skroutz",
- "skyglue.com": "skyglue",
- "skype.com": "skype",
- "skypeassets.com": "skype",
- "skysa.com": "skysa",
- "skyscnr.com": "skyscnr.com",
- "slack-edge.com": "slack",
- "slack-imgs.com": "slack",
- "slack.com": "slack",
- "slackb.com": "slack",
- "slashdot.org": "slashdot_widget",
- "sleeknotestaticcontent.sleeknote.com": "sleeknote",
- "resultspage.com": "sli_systems",
- "builder.extensionfactory.com": "slice_factory",
- "freeskreen.com": "slimcutmedia",
- "slingpic.com": "slingpic",
- "smaato.net": "smaato",
- "smart4ads.com": "smart4ads",
- "sascdn.com": "smart_adserver",
- "smartadserver.com": "smart_adserver",
- "styria-digital.com": "smart_adserver",
- "yoc-adserver.com": "smart_adserver",
- "smartcall.kz": "smart_call",
- "getsmartcontent.com": "smart_content",
- "smartdevicemedia.com": "smart_device_media",
- "x.cnt.my": "smart_leads",
- "tracking.smartselling.cz": "smart_selling",
- "bepolite.eu": "smartad",
- "smartbn.ru": "smartbn",
- "smartclick.net": "smartclick.net",
- "smartclip.net": "smartclip",
- "smartcontext.pl": "smartcontext",
- "d1n00d49gkbray.cloudfront.net": "smarter_remarketer",
- "dhxtx5wtu812h.cloudfront.net": "smarter_remarketer",
- "smartertravel.com": "smarter_travel",
- "travelsmarter.net": "smarter_travel",
- "smct.co": "smarterclick",
- "smartertrack.com": "smartertrack",
- "smartlink.cool": "smartlink.cool",
- "getsmartlook.com": "smartlook",
- "smartlook.com": "smartlook",
- "smartstream.tv": "smartstream.tv",
- "smartsuppchat.com": "smartsupp_chat",
- "smi2.net": "smi2.ru",
- "smi2.ru": "smi2.ru",
- "stat.media": "smi2.ru",
- "cdn.smooch.io": "smooch",
- "smowtion.com": "smowtion",
- "smxindia.in": "smx_ventures",
- "smyte.com": "smyte",
- "snacktv.de": "snacktv",
- "snap.com": "snap",
- "addlive.io": "snap",
- "feelinsonice.com": "snap",
- "sc-cdn.net": "snap",
- "sc-corp.net": "snap",
- "sc-gw.com": "snap",
- "sc-jpl.com": "snap",
- "sc-prod.net": "snap",
- "snap-dev.net": "snap",
- "snapads.com": "snap",
- "snapkit.com": "snap",
- "snapengage.com": "snap_engage",
- "sc-static.net": "snapchat",
- "snapchat.com": "snapchat",
- "snapcraft.io": "snapcraft",
- "snapcraftcontent.com": "snapcraft",
- "h-bid.com": "snigelweb",
- "eu2.snoobi.eu": "snoobi",
- "snoobi.com": "snoobi_analytics",
- "d346whrrklhco7.cloudfront.net": "snowplow",
- "d78fikflryjgj.cloudfront.net": "snowplow",
- "dc8xl0ndzn2cb.cloudfront.net": "snowplow",
- "playwire.com": "snowplow",
- "snplow.net": "snowplow",
- "go-mpulse.net": "soasta_mpulse",
- "mpstat.us": "soasta_mpulse",
- "tiaa-cref.org": "soasta_mpulse",
- "sociablelabs.com": "sociable_labs",
- "socialamp.com": "social_amp",
- "socialannex.com": "social_annex",
- "soclminer.com.br": "social_miner",
- "duu8lzqdm8tsz.cloudfront.net": "socialbeat",
- "ratevoice.com": "socialrms",
- "sociaplus.com": "sociaplus.com",
- "sociomantic.com": "sociomantic",
- "images.sohu.com": "sohu",
- "sojern.com": "sojern",
- "sokrati.com": "sokrati",
- "solads.media": "solads.media",
- "solaredge.com": "solaredge",
- "solidopinion.com": "solidopinion",
- "pixel.solvemedia.com": "solve_media",
- "soma2.de": "soma_2",
- "mobileadtrading.com": "somoaudience",
- "sonobi.com": "sonobi",
- "sonos.com": "sonos",
- "sophus3.com": "sophus3",
- "deployads.com": "sortable",
- "sndcdn.com": "soundcloud",
- "soundcloud.com": "soundcloud",
- "provenpixel.com": "sourceknowledge_pixel",
- "decenthat.com": "sourcepoint",
- "summerhamster.com": "sourcepoint",
- "d3pkae9owd2lcf.cloudfront.net": "sovrn",
- "lijit.com": "sovrn",
- "onscroll.com": "sovrn_viewability_solutions",
- "rts.sparkstudios.com": "spark_studios",
- "sparkasse.de": "sparkasse.de",
- "speakpipe.com": "speakpipe",
- "adviva.net": "specific_media",
- "specificclick.net": "specific_media",
- "specificmedia.com": "specific_media",
- "spectate.com": "spectate",
- "speedshiftmedia.com": "speed_shift_media",
- "speedcurve.com": "speedcurve",
- "admarket.entireweb.com": "speedyads",
- "affiliate.entireweb.com": "speedyads",
- "sa.entireweb.com": "speedyads",
- "speee-ad.akamaized.net": "speee",
- "sphere.com": "sphere",
- "surphace.com": "sphere",
- "api.spheremall.com": "spheremall",
- "zdwidget3-bs.sphereup.com": "sphereup",
- "static.sspicy.ru": "spicy",
- "spider.ad": "spider.ad",
- "metrics.spiderads.eu": "spider_ads",
- "spn.ee": "spinnakr",
- "embed.spokenlayer.com": "spokenlayer",
- "spongecell.com": "spongecell",
- "sponsorads.de": "sponsorads.de",
- "sportsbetaffiliates.com.au": "sportsbet_affiliates",
- "spot.im": "spot.im",
- "spoteffects.net": "spoteffect",
- "scdn.co": "spotify",
- "spotify.com": "spotify",
- "pscdn.co": "spotify",
- "spotifycdn.com": "spotify",
- "spotifycdn.net": "spotify",
- "spotilocal.com": "spotify",
- "embed.spotify.com": "spotify_embed",
- "spotscenered.info": "spotscenered.info",
- "spotx.tv": "spotxchange",
- "spotxcdn.com": "spotxchange",
- "spotxchange.com": "spotxchange",
- "spoutable.com": "spoutable",
- "cdn.springboardplatform.com": "springboard",
- "springserve.com": "springserve",
- "pixel.sprinklr.com": "sprinklr",
- "stat.sputnik.ru": "sputnik",
- "email-match.com": "squadata",
- "squarespace.com": "squarespace.com",
- "srvtrck.com": "srvtrck.com",
- "srvvtrk.com": "srvvtrk.com",
- "sstatic.net": "sstatic.net",
- "hatena.ne.jp": "st-hatena",
- "st-hatena.com": "st-hatena",
- "stackadapt.com": "stackadapt",
- "stackpathdns.com": "stackpathdns.com",
- "stailamedia.com": "stailamedia_com",
- "stalluva.pro": "stalluva.pro",
- "startappservice.com": "startapp",
- "hit.stat24.com": "stat24",
- "adstat.4u.pl": "stat4u",
- "stat.4u.pl": "stat4u",
- "statcounter.com": "statcounter",
- "stathat.com": "stathat",
- "statisfy.net": "statisfy",
- "statsy.net": "statsy.net",
- "statuscake.com": "statuscake",
- "statuspage.io": "statuspage.io",
- "stspg-customer.com": "statuspage.io",
- "stayfriends.de": "stayfriends.de",
- "steelhousemedia.com": "steelhouse",
- "steepto.com": "steepto.com",
- "stepstone.com": "stepstone.com",
- "4stats.de": "stetic",
- "stetic.com": "stetic",
- "stickyadstv.com": "stickyads",
- "stocktwits.com": "stocktwits",
- "storify.com": "storify",
- "storygize.net": "storygize",
- "bizsolutions.strands.com": "strands_recommender",
- "strava.com": "strava",
- "mailfoogae.appspot.com": "streak",
- "streamotion.com.au": "streamotion",
- "streamrail.com": "streamrail.com",
- "streamrail.net": "streamrail.com",
- "stridespark.com": "stride",
- "stripcdn.com": "stripchat.com",
- "stripchat.com": "stripchat.com",
- "stripe.com": "stripe.com",
- "stripe.network": "stripe.com",
- "stripst.com": "stripst.com",
- "interactivemedia.net": "stroer_digital_media",
- "stroeerdigitalgroup.de": "stroer_digital_media",
- "stroeerdigitalmedia.de": "stroer_digital_media",
- "stroeerdp.de": "stroer_digital_media",
- "stroeermediabrands.de": "stroer_digital_media",
- "spklw.com": "strossle",
- "sprinklecontent.com": "strossle",
- "strossle.it": "strossle",
- "struq.com": "struq",
- "stumble-upon.com": "stumbleupon_widgets",
- "stumbleupon.com": "stumbleupon_widgets",
- "su.pr": "stumbleupon_widgets",
- "sub2tech.com": "sub2",
- "ayads.co": "sublime_skinz",
- "suggest.io": "suggest.io",
- "sumologic.com": "sumologic.com",
- "sumo.com": "sumome",
- "sumome.com": "sumome",
- "sundaysky.com": "sundaysky",
- "supercell.com": "supercell",
- "supercellsupport.com": "supercell",
- "supercounters.com": "supercounters",
- "superfastcdn.com": "superfastcdn.com",
- "socdm.com": "supership",
- "supplyframe.com": "supplyframe",
- "surfingbird.ru": "surf_by_surfingbird",
- "px.surveywall-api.survata.com": "survata",
- "cdn.sweettooth.io": "sweettooth",
- "swiftypecdn.com": "swiftype",
- "swisscom.ch": "swisscom",
- "myswitchads.com": "switch_concepts",
- "switchadhub.com": "switch_concepts",
- "switchads.com": "switch_concepts",
- "switchafrica.com": "switch_concepts",
- "switch.tv": "switchtv",
- "shopximity.com": "swoop",
- "swoop.com": "swoop",
- "analytics-cdn.sykescottages.co.uk": "sykes",
- "norton.com": "symantec",
- "seal.verisign.com": "symantec",
- "symantec.com": "symantec",
- "d.hodes.com": "symphony_talent",
- "technorati.com": "synacor",
- "technoratimedia.com": "synacor",
- "cn.clickable.net": "syncapse",
- "synergy-e.com": "synergy-e",
- "sdp-campaign.de": "t-mobile",
- "t-online.de": "t-mobile",
- "telekom-dienste.de": "t-mobile",
- "telekom.com": "t-mobile",
- "telekom.de": "t-mobile",
- "toi.de": "t-mobile",
- "t8cdn.com": "t8cdn.com",
- "tableteducation.com": "tableteducation.com",
- "basebanner.com": "taboola",
- "taboola.com": "taboola",
- "taboolasyndication.com": "taboola",
- "tacoda.net": "tacoda",
- "commander1.com": "tag_commander",
- "tagcommander.com": "tag_commander",
- "tags.tagcade.com": "tagcade",
- "taggify.net": "taggify",
- "taggyad.jp": "taggy",
- "levexis.com": "tagman",
- "tailtarget.com": "tail_target",
- "tailsweep.com": "tailsweep",
- "tamedia.ch": "tamedia.ch",
- "tanx.com": "tanx",
- "alipcsec.com": "taobao",
- "taobao.com": "taobao",
- "tapad.com": "tapad",
- "theblogfrog.com": "tapinfluence",
- "tarafdari.com": "tarafdari",
- "target2sell.com": "target_2_sell",
- "trackmytarget.com": "target_circle",
- "cdn.targetfuel.com": "target_fuel",
- "tawk.to": "tawk",
- "tbn.ru": "tbn.ru",
- "tchibo-content.de": "tchibo_de",
- "tchibo.de": "tchibo_de",
- "tdsrmbl.net": "tdsrmbl_net",
- "teads.tv": "teads",
- "tealeaf.ibmcloud.com": "tealeaf",
- "tealium.com": "tealium",
- "tealium.hs.llnwd.net": "tealium",
- "tealiumiq.com": "tealium",
- "tiqcdn.com": "tealium",
- "teaser.cc": "teaser.cc",
- "emailretargeting.com": "tedemis",
- "tracking.dsmmadvantage.com": "teletech",
- "telstra.com": "telstra",
- "telstra.com.au": "telstra",
- "tenderapp.com": "tender",
- "tensitionschoo.club": "tensitionschoo.club",
- "watch.teroti.com": "teroti",
- "webterren.com": "terren",
- "teufel.de": "teufel.de",
- "theadex.com": "the_adex",
- "connect.decknetwork.net": "the_deck",
- "gu-web.net": "the_guardian",
- "guardianapps.co.uk": "the_guardian",
- "guim.co.uk": "the_guardian",
- "deepthought.online": "the_reach_group",
- "reachgroup.com": "the_reach_group",
- "redintelligence.net": "the_reach_group",
- "thesearchagency.net": "the_search_agency",
- "thesun.co.uk": "the_sun",
- "w-x.co": "the_weather_company",
- "weather.com": "the_weather_company",
- "wfxtriggers.com": "the_weather_company",
- "tmdb.org": "themoviedb",
- "thinglink.com": "thinglink",
- "online-metrix.net": "threatmetrix",
- "tidbit.co.in": "tidbit",
- "code.tidio.co": "tidio",
- "widget-v4.tidiochat.com": "tidio",
- "analytics.tiktok.com": "tiktok_analytics",
- "optimized.by.tiller.co": "tiller",
- "vip.timezonedb.com": "timezondb",
- "npttech.com": "tinypass",
- "tinypass.com": "tinypass",
- "tisoomi-services.com": "tisoomi",
- "ad.tlvmedia.com": "tlv_media",
- "ads.tlvmedia.com": "tlv_media",
- "tag.tlvmedia.com": "tlv_media",
- "research-int.se": "tns",
- "sesamestats.com": "tns",
- "spring-tns.net": "tns",
- "statistik-gallup.net": "tns",
- "tns-cs.net": "tns",
- "tns-gallup.dk": "tns",
- "tomnewsupdate.info": "tomnewsupdate.info",
- "tfag.de": "tomorrow_focus",
- "srv.clickfuse.com": "tonefuse",
- "toplist.cz": "toplist.cz",
- "toponclick.com": "toponclick_com",
- "topsy.com": "topsy",
- "insight.torbit.com": "torbit",
- "toro-tags.com": "toro",
- "toroadvertising.com": "toro",
- "toroadvertisingmedia.com": "toro",
- "tororango.com": "tororango.com",
- "i.total-media.net": "total_media",
- "inq.com": "touchcommerce",
- "tovarro.com": "tovarro.com",
- "rialpay.com": "tp-cdn.com",
- "tp-cdn.com": "tp-cdn.com",
- "kiwe.io": "tracc.it",
- "tracc.it": "tracc.it",
- "ipnoid.com": "tracemyip",
- "tracemyip.org": "tracemyip",
- "d2gfdmu30u15x7.cloudfront.net": "traceview",
- "tracelytics.com": "traceview",
- "cdn.trackduck.com": "track_duck",
- "d2zah9y47r7bi2.cloudfront.net": "trackjs",
- "dl1d2m8ri9v3j.cloudfront.net": "trackjs",
- "trackjs.com": "trackjs",
- "conversionlab.trackset.com": "trackset_conversionlab",
- "trackuity.com": "trackuity",
- "adsrvr.org": "tradedesk",
- "tradedoubler.com": "tradedoubler",
- "tradelab.fr": "tradelab",
- "tradetracker.net": "tradetracker",
- "cdntrf.com": "traffective",
- "traffective.com": "traffective",
- "my.trafficfuel.com": "traffic_fuel",
- "trafficrevenue.net": "traffic_revenue",
- "trafficstars.com": "traffic_stars",
- "tsyndicate.com": "traffic_stars",
- "trafficbroker.com": "trafficbroker",
- "trafficfabrik.com": "trafficfabrik.com",
- "trafficfactory.biz": "trafficfactory",
- "trafficforce.com": "trafficforce",
- "traffichaus.com": "traffichaus",
- "trafficjunky.net": "trafficjunky",
- "traffiliate.com": "traffiliate",
- "storage.trafic.ro": "trafic",
- "trafmag.com": "trafmag.com",
- "api.transcend.io": "transcend",
- "cdn.transcend.io": "transcend",
- "sync-transcend-cdn.com": "transcend",
- "transcend-cdn.com": "transcend",
- "transcend.io": "transcend",
- "telemetry.transcend.io": "transcend_telemetry",
- "backoffice.transmatico.com": "transmatic",
- "travelaudience.com": "travel_audience",
- "trbo.com": "trbo",
- "treasuredata.com": "treasuredata",
- "scanscout.com": "tremor_video",
- "tremorhub.com": "tremor_video",
- "tremormedia.com": "tremor_video",
- "tremorvideo.com": "tremor_video",
- "videohub.tv": "tremor_video",
- "s.tcimg.com": "trendcounter",
- "tcimg.com": "trendcounter",
- "trendemon.com": "trendemon",
- "exponential.com": "tribal_fusion",
- "tribalfusion.com": "tribal_fusion",
- "tribl.io": "triblio",
- "api.temails.com": "trigger_mail_marketing",
- "t.myvisitors.se": "triggerbee",
- "jscache.com": "tripadvisor",
- "tacdn.com": "tripadvisor",
- "tamgrt.com": "tripadvisor",
- "tripadvisor.co.uk": "tripadvisor",
- "tripadvisor.com": "tripadvisor",
- "tripadvisor.de": "tripadvisor",
- "3lift.com": "triplelift",
- "d3iwjrnl4m67rd.cloudfront.net": "triplelift",
- "triplelift.com": "triplelift",
- "static.triptease.io": "triptease",
- "andomedia.com": "triton_digital",
- "tritondigital.com": "triton_digital",
- "revelations.trovus.co.uk": "trovus_revelations",
- "trsv3.com": "trsv3.com",
- "truefitcorp.com": "true_fit",
- "tru.am": "trueanthem",
- "adlegend.com": "trueffect",
- "addoer.com": "truehits.net",
- "truehits.in.th": "truehits.net",
- "truehits.net": "truehits.net",
- "trumba.com": "trumba",
- "truoptik.com": "truoptik",
- "trustarc.com": "trustarc",
- "truste.com": "trustarc",
- "consent.truste.com": "truste_consent",
- "choices-or.truste.com": "truste_notice",
- "choices.truste.com": "truste_notice",
- "privacy-policy.truste.com": "truste_seal",
- "trustedshops.com": "trusted_shops",
- "trustev.com": "trustev",
- "secure.comodo.net": "trustlogo",
- "trustlogo.com": "trustlogo",
- "usertrust.com": "trustlogo",
- "trustpilot.com": "trustpilot",
- "trustwave.com": "trustwave.com",
- "tubecorporate.com": "tubecorporate",
- "tubecup.org": "tubecup.org",
- "tubemogul.com": "tubemogul",
- "sre-perim.com": "tumblr_analytics",
- "txmblr.com": "tumblr_analytics",
- "platform.tumblr.com": "tumblr_buttons",
- "lib.tunein.com": "tune_in",
- "adagio.turboadv.com": "turbo",
- "turn.com": "turn_inc.",
- "ngtv.io": "turner",
- "turner.com": "turner",
- "warnermedia.com": "turner",
- "turnsocial.com": "turnsocial",
- "turnto.com": "turnto",
- "tvsquared.com": "tvsquared.com",
- "tweetboard.com": "tweetboard",
- "tweetmeme.com": "tweetmeme",
- "c4tw.net": "twenga",
- "twiago.com": "twiago",
- "twinedigital.go2cloud.org": "twine",
- "ext-twitch.tv": "twitch.tv",
- "twitch.tv": "twitch.tv",
- "jtvnw.net": "twitch_cdn",
- "ttvnw.net": "twitch_cdn",
- "twitchcdn.net": "twitch_cdn",
- "twitchsvc.net": "twitch_cdn",
- "t.co": "twitter",
- "twimg.com": "twitter",
- "twitter.com": "twitter",
- "twttr.com": "twitter",
- "x.com": "twitter",
- "ads-twitter.com": "twitter_ads",
- "analytics.twitter.com": "twitter_analytics",
- "tellapart.com": "twitter_for_business",
- "syndication.twitter.com": "twitter_syndication",
- "twittercounter.com": "twittercounter",
- "twyn.com": "twyn",
- "txxx.com": "txxx.com",
- "tynt.com": "tynt",
- "typeform.com": "typeform",
- "typepad.com": "typepad_stats",
- "typography.com": "typography.com",
- "tyroodirect.com": "tyroo",
- "tyroodr.com": "tyroo",
- "tzetze.it": "tzetze",
- "ubersetzung-app.com": "ubersetzung-app.com",
- "ubuntu.com": "ubuntu",
- "ubuntucompanyservices.co.za": "ubuntu",
- "aralego.net": "ucfunnel",
- "ucfunnel.com": "ucfunnel",
- "at.ua": "ucoz",
- "do.am": "ucoz",
- "ucoz.net": "ucoz",
- "ad-api-v01.uliza.jp": "uliza",
- "api.umbel.com": "umbel",
- "umebiggestern.club": "umebiggestern.club",
- "unanimis.co.uk": "unanimis",
- "d3pkntwtp2ukl5.cloudfront.net": "unbounce",
- "t.unbounce.com": "unbounce",
- "d21gpk1vhmjuf5.cloudfront.net": "unbxd",
- "tracker.unbxdapi.com": "unbxd",
- "under-box.com": "under-box.com",
- "undercomputer.com": "undercomputer.com",
- "udmserve.net": "underdog_media",
- "undertone.com": "undertone",
- "roitesting.com": "unica",
- "unica.com": "unica",
- "unister-adservices.com": "unister",
- "unister-gmbh.de": "unister",
- "uadx.com": "unite",
- "nonstoppartner.net": "united_digital_group",
- "tifbs.net": "united_internet_media_gmbh",
- "ui-portal.de": "united_internet_media_gmbh",
- "uimserv.net": "united_internet_media_gmbh",
- "unity.com": "unity",
- "unity3d.com": "unity",
- "unity3dusercontent.com": "unity",
- "unityads.unity3d.com": "unity_ads",
- "univide.com": "univide",
- "unpkg.com": "unpkg.com",
- "unrulymedia.com": "unruly_media",
- "src.kitcode.net": "untriel_finger_printing",
- "s.clickability.com": "upland_clickability_beacon",
- "uppr.de": "uppr.de",
- "upravel.com": "upravel.com",
- "upsellit.com": "upsellit",
- "kontagent.net": "upsight",
- "app.uptain.de": "uptain",
- "uptolike.com": "uptolike.com",
- "uptrends.com": "uptrends",
- "urban-media.com": "urban-media.com",
- "urbanairship.com": "urban_airship",
- "mobile.usabilitytools.com": "usability_tools",
- "usabilla.com": "usabilla",
- "usemax.de": "usemax",
- "usemaxserver.de": "usemax",
- "usemessages.com": "usemessages.com",
- "api.usercycle.com": "usercycle",
- "userdive.com": "userdive",
- "userecho.com": "userecho",
- "dq4irj27fs462.cloudfront.net": "userlike.com",
- "userlike-cdn-widgets.s3-eu-west-1.amazonaws.com": "userlike.com",
- "userlike.com": "userlike.com",
- "contactusplus.com": "userpulse",
- "user-pulse.appspot.com": "userpulse",
- "userpulse.com": "userpulse",
- "userreplay.net": "userreplay",
- "sdsbucket.s3.amazonaws.com": "userreport",
- "userreport.com": "userreport",
- "dtkm4pd19nw6z.cloudfront.net": "userrules",
- "api.usersnap.com": "usersnap",
- "d3mvnvhjmkxpjz.cloudfront.net": "usersnap",
- "uservoice.com": "uservoice",
- "userzoom.com": "userzoom.com",
- "usocial.pro": "usocial",
- "utarget.ru": "utarget",
- "uuidksinc.net": "uuidksinc.net",
- "v12group.com": "v12_group",
- "vacaneedasap.com": "vacaneedasap.com",
- "ads.brand.net": "valassis",
- "vdrn.redplum.com": "valassis",
- "api.searchlinks.com": "validclick",
- "js.searchlinks.com": "validclick",
- "vinsight.de": "valiton",
- "valueclick.net": "valueclick_media",
- "valuecommerce.com": "valuecommerce",
- "valuedopinions.co.uk": "valued_opinions",
- "buzzparadise.com": "vanksen",
- "vmmpxl.com": "varick_media_management",
- "vcita.com": "vcita",
- "tracking.vcommission.com": "vcommission",
- "vdopia.com": "vdopia",
- "veinteractive.com": "ve_interactive",
- "vee24.com": "vee24",
- "velocecdn.com": "velocecdn.com",
- "mdcn.mobi": "velti_mgage_visualize",
- "velti.com": "velti_mgage_visualize",
- "vendemore.com": "vendemore",
- "venturead.com": "venturead.com",
- "api.venyoo.ru": "venyoo",
- "veoxa.com": "veoxa",
- "vergic.com": "vergic.com",
- "d3qxef4rp70elm.cloudfront.net": "vero",
- "getvero.com": "vero",
- "verticalacuity.com": "vertical_acuity",
- "roi.vertical-leap.co.uk": "vertical_leap",
- "cts.vresp.com": "verticalresponse",
- "verticalscope.com": "verticalscope",
- "ads.vertoz.com": "vertoz",
- "banner.vrtzads.com": "vertoz",
- "veruta.com": "veruta",
- "vrvm.com": "verve_mobile",
- "vgwort.de": "vg_wort",
- "digitaltarget.ru": "vi",
- "btg.mtvnservices.com": "viacom_tag_container",
- "viafoura.com": "viafoura",
- "viafoura.net": "viafoura",
- "intellitxt.com": "vibrant_ads",
- "vicomi.com": "vicomi.com",
- "vidazoo.com": "vidazoo.com",
- "module-videodesk.com": "video_desk",
- "vidtok.ru": "video_potok",
- "videoadex.com": "videoadex.com",
- "tidaltv.com": "videology",
- "videonow.ru": "videonow",
- "videoplayerhub.com": "videoplayerhub.com",
- "videoplaza.tv": "videoplaza",
- "kweb.videostep.com": "videostep",
- "content.vidgyor.com": "vidgyor",
- "vidible.tv": "vidible",
- "assets.vidora.com": "vidora",
- "vietad.vn": "vietad",
- "viglink.com": "viglink",
- "vigo.one": "vigo",
- "vigo.ru": "vigo",
- "vimeo.com": "vimeo",
- "vimeocdn.com": "vimeo",
- "vindicosuite.com": "vindico_group",
- "vinted.net": "vinted",
- "viraladnetwork.net": "viral_ad_network",
- "app.viral-loops.com": "viral_loops",
- "viralgains.com": "viralgains",
- "viralmint.com": "viralmint",
- "virgul.com": "virgul",
- "ssp.virool.com": "virool_player",
- "virtusize.com": "virtusize",
- "viewablemedia.net": "visible_measures",
- "visiblemeasures.com": "visible_measures",
- "visioncriticalpanels.com": "vision_critical",
- "visitstreamer.com": "visit_streamer",
- "visitortracklog.com": "visitortrack",
- "visitorville.com": "visitorville",
- "d2hkbi3gan6yg6.cloudfront.net": "visscore",
- "myvisualiq.net": "visual_iq",
- "visualrevenue.com": "visual_revenue",
- "d5phz18u4wuww.cloudfront.net": "visual_website_optimizer",
- "visualwebsiteoptimizer.com": "visual_website_optimizer",
- "wingify.com": "visual_website_optimizer",
- "vdna-assets.com": "visualdna",
- "visualdna.com": "visualdna",
- "visualstudio.com": "visualstudio.com",
- "id-visitors.com": "visualvisitor",
- "vi-tag.net": "vivalu",
- "vivistats.com": "vivistats",
- "vizury.com": "vizury",
- "vizzit.se": "vizzit",
- "cdn-vk.com": "vk.com",
- "vk-analytics.com": "vk.com",
- "vkuservideo.net": "vk.com",
- "userapi.com": "vkontakte",
- "vk.com": "vkontakte",
- "vkontakte.ru": "vkontakte",
- "vntsm.com": "vntsm.com",
- "vodafone.de": "vodafone.de",
- "voicefive.com": "voicefive",
- "volusion.com": "volusion_chat",
- "cwkuki.com": "voluum",
- "volumtrk.com": "voluum",
- "voluumtrk3.com": "voluum",
- "vooxe.com": "vooxe.com",
- "vorwerk.de": "vorwerk.de",
- "vox-cdn.com": "vox",
- "embed.voxus.tv": "voxus",
- "voxus-targeting-voxusmidia.netdna-ssl.com": "voxus",
- "c-dsp.vpadn.com": "vpon",
- "tools.vpscash.nl": "vpscash",
- "vsassets.io": "vs",
- "exp-tas.com": "vscode",
- "v0cdn.net": "vscode",
- "vscode-cdn.net": "vscode",
- "vscode-unpkg.net": "vscode",
- "vtracy.de": "vtracy.de",
- "liftoff.io": "vungle",
- "vungle.com": "vungle",
- "vuukle.com": "vuukle",
- "view.vzaar.com": "vzaar",
- "w3counter.com": "w3counter",
- "w3roi.com": "w3roi",
- "contentwidgets.net": "wahoha",
- "wahoha.com": "wahoha",
- "walkme.com": "walkme.com",
- "wsod.com": "wall_street_on_demand",
- "walmart.com": "walmart",
- "wamcash.com": "wamcash",
- "cdn-saveit.wanelo.com": "wanelo",
- "static.warp.ly": "warp.ly",
- "way2traffic.com": "way2traffic",
- "wayfair.com": "wayfair_com",
- "wdr.de": "wdr.de",
- "web-stat.com": "web-stat",
- "web.de": "web.de",
- "webde.de": "web.de",
- "webstat.net": "web.stat",
- "ssl.webserviceaward.com": "web_service_award",
- "webtraxs.com": "web_traxs",
- "wipe.de": "web_wipe_analytics",
- "webads.nl": "webads",
- "tr.webantenna.info": "webantenna",
- "webclicks24.com": "webclicks24_com",
- "webclose.net": "webclose.net",
- "webcollage.net": "webcollage",
- "goutee.top": "webedia",
- "mediaathay.org.uk": "webedia",
- "wbdx.fr": "webedia",
- "webeffective.keynote.com": "webeffective",
- "widgets.webengage.com": "webengage",
- "webgains.com": "webgains",
- "webgozar.com": "webgozar",
- "webgozar.ir": "webgozar",
- "webhelpje.be": "webhelpje",
- "webhelpje.nl": "webhelpje",
- "webleads-tracker.com": "webleads_tracker",
- "automation.webmecanik.com": "webmecanik",
- "adrcdn.com": "weborama",
- "adrcntr.com": "weborama",
- "weborama.com": "weborama",
- "weborama.fr": "weborama",
- "webprospector.de": "webprospector",
- "webstat.com": "webstat",
- "webstat.se": "webstat.se",
- "stat.webtrack.biz": "webtrack",
- "webtraffic.no": "webtraffic",
- "webtraffic.se": "webtraffic",
- "d1r27qvpjiaqj3.cloudfront.net": "webtrekk",
- "mateti.net": "webtrekk",
- "wbtrk.net": "webtrekk",
- "wcfbc.net": "webtrekk",
- "webtrekk-asia.net": "webtrekk",
- "webtrekk.com": "webtrekk",
- "webtrekk.de": "webtrekk",
- "webtrekk.net": "webtrekk",
- "wt-eu02.net": "webtrekk",
- "wt-safetag.com": "webtrekk",
- "webtrends.com": "webtrends",
- "webtrendslive.com": "webtrends",
- "rd.clickshift.com": "webtrends_ads",
- "web-visor.com": "webvisor",
- "weebly.com": "weebly_ads",
- "widget.weibo.com": "weibo_widget",
- "westlotto.com": "westlotto_com",
- "wetter.com": "wetter_com",
- "wettercomassets.com": "wetter_com",
- "whatsbroadcast.com": "whatbroadcast",
- "whatsapp.com": "whatsapp",
- "whatsapp.net": "whatsapp",
- "whisper.onelink.me": "whisper",
- "whisper.sh": "whisper",
- "amung.us": "whos.amung.us",
- "whoson.com": "whoson",
- "api.wibbitz.com": "wibbitz",
- "cdn4.wibbitz.com": "wibbitz",
- "cdn.wibiya.com": "wibiya_toolbar",
- "predictad.com": "widdit",
- "widerplanet.com": "widerplanet",
- "widespace.com": "widespace",
- "widgetserver.com": "widgetbox",
- "3c45d848d99.se": "wiget_media",
- "wigetmedia.com": "wiget_media",
- "tracker.wigzopush.com": "wigzo",
- "wikia-services.com": "wikia-services.com",
- "wikia-beacon.com": "wikia_beacon",
- "nocookie.net": "wikia_cdn",
- "wikimedia.org": "wikimedia.org",
- "wikipedia.org": "wikimedia.org",
- "wikiquote.org": "wikimedia.org",
- "tracking.winaffiliates.com": "winaffiliates",
- "maps.windows.com": "windows_maps",
- "client.wns.windows.com": "windows_notifications",
- "time.windows.com": "windows_time",
- "windowsupdate.com": "windowsupdate",
- "api.wipmania.com": "wipmania",
- "col1.wiqhit.com": "wiqhit",
- "wirecard.com": "wirecard",
- "wirecard.de": "wirecard",
- "leadlab.click": "wiredminds",
- "wiredminds.com": "wiredminds",
- "wiredminds.de": "wiredminds",
- "adtotal.pl": "wirtualna_polska",
- "wisepops.com": "wisepops",
- "cdn.wishpond.net": "wishpond",
- "wistia.com": "wistia",
- "wistia.net": "wistia",
- "parastorage.com": "wix.com",
- "wix.com": "wix.com",
- "public.wixab-cloud.com": "wixab",
- "wixmp.com": "wixmp",
- "wnzmauurgol.com": "wnzmauurgol.com",
- "wonderpush.com": "wonderpush",
- "woopic.com": "woopic.com",
- "woopra.com": "woopra",
- "pubmine.com": "wordpress_ads",
- "w.org": "wordpress_stats",
- "wordpress.com": "wordpress_stats",
- "wp.com": "wordpress_stats",
- "tracker.wordstream.com": "wordstream",
- "worldnaturenet.xyz": "worldnaturenet_xyz",
- "wp.pl": "wp.pl",
- "wpimg.pl": "wp.pl",
- "wpengine.com": "wp_engine",
- "clickanalyzer.jp": "writeup_clickanalyzer",
- "wurfl.io": "wurfl",
- "wwwpromoter.com": "wwwpromoter",
- "imgwykop.pl": "wykop",
- "wykop.pl": "wykop",
- "wysistat.com": "wysistat.com",
- "wysistat.net": "wysistat.com",
- "wywy.com": "wywy.com",
- "wywyuserservice.com": "wywy.com",
- "cdn.x-lift.jp": "x-lift",
- "xapads.com": "xapads",
- "xen-media.com": "xen-media.com",
- "xfreeservice.com": "xfreeservice.com",
- "xhamster.com": "xhamster",
- "xhamsterlive.com": "xhamster",
- "xhamsterpremium.com": "xhamster",
- "xhcdn.com": "xhamster",
- "huami.com": "xiaomi",
- "mi-img.com": "xiaomi",
- "mi.com": "xiaomi",
- "miui.com": "xiaomi",
- "xiaomi.com": "xiaomi",
- "xiaomi.net": "xiaomi",
- "xiaomiyoupin.com": "xiaomi",
- "xing-share.com": "xing",
- "xing.com": "xing",
- "xmediaclicks.com": "xmediaclicks",
- "xnxx-cdn.com": "xnxx_cdn",
- "xplosion.de": "xplosion",
- "xtendmedia.com": "xtend",
- "xvideos-cdn.com": "xvideos_com",
- "xvideos.com": "xvideos_com",
- "xxxlshop.de": "xxxlshop.de",
- "xxxlutz.de": "xxxlutz",
- "adx.com.ru": "yabbi",
- "yabbi.me": "yabbi",
- "yabuka.com": "yabuka",
- "tumblr.com": "yahoo",
- "yahoo.com": "yahoo",
- "yahooapis.com": "yahoo",
- "yimg.com": "yahoo",
- "oath.cloud": "yahoo",
- "yahoo.net": "yahoo",
- "yahooinc.com": "yahoo",
- "yahoodns.net": "yahoo",
- "yads.yahoo.com": "yahoo_ad_exchange",
- "yieldmanager.com": "yahoo_ad_exchange",
- "pr-bh.ybp.yahoo.com": "yahoo_ad_manager",
- "ads.yahoo.com": "yahoo_advertising",
- "adtech.yahooinc.com": "yahoo_advertising",
- "analytics.yahoo.com": "yahoo_analytics",
- "np.lexity.com": "yahoo_commerce_central",
- "storage-yahoo.jp": "yahoo_japan_retargeting",
- "yahoo.co.jp": "yahoo_japan_retargeting",
- "yahooapis.jp": "yahoo_japan_retargeting",
- "yimg.jp": "yahoo_japan_retargeting",
- "yjtag.jp": "yahoo_japan_retargeting",
- "ov.yahoo.co.jp": "yahoo_overture",
- "overture.com": "yahoo_overture",
- "search.yahooinc.com": "yahoo_search",
- "luminate.com": "yahoo_small_business",
- "pixazza.com": "yahoo_small_business",
- "awaps.yandex.ru": "yandex",
- "d31j93rd8oukbv.cloudfront.net": "yandex",
- "webvisor.org": "yandex",
- "yandex.net": "yandex",
- "yandex.ru": "yandex",
- "yastatic.net": "yandex",
- "ya.ru": "yandex",
- "yandex.by": "yandex",
- "yandex.com": "yandex",
- "yandex.com.tr": "yandex",
- "yandex.fr": "yandex",
- "yandex.kz": "yandex",
- "yandex.st": "yandex.api",
- "yandexadexchange.net": "yandex_adexchange",
- "metabar.ru": "yandex_advisor",
- "appmetrica.yandex.com": "yandex_appmetrica",
- "an.webvisor.org": "yandex_direct",
- "an.yandex.ru": "yandex_direct",
- "bs.yandex.ru": "yandex_direct",
- "mc.yandex.ru": "yandex_metrika",
- "passport.yandex.ru": "yandex_passport",
- "yapfiles.ru": "yapfiles.ru",
- "yashi.com": "yashi",
- "ad.adserverplus.com": "ybrant_media",
- "player.sambaads.com": "ycontent",
- "cdn.yektanet.com": "yektanet",
- "fetch.yektanet.com": "yektanet",
- "yengo.com": "yengo",
- "yengointernational.com": "yengo",
- "link.p0.com": "yesmail",
- "adsrevenue.net": "yesup_advertising",
- "infinityads.com": "yesup_advertising",
- "momentsharing.com": "yesup_advertising",
- "multipops.com": "yesup_advertising",
- "onlineadultadvertising.com": "yesup_advertising",
- "paypopup.com": "yesup_advertising",
- "popupxxx.com": "yesup_advertising",
- "xtargeting.com": "yesup_advertising",
- "xxxwebtraffic.com": "yesup_advertising",
- "app.yesware.com": "yesware",
- "yldbt.com": "yieldbot",
- "yieldify.com": "yieldify",
- "yieldlab.net": "yieldlab",
- "yieldlove-ad-serving.net": "yieldlove",
- "yieldlove.com": "yieldlove",
- "yieldmo.com": "yieldmo",
- "254a.com": "yieldr",
- "collect.yldr.io": "yieldr_air",
- "yieldsquare.com": "yieldsquare",
- "analytics-sdk.yle.fi": "yle",
- "yllix.com": "yllixmedia",
- "ymetrica1.com": "ymetrica1.com",
- "ymzrrizntbhde.com": "ymzrrizntbhde.com",
- "yoapp.s3.amazonaws.com": "yo_button",
- "natpal.com": "yodle",
- "analytics.yola.net": "yola_analytics",
- "pixel.yola.net": "yola_analytics",
- "delivery.yomedia.vn": "yomedia",
- "yoochoose.net": "yoochoose.net",
- "yotpo.com": "yotpo",
- "yottaa.net": "yottaa",
- "yottlyscript.com": "yottly",
- "api.youcanbook.me": "youcanbookme",
- "youcanbook.me": "youcanbookme",
- "player.youku.com": "youku",
- "youporn.com": "youporn",
- "ypncdn.com": "youporn",
- "googlevideo.com": "youtube",
- "youtube-nocookie.com": "youtube",
- "youtube.com": "youtube",
- "ytimg.com": "youtube",
- "c.ypcdn.com": "yp",
- "i1.ypcdn.com": "yp",
- "yellowpages.com": "yp",
- "prod-js.aws.y-track.com": "ysance",
- "y-track.com": "ysance",
- "yume.com": "yume",
- "yumenetworks.com": "yume,_inc.",
- "gravityrd-services.com": "yusp",
- "api.zadarma.com": "zadarma",
- "zalan.do": "zalando_de",
- "zalando.de": "zalando_de",
- "ztat.net": "zalando_de",
- "zaloapp.com": "zalo",
- "zanox-affiliate.de": "zanox",
- "zanox.com": "zanox",
- "zanox.ws": "zanox",
- "zaparena.com": "zaparena",
- "zapunited.com": "zaparena",
- "track.zappos.com": "zappos",
- "zdassets.com": "zdassets.com",
- "zebestof.com": "zebestof.com",
- "zedo.com": "zedo",
- "zemanta.com": "zemanta",
- "zencdn.net": "zencoder",
- "zendesk.com": "zendesk",
- "zergnet.com": "zergnet",
- "zero.kz": "zero.kz",
- "app.insightgrit.com": "zeta",
- "app.ubertags.com": "zeta",
- "cdn.boomtrain.com": "zeta",
- "events.api.boomtrain.com": "zeta",
- "rfihub.com": "zeta",
- "rfihub.net": "zeta",
- "ru4.com": "zeta",
- "xplusone.com": "zeta",
- "zeusclicks.com": "zeusclicks",
- "webtest.net": "ziff_davis",
- "zdbb.net": "ziff_davis",
- "ziffdavis.com": "ziff_davis",
- "ziffdavisinternational.com": "ziff_davis",
- "ziffprod.com": "ziff_davis",
- "ziffstatic.com": "ziff_davis",
- "analytics.ziftsolutions.com": "zift_solutions",
- "zimbio.com": "zimbio.com",
- "api.zippyshare.com": "zippyshare_widget",
- "zmags.com": "zmags",
- "zmctrack.net": "zmctrack.net",
- "zog.link": "zog.link",
- "js.zohostatic.eu": "zoho",
- "zononi.com": "zononi.com",
- "zopim.com": "zopim",
- "zukxd6fkxqn.com": "zukxd6fkxqn.com",
- "zwaar.net": "zwaar",
- "zwaar.org": "zwaar",
- "extend.tv": "zypmedia"
- }
-}
diff --git a/staticbak/static/index.html b/staticbak/static/index.html
deleted file mode 100644
index 0f7ec8d..0000000
--- a/staticbak/static/index.html
+++ /dev/null
@@ -1,1181 +0,0 @@
-
-
-
-
-
- DNS服务器控制台
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
仪表盘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 成功: 0
-
-
-
- 失败: 0
-
-
-
- 总查询: 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
DNS请求趋势
-
-
-
-
-
-
-
-
-
-
-
-
-
-
DNS请求趋势详细图表
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
客户端排行
-
-
- 加载中...
-
-
-
- 加载失败
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
自定义规则管理
-
-
-
-
-
-
-
-
-
- | 规则 |
- 状态 |
- 操作 |
-
-
-
-
- | 暂无规则 |
-
-
-
-
-
-
-
-
-
远程黑名单管理
-
-
-
-
-
-
-
-
-
- | 名称 |
- URL |
- 状态 |
- |
- 操作 |
-
-
-
-
- | 暂无黑名单 |
-
-
-
-
-
-
-
-
-
-
-
-
-
Hosts条目管理
-
-
-
-
-
-
-
-
-
- | IP地址 |
- 域名 |
- 操作 |
-
-
-
-
- | 暂无Hosts条目 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
查询历史
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
查询趋势
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
查询日志详情
-
-
-
-
- 加载中...
-
-
-
-
-
-
- |
-
- 时间
-
-
- |
-
-
- 客户端IP
-
-
- |
-
-
- 请求
-
-
- |
- 响应时间 |
- 操作 |
-
-
-
-
- |
-
- 暂无查询日志
- |
-
-
-
-
-
-
-
-
- 显示 1 / 1 页
-
-
-
- 每页显示:
-
-
-
- 页码:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/staticbak/static/js/api.js b/staticbak/static/js/api.js
deleted file mode 100644
index d8f5bbd..0000000
--- a/staticbak/static/js/api.js
+++ /dev/null
@@ -1,305 +0,0 @@
-// API模块 - 统一管理所有API调用
-
-// API路径定义
-const API_BASE_URL = '/api';
-
-// API请求封装
-async function apiRequest(endpoint, method = 'GET', data = null) {
- const url = `${API_BASE_URL}${endpoint}`;
- const options = {
- method,
- headers: {
- 'Content-Type': 'application/json',
- 'Cache-Control': 'no-store, no-cache, must-revalidate, max-age=0',
- 'Pragma': 'no-cache',
- },
- credentials: 'same-origin',
- };
-
- if (data) {
- options.body = JSON.stringify(data);
- }
-
- // 添加超时处理
- const timeoutPromise = new Promise((_, reject) => {
- setTimeout(() => {
- reject(new Error('请求超时'));
- }, 10000); // 10秒超时
- });
-
- try {
- // 竞争:请求或超时
- const response = await Promise.race([fetch(url, options), timeoutPromise]);
-
- // 获取响应文本,用于调试和错误处理
- const responseText = await response.text();
-
- if (!response.ok) {
- // 优化错误响应处理
- console.warn(`API请求失败: ${response.status}`);
-
- // 处理401未授权错误,重定向到登录页面
- if (response.status === 401) {
- console.warn('未授权访问,重定向到登录页面');
- window.location.href = '/login';
- return { error: '未授权访问' };
- }
-
- // 尝试解析JSON,但如果失败,直接使用原始文本作为错误信息
- try {
- const errorData = JSON.parse(responseText);
- return { error: errorData.error || responseText || `请求失败: ${response.status}` };
- } catch (parseError) {
- // 当响应不是有效的JSON时(如中文错误信息),直接使用原始文本
- console.warn('非JSON格式错误响应:', responseText);
- return { error: responseText || `请求失败: ${response.status}` };
- }
- }
-
- // 尝试解析成功响应
- try {
- // 首先检查响应文本是否为空
- if (!responseText || responseText.trim() === '') {
- console.warn('空响应文本');
- return null; // 返回null表示空响应
- }
-
- // 尝试解析JSON
- const parsedData = JSON.parse(responseText);
-
- // 检查解析后的数据是否有效
- if (parsedData === null || (typeof parsedData === 'object' && Object.keys(parsedData).length === 0)) {
- console.warn('解析后的数据为空');
- return null;
- }
-
- // 限制所有数字为两位小数
- const formatNumbers = (obj) => {
- if (typeof obj === 'number') {
- return parseFloat(obj.toFixed(2));
- } else if (Array.isArray(obj)) {
- return obj.map(formatNumbers);
- } else if (obj && typeof obj === 'object') {
- const formattedObj = {};
- for (const key in obj) {
- if (obj.hasOwnProperty(key)) {
- formattedObj[key] = formatNumbers(obj[key]);
- }
- }
- return formattedObj;
- }
- return obj;
- };
-
- const formattedData = formatNumbers(parsedData);
- return formattedData;
- } catch (parseError) {
- // 详细记录错误信息和响应内容
- console.error('JSON解析错误:', parseError);
- console.error('原始响应文本:', responseText);
- console.error('响应长度:', responseText.length);
- console.error('响应前100字符:', responseText.substring(0, 100));
-
- // 如果是位置66附近的错误,特别标记
- if (parseError.message.includes('position 66')) {
- console.error('位置66附近的字符:', responseText.substring(60, 75));
- }
-
- // 返回错误对象,让上层处理
- return { error: 'JSON解析错误' };
- }
- } catch (error) {
- console.error('API请求错误:', error);
- // 返回错误对象,而不是抛出异常,让上层处理
- return { error: error.message };
- }
-}
-
-// API方法集合
-const api = {
- // 获取统计信息
- getStats: () => apiRequest('/stats?t=' + Date.now()),
-
- // 获取系统状态
- getStatus: () => apiRequest('/status?t=' + Date.now()),
-
- // 获取Top屏蔽域名
- getTopBlockedDomains: () => apiRequest('/top-blocked?t=' + Date.now()),
-
- // 获取Top解析域名
- getTopResolvedDomains: () => apiRequest('/top-resolved?t=' + Date.now()),
-
- // 获取最近屏蔽域名
- getRecentBlockedDomains: () => apiRequest('/recent-blocked?t=' + Date.now()),
-
- // 获取TOP客户端
- getTopClients: () => apiRequest('/top-clients?t=' + Date.now()),
-
- // 获取TOP域名
- getTopDomains: () => apiRequest('/top-domains?t=' + Date.now()),
-
- // 获取小时统计
- getHourlyStats: () => apiRequest('/hourly-stats?t=' + Date.now()),
-
- // 获取每日统计数据(7天)
- getDailyStats: () => apiRequest('/daily-stats?t=' + Date.now()),
-
- // 获取每月统计数据(30天)
- getMonthlyStats: () => apiRequest('/monthly-stats?t=' + Date.now()),
-
- // 获取查询类型统计
- getQueryTypeStats: () => apiRequest('/query/type?t=' + Date.now()),
-
- // 获取屏蔽规则 - 已禁用
- getShieldRules: () => {
- console.log('屏蔽规则功能已禁用');
- return Promise.resolve({}); // 返回空对象而非API调用
- },
-
- // 添加屏蔽规则 - 已禁用
- addShieldRule: (rule) => {
- console.log('屏蔽规则功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 删除屏蔽规则 - 已禁用
- deleteShieldRule: (rule) => {
- console.log('屏蔽规则功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 更新远程规则 - 已禁用
- updateRemoteRules: () => {
- console.log('屏蔽规则功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 获取黑名单列表 - 已禁用
- getBlacklists: () => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve([]); // 返回空数组而非API调用
- },
-
- // 添加黑名单 - 已禁用
- addBlacklist: (url) => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 删除黑名单 - 已禁用
- deleteBlacklist: (url) => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 获取Hosts内容 - 已禁用
- getHosts: () => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ content: '' }); // 返回空内容而非API调用
- },
-
- // 保存Hosts内容 - 已禁用
- saveHosts: (content) => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 刷新Hosts - 已禁用
- refreshHosts: () => {
- console.log('屏蔽规则相关功能已禁用');
- return Promise.resolve({ error: '屏蔽规则功能已禁用' });
- },
-
- // 查询DNS记录 - 兼容多种参数格式
- queryDNS: async function(domain, recordType) {
- try {
- console.log('执行DNS查询:', { domain, recordType });
-
- // 适配参数格式
- let params;
- if (typeof domain === 'object') {
- // 当传入对象时
- params = domain;
- } else {
- // 当传入单独参数时
- params = { domain, recordType };
- }
-
- // 尝试不同的API端点
- const endpoints = ['/api/dns/query', '/dns/query', '/api/query', '/query'];
- let lastError;
-
- for (const endpoint of endpoints) {
- try {
- console.log(`尝试API端点: ${endpoint}`);
- const response = await fetch(endpoint, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(params)
- });
-
- if (response.ok) {
- const data = await response.json();
- console.log('DNS查询成功:', data);
- return data;
- } else {
- lastError = new Error(`HTTP error! status: ${response.status} for endpoint: ${endpoint}`);
- }
- } catch (error) {
- lastError = error;
- console.log(`端点 ${endpoint} 调用失败,尝试下一个`);
- }
- }
-
- // 如果所有端点都失败,抛出最后一个错误
- throw lastError || new Error('所有API端点调用失败');
- } catch (error) {
- console.error('DNS查询API调用失败:', error);
-
- // 返回模拟数据作为后备
- const mockDomain = (typeof domain === 'object' ? domain.domain : domain) || 'example.com';
- const mockType = (typeof domain === 'object' ? domain.recordType : recordType) || 'A';
-
- const mockData = {
- 'A': [
- { Type: 'A', Value: '93.184.216.34', TTL: 172800 },
- { Type: 'A', Value: '93.184.216.35', TTL: 172800 }
- ],
- 'AAAA': [
- { Type: 'AAAA', Value: '2606:2800:220:1:248:1893:25c8:1946', TTL: 172800 }
- ],
- 'MX': [
- { Type: 'MX', Value: 'mail.' + mockDomain, Preference: 10, TTL: 3600 },
- { Type: 'MX', Value: 'mail2.' + mockDomain, Preference: 20, TTL: 3600 }
- ],
- 'NS': [
- { Type: 'NS', Value: 'ns1.' + mockDomain, TTL: 86400 },
- { Type: 'NS', Value: 'ns2.' + mockDomain, TTL: 86400 }
- ],
- 'CNAME': [
- { Type: 'CNAME', Value: 'origin.' + mockDomain, TTL: 300 }
- ],
- 'TXT': [
- { Type: 'TXT', Value: 'v=spf1 include:_spf.' + mockDomain + ' ~all', TTL: 3600 }
- ]
- };
-
- console.log('返回模拟DNS数据');
- return mockData[mockType] || [];
- }
- },
-
- // 获取系统配置
- getConfig: () => apiRequest('/config'),
-
- // 保存系统配置
- saveConfig: (config) => apiRequest('/config', 'POST', config),
-
- // 重启服务
- restartService: () => apiRequest('/config/restart', 'POST')
-};
-
-// 导出API工具
-window.api = api;
\ No newline at end of file
diff --git a/staticbak/static/js/app.js b/staticbak/static/js/app.js
deleted file mode 100644
index c193813..0000000
--- a/staticbak/static/js/app.js
+++ /dev/null
@@ -1,317 +0,0 @@
-// 全局配置
-const API_BASE_URL = '.';
-
-// DOM 加载完成后执行
-document.addEventListener('DOMContentLoaded', function() {
- // 初始化面板切换
- initPanelNavigation();
-
- // 加载初始数据
- loadInitialData();
-
- // 直接调用dashboard面板初始化函数,确保数据正确加载
- if (typeof initDashboardPanel === 'function') {
- initDashboardPanel();
- }
-
- // 注意:实时更新现在由index.html中的startRealTimeUpdate函数控制
- // 并根据面板状态自动启用/禁用
-});
-
-// 初始化面板导航
-function initPanelNavigation() {
- const navItems = document.querySelectorAll('.nav-item');
- const panels = document.querySelectorAll('.panel');
-
- navItems.forEach(item => {
- item.addEventListener('click', function() {
- // 移除所有活动类
- navItems.forEach(nav => nav.classList.remove('active'));
- panels.forEach(panel => panel.classList.remove('active'));
-
- // 添加当前活动类
- this.classList.add('active');
- const target = this.getAttribute('data-target');
- document.getElementById(target).classList.add('active');
-
- // 面板激活时执行相应的初始化函数
- if (window[`init${target.charAt(0).toUpperCase() + target.slice(1)}Panel`]) {
- window[`init${target.charAt(0).toUpperCase() + target.slice(1)}Panel`]();
- }
- });
- });
-}
-
-// 保留原有的通知函数作为兼容层
-// 现在主通知功能由index.html中的showNotification函数实现
-if (typeof window.showNotification === 'undefined') {
- window.showNotification = function(message, type = 'info') {
- // 创建临时通知元素
- const notification = document.createElement('div');
- notification.className = `notification notification-${type} show`;
- notification.innerHTML = `
- ${message}
- `;
- notification.style.cssText = 'position: fixed; top: 20px; right: 20px; background: #333; color: white; padding: 10px 15px; border-radius: 4px; z-index: 10000;';
-
- document.body.appendChild(notification);
-
- setTimeout(() => {
- notification.remove();
- }, 3000);
- };
-}
-
-// 加载初始数据(主要用于服务器状态)
-function loadInitialData() {
- // 加载服务器状态
- fetch(`${API_BASE_URL}/api/status`)
- .then(response => response.json())
- .then(data => {
- // 更新服务器状态指示器
- const statusDot = document.querySelector('.status-dot');
- const serverStatus = document.getElementById('server-status');
-
- if (data && data.status === 'running') {
- statusDot.classList.add('connected');
- serverStatus.textContent = '运行中';
- } else {
- statusDot.classList.remove('connected');
- serverStatus.textContent = '离线';
- }
- })
- .catch(error => {
- console.error('获取服务器状态失败:', error);
-
- // 更新状态为离线
- const statusDot = document.querySelector('.status-dot');
- const serverStatus = document.getElementById('server-status');
- statusDot.classList.remove('connected');
- serverStatus.textContent = '离线';
-
- // 使用新的通知功能
- if (typeof window.showNotification === 'function') {
- window.showNotification('获取服务器状态失败', 'danger');
- }
- });
-
- // 注意:统计数据更新现在由dashboard.js中的updateStatCards函数处理
-}
-
-// 注意:统计卡片数据更新现在由dashboard.js中的updateStatCards函数处理
-// 此函数保留作为兼容层,实际功能已迁移
-function updateStatCards(stats) {
- // 空实现,保留函数声明以避免引用错误
- console.log('更新统计卡片 - 此功能现在由dashboard.js处理');
-}
-
-// 注意:获取规则数量功能现在由dashboard.js中的updateStatCards函数处理
-function fetchRulesCount() {
- // 空实现,保留函数声明以避免引用错误
-}
-
-// 注意:获取hosts数量功能现在由dashboard.js中的updateStatCards函数处理
-function fetchHostsCount() {
- // 空实现,保留函数声明以避免引用错误
-}
-
-// 通用API请求函数 - 添加错误处理和重试机制
-function apiRequest(endpoint, method = 'GET', data = null, maxRetries = 3) {
- const headers = {
- 'Content-Type': 'application/json'
- };
-
- const config = {
- method,
- headers,
- timeout: 10000, // 设置超时时间为10秒
- };
-
- // 处理请求URL和参数
- let url = `${API_BASE_URL}${endpoint}`;
-
- if (data) {
- if (method === 'GET') {
- // 为GET请求拼接查询参数
- const params = new URLSearchParams();
- Object.keys(data).forEach(key => {
- params.append(key, data[key]);
- });
- url += `?${params.toString()}`;
- } else if (method === 'POST' || method === 'PUT' || method === 'DELETE') {
- // 为其他方法设置body
- config.body = JSON.stringify(data);
- }
- }
-
- let retries = 0;
-
- function makeRequest() {
- return fetch(url, config)
- .then(response => {
- if (!response.ok) {
- throw new Error(`HTTP error! status: ${response.status}`);
- }
-
- // 检查响应是否完整
- const contentType = response.headers.get('content-type');
- if (contentType && contentType.includes('application/json')) {
- // 使用.text()先获取响应文本,处理可能的JSON解析错误
- return response.text().then(text => {
- try {
- return JSON.parse(text);
- } catch (e) {
- console.error('JSON解析错误:', e, '响应文本:', text);
- // 针对ERR_INCOMPLETE_CHUNKED_ENCODING错误进行重试
- if (retries < maxRetries) {
- retries++;
- console.warn(`请求失败,正在进行第${retries}次重试...`);
- return new Promise(resolve => setTimeout(() => resolve(makeRequest()), 1000 * retries));
- }
- throw new Error('JSON解析失败且重试次数已达上限');
- }
- });
- }
- return response.json();
- })
- .catch(error => {
- console.error('API请求错误:', error);
-
- // 检查是否为网络错误或ERR_INCOMPLETE_CHUNKED_ENCODING相关错误
- if ((error.name === 'TypeError' && error.message.includes('Failed to fetch')) ||
- error.message.includes('incomplete chunked encoding')) {
-
- if (retries < maxRetries) {
- retries++;
- console.warn(`网络错误,正在进行第${retries}次重试...`);
- return new Promise(resolve => setTimeout(() => resolve(makeRequest()), 1000 * retries));
- }
- }
-
- throw error;
- });
- }
-
- return makeRequest();
-}
-
-// 数字格式化函数
-function formatNumber(num) {
- // 显示完整数字的最大长度阈值
- const MAX_FULL_LENGTH = 5;
-
- // 先获取完整数字字符串
- const fullNumStr = num.toString();
-
- // 如果数字长度小于等于阈值,直接返回完整数字
- if (fullNumStr.length <= MAX_FULL_LENGTH) {
- return fullNumStr;
- }
-
- // 否则使用缩写格式
- if (num >= 1000000) {
- return (num / 1000000).toFixed(1) + 'M';
- } else if (num >= 1000) {
- return (num / 1000).toFixed(1) + 'K';
- }
-
- return fullNumStr;
-}
-
-// 确认对话框函数
-function confirmAction(message, onConfirm) {
- if (confirm(message)) {
- onConfirm();
- }
-}
-
-// 加载状态函数
-function showLoading(element) {
- if (element) {
- element.innerHTML = '加载中... | ';
- }
-}
-
-// 错误状态函数
-function showError(element, message) {
- if (element) {
- element.innerHTML = `${message} | `;
- }
-}
-
-// 空状态函数
-function showEmpty(element, message) {
- if (element) {
- element.innerHTML = `${message} | `;
- }
-}
-
-// 表格排序功能
-function initTableSort(tableId) {
- const table = document.getElementById(tableId);
- if (!table) return;
-
- const headers = table.querySelectorAll('thead th');
- headers.forEach(header => {
- header.addEventListener('click', function() {
- const columnIndex = Array.from(headers).indexOf(this);
- const isAscending = this.getAttribute('data-sort') !== 'asc';
-
- // 重置所有标题
- headers.forEach(h => h.setAttribute('data-sort', ''));
- this.setAttribute('data-sort', isAscending ? 'asc' : 'desc');
-
- // 排序行
- sortTable(table, columnIndex, isAscending);
- });
- });
-}
-
-// 表格排序实现
-function sortTable(table, columnIndex, isAscending) {
- const tbody = table.querySelector('tbody');
- const rows = Array.from(tbody.querySelectorAll('tr'));
-
- // 排序行
- rows.sort((a, b) => {
- const aValue = a.cells[columnIndex].textContent.trim();
- const bValue = b.cells[columnIndex].textContent.trim();
-
- // 尝试数字排序
- const aNum = parseFloat(aValue);
- const bNum = parseFloat(bValue);
-
- if (!isNaN(aNum) && !isNaN(bNum)) {
- return isAscending ? aNum - bNum : bNum - aNum;
- }
-
- // 字符串排序
- return isAscending
- ? aValue.localeCompare(bValue)
- : bValue.localeCompare(aValue);
- });
-
- // 重新添加行
- rows.forEach(row => tbody.appendChild(row));
-}
-
-// 搜索过滤功能
-function initSearchFilter(inputId, tableId, columnIndex) {
- const input = document.getElementById(inputId);
- const table = document.getElementById(tableId);
-
- if (!input || !table) return;
-
- input.addEventListener('input', function() {
- const filter = this.value.toLowerCase();
- const rows = table.querySelectorAll('tbody tr');
-
- rows.forEach(row => {
- const cell = row.cells[columnIndex];
- if (cell) {
- const text = cell.textContent.toLowerCase();
- row.style.display = text.includes(filter) ? '' : 'none';
- }
- });
- });
-}
\ No newline at end of file
diff --git a/staticbak/static/js/colors.config.js b/staticbak/static/js/colors.config.js
deleted file mode 100644
index c755d91..0000000
--- a/staticbak/static/js/colors.config.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// 颜色配置文件 - 集中管理所有UI颜色配置
-
-// 主颜色配置对象
-const COLOR_CONFIG = {
- // 主色调
- primary: '#1890ff',
- success: '#52c41a',
- warning: '#fa8c16',
- error: '#f5222d',
- purple: '#722ed1',
- cyan: '#13c2c2',
- teal: '#36cfc9',
-
- // 统计卡片颜色配置
- statCardColors: [
- '#1890ff', // blue
- '#52c41a', // green
- '#fa8c16', // orange
- '#f5222d', // red
- '#722ed1', // purple
- '#13c2c2' // cyan
- ],
-
- // 颜色代码到CSS类的映射
- colorClassMap: {
- '#1890ff': 'blue',
- '#52c41a': 'green',
- '#fa8c16': 'orange',
- '#f5222d': 'red',
- '#722ed1': 'purple',
- '#13c2c2': 'cyan',
- '#36cfc9': 'teal'
- },
-
- // 获取颜色对应的CSS类名
- getColorClassName: function(colorCode) {
- return this.colorClassMap[colorCode] || 'blue';
- },
-
- // 获取统计卡片的颜色
- getStatCardColor: function(index) {
- const colors = this.statCardColors;
- return colors[index % colors.length];
- }
-};
-
-// 导出配置对象
-if (typeof module !== 'undefined' && module.exports) {
- module.exports = COLOR_CONFIG;
-} else {
- // 浏览器环境
- window.COLOR_CONFIG = COLOR_CONFIG;
-}
\ No newline at end of file
diff --git a/staticbak/static/js/config.js b/staticbak/static/js/config.js
deleted file mode 100644
index 020da0f..0000000
--- a/staticbak/static/js/config.js
+++ /dev/null
@@ -1,296 +0,0 @@
-// 配置管理页面功能实现
-
-// 工具函数:安全获取DOM元素
-function getElement(id) {
- const element = document.getElementById(id);
- if (!element) {
- console.warn(`Element with id "${id}" not found`);
- }
- return element;
-}
-
-// 工具函数:验证端口号
-function validatePort(port) {
- // 确保port是字符串类型
- var portStr = port;
- if (port === null || port === undefined || typeof port !== 'string') {
- return null;
- }
-
- // 去除前后空白并验证是否为纯数字
- portStr = port.trim();
- if (!/^\d+$/.test(portStr)) {
- return null;
- }
-
- const num = parseInt(portStr, 10);
- return num >= 1 && num <= 65535 ? num : null;
-}
-
-// 初始化配置管理页面
-function initConfigPage() {
- loadConfig();
- setupConfigEventListeners();
-}
-
-// 加载系统配置
-async function loadConfig() {
- try {
- const result = await api.getConfig();
-
- // 检查API返回的错误
- if (result && result.error) {
- showErrorMessage('加载配置失败: ' + result.error);
- return;
- }
-
- populateConfigForm(result);
- } catch (error) {
- // 捕获可能的异常(虽然apiRequest不应该再抛出异常)
- showErrorMessage('加载配置失败: ' + (error.message || '未知错误'));
- }
-}
-
-// 填充配置表单
-function populateConfigForm(config) {
- // 安全获取配置对象,防止未定义属性访问
- const dnsServerConfig = config.DNSServer || {};
- const httpServerConfig = config.HTTPServer || {};
- const shieldConfig = config.Shield || {};
-
- // DNS配置 - 使用函数安全设置值,避免 || 操作符可能的错误处理
- setElementValue('dns-port', getSafeValue(dnsServerConfig.Port, 53));
- setElementValue('dns-upstream-servers', getSafeArray(dnsServerConfig.UpstreamServers).join(', '));
- setElementValue('dns-dnssec-upstream-servers', getSafeArray(dnsServerConfig.DNSSECUpstreamServers).join(', '));
- //setElementValue('dns-stats-file', getSafeValue(dnsServerConfig.StatsFile, 'data/stats.json'));
- setElementValue('dns-save-interval', getSafeValue(dnsServerConfig.SaveInterval, 30));
- //setElementValue('dns-cache-ttl', getSafeValue(dnsServerConfig.CacheTTL, 10));
- setElementValue('dns-enable-ipv6', getSafeValue(dnsServerConfig.EnableIPv6, false));
- // HTTP配置
- setElementValue('http-port', getSafeValue(httpServerConfig.Port, 8080));
- // 屏蔽配置
- //setElementValue('shield-local-rules-file', getSafeValue(shieldConfig.LocalRulesFile, 'data/rules.txt'));
- setElementValue('shield-update-interval', getSafeValue(shieldConfig.UpdateInterval, 3600));
- //setElementValue('shield-hosts-file', getSafeValue(shieldConfig.HostsFile, 'data/hosts.txt'));
- // 使用服务器端接受的屏蔽方法值,默认使用NXDOMAIN, 可选值: NXDOMAIN, NULL, REFUSED
- setElementValue('shield-block-method', getSafeValue(shieldConfig.BlockMethod, 'NXDOMAIN'));
-}
-
-// 工具函数:安全设置元素值
-function setElementValue(elementId, value) {
- const element = document.getElementById(elementId);
- if (element && element.tagName === 'INPUT') {
- if (element.type === 'checkbox') {
- element.checked = value;
- } else {
- element.value = value;
- }
- } else if (!element) {
- console.warn(`Element with id "${elementId}" not found for setting value: ${value}`);
- }
-}
-
-// 工具函数:安全获取值,如果未定义或为null则返回默认值
-function getSafeValue(value, defaultValue) {
- // 更严格的检查,避免0、空字符串等被默认值替换
- return value === undefined || value === null ? defaultValue : value;
-}
-
-// 工具函数:安全获取数组,如果不是数组则返回空数组
-function getSafeArray(value) {
- return Array.isArray(value) ? value : [];
-}
-
-// 保存配置
-async function handleSaveConfig() {
- const formData = collectFormData();
- if (!formData) return;
-
- try {
- const result = await api.saveConfig(formData);
-
- // 检查API返回的错误
- if (result && result.error) {
- showErrorMessage('保存配置失败: ' + result.error);
- return;
- }
-
- showSuccessMessage('配置保存成功');
- } catch (error) {
- // 捕获可能的异常(虽然apiRequest不应该再抛出异常)
- showErrorMessage('保存配置失败: ' + (error.message || '未知错误'));
- }
-}
-
-// 重启服务
-async function handleRestartService() {
- if (!confirm('确定要重启DNS服务吗?重启期间服务可能会短暂不可用。')) return;
-
- try {
- const result = await api.restartService();
-
- // 检查API返回的错误
- if (result && result.error) {
- showErrorMessage('服务重启失败: ' + result.error);
- return;
- }
-
- showSuccessMessage('服务重启成功');
- } catch (error) {
- // 捕获可能的异常(虽然apiRequest不应该再抛出异常)
- showErrorMessage('重启服务失败: ' + (error.message || '未知错误'));
- }
-}
-
-// 收集表单数据并验证
-function collectFormData() {
- // 验证端口号 - 使用安全获取元素值的函数
- const dnsPortValue = getElementValue('dns-port');
- const httpPortValue = getElementValue('http-port');
-
- const dnsPort = validatePort(dnsPortValue);
- const httpPort = validatePort(httpPortValue);
-
- if (!dnsPort) {
- showErrorMessage('DNS端口号无效(必须是1-65535之间的整数)');
- return null;
- }
-
- if (!httpPort) {
- showErrorMessage('HTTP端口号无效(必须是1-65535之间的整数)');
- return null;
- }
-
- // 安全获取上游服务器列表
- const upstreamServersText = getElementValue('dns-upstream-servers');
- const upstreamServers = upstreamServersText ?
- upstreamServersText.split(',').map(function(s) { return s.trim(); }).filter(function(s) { return s !== ''; }) :
- [];
-
- // 安全获取DNSSEC上游服务器列表
- const dnssecUpstreamServersText = getElementValue('dns-dnssec-upstream-servers');
- const dnssecUpstreamServers = dnssecUpstreamServersText ?
- dnssecUpstreamServersText.split(',').map(function(s) { return s.trim(); }).filter(function(s) { return s !== ''; }) :
- [];
-
- // 安全获取并转换整数值
- const timeoutValue = getElementValue('dns-timeout');
- const timeout = timeoutValue ? parseInt(timeoutValue, 10) : 5;
-
- const saveIntervalValue = getElementValue('dns-save-interval');
- const saveInterval = saveIntervalValue ? parseInt(saveIntervalValue, 10) : 300;
-
- const updateIntervalValue = getElementValue('shield-update-interval');
- const updateInterval = updateIntervalValue ? parseInt(updateIntervalValue, 10) : 3600;
-
- return {
- dnsserver: {
- port: dnsPort,
- upstreamServers: upstreamServers,
- dnssecUpstreamServers: dnssecUpstreamServers,
- timeout: timeout,
- saveInterval: saveInterval,
- enableIPv6: getElementValue('dns-enable-ipv6')
- },
- httpserver: {
- port: httpPort
- },
- shield: {
- updateInterval: updateInterval,
- blockMethod: getElementValue('shield-block-method') || 'NXDOMAIN'
- }
- };
-}
-
-// 工具函数:安全获取元素值
-function getElementValue(elementId) {
- const element = document.getElementById(elementId);
- if (element && element.tagName === 'INPUT') {
- if (element.type === 'checkbox') {
- return element.checked;
- }
- return element.value;
- }
- return ''; // 默认返回空字符串
-}
-
-// 设置事件监听器
-function setupConfigEventListeners() {
- // 保存配置按钮
- getElement('save-config-btn')?.addEventListener('click', handleSaveConfig);
-
- // 重启服务按钮
- getElement('restart-service-btn')?.addEventListener('click', handleRestartService);
-}
-
-
-
-// 显示成功消息
-function showSuccessMessage(message) {
- showNotification(message, 'success');
-}
-
-// 显示错误消息
-function showErrorMessage(message) {
- showNotification(message, 'error');
-}
-
-// 显示通知
-function showNotification(message, type = 'info') {
- // 移除现有通知
- const existingNotification = document.querySelector('.notification');
- if (existingNotification) {
- existingNotification.remove();
- }
-
- // 创建新通知
- const notification = document.createElement('div');
- notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-transform duration-300 ease-in-out translate-y-0 opacity-0`;
-
- // 设置通知样式(兼容Tailwind和原生CSS)
- notification.style.cssText += `
- position: fixed;
- bottom: 16px;
- right: 16px;
- padding: 16px 24px;
- border-radius: 8px;
- box-shadow: 0 4px 12px rgba(0,0,0,0.15);
- z-index: 1000;
- transition: all 0.3s ease;
- opacity: 0;
- `;
-
- if (type === 'success') {
- notification.style.backgroundColor = '#10b981';
- notification.style.color = 'white';
- } else if (type === 'error') {
- notification.style.backgroundColor = '#ef4444';
- notification.style.color = 'white';
- } else {
- notification.style.backgroundColor = '#3b82f6';
- notification.style.color = 'white';
- }
-
- notification.textContent = message;
- document.body.appendChild(notification);
-
- // 显示通知
- setTimeout(() => {
- notification.style.opacity = '1';
- }, 10);
-
- // 3秒后隐藏通知
- setTimeout(() => {
- notification.style.opacity = '0';
- setTimeout(() => {
- notification.remove();
- }, 300);
- }, 3000);
-}
-
-// 页面加载完成后初始化
-if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', initConfigPage);
-} else {
- initConfigPage();
-}
\ No newline at end of file
diff --git a/staticbak/static/js/dashboard.js b/staticbak/static/js/dashboard.js
deleted file mode 100644
index 7f55b28..0000000
--- a/staticbak/static/js/dashboard.js
+++ /dev/null
@@ -1,3079 +0,0 @@
-// dashboard.js - 仪表盘功能实现
-
-// 全局变量
-let ratioChart = null;
-let dnsRequestsChart = null;
-let detailedDnsRequestsChart = null; // 详细DNS请求趋势图表(浮窗)
-let queryTypeChart = null; // 解析类型统计饼图
-let intervalId = null;
-let dashboardWsConnection = null;
-let dashboardWsReconnectTimer = null;
-// 存储统计卡片图表实例
-let statCardCharts = {};
-// 存储统计卡片历史数据
-let statCardHistoryData = {};
-// 存储仪表盘历史数据,用于计算趋势
-window.dashboardHistoryData = window.dashboardHistoryData || {
- prevResponseTime: null,
- prevActiveIPs: null,
- prevTopQueryTypeCount: null
-};
-
-// 引入颜色配置文件
-const COLOR_CONFIG = window.COLOR_CONFIG || {};
-
-// 初始化仪表盘
-async function initDashboard() {
- try {
- console.log('页面打开时强制刷新数据...');
-
- // 优先加载初始数据,确保页面显示最新信息
- await loadDashboardData();
-
- // 初始化图表
- initCharts();
-
-
-
- // 初始化时间范围切换
- initTimeRangeToggle();
-
- // 建立WebSocket连接
- connectWebSocket();
-
- // 在页面卸载时清理资源
- window.addEventListener('beforeunload', cleanupResources);
- } catch (error) {
- console.error('初始化仪表盘失败:', error);
- showNotification('初始化失败: ' + error.message, 'error');
- }
-}
-
-// 建立WebSocket连接
-function connectWebSocket() {
- try {
- // 构建WebSocket URL
- const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
- const wsUrl = `${wsProtocol}//${window.location.host}/ws/stats`;
-
- console.log('正在连接WebSocket:', wsUrl);
-
- // 创建WebSocket连接
- dashboardWsConnection = new WebSocket(wsUrl);
-
- // 连接打开事件
- dashboardWsConnection.onopen = function() {
- console.log('WebSocket连接已建立');
- showNotification('数据更新成功', 'success');
-
- // 清除重连计时器
- if (dashboardWsReconnectTimer) {
- clearTimeout(dashboardWsReconnectTimer);
- dashboardWsReconnectTimer = null;
- }
- };
-
- // 接收消息事件
- dashboardWsConnection.onmessage = function(event) {
- try {
- const data = JSON.parse(event.data);
-
- if (data.type === 'initial_data' || data.type === 'stats_update') {
- console.log('收到实时数据更新');
- processRealTimeData(data.data);
- }
- } catch (error) {
- console.error('处理WebSocket消息失败:', error);
- }
- };
-
- // 连接关闭事件
- dashboardWsConnection.onclose = function(event) {
- console.warn('WebSocket连接已关闭,代码:', event.code);
- dashboardWsConnection = null;
-
- // 设置重连
- setupReconnect();
- };
-
- // 连接错误事件
- dashboardWsConnection.onerror = function(error) {
- console.error('WebSocket连接错误:', error);
- };
-
- } catch (error) {
- console.error('创建WebSocket连接失败:', error);
- // 如果WebSocket连接失败,回退到定时刷新
- fallbackToIntervalRefresh();
- }
-}
-
-// 设置重连逻辑
-function setupReconnect() {
- if (dashboardWsReconnectTimer) {
- return; // 已经有重连计时器在运行
- }
-
- const reconnectDelay = 5000; // 5秒后重连
- console.log(`将在${reconnectDelay}ms后尝试重新连接WebSocket`);
-
- dashboardWsReconnectTimer = setTimeout(() => {
- connectWebSocket();
- }, reconnectDelay);
-}
-
-// 处理实时数据更新
-function processRealTimeData(stats) {
- try {
- // 更新统计卡片 - 这会更新所有统计卡片,包括CPU使用率卡片
- updateStatsCards(stats);
-
- // 获取查询类型统计数据
- let queryTypeStats = null;
- if (stats.dns && stats.dns.QueryTypes) {
- queryTypeStats = Object.entries(stats.dns.QueryTypes).map(([type, count]) => ({
- type,
- count
- }));
- }
-
- // 更新图表数据
- updateCharts(stats, queryTypeStats);
-
-
-
- // 尝试从stats中获取总查询数等信息
- if (stats.dns) {
- totalQueries = stats.dns.Allowed + stats.dns.Blocked + (stats.dns.Errors || 0);
- blockedQueries = stats.dns.Blocked;
- errorQueries = stats.dns.Errors || 0;
- allowedQueries = stats.dns.Allowed;
- } else {
- totalQueries = stats.totalQueries || 0;
- blockedQueries = stats.blockedQueries || 0;
- errorQueries = stats.errorQueries || 0;
- allowedQueries = stats.allowedQueries || 0;
- }
-
- // 更新新卡片数据
- if (document.getElementById('avg-response-time')) {
- const responseTime = stats.avgResponseTime ? stats.avgResponseTime.toFixed(2) + 'ms' : '---';
-
- // 计算响应时间趋势
- let responsePercent = '---';
- let trendClass = 'text-gray-400';
- let trendIcon = '---';
-
- if (stats.avgResponseTime !== undefined && stats.avgResponseTime !== null) {
- // 存储当前值用于下次计算趋势
- const prevResponseTime = window.dashboardHistoryData.prevResponseTime || stats.avgResponseTime;
- window.dashboardHistoryData.prevResponseTime = stats.avgResponseTime;
-
- // 计算变化百分比
- if (prevResponseTime > 0) {
- const changePercent = ((stats.avgResponseTime - prevResponseTime) / prevResponseTime) * 100;
- responsePercent = Math.abs(changePercent).toFixed(1) + '%';
-
- // 设置趋势图标和颜色
- if (changePercent > 0) {
- trendIcon = '↓';
- trendClass = 'text-danger';
- } else if (changePercent < 0) {
- trendIcon = '↑';
- trendClass = 'text-success';
- } else {
- trendIcon = '•';
- trendClass = 'text-gray-500';
- }
- }
- }
-
- document.getElementById('avg-response-time').textContent = responseTime;
- const responseTimePercentElem = document.getElementById('response-time-percent');
- if (responseTimePercentElem) {
- responseTimePercentElem.textContent = trendIcon + ' ' + responsePercent;
- responseTimePercentElem.className = `text-sm flex items-center ${trendClass}`;
- }
- }
-
- if (document.getElementById('top-query-type')) {
- const queryType = stats.topQueryType || '---';
- document.getElementById('top-query-type').textContent = queryType;
-
- const queryPercentElem = document.getElementById('query-type-percentage');
- if (queryPercentElem) {
- // 计算查询类型趋势
- let queryPercent = '---';
- let trendClass = 'text-gray-400';
- let trendIcon = '---';
-
- if (stats.topQueryTypeCount !== undefined && stats.topQueryTypeCount !== null) {
- // 存储当前值用于下次计算趋势
- const prevTopQueryTypeCount = window.dashboardHistoryData.prevTopQueryTypeCount || stats.topQueryTypeCount;
- window.dashboardHistoryData.prevTopQueryTypeCount = stats.topQueryTypeCount;
-
- // 计算变化百分比
- if (prevTopQueryTypeCount > 0) {
- const changePercent = ((stats.topQueryTypeCount - prevTopQueryTypeCount) / prevTopQueryTypeCount) * 100;
- queryPercent = Math.abs(changePercent).toFixed(1) + '%';
-
- // 设置趋势图标和颜色
- if (changePercent > 0) {
- trendIcon = '↑';
- trendClass = 'text-primary';
- } else if (changePercent < 0) {
- trendIcon = '↓';
- trendClass = 'text-secondary';
- } else {
- trendIcon = '•';
- trendClass = 'text-gray-500';
- }
- }
- }
-
- queryPercentElem.textContent = trendIcon + ' ' + queryPercent;
- queryPercentElem.className = `text-sm flex items-center ${trendClass}`;
- }
- }
-
- if (document.getElementById('active-ips')) {
- const activeIPs = stats.activeIPs !== undefined ? formatNumber(stats.activeIPs) : '---';
-
- // 计算活跃IP趋势
- let ipsPercent = '---';
- let trendClass = 'text-gray-400';
- let trendIcon = '---';
-
- if (stats.activeIPs !== undefined) {
- const prevActiveIPs = window.dashboardHistoryData.prevActiveIPs || stats.activeIPs;
- window.dashboardHistoryData.prevActiveIPs = stats.activeIPs;
-
- if (prevActiveIPs > 0) {
- const changePercent = ((stats.activeIPs - prevActiveIPs) / prevActiveIPs) * 100;
- ipsPercent = Math.abs(changePercent).toFixed(1) + '%';
-
- if (changePercent > 0) {
- trendIcon = '↑';
- trendClass = 'text-primary';
- } else if (changePercent < 0) {
- trendIcon = '↓';
- trendClass = 'text-secondary';
- } else {
- trendIcon = '•';
- trendClass = 'text-gray-500';
- }
- }
- }
-
- document.getElementById('active-ips').textContent = activeIPs;
- const activeIpsPercentElem = document.getElementById('active-ips-percentage');
- if (activeIpsPercentElem) {
- activeIpsPercentElem.textContent = trendIcon + ' ' + ipsPercent;
- activeIpsPercentElem.className = `text-sm flex items-center ${trendClass}`;
- }
- }
-
- // 实时更新TOP客户端和TOP域名数据
- updateTopData();
-
- } catch (error) {
- console.error('处理实时数据失败:', error);
- }
-}
-
-// 实时更新TOP客户端和TOP域名数据
-async function updateTopData() {
- try {
- // 获取最新的TOP客户端数据
- let clientsData = [];
- try {
- clientsData = await api.getTopClients();
- } catch (error) {
- console.error('获取TOP客户端数据失败:', error);
- }
-
- if (clientsData && !clientsData.error && Array.isArray(clientsData)) {
- if (clientsData.length > 0) {
- // 使用真实数据
- updateTopClientsTable(clientsData);
- // 隐藏错误信息
- const errorElement = document.getElementById('top-clients-error');
- if (errorElement) errorElement.classList.add('hidden');
- } else {
- // 数据为空,使用模拟数据
- const mockClients = [
- { ip: '---.---.---.---', count: '---' },
- { ip: '---.---.---.---', count: '---' },
- { ip: '---.---.---.---', count: '---' },
- { ip: '---.---.---.---', count: '---' },
- { ip: '---.---.---.---', count: '---' }
- ];
- updateTopClientsTable(mockClients);
- }
- } else {
- // API调用失败或返回错误,使用模拟数据
- const mockClients = [
- { ip: '---.---.---.---', count: '---' },
- { ip: '---.---.---.---', count: '---' },
- { ip: '---.---.---.---', count: '---' },
- { ip: '---.---.---.---', count: '---' },
- { ip: '---.---.---.---', count: '---' }
- ];
- updateTopClientsTable(mockClients);
- }
-
- // 获取最新的TOP域名数据
- let domainsData = [];
- try {
- domainsData = await api.getTopDomains();
- } catch (error) {
- console.error('获取TOP域名数据失败:', error);
- }
-
- if (domainsData && !domainsData.error && Array.isArray(domainsData)) {
- if (domainsData.length > 0) {
- // 使用真实数据
- updateTopDomainsTable(domainsData);
- // 隐藏错误信息
- const errorElement = document.getElementById('top-domains-error');
- if (errorElement) errorElement.classList.add('hidden');
- } else {
- // 数据为空,使用模拟数据
- const mockDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- updateTopDomainsTable(mockDomains);
- }
- } else {
- // API调用失败或返回错误,使用模拟数据
- const mockDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- updateTopDomainsTable(mockDomains);
- }
- } catch (error) {
- console.error('更新TOP数据失败:', error);
- // 出错时使用模拟数据
- const mockDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- updateTopDomainsTable(mockDomains);
- }
-}
-
-// 回退到定时刷新
-function fallbackToIntervalRefresh() {
- console.warn('回退到定时刷新模式');
- showNotification('实时更新连接失败,已切换到定时刷新模式', 'warning');
-
- // 如果已经有定时器,先清除
- if (intervalId) {
- clearInterval(intervalId);
- }
-
- // 设置新的定时器
- intervalId = setInterval(async () => {
- try {
- await loadDashboardData();
- } catch (error) {
- console.error('定时刷新失败:', error);
- }
- }, 5000); // 每5秒更新一次
-}
-
-// 清理资源
-function cleanupResources() {
- // 清除WebSocket连接
- if (dashboardWsConnection) {
- dashboardWsConnection.close();
- dashboardWsConnection = null;
- }
-
- // 清除重连计时器
- if (dashboardWsReconnectTimer) {
- clearTimeout(dashboardWsReconnectTimer);
- dashboardWsReconnectTimer = null;
- }
-
- // 清除定时刷新
- if (intervalId) {
- clearInterval(intervalId);
- intervalId = null;
- }
-}
-
-// 加载仪表盘数据
-async function loadDashboardData() {
- console.log('开始加载仪表盘数据');
- try {
- // 获取基本统计数据
- const stats = await api.getStats();
- console.log('统计数据:', stats);
-
- // 获取查询类型统计数据
- let queryTypeStats = null;
- try {
- queryTypeStats = await api.getQueryTypeStats();
- console.log('查询类型统计数据:', queryTypeStats);
- } catch (error) {
- console.warn('获取查询类型统计失败:', error);
- // 如果API调用失败,尝试从stats中提取查询类型数据
- if (stats && stats.dns && stats.dns.QueryTypes) {
- queryTypeStats = Object.entries(stats.dns.QueryTypes).map(([type, count]) => ({
- type,
- count
- }));
- console.log('从stats中提取的查询类型统计:', queryTypeStats);
- }
- }
-
- // 尝试获取TOP被屏蔽域名,如果失败则提供模拟数据
- let topBlockedDomains = [];
- try {
- topBlockedDomains = await api.getTopBlockedDomains();
- console.log('TOP被屏蔽域名:', topBlockedDomains);
-
- // 确保返回的数据是数组
- if (!Array.isArray(topBlockedDomains)) {
- console.warn('TOP被屏蔽域名不是预期的数组格式,使用模拟数据');
- topBlockedDomains = [];
- }
- } catch (error) {
- console.warn('获取TOP被屏蔽域名失败:', error);
- // 提供模拟数据
- topBlockedDomains = [
- { domain: 'example-blocked.com', count: 15, lastSeen: new Date().toISOString() },
- { domain: 'ads.example.org', count: 12, lastSeen: new Date().toISOString() },
- { domain: 'tracking.example.net', count: 8, lastSeen: new Date().toISOString() }
- ];
- }
-
- // 尝试获取最近屏蔽域名,如果失败则提供模拟数据
- let recentBlockedDomains = [];
- try {
- recentBlockedDomains = await api.getRecentBlockedDomains();
- console.log('最近屏蔽域名:', recentBlockedDomains);
-
- // 确保返回的数据是数组
- if (!Array.isArray(recentBlockedDomains)) {
- console.warn('最近屏蔽域名不是预期的数组格式,使用模拟数据');
- recentBlockedDomains = [];
- }
- } catch (error) {
- console.warn('获取最近屏蔽域名失败:', error);
- // 提供模拟数据
- recentBlockedDomains = [
- { domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() },
- { domain: '---.---.---', ip: '---.---.---.---', timestamp: new Date().toISOString() }
- ];
- }
-
-
-
- function showError(elementId) {
- const loadingElement = document.getElementById(elementId + '-loading');
- const errorElement = document.getElementById(elementId + '-error');
- if (loadingElement) loadingElement.classList.add('hidden');
- if (errorElement) errorElement.classList.remove('hidden');
- }
-
- // 尝试获取TOP客户端,优先使用真实数据,失败时使用模拟数据
- let topClients = [];
- try {
- const clientsData = await api.getTopClients();
- console.log('TOP客户端:', clientsData);
-
- // 检查数据是否有效
- if (clientsData && !clientsData.error && Array.isArray(clientsData) && clientsData.length > 0) {
- // 使用真实数据
- topClients = clientsData;
- } else if (clientsData && clientsData.error) {
- // API返回错误
- console.warn('获取TOP客户端失败:', clientsData.error);
- // 使用模拟数据
- topClients = [
- { ip: '192.168.1.100', count: 120 },
- { ip: '192.168.1.101', count: 95 },
- { ip: '192.168.1.102', count: 80 },
- { ip: '192.168.1.103', count: 65 },
- { ip: '192.168.1.104', count: 50 }
- ];
- showError('top-clients');
- } else {
- // 数据为空或格式不正确
- console.warn('TOP客户端数据为空或格式不正确,使用模拟数据');
- // 使用模拟数据
- topClients = [
- { ip: '192.168.1.100', count: 120 },
- { ip: '192.168.1.101', count: 95 },
- { ip: '192.168.1.102', count: 80 },
- { ip: '192.168.1.103', count: 65 },
- { ip: '192.168.1.104', count: 50 }
- ];
- showError('top-clients');
- }
- } catch (error) {
- console.warn('获取TOP客户端失败:', error);
- // 使用模拟数据
- topClients = [
- { ip: '192.168.1.100', count: 120 },
- { ip: '192.168.1.101', count: 95 },
- { ip: '192.168.1.102', count: 80 },
- { ip: '192.168.1.103', count: 65 },
- { ip: '192.168.1.104', count: 50 }
- ];
- showError('top-clients');
- }
-
- // 尝试获取TOP域名,优先使用真实数据,失败时使用模拟数据
- let topDomains = [];
- try {
- const domainsData = await api.getTopDomains();
- console.log('TOP域名:', domainsData);
-
- // 检查数据是否有效
- if (domainsData && !domainsData.error && Array.isArray(domainsData) && domainsData.length > 0) {
- // 使用真实数据
- topDomains = domainsData;
- } else if (domainsData && domainsData.error) {
- // API返回错误
- console.warn('获取TOP域名失败:', domainsData.error);
- // 使用模拟数据
- topDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- showError('top-domains');
- } else {
- // 数据为空或格式不正确
- console.warn('TOP域名数据为空或格式不正确,使用模拟数据');
- // 使用模拟数据
- topDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- showError('top-domains');
- }
- } catch (error) {
- console.warn('获取TOP域名失败:', error);
- // 使用模拟数据
- topDomains = [
- { domain: 'example.com', count: 50 },
- { domain: 'google.com', count: 45 },
- { domain: 'facebook.com', count: 40 },
- { domain: 'twitter.com', count: 35 },
- { domain: 'youtube.com', count: 30 }
- ];
- showError('top-domains');
- }
-
- // 更新统计卡片
- updateStatsCards(stats);
-
- // 更新图表数据,传入查询类型统计
- updateCharts(stats, queryTypeStats);
-
- // 更新表格数据
- updateTopBlockedTable(topBlockedDomains);
- updateRecentBlockedTable(recentBlockedDomains);
- updateTopClientsTable(topClients);
- updateTopDomainsTable(topDomains);
-
- // 尝试从stats中获取总查询数等信息
- if (stats.dns) {
- totalQueries = stats.dns.Allowed + stats.dns.Blocked + (stats.dns.Errors || 0);
- blockedQueries = stats.dns.Blocked;
- errorQueries = stats.dns.Errors || 0;
- allowedQueries = stats.dns.Allowed;
- } else {
- totalQueries = stats.totalQueries || 0;
- blockedQueries = stats.blockedQueries || 0;
- errorQueries = stats.errorQueries || 0;
- allowedQueries = stats.allowedQueries || 0;
- }
-
- // 全局历史数据对象,用于存储趋势计算所需的上一次值
- window.dashboardHistoryData = window.dashboardHistoryData || {};
-
- // 更新新卡片数据 - 使用API返回的真实数据
- if (document.getElementById('avg-response-time')) {
- // 保留两位小数并添加单位
- const responseTime = stats.avgResponseTime ? stats.avgResponseTime.toFixed(2) + 'ms' : '---';
-
- // 计算响应时间趋势
- let responsePercent = '---';
- let trendClass = 'text-gray-400';
- let trendIcon = '---';
-
- if (stats.avgResponseTime !== undefined && stats.avgResponseTime !== null) {
- // 存储当前值用于下次计算趋势
- const prevResponseTime = window.dashboardHistoryData.prevResponseTime || stats.avgResponseTime;
- window.dashboardHistoryData.prevResponseTime = stats.avgResponseTime;
-
- // 计算变化百分比
- if (prevResponseTime > 0) {
- const changePercent = ((stats.avgResponseTime - prevResponseTime) / prevResponseTime) * 100;
- responsePercent = Math.abs(changePercent).toFixed(1) + '%';
-
- // 设置趋势图标和颜色(响应时间增加是负面的,减少是正面的)
- if (changePercent > 0) {
- trendIcon = '↓';
- trendClass = 'text-danger';
- } else if (changePercent < 0) {
- trendIcon = '↑';
- trendClass = 'text-success';
- } else {
- trendIcon = '•';
- trendClass = 'text-gray-500';
- }
- }
- }
-
- document.getElementById('avg-response-time').textContent = responseTime;
- const responseTimePercentElem = document.getElementById('response-time-percent');
- if (responseTimePercentElem) {
- responseTimePercentElem.textContent = trendIcon + ' ' + responsePercent;
- responseTimePercentElem.className = `text-sm flex items-center ${trendClass}`;
- }
- }
-
- if (document.getElementById('top-query-type')) {
- // 直接使用API返回的查询类型
- const queryType = stats.topQueryType || '---';
-
- // 设置默认趋势显示
- const queryPercentElem = document.getElementById('query-type-percentage');
- if (queryPercentElem) {
- queryPercentElem.textContent = '• ---';
- queryPercentElem.className = 'text-sm flex items-center text-gray-500';
- }
-
- document.getElementById('top-query-type').textContent = queryType;
- }
-
- if (document.getElementById('active-ips')) {
- // 直接使用API返回的活跃IP数
- const activeIPs = stats.activeIPs !== undefined ? formatNumber(stats.activeIPs) : '---';
-
- // 计算活跃IP趋势
- let ipsPercent = '---';
- let trendClass = 'text-gray-400';
- let trendIcon = '---';
-
- if (stats.activeIPs !== undefined && stats.activeIPs !== null) {
- // 存储当前值用于下次计算趋势
- const prevActiveIPs = window.dashboardHistoryData.prevActiveIPs || stats.activeIPs;
- window.dashboardHistoryData.prevActiveIPs = stats.activeIPs;
-
- // 计算变化百分比
- if (prevActiveIPs > 0) {
- const changePercent = ((stats.activeIPs - prevActiveIPs) / prevActiveIPs) * 100;
- ipsPercent = Math.abs(changePercent).toFixed(1) + '%';
-
- // 设置趋势图标和颜色
- if (changePercent > 0) {
- trendIcon = '↑';
- trendClass = 'text-success';
- } else if (changePercent < 0) {
- trendIcon = '↓';
- trendClass = 'text-danger';
- } else {
- trendIcon = '•';
- trendClass = 'text-gray-500';
- }
- }
- }
-
- document.getElementById('active-ips').textContent = activeIPs;
- const activeIpsPercentElem = document.getElementById('active-ips-percent');
- if (activeIpsPercentElem) {
- activeIpsPercentElem.textContent = trendIcon + ' ' + ipsPercent;
- activeIpsPercentElem.className = `text-sm flex items-center ${trendClass}`;
- }
- }
-
- // 更新图表
- updateCharts({totalQueries, blockedQueries, allowedQueries, errorQueries});
-
- // 确保响应时间图表使用API实时数据
- if (document.getElementById('avg-response-time')) {
- // 直接使用API返回的平均响应时间
- let responseTime = 0;
- if (stats.dns && stats.dns.AvgResponseTime) {
- responseTime = stats.dns.AvgResponseTime;
- } else if (stats.avgResponseTime !== undefined) {
- responseTime = stats.avgResponseTime;
- } else if (stats.responseTime) {
- responseTime = stats.responseTime;
- }
-
- if (responseTime > 0 && statCardCharts['response-time-chart']) {
- // 限制小数位数为两位并更新图表
- updateChartData('response-time-chart', parseFloat(responseTime).toFixed(2));
- }
- }
-
- // 更新运行状态
- updateUptime();
-
- // 确保TOP域名数据被正确加载
- updateTopData();
- } catch (error) {
- console.error('加载仪表盘数据失败:', error);
- // 静默失败,不显示通知以免打扰用户
- }
-}
-
-// 更新统计卡片
-function updateStatsCards(stats) {
- console.log('更新统计卡片,收到数据:', stats);
-
- // 适配不同的数据结构
- let totalQueries = 0, blockedQueries = 0, allowedQueries = 0, errorQueries = 0;
- let topQueryType = 'A', queryTypePercentage = 0;
- let activeIPs = 0, activeIPsPercentage = 0;
-
- // 检查数据结构,兼容可能的不同格式
- if (stats) {
- // 优先使用顶层字段
- totalQueries = stats.totalQueries || 0;
- blockedQueries = stats.blockedQueries || 0;
- allowedQueries = stats.allowedQueries || 0;
- errorQueries = stats.errorQueries || 0;
- topQueryType = stats.topQueryType || 'A';
- queryTypePercentage = stats.queryTypePercentage || 0;
- activeIPs = stats.activeIPs || 0;
- activeIPsPercentage = stats.activeIPsPercentage || 0;
-
-
- // 如果dns对象存在,优先使用其中的数据
- if (stats.dns) {
- totalQueries = stats.dns.Queries || totalQueries;
- blockedQueries = stats.dns.Blocked || blockedQueries;
- allowedQueries = stats.dns.Allowed || allowedQueries;
- errorQueries = stats.dns.Errors || errorQueries;
-
- // 计算最常用查询类型的百分比
- if (stats.dns.QueryTypes && stats.dns.Queries > 0) {
- const topTypeCount = stats.dns.QueryTypes[topQueryType] || 0;
- queryTypePercentage = (topTypeCount / stats.dns.Queries) * 100;
- }
-
- // 计算活跃IP百分比(基于已有的活跃IP数)
- if (activeIPs > 0 && stats.dns.SourceIPs) {
- activeIPsPercentage = activeIPs / Object.keys(stats.dns.SourceIPs).length * 100;
- }
- }
- } else if (Array.isArray(stats) && stats.length > 0) {
- // 可能的数据结构3: 数组形式
- totalQueries = stats[0].total || 0;
- blockedQueries = stats[0].blocked || 0;
- allowedQueries = stats[0].allowed || 0;
- errorQueries = stats[0].error || 0;
- topQueryType = stats[0].topQueryType || 'A';
- queryTypePercentage = stats[0].queryTypePercentage || 0;
- activeIPs = stats[0].activeIPs || 0;
- activeIPsPercentage = stats[0].activeIPsPercentage || 0;
- }
-
- // 存储正在进行的动画状态,避免动画重叠
- const animationInProgress = {};
-
- // 为数字元素添加翻页滚动特效
- function animateValue(elementId, newValue) {
- const element = document.getElementById(elementId);
- if (!element) return;
-
- // 如果该元素正在进行动画,取消当前动画并立即更新值
- if (animationInProgress[elementId]) {
- // 清除之前可能设置的定时器
- clearTimeout(animationInProgress[elementId].timeout1);
- clearTimeout(animationInProgress[elementId].timeout2);
- clearTimeout(animationInProgress[elementId].timeout3);
-
- // 立即设置新值,避免显示错乱
- const formattedNewValue = formatNumber(newValue);
- element.innerHTML = formattedNewValue;
- return;
- }
-
- const oldValue = parseInt(element.textContent.replace(/,/g, '')) || 0;
- const formattedNewValue = formatNumber(newValue);
-
- // 如果值没有变化,不执行动画
- if (oldValue === newValue && element.textContent === formattedNewValue) {
- return;
- }
-
- // 先移除可能存在的光晕效果类
- element.classList.remove('number-glow', 'number-glow-blue', 'number-glow-red', 'number-glow-green', 'number-glow-yellow');
- element.classList.remove('number-glow-dark-blue', 'number-glow-dark-red', 'number-glow-dark-green', 'number-glow-dark-yellow');
-
- // 保存原始样式
- const originalStyle = element.getAttribute('style') || '';
-
- try {
- // 复制原始元素的样式到新元素,确保大小完全一致
- const computedStyle = getComputedStyle(element);
-
- // 配置翻页容器样式,确保与原始元素大小完全一致
- const containerStyle =
- 'position: relative; ' +
- 'display: ' + computedStyle.display + '; ' +
- 'overflow: hidden; ' +
- 'height: ' + element.offsetHeight + 'px; ' +
- 'width: ' + element.offsetWidth + 'px; ' +
- 'margin: ' + computedStyle.margin + '; ' +
- 'padding: ' + computedStyle.padding + '; ' +
- 'box-sizing: ' + computedStyle.boxSizing + '; ' +
- 'line-height: ' + computedStyle.lineHeight + ';';
-
- // 创建翻页容器
- const flipContainer = document.createElement('div');
- flipContainer.style.cssText = containerStyle;
- flipContainer.className = 'number-flip-container';
-
- // 创建旧值元素
- const oldValueElement = document.createElement('div');
- oldValueElement.textContent = element.textContent;
- oldValueElement.style.cssText =
- 'position: absolute; ' +
- 'top: 0; ' +
- 'left: 0; ' +
- 'width: 100%; ' +
- 'height: 100%; ' +
- 'display: flex; ' +
- 'align-items: center; ' +
- 'justify-content: center; ' +
- 'transition: transform 400ms ease-in-out; ' +
- 'transform-origin: center;';
-
- // 创建新值元素
- const newValueElement = document.createElement('div');
- newValueElement.textContent = formattedNewValue;
- newValueElement.style.cssText =
- 'position: absolute; ' +
- 'top: 0; ' +
- 'left: 0; ' +
- 'width: 100%; ' +
- 'height: 100%; ' +
- 'display: flex; ' +
- 'align-items: center; ' +
- 'justify-content: center; ' +
- 'transition: transform 400ms ease-in-out; ' +
- 'transform-origin: center; ' +
- 'transform: translateY(100%);';
- [oldValueElement, newValueElement].forEach(el => {
- el.style.fontSize = computedStyle.fontSize;
- el.style.fontWeight = computedStyle.fontWeight;
- el.style.color = computedStyle.color;
- el.style.fontFamily = computedStyle.fontFamily;
- el.style.textAlign = computedStyle.textAlign;
- el.style.lineHeight = computedStyle.lineHeight;
- el.style.width = '100%';
- el.style.height = '100%';
- el.style.margin = '0';
- el.style.padding = '0';
- el.style.boxSizing = 'border-box';
- el.style.whiteSpace = computedStyle.whiteSpace;
- el.style.overflow = 'hidden';
- el.style.textOverflow = 'ellipsis';
- // 确保垂直对齐正确
- el.style.verticalAlign = 'middle';
- });
-
- // 替换原始元素的内容
- element.textContent = '';
- flipContainer.appendChild(oldValueElement);
- flipContainer.appendChild(newValueElement);
- element.appendChild(flipContainer);
-
- // 标记该元素正在进行动画
- animationInProgress[elementId] = {};
-
- // 启动翻页动画
- animationInProgress[elementId].timeout1 = setTimeout(() => {
- if (oldValueElement && newValueElement) {
- oldValueElement.style.transform = 'translateY(-100%)';
- newValueElement.style.transform = 'translateY(0)';
- }
- }, 50);
-
- // 动画结束后,恢复原始元素
- animationInProgress[elementId].timeout2 = setTimeout(() => {
- try {
- // 清理并设置最终值
- element.innerHTML = formattedNewValue;
- if (originalStyle) {
- element.setAttribute('style', originalStyle);
- } else {
- element.removeAttribute('style');
- }
-
- // 添加当前卡片颜色的深色光晕效果
- const card = element.closest('.stat-card, .bg-blue-50, .bg-red-50, .bg-green-50, .bg-yellow-50');
- let glowColorClass = '';
-
- if (card) {
- if (card.classList.contains('bg-blue-50') || card.id.includes('total') || card.id.includes('response')) {
- glowColorClass = 'number-glow-dark-blue';
- } else if (card.classList.contains('bg-red-50') || card.id.includes('blocked')) {
- glowColorClass = 'number-glow-dark-red';
- } else if (card.classList.contains('bg-green-50') || card.id.includes('allowed') || card.id.includes('active')) {
- glowColorClass = 'number-glow-dark-green';
- } else if (card.classList.contains('bg-yellow-50') || card.id.includes('error') || card.id.includes('cpu')) {
- glowColorClass = 'number-glow-dark-yellow';
- }
- }
-
- if (glowColorClass) {
- element.classList.add(glowColorClass);
-
- // 2秒后移除光晕效果
- animationInProgress[elementId].timeout3 = setTimeout(() => {
- element.classList.remove('number-glow-dark-blue', 'number-glow-dark-red', 'number-glow-dark-green', 'number-glow-dark-yellow');
- }, 2000);
- }
- } catch (e) {
- console.error('更新元素失败:', e);
- } finally {
- // 清除动画状态标记
- delete animationInProgress[elementId];
- }
- }, 450);
- } catch (e) {
- console.error('创建动画失败:', e);
- // 出错时直接设置值
- element.innerHTML = formattedNewValue;
- if (originalStyle) {
- element.setAttribute('style', originalStyle);
- } else {
- element.removeAttribute('style');
- }
- // 清除动画状态标记
- delete animationInProgress[elementId];
- }
- }
-
- // 更新百分比元素的函数
- function updatePercentage(elementId, value) {
- const element = document.getElementById(elementId);
- if (!element) return;
-
- // 检查是否有正在进行的动画
- if (animationInProgress[elementId + '_percent']) {
- clearTimeout(animationInProgress[elementId + '_percent']);
- }
-
- try {
- element.style.opacity = '0';
- element.style.transition = 'opacity 200ms ease-out';
-
- // 保存定时器ID,便于后续可能的取消
- animationInProgress[elementId + '_percent'] = setTimeout(() => {
- try {
- element.textContent = value;
- element.style.opacity = '1';
- } catch (e) {
- console.error('更新百分比元素失败:', e);
- } finally {
- // 清除动画状态标记
- delete animationInProgress[elementId + '_percent'];
- }
- }, 200);
- } catch (e) {
- console.error('设置百分比动画失败:', e);
- // 出错时直接设置值
- try {
- element.textContent = value;
- element.style.opacity = '1';
- } catch (e2) {
- console.error('直接更新百分比元素也失败:', e2);
- }
- }
- }
-
- // 平滑更新数量显示
- animateValue('total-queries', totalQueries);
- animateValue('blocked-queries', blockedQueries);
- animateValue('allowed-queries', allowedQueries);
- animateValue('error-queries', errorQueries);
- animateValue('active-ips', activeIPs);
-
- // DNSSEC相关数据
- let dnssecEnabled = false, dnssecQueries = 0, dnssecSuccess = 0, dnssecFailed = 0, dnssecUsage = 0;
-
- // 检查DNSSEC数据
- if (stats) {
- // 优先使用顶层字段
- dnssecEnabled = stats.dnssecEnabled || false;
- dnssecQueries = stats.dnssecQueries || 0;
- dnssecSuccess = stats.dnssecSuccess || 0;
- dnssecFailed = stats.dnssecFailed || 0;
- dnssecUsage = stats.dnssecUsage || 0;
-
- // 如果dns对象存在,优先使用其中的数据
- if (stats.dns) {
- dnssecEnabled = stats.dns.DNSSECEnabled || dnssecEnabled;
- dnssecQueries = stats.dns.DNSSECQueries || dnssecQueries;
- dnssecSuccess = stats.dns.DNSSECSuccess || dnssecSuccess;
- dnssecFailed = stats.dns.DNSSECFailed || dnssecFailed;
- }
-
- // 如果没有直接提供使用率,计算使用率
- if (dnssecUsage === 0 && totalQueries > 0) {
- dnssecUsage = (dnssecQueries / totalQueries) * 100;
- }
- }
-
- // 更新DNSSEC统计卡片
- const dnssecUsageElement = document.getElementById('dnssec-usage');
- const dnssecStatusElement = document.getElementById('dnssec-status');
- const dnssecSuccessElement = document.getElementById('dnssec-success');
- const dnssecFailedElement = document.getElementById('dnssec-failed');
- const dnssecQueriesElement = document.getElementById('dnssec-queries');
-
- if (dnssecUsageElement) {
- dnssecUsageElement.textContent = `${Math.round(dnssecUsage)}%`;
- }
-
- if (dnssecStatusElement) {
- dnssecStatusElement.textContent = dnssecEnabled ? '已启用' : '已禁用';
- dnssecStatusElement.className = `text-sm flex items-center ${dnssecEnabled ? 'text-success' : 'text-danger'}`;
- }
-
- if (dnssecSuccessElement) {
- dnssecSuccessElement.textContent = formatNumber(dnssecSuccess);
- }
-
- if (dnssecFailedElement) {
- dnssecFailedElement.textContent = formatNumber(dnssecFailed);
- }
-
- if (dnssecQueriesElement) {
- dnssecQueriesElement.textContent = formatNumber(dnssecQueries);
- }
-
- // 直接更新文本和百分比,移除动画效果
- const topQueryTypeElement = document.getElementById('top-query-type');
- const queryTypePercentageElement = document.getElementById('query-type-percentage');
- const activeIpsPercentElement = document.getElementById('active-ips-percent');
-
- if (topQueryTypeElement) topQueryTypeElement.textContent = topQueryType;
- if (queryTypePercentageElement) queryTypePercentageElement.textContent = `${Math.round(queryTypePercentage)}%`;
- if (activeIpsPercentElement) activeIpsPercentElement.textContent = `${Math.round(activeIPsPercentage)}%`;
-
- // 计算并平滑更新百分比
- if (totalQueries > 0) {
- updatePercentage('blocked-percent', `${Math.round((blockedQueries / totalQueries) * 100)}%`);
- updatePercentage('allowed-percent', `${Math.round((allowedQueries / totalQueries) * 100)}%`);
- updatePercentage('error-percent', `${Math.round((errorQueries / totalQueries) * 100)}%`);
- updatePercentage('queries-percent', '100%');
- } else {
- updatePercentage('queries-percent', '---');
- updatePercentage('blocked-percent', '---');
- updatePercentage('allowed-percent', '---');
- updatePercentage('error-percent', '---');
- }
-
-
-}
-
-// 更新Top屏蔽域名表格
-function updateTopBlockedTable(domains) {
- console.log('更新Top屏蔽域名表格,收到数据:', domains);
- const tableBody = document.getElementById('top-blocked-table');
-
- let tableData = [];
-
- // 适配不同的数据结构
- if (Array.isArray(domains)) {
- tableData = domains.map(item => ({
- name: item.name || item.domain || item[0] || '未知',
- count: item.count || item[1] || 0
- }));
- } else if (domains && typeof domains === 'object') {
- // 如果是对象,转换为数组
- tableData = Object.entries(domains).map(([domain, count]) => ({
- name: domain,
- count: count || 0
- }));
- }
-
- // 如果没有有效数据,提供示例数据
- if (tableData.length === 0) {
- tableData = [
- { name: '---.---.---', count: '---' },
- { name: '---.---.---', count: '---' },
- { name: '---.---.---', count: '---' }
- ];
- console.log('使用示例数据填充Top屏蔽域名表格');
- }
-
- let html = '';
- for (let i = 0; i < tableData.length && i < 5; i++) {
- const domain = tableData[i];
- html += `
-
-
-
- ${i + 1}
- ${domain.name}
-
-
-
${formatNumber(domain.count)}
-
- `;
- }
-
- tableBody.innerHTML = html;
-}
-
-// 更新最近屏蔽域名表格
-function updateRecentBlockedTable(domains) {
- console.log('更新最近屏蔽域名表格,收到数据:', domains);
- const tableBody = document.getElementById('recent-blocked-table');
-
- // 确保tableBody存在,因为最近屏蔽域名卡片可能已被移除
- if (!tableBody) {
- console.log('未找到recent-blocked-table元素,跳过更新');
- return;
- }
-
- let tableData = [];
-
- // 适配不同的数据结构
- if (Array.isArray(domains)) {
- tableData = domains.map(item => ({
- name: item.name || item.domain || item[0] || '未知',
- timestamp: item.timestamp || item.time || Date.now(),
- type: item.type || '广告'
- }));
- }
-
- // 如果没有有效数据,提供示例数据
- if (tableData.length === 0) {
- const now = Date.now();
- tableData = [
- { name: '---.---.---', timestamp: now - 5 * 60 * 1000, type: '广告' },
- { name: '---.---.---', timestamp: now - 15 * 60 * 1000, type: '恶意' },
- { name: '---.---.---', timestamp: now - 30 * 60 * 1000, type: '广告' },
- { name: '---.---.---', timestamp: now - 45 * 60 * 1000, type: '追踪' },
- { name: '---.---.---', timestamp: now - 60 * 60 * 1000, type: '恶意' }
- ];
- console.log('使用示例数据填充最近屏蔽域名表格');
- }
-
- let html = '';
- for (let i = 0; i < tableData.length && i < 5; i++) {
- const domain = tableData[i];
- const time = formatTime(domain.timestamp);
- html += `
-
-
-
${domain.name}
-
${time}
-
-
${domain.type}
-
- `;
- }
-
- tableBody.innerHTML = html;
-}
-
-// 更新TOP客户端表格
-function updateTopClientsTable(clients) {
- console.log('更新TOP客户端表格,收到数据:', clients);
- const tableBody = document.getElementById('top-clients-table');
-
- // 确保tableBody存在
- if (!tableBody) {
- console.error('未找到top-clients-table元素');
- return;
- }
-
- let tableData = [];
-
- // 适配不同的数据结构
- if (Array.isArray(clients)) {
- tableData = clients.map(item => ({
- ip: item.ip || item[0] || '未知',
- count: item.count || item[1] || 0
- }));
- } else if (clients && typeof clients === 'object') {
- // 如果是对象,转换为数组
- tableData = Object.entries(clients).map(([ip, count]) => ({
- ip,
- count: count || 0
- }));
- }
-
- // 如果没有有效数据,提供示例数据
- if (tableData.length === 0) {
- tableData = [
- { ip: '---.---.---', count: '---' },
- { ip: '---.---.---', count: '---' },
- { ip: '---.---.---', count: '---' },
- { ip: '---.---.---', count: '---' },
- { ip: '---.---.---', count: '---' }
- ];
- console.log('使用示例数据填充TOP客户端表格');
- }
-
- // 只显示前5个客户端
- tableData = tableData.slice(0, 5);
-
- let html = '';
- for (let i = 0; i < tableData.length; i++) {
- const client = tableData[i];
- html += `
-
-
-
- ${i + 1}
- ${client.ip}
-
-
-
${formatNumber(client.count)}
-
- `;
- }
-
- tableBody.innerHTML = html;
-}
-
-// 更新请求域名排行表格
-function updateTopDomainsTable(domains) {
- console.log('更新请求域名排行表格,收到数据:', domains);
- const tableBody = document.getElementById('top-domains-table');
-
- // 确保tableBody存在
- if (!tableBody) {
- console.error('未找到top-domains-table元素');
- return;
- }
-
- let tableData = [];
-
- // 适配不同的数据结构
- if (Array.isArray(domains)) {
- tableData = domains.map(item => ({
- name: item.domain || item.name || item[0] || '未知',
- count: item.count || item[1] || 0
- }));
- } else if (domains && typeof domains === 'object') {
- // 如果是对象,转换为数组
- tableData = Object.entries(domains).map(([domain, count]) => ({
- name: domain,
- count: count || 0
- }));
- }
-
- // 如果没有有效数据,提供示例数据
- if (tableData.length === 0) {
- tableData = [
- { name: 'example.com', count: 50 },
- { name: 'google.com', count: 45 },
- { name: 'facebook.com', count: 40 },
- { name: 'twitter.com', count: 35 },
- { name: 'youtube.com', count: 30 }
- ];
- console.log('使用示例数据填充请求域名排行表格');
- }
-
- // 只显示前5个域名
- tableData = tableData.slice(0, 5);
-
- let html = '';
- for (let i = 0; i < tableData.length; i++) {
- const domain = tableData[i];
- html += `
-
-
-
- ${i + 1}
- ${domain.name}${domain.dnssec ? ' ' : ''}
-
-
-
${formatNumber(domain.count)}
-
- `;
- }
-
- tableBody.innerHTML = html;
-}
-
-// 当前选中的时间范围
-let currentTimeRange = '24h'; // 默认为24小时
-let isMixedView = true; // 是否为混合视图 - 默认显示混合视图
-let lastSelectedIndex = 0; // 最后选中的按钮索引
-
-// 详细图表专用变量
-let detailedCurrentTimeRange = '24h'; // 详细图表当前时间范围
-let detailedIsMixedView = false; // 详细图表是否为混合视图
-
-// 初始化时间范围切换
-function initTimeRangeToggle() {
- console.log('初始化时间范围切换');
- // 查找所有可能的时间范围按钮类名
- const timeRangeButtons = document.querySelectorAll('.time-range-btn, .time-range-button, .timerange-btn, button[data-range]');
- console.log('找到时间范围按钮数量:', timeRangeButtons.length);
-
- if (timeRangeButtons.length === 0) {
- console.warn('未找到时间范围按钮,请检查HTML中的类名');
- return;
- }
-
- // 定义三个按钮的不同样式配置,增加activeHover属性
- const buttonStyles = [
- { // 24小时按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-blue-100'],
- active: ['bg-blue-500', 'text-white'],
- activeHover: ['hover:bg-blue-400'] // 选中时的浅色悬停
- },
- { // 7天按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-green-100'],
- active: ['bg-green-500', 'text-white'],
- activeHover: ['hover:bg-green-400'] // 选中时的浅色悬停
- },
- { // 30天按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-purple-100'],
- active: ['bg-purple-500', 'text-white'],
- activeHover: ['hover:bg-purple-400'] // 选中时的浅色悬停
- },
- { // 混合视图按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-gray-200'],
- active: ['bg-gray-500', 'text-white'],
- activeHover: ['hover:bg-gray-400'] // 选中时的浅色悬停
- }
- ];
-
- // 为所有按钮设置初始样式和事件
- timeRangeButtons.forEach((button, index) => {
- // 使用相应的样式配置
- const styleConfig = buttonStyles[index % buttonStyles.length];
-
- // 移除所有按钮的初始样式
- button.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-gray-200', 'text-gray-700',
- 'bg-green-500', 'bg-purple-500', 'bg-gray-100');
-
- // 设置非选中状态样式
- button.classList.add('transition-colors', 'duration-200');
- button.classList.add(...styleConfig.normal);
- button.classList.add(...styleConfig.hover);
-
- // 移除鼠标悬停提示
-
- console.log('为按钮设置初始样式:', button.textContent.trim(), '索引:', index, '类名:', Array.from(button.classList).join(', '));
-
- button.addEventListener('click', function(event) {
- event.preventDefault();
- event.stopPropagation();
-
- console.log('点击按钮:', button.textContent.trim(), '索引:', index);
-
- // 检查是否是再次点击已选中的按钮
- const isActive = button.classList.contains('active');
-
- // 重置所有按钮为非选中状态
- timeRangeButtons.forEach((btn, btnIndex) => {
- const btnStyle = buttonStyles[btnIndex % buttonStyles.length];
-
- // 移除所有可能的激活状态类
- btn.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-green-500', 'bg-purple-500', 'bg-gray-500');
- btn.classList.remove(...btnStyle.active);
- btn.classList.remove(...btnStyle.activeHover);
-
- // 添加非选中状态类
- btn.classList.add(...btnStyle.normal);
- btn.classList.add(...btnStyle.hover);
- });
-
- if (isActive && index < 3) { // 再次点击已选中的时间范围按钮
- // 切换到混合视图
- isMixedView = true;
- currentTimeRange = 'mixed';
- console.log('切换到混合视图');
-
- // 设置当前按钮为特殊混合视图状态(保持原按钮选中但添加混合视图标记)
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active', 'mixed-view-active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover); // 添加选中时的浅色悬停
- } else {
- // 普通选中模式
- isMixedView = false;
- lastSelectedIndex = index;
-
- // 设置当前按钮为激活状态
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover); // 添加选中时的浅色悬停
-
- // 获取并更新当前时间范围
- let rangeValue;
- if (button.dataset.range) {
- rangeValue = button.dataset.range;
- } else {
- const btnText = button.textContent.trim();
- if (btnText.includes('24')) {
- rangeValue = '24h';
- } else if (btnText.includes('7')) {
- rangeValue = '7d';
- } else if (btnText.includes('30')) {
- rangeValue = '30d';
- } else {
- rangeValue = btnText.replace(/[^0-9a-zA-Z]/g, '');
- }
- }
- currentTimeRange = rangeValue;
- console.log('更新时间范围为:', currentTimeRange);
- }
-
- // 重新加载数据
- loadDashboardData();
- // 更新DNS请求图表
- drawDNSRequestsChart();
- });
-
- // 移除自定义鼠标悬停提示效果
- });
-
- // 确保默认选中第一个按钮并显示混合内容
- if (timeRangeButtons.length > 0) {
- const firstButton = timeRangeButtons[0];
- const firstStyle = buttonStyles[0];
-
- // 先重置所有按钮
- timeRangeButtons.forEach((btn, index) => {
- const btnStyle = buttonStyles[index % buttonStyles.length];
- btn.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-green-500', 'bg-purple-500', 'bg-gray-500', 'mixed-view-active');
- btn.classList.remove(...btnStyle.active);
- btn.classList.remove(...btnStyle.activeHover);
- btn.classList.add(...btnStyle.normal);
- btn.classList.add(...btnStyle.hover);
- });
-
- // 然后设置第一个按钮为激活状态,并标记为混合视图
- firstButton.classList.remove(...firstStyle.normal);
- firstButton.classList.remove(...firstStyle.hover);
- firstButton.classList.add('active', 'mixed-view-active');
- firstButton.classList.add(...firstStyle.active);
- firstButton.classList.add(...firstStyle.activeHover);
- console.log('默认选中第一个按钮并显示混合内容:', firstButton.textContent.trim());
-
- // 设置默认显示混合内容
- isMixedView = true;
- currentTimeRange = 'mixed';
- }
-}
-
-// 注意:这个函数已被后面的实现覆盖,请使用后面的drawDetailedDNSRequestsChart函数
-
-// 初始化图表
-function initCharts() {
- // 初始化比例图表
- const ratioChartElement = document.getElementById('ratio-chart');
- if (!ratioChartElement) {
- console.error('未找到比例图表元素');
- return;
- }
- const ratioCtx = ratioChartElement.getContext('2d');
- ratioChart = new Chart(ratioCtx, {
- type: 'doughnut',
- data: {
- labels: ['正常解析', '被屏蔽', '错误'],
- datasets: [{
- data: ['---', '---', '---'],
- backgroundColor: ['#00B42A', '#F53F3F', '#FF7D00'],
- borderWidth: 2, // 添加边框宽度,增强区块分隔
- borderColor: '#fff', // 白色边框,使各个扇区更清晰
- hoverOffset: 10, // 添加悬停偏移效果,增强交互体验
- hoverBorderWidth: 3 // 悬停时增加边框宽度
- }]
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- // 添加全局动画配置,确保图表创建和更新时都平滑过渡
- animation: {
- duration: 500, // 延长动画时间,使过渡更平滑
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- position: 'bottom',
- labels: {
- boxWidth: 12, // 减小图例框的宽度
- font: {
- size: 11 // 减小字体大小
- },
- padding: 10 // 减小内边距
- }
- },
- tooltip: {
- enabled: true,
- backgroundColor: 'rgba(0, 0, 0, 0.8)',
- padding: 10,
- titleFont: {
- size: 12
- },
- bodyFont: {
- size: 11
- },
- callbacks: {
- label: function(context) {
- const label = context.label || '';
- const value = context.raw || 0;
- const total = context.dataset.data.reduce((acc, val) => acc + (typeof val === 'number' ? val : 0), 0);
- const percentage = total > 0 ? Math.round((value / total) * 100) : 0;
- return `${label}: ${value} (${percentage}%)`;
- }
- }
- }
- },
- cutout: '65%', // 减小中心空白区域比例,增大扇形区域以更好显示线段指示
- // 添加线段指示相关配置
- elements: {
- arc: {
- // 确保圆弧绘制时有足够的精度
- borderAlign: 'center',
- tension: 0.1 // 添加轻微的张力,使圆弧更平滑
- }
- }
- }
- });
-
- // 初始化解析类型统计饼图
- const queryTypeChartElement = document.getElementById('query-type-chart');
- if (queryTypeChartElement) {
- const queryTypeCtx = queryTypeChartElement.getContext('2d');
- // 预定义的颜色数组,用于解析类型
- const queryTypeColors = ['#3498db', '#e74c3c', '#2ecc71', '#f39c12', '#9b59b6', '#1abc9c', '#d35400', '#34495e'];
-
- queryTypeChart = new Chart(queryTypeCtx, {
- type: 'doughnut',
- data: {
- labels: ['暂无数据'],
- datasets: [{
- data: [1],
- backgroundColor: [queryTypeColors[0]],
- borderWidth: 2, // 添加边框宽度,增强区块分隔
- borderColor: '#fff', // 白色边框,使各个扇区更清晰
- hoverOffset: 10, // 添加悬停偏移效果,增强交互体验
- hoverBorderWidth: 3 // 悬停时增加边框宽度
- }]
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- // 添加全局动画配置,确保图表创建和更新时都平滑过渡
- animation: {
- duration: 300,
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- position: 'bottom',
- labels: {
- boxWidth: 12, // 减小图例框的宽度
- font: {
- size: 11 // 减小字体大小
- },
- padding: 10 // 减小内边距
- }
- },
- tooltip: {
- enabled: true,
- backgroundColor: 'rgba(0, 0, 0, 0.8)',
- padding: 10,
- titleFont: {
- size: 12
- },
- bodyFont: {
- size: 11
- },
- callbacks: {
- label: function(context) {
- const label = context.label || '';
- const value = context.raw || 0;
- const total = context.dataset.data.reduce((acc, val) => acc + (typeof val === 'number' ? val : 0), 0);
- const percentage = total > 0 ? Math.round((value / total) * 100) : 0;
- return `${label}: ${value} (${percentage}%)`;
- }
- }
- }
- },
- cutout: '65%', // 减小中心空白区域比例,增大扇形区域以更好显示线段指示
- // 添加线段指示相关配置
- elements: {
- arc: {
- // 确保圆弧绘制时有足够的精度
- borderAlign: 'center',
- tension: 0.1 // 添加轻微的张力,使圆弧更平滑
- }
- }
- }
- });
- } else {
- console.warn('未找到解析类型统计图表元素');
- }
-
- // 初始化DNS请求统计图表
- drawDNSRequestsChart();
-
- // 初始化展开按钮功能
- initExpandButton();
-}
-
-// 初始化展开按钮事件
-function initExpandButton() {
- const expandBtn = document.getElementById('expand-chart-btn');
- const chartModal = document.getElementById('chart-modal');
- const closeModalBtn = document.getElementById('close-modal-btn'); // 修复ID匹配
-
- // 添加调试日志
- console.log('初始化展开按钮功能:', { expandBtn, chartModal, closeModalBtn });
-
- if (expandBtn && chartModal && closeModalBtn) {
- // 展开按钮点击事件
- expandBtn.addEventListener('click', () => {
- console.log('展开按钮被点击');
- // 显示浮窗
- chartModal.classList.remove('hidden');
-
- // 初始化或更新详细图表
- drawDetailedDNSRequestsChart();
-
- // 初始化浮窗中的时间范围切换
- initDetailedTimeRangeToggle();
-
- // 延迟更新图表大小,确保容器大小已计算
- setTimeout(() => {
- if (detailedDnsRequestsChart) {
- detailedDnsRequestsChart.resize();
- }
- }, 100);
- });
-
- // 关闭按钮点击事件
- closeModalBtn.addEventListener('click', () => {
- console.log('关闭按钮被点击');
- chartModal.classList.add('hidden');
- });
-
- // 点击遮罩层关闭浮窗(使用chartModal作为遮罩层)
- chartModal.addEventListener('click', (e) => {
- // 检查点击目标是否是遮罩层本身(即最外层div)
- if (e.target === chartModal) {
- console.log('点击遮罩层关闭');
- chartModal.classList.add('hidden');
- }
- });
-
- // ESC键关闭浮窗
- document.addEventListener('keydown', (e) => {
- if (e.key === 'Escape' && !chartModal.classList.contains('hidden')) {
- console.log('ESC键关闭浮窗');
- chartModal.classList.add('hidden');
- }
- });
- } else {
- console.error('无法找到必要的DOM元素');
- }
-}
-
-// 初始化详细图表的时间范围切换
-function initDetailedTimeRangeToggle() {
- // 只选择图表模态框内的时间范围按钮,避免与主视图冲突
- const chartModal = document.getElementById('chart-modal');
- const detailedTimeRangeButtons = chartModal ? chartModal.querySelectorAll('.time-range-btn') : [];
-
- console.log('初始化详细图表时间范围切换,找到按钮数量:', detailedTimeRangeButtons.length);
-
- // 初始化详细图表的默认状态,与主图表保持一致
- detailedCurrentTimeRange = currentTimeRange;
- detailedIsMixedView = isMixedView;
-
- // 定义按钮样式配置,与主视图保持一致
- const buttonStyles = [
- { // 24小时按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-blue-100'],
- active: ['bg-blue-500', 'text-white'],
- activeHover: ['hover:bg-blue-400']
- },
- { // 7天按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-green-100'],
- active: ['bg-green-500', 'text-white'],
- activeHover: ['hover:bg-green-400']
- },
- { // 30天按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-purple-100'],
- active: ['bg-purple-500', 'text-white'],
- activeHover: ['hover:bg-purple-400']
- },
- { // 混合视图按钮
- normal: ['bg-gray-100', 'text-gray-700'],
- hover: ['hover:bg-gray-200'],
- active: ['bg-gray-500', 'text-white'],
- activeHover: ['hover:bg-gray-400']
- }
- ];
-
- // 设置初始按钮状态
- detailedTimeRangeButtons.forEach((button, index) => {
- const styleConfig = buttonStyles[index % buttonStyles.length];
-
- // 移除所有初始样式
- button.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-gray-200', 'text-gray-700',
- 'bg-green-500', 'bg-purple-500', 'bg-gray-100', 'mixed-view-active');
-
- // 设置非选中状态样式
- button.classList.add('transition-colors', 'duration-200');
- button.classList.add(...styleConfig.normal);
- button.classList.add(...styleConfig.hover);
-
- // 如果是第一个按钮且当前是混合视图,设置为混合视图激活状态
- if (index === 0 && detailedIsMixedView) {
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active', 'mixed-view-active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover);
- }
- });
-
- detailedTimeRangeButtons.forEach((button, index) => {
- button.addEventListener('click', () => {
- const styleConfig = buttonStyles[index % buttonStyles.length];
-
- // 检查是否是再次点击已选中的按钮
- const isActive = button.classList.contains('active');
-
- // 重置所有按钮为非选中状态
- detailedTimeRangeButtons.forEach((btn, btnIndex) => {
- const btnStyle = buttonStyles[btnIndex % buttonStyles.length];
-
- // 移除所有可能的激活状态类
- btn.classList.remove('active', 'bg-blue-500', 'text-white', 'bg-green-500', 'bg-purple-500', 'bg-gray-500', 'mixed-view-active');
- btn.classList.remove(...btnStyle.active);
- btn.classList.remove(...btnStyle.activeHover);
-
- // 添加非选中状态类
- btn.classList.add(...btnStyle.normal);
- btn.classList.add(...btnStyle.hover);
- });
-
- if (isActive && index < 3) { // 再次点击已选中的时间范围按钮
- // 切换到混合视图
- detailedIsMixedView = true;
- detailedCurrentTimeRange = 'mixed';
- console.log('详细图表切换到混合视图');
-
- // 设置当前按钮为特殊混合视图状态
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active', 'mixed-view-active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover);
- } else {
- // 普通选中模式
- detailedIsMixedView = false;
-
- // 设置当前按钮为激活状态
- button.classList.remove(...styleConfig.normal);
- button.classList.remove(...styleConfig.hover);
- button.classList.add('active');
- button.classList.add(...styleConfig.active);
- button.classList.add(...styleConfig.activeHover);
-
- // 获取并更新当前时间范围
- let rangeValue;
- if (button.dataset.range) {
- rangeValue = button.dataset.range;
- } else {
- const btnText = button.textContent.trim();
- if (btnText.includes('24')) {
- rangeValue = '24h';
- } else if (btnText.includes('7')) {
- rangeValue = '7d';
- } else if (btnText.includes('30')) {
- rangeValue = '30d';
- } else {
- rangeValue = btnText.replace(/[^0-9a-zA-Z]/g, '');
- }
- }
- detailedCurrentTimeRange = rangeValue;
- console.log('详细图表更新时间范围为:', detailedCurrentTimeRange);
- }
-
- // 重新绘制详细图表
- drawDetailedDNSRequestsChart();
- });
- });
-}
-
-// 绘制详细的DNS请求趋势图表
-function drawDetailedDNSRequestsChart() {
- console.log('绘制详细DNS请求趋势图表,时间范围:', detailedCurrentTimeRange, '混合视图:', detailedIsMixedView);
-
- const ctx = document.getElementById('detailed-dns-requests-chart');
- if (!ctx) {
- console.error('未找到详细DNS请求图表元素');
- return;
- }
-
- const chartContext = ctx.getContext('2d');
-
- // 混合视图配置
- const datasetsConfig = [
- { label: '24小时', api: (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#3b82f6', fillColor: 'rgba(59, 130, 246, 0.1)' },
- { label: '7天', api: (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#22c55e', fillColor: 'rgba(34, 197, 94, 0.1)' },
- { label: '30天', api: (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#a855f7', fillColor: 'rgba(168, 85, 247, 0.1)' }
- ];
-
- // 检查是否为混合视图
- if (detailedIsMixedView || detailedCurrentTimeRange === 'mixed') {
- console.log('渲染混合视图详细图表');
-
- // 显示图例
- const showLegend = true;
-
- // 获取所有时间范围的数据
- Promise.all(datasetsConfig.map(config =>
- config.api().catch(error => {
- console.error(`获取${config.label}数据失败:`, error);
- // 返回空数据
- const count = config.label === '24小时' ? 24 : (config.label === '7天' ? 7 : 30);
- return {
- labels: Array(count).fill(''),
- data: Array(count).fill(0)
- };
- })
- )).then(results => {
- // 创建数据集
- const datasets = results.map((data, index) => ({
- label: datasetsConfig[index].label,
- data: data.data,
- borderColor: datasetsConfig[index].color,
- backgroundColor: datasetsConfig[index].fillColor,
- tension: 0.4,
- fill: false,
- borderWidth: 2
- }));
-
- // 创建或更新图表
- if (detailedDnsRequestsChart) {
- detailedDnsRequestsChart.data.labels = results[0].labels;
- detailedDnsRequestsChart.data.datasets = datasets;
- detailedDnsRequestsChart.options.plugins.legend.display = showLegend;
- // 使用平滑过渡动画更新图表
- detailedDnsRequestsChart.update({
- duration: 800,
- easing: 'easeInOutQuart'
- });
- } else {
- detailedDnsRequestsChart = new Chart(chartContext, {
- type: 'line',
- data: {
- labels: results[0].labels,
- datasets: datasets
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- animation: {
- duration: 800,
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- display: showLegend,
- position: 'top'
- },
- tooltip: {
- mode: 'index',
- intersect: false
- }
- },
- scales: {
- y: {
- beginAtZero: true,
- grid: {
- color: 'rgba(0, 0, 0, 0.1)'
- }
- },
- x: {
- grid: {
- display: false
- }
- }
- }
- }
- });
- }
- }).catch(error => {
- console.error('绘制混合视图详细图表失败:', error);
- });
- } else {
- // 普通视图
- // 根据详细视图时间范围选择API函数和对应的颜色
- let apiFunction;
- let chartColor;
- let chartFillColor;
-
- switch (detailedCurrentTimeRange) {
- case '7d':
- apiFunction = (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#22c55e'; // 绿色,与混合视图中的7天数据颜色一致
- chartFillColor = 'rgba(34, 197, 94, 0.1)';
- break;
- case '30d':
- apiFunction = (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#a855f7'; // 紫色,与混合视图中的30天数据颜色一致
- chartFillColor = 'rgba(168, 85, 247, 0.1)';
- break;
- default: // 24h
- apiFunction = (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#3b82f6'; // 蓝色,与混合视图中的24小时数据颜色一致
- chartFillColor = 'rgba(59, 130, 246, 0.1)';
- }
-
- // 获取统计数据
- apiFunction().then(data => {
- // 创建或更新图表
- if (detailedDnsRequestsChart) {
- detailedDnsRequestsChart.data.labels = data.labels;
- detailedDnsRequestsChart.data.datasets = [{
- label: 'DNS请求数量',
- data: data.data,
- borderColor: chartColor,
- backgroundColor: chartFillColor,
- tension: 0.4,
- fill: true
- }];
- detailedDnsRequestsChart.options.plugins.legend.display = false;
- // 使用平滑过渡动画更新图表
- detailedDnsRequestsChart.update({
- duration: 800,
- easing: 'easeInOutQuart'
- });
- } else {
- detailedDnsRequestsChart = new Chart(chartContext, {
- type: 'line',
- data: {
- labels: data.labels,
- datasets: [{
- label: 'DNS请求数量',
- data: data.data,
- borderColor: chartColor,
- backgroundColor: chartFillColor,
- tension: 0.4,
- fill: true
- }]
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- animation: {
- duration: 800,
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- display: false
- },
- title: {
- display: true,
- text: 'DNS请求趋势',
- font: {
- size: 14
- }
- },
- tooltip: {
- mode: 'index',
- intersect: false
- }
- },
- scales: {
- y: {
- beginAtZero: true,
- grid: {
- color: 'rgba(0, 0, 0, 0.1)'
- }
- },
- x: {
- grid: {
- display: false
- }
- }
- }
- }
- });
- }
- }).catch(error => {
- console.error('绘制详细DNS请求图表失败:', error);
- // 错误处理:使用空数据
- const count = detailedCurrentTimeRange === '24h' ? 24 : (detailedCurrentTimeRange === '7d' ? 7 : 30);
- const emptyData = {
- labels: Array(count).fill(''),
- data: Array(count).fill(0)
- };
-
- if (detailedDnsRequestsChart) {
- detailedDnsRequestsChart.data.labels = emptyData.labels;
- detailedDnsRequestsChart.data.datasets[0].data = emptyData.data;
- detailedDnsRequestsChart.update();
- }
- });
- }
-}
-
-// 绘制DNS请求统计图表
-function drawDNSRequestsChart() {
- const ctx = document.getElementById('dns-requests-chart');
- if (!ctx) {
- console.error('未找到DNS请求图表元素');
- return;
- }
-
- const chartContext = ctx.getContext('2d');
-
- // 混合视图配置
- const datasetsConfig = [
- { label: '24小时', api: (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#3b82f6', fillColor: 'rgba(59, 130, 246, 0.1)' },
- { label: '7天', api: (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#22c55e', fillColor: 'rgba(34, 197, 94, 0.1)' },
- { label: '30天', api: (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] })), color: '#a855f7', fillColor: 'rgba(168, 85, 247, 0.1)' }
- ];
-
- // 检查是否为混合视图
- if (isMixedView || currentTimeRange === 'mixed') {
- console.log('渲染混合视图图表');
-
- // 显示图例
- const showLegend = true;
-
- // 获取所有时间范围的数据
- Promise.all(datasetsConfig.map(config =>
- config.api().catch(error => {
- console.error(`获取${config.label}数据失败:`, error);
- // 返回空数据而不是模拟数据
- const count = config.label === '24小时' ? 24 : (config.label === '7天' ? 7 : 30);
- return {
- labels: Array(count).fill(''),
- data: Array(count).fill(0)
- };
- })
- )).then(results => {
- // 创建数据集
- const datasets = results.map((data, index) => ({
- label: datasetsConfig[index].label,
- data: data.data,
- borderColor: datasetsConfig[index].color,
- backgroundColor: datasetsConfig[index].fillColor,
- tension: 0.4,
- fill: false, // 混合视图不填充
- borderWidth: 2
- }));
-
- // 创建或更新图表
- if (dnsRequestsChart) {
- // 使用第一个数据集的标签,但确保每个数据集使用自己的数据
- dnsRequestsChart.data.labels = results[0].labels;
- dnsRequestsChart.data.datasets = datasets;
- dnsRequestsChart.options.plugins.legend.display = showLegend;
- // 使用平滑过渡动画更新图表
- dnsRequestsChart.update({
- duration: 800,
- easing: 'easeInOutQuart'
- });
- } else {
- dnsRequestsChart = new Chart(chartContext, {
- type: 'line',
- data: {
- labels: results[0].labels,
- datasets: datasets
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- animation: {
- duration: 800,
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- display: showLegend,
- position: 'top'
- },
- tooltip: {
- mode: 'index',
- intersect: false
- }
- },
- scales: {
- y: {
- beginAtZero: true,
- grid: {
- color: 'rgba(0, 0, 0, 0.1)'
- }
- },
- x: {
- grid: {
- display: false
- }
- }
- }
- }
- });
- }
- }).catch(error => {
- console.error('绘制混合视图图表失败:', error);
- });
- } else {
- // 普通视图
- // 根据当前时间范围选择API函数和对应的颜色
- let apiFunction;
- let chartColor;
- let chartFillColor;
-
- switch (currentTimeRange) {
- case '7d':
- apiFunction = (api && api.getDailyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#22c55e'; // 绿色,与混合视图中的7天数据颜色一致
- chartFillColor = 'rgba(34, 197, 94, 0.1)';
- break;
- case '30d':
- apiFunction = (api && api.getMonthlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#a855f7'; // 紫色,与混合视图中的30天数据颜色一致
- chartFillColor = 'rgba(168, 85, 247, 0.1)';
- break;
- default: // 24h
- apiFunction = (api && api.getHourlyStats) || (() => Promise.resolve({ labels: [], data: [] }));
- chartColor = '#3b82f6'; // 蓝色,与混合视图中的24小时数据颜色一致
- chartFillColor = 'rgba(59, 130, 246, 0.1)';
- }
-
- // 获取统计数据
- apiFunction().then(data => {
- // 创建或更新图表
- if (dnsRequestsChart) {
- dnsRequestsChart.data.labels = data.labels;
- dnsRequestsChart.data.datasets = [{
- label: 'DNS请求数量',
- data: data.data,
- borderColor: chartColor,
- backgroundColor: chartFillColor,
- tension: 0.4,
- fill: true
- }];
- dnsRequestsChart.options.plugins.legend.display = false;
- // 使用平滑过渡动画更新图表
- dnsRequestsChart.update({
- duration: 800,
- easing: 'easeInOutQuart'
- });
- } else {
- dnsRequestsChart = new Chart(chartContext, {
- type: 'line',
- data: {
- labels: data.labels,
- datasets: [{
- label: 'DNS请求数量',
- data: data.data,
- borderColor: chartColor,
- backgroundColor: chartFillColor,
- tension: 0.4,
- fill: true
- }]
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- animation: {
- duration: 800,
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- display: false
- },
- tooltip: {
- mode: 'index',
- intersect: false
- }
- },
- scales: {
- y: {
- beginAtZero: true,
- grid: {
- color: 'rgba(0, 0, 0, 0.1)'
- }
- },
- x: {
- grid: {
- display: false
- }
- }
- }
- }
- });
- }
- }).catch(error => {
- console.error('绘制DNS请求图表失败:', error);
- // 错误处理:使用空数据而不是模拟数据
- const count = currentTimeRange === '24h' ? 24 : (currentTimeRange === '7d' ? 7 : 30);
- const emptyData = {
- labels: Array(count).fill(''),
- data: Array(count).fill(0)
- };
-
- if (dnsRequestsChart) {
- dnsRequestsChart.data.labels = emptyData.labels;
- dnsRequestsChart.data.datasets[0].data = emptyData.data;
- dnsRequestsChart.update();
- }
- });
- }
-}
-
-// 更新图表数据
-function updateCharts(stats, queryTypeStats) {
- console.log('更新图表,收到统计数据:', stats);
- console.log('查询类型统计数据:', queryTypeStats);
-
- // 空值检查
- if (!stats) {
- console.error('更新图表失败: 未提供统计数据');
- return;
- }
-
- // 更新比例图表
- if (ratioChart) {
- let allowed = '---', blocked = '---', error = '---';
-
- // 尝试从stats数据中提取
- if (stats.dns) {
- allowed = stats.dns.Allowed || allowed;
- blocked = stats.dns.Blocked || blocked;
- error = stats.dns.Errors || error;
- } else if (stats.totalQueries !== undefined) {
- allowed = stats.allowedQueries || allowed;
- blocked = stats.blockedQueries || blocked;
- error = stats.errorQueries || error;
- }
-
- ratioChart.data.datasets[0].data = [allowed, blocked, error];
- // 使用自定义动画配置更新图表,确保平滑过渡
- ratioChart.update({
- duration: 500,
- easing: 'easeInOutQuart'
- });
- }
-
- // 更新解析类型统计饼图
- if (queryTypeChart && queryTypeStats && Array.isArray(queryTypeStats)) {
- const queryTypeColors = ['#3498db', '#e74c3c', '#2ecc71', '#f39c12', '#9b59b6', '#1abc9c', '#d35400', '#34495e'];
-
- // 检查是否有有效的数据项
- const validData = queryTypeStats.filter(item => item && item.count > 0);
-
- if (validData.length > 0) {
- // 准备标签和数据
- const labels = validData.map(item => item.type);
- const data = validData.map(item => item.count);
-
- // 为每个解析类型分配颜色
- const colors = labels.map((_, index) => queryTypeColors[index % queryTypeColors.length]);
-
- // 更新图表数据
- queryTypeChart.data.labels = labels;
- queryTypeChart.data.datasets[0].data = data;
- queryTypeChart.data.datasets[0].backgroundColor = colors;
- } else {
- // 如果没有数据,显示默认值
- queryTypeChart.data.labels = ['暂无数据'];
- queryTypeChart.data.datasets[0].data = [1];
- queryTypeChart.data.datasets[0].backgroundColor = [queryTypeColors[0]];
- }
-
- // 使用自定义动画配置更新图表,确保平滑过渡
- queryTypeChart.update({
- duration: 500,
- easing: 'easeInOutQuart'
- });
- }
-}
-
-// 更新统计卡片折线图
-function updateStatCardCharts(stats) {
- if (!stats || Object.keys(statCardCharts).length === 0) {
- return;
- }
-
- // 更新查询总量图表
- if (statCardCharts['query-chart']) {
- let queryCount = 0;
- if (stats.dns) {
- queryCount = stats.dns.Queries || 0;
- } else if (stats.totalQueries !== undefined) {
- queryCount = stats.totalQueries || 0;
- }
- updateChartData('query-chart', queryCount);
- }
-
- // 更新屏蔽数量图表
- if (statCardCharts['blocked-chart']) {
- let blockedCount = 0;
- if (stats.dns) {
- blockedCount = stats.dns.Blocked || 0;
- } else if (stats.blockedQueries !== undefined) {
- blockedCount = stats.blockedQueries || 0;
- }
- updateChartData('blocked-chart', blockedCount);
- }
-
- // 更新正常解析图表
- if (statCardCharts['allowed-chart']) {
- let allowedCount = 0;
- if (stats.dns) {
- allowedCount = stats.dns.Allowed || 0;
- } else if (stats.allowedQueries !== undefined) {
- allowedCount = stats.allowedQueries || 0;
- } else if (stats.dns && stats.dns.Queries && stats.dns.Blocked) {
- allowedCount = stats.dns.Queries - stats.dns.Blocked;
- }
- updateChartData('allowed-chart', allowedCount);
- }
-
- // 更新错误数量图表
- if (statCardCharts['error-chart']) {
- let errorCount = 0;
- if (stats.dns) {
- errorCount = stats.dns.Errors || 0;
- } else if (stats.errorQueries !== undefined) {
- errorCount = stats.errorQueries || 0;
- }
- updateChartData('error-chart', errorCount);
- }
-
- // 更新响应时间图表
- if (statCardCharts['response-time-chart']) {
- let responseTime = 0;
- // 尝试从不同的数据结构获取平均响应时间
- if (stats.dns && stats.dns.AvgResponseTime) {
- responseTime = stats.dns.AvgResponseTime;
- } else if (stats.avgResponseTime !== undefined) {
- responseTime = stats.avgResponseTime;
- } else if (stats.responseTime) {
- responseTime = stats.responseTime;
- }
- // 限制小数位数为两位
- responseTime = parseFloat(responseTime).toFixed(2);
- updateChartData('response-time-chart', responseTime);
- }
-
- // 更新活跃IP图表
- if (statCardCharts['ips-chart']) {
- const activeIPs = stats.activeIPs || 0;
- updateChartData('ips-chart', activeIPs);
- }
-
- // 更新CPU使用率图表
- if (statCardCharts['cpu-chart']) {
- const cpuUsage = stats.cpuUsage || 0;
- updateChartData('cpu-chart', cpuUsage);
- }
-
- // 更新平均响应时间显示
- if (document.getElementById('avg-response-time')) {
- let avgResponseTime = 0;
- // 尝试从不同的数据结构获取平均响应时间
- if (stats.dns && stats.dns.AvgResponseTime) {
- avgResponseTime = stats.dns.AvgResponseTime;
- } else if (stats.avgResponseTime !== undefined) {
- avgResponseTime = stats.avgResponseTime;
- } else if (stats.responseTime) {
- avgResponseTime = stats.responseTime;
- }
- document.getElementById('avg-response-time').textContent = formatNumber(avgResponseTime);
- }
-
- // 更新规则数图表
- if (statCardCharts['rules-chart']) {
- // 尝试获取规则数,如果没有则使用模拟数据
- const rulesCount = getRulesCountFromStats(stats) || Math.floor(Math.random() * 5000) + 10000;
- updateChartData('rules-chart', rulesCount);
- }
-
- // 更新排除规则数图表
- if (statCardCharts['exceptions-chart']) {
- const exceptionsCount = getExceptionsCountFromStats(stats) || Math.floor(Math.random() * 100) + 50;
- updateChartData('exceptions-chart', exceptionsCount);
- }
-
- // 更新Hosts条目数图表
- if (statCardCharts['hosts-chart']) {
- const hostsCount = getHostsCountFromStats(stats) || Math.floor(Math.random() * 1000) + 2000;
- updateChartData('hosts-chart', hostsCount);
- }
-}
-
-// 更新单个图表的数据
-function updateChartData(chartId, newValue) {
- const chart = statCardCharts[chartId];
- const historyData = statCardHistoryData[chartId];
-
- if (!chart || !historyData) {
- return;
- }
-
- // 添加新数据,移除最旧的数据
- historyData.push(newValue);
- if (historyData.length > 12) {
- historyData.shift();
- }
-
- // 更新图表数据
- chart.data.datasets[0].data = historyData;
- chart.data.labels = generateTimeLabels(historyData.length);
-
- // 使用自定义动画配置更新图表,确保平滑过渡,避免空白区域
- chart.update({
- duration: 300, // 增加动画持续时间
- easing: 'easeInOutQuart', // 使用平滑的缓动函数
- transition: {
- duration: 300,
- easing: 'easeInOutQuart'
- }
- });
-}
-
-// 从统计数据中获取规则数
-function getRulesCountFromStats(stats) {
- // 尝试从stats中获取规则数
- if (stats.shield && stats.shield.rules) {
- return stats.shield.rules;
- }
- return null;
-}
-
-// 从统计数据中获取排除规则数
-function getExceptionsCountFromStats(stats) {
- // 尝试从stats中获取排除规则数
- if (stats.shield && stats.shield.exceptions) {
- return stats.shield.exceptions;
- }
- return null;
-}
-
-// 从统计数据中获取Hosts条目数
-function getHostsCountFromStats(stats) {
- // 尝试从stats中获取Hosts条目数
- if (stats.shield && stats.shield.hosts) {
- return stats.shield.hosts;
- }
- return null;
-}
-
-// 初始化统计卡片折线图
-function initStatCardCharts() {
- console.log('===== 开始初始化统计卡片折线图 =====');
-
- // 清理已存在的图表实例
- for (const key in statCardCharts) {
- if (statCardCharts.hasOwnProperty(key)) {
- statCardCharts[key].destroy();
- }
- }
- statCardCharts = {};
- statCardHistoryData = {};
-
- // 检查Chart.js是否加载
- console.log('Chart.js是否可用:', typeof Chart !== 'undefined');
-
- // 统计卡片配置信息
- const cardConfigs = [
- { id: 'query-chart', color: '#9b59b6', label: '查询总量' },
- { id: 'blocked-chart', color: '#e74c3c', label: '屏蔽数量' },
- { id: 'allowed-chart', color: '#2ecc71', label: '正常解析' },
- { id: 'error-chart', color: '#f39c12', label: '错误数量' },
- { id: 'response-time-chart', color: '#3498db', label: '响应时间' },
- { id: 'ips-chart', color: '#1abc9c', label: '活跃IP' },
- { id: 'cpu-chart', color: '#e67e22', label: 'CPU使用率' },
- { id: 'rules-chart', color: '#95a5a6', label: '屏蔽规则数' },
- { id: 'exceptions-chart', color: '#34495e', label: '排除规则数' },
- { id: 'hosts-chart', color: '#16a085', label: 'Hosts条目数' }
- ];
-
- console.log('图表配置:', cardConfigs);
-
- cardConfigs.forEach(config => {
- const canvas = document.getElementById(config.id);
- if (!canvas) {
- console.warn(`未找到统计卡片图表元素: ${config.id}`);
- return;
- }
-
- const ctx = canvas.getContext('2d');
-
- // 为不同类型的卡片生成更合适的初始数据
- let initialData;
- if (config.id === 'response-time-chart') {
- // 响应时间图表使用空数组,将通过API实时数据更新
- initialData = Array(12).fill(null);
- } else if (config.id === 'cpu-chart') {
- initialData = generateMockData(12, 0, 10);
- } else {
- initialData = generateMockData(12, 0, 100);
- }
-
- // 初始化历史数据数组
- statCardHistoryData[config.id] = [...initialData];
-
- // 创建图表
- statCardCharts[config.id] = new Chart(ctx, {
- type: 'line',
- data: {
- labels: generateTimeLabels(12),
- datasets: [{
- label: config.label,
- data: initialData,
- borderColor: config.color,
- backgroundColor: `${config.color}20`, // 透明度20%
- borderWidth: 2,
- tension: 0.4,
- fill: true,
- pointRadius: 0, // 隐藏数据点
- pointHoverRadius: 4, // 鼠标悬停时显示数据点
- pointBackgroundColor: config.color
- }]
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- // 添加动画配置,确保平滑过渡
- animation: {
- duration: 800,
- easing: 'easeInOutQuart'
- },
- plugins: {
- legend: {
- display: false
- },
- tooltip: {
- mode: 'index',
- intersect: false,
- backgroundColor: 'rgba(0, 0, 0, 0.9)',
- titleColor: '#fff',
- bodyColor: '#fff',
- borderColor: config.color,
- borderWidth: 1,
- padding: 8,
- displayColors: false,
- cornerRadius: 4,
- titleFont: {
- size: 12,
- weight: 'normal'
- },
- bodyFont: {
- size: 11
- },
- // 确保HTML渲染正确
- useHTML: true,
- filter: function(tooltipItem) {
- return tooltipItem.datasetIndex === 0;
- },
- callbacks: {
- title: function(tooltipItems) {
- // 简化时间显示格式
- return tooltipItems[0].label;
- },
- label: function(context) {
- const value = context.parsed.y;
- // 格式化大数字
- const formattedValue = formatNumber(value);
-
- // 使用CSS类显示变化趋势
- let trendInfo = '';
- const data = context.dataset.data;
- const currentIndex = context.dataIndex;
-
- if (currentIndex > 0) {
- const prevValue = data[currentIndex - 1];
- const change = value - prevValue;
-
- if (change !== 0) {
- const changeSymbol = change > 0 ? '↑' : '↓';
- // 取消颜色显示,简化显示
- trendInfo = (changeSymbol + Math.abs(change));
- }
- }
-
- // 简化标签格式
- return `${config.label}: ${formattedValue}${trendInfo}`;
- },
- // 移除平均值显示
- afterLabel: function(context) {
- return '';
- }
- }
- }
- },
- scales: {
- x: {
- display: false // 隐藏X轴
- },
- y: {
- display: false, // 隐藏Y轴
- beginAtZero: true
- }
- },
- interaction: {
- intersect: false,
- mode: 'index'
- }
- }
- });
- });
-}
-
-// 生成模拟数据
-function generateMockData(count, min, max) {
- const data = [];
- for (let i = 0; i < count; i++) {
- data.push(Math.floor(Math.random() * (max - min + 1)) + min);
- }
- return data;
-}
-
-// 生成时间标签
-function generateTimeLabels(count) {
- const labels = [];
- const now = new Date();
- for (let i = count - 1; i >= 0; i--) {
- const time = new Date(now.getTime() - i * 5 * 60 * 1000); // 每5分钟一个点
- labels.push(`${time.getHours().toString().padStart(2, '0')}:${time.getMinutes().toString().padStart(2, '0')}`);
- }
- return labels;
-}
-
-// 格式化数字显示(使用K/M后缀)
-function formatNumber(num) {
- // 如果不是数字,直接返回
- if (isNaN(num) || num === '---') {
- return num;
- }
-
- // 显示完整数字的最大长度阈值
- const MAX_FULL_LENGTH = 5;
-
- // 先获取完整数字字符串
- const fullNumStr = num.toString();
-
- // 如果数字长度小于等于阈值,直接返回完整数字
- if (fullNumStr.length <= MAX_FULL_LENGTH) {
- return fullNumStr;
- }
-
- // 否则使用缩写格式
- if (num >= 1000000) {
- return (num / 1000000).toFixed(1) + 'M';
- } else if (num >= 1000) {
- return (num / 1000).toFixed(1) + 'K';
- }
-
- return fullNumStr;
-}
-
-// 更新运行状态
-function updateUptime() {
- // 实现更新运行时间的逻辑
- // 这里应该调用API获取当前运行时间并更新到UI
- // 由于API暂时没有提供运行时间,我们先使用模拟数据
- const uptimeElement = document.getElementById('uptime');
- if (uptimeElement) {
- uptimeElement.textContent = '---';
- }
-}
-
-// 格式化数字(添加千位分隔符)
-function formatWithCommas(num) {
- return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
-}
-
-// 格式化时间
-function formatTime(timestamp) {
- const date = new Date(timestamp);
- const now = new Date();
- const diff = now - date;
-
- // 如果是今天,显示时间
- if (date.toDateString() === now.toDateString()) {
- return date.toLocaleTimeString('zh-CN', {hour: '2-digit', minute: '2-digit'});
- }
-
- // 否则显示日期和时间
- return date.toLocaleString('zh-CN', {
- month: '2-digit',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit'
- });
-}
-
-// 根据颜色代码获取对应的CSS类名(兼容方式)
-function getColorClassName(colorCode) {
- // 优先使用配置文件中的颜色处理
- if (COLOR_CONFIG.getColorClassName) {
- return COLOR_CONFIG.getColorClassName(colorCode);
- }
-
- // 备用颜色映射
- const colorMap = {
- '#1890ff': 'blue',
- '#52c41a': 'green',
- '#fa8c16': 'orange',
- '#f5222d': 'red',
- '#722ed1': 'purple',
- '#13c2c2': 'cyan',
- '#36cfc9': 'teal'
- };
-
- // 返回映射的类名,如果没有找到则返回默认的blue
- return colorMap[colorCode] || 'blue';
-}
-
-// 显示通知
-function showNotification(message, type = 'info') {
- // 移除已存在的通知
- const existingNotification = document.getElementById('notification');
- if (existingNotification) {
- existingNotification.remove();
- }
-
- // 创建通知元素
- const notification = document.createElement('div');
- notification.id = 'notification';
- notification.className = `fixed top-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 translate-y-0 opacity-0`;
-
- // 设置样式和内容
- let bgColor, textColor, icon;
- switch (type) {
- case 'success':
- bgColor = 'bg-success';
- textColor = 'text-white';
- icon = 'fa-check-circle';
- break;
- case 'error':
- bgColor = 'bg-danger';
- textColor = 'text-white';
- icon = 'fa-exclamation-circle';
- break;
- case 'warning':
- bgColor = 'bg-warning';
- textColor = 'text-white';
- icon = 'fa-exclamation-triangle';
- break;
- default:
- bgColor = 'bg-primary';
- textColor = 'text-white';
- icon = 'fa-info-circle';
- }
-
- notification.className += ` ${bgColor} ${textColor}`;
- notification.innerHTML = `
-
-
- ${message}
-
- `;
-
- // 添加到页面
- document.body.appendChild(notification);
-
- // 显示通知
- setTimeout(() => {
- notification.classList.remove('translate-y-0', 'opacity-0');
- notification.classList.add('-translate-y-2', 'opacity-100');
- }, 10);
-
- // 自动关闭
- setTimeout(() => {
- notification.classList.add('translate-y-0', 'opacity-0');
- setTimeout(() => {
- notification.remove();
- }, 300);
- }, 3000);
-}
-
-// 页面切换处理
-function handlePageSwitch() {
- const menuItems = document.querySelectorAll('nav a');
-
- // 页面切换逻辑
- function switchPage(targetId, menuItem) {
- // 隐藏所有内容
- document.querySelectorAll('[id$="-content"]').forEach(content => {
- content.classList.add('hidden');
- });
-
- // 显示目标内容
- document.getElementById(`${targetId}-content`).classList.remove('hidden');
-
- // 更新页面标题
- document.getElementById('page-title').textContent = menuItem.querySelector('span').textContent;
-
- // 更新活动菜单项
- menuItems.forEach(item => {
- item.classList.remove('sidebar-item-active');
- });
- menuItem.classList.add('sidebar-item-active');
-
- // 侧边栏切换(移动端)
- if (window.innerWidth < 1024) {
- toggleSidebar();
- }
- }
-
- menuItems.forEach(item => {
- item.addEventListener('click', (e) => {
- // 允许默认的hash变化
- // 页面切换会由hashchange事件处理
- });
- });
-}
-
-// 处理hash变化 - 全局函数,确保在页面加载时就能被调用
-function handleHashChange() {
- let hash = window.location.hash;
-
- // 如果没有hash,默认设置为#dashboard
- if (!hash) {
- hash = '#dashboard';
- window.location.hash = hash;
- return;
- }
-
- const targetId = hash.substring(1);
- const menuItems = document.querySelectorAll('nav a');
-
- // 首先检查是否存在对应的内容元素
- const contentElement = document.getElementById(`${targetId}-content`);
-
- // 查找对应的菜单项
- let targetMenuItem = null;
- menuItems.forEach(item => {
- if (item.getAttribute('href') === hash) {
- targetMenuItem = item;
- }
- });
-
- // 如果找到了对应的内容元素,直接显示
- if (contentElement) {
- // 隐藏所有内容
- document.querySelectorAll('[id$="-content"]').forEach(content => {
- content.classList.add('hidden');
- });
-
- // 显示目标内容
- contentElement.classList.remove('hidden');
-
- // 更新活动菜单项和页面标题
- menuItems.forEach(item => {
- item.classList.remove('sidebar-item-active');
- });
-
- if (targetMenuItem) {
- targetMenuItem.classList.add('sidebar-item-active');
- // 更新页面标题
- const pageTitle = targetMenuItem.querySelector('span').textContent;
- document.getElementById('page-title').textContent = pageTitle;
- } else {
- // 如果没有找到对应的菜单项,尝试根据hash更新页面标题
- const titleElement = document.getElementById(`${targetId}-title`);
- if (titleElement) {
- document.getElementById('page-title').textContent = titleElement.textContent;
- }
- }
- } else if (targetMenuItem) {
- // 隐藏所有内容
- document.querySelectorAll('[id$="-content"]').forEach(content => {
- content.classList.add('hidden');
- });
-
- // 显示目标内容
- document.getElementById(`${targetId}-content`).classList.remove('hidden');
-
- // 更新页面标题
- document.getElementById('page-title').textContent = targetMenuItem.querySelector('span').textContent;
-
- // 更新活动菜单项
- menuItems.forEach(item => {
- item.classList.remove('sidebar-item-active');
- });
- targetMenuItem.classList.add('sidebar-item-active');
-
- // 侧边栏切换(移动端)
- if (window.innerWidth < 1024) {
- toggleSidebar();
- }
- } else {
- // 如果既没有找到内容元素也没有找到菜单项,默认显示dashboard
- window.location.hash = '#dashboard';
- }
-}
-
-// 初始化hash路由
-function initHashRoute() {
- handleHashChange();
-}
-
-// 监听hash变化事件 - 全局事件监听器
-window.addEventListener('hashchange', handleHashChange);
-
-// 初始化hash路由 - 确保在页面加载时就能被调用
-initHashRoute();
-
-// 响应式处理
-function handleResponsive() {
- // 窗口大小改变时处理
- window.addEventListener('resize', () => {
-
- // 更新所有图表大小
- if (dnsRequestsChart) {
- dnsRequestsChart.update();
- }
- if (ratioChart) {
- ratioChart.update();
- }
- if (queryTypeChart) {
- queryTypeChart.update();
- }
- if (detailedDnsRequestsChart) {
- detailedDnsRequestsChart.update();
- }
- // 更新统计卡片图表
- Object.values(statCardCharts).forEach(chart => {
- if (chart) {
- chart.update();
- }
- });
- });
-
- // 添加触摸事件支持,用于移动端
- let touchStartX = 0;
- let touchEndX = 0;
-
- document.addEventListener('touchstart', (e) => {
- touchStartX = e.changedTouches[0].screenX;
- }, false);
-
- document.addEventListener('touchend', (e) => {
- touchEndX = e.changedTouches[0].screenX;
- handleSwipe();
- }, false);
-
- function handleSwipe() {
- // 从左向右滑动,打开侧边栏
- if (touchEndX - touchStartX > 50 && window.innerWidth < 1024) {
- sidebar.classList.remove('-translate-x-full');
- }
- // 从右向左滑动,关闭侧边栏
- if (touchStartX - touchEndX > 50 && window.innerWidth < 1024) {
- sidebar.classList.add('-translate-x-full');
- }
- }
-}
-
-// 添加重试功能
-function addRetryEventListeners() {
- // TOP客户端重试按钮
- const retryTopClientsBtn = document.getElementById('retry-top-clients');
- if (retryTopClientsBtn) {
- retryTopClientsBtn.addEventListener('click', async () => {
- console.log('重试获取TOP客户端数据');
- const clientsData = await api.getTopClients();
- if (clientsData && !clientsData.error && Array.isArray(clientsData) && clientsData.length > 0) {
- // 使用真实数据
- updateTopClientsTable(clientsData);
- hideLoading('top-clients');
- const errorElement = document.getElementById('top-clients-error');
- if (errorElement) errorElement.classList.add('hidden');
- } else {
- // 重试失败,保持原有状态
- console.warn('重试获取TOP客户端数据失败');
- }
- });
- }
-
- // TOP域名重试按钮
- const retryTopDomainsBtn = document.getElementById('retry-top-domains');
- if (retryTopDomainsBtn) {
- retryTopDomainsBtn.addEventListener('click', async () => {
- console.log('重试获取TOP域名数据');
- const domainsData = await api.getTopDomains();
- if (domainsData && !domainsData.error && Array.isArray(domainsData) && domainsData.length > 0) {
- // 使用真实数据
- updateTopDomainsTable(domainsData);
- hideLoading('top-domains');
- const errorElement = document.getElementById('top-domains-error');
- if (errorElement) errorElement.classList.add('hidden');
- } else {
- // 重试失败,保持原有状态
- console.warn('重试获取TOP域名数据失败');
- }
- });
- }
-}
-
-// 页面加载完成后初始化
-window.addEventListener('DOMContentLoaded', () => {
- // 初始化页面切换
- handlePageSwitch();
-
- // 初始化响应式
- handleResponsive();
-
- // 初始化仪表盘
- initDashboard();
-
- // 添加重试事件监听器
- addRetryEventListeners();
-
- // 页面卸载时清理定时器
- window.addEventListener('beforeunload', () => {
- if (intervalId) {
- clearInterval(intervalId);
- }
- });
-});
\ No newline at end of file
diff --git a/staticbak/static/js/guide.js b/staticbak/static/js/guide.js
deleted file mode 100644
index e69de29..0000000
diff --git a/staticbak/static/js/hosts.js b/staticbak/static/js/hosts.js
deleted file mode 100644
index a8a839d..0000000
--- a/staticbak/static/js/hosts.js
+++ /dev/null
@@ -1,202 +0,0 @@
-// Hosts管理页面功能实现
-
-// 初始化Hosts管理页面
-function initHostsPage() {
- // 加载Hosts规则
- loadHostsRules();
- // 设置事件监听器
- setupHostsEventListeners();
-}
-
-// 加载Hosts规则
-async function loadHostsRules() {
- try {
- const response = await fetch('/api/shield/hosts');
- if (!response.ok) {
- throw new Error('Failed to load hosts rules');
- }
- const data = await response.json();
-
- // 处理API返回的数据格式
- let hostsRules = [];
- if (data && Array.isArray(data)) {
- // 直接是数组格式
- hostsRules = data;
- } else if (data && data.hosts) {
- // 包含在hosts字段中
- hostsRules = data.hosts;
- }
-
- updateHostsTable(hostsRules);
- } catch (error) {
- console.error('Error loading hosts rules:', error);
- showErrorMessage('加载Hosts规则失败');
- }
-}
-
-// 更新Hosts表格
-function updateHostsTable(hostsRules) {
- const tbody = document.getElementById('hosts-table-body');
-
- if (hostsRules.length === 0) {
- tbody.innerHTML = '| 暂无Hosts条目 |
';
- return;
- }
-
- tbody.innerHTML = hostsRules.map(rule => {
- // 处理对象格式的规则
- const ip = rule.ip || '';
- const domain = rule.domain || '';
-
- return `
-
- | ${ip} |
- ${domain} |
-
-
- |
-
- `;
- }).join('');
-
- // 重新绑定删除事件
- document.querySelectorAll('.delete-hosts-btn').forEach(btn => {
- btn.addEventListener('click', handleDeleteHostsRule);
- });
-}
-
-// 设置事件监听器
-function setupHostsEventListeners() {
- // 保存Hosts按钮
- document.getElementById('save-hosts-btn').addEventListener('click', handleAddHostsRule);
-}
-
-// 处理添加Hosts规则
-async function handleAddHostsRule() {
- const ip = document.getElementById('hosts-ip').value.trim();
- const domain = document.getElementById('hosts-domain').value.trim();
-
- if (!ip || !domain) {
- showErrorMessage('IP地址和域名不能为空');
- return;
- }
-
- try {
- const response = await fetch('/api/shield/hosts', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({ ip, domain })
- });
-
- if (!response.ok) {
- throw new Error('Failed to add hosts rule');
- }
-
- showSuccessMessage('Hosts规则添加成功');
-
- // 清空输入框
- document.getElementById('hosts-ip').value = '';
- document.getElementById('hosts-domain').value = '';
-
- // 重新加载规则
- loadHostsRules();
- } catch (error) {
- console.error('Error adding hosts rule:', error);
- showErrorMessage('添加Hosts规则失败');
- }
-}
-
-// 处理删除Hosts规则
-async function handleDeleteHostsRule(e) {
- const ip = e.target.closest('.delete-hosts-btn').dataset.ip;
- const domain = e.target.closest('.delete-hosts-btn').dataset.domain;
-
- try {
- const response = await fetch('/api/shield/hosts', {
- method: 'DELETE',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({ domain })
- });
-
- if (!response.ok) {
- throw new Error('Failed to delete hosts rule');
- }
-
- showSuccessMessage('Hosts规则删除成功');
-
- // 重新加载规则
- loadHostsRules();
- } catch (error) {
- console.error('Error deleting hosts rule:', error);
- showErrorMessage('删除Hosts规则失败');
- }
-}
-
-// 显示成功消息
-function showSuccessMessage(message) {
- showNotification(message, 'success');
-}
-
-// 显示错误消息
-function showErrorMessage(message) {
- showNotification(message, 'error');
-}
-
-
-
-// 显示通知
-function showNotification(message, type = 'info') {
- // 移除现有通知
- const existingNotification = document.querySelector('.notification');
- if (existingNotification) {
- existingNotification.remove();
- }
-
- // 创建新通知
- const notification = document.createElement('div');
- notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 ease-in-out translate-y-0 opacity-0`;
-
- // 设置通知样式
- if (type === 'success') {
- notification.classList.add('bg-green-500', 'text-white');
- } else if (type === 'error') {
- notification.classList.add('bg-red-500', 'text-white');
- } else {
- notification.classList.add('bg-blue-500', 'text-white');
- }
-
- notification.innerHTML = `
-
-
- ${message}
-
- `;
-
- document.body.appendChild(notification);
-
- // 显示通知
- setTimeout(() => {
- notification.classList.remove('opacity-0');
- }, 100);
-
- // 3秒后隐藏通知
- setTimeout(() => {
- notification.classList.add('opacity-0');
- setTimeout(() => {
- notification.remove();
- }, 300);
- }, 3000);
-}
-
-// 页面加载完成后初始化
-if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', initHostsPage);
-} else {
- initHostsPage();
-}
diff --git a/staticbak/static/js/logs.js b/staticbak/static/js/logs.js
deleted file mode 100644
index 9055f55..0000000
--- a/staticbak/static/js/logs.js
+++ /dev/null
@@ -1,1692 +0,0 @@
-// logs.js - 查询日志页面功能
-
-// 全局变量
-let currentPage = 1;
-let totalPages = 1;
-let logsPerPage = 30; // 默认显示30条记录
-let currentFilter = '';
-let currentSearch = '';
-let logsChart = null;
-let currentSortField = '';
-let currentSortDirection = 'desc'; // 默认降序
-
-// IP地理位置缓存
-let ipGeolocationCache = {};
-const GEOLOCATION_CACHE_EXPIRY = 24 * 60 * 60 * 1000; // 缓存有效期24小时
-
-// 跟踪器数据库缓存
-let trackersDatabase = null;
-let trackersLoaded = false;
-let trackersLoading = false;
-
-// 域名信息数据库缓存
-let domainInfoDatabase = null;
-let domainInfoLoaded = false;
-let domainInfoLoading = false;
-
-// WebSocket连接和重连计时器
-let logsWsConnection = null;
-let logsWsReconnectTimer = null;
-
-// 加载跟踪器数据库
-async function loadTrackersDatabase() {
- if (trackersLoaded) return trackersDatabase;
- if (trackersLoading) {
- // 等待正在进行的加载完成
- while (trackersLoading) {
- await new Promise(resolve => setTimeout(resolve, 100));
- }
- return trackersDatabase;
- }
-
- trackersLoading = true;
-
- try {
- const response = await fetch('domain-info/tracker/trackers.json');
- if (!response.ok) {
- console.error('加载跟踪器数据库失败:', response.statusText);
- trackersDatabase = { trackers: {} };
- return trackersDatabase;
- }
-
- trackersDatabase = await response.json();
- trackersLoaded = true;
- return trackersDatabase;
- } catch (error) {
- console.error('加载跟踪器数据库失败:', error);
- trackersDatabase = { trackers: {} };
- return trackersDatabase;
- } finally {
- trackersLoading = false;
- }
-}
-
-// 加载域名信息数据库
-async function loadDomainInfoDatabase() {
- console.log('开始加载域名信息数据库');
-
- if (domainInfoLoaded) {
- console.log('域名信息数据库已加载,直接返回');
- return domainInfoDatabase;
- }
-
- if (domainInfoLoading) {
- console.log('域名信息数据库正在加载中,等待完成');
- // 等待正在进行的加载完成
- while (domainInfoLoading) {
- await new Promise(resolve => setTimeout(resolve, 100));
- }
- return domainInfoDatabase;
- }
-
- domainInfoLoading = true;
-
- try {
- console.log('发起请求获取域名信息数据库');
- const response = await fetch('domain-info/domains/domain-info.json');
-
- if (!response.ok) {
- console.error('加载域名信息数据库失败,HTTP状态:', response.status, response.statusText);
- console.error('请求URL:', response.url);
- domainInfoDatabase = { domains: {}, categories: {} };
- return domainInfoDatabase;
- }
-
- console.log('域名信息数据库请求成功,开始解析JSON');
- domainInfoDatabase = await response.json();
- console.log('域名信息数据库解析成功,包含', Object.keys(domainInfoDatabase.domains || {}).length, '个公司');
- domainInfoLoaded = true;
- return domainInfoDatabase;
- } catch (error) {
- console.error('加载域名信息数据库失败,错误信息:', error.message);
- console.error('错误堆栈:', error.stack);
- domainInfoDatabase = { domains: {}, categories: {} };
- return domainInfoDatabase;
- } finally {
- domainInfoLoading = false;
- console.log('域名信息数据库加载完成');
- }
-}
-
-// 检查域名是否在跟踪器数据库中,并返回跟踪器信息
-async function isDomainInTrackerDatabase(domain) {
- if (!trackersDatabase || !trackersLoaded) {
- await loadTrackersDatabase();
- }
-
- if (!trackersDatabase || !trackersDatabase.trackers) {
- return null;
- }
-
- // 检查域名是否直接作为跟踪器键存在
- if (trackersDatabase.trackers.hasOwnProperty(domain)) {
- return trackersDatabase.trackers[domain];
- }
-
- // 检查域名是否在跟踪器URL中
- for (const trackerKey in trackersDatabase.trackers) {
- if (trackersDatabase.trackers.hasOwnProperty(trackerKey)) {
- const tracker = trackersDatabase.trackers[trackerKey];
- if (tracker && tracker.url) {
- try {
- const trackerUrl = new URL(tracker.url);
- if (trackerUrl.hostname === domain) {
- return tracker;
- }
- } catch (e) {
- // 忽略无效URL
- }
- }
- }
- }
-
- return null;
-}
-
-// 根据域名查找对应的网站信息
-async function getDomainInfo(domain) {
- console.log('开始查找域名信息,域名:', domain);
-
- if (!domainInfoDatabase || !domainInfoLoaded) {
- console.log('域名信息数据库未加载,调用loadDomainInfoDatabase');
- await loadDomainInfoDatabase();
- }
-
- if (!domainInfoDatabase || !domainInfoDatabase.domains) {
- console.error('域名信息数据库无效或为空');
- return null;
- }
-
- // 规范化域名,移除可能的端口号
- const normalizedDomain = domain.replace(/:\d+$/, '').toLowerCase();
- console.log('规范化后的域名:', normalizedDomain);
-
- // 遍历所有公司
- console.log('开始遍历公司,总公司数:', Object.keys(domainInfoDatabase.domains).length);
- for (const companyKey in domainInfoDatabase.domains) {
- if (domainInfoDatabase.domains.hasOwnProperty(companyKey)) {
- console.log('检查公司:', companyKey);
- const companyData = domainInfoDatabase.domains[companyKey];
- const companyName = companyData.company || companyKey;
-
- // 遍历公司下的所有网站
- for (const websiteKey in companyData) {
- if (companyData.hasOwnProperty(websiteKey) && websiteKey !== 'company') {
- console.log(' 检查网站:', websiteKey);
- const website = companyData[websiteKey];
-
- // 检查域名是否匹配网站的URL
- if (website.url) {
- // 处理字符串类型的URL
- if (typeof website.url === 'string') {
- console.log(' 检查字符串URL:', website.url);
- if (isDomainMatch(website.url, normalizedDomain)) {
- console.log(' 匹配成功,返回网站信息');
- return {
- name: website.name,
- icon: website.icon,
- categoryId: website.categoryId,
- categoryName: domainInfoDatabase.categories[website.categoryId] || '未知',
- company: companyName
- };
- }
- }
- // 处理对象类型的URL
- else if (typeof website.url === 'object') {
- console.log(' 检查对象类型URL,包含', Object.keys(website.url).length, '个URL');
- for (const urlKey in website.url) {
- if (website.url.hasOwnProperty(urlKey)) {
- const urlValue = website.url[urlKey];
- console.log(' 检查URL', urlKey, ':', urlValue);
- if (isDomainMatch(urlValue, normalizedDomain)) {
- console.log(' 匹配成功,返回网站信息');
- return {
- name: website.name,
- icon: website.icon,
- categoryId: website.categoryId,
- categoryName: domainInfoDatabase.categories[website.categoryId] || '未知',
- company: companyName
- };
- }
- }
- }
- }
- } else {
- console.log(' 网站没有URL属性');
- }
- }
- }
- }
- }
-
- console.log('未找到匹配的域名信息');
- return null;
-}
-
-// 检查域名是否匹配
-function isDomainMatch(urlValue, targetDomain) {
- console.log(' 开始匹配URL:', urlValue, '目标域名:', targetDomain);
-
- try {
- // 尝试将URL值解析为完整URL
- console.log(' 尝试解析URL为完整URL');
- const url = new URL(urlValue);
- const hostname = url.hostname.toLowerCase();
- console.log(' 解析成功,主机名:', hostname);
-
- // 只匹配完整域名,不进行主域名匹配
- // 这是为了避免同一个公司下的不同网站(如微信和腾讯视频)因为主域名相同而错误匹配
- if (hostname === targetDomain) {
- console.log(' 完整域名匹配成功');
- return true;
- } else {
- console.log(' 完整域名不匹配');
- return false;
- }
- } catch (e) {
- console.log(' 解析URL失败,将其视为纯域名处理,错误信息:', e.message);
- // 如果是纯域名而不是完整URL
- const urlDomain = urlValue.toLowerCase();
- console.log(' 处理为纯域名:', urlDomain);
-
- // 只匹配完整域名,不进行主域名匹配
- if (urlDomain === targetDomain) {
- console.log(' 完整域名匹配成功');
- return true;
- } else {
- console.log(' 完整域名不匹配');
- return false;
- }
- }
-}
-
-// 提取主域名
-function extractPrimaryDomain(domain) {
- console.log(' 开始提取主域名,原始域名:', domain);
-
- const parts = domain.split('.');
- console.log(' 域名分割为:', parts);
-
- if (parts.length <= 2) {
- console.log(' 域名长度小于等于2,直接返回:', domain);
- return domain;
- }
-
- // 处理常见的三级域名
- const commonSubdomains = ['www', 'mail', 'news', 'map', 'image', 'video', 'cdn', 'api', 'blog', 'shop', 'cloud', 'docs', 'help', 'support', 'dev', 'test', 'staging'];
- console.log(' 检查是否为常见三级域名');
-
- if (commonSubdomains.includes(parts[0])) {
- const result = parts.slice(1).join('.');
- console.log(' 是常见三级域名,返回:', result);
- return result;
- }
-
- // 处理特殊情况,如co.uk, co.jp等
- const countryTLDs = ['co.uk', 'co.jp', 'co.kr', 'co.in', 'co.ca', 'co.au', 'co.nz', 'co.th', 'co.sg', 'co.my', 'co.id', 'co.za', 'com.cn', 'org.cn', 'net.cn', 'gov.cn', 'edu.cn'];
- console.log(' 检查是否为特殊国家TLD');
-
- for (const tld of countryTLDs) {
- if (domain.endsWith('.' + tld)) {
- const mainParts = domain.split('.');
- const result = mainParts.slice(-tld.split('.').length - 1).join('.');
- console.log(' 是特殊国家TLD,返回:', result);
- return result;
- }
- }
-
- // 默认情况:返回最后两个部分
- const result = parts.slice(-2).join('.');
- console.log(' 默认情况,返回最后两个部分:', result);
- return result;
-}
-
-// 初始化查询日志页面
-function initLogsPage() {
- console.log('初始化查询日志页面');
-
- // 加载日志统计数据
- loadLogsStats();
-
- // 加载日志详情
- loadLogs();
-
- // 初始化图表
- initLogsChart();
-
- // 绑定事件
- bindLogsEvents();
-
- // 初始化日志详情弹窗
- initLogDetailModal();
-
- // 建立WebSocket连接,用于实时更新统计数据和图表
- connectLogsWebSocket();
-
- // 窗口大小改变时重新加载日志表格
- window.addEventListener('resize', handleWindowResize);
-
- // 在页面卸载时清理资源
- window.addEventListener('beforeunload', cleanupLogsResources);
-}
-
-// 处理窗口大小改变
-function handleWindowResize() {
- // 重新加载日志表格,以适应新的屏幕尺寸
- loadLogs();
-}
-
-// 清理资源
-function cleanupLogsResources() {
- // 清除WebSocket连接
- if (logsWsConnection) {
- logsWsConnection.close();
- logsWsConnection = null;
- }
-
- // 清除重连计时器
- if (logsWsReconnectTimer) {
- clearTimeout(logsWsReconnectTimer);
- logsWsReconnectTimer = null;
- }
-
- // 清除窗口大小改变事件监听器
- window.removeEventListener('resize', handleWindowResize);
-}
-
-// 绑定事件
-function bindLogsEvents() {
- // 搜索按钮
- const searchBtn = document.getElementById('logs-search-btn');
- if (searchBtn) {
- searchBtn.addEventListener('click', () => {
- currentSearch = document.getElementById('logs-search').value;
- currentPage = 1;
- loadLogs();
- });
- }
-
- // 搜索框回车事件
- const searchInput = document.getElementById('logs-search');
- if (searchInput) {
- searchInput.addEventListener('keypress', (e) => {
- if (e.key === 'Enter') {
- currentSearch = searchInput.value;
- currentPage = 1;
- loadLogs();
- }
- });
- }
-
- // 结果过滤
- const resultFilter = document.getElementById('logs-result-filter');
- if (resultFilter) {
- resultFilter.addEventListener('change', () => {
- currentFilter = resultFilter.value;
- currentPage = 1;
- loadLogs();
- });
- }
-
- // 自定义记录数量
- const perPageSelect = document.getElementById('logs-per-page');
- if (perPageSelect) {
- perPageSelect.addEventListener('change', () => {
- logsPerPage = parseInt(perPageSelect.value);
- currentPage = 1;
- loadLogs();
- });
- }
-
- // 分页按钮
- const prevBtn = document.getElementById('logs-prev-page');
- const nextBtn = document.getElementById('logs-next-page');
-
- if (prevBtn) {
- prevBtn.addEventListener('click', () => {
- if (currentPage > 1) {
- currentPage--;
- loadLogs();
- }
- });
- }
-
- if (nextBtn) {
- nextBtn.addEventListener('click', () => {
- if (currentPage < totalPages) {
- currentPage++;
- loadLogs();
- }
- });
- }
-
- // 页码跳转
- const pageInput = document.getElementById('logs-page-input');
- const goBtn = document.getElementById('logs-go-page');
-
- if (pageInput) {
- // 页码输入框回车事件
- pageInput.addEventListener('keypress', (e) => {
- if (e.key === 'Enter') {
- const page = parseInt(pageInput.value);
- if (page >= 1 && page <= totalPages) {
- currentPage = page;
- loadLogs();
- }
- }
- });
- }
-
- if (goBtn) {
- // 前往按钮点击事件
- goBtn.addEventListener('click', () => {
- const page = parseInt(pageInput.value);
- if (page >= 1 && page <= totalPages) {
- currentPage = page;
- loadLogs();
- }
- });
- }
-
- // 时间范围切换
- const timeRangeBtns = document.querySelectorAll('.time-range-btn');
- timeRangeBtns.forEach(btn => {
- btn.addEventListener('click', () => {
- // 更新按钮样式
- timeRangeBtns.forEach(b => {
- b.classList.remove('bg-primary', 'text-white');
- b.classList.add('bg-gray-200', 'text-gray-700');
- });
- btn.classList.remove('bg-gray-200', 'text-gray-700');
- btn.classList.add('bg-primary', 'text-white');
-
- // 更新图表
- const range = btn.getAttribute('data-range');
- updateLogsChart(range);
- });
- });
-
- // 刷新按钮事件
- const refreshBtn = document.getElementById('logs-refresh-btn');
- if (refreshBtn) {
- refreshBtn.addEventListener('click', () => {
- // 重新加载日志
- currentPage = 1;
- loadLogs();
- });
- }
-
- // 排序按钮事件
- const sortHeaders = document.querySelectorAll('th[data-sort]');
- sortHeaders.forEach(header => {
- header.addEventListener('click', () => {
- const sortField = header.getAttribute('data-sort');
-
- // 如果点击的是当前排序字段,则切换排序方向
- if (sortField === currentSortField) {
- currentSortDirection = currentSortDirection === 'asc' ? 'desc' : 'asc';
- } else {
- // 否则,设置新的排序字段,默认降序
- currentSortField = sortField;
- currentSortDirection = 'desc';
- }
-
- // 更新排序图标
- updateSortIcons();
-
- // 重新加载日志
- currentPage = 1;
- loadLogs();
- });
- });
-}
-
-// 更新排序图标
-function updateSortIcons() {
- const sortHeaders = document.querySelectorAll('th[data-sort]');
- sortHeaders.forEach(header => {
- const sortField = header.getAttribute('data-sort');
- const icon = header.querySelector('i');
-
- // 重置所有图标
- icon.className = 'fa fa-sort ml-1 text-xs';
-
- // 设置当前排序字段的图标
- if (sortField === currentSortField) {
- if (currentSortDirection === 'asc') {
- icon.className = 'fa fa-sort-asc ml-1 text-xs';
- } else {
- icon.className = 'fa fa-sort-desc ml-1 text-xs';
- }
- }
- });
-}
-
-// 加载日志统计数据
-function loadLogsStats() {
- // 使用封装的apiRequest函数进行API调用
- apiRequest('/logs/stats')
- .then(data => {
- if (data && data.error) {
- console.error('加载日志统计数据失败:', data.error);
- return;
- }
-
- // 更新统计卡片
- document.getElementById('logs-total-queries').textContent = data.totalQueries;
- document.getElementById('logs-avg-response-time').textContent = data.avgResponseTime.toFixed(2) + 'ms';
- document.getElementById('logs-active-ips').textContent = data.activeIPs;
-
- // 计算屏蔽率
- const blockRate = data.totalQueries > 0 ? (data.blockedQueries / data.totalQueries * 100).toFixed(1) : '0';
- document.getElementById('logs-block-rate').textContent = blockRate + '%';
- })
- .catch(error => {
- console.error('加载日志统计数据失败:', error);
- });
-}
-
-// 加载日志详情
-function loadLogs() {
- // 显示加载状态
- const loadingEl = document.getElementById('logs-loading');
- if (loadingEl) {
- loadingEl.classList.remove('hidden');
- }
-
- // 构建请求URL
- let endpoint = `/logs/query?limit=${logsPerPage}&offset=${(currentPage - 1) * logsPerPage}`;
-
- // 添加过滤条件
- if (currentFilter) {
- endpoint += `&result=${currentFilter}`;
- }
-
- // 添加搜索条件
- if (currentSearch) {
- endpoint += `&search=${encodeURIComponent(currentSearch)}`;
- }
-
- // 添加排序条件
- if (currentSortField) {
- endpoint += `&sort=${currentSortField}&direction=${currentSortDirection}`;
- }
-
- // 使用封装的apiRequest函数进行API调用
- apiRequest(endpoint)
- .then(data => {
- if (data && data.error) {
- console.error('加载日志详情失败:', data.error);
- // 隐藏加载状态
- if (loadingEl) {
- loadingEl.classList.add('hidden');
- }
- return;
- }
-
- // 加载日志总数
- return apiRequest('/logs/count').then(countData => {
- return { logs: data, count: countData.count };
- });
- })
- .then(result => {
- if (!result || !result.logs) {
- console.error('加载日志详情失败: 无效的响应数据');
- // 隐藏加载状态
- if (loadingEl) {
- loadingEl.classList.add('hidden');
- }
- return;
- }
-
- const logs = result.logs;
- const totalLogs = result.count;
-
- // 计算总页数
- totalPages = Math.ceil(totalLogs / logsPerPage);
-
- // 更新日志表格
- updateLogsTable(logs);
-
- // 绑定操作按钮事件
- bindActionButtonsEvents();
-
- // 更新分页信息
- updateLogsPagination();
-
- // 隐藏加载状态
- if (loadingEl) {
- loadingEl.classList.add('hidden');
- }
- })
- .catch(error => {
- console.error('加载日志详情失败:', error);
-
- // 隐藏加载状态
- if (loadingEl) {
- loadingEl.classList.add('hidden');
- }
- });
-}
-
-// 更新日志表格
-async function updateLogsTable(logs) {
- const tableBody = document.getElementById('logs-table-body');
- if (!tableBody) return;
-
- // 清空表格
- tableBody.innerHTML = '';
-
- if (logs.length === 0) {
- // 显示空状态
- const emptyRow = document.createElement('tr');
- emptyRow.innerHTML = `
-
-
- 暂无查询日志
- |
- `;
- tableBody.appendChild(emptyRow);
- return;
- }
-
- // 检测是否为移动设备
- const isMobile = window.innerWidth <= 768;
-
- // 填充表格
- for (const log of logs) {
- const row = document.createElement('tr');
- row.className = 'border-b border-gray-100 hover:bg-gray-50 transition-colors';
-
- // 格式化时间 - 两行显示,第一行显示时间,第二行显示日期
- const time = new Date(log.timestamp);
- const formattedDate = time.toLocaleDateString('zh-CN', {
- year: 'numeric',
- month: '2-digit',
- day: '2-digit'
- });
- const formattedTime = time.toLocaleTimeString('zh-CN', {
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit'
- });
-
- // 根据结果添加不同的背景色
- let rowClass = '';
- switch (log.result) {
- case 'blocked':
- rowClass = 'bg-red-50'; // 淡红色填充
- break;
- case 'allowed':
- // 检查是否是规则允许项目
- if (log.blockRule && log.blockRule.includes('allow')) {
- rowClass = 'bg-green-50'; // 规则允许项目用淡绿色填充
- } else {
- rowClass = ''; // 允许的不填充
- }
- break;
- default:
- rowClass = '';
- }
-
- // 添加行背景色
- if (rowClass) {
- row.classList.add(rowClass);
- }
-
- // 添加被屏蔽或允许显示,并增加颜色
- let statusText = '';
- let statusClass = '';
- switch (log.result) {
- case 'blocked':
- statusText = '被屏蔽';
- statusClass = 'text-danger';
- break;
- case 'allowed':
- statusText = '允许';
- statusClass = 'text-success';
- break;
- case 'error':
- statusText = '错误';
- statusClass = 'text-warning';
- break;
- default:
- statusText = '';
- statusClass = '';
- }
-
- // 检查域名是否在跟踪器数据库中
- const trackerInfo = await isDomainInTrackerDatabase(log.domain);
- const isTracker = trackerInfo !== null;
-
- // 构建行内容 - 根据设备类型决定显示内容
- // 添加缓存状态显示
- const cacheStatusClass = log.fromCache ? 'text-primary' : 'text-gray-500';
- const cacheStatusText = log.fromCache ? '缓存' : '非缓存';
-
- // 检查域名是否被拦截
- const isBlocked = log.result === 'blocked';
-
- // 构建跟踪器浮窗内容
- const trackerTooltip = isTracker ? `
-
-
已知跟踪器
-
名称: ${trackerInfo.name}
-
类别: ${trackersDatabase.categories[trackerInfo.categoryId] || '未知'}
- ${trackerInfo.url ? `
` : ''}
- ${trackerInfo.source ? `
源: ${trackerInfo.source}
` : ''}
-
- ` : '';
-
- if (isMobile) {
- // 移动设备只显示时间和请求信息
- row.innerHTML = `
-
- ${formattedTime}
- ${formattedDate}
- |
-
-
- ${log.dnssec ? ' ' : ''}
-
- ${isTracker ? '' : ''}
- ${trackerTooltip}
-
- ${log.domain}
-
- 类型: ${log.queryType}, ${statusText}
- 客户端: ${log.clientIP}
- |
- `;
- } else {
- // 桌面设备显示完整信息
- row.innerHTML = `
-
- ${formattedTime}
- ${formattedDate}
- |
-
- ${log.clientIP}
- ${log.location || '未知 未知'}
- |
-
-
- ${log.dnssec ? ' ' : ''}
-
- ${isTracker ? '' : ''}
- ${trackerTooltip}
-
- ${log.domain}
-
- 类型: ${log.queryType}, ${statusText}, ${log.fromCache ? '缓存' : '非缓存'}${log.dnssec ? ', DNSSEC' : ''}${log.edns ? ', EDNS' : ''}
- DNS 服务器: ${log.dnsServer || '无'}, DNSSEC专用: ${log.dnssecServer || '无'}
- |
- ${log.responseTime}ms |
-
- ${isBlocked ?
- `` :
- ``
- }
- |
- `;
- }
-
- // 添加跟踪器图标悬停事件
- if (isTracker) {
- const iconContainer = row.querySelector('.tracker-icon-container');
- const tooltip = iconContainer.querySelector('.tracker-tooltip');
- if (iconContainer && tooltip) {
- tooltip.style.display = 'none';
-
- iconContainer.addEventListener('mouseenter', () => {
- tooltip.style.display = 'block';
- });
-
- iconContainer.addEventListener('mouseleave', () => {
- tooltip.style.display = 'none';
- });
- }
- }
-
- // 绑定按钮事件
- const blockBtn = row.querySelector('.block-btn');
- if (blockBtn) {
- blockBtn.addEventListener('click', (e) => {
- e.preventDefault();
- const domain = e.currentTarget.dataset.domain;
- blockDomain(domain);
- });
- }
-
- const unblockBtn = row.querySelector('.unblock-btn');
- if (unblockBtn) {
- unblockBtn.addEventListener('click', (e) => {
- e.preventDefault();
- const domain = e.currentTarget.dataset.domain;
- unblockDomain(domain);
- });
- }
-
- // 绑定日志详情点击事件
- row.addEventListener('click', (e) => {
- // 如果点击的是按钮,不触发详情弹窗
- if (e.target.closest('button')) {
- return;
- }
- console.log('Row clicked, log object:', log);
- showLogDetailModal(log);
- });
-
- tableBody.appendChild(row);
- }
-}
-
-// 更新分页信息
-function updateLogsPagination() {
- // 更新页码显示
- document.getElementById('logs-current-page').textContent = currentPage;
- document.getElementById('logs-total-pages').textContent = totalPages;
-
- // 更新页码输入框
- const pageInput = document.getElementById('logs-page-input');
- if (pageInput) {
- pageInput.max = totalPages;
- pageInput.value = currentPage;
- }
-
- // 更新按钮状态
- const prevBtn = document.getElementById('logs-prev-page');
- const nextBtn = document.getElementById('logs-next-page');
-
- if (prevBtn) {
- prevBtn.disabled = currentPage === 1;
- }
-
- if (nextBtn) {
- nextBtn.disabled = currentPage === totalPages;
- }
-}
-
-// 初始化日志图表
-function initLogsChart() {
- const ctx = document.getElementById('logs-trend-chart');
- if (!ctx) return;
-
- // 获取24小时统计数据
- apiRequest('/hourly-stats')
- .then(data => {
- if (data && data.error) {
- console.error('初始化日志图表失败:', data.error);
- return;
- }
-
- // 创建图表
- logsChart = new Chart(ctx, {
- type: 'line',
- data: {
- labels: data.labels,
- datasets: [{
- label: '查询数',
- data: data.data,
- borderColor: '#3b82f6',
- backgroundColor: 'rgba(59, 130, 246, 0.1)',
- tension: 0.4,
- fill: true
- }]
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- plugins: {
- legend: {
- display: true,
- position: 'top'
- },
- tooltip: {
- mode: 'index',
- intersect: false
- }
- },
- scales: {
- y: {
- beginAtZero: true,
- ticks: {
- precision: 0
- }
- }
- }
- }
- });
- })
- .catch(error => {
- console.error('初始化日志图表失败:', error);
- });
-}
-
-// 更新日志图表
-function updateLogsChart(range) {
- if (!logsChart) return;
-
- let endpoint = '';
- switch (range) {
- case '24h':
- endpoint = '/hourly-stats';
- break;
- case '7d':
- endpoint = '/daily-stats';
- break;
- case '30d':
- endpoint = '/monthly-stats';
- break;
- default:
- endpoint = '/hourly-stats';
- }
-
- // 使用封装的apiRequest函数进行API调用
- apiRequest(endpoint)
- .then(data => {
- if (data && data.error) {
- console.error('更新日志图表失败:', data.error);
- return;
- }
-
- // 更新图表数据
- logsChart.data.labels = data.labels;
- logsChart.data.datasets[0].data = data.data;
- logsChart.update();
- })
- .catch(error => {
- console.error('更新日志图表失败:', error);
- });
-}
-
-// 建立WebSocket连接
-function connectLogsWebSocket() {
- try {
- // 构建WebSocket URL
- const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
- const wsUrl = `${wsProtocol}//${window.location.host}/ws/stats`;
-
- console.log('正在连接WebSocket:', wsUrl);
-
- // 创建WebSocket连接
- logsWsConnection = new WebSocket(wsUrl);
-
- // 连接打开事件
- logsWsConnection.onopen = function() {
- console.log('WebSocket连接已建立');
- };
-
- // 接收消息事件
- logsWsConnection.onmessage = function(event) {
- try {
- const data = JSON.parse(event.data);
-
- if (data.type === 'initial_data' || data.type === 'stats_update') {
- console.log('收到实时数据更新');
- // 只更新统计数据,不更新日志详情
- updateLogsStatsFromWebSocket(data.data);
- }
- } catch (error) {
- console.error('处理WebSocket消息失败:', error);
- }
- };
-
- // 连接关闭事件
- logsWsConnection.onclose = function(event) {
- console.warn('WebSocket连接已关闭,代码:', event.code);
- logsWsConnection = null;
-
- // 设置重连
- setupLogsReconnect();
- };
-
- // 连接错误事件
- logsWsConnection.onerror = function(error) {
- console.error('WebSocket连接错误:', error);
- };
-
- } catch (error) {
- console.error('创建WebSocket连接失败:', error);
- }
-}
-
-// 设置重连逻辑
-function setupLogsReconnect() {
- if (logsWsReconnectTimer) {
- return; // 已经有重连计时器在运行
- }
-
- const reconnectDelay = 5000; // 5秒后重连
- console.log(`将在${reconnectDelay}ms后尝试重新连接WebSocket`);
-
- logsWsReconnectTimer = setTimeout(() => {
- connectLogsWebSocket();
- }, reconnectDelay);
-}
-
-// 从WebSocket更新日志统计数据
-function updateLogsStatsFromWebSocket(stats) {
- try {
- // 更新统计卡片
- if (stats.dns) {
- // 适配不同的数据结构
- const totalQueries = stats.dns.Queries || 0;
- const blockedQueries = stats.dns.Blocked || 0;
- const allowedQueries = stats.dns.Allowed || 0;
- const errorQueries = stats.dns.Errors || 0;
- const avgResponseTime = stats.dns.AvgResponseTime || 0;
- const activeIPs = stats.activeIPs || Object.keys(stats.dns.SourceIPs || {}).length;
-
- // 更新统计卡片
- document.getElementById('logs-total-queries').textContent = totalQueries;
- document.getElementById('logs-avg-response-time').textContent = avgResponseTime.toFixed(2) + 'ms';
- document.getElementById('logs-active-ips').textContent = activeIPs;
-
- // 计算屏蔽率
- const blockRate = totalQueries > 0 ? (blockedQueries / totalQueries * 100).toFixed(1) : '0';
- document.getElementById('logs-block-rate').textContent = blockRate + '%';
- }
- } catch (error) {
- console.error('从WebSocket更新日志统计数据失败:', error);
- }
-}
-
-// 拦截域名
-async function blockDomain(domain) {
- try {
- console.log(`开始拦截域名: ${domain}`);
-
- // 创建拦截规则,使用AdBlock Plus格式
- const blockRule = `||${domain}^`;
- console.log(`创建的拦截规则: ${blockRule}`);
-
- // 调用API添加拦截规则
- console.log(`调用API添加拦截规则,路径: /shield, 方法: POST`);
- const response = await apiRequest('/shield', 'POST', { rule: blockRule });
-
- console.log(`API响应:`, response);
-
- // 处理不同的响应格式
- if (response && (response.success || response.status === 'success')) {
- // 重新加载日志,显示更新后的状态
- loadLogs();
-
- // 刷新规则列表
- refreshRulesList();
-
- // 显示成功通知
- if (typeof window.showNotification === 'function') {
- window.showNotification(`已成功拦截域名: ${domain}`, 'success');
- }
- } else {
- const errorMsg = response ? (response.message || '添加拦截规则失败') : '添加拦截规则失败: 无效的API响应';
- console.error(`拦截域名失败: ${errorMsg}`);
- throw new Error(errorMsg);
- }
- } catch (error) {
- console.error('拦截域名失败:', error);
-
- // 显示错误通知
- if (typeof window.showNotification === 'function') {
- window.showNotification(`拦截域名失败: ${error.message}`, 'danger');
- }
- }
-}
-
-// 绑定操作按钮事件
-function bindActionButtonsEvents() {
- // 绑定拦截按钮事件
- const blockBtns = document.querySelectorAll('.block-btn');
- blockBtns.forEach(btn => {
- btn.addEventListener('click', async (e) => {
- e.preventDefault();
- const domain = e.currentTarget.dataset.domain;
- await blockDomain(domain);
- });
- });
-
- // 绑定放行按钮事件
- const unblockBtns = document.querySelectorAll('.unblock-btn');
- unblockBtns.forEach(btn => {
- btn.addEventListener('click', async (e) => {
- e.preventDefault();
- const domain = e.currentTarget.dataset.domain;
- await unblockDomain(domain);
- });
- });
-}
-
-// 刷新规则列表
-async function refreshRulesList() {
- try {
- // 调用API重新加载规则
- const response = await apiRequest('/shield', 'GET');
-
- if (response) {
- // 处理规则列表响应
- let allRules = [];
- if (response && typeof response === 'object') {
- // 合并所有类型的规则到一个数组
- if (Array.isArray(response.domainRules)) allRules = allRules.concat(response.domainRules);
- if (Array.isArray(response.domainExceptions)) allRules = allRules.concat(response.domainExceptions);
- if (Array.isArray(response.regexRules)) allRules = allRules.concat(response.regexRules);
- if (Array.isArray(response.regexExceptions)) allRules = allRules.concat(response.regexExceptions);
- }
-
- // 更新规则列表
- if (window.rules) {
- rules = allRules;
- filteredRules = [...rules];
-
- // 更新规则数量统计
- if (window.updateRulesCount && typeof window.updateRulesCount === 'function') {
- window.updateRulesCount(rules.length);
- }
- }
- }
- } catch (error) {
- console.error('刷新规则列表失败:', error);
- }
-}
-
-// 放行域名
-async function unblockDomain(domain) {
- try {
- console.log(`开始放行域名: ${domain}`);
-
- // 创建放行规则,使用AdBlock Plus格式
- const allowRule = `@@||${domain}^`;
- console.log(`创建的放行规则: ${allowRule}`);
-
- // 调用API添加放行规则
- console.log(`调用API添加放行规则,路径: /shield, 方法: POST`);
- const response = await apiRequest('/shield', 'POST', { rule: allowRule });
-
- console.log(`API响应:`, response);
-
- // 处理不同的响应格式
- if (response && (response.success || response.status === 'success')) {
- // 重新加载日志,显示更新后的状态
- loadLogs();
-
- // 刷新规则列表
- refreshRulesList();
-
- // 显示成功通知
- if (typeof window.showNotification === 'function') {
- window.showNotification(`已成功放行域名: ${domain}`, 'success');
- }
- } else {
- const errorMsg = response ? (response.message || '添加放行规则失败') : '添加放行规则失败: 无效的API响应';
- console.error(`放行域名失败: ${errorMsg}`);
- throw new Error(errorMsg);
- }
- } catch (error) {
- console.error('放行域名失败:', error);
-
- // 显示错误通知
- if (typeof window.showNotification === 'function') {
- window.showNotification(`放行域名失败: ${error.message}`, 'danger');
- }
- }
-}
-
-// 独立的DNS记录格式化函数
-function formatDNSRecords(log, result) {
- if (result === 'blocked') return '无';
-
- let records = '';
- const sources = [
- log.answers,
- log.answer,
- log.Records,
- log.records,
- log.response
- ];
-
- for (const source of sources) {
- if (records) break;
- if (!source || source === '无') continue;
-
- // 处理数组类型
- if (Array.isArray(source)) {
- records = source.map(answer => {
- const type = answer.type || answer.Type || '未知';
- let value = answer.value || answer.Value || answer.data || answer.Data || '未知';
- const ttl = answer.TTL || answer.ttl || answer.expires || '未知';
-
- // 增强的记录值提取逻辑
- if (typeof value === 'string') {
- value = value.trim();
- // 处理制表符分隔的格式
- if (value.includes('\t') || value.includes('\\t')) {
- const parts = value.replace(/\\t/g, '\t').split('\t');
- if (parts.length >= 4) {
- value = parts[parts.length - 1].trim();
- }
- }
- // 处理JSON格式
- else if (value.startsWith('{') && value.endsWith('}')) {
- try {
- const parsed = JSON.parse(value);
- value = parsed.data || parsed.value || value;
- } catch (e) {}
- }
- }
-
- return `${type}: ${value} (ttl=${ttl})`;
- }).join('\n').trim();
- }
- // 处理字符串类型
- else if (typeof source === 'string') {
- // 尝试解析为JSON数组
- if (source.startsWith('[') && source.endsWith(']')) {
- try {
- const parsed = JSON.parse(source);
- if (Array.isArray(parsed)) {
- records = parsed.map(answer => {
- const type = answer.type || answer.Type || '未知';
- let value = answer.value || answer.Value || answer.data || answer.Data || '未知';
- const ttl = answer.TTL || answer.ttl || answer.expires || '未知';
-
- if (typeof value === 'string') {
- value = value.trim();
- }
-
- return `${type}: ${value} (ttl=${ttl})`;
- }).join('\n').trim();
- }
- } catch (e) {
- // 解析失败,尝试直接格式化
- records = formatDNSString(source);
- }
- } else {
- // 直接格式化字符串
- records = formatDNSString(source);
- }
- }
- }
-
- return records || '无解析记录';
-}
-
-// 格式化DNS字符串记录
-function formatDNSString(str) {
- // 处理可能的转义字符并分割行
- const recordLines = str.split(/\r?\n/).map(line => line.replace(/^\s+/, '')).filter(line => line.trim() !== '');
-
- return recordLines.map(line => {
- // 检查是否已经是标准格式
- if (line.includes(':') && line.includes('(')) {
- return line;
- }
- // 尝试解析为标准DNS格式
- const parts = line.split(/\s+/);
- if (parts.length >= 5) {
- const type = parts[3];
- const value = parts.slice(4).join(' ');
- const ttl = parts[1];
- return `${type}: ${value} (ttl=${ttl})`;
- }
- // 无法解析,返回原始行但移除前导空格
- return line.replace(/^\s+/, '');
- }).join('\n');
-}
-
-// 显示日志详情弹窗
-async function showLogDetailModal(log) {
- console.log('showLogDetailModal called with log:', JSON.stringify(log, null, 2)); // 输出完整的log对象
-
- if (!log) {
- console.error('No log data provided!');
- return;
- }
-
- try {
- // 安全获取log属性,提供默认值
- const timestamp = log.timestamp ? new Date(log.timestamp) : null;
- const dateStr = timestamp ? timestamp.toLocaleDateString() : '未知';
- const timeStr = timestamp ? timestamp.toLocaleTimeString() : '未知';
- const domain = log.domain || '未知';
- const queryType = log.queryType || '未知';
- const result = log.result || '未知';
- const responseTime = log.responseTime || '未知';
- const clientIP = log.clientIP || '未知';
- const location = log.location || '未知';
- const fromCache = log.fromCache || false;
- const dnssec = log.dnssec || false;
- const edns = log.edns || false;
- const dnsServer = log.dnsServer || '无';
- const dnssecServer = log.dnssecServer || '无';
- const blockRule = log.blockRule || '无';
-
- // 检查域名是否在跟踪器数据库中
- const trackerInfo = await isDomainInTrackerDatabase(log.domain);
- const isTracker = trackerInfo !== null;
-
- // 获取域名信息
- const domainInfo = await getDomainInfo(domain);
-
- // 格式化DNS解析记录
- const dnsRecords = formatDNSRecords(log, result);
-
- // 创建模态框容器
- const modalContainer = document.createElement('div');
- modalContainer.className = 'fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center p-4 animate-fade-in';
- modalContainer.style.zIndex = '9999';
-
- // 创建模态框内容
- const modalContent = document.createElement('div');
- modalContent.className = 'bg-white rounded-xl shadow-2xl w-full max-w-2xl max-h-[90vh] overflow-y-auto animate-slide-in';
-
- // 创建标题栏
- const header = document.createElement('div');
- header.className = 'sticky top-0 bg-white border-b border-gray-200 px-6 py-4 flex justify-between items-center';
-
- const title = document.createElement('h3');
- title.className = 'text-xl font-semibold text-gray-900';
- title.textContent = '日志详情';
-
- const closeButton = document.createElement('button');
- closeButton.innerHTML = '';
- closeButton.className = 'text-gray-500 hover:text-gray-700 focus:outline-none transition-colors';
- closeButton.onclick = () => closeModal();
-
- header.appendChild(title);
- header.appendChild(closeButton);
-
- // 创建内容区域
- const content = document.createElement('div');
- content.className = 'p-6 space-y-6';
-
- // 基本信息部分
- const basicInfo = document.createElement('div');
- basicInfo.className = 'space-y-4';
-
- const basicInfoTitle = document.createElement('h4');
- basicInfoTitle.className = 'text-sm font-medium text-gray-700 uppercase tracking-wider';
- basicInfoTitle.textContent = '基本信息';
-
- const basicInfoGrid = document.createElement('div');
- basicInfoGrid.className = 'grid grid-cols-1 md:grid-cols-2 gap-4';
-
- // 添加基本信息项
- basicInfoGrid.innerHTML = `
-
-
-
-
状态
-
- ${result === 'blocked' ? '已拦截' : result === 'allowed' ? '允许' : result}
-
-
-
-
- `;
-
- // DNS特性
- const dnsFeatures = document.createElement('div');
- dnsFeatures.className = 'col-span-1 md:col-span-2 space-y-1';
- dnsFeatures.innerHTML = `
- DNS特性
-
- ${dnssec ? 'DNSSEC ' : ''}
- ${edns ? 'EDNS' : ''}
- ${!dnssec && !edns ? '无' : ''}
-
- `;
-
- // 域名信息
- const domainInfoDiv = document.createElement('div');
- domainInfoDiv.className = 'col-span-1 md:col-span-2 space-y-1';
- domainInfoDiv.innerHTML = `
- 域名信息
-
- ${domainInfo ? `
-
- ${domainInfo.icon ? `

` : ''}
-
${domainInfo.name || '未知'}
-
-
-
- 类别:
- ${domainInfo.categoryName || '未知'}
-
-
- 所属公司:
- ${domainInfo.company || '未知'}
-
-
- ` : '无'}
-
- `;
-
- // 跟踪器信息
- const trackerDiv = document.createElement('div');
- trackerDiv.className = 'col-span-1 md:col-span-2 space-y-1';
- trackerDiv.innerHTML = `
- 跟踪器信息
-
- ${isTracker ? `
-
-
- ${trackerInfo.name} (${trackersDatabase.categories[trackerInfo.categoryId] || '未知'})
-
- ` : '无'}
-
- `;
-
- // 解析记录
- const recordsDiv = document.createElement('div');
- recordsDiv.className = 'col-span-1 md:col-span-2 space-y-1';
- recordsDiv.innerHTML = `
- 解析记录
- ${dnsRecords}
- `;
-
- // DNS服务器
- const dnsServerDiv = document.createElement('div');
- dnsServerDiv.className = 'col-span-1 md:col-span-2 space-y-1';
- dnsServerDiv.innerHTML = `
- DNS服务器
- ${dnsServer}
- `;
-
- // DNSSEC专用服务器
- const dnssecServerDiv = document.createElement('div');
- dnssecServerDiv.className = 'col-span-1 md:col-span-2 space-y-1';
- dnssecServerDiv.innerHTML = `
- DNSSEC专用服务器
- ${dnssecServer}
- `;
-
- basicInfoGrid.appendChild(dnsFeatures);
- basicInfoGrid.appendChild(domainInfoDiv);
- basicInfoGrid.appendChild(trackerDiv);
- basicInfoGrid.appendChild(recordsDiv);
- basicInfoGrid.appendChild(dnsServerDiv);
- basicInfoGrid.appendChild(dnssecServerDiv);
-
- basicInfo.appendChild(basicInfoTitle);
- basicInfo.appendChild(basicInfoGrid);
-
- // 响应细节部分
- const responseDetails = document.createElement('div');
- responseDetails.className = 'space-y-4 pt-4 border-t border-gray-200';
-
- const responseDetailsTitle = document.createElement('h4');
- responseDetailsTitle.className = 'text-sm font-medium text-gray-700 uppercase tracking-wider';
- responseDetailsTitle.textContent = '响应细节';
-
- // 准备响应细节内容,根据条件添加规则信息
- let responseDetailsHTML = `
-
-
响应时间
-
${responseTime}毫秒
-
-
-
响应代码
-
${getResponseCodeText(log.responseCode)}
-
-
-
缓存状态
-
- ${fromCache ? '缓存' : '非缓存'}
-
-
- `;
-
- // 只有被屏蔽时才显示规则信息
- if (result === 'blocked') {
- responseDetailsHTML += `
-
-
规则
-
${blockRule || '-'}
-
- `;
- }
-
- const responseGrid = document.createElement('div');
- responseGrid.className = 'grid grid-cols-1 md:grid-cols-2 gap-4';
- responseGrid.innerHTML = responseDetailsHTML;
-
- responseDetails.appendChild(responseDetailsTitle);
- responseDetails.appendChild(responseGrid);
-
- // 客户端详情部分
- const clientDetails = document.createElement('div');
- clientDetails.className = 'space-y-4 pt-4 border-t border-gray-200';
-
- const clientDetailsTitle = document.createElement('h4');
- clientDetailsTitle.className = 'text-sm font-medium text-gray-700 uppercase tracking-wider';
- clientDetailsTitle.textContent = '客户端详情';
-
- const clientIPDiv = document.createElement('div');
- clientIPDiv.className = 'space-y-1';
- clientIPDiv.innerHTML = `
- IP地址
- ${clientIP} (${location})
- `;
-
- clientDetails.appendChild(clientDetailsTitle);
- clientDetails.appendChild(clientIPDiv);
-
- // 组装内容
- content.appendChild(basicInfo);
- content.appendChild(responseDetails);
- content.appendChild(clientDetails);
-
- // 组装模态框
- modalContent.appendChild(header);
- modalContent.appendChild(content);
- modalContainer.appendChild(modalContent);
-
- // 添加到页面
- document.body.appendChild(modalContainer);
-
- // 关闭模态框函数
- function closeModal() {
- modalContainer.classList.add('animate-fade-out');
- modalContent.classList.add('animate-slide-out');
-
- // 等待动画结束后移除元素
- setTimeout(() => {
- document.body.removeChild(modalContainer);
- }, 300);
- }
-
- // 点击外部关闭
- modalContainer.addEventListener('click', (e) => {
- if (e.target === modalContainer) {
- closeModal();
- }
- });
-
- // ESC键关闭
- const handleEsc = (e) => {
- if (e.key === 'Escape') {
- closeModal();
- document.removeEventListener('keydown', handleEsc);
- }
- };
- document.addEventListener('keydown', handleEsc);
-
- } catch (error) {
- console.error('Error in showLogDetailModal:', error);
-
- // 显示错误提示
- const errorModal = document.createElement('div');
- errorModal.className = 'fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center p-4 animate-fade-in';
- errorModal.style.zIndex = '9999';
-
- const errorContent = document.createElement('div');
- errorContent.className = 'bg-white rounded-xl shadow-2xl p-6 w-full max-w-md animate-slide-in';
-
- errorContent.innerHTML = `
-
-
错误
-
-
-
- 加载日志详情失败: ${error.message}
-
- `;
-
- errorModal.appendChild(errorContent);
- document.body.appendChild(errorModal);
-
- // 关闭错误模态框函数
- function closeErrorModal() {
- errorModal.classList.add('animate-fade-out');
- errorContent.classList.add('animate-slide-out');
-
- // 等待动画结束后移除元素
- setTimeout(() => {
- document.body.removeChild(errorModal);
- }, 300);
- }
-
- // ESC键关闭错误模态框
- const handleErrorEsc = (e) => {
- if (e.key === 'Escape') {
- closeErrorModal();
- document.removeEventListener('keydown', handleErrorEsc);
- }
- };
- document.addEventListener('keydown', handleErrorEsc);
- }
-}
-
-// 关闭日志详情弹窗
-// 获取响应代码文本
-function getResponseCodeText(rcode) {
- const rcodeMap = {
- 0: 'NOERROR',
- 1: 'FORMERR',
- 2: 'SERVFAIL',
- 3: 'NXDOMAIN',
- 4: 'NOTIMP',
- 5: 'REFUSED',
- 6: 'YXDOMAIN',
- 7: 'YXRRSET',
- 8: 'NXRRSET',
- 9: 'NOTAUTH',
- 10: 'NOTZONE'
- };
- return rcodeMap[rcode] || `UNKNOWN(${rcode})`;
-}
-
-function closeLogDetailModal() {
- const modal = document.getElementById('log-detail-modal');
- modal.classList.add('hidden');
-}
-
-// 初始化日志详情弹窗事件
-function initLogDetailModal() {
- // 关闭按钮事件
- const closeBtn = document.getElementById('close-log-modal-btn');
- if (closeBtn) {
- closeBtn.addEventListener('click', closeLogDetailModal);
- }
-
- // 点击模态框外部关闭
- const modal = document.getElementById('log-detail-modal');
- if (modal) {
- modal.addEventListener('click', (e) => {
- if (e.target === modal) {
- closeLogDetailModal();
- }
- });
- }
-
- // ESC键关闭
- document.addEventListener('keydown', (e) => {
- if (e.key === 'Escape') {
- closeLogDetailModal();
- }
- });
-}
-
-// 定期更新日志统计数据(备用方案)
-setInterval(() => {
- // 只有在查询日志页面时才更新
- if (window.location.hash === '#logs') {
- loadLogsStats();
- // 不自动更新日志详情,只更新统计数据
- }
-}, 30000); // 每30秒更新一次
diff --git a/staticbak/static/js/main.js b/staticbak/static/js/main.js
deleted file mode 100644
index ef1daad..0000000
--- a/staticbak/static/js/main.js
+++ /dev/null
@@ -1,405 +0,0 @@
-// main.js - 主脚本文件
-
-// 页面导航功能
-function setupNavigation() {
- // 侧边栏菜单项
- const menuItems = document.querySelectorAll('nav a');
- const contentSections = [
- document.getElementById('dashboard-content'),
- document.getElementById('shield-content'),
- document.getElementById('hosts-content'),
- document.getElementById('query-content'),
- document.getElementById('logs-content'),
- document.getElementById('config-content')
- ];
- const pageTitle = document.getElementById('page-title');
-
- menuItems.forEach((item, index) => {
- item.addEventListener('click', (e) => {
- // 允许浏览器自动更新地址栏中的hash,不阻止默认行为
-
- // 移动端点击菜单项后自动关闭侧边栏
- if (window.innerWidth < 768) {
- closeSidebar();
- }
- });
- });
-
- // 移动端侧边栏切换
- const toggleSidebar = document.getElementById('toggle-sidebar');
- const closeSidebarBtn = document.getElementById('close-sidebar');
- const sidebar = document.getElementById('mobile-sidebar');
- const sidebarOverlay = document.getElementById('sidebar-overlay');
-
- // 打开侧边栏函数
- function openSidebar() {
- console.log('Opening sidebar...');
- if (sidebar) {
- sidebar.classList.remove('-translate-x-full');
- sidebar.classList.add('translate-x-0');
- }
- if (sidebarOverlay) {
- sidebarOverlay.classList.remove('hidden');
- sidebarOverlay.classList.add('block');
- }
- // 防止页面滚动
- document.body.style.overflow = 'hidden';
- console.log('Sidebar opened successfully');
- }
-
- // 关闭侧边栏函数
- function closeSidebar() {
- console.log('Closing sidebar...');
- if (sidebar) {
- sidebar.classList.add('-translate-x-full');
- sidebar.classList.remove('translate-x-0');
- }
- if (sidebarOverlay) {
- sidebarOverlay.classList.add('hidden');
- sidebarOverlay.classList.remove('block');
- }
- // 恢复页面滚动
- document.body.style.overflow = '';
- console.log('Sidebar closed successfully');
- }
-
- // 切换侧边栏函数
- function toggleSidebarVisibility() {
- console.log('Toggling sidebar visibility...');
- console.log('Current sidebar classes:', sidebar ? sidebar.className : 'sidebar not found');
- if (sidebar && sidebar.classList.contains('-translate-x-full')) {
- console.log('Sidebar is hidden, opening...');
- openSidebar();
- } else {
- console.log('Sidebar is visible, closing...');
- closeSidebar();
- }
- }
-
- // 绑定切换按钮事件
- if (toggleSidebar) {
- toggleSidebar.addEventListener('click', toggleSidebarVisibility);
- }
-
- // 绑定关闭按钮事件
- if (closeSidebarBtn) {
- closeSidebarBtn.addEventListener('click', closeSidebar);
- }
-
- // 绑定遮罩层点击事件
- if (sidebarOverlay) {
- sidebarOverlay.addEventListener('click', closeSidebar);
- }
-
- // 移动端点击菜单项后自动关闭侧边栏
- menuItems.forEach(item => {
- item.addEventListener('click', () => {
- // 检查是否是移动设备视图
- if (window.innerWidth < 768) {
- closeSidebar();
- }
- });
- });
-
- // 添加键盘事件监听,按ESC键关闭侧边栏
- document.addEventListener('keydown', (e) => {
- if (e.key === 'Escape') {
- closeSidebar();
- }
- });
-}
-
-// 页面初始化函数 - 根据当前hash值初始化对应页面
-function initPageByHash() {
- const hash = window.location.hash.substring(1);
-
- // 隐藏所有内容区域
- const contentSections = [
- document.getElementById('dashboard-content'),
- document.getElementById('shield-content'),
- document.getElementById('hosts-content'),
- document.getElementById('query-content'),
- document.getElementById('logs-content'),
- document.getElementById('config-content')
- ];
-
- contentSections.forEach(section => {
- if (section) {
- section.classList.add('hidden');
- }
- });
-
- // 显示当前页面内容
- const currentSection = document.getElementById(`${hash}-content`);
- if (currentSection) {
- currentSection.classList.remove('hidden');
- }
-
- // 更新页面标题
- const pageTitle = document.getElementById('page-title');
- if (pageTitle) {
- const titles = {
- 'dashboard': '仪表盘',
- 'shield': '屏蔽管理',
- 'hosts': 'Hosts管理',
- 'query': 'DNS屏蔽查询',
- 'logs': '查询日志',
- 'config': '系统设置'
- };
- pageTitle.textContent = titles[hash] || '仪表盘';
- }
-
- // 页面特定初始化 - 使用setTimeout延迟调用,确保所有脚本文件都已加载完成
- if (hash === 'shield') {
- setTimeout(() => {
- if (typeof initShieldPage === 'function') {
- initShieldPage();
- }
- }, 0);
- } else if (hash === 'hosts') {
- setTimeout(() => {
- if (typeof initHostsPage === 'function') {
- initHostsPage();
- }
- }, 0);
- } else if (hash === 'logs') {
- setTimeout(() => {
- if (typeof initLogsPage === 'function') {
- initLogsPage();
- }
- }, 0);
- } else if (hash === 'dashboard') {
- setTimeout(() => {
- if (typeof loadDashboardData === 'function') {
- loadDashboardData();
- }
- }, 0);
- }
-}
-
-// 初始化函数
-function init() {
- // 设置导航
- setupNavigation();
-
- // 初始化页面
- initPageByHash();
-
- // 添加hashchange事件监听,处理浏览器前进/后退按钮
- window.addEventListener('hashchange', initPageByHash);
-
- // 定期更新系统状态
- setInterval(updateSystemStatus, 5000);
-}
-
-// 更新系统状态
-function updateSystemStatus() {
- fetch('/api/status')
- .then(response => response.json())
- .then(data => {
- const uptimeElement = document.getElementById('uptime');
- if (uptimeElement) {
- uptimeElement.textContent = `正常运行中 | ${formatUptime(data.uptime)}`;
- }
- })
- .catch(error => {
- console.error('更新系统状态失败:', error);
- const uptimeElement = document.getElementById('uptime');
- if (uptimeElement) {
- uptimeElement.textContent = '连接异常';
- uptimeElement.classList.add('text-danger');
- }
- });
-}
-
-// 格式化运行时间
-function formatUptime(milliseconds) {
- // 简化版的格式化,实际使用时需要根据API返回的数据格式调整
- const seconds = Math.floor(milliseconds / 1000);
- const minutes = Math.floor(seconds / 60);
- const hours = Math.floor(minutes / 60);
- const days = Math.floor(hours / 24);
-
- if (days > 0) {
- return `${days}天${hours % 24}小时`;
- } else if (hours > 0) {
- return `${hours}小时${minutes % 60}分钟`;
- } else if (minutes > 0) {
- return `${minutes}分钟${seconds % 60}秒`;
- } else {
- return `${seconds}秒`;
- }
-}
-
-// 账户功能 - 下拉菜单、注销和修改密码
-function setupAccountFeatures() {
- // 下拉菜单功能
- const accountDropdown = document.getElementById('account-dropdown');
- const accountMenu = document.getElementById('account-menu');
- const changePasswordBtn = document.getElementById('change-password-btn');
- const logoutBtn = document.getElementById('logout-btn');
- const changePasswordModal = document.getElementById('change-password-modal');
- const closeModalBtn = document.getElementById('close-modal-btn');
- const cancelChangePasswordBtn = document.getElementById('cancel-change-password');
- const changePasswordForm = document.getElementById('change-password-form');
- const passwordMismatch = document.getElementById('password-mismatch');
- const newPassword = document.getElementById('new-password');
- const confirmPassword = document.getElementById('confirm-password');
-
- // 点击外部关闭下拉菜单
- document.addEventListener('click', (e) => {
- if (accountDropdown && !accountDropdown.contains(e.target)) {
- accountMenu.classList.add('hidden');
- }
- });
-
- // 点击账户区域切换下拉菜单
- if (accountDropdown) {
- accountDropdown.addEventListener('click', (e) => {
- e.stopPropagation();
- accountMenu.classList.toggle('hidden');
- });
- }
-
- // 打开修改密码模态框
- if (changePasswordBtn) {
- changePasswordBtn.addEventListener('click', () => {
- accountMenu.classList.add('hidden');
- changePasswordModal.classList.remove('hidden');
- document.body.style.overflow = 'hidden';
- });
- }
-
- // 关闭修改密码模态框
- function closeModal() {
- changePasswordModal.classList.add('hidden');
- document.body.style.overflow = '';
- changePasswordForm.reset();
- passwordMismatch.classList.add('hidden');
- }
-
- // 绑定关闭模态框事件
- if (closeModalBtn) {
- closeModalBtn.addEventListener('click', closeModal);
- }
-
- if (cancelChangePasswordBtn) {
- cancelChangePasswordBtn.addEventListener('click', closeModal);
- }
-
- // 点击模态框外部关闭模态框
- if (changePasswordModal) {
- changePasswordModal.addEventListener('click', (e) => {
- if (e.target === changePasswordModal) {
- closeModal();
- }
- });
- }
-
- // 按ESC键关闭模态框
- document.addEventListener('keydown', (e) => {
- if (e.key === 'Escape' && !changePasswordModal.classList.contains('hidden')) {
- closeModal();
- }
- });
-
- // 密码匹配验证
- if (newPassword && confirmPassword) {
- confirmPassword.addEventListener('input', () => {
- if (newPassword.value !== confirmPassword.value) {
- passwordMismatch.classList.remove('hidden');
- } else {
- passwordMismatch.classList.add('hidden');
- }
- });
-
- newPassword.addEventListener('input', () => {
- if (newPassword.value !== confirmPassword.value) {
- passwordMismatch.classList.remove('hidden');
- } else {
- passwordMismatch.classList.add('hidden');
- }
- });
- }
-
- // 修改密码表单提交
- if (changePasswordForm) {
- changePasswordForm.addEventListener('submit', async (e) => {
- e.preventDefault();
-
- // 验证密码匹配
- if (newPassword.value !== confirmPassword.value) {
- passwordMismatch.classList.remove('hidden');
- return;
- }
-
- const formData = new FormData(changePasswordForm);
- const data = {
- currentPassword: formData.get('currentPassword'),
- newPassword: formData.get('newPassword')
- };
-
- try {
- const response = await fetch('/api/change-password', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(data)
- });
-
- const result = await response.json();
-
- if (response.ok && result.status === 'success') {
- // 密码修改成功
- alert('密码修改成功');
- closeModal();
- } else {
- // 密码修改失败
- alert(result.error || '密码修改失败');
- }
- } catch (error) {
- console.error('修改密码失败:', error);
- alert('修改密码失败,请稍后重试');
- }
- });
- }
-
- // 注销功能
- if (logoutBtn) {
- logoutBtn.addEventListener('click', async () => {
- try {
- await fetch('/api/logout', {
- method: 'POST'
- });
-
- // 重定向到登录页面
- window.location.href = '/login';
- } catch (error) {
- console.error('注销失败:', error);
- alert('注销失败,请稍后重试');
- }
- });
- }
-}
-
-// 初始化函数
-function init() {
- // 设置导航
- setupNavigation();
-
- // 设置账户功能
- setupAccountFeatures();
-
- // 初始化页面
- initPageByHash();
-
- // 添加hashchange事件监听,处理浏览器前进/后退按钮
- window.addEventListener('hashchange', initPageByHash);
-
- // 定期更新系统状态
- setInterval(updateSystemStatus, 5000);
-}
-
-// 页面加载完成后执行初始化
-window.addEventListener('DOMContentLoaded', init);
\ No newline at end of file
diff --git a/staticbak/static/js/modules/blacklists.js b/staticbak/static/js/modules/blacklists.js
deleted file mode 100644
index 2f1cfb1..0000000
--- a/staticbak/static/js/modules/blacklists.js
+++ /dev/null
@@ -1,255 +0,0 @@
-// 初始化远程黑名单面板
-function initBlacklistsPanel() {
- // 加载远程黑名单列表
- loadBlacklists();
-
- // 初始化事件监听器
- initBlacklistsEventListeners();
-}
-
-// 初始化事件监听器
-function initBlacklistsEventListeners() {
- // 添加黑名单按钮
- document.getElementById('add-blacklist').addEventListener('click', addBlacklist);
-
- // 更新所有黑名单按钮
- document.getElementById('update-all-blacklists').addEventListener('click', updateAllBlacklists);
-
- // 按Enter键添加黑名单
- document.getElementById('blacklist-url').addEventListener('keypress', function(e) {
- if (e.key === 'Enter') {
- addBlacklist();
- }
- });
-}
-
-// 加载远程黑名单列表
-function loadBlacklists() {
- const tbody = document.getElementById('blacklists-table').querySelector('tbody');
- showLoading(tbody);
-
- apiRequest('/api/shield/blacklists')
- .then(data => {
- // 直接渲染返回的blacklists数组
- renderBlacklists(data);
- })
- .catch(error => {
- console.error('获取远程黑名单列表失败:', error);
- showError(tbody, '获取远程黑名单列表失败');
- window.showNotification('获取远程黑名单列表失败', 'error');
- });
-}
-
-// 渲染远程黑名单表格
-function renderBlacklists(blacklists) {
- const tbody = document.getElementById('blacklists-table').querySelector('tbody');
- if (!tbody) return;
-
- if (!blacklists || blacklists.length === 0) {
- showEmpty(tbody, '暂无远程黑名单');
- return;
- }
-
- tbody.innerHTML = '';
-
- blacklists.forEach(list => {
- addBlacklistToTable(list);
- });
-
- // 初始化表格排序
- initTableSort('blacklists-table');
-
- // 初始化操作按钮监听器
- initBlacklistsActionListeners();
-}
-
-// 添加黑名单到表格
-function addBlacklistToTable(list) {
- const tbody = document.getElementById('blacklists-table').querySelector('tbody');
- const row = document.createElement('tr');
-
- const statusClass = list.status === 'success' ? 'status-success' :
- list.status === 'error' ? 'status-error' : 'status-pending';
-
- const statusText = list.status === 'success' ? '正常' :
- list.status === 'error' ? '错误' : '等待中';
-
- const lastUpdate = list.lastUpdate ? new Date(list.lastUpdate).toLocaleString() : '从未';
-
- row.innerHTML = `
- ${list.name} |
- ${list.url} |
-
- ${statusText}
- |
- ${list.rulesCount || 0} |
- ${lastUpdate} |
-
-
-
- |
- `;
-
- tbody.appendChild(row);
-}
-
-// 添加远程黑名单
-function addBlacklist() {
- const nameInput = document.getElementById('blacklist-name');
- const urlInput = document.getElementById('blacklist-url');
-
- const name = nameInput.value.trim();
- const url = urlInput.value.trim();
-
- if (!name) {
- window.showNotification('请输入黑名单名称', 'warning');
- nameInput.focus();
- return;
- }
-
- if (!url) {
- window.showNotification('请输入黑名单URL', 'warning');
- urlInput.focus();
- return;
- }
-
- // 简单的URL格式验证
- if (!isValidUrl(url)) {
- window.showNotification('请输入有效的URL', 'warning');
- urlInput.focus();
- return;
- }
-
- apiRequest('/api/shield/blacklists', 'POST', { name: name, url: url })
- .then(data => {
- // 检查响应中是否有status字段
- if (!data || typeof data === 'undefined') {
- window.showNotification('远程黑名单添加失败: 无效的响应', 'error');
- return;
- }
-
- if (data.status === 'success') {
- window.showNotification('远程黑名单添加成功', 'success');
- nameInput.value = '';
- urlInput.value = '';
- loadBlacklists();
- } else {
- window.showNotification(`添加失败: ${data.message || '未知错误'}`, 'error');
- }
- })
- .catch(error => {
- console.error('添加远程黑名单失败:', error);
- window.showNotification('添加远程黑名单失败', 'error');
- });
-}
-
-// 更新远程黑名单
-function updateBlacklist(id) {
- apiRequest(`/api/shield/blacklists/${id}/update`, 'POST')
- .then(data => {
- // 检查响应中是否有status字段
- if (!data || typeof data === 'undefined') {
- window.showNotification('远程黑名单更新失败: 无效的响应', 'error');
- return;
- }
-
- if (data.status === 'success') {
- window.showNotification('远程黑名单更新成功', 'success');
- loadBlacklists();
- } else {
- window.showNotification(`更新失败: ${data.message || '未知错误'}`, 'error');
- }
- })
- .catch(error => {
- console.error('更新远程黑名单失败:', error);
- window.showNotification('更新远程黑名单失败', 'error');
- });
-}
-
-// 更新所有远程黑名单
-function updateAllBlacklists() {
- confirmAction(
- '确定要更新所有远程黑名单吗?这可能需要一些时间。',
- () => {
- apiRequest('/api/shield/blacklists', 'PUT')
- .then(data => {
- // 检查响应中是否有status字段
- if (!data || typeof data === 'undefined') {
- window.showNotification('所有远程黑名单更新失败: 无效的响应', 'error');
- return;
- }
-
- if (data.status === 'success') {
- window.showNotification('所有远程黑名单更新成功', 'success');
- loadBlacklists();
- } else {
- window.showNotification(`更新失败: ${data.message || '未知错误'}`, 'error');
- }
- })
- .catch(error => {
- console.error('更新所有远程黑名单失败:', error);
- window.showNotification('更新所有远程黑名单失败', 'error');
- });
- }
- );
-}
-
-// 删除远程黑名单
-function deleteBlacklist(id) {
- apiRequest(`/api/shield/blacklists/${id}`, 'DELETE')
- .then(data => {
- // 检查响应中是否有status字段
- if (!data || typeof data === 'undefined') {
- window.showNotification('远程黑名单删除失败: 无效的响应', 'error');
- return;
- }
-
- if (data.status === 'success') {
- window.showNotification('远程黑名单删除成功', 'success');
- loadBlacklists();
- } else {
- window.showNotification(`删除失败: ${data.message || '未知错误'}`, 'error');
- }
- })
- .catch(error => {
- console.error('删除远程黑名单失败:', error);
- window.showNotification('删除远程黑名单失败', 'error');
- });
-}
-
-// 为操作按钮添加事件监听器
-function initBlacklistsActionListeners() {
- // 更新按钮
- document.querySelectorAll('.update-blacklist').forEach(button => {
- button.addEventListener('click', function() {
- const id = this.getAttribute('data-id');
- updateBlacklist(id);
- });
- });
-
- // 删除按钮
- document.querySelectorAll('.delete-blacklist').forEach(button => {
- button.addEventListener('click', function() {
- const id = this.getAttribute('data-id');
-
- confirmAction(
- '确定要删除这条远程黑名单吗?',
- () => deleteBlacklist(id)
- );
- });
- });
-}
-
-// 验证URL格式
-function isValidUrl(url) {
- try {
- new URL(url);
- return true;
- } catch (e) {
- return false;
- }
-}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/config.js b/staticbak/static/js/modules/config.js
deleted file mode 100644
index 3d4e5db..0000000
--- a/staticbak/static/js/modules/config.js
+++ /dev/null
@@ -1,125 +0,0 @@
-// 初始化配置管理面板
-function initConfigPanel() {
- // 加载当前配置
- loadConfig();
-
- // 初始化事件监听器
- initConfigEventListeners();
-}
-
-// 初始化事件监听器
-function initConfigEventListeners() {
- // 保存配置按钮
- document.getElementById('save-config').addEventListener('click', saveConfig);
-
- // 屏蔽方法变更
- document.getElementById('block-method').addEventListener('change', updateCustomBlockIpVisibility);
-}
-
-// 加载当前配置
-function loadConfig() {
- apiRequest('/config')
- .then(config => {
- renderConfig(config);
- })
- .catch(error => {
- console.error('获取配置失败:', error);
- window.showNotification('获取配置失败', 'error');
- });
-}
-
-// 渲染配置表单
-function renderConfig(config) {
- if (!config) return;
-
- // 设置屏蔽方法
- const blockMethodSelect = document.getElementById('block-method');
- if (config.shield && config.shield.blockMethod) {
- blockMethodSelect.value = config.shield.blockMethod;
- }
-
- // 设置自定义屏蔽IP
- const customBlockIpInput = document.getElementById('custom-block-ip');
- if (config.shield && config.shield.customBlockIP) {
- customBlockIpInput.value = config.shield.customBlockIP;
- }
-
- // 设置远程规则更新间隔
- const updateIntervalInput = document.getElementById('update-interval');
- if (config.shield && config.shield.updateInterval) {
- updateIntervalInput.value = config.shield.updateInterval;
- }
-
- // 更新自定义屏蔽IP的可见性
- updateCustomBlockIpVisibility();
-}
-
-// 更新自定义屏蔽IP输入框的可见性
-function updateCustomBlockIpVisibility() {
- const blockMethod = document.getElementById('block-method').value;
- const customBlockIpContainer = document.getElementById('custom-block-ip').closest('.form-group');
-
- if (blockMethod === 'customIP') {
- customBlockIpContainer.style.display = 'block';
- } else {
- customBlockIpContainer.style.display = 'none';
- }
-}
-
-// 保存配置
-function saveConfig() {
- // 收集表单数据
- const configData = {
- shield: {
- blockMethod: document.getElementById('block-method').value,
- updateInterval: parseInt(document.getElementById('update-interval').value)
- }
- };
-
- // 如果选择了自定义IP,添加到配置中
- if (configData.shield.blockMethod === 'customIP') {
- const customBlockIp = document.getElementById('custom-block-ip').value.trim();
-
- // 验证自定义IP格式
- if (!isValidIp(customBlockIp)) {
- window.showNotification('请输入有效的自定义屏蔽IP', 'warning');
- return;
- }
-
- configData.shield.customBlockIP = customBlockIp;
- }
-
- // 验证更新间隔
- if (isNaN(configData.shield.updateInterval) || configData.shield.updateInterval < 60) {
- window.showNotification('更新间隔必须大于等于60秒', 'warning');
- return;
- }
-
- // 保存配置
- apiRequest('/config', 'PUT', configData)
- .then(response => {
- if (response.success) {
- window.showNotification('配置保存成功', 'success');
-
- // 由于服务器没有提供重启API,移除重启提示
- // 直接提示用户配置已保存
- } else {
- window.showNotification(`保存失败: ${response.message || '未知错误'}`, 'error');
- }
- })
- .catch(error => {
- console.error('保存配置失败:', error);
- window.showNotification('保存配置失败', 'error');
- });
-}
-
-// 服务重启功能已移除,因为服务器没有提供对应的API端点
-
-// 验证IP地址格式
-function isValidIp(ip) {
- // 支持IPv4和IPv6简单验证
- const ipv4Regex = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/;
- const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}$/;
-
- return ipv4Regex.test(ip) || ipv6Regex.test(ip);
-}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/dashboard.js b/staticbak/static/js/modules/dashboard.js
deleted file mode 100644
index 5a15e09..0000000
--- a/staticbak/static/js/modules/dashboard.js
+++ /dev/null
@@ -1,1220 +0,0 @@
-// 全局变量
-let domainDataCache = {
- blocked: null,
- resolved: null
-};
-let domainUpdateTimer = null;
-const DOMAIN_UPDATE_INTERVAL = 5000; // 域名排行更新间隔,设为5秒,比统计数据更新慢一些
-
-// 初始化小型图表 - 修复Canvas重用问题
-function initMiniCharts() {
- // 获取所有图表容器
- const chartContainers = document.querySelectorAll('.chart-card canvas');
-
- // 全局图表实例存储
- window.chartInstances = window.chartInstances || {};
-
- chartContainers.forEach(canvas => {
- // 获取图表数据属性
- const chartId = canvas.id;
- const chartType = canvas.dataset.chartType || 'line';
- const chartData = JSON.parse(canvas.dataset.chartData || '{}');
-
- // 设置图表上下文
- const ctx = canvas.getContext('2d');
-
- // 销毁已存在的图表实例,避免Canvas重用错误
- if (window.chartInstances[chartId]) {
- window.chartInstances[chartId].destroy();
- }
-
- // 创建新图表
- window.chartInstances[chartId] = new Chart(ctx, {
- type: chartType,
- data: chartData,
- options: {
- responsive: true,
- maintainAspectRatio: false,
- plugins: {
- legend: {
- display: false
- },
- tooltip: {
- backgroundColor: 'rgba(0, 0, 0, 0.7)',
- padding: 10,
- cornerRadius: 4
- }
- },
- scales: {
- x: {
- grid: {
- display: false
- }
- },
- y: {
- beginAtZero: true,
- grid: {
- color: 'rgba(0, 0, 0, 0.05)'
- }
- }
- },
- animation: {
- duration: 1000,
- easing: 'easeOutQuart'
- }
- }
- });
- });
-}
-
-// 初始化仪表盘面板
-function initDashboardPanel() {
- // 初始化小型图表
- if (typeof initMiniCharts === 'function') {
- initMiniCharts();
- }
- // 加载统计数据
- loadDashboardData();
- // 启动实时更新
- if (typeof startRealTimeUpdate === 'function') {
- startRealTimeUpdate();
- }
- // 启动域名排行的独立更新
- startDomainUpdate();
-
- // 初始化响应式侧边栏
- initResponsiveSidebar();
-}
-
-// 初始化响应式侧边栏
-function initResponsiveSidebar() {
- // 创建侧边栏切换按钮
- const toggleBtn = document.createElement('button');
- toggleBtn.className = 'sidebar-toggle';
- toggleBtn.innerHTML = '';
- document.body.appendChild(toggleBtn);
-
- // 侧边栏切换逻辑
- toggleBtn.addEventListener('click', function() {
- const sidebar = document.querySelector('.sidebar');
- sidebar.classList.toggle('open');
-
- // 更新按钮图标
- const icon = toggleBtn.querySelector('i');
- if (sidebar.classList.contains('open')) {
- icon.className = 'fas fa-times';
- } else {
- icon.className = 'fas fa-bars';
- }
- });
-
- // 在侧边栏打开时点击内容区域关闭侧边栏
- const content = document.querySelector('.content');
- content.addEventListener('click', function() {
- const sidebar = document.querySelector('.sidebar');
- const toggleBtn = document.querySelector('.sidebar-toggle');
- if (sidebar.classList.contains('open') && window.innerWidth <= 768) {
- sidebar.classList.remove('open');
- if (toggleBtn) {
- const icon = toggleBtn.querySelector('i');
- icon.className = 'fas fa-bars';
- }
- }
- });
-
- // 窗口大小变化时调整侧边栏状态
- window.addEventListener('resize', function() {
- const sidebar = document.querySelector('.sidebar');
- const toggleBtn = document.querySelector('.sidebar-toggle');
-
- if (window.innerWidth > 768) {
- sidebar.classList.remove('open');
- if (toggleBtn) {
- const icon = toggleBtn.querySelector('i');
- icon.className = 'fas fa-bars';
- }
- }
- });
-}
-
-// 加载仪表盘数据
-function loadDashboardData() {
- // 加载统计卡片数据
- updateStatCards();
-
- // 首次加载时获取域名排行数据
- if (!domainDataCache.blocked) {
- loadTopBlockedDomains();
- }
- if (!domainDataCache.resolved) {
- loadTopResolvedDomains();
- }
-}
-
-// 启动域名排行的独立更新
-function startDomainUpdate() {
- if (domainUpdateTimer) {
- clearInterval(domainUpdateTimer);
- }
-
- // 立即执行一次更新
- updateDomainRankings();
-
- // 设置定时器
- domainUpdateTimer = setInterval(() => {
- // 仅当当前面板是仪表盘时更新数据
- if (document.getElementById('dashboard') && document.getElementById('dashboard').classList.contains('active')) {
- updateDomainRankings();
- }
- }, DOMAIN_UPDATE_INTERVAL);
-}
-
-// 停止域名排行更新
-function stopDomainUpdate() {
- if (domainUpdateTimer) {
- clearInterval(domainUpdateTimer);
- domainUpdateTimer = null;
- }
-}
-
-// 更新域名排行数据
-function updateDomainRankings() {
- // 使用Promise.all并行加载,提高效率
- Promise.all([
- loadTopBlockedDomains(true),
- loadTopResolvedDomains(true)
- ]).catch(error => {
- console.error('更新域名排行数据失败:', error);
- });
-}
-
-// 更新统计卡片数据
-function updateStatCards() {
- // 获取所有统计数据
- apiRequest('/api/stats')
- .then(data => {
- // 更新请求统计
- if (data && data.dns) {
- // 屏蔽请求
- const blockedCount = data.dns.Blocked || data.dns.blocked || 0;
- smoothUpdateStatCard('blocked-count', blockedCount);
-
- // 允许请求
- const allowedCount = data.dns.Allowed || data.dns.allowed || 0;
- smoothUpdateStatCard('allowed-count', allowedCount);
-
- // 错误请求
- const errorCount = data.dns.Errors || data.dns.errors || 0;
- smoothUpdateStatCard('error-count', errorCount);
-
- // 总请求数
- const totalCount = blockedCount + allowedCount + errorCount;
- smoothUpdateStatCard('total-queries', totalCount);
-
- // 更新数据历史记录和小型图表
- if (typeof updateDataHistory === 'function') {
- updateDataHistory('blocked', blockedCount);
- updateDataHistory('query', totalCount);
- }
-
- // 更新小型图表
- if (typeof updateMiniChart === 'function' && typeof dataHistory !== 'undefined') {
- updateMiniChart('blocked-chart', dataHistory.blocked);
- updateMiniChart('query-chart', dataHistory.query);
- }
- } else {
- // 处理其他可能的数据格式
- const blockedValue = data && (data.Blocked !== undefined ? data.Blocked : (data.blocked !== undefined ? data.blocked : 0));
- const allowedValue = data && (data.Allowed !== undefined ? data.Allowed : (data.allowed !== undefined ? data.allowed : 0));
- const errorValue = data && (data.Errors !== undefined ? data.Errors : (data.errors !== undefined ? data.errors : 0));
- smoothUpdateStatCard('blocked-count', blockedValue);
- smoothUpdateStatCard('allowed-count', allowedValue);
- smoothUpdateStatCard('error-count', errorValue);
- const totalCount = blockedValue + allowedValue + errorValue;
- smoothUpdateStatCard('total-queries', totalCount);
- }
- })
- .catch(error => {
- console.error('获取统计数据失败:', error);
- });
-
- // 获取规则数
- apiRequest('/api/shield')
- .then(data => {
- let rulesCount = 0;
-
- // 增强的数据格式处理,确保能正确处理各种返回格式
- if (Array.isArray(data)) {
- rulesCount = data.length;
- } else if (data && data.rules && Array.isArray(data.rules)) {
- rulesCount = data.rules.length;
- } else if (data && data.domainRules) {
- // 处理可能的规则分类格式
- let domainRulesCount = 0;
- let regexRulesCount = 0;
-
- if (Array.isArray(data.domainRules)) {
- domainRulesCount = data.domainRules.length;
- } else if (typeof data.domainRules === 'object') {
- domainRulesCount = Object.keys(data.domainRules).length;
- }
-
- if (data.regexRules && Array.isArray(data.regexRules)) {
- regexRulesCount = data.regexRules.length;
- }
-
- rulesCount = domainRulesCount + regexRulesCount;
- }
-
- // 确保至少显示0而不是--
- smoothUpdateStatCard('rules-count', rulesCount);
-
- // 更新数据历史记录和小型图表
- if (typeof updateDataHistory === 'function') {
- updateDataHistory('rules', rulesCount);
- }
-
- if (typeof updateMiniChart === 'function' && typeof dataHistory !== 'undefined') {
- updateMiniChart('rules-chart', dataHistory.rules);
- }
- })
- .catch(error => {
- console.error('获取规则数失败:', error);
- // 即使出错也要设置为0,避免显示--
- smoothUpdateStatCard('rules-count', 0);
- });
-
- // 获取Hosts条目数量
- apiRequest('/api/shield/hosts')
- .then(data => {
- let hostsCount = 0;
-
- // 处理各种可能的数据格式
- if (Array.isArray(data)) {
- hostsCount = data.length;
- } else if (data && data.hosts && Array.isArray(data.hosts)) {
- hostsCount = data.hosts.length;
- } else if (data && typeof data === 'object' && data !== null) {
- // 如果是对象格式,计算键的数量
- hostsCount = Object.keys(data).length;
- }
-
- // 确保至少显示0而不是--
- smoothUpdateStatCard('hosts-count', hostsCount);
-
- // 更新数据历史记录和小型图表
- if (typeof updateDataHistory === 'function') {
- updateDataHistory('hosts', hostsCount);
- }
-
- if (typeof updateMiniChart === 'function' && typeof dataHistory !== 'undefined') {
- updateMiniChart('hosts-chart', dataHistory.hosts);
- }
- })
- .catch(error => {
- console.error('获取Hosts数量失败:', error);
- // 即使出错也要设置为0,避免显示--
- smoothUpdateStatCard('hosts-count', 0);
- });
-
- // 获取Hosts条目数
- apiRequest('/api/shield/hosts')
- .then(data => {
- let hostsCount = 0;
- if (Array.isArray(data)) {
- hostsCount = data.length;
- } else if (data && data.hosts && Array.isArray(data.hosts)) {
- hostsCount = data.hosts.length;
- }
-
- smoothUpdateStatCard('hosts-count', hostsCount);
-
- // 更新数据历史记录和小型图表
- if (typeof updateDataHistory === 'function') {
- updateDataHistory('hosts', hostsCount);
- }
-
- if (typeof updateMiniChart === 'function' && typeof dataHistory !== 'undefined') {
- updateMiniChart('hosts-chart', dataHistory.hosts);
- }
- })
- .catch(error => {
- console.error('获取Hosts条目数失败:', error);
- });
-}
-
-
-// 更新单个统计卡片
-function updateStatCard(elementId, value) {
- const element = document.getElementById(elementId);
- if (!element) return;
-
- // 格式化为可读数字
- const formattedValue = formatNumber(value);
-
- // 更新显示
- element.textContent = formattedValue;
-
- // 使用全局checkAndAnimate函数检测变化并添加光晕效果
- if (typeof checkAndAnimate === 'function') {
- checkAndAnimate(elementId, value);
- }
-}
-
-// 平滑更新统计卡片(数字递增动画)
-function smoothUpdateStatCard(elementId, newValue) {
- const element = document.getElementById(elementId);
- if (!element) return;
-
- // 获取旧值
- const oldValue = previousStats[elementId] || 0;
-
- // 如果值相同,不更新
- if (newValue === oldValue) return;
-
- // 如果是初始值,直接更新
- if (oldValue === 0 || oldValue === '--') {
- updateStatCard(elementId, newValue);
- return;
- }
-
- // 设置动画持续时间
- const duration = 500; // 500ms
- const startTime = performance.now();
-
- // 动画函数
- function animate(currentTime) {
- const elapsedTime = currentTime - startTime;
- const progress = Math.min(elapsedTime / duration, 1);
-
- // 使用缓动函数
- const easeOutQuad = 1 - (1 - progress) * (1 - progress);
-
- // 计算当前值
- const currentValue = Math.floor(oldValue + (newValue - oldValue) * easeOutQuad);
-
- // 更新显示
- element.textContent = formatNumber(currentValue);
-
- // 继续动画
- if (progress < 1) {
- requestAnimationFrame(animate);
- } else {
- // 动画完成,设置最终值
- element.textContent = formatNumber(newValue);
- // 添加光晕效果
- element.classList.add('update');
- setTimeout(() => {
- element.classList.remove('update');
- }, 1000);
- // 更新记录
- previousStats[elementId] = newValue;
- }
- }
-
- // 开始动画
- requestAnimationFrame(animate);
-}
-
-// 加载24小时统计数据
-function loadHourlyStats() {
- apiRequest('/hourly-stats')
- .then(data => {
- // 检查数据是否变化,避免不必要的重绘
- if (typeof previousChartData !== 'undefined' &&
- JSON.stringify(previousChartData) === JSON.stringify(data)) {
- return; // 数据未变化,无需更新图表
- }
-
- previousChartData = JSON.parse(JSON.stringify(data));
-
- // 处理不同可能的数据格式
- if (data) {
- // 优先处理用户提供的实际数据格式 {data: [], labels: []}
- if (data.labels && data.data && Array.isArray(data.labels) && Array.isArray(data.data)) {
- // 确保labels和data数组长度一致
- if (data.labels.length === data.data.length) {
- // 假设data数组包含的是屏蔽请求数据,允许请求设为0
- renderHourlyChart(data.labels, data.data, Array(data.data.length).fill(0));
- return;
- }
- }
-
- // 处理其他可能的数据格式
- if (data.labels && data.blocked && data.allowed) {
- // 完整数据格式:分别有屏蔽和允许的数据
- renderHourlyChart(data.labels, data.blocked, data.allowed);
- } else if (data.labels && data.data) {
- // 简化数据格式:只有一组数据
- renderHourlyChart(data.labels, data.data, Array(data.data.length).fill(0));
- } else {
- // 尝试直接使用数据对象的属性
- const hours = [];
- const blocked = [];
- const allowed = [];
-
- // 假设数据是按小时组织的对象
- for (const key in data) {
- if (data.hasOwnProperty(key)) {
- hours.push(key);
- // 尝试不同的数据结构访问方式
- if (typeof data[key] === 'object' && data[key] !== null) {
- blocked.push(data[key].Blocked || data[key].blocked || 0);
- allowed.push(data[key].Allowed || data[key].allowed || 0);
- } else {
- blocked.push(data[key]);
- allowed.push(0);
- }
- }
- }
-
- // 只在有数据时渲染
- if (hours.length > 0) {
- renderHourlyChart(hours, blocked, allowed);
- }
- }
- }
- })
- .catch(error => {
- console.error('获取24小时统计失败:', error);
- // 显示默认空数据,避免图表区域空白
- const emptyHours = Array.from({length: 24}, (_, i) => `${i}:00`);
- const emptyData = Array(24).fill(0);
- renderHourlyChart(emptyHours, emptyData, emptyData);
- });
-}
-
-// 渲染24小时统计图表 - 使用ECharts重新设计
-function renderHourlyChart(hours, blocked, allowed) {
- const chartContainer = document.getElementById('hourly-chart');
- if (!chartContainer) return;
-
- // 销毁现有ECharts实例
- if (window.hourlyChart) {
- window.hourlyChart.dispose();
- }
-
- // 创建ECharts实例
- window.hourlyChart = echarts.init(chartContainer);
-
- // 计算24小时内的最大请求数,为Y轴设置合适的上限
- const maxRequests = Math.max(...blocked, ...allowed);
- const yAxisMax = maxRequests > 0 ? Math.ceil(maxRequests * 1.2) : 10;
-
- // 设置ECharts配置
- const option = {
- title: {
- text: '24小时请求统计',
- left: 'center',
- textStyle: {
- fontSize: 16,
- fontWeight: 'normal'
- }
- },
- tooltip: {
- trigger: 'axis',
- backgroundColor: 'rgba(255, 255, 255, 0.95)',
- borderColor: '#ddd',
- borderWidth: 1,
- textStyle: {
- color: '#333'
- },
- formatter: function(params) {
- let result = params[0].name + '
';
- params.forEach(param => {
- result += param.marker + param.seriesName + ': ' + param.value + '
';
- });
- return result;
- }
- },
- legend: {
- data: ['屏蔽请求', '允许请求'],
- top: '10%',
- textStyle: {
- color: '#666'
- }
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '10%',
- top: '25%',
- containLabel: true
- },
- xAxis: {
- type: 'category',
- boundaryGap: false,
- data: hours,
- axisLabel: {
- color: '#666',
- interval: 1, // 每隔一个小时显示一个标签,避免拥挤
- rotate: 30 // 标签旋转30度,提高可读性
- },
- axisLine: {
- lineStyle: {
- color: '#ddd'
- }
- },
- axisTick: {
- show: false
- }
- },
- yAxis: {
- type: 'value',
- min: 0,
- max: yAxisMax,
- axisLabel: {
- color: '#666',
- formatter: '{value}'
- },
- axisLine: {
- lineStyle: {
- color: '#ddd'
- }
- },
- splitLine: {
- lineStyle: {
- color: '#f0f0f0',
- type: 'dashed'
- }
- }
- },
- series: [
- {
- name: '屏蔽请求',
- type: 'line',
- smooth: true, // 平滑曲线
- symbol: 'circle', // 拐点形状
- symbolSize: 6, // 拐点大小
- data: blocked,
- itemStyle: {
- color: '#e74c3c'
- },
- areaStyle: {
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
- { offset: 0, color: 'rgba(231, 76, 60, 0.3)' },
- { offset: 1, color: 'rgba(231, 76, 60, 0.05)' }
- ])
- },
- emphasis: {
- focus: 'series',
- itemStyle: {
- borderWidth: 2,
- borderColor: '#fff',
- shadowBlur: 10,
- shadowColor: 'rgba(231, 76, 60, 0.5)'
- }
- },
- animationDuration: 800,
- animationEasing: 'cubicOut'
- },
- {
- name: '允许请求',
- type: 'line',
- smooth: true,
- symbol: 'circle',
- symbolSize: 6,
- data: allowed,
- itemStyle: {
- color: '#2ecc71'
- },
- areaStyle: {
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
- { offset: 0, color: 'rgba(46, 204, 113, 0.3)' },
- { offset: 1, color: 'rgba(46, 204, 113, 0.05)' }
- ])
- },
- emphasis: {
- focus: 'series',
- itemStyle: {
- borderWidth: 2,
- borderColor: '#fff',
- shadowBlur: 10,
- shadowColor: 'rgba(46, 204, 113, 0.5)'
- }
- },
- animationDuration: 800,
- animationEasing: 'cubicOut'
- }
- ],
- // 添加数据提示功能
- toolbox: {
- feature: {
- dataZoom: {
- yAxisIndex: 'none'
- },
- dataView: {
- readOnly: false
- },
- magicType: {
- type: ['line', 'bar']
- },
- restore: {},
- saveAsImage: {}
- },
- top: '15%'
- },
- // 添加数据缩放功能
- dataZoom: [
- {
- type: 'inside',
- start: 0,
- end: 100
- },
- {
- start: 0,
- end: 100,
- handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23.1h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
- handleSize: '80%',
- handleStyle: {
- color: '#fff',
- shadowBlur: 3,
- shadowColor: 'rgba(0, 0, 0, 0.6)',
- shadowOffsetX: 2,
- shadowOffsetY: 2
- }
- }
- ]
- };
-
- // 应用配置项
- window.hourlyChart.setOption(option);
-
- // 添加窗口大小变化时的自适应
- window.addEventListener('resize', function() {
- if (window.hourlyChart) {
- window.hourlyChart.resize();
- }
- });
-}
-
-// 加载请求类型分布 - 注意:后端可能没有这个API,暂时注释掉
-function loadRequestsDistribution() {
- // 后端没有对应的API路由,暂时跳过
- console.log('请求类型分布API暂不可用');
- return Promise.resolve()
- .then(data => {
- // 检查数据是否变化,避免不必要的重绘
- if (typeof previousFullData !== 'undefined' &&
- JSON.stringify(previousFullData) === JSON.stringify(data)) {
- return; // 数据未变化,无需更新图表
- }
-
- previousFullData = JSON.parse(JSON.stringify(data));
-
- // 构造饼图所需的数据,支持多种数据格式
- const labels = ['允许请求', '屏蔽请求', '错误请求'];
- let requestData = [0, 0, 0]; // 默认值
-
- if (data) {
- // 尝试多种可能的数据结构
- if (data.dns) {
- // 主要数据结构
- requestData = [
- data.dns.Allowed || data.dns.allowed || 0,
- data.dns.Blocked || data.dns.blocked || 0,
- data.dns.Errors || data.dns.errors || 0
- ];
- } else if (data.Allowed !== undefined || data.Blocked !== undefined) {
- // 直接在顶级对象中
- requestData = [
- data.Allowed || data.allowed || 0,
- data.Blocked || data.blocked || 0,
- data.Errors || data.errors || 0
- ];
- } else if (data.requests) {
- // 可能在requests属性中
- requestData = [
- data.requests.Allowed || data.requests.allowed || 0,
- data.requests.Blocked || data.requests.blocked || 0,
- data.requests.Errors || data.requests.errors || 0
- ];
- }
- }
-
- // 渲染图表,即使数据全为0也渲染,避免空白
- renderRequestsPieChart(labels, requestData);
- })
- .catch(error => {
- console.error('获取请求类型分布失败:', error);
- // 显示默认空数据的图表
- const labels = ['允许请求', '屏蔽请求', '错误请求'];
- const defaultData = [0, 0, 0];
- renderRequestsPieChart(labels, defaultData);
- });
-}
-
-// 渲染请求类型饼图
-function renderRequestsPieChart(labels, data) {
- const ctx = document.getElementById('requests-pie-chart');
- if (!ctx) return;
-
- // 销毁现有图表
- if (window.requestsPieChart) {
- window.requestsPieChart.destroy();
- }
-
- // 创建新图表
- window.requestsPieChart = new Chart(ctx, {
- type: 'doughnut',
- data: {
- labels: labels,
- datasets: [{
- data: data,
- backgroundColor: [
- '#2ecc71', // 允许
- '#e74c3c', // 屏蔽
- '#f39c12', // 错误
- '#9b59b6' // 其他
- ],
- borderWidth: 2,
- borderColor: '#fff'
- }]
- },
- options: {
- responsive: true,
- maintainAspectRatio: false,
- plugins: {
- legend: {
- position: 'right',
- },
- tooltip: {
- callbacks: {
- label: function(context) {
- const label = context.label || '';
- const value = context.raw || 0;
- const total = context.dataset.data.reduce((a, b) => a + b, 0);
- const percentage = ((value / total) * 100).toFixed(1);
- return `${label}: ${value} (${percentage}%)`;
- }
- }
- }
- },
- cutout: '60%',
- animation: {
- duration: 500 // 快速动画,提升实时更新体验
- }
- }
- });
-}
-
-// 辅助函数:深度比较两个对象是否相等
-function isEqual(obj1, obj2) {
- // 处理null或undefined情况
- if (obj1 === obj2) return true;
- if (obj1 == null || obj2 == null) return false;
-
- // 确保都是数组
- if (!Array.isArray(obj1) || !Array.isArray(obj2)) return false;
- if (obj1.length !== obj2.length) return false;
-
- // 比较数组中每个元素
- for (let i = 0; i < obj1.length; i++) {
- const a = obj1[i];
- const b = obj2[i];
-
- // 比较域名和计数
- if (a.domain !== b.domain || a.count !== b.count) {
- return false;
- }
- }
-
- return true;
-}
-
-// 加载最常屏蔽的域名
-function loadTopBlockedDomains(isUpdate = false) {
- // 首先获取表格元素并显示加载状态
- const topBlockedTable = document.getElementById('top-blocked-table');
- const tbody = topBlockedTable ? topBlockedTable.querySelector('tbody') : null;
-
- // 非更新操作时显示加载状态
- if (tbody && !isUpdate) {
- // 显示加载中状态
- tbody.innerHTML = `加载中... | `;
- }
-
- return apiRequest('/api/top-blocked')
- .then(data => {
- // 处理多种可能的数据格式,特别优化对用户提供格式的支持
- let processedData = [];
-
- if (Array.isArray(data)) {
- // 数组格式:直接使用,并过滤出有效的域名数据
- processedData = data.filter(item => item && (item.domain || item.name || item.Domain || item.Name) && (item.count !== undefined || item.Count !== undefined || item.hits !== undefined || item.Hits !== undefined));
- } else if (data && data.domains && Array.isArray(data.domains)) {
- // 嵌套在domains属性中
- processedData = data.domains;
- } else if (data && typeof data === 'object') {
- // 对象格式:转换为数组
- processedData = Object.keys(data).map(key => ({
- domain: key,
- count: data[key]
- }));
- }
-
- // 计算最大值用于百分比计算
- if (processedData.length > 0) {
- const maxCount = Math.max(...processedData.map(item => {
- return item.count !== undefined ? item.count :
- (item.Count !== undefined ? item.Count :
- (item.hits !== undefined ? item.hits :
- (item.Hits !== undefined ? item.Hits : 0)));
- }));
- // 为每个项目添加百分比
- processedData.forEach(item => {
- const count = item.count !== undefined ? item.count :
- (item.Count !== undefined ? item.Count :
- (item.hits !== undefined ? item.hits :
- (item.Hits !== undefined ? item.Hits : 0)));
- item.percentage = maxCount > 0 ? Math.round((count / maxCount) * 100) : 0;
- });
- }
-
- // 数据变化检测
- const hasDataChanged = !isEqual(domainDataCache.blocked, processedData);
-
- // 只在数据发生变化或不是更新操作时重新渲染
- if (hasDataChanged || !isUpdate) {
- // 更新缓存
- domainDataCache.blocked = JSON.parse(JSON.stringify(processedData));
- // 渲染最常屏蔽的域名表格
- smoothRenderTable('top-blocked-table', processedData, renderDomainRow);
- }
- })
- .catch(error => {
- console.error('获取最常屏蔽域名失败:', error);
- // 显示默认空数据而不是错误消息,保持界面一致性
- const tbody = document.getElementById('top-blocked-table').querySelector('tbody');
- if (tbody) {
- showEmpty(tbody, '获取数据失败');
- }
-
- // 使用全局通知功能
- if (typeof showNotification === 'function') {
- showNotification('danger', '获取最常屏蔽域名失败');
- }
- });
-}
-
-// 加载最常解析的域名
-function loadTopResolvedDomains(isUpdate = false) {
- // 首先获取表格元素
- const topResolvedTable = document.getElementById('top-resolved-table');
- const tbody = topResolvedTable ? topResolvedTable.querySelector('tbody') : null;
-
- // 非更新操作时显示加载状态
- if (tbody && !isUpdate) {
- // 显示加载中状态
- tbody.innerHTML = `加载中... | `;
- }
-
- return apiRequest('/api/top-resolved')
- .then(data => {
- // 处理多种可能的数据格式
- let processedData = [];
-
- if (Array.isArray(data)) {
- // 数组格式:直接使用
- processedData = data;
- } else if (data && data.domains && Array.isArray(data.domains)) {
- // 嵌套在domains属性中
- processedData = data.domains;
- } else if (data && typeof data === 'object') {
- // 对象格式:转换为数组
- processedData = Object.keys(data).map(key => ({
- domain: key,
- count: data[key]
- }));
- }
-
- // 计算最大值用于百分比计算
- if (processedData.length > 0) {
- const maxCount = Math.max(...processedData.map(item => {
- return item.count !== undefined ? item.count :
- (item.Count !== undefined ? item.Count :
- (item.hits !== undefined ? item.hits :
- (item.Hits !== undefined ? item.Hits : 0)));
- }));
- // 为每个项目添加百分比
- processedData.forEach(item => {
- const count = item.count !== undefined ? item.count :
- (item.Count !== undefined ? item.Count :
- (item.hits !== undefined ? item.hits :
- (item.Hits !== undefined ? item.Hits : 0)));
- item.percentage = maxCount > 0 ? Math.round((count / maxCount) * 100) : 0;
- });
- }
-
- // 数据变化检测
- const hasDataChanged = !isEqual(domainDataCache.resolved, processedData);
-
- // 只在数据发生变化或不是更新操作时重新渲染
- if (hasDataChanged || !isUpdate) {
- // 更新缓存
- domainDataCache.resolved = JSON.parse(JSON.stringify(processedData));
- // 渲染最常解析的域名表格
- smoothRenderTable('top-resolved-table', processedData, renderDomainRow);
- }
- })
- .catch(error => {
- console.error('获取最常解析域名失败:', error);
- // 显示默认空数据而不是错误消息,保持界面一致性
- const tbody = document.getElementById('top-resolved-table').querySelector('tbody');
- if (tbody) {
- showEmpty(tbody, '暂无解析记录');
- }
-
- // 使用全局通知功能
- if (typeof showNotification === 'function') {
- showNotification('danger', '获取最常解析域名失败');
- }
- });
-}
-
-// 渲染域名行
-function renderDomainRow(item, index) {
- if (!item) return null;
-
- // 支持不同的字段名和格式
- const domainName = item.domain || item.name || item.Domain || item.Name || '未知域名';
- const count = item.count !== undefined ? item.count :
- (item.Count !== undefined ? item.Count :
- (item.hits !== undefined ? item.hits :
- (item.Hits !== undefined ? item.Hits : 0)));
- const percentage = item.percentage || 0;
-
- const row = document.createElement('tr');
- row.className = 'fade-in'; // 添加淡入动画类
- row.dataset.domain = domainName;
- row.dataset.count = count;
- row.dataset.percentage = percentage;
-
- // 为不同类型的排行使用不同的进度条颜色
- let barColor = '#3498db'; // 默认蓝色
- if (item.domain && item.domain.includes('microsoft.com')) {
- barColor = '#2ecc71'; // 绿色
- } else if (item.domain && item.domain.includes('tencent.com')) {
- barColor = '#e74c3c'; // 红色
- }
-
- row.innerHTML = `
- ${domainName} |
-
- ${formatNumber(count)}
- ${percentage}%
-
- |
- `;
-
- // 设置动画延迟,创建级联效果
- row.style.animationDelay = `${index * 50}ms`;
-
- return row;
-}
-
-// 平滑渲染表格数据
-function smoothRenderTable(tableId, newData, rowRenderer) {
- const table = document.getElementById(tableId);
- const tbody = table ? table.querySelector('tbody') : null;
- if (!tbody) return;
-
- // 添加过渡类,用于CSS动画支持
- tbody.classList.add('table-transition');
-
- if (!newData || newData.length === 0) {
- showEmpty(tbody, '暂无数据记录');
- // 移除过渡类
- setTimeout(() => tbody.classList.remove('table-transition'), 300);
- return;
- }
-
- // 创建映射以提高查找效率
- const oldRows = Array.from(tbody.querySelectorAll('tr'));
- const rowMap = new Map();
-
- oldRows.forEach(row => {
- if (!row.querySelector('td:first-child')) return;
- const key = row.dataset.domain || row.querySelector('td:first-child').textContent;
- rowMap.set(key, row);
- });
-
- // 准备新的数据行
- const newRows = [];
- const updatedRows = new Set();
-
- // 处理每一条新数据
- newData.forEach((item, index) => {
- const key = item.domain || item.name || item.Domain || item.Name || '未知域名';
-
- if (rowMap.has(key)) {
- // 数据项已存在,更新它
- const existingRow = rowMap.get(key);
- const oldCount = parseInt(existingRow.dataset.count) || 0;
- const count = item.count !== undefined ? item.count :
- (item.Count !== undefined ? item.Count :
- (item.hits !== undefined ? item.hits :
- (item.Hits !== undefined ? item.Hits : 0)));
-
- // 更新数据属性
- existingRow.dataset.count = count;
-
- // 添加高亮效果,用于CSS过渡
- existingRow.classList.add('table-row-highlight');
- setTimeout(() => {
- existingRow.classList.remove('table-row-highlight');
- }, 1000);
-
- // 如果计数变化,应用平滑更新
- if (oldCount !== count) {
- const countCell = existingRow.querySelector('.count-cell');
- if (countCell) {
- smoothUpdateNumber(countCell, oldCount, count);
- }
- }
-
- // 更新位置
- existingRow.style.animationDelay = `${index * 50}ms`;
- newRows.push(existingRow);
- updatedRows.add(key);
- } else {
- // 新数据项,创建新行
- const newRow = rowRenderer(item, index);
- if (newRow) {
- // 添加淡入动画类
- newRow.classList.add('table-row-fade-in');
- // 先设置透明度为0,避免在错误位置闪烁
- newRow.style.opacity = '0';
- newRows.push(newRow);
- }
- }
- });
-
- // 移除不再存在的数据行
- oldRows.forEach(row => {
- if (!row.querySelector('td:first-child')) return;
- const key = row.dataset.domain || row.querySelector('td:first-child').textContent;
- if (!updatedRows.has(key)) {
- // 添加淡出动画
- row.classList.add('table-row-fade-out');
- setTimeout(() => {
- if (row.parentNode === tbody) {
- tbody.removeChild(row);
- }
- }, 300);
- }
- });
-
- // 批量更新表格内容,减少重排
- requestAnimationFrame(() => {
- // 保留未移除的行并按新顺序插入
- const fragment = document.createDocumentFragment();
-
- newRows.forEach(row => {
- // 如果是新行,添加到文档片段
- if (!row.parentNode || row.parentNode !== tbody) {
- fragment.appendChild(row);
- }
- // 如果是已有行,移除它以便按新顺序重新插入
- else if (tbody.contains(row)) {
- tbody.removeChild(row);
- fragment.appendChild(row);
- }
- });
-
- // 将文档片段添加到表格
- tbody.appendChild(fragment);
-
- // 触发动画
- setTimeout(() => {
- newRows.forEach(row => {
- row.style.opacity = '1';
- });
-
- // 移除过渡类和动画类
- setTimeout(() => {
- tbody.querySelectorAll('.table-row-fade-in').forEach(row => {
- row.classList.remove('table-row-fade-in');
- });
- tbody.classList.remove('table-transition');
- }, 300);
- }, 10);
-
- // 初始化表格排序
- if (typeof initTableSort === 'function') {
- initTableSort(tableId);
- }
- });
-}
-
-// 平滑更新数字
-function smoothUpdateNumber(element, oldValue, newValue) {
- // 如果值相同,不更新
- if (oldValue === newValue || !element) return;
-
- // 根据数值差动态调整持续时间
- const valueDiff = Math.abs(newValue - oldValue);
- const baseDuration = 400;
- const maxDuration = 1000;
- // 数值变化越大,动画时间越长,但不超过最大值
- const duration = Math.min(baseDuration + Math.log10(valueDiff + 1) * 200, maxDuration);
-
- const startTime = performance.now();
-
- function animate(currentTime) {
- const elapsedTime = currentTime - startTime;
- const progress = Math.min(elapsedTime / duration, 1);
-
- // 使用easeOutQuart缓动函数,使动画更自然
- let easeOutProgress;
- if (progress < 1) {
- // 四阶缓动函数:easeOutQuart
- easeOutProgress = 1 - Math.pow(1 - progress, 4);
- } else {
- easeOutProgress = 1;
- }
-
- // 根据不同的数值范围使用不同的插值策略
- let currentValue;
- if (valueDiff < 10) {
- // 小数值变化,使用线性插值
- currentValue = Math.floor(oldValue + (newValue - oldValue) * easeOutProgress);
- } else if (valueDiff < 100) {
- // 中等数值变化,使用四舍五入
- currentValue = Math.round(oldValue + (newValue - oldValue) * easeOutProgress);
- } else {
- // 大数值变化,使用更平滑的插值
- currentValue = Math.floor(oldValue + (newValue - oldValue) * easeOutProgress);
- }
-
- // 更新显示
- element.textContent = formatNumber(currentValue);
-
- // 添加微小的缩放动画效果
- const scaleFactor = 1 + 0.05 * Math.sin(progress * Math.PI);
- element.style.transform = `scale(${scaleFactor})`;
-
- // 继续动画
- if (progress < 1) {
- requestAnimationFrame(animate);
- } else {
- // 动画完成
- element.textContent = formatNumber(newValue);
- // 重置缩放
- element.style.transform = 'scale(1)';
-
- // 触发最终的高亮效果
- element.classList.add('number-update-complete');
- setTimeout(() => {
- element.classList.remove('number-update-complete');
- }, 300);
- }
- }
-
- // 重置元素样式
- element.style.transform = 'scale(1)';
- // 开始动画
- requestAnimationFrame(animate);
-}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/hosts.js b/staticbak/static/js/modules/hosts.js
deleted file mode 100644
index 7c0f374..0000000
--- a/staticbak/static/js/modules/hosts.js
+++ /dev/null
@@ -1,308 +0,0 @@
-// 初始化Hosts面板
-function initHostsPanel() {
- // 加载Hosts列表
- loadHosts();
-
- // 初始化事件监听器
- initHostsEventListeners();
-}
-
-// 初始化事件监听器
-function initHostsEventListeners() {
- // 添加Hosts按钮
- document.getElementById('add-hosts').addEventListener('click', addHostsEntry);
-
- // Hosts过滤
- document.getElementById('hosts-filter').addEventListener('input', filterHosts);
-
- // 按Enter键添加Hosts
- document.getElementById('hosts-domain').addEventListener('keypress', function(e) {
- if (e.key === 'Enter') {
- addHostsEntry();
- }
- });
-}
-
-// 加载Hosts列表
-function loadHosts() {
- const tbody = document.getElementById('hosts-table').querySelector('tbody');
- showLoading(tbody);
-
- // 更新API路径,使用完整路径
- apiRequest('/api/shield/hosts', 'GET')
- .then(data => {
- // 处理不同格式的响应数据
- let hostsData;
- if (Array.isArray(data)) {
- hostsData = data;
- } else if (data && data.hosts) {
- hostsData = data.hosts;
- } else {
- hostsData = [];
- }
-
- renderHosts(hostsData);
-
- // 更新Hosts数量统计
- if (window.updateHostsCount && typeof window.updateHostsCount === 'function') {
- window.updateHostsCount(hostsData.length);
- }
- })
- .catch(error => {
- console.error('获取Hosts列表失败:', error);
-
- if (tbody) {
- tbody.innerHTML = '' +
- '' +
- '
' +
- ' 加载失败 ' +
- ' 无法获取Hosts列表,请稍后重试 ' +
- ' ' +
- ' |
';
- }
-
- if (typeof window.showNotification === 'function') {
- window.showNotification('获取Hosts列表失败', 'danger');
- }
- });
-}
-
-// 渲染Hosts表格
-function renderHosts(hosts) {
- const tbody = document.getElementById('hosts-table').querySelector('tbody');
- if (!tbody) return;
-
- if (!hosts || hosts.length === 0) {
- // 使用更友好的空状态显示
- tbody.innerHTML = '' +
- '' +
- '
' +
- ' 暂无Hosts条目 ' +
- ' 添加自定义Hosts条目以控制DNS解析 ' +
- ' ' +
- ' |
';
- return;
- }
-
- tbody.innerHTML = '';
-
- hosts.forEach(entry => {
- addHostsToTable(entry.ip, entry.domain);
- });
-
- // 初始化删除按钮监听器
- initDeleteHostsListeners();
-}
-
-// 添加Hosts到表格
-function addHostsToTable(ip, domain) {
- const tbody = document.getElementById('hosts-table').querySelector('tbody');
- const row = document.createElement('tr');
-
- row.innerHTML = `
- ${ip} |
- ${domain} |
-
-
- |
- `;
-
- // 添加行动画效果
- row.style.opacity = '0';
- row.style.transform = 'translateY(10px)';
- tbody.appendChild(row);
-
- // 使用requestAnimationFrame确保动画平滑
- requestAnimationFrame(() => {
- row.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
- row.style.opacity = '1';
- row.style.transform = 'translateY(0)';
- });
-}
-
-// 添加Hosts条目
-function addHostsEntry() {
- const ipInput = document.getElementById('hosts-ip');
- const domainInput = document.getElementById('hosts-domain');
-
- const ip = ipInput.value.trim();
- const domain = domainInput.value.trim();
-
- if (!ip) {
- if (typeof window.showNotification === 'function') {
- window.showNotification('请输入IP地址', 'warning');
- }
- ipInput.focus();
- return;
- }
-
- if (!domain) {
- if (typeof window.showNotification === 'function') {
- window.showNotification('请输入域名', 'warning');
- }
- domainInput.focus();
- return;
- }
-
- // 简单的IP地址格式验证
- if (!isValidIp(ip)) {
- if (typeof window.showNotification === 'function') {
- window.showNotification('请输入有效的IP地址', 'warning');
- }
- ipInput.focus();
- return;
- }
-
- // 修复重复API调用问题,只调用一次
- apiRequest('/api/shield/hosts', 'POST', { ip: ip, domain: domain })
- .then(data => {
- // 处理不同的响应格式
- if (data.success || data.status === 'success') {
- if (typeof window.showNotification === 'function') {
- window.showNotification('Hosts条目添加成功', 'success');
- }
-
- // 清空输入框并聚焦到域名输入
- ipInput.value = '';
- domainInput.value = '';
- domainInput.focus();
-
- // 重新加载Hosts列表
- loadHosts();
-
- // 触发数据刷新事件
- if (typeof window.triggerDataRefresh === 'function') {
- window.triggerDataRefresh('hosts');
- }
- } else {
- if (typeof window.showNotification === 'function') {
- window.showNotification(`添加失败: ${data.message || '未知错误'}`, 'danger');
- }
- }
- })
- .catch(error => {
- console.error('添加Hosts条目失败:', error);
- if (typeof window.showNotification === 'function') {
- window.showNotification('添加Hosts条目失败', 'danger');
- }
- });
-}
-
-// 删除Hosts条目
-function deleteHostsEntry(ip, domain) {
- // 找到要删除的行并添加删除动画
- const rows = document.querySelectorAll('#hosts-table tbody tr');
- let targetRow = null;
-
- rows.forEach(row => {
- if (row.cells[0].textContent === ip && row.cells[1].textContent === domain) {
- targetRow = row;
- }
- });
-
- if (targetRow) {
- targetRow.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
- targetRow.style.opacity = '0';
- targetRow.style.transform = 'translateX(-20px)';
- }
-
- // 更新API路径
- apiRequest('/api/shield/hosts', 'DELETE', { ip: ip, domain: domain })
- .then(data => {
- // 处理不同的响应格式
- if (data.success || data.status === 'success') {
- // 等待动画完成后重新加载列表
- setTimeout(() => {
- if (typeof window.showNotification === 'function') {
- window.showNotification('Hosts条目删除成功', 'success');
- }
- loadHosts();
-
- // 触发数据刷新事件
- if (typeof window.triggerDataRefresh === 'function') {
- window.triggerDataRefresh('hosts');
- }
- }, 300);
- } else {
- // 恢复行样式
- if (targetRow) {
- targetRow.style.opacity = '1';
- targetRow.style.transform = 'translateX(0)';
- }
-
- if (typeof window.showNotification === 'function') {
- window.showNotification(`删除失败: ${data.message || '未知错误'}`, 'danger');
- }
- }
- })
- .catch(error => {
- // 恢复行样式
- if (targetRow) {
- targetRow.style.opacity = '1';
- targetRow.style.transform = 'translateX(0)';
- }
-
- console.error('删除Hosts条目失败:', error);
- if (typeof window.showNotification === 'function') {
- window.showNotification('删除Hosts条目失败', 'danger');
- }
- });
-}
-
-// 过滤Hosts
-function filterHosts() {
- const filterText = document.getElementById('hosts-filter').value.toLowerCase();
- const rows = document.querySelectorAll('#hosts-table tbody tr');
-
- rows.forEach(row => {
- const ip = row.cells[0].textContent.toLowerCase();
- const domain = row.cells[1].textContent.toLowerCase();
-
- row.style.display = (ip.includes(filterText) || domain.includes(filterText)) ? '' : 'none';
- });
-}
-
-// 为删除按钮添加事件监听器
-function initDeleteHostsListeners() {
- document.querySelectorAll('.delete-hosts').forEach(button => {
- button.addEventListener('click', function() {
- const ip = this.getAttribute('data-ip');
- const domain = this.getAttribute('data-domain');
-
- // 使用标准confirm对话框
- if (confirm(`确定要删除这条Hosts条目吗?\n${ip} ${domain}`)) {
- deleteHostsEntry(ip, domain);
- }
- });
- });
-}
-
-// 验证IP地址格式
-function isValidIp(ip) {
- // 支持IPv4和IPv6简单验证
- const ipv4Regex = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/;
- const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}$/;
-
- return ipv4Regex.test(ip) || ipv6Regex.test(ip);
-}
-
-// 导出函数,供其他模块调用
-window.updateHostsCount = function(count) {
- const hostsCountElement = document.getElementById('hosts-count');
- if (hostsCountElement) {
- hostsCountElement.textContent = count;
- }
-}
-
-// 导出初始化函数
-window.initHostsPanel = initHostsPanel;
-
-// 注册到面板导航系统
-if (window.registerPanelModule) {
- window.registerPanelModule('hosts-panel', {
- init: initHostsPanel,
- refresh: loadHosts
- });
-}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/query.js b/staticbak/static/js/modules/query.js
deleted file mode 100644
index 77ce7b1..0000000
--- a/staticbak/static/js/modules/query.js
+++ /dev/null
@@ -1,294 +0,0 @@
-// 初始化DNS查询面板
-function initQueryPanel() {
- // 初始化事件监听器
- initQueryEventListeners();
-
- // 确保结果容器默认隐藏
- const resultContainer = document.getElementById('query-result-container');
- if (resultContainer) {
- resultContainer.classList.add('hidden');
- }
-}
-
-// 初始化事件监听器
-function initQueryEventListeners() {
- // 查询按钮
- document.getElementById('run-query').addEventListener('click', runDnsQuery);
-
- // 按Enter键执行查询
- document.getElementById('query-domain').addEventListener('keypress', function(e) {
- if (e.key === 'Enter') {
- runDnsQuery();
- }
- });
-}
-
-// 执行DNS查询
-function runDnsQuery() {
- const domainInput = document.getElementById('query-domain');
- const domain = domainInput.value.trim();
-
- if (!domain) {
- if (typeof window.showNotification === 'function') {
- window.showNotification('请输入要查询的域名', 'warning');
- }
- domainInput.focus();
- return;
- }
-
- // 显示查询中状态
- showQueryLoading();
-
- // 更新API路径,使用完整路径
- apiRequest('/api/query', 'GET', { domain: domain })
- .then(data => {
- // 处理可能的不同响应格式
- renderQueryResult(data);
-
- // 触发数据刷新事件
- if (typeof window.triggerDataRefresh === 'function') {
- window.triggerDataRefresh('query');
- }
- })
- .catch(error => {
- console.error('DNS查询失败:', error);
- showQueryError('查询失败,请稍后重试');
- if (typeof window.showNotification === 'function') {
- window.showNotification('DNS查询失败', 'danger');
- }
- });
-}
-
-// 显示查询加载状态
-function showQueryLoading() {
- const resultContainer = document.getElementById('query-result-container');
- if (!resultContainer) return;
-
- // 添加加载动画类
- resultContainer.classList.add('loading-animation');
- resultContainer.classList.remove('hidden', 'error-animation', 'success-animation');
-
- // 清空之前的结果
- const resultHeader = resultContainer.querySelector('.result-header h3');
- const resultContent = resultContainer.querySelector('.result-content');
-
- if (resultHeader) resultHeader.textContent = '查询中...';
- if (resultContent) {
- resultContent.innerHTML = '';
- }
-}
-
-// 显示查询错误
-function showQueryError(message) {
- const resultContainer = document.getElementById('query-result-container');
- if (!resultContainer) return;
-
- // 添加错误动画类
- resultContainer.classList.add('error-animation');
- resultContainer.classList.remove('hidden', 'loading-animation', 'success-animation');
-
- const resultHeader = resultContainer.querySelector('.result-header h3');
- const resultContent = resultContainer.querySelector('.result-content');
-
- if (resultHeader) resultHeader.textContent = '查询错误';
- if (resultContent) {
- resultContent.innerHTML = `
-
- ${message}
-
`;
- }
-}
-
-// 渲染查询结果
-function renderQueryResult(result) {
- const resultContainer = document.getElementById('query-result-container');
- if (!resultContainer) return;
-
- // 添加成功动画类
- resultContainer.classList.add('success-animation');
- resultContainer.classList.remove('hidden', 'loading-animation', 'error-animation');
-
- const resultHeader = resultContainer.querySelector('.result-header h3');
- const resultContent = resultContainer.querySelector('.result-content');
-
- if (resultHeader) resultHeader.textContent = '查询结果';
- if (!resultContent) return;
-
- // 安全的HTML转义函数
- function escapeHtml(text) {
- const div = document.createElement('div');
- div.textContent = text || '';
- return div.innerHTML;
- }
-
- // 根据查询结果构建内容
- let content = '';
-
- // 域名
- const safeDomain = escapeHtml(result.domain || '');
- content += `
`;
-
- // 状态 - 映射API字段
- const isBlocked = result.blocked || false;
- const isExcluded = result.excluded || false;
- const isAllowed = !isBlocked || isExcluded;
-
- const statusText = isBlocked ? '被屏蔽' : isAllowed ? '允许访问' : '未知';
- const statusClass = isBlocked ? 'status-error' : isAllowed ? 'status-success' : '';
- const statusIcon = isBlocked ? 'fa-ban' : isAllowed ? 'fa-check-circle' : 'fa-question-circle';
- content += `
-
状态
-
- ${statusText}
-
-
`;
-
- // 规则类型 - 映射API字段
- let ruleType = '';
- if (isBlocked) {
- if (result.blockRuleType && result.blockRuleType.toLowerCase().includes('regex')) {
- ruleType = '正则表达式规则';
- } else {
- ruleType = result.blockRuleType || '域名规则';
- }
- } else {
- if (isExcluded) {
- ruleType = '白名单规则';
- } else if (result.hasHosts) {
- ruleType = 'Hosts记录';
- } else {
- ruleType = '未匹配任何规则';
- }
- }
- content += `
-
规则类型
-
${escapeHtml(ruleType)}
-
`;
-
- // 匹配规则 - 映射API字段
- let matchedRule = '';
- if (isBlocked) {
- matchedRule = result.blockRule || '无';
- } else if (isExcluded) {
- matchedRule = result.excludeRule || '无';
- } else {
- matchedRule = '无';
- }
- content += `
-
匹配规则
-
${escapeHtml(matchedRule)}
-
`;
-
- // Hosts记录 - 映射API字段
- const hostsRecord = result.hasHosts && result.hostsIP ?
- escapeHtml(`${result.hostsIP} ${result.domain}`) : '无';
- content += `
-
Hosts记录
-
${hostsRecord}
-
`;
-
- // 查询时间 - API没有提供,计算当前时间
- const queryTime = `${Date.now() % 100} ms`;
- content += `
`;
-
- content += '
'; // 结束result-grid
-
- // DNS响应(如果有)
- if (result.dnsResponse) {
- content += '';
- content += '
DNS响应
';
-
- if (result.dnsResponse.answers && result.dnsResponse.answers.length > 0) {
- content += '
';
- result.dnsResponse.answers.forEach((answer, index) => {
- content += `
- #${index + 1}
- ${escapeHtml(answer.name)}
- ${escapeHtml(answer.type)}
- ${escapeHtml(answer.value)}
-
`;
- });
- content += '
';
- } else {
- content += '
无DNS响应记录
';
- }
- content += '
';
- }
-
- // 添加复制功能
- content += `
-
-
`;
-
- resultContent.innerHTML = content;
-
- // 通知用户查询成功
- if (typeof window.showNotification === 'function') {
- const statusMsg = isBlocked ? '查询完成,该域名被屏蔽' :
- isAllowed ? '查询完成,该域名允许访问' : '查询完成';
- window.showNotification(statusMsg, 'info');
- }
-}
-
-// 复制查询结果到剪贴板
-function copyQueryResult() {
- const resultContainer = document.getElementById('query-result-container');
- if (!resultContainer) return;
-
- // 收集关键信息
- const domain = document.getElementById('result-domain')?.textContent || '未知域名';
- const status = document.getElementById('result-status')?.textContent || '未知状态';
- const ruleType = document.getElementById('result-rule-type')?.textContent || '无规则类型';
- const matchedRule = document.getElementById('result-rule')?.textContent || '无匹配规则';
- const queryTime = document.getElementById('result-time')?.textContent || '未知时间';
-
- // 构建要复制的文本
- const textToCopy = `DNS查询结果:\n` +
- `域名: ${domain}\n` +
- `状态: ${status}\n` +
- `规则类型: ${ruleType}\n` +
- `匹配规则: ${matchedRule}\n` +
- `查询时间: ${queryTime}`;
-
- // 复制到剪贴板
- navigator.clipboard.writeText(textToCopy)
- .then(() => {
- if (typeof window.showNotification === 'function') {
- window.showNotification('查询结果已复制到剪贴板', 'success');
- }
- })
- .catch(err => {
- console.error('复制失败:', err);
- if (typeof window.showNotification === 'function') {
- window.showNotification('复制失败,请手动复制', 'warning');
- }
- });
-}
-
-// 导出函数,供其他模块调用
-window.initQueryPanel = initQueryPanel;
-window.runDnsQuery = runDnsQuery;
-
-// 注册到面板导航系统
-if (window.registerPanelModule) {
- window.registerPanelModule('query-panel', {
- init: initQueryPanel,
- refresh: function() {
- // 清除当前查询结果
- const resultContainer = document.getElementById('query-result-container');
- if (resultContainer) {
- resultContainer.classList.add('hidden');
- }
- }
- });
-}
\ No newline at end of file
diff --git a/staticbak/static/js/modules/rules.js b/staticbak/static/js/modules/rules.js
deleted file mode 100644
index 30d2c3c..0000000
--- a/staticbak/static/js/modules/rules.js
+++ /dev/null
@@ -1,422 +0,0 @@
-// 屏蔽规则管理模块
-
-// 全局变量
-let rules = [];
-let currentPage = 1;
-let itemsPerPage = 50; // 默认每页显示50条规则
-let filteredRules = [];
-
-// 初始化屏蔽规则面板
-function initRulesPanel() {
- // 加载规则列表
- loadRules();
-
- // 绑定添加规则按钮事件
- document.getElementById('add-rule-btn').addEventListener('click', addNewRule);
-
- // 绑定刷新规则按钮事件
- document.getElementById('reload-rules-btn').addEventListener('click', reloadRules);
-
- // 绑定搜索框事件
- document.getElementById('rule-search').addEventListener('input', filterRules);
-
- // 绑定每页显示数量变更事件
- document.getElementById('items-per-page').addEventListener('change', () => {
- itemsPerPage = parseInt(document.getElementById('items-per-page').value);
- currentPage = 1; // 重置为第一页
- renderRulesList();
- });
-
- // 绑定分页按钮事件
- document.getElementById('prev-page-btn').addEventListener('click', goToPreviousPage);
- document.getElementById('next-page-btn').addEventListener('click', goToNextPage);
- document.getElementById('first-page-btn').addEventListener('click', goToFirstPage);
- document.getElementById('last-page-btn').addEventListener('click', goToLastPage);
-}
-
-// 加载规则列表
-async function loadRules() {
- try {
- const rulesPanel = document.getElementById('rules-panel');
- showLoading(rulesPanel);
-
- // 更新API路径,使用正确的API路径
- const data = await apiRequest('/api/shield', 'GET');
-
- // 处理后端返回的复杂对象数据格式
- let allRules = [];
- if (data && typeof data === 'object') {
- // 合并所有类型的规则到一个数组
- if (Array.isArray(data.domainRules)) allRules = allRules.concat(data.domainRules);
- if (Array.isArray(data.domainExceptions)) allRules = allRules.concat(data.domainExceptions);
- if (Array.isArray(data.regexRules)) allRules = allRules.concat(data.regexRules);
- if (Array.isArray(data.regexExceptions)) allRules = allRules.concat(data.regexExceptions);
- }
-
- rules = allRules;
- filteredRules = [...rules];
- currentPage = 1; // 重置为第一页
- renderRulesList();
-
- // 更新规则数量统计卡片
- if (window.updateRulesCount && typeof window.updateRulesCount === 'function') {
- window.updateRulesCount(rules.length);
- }
- } catch (error) {
- console.error('加载规则失败:', error);
- if (typeof window.showNotification === 'function') {
- window.showNotification('加载规则失败', 'danger');
- }
- } finally {
- const rulesPanel = document.getElementById('rules-panel');
- hideLoading(rulesPanel);
- }
-}
-
-// 渲染规则列表
-function renderRulesList() {
- const rulesList = document.getElementById('rules-list');
- const paginationInfo = document.getElementById('pagination-info');
-
- // 清空列表
- rulesList.innerHTML = '';
-
- if (filteredRules.length === 0) {
- // 使用更友好的空状态显示
- rulesList.innerHTML = '' +
- '' +
- '
' +
- ' 暂无规则 ' +
- ' 点击添加按钮或刷新规则来获取规则列表 ' +
- ' ' +
- ' |
';
- paginationInfo.textContent = '共0条规则';
- updatePaginationButtons();
- return;
- }
-
- // 计算分页数据
- const totalPages = Math.ceil(filteredRules.length / itemsPerPage);
- const startIndex = (currentPage - 1) * itemsPerPage;
- const endIndex = Math.min(startIndex + itemsPerPage, filteredRules.length);
- const currentRules = filteredRules.slice(startIndex, endIndex);
-
- // 渲染当前页的规则
- currentRules.forEach((rule, index) => {
- const row = document.createElement('tr');
- const globalIndex = startIndex + index;
-
- // 根据规则类型添加不同的样式
- const ruleTypeClass = getRuleTypeClass(rule);
-
- row.innerHTML = `
- ${globalIndex + 1} |
- ${escapeHtml(rule)} |
-
-
- |
- `;
-
- // 添加行动画效果
- row.style.opacity = '0';
- row.style.transform = 'translateY(10px)';
- rulesList.appendChild(row);
-
- // 使用requestAnimationFrame确保动画平滑
- requestAnimationFrame(() => {
- row.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
- row.style.opacity = '1';
- row.style.transform = 'translateY(0)';
- });
- });
-
- // 绑定删除按钮事件
- document.querySelectorAll('.delete-rule').forEach(button => {
- button.addEventListener('click', (e) => {
- const index = parseInt(e.currentTarget.dataset.index);
- deleteRule(index);
- });
- });
-
- // 更新分页信息
- paginationInfo.textContent = `显示 ${startIndex + 1}-${endIndex} 条,共 ${filteredRules.length} 条规则,第 ${currentPage}/${totalPages} 页`;
-
- // 更新分页按钮状态
- updatePaginationButtons();
-}
-
-// 更新分页按钮状态
-function updatePaginationButtons() {
- const totalPages = Math.ceil(filteredRules.length / itemsPerPage);
- const prevBtn = document.getElementById('prev-page-btn');
- const nextBtn = document.getElementById('next-page-btn');
- const firstBtn = document.getElementById('first-page-btn');
- const lastBtn = document.getElementById('last-page-btn');
-
- prevBtn.disabled = currentPage === 1;
- nextBtn.disabled = currentPage === totalPages || totalPages === 0;
- firstBtn.disabled = currentPage === 1;
- lastBtn.disabled = currentPage === totalPages || totalPages === 0;
-}
-
-// 上一页
-function goToPreviousPage() {
- if (currentPage > 1) {
- currentPage--;
- renderRulesList();
- }
-}
-
-// 下一页
-function goToNextPage() {
- const totalPages = Math.ceil(filteredRules.length / itemsPerPage);
- if (currentPage < totalPages) {
- currentPage++;
- renderRulesList();
- }
-}
-
-// 第一页
-function goToFirstPage() {
- currentPage = 1;
- renderRulesList();
-}
-
-// 最后一页
-function goToLastPage() {
- currentPage = Math.ceil(filteredRules.length / itemsPerPage);
- renderRulesList();
-}
-
-// 添加新规则
-async function addNewRule() {
- const ruleInput = document.getElementById('rule-input');
- const rule = ruleInput.value.trim();
-
- if (!rule) {
- if (typeof window.showNotification === 'function') {
- window.showNotification('请输入规则内容', 'warning');
- }
- return;
- }
-
- try {
- // 预处理规则,支持AdGuardHome格式
- const processedRule = preprocessRule(rule);
-
- // 使用正确的API路径
- const response = await apiRequest('/api/shield', 'POST', { rule: processedRule });
-
- // 处理不同的响应格式
- if (response.success || response.status === 'success') {
- rules.push(processedRule);
- filteredRules = [...rules];
- ruleInput.value = '';
-
- // 添加后跳转到最后一页,显示新添加的规则
- currentPage = Math.ceil(filteredRules.length / itemsPerPage);
- renderRulesList();
-
- // 更新规则数量统计
- if (window.updateRulesCount && typeof window.updateRulesCount === 'function') {
- window.updateRulesCount(rules.length);
- }
-
- if (typeof window.showNotification === 'function') {
- window.showNotification('规则添加成功', 'success');
- }
- } else {
- if (typeof window.showNotification === 'function') {
- window.showNotification('规则添加失败:' + (response.message || '未知错误'), 'danger');
- }
- }
- } catch (error) {
- console.error('添加规则失败:', error);
- if (typeof window.showNotification === 'function') {
- window.showNotification('添加规则失败', 'danger');
- }
- }
-}
-
-// 删除规则
-async function deleteRule(index) {
- if (!confirm('确定要删除这条规则吗?')) {
- return;
- }
-
- try {
- const rule = filteredRules[index];
- const rowElement = document.querySelectorAll('#rules-list tr')[index];
-
- // 添加删除动画
- if (rowElement) {
- rowElement.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
- rowElement.style.opacity = '0';
- rowElement.style.transform = 'translateX(-20px)';
- }
-
- // 使用正确的API路径
- const response = await apiRequest('/api/shield', 'DELETE', { rule });
-
- // 处理不同的响应格式
- if (response.success || response.status === 'success') {
- // 在原规则列表中找到并删除
- const originalIndex = rules.indexOf(rule);
- if (originalIndex !== -1) {
- rules.splice(originalIndex, 1);
- }
-
- // 在过滤后的列表中删除
- filteredRules.splice(index, 1);
-
- // 如果当前页没有数据了,回到上一页
- const totalPages = Math.ceil(filteredRules.length / itemsPerPage);
- if (currentPage > totalPages && totalPages > 0) {
- currentPage = totalPages;
- }
-
- // 等待动画完成后重新渲染列表
- setTimeout(() => {
- renderRulesList();
-
- // 更新规则数量统计
- if (window.updateRulesCount && typeof window.updateRulesCount === 'function') {
- window.updateRulesCount(rules.length);
- }
-
- if (typeof window.showNotification === 'function') {
- window.showNotification('规则删除成功', 'success');
- }
- }, 300);
- } else {
- // 恢复行样式
- if (rowElement) {
- rowElement.style.opacity = '1';
- rowElement.style.transform = 'translateX(0)';
- }
-
- if (typeof window.showNotification === 'function') {
- window.showNotification('规则删除失败:' + (response.message || '未知错误'), 'danger');
- }
- }
- } catch (error) {
- console.error('删除规则失败:', error);
- if (typeof window.showNotification === 'function') {
- window.showNotification('删除规则失败', 'danger');
- }
- }
-}
-
-// 重新加载规则
-async function reloadRules() {
- if (!confirm('确定要重新加载所有规则吗?这将覆盖当前内存中的规则。')) {
- return;
- }
-
- try {
- const rulesPanel = document.getElementById('rules-panel');
- showLoading(rulesPanel);
-
- // 使用正确的API路径和方法 - PUT请求到/api/shield
- await apiRequest('/api/shield', 'PUT');
-
- // 重新加载规则列表
- await loadRules();
-
- // 触发数据刷新事件,通知其他模块数据已更新
- if (typeof window.triggerDataRefresh === 'function') {
- window.triggerDataRefresh('rules');
- }
-
- if (typeof window.showNotification === 'function') {
- window.showNotification('规则重新加载成功', 'success');
- }
- } catch (error) {
- console.error('重新加载规则失败:', error);
- if (typeof window.showNotification === 'function') {
- window.showNotification('重新加载规则失败', 'danger');
- }
- } finally {
- const rulesPanel = document.getElementById('rules-panel');
- hideLoading(rulesPanel);
- }
-}
-
-// 过滤规则
-function filterRules() {
- const searchTerm = document.getElementById('rule-search').value.toLowerCase();
-
- if (searchTerm) {
- filteredRules = rules.filter(rule => rule.toLowerCase().includes(searchTerm));
- } else {
- filteredRules = [...rules];
- }
-
- currentPage = 1; // 重置为第一页
- renderRulesList();
-}
-
-// HTML转义,防止XSS攻击
-function escapeHtml(text) {
- const map = {
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- "'": '''
- };
- return text.replace(/[&<>'"]/g, m => map[m]);
-}
-
-// 根据规则类型返回对应的CSS类名
-function getRuleTypeClass(rule) {
- // 简单的规则类型判断
- if (rule.startsWith('||') || rule.startsWith('|http')) {
- return 'rule-type-url';
- } else if (rule.startsWith('@@')) {
- return 'rule-type-exception';
- } else if (rule.startsWith('#')) {
- return 'rule-type-comment';
- } else if (rule.includes('$')) {
- return 'rule-type-filter';
- }
- return 'rule-type-standard';
-}
-
-// 预处理规则,支持多种规则格式
-function preprocessRule(rule) {
- // 移除首尾空白字符
- let processed = rule.trim();
-
- // 处理AdGuardHome格式的规则
- if (processed.startsWith('0.0.0.0 ') || processed.startsWith('127.0.0.1 ')) {
- const parts = processed.split(' ');
- if (parts.length >= 2) {
- // 转换为AdBlock Plus格式
- processed = '||' + parts[1] + '^';
- }
- }
-
- return processed;
-}
-
-// 导出函数,供其他模块调用
-window.updateRulesCount = function(count) {
- const rulesCountElement = document.getElementById('rules-count');
- if (rulesCountElement) {
- rulesCountElement.textContent = count;
- }
-}
-
-// 导出初始化函数
-window.initRulesPanel = initRulesPanel;
-
-// 注册到面板导航系统
-if (window.registerPanelModule) {
- window.registerPanelModule('rules-panel', {
- init: initRulesPanel,
- refresh: loadRules
- });
-}
\ No newline at end of file
diff --git a/staticbak/static/js/query.js b/staticbak/static/js/query.js
deleted file mode 100644
index 6c9a764..0000000
--- a/staticbak/static/js/query.js
+++ /dev/null
@@ -1,301 +0,0 @@
-// DNS查询页面功能实现
-
-// 初始化查询页面
-function initQueryPage() {
- console.log('初始化DNS查询页面...');
- setupQueryEventListeners();
- loadQueryHistory();
-}
-
-// 执行DNS查询
-async function handleDNSQuery() {
- const domainInput = document.getElementById('dns-query-domain');
- const resultDiv = document.getElementById('query-result');
-
- if (!domainInput || !resultDiv) {
- console.error('找不到必要的DOM元素');
- return;
- }
-
- const domain = domainInput.value.trim();
- if (!domain) {
- showErrorMessage('请输入域名');
- return;
- }
-
- try {
- const response = await fetch(`/api/query?domain=${encodeURIComponent(domain)}`);
- if (!response.ok) {
- throw new Error('查询失败');
- }
-
- const result = await response.json();
- displayQueryResult(result, domain);
- saveQueryHistory(domain, result);
- loadQueryHistory();
- } catch (error) {
- console.error('DNS查询出错:', error);
- showErrorMessage('查询失败,请稍后重试');
- }
-}
-
-// 显示查询结果
-function displayQueryResult(result, domain) {
- const resultDiv = document.getElementById('query-result');
- if (!resultDiv) return;
-
- // 显示结果容器
- resultDiv.classList.remove('hidden');
-
- // 解析结果
- const status = result.blocked ? '被屏蔽' : '正常';
- const statusClass = result.blocked ? 'text-danger' : 'text-success';
- const blockType = result.blocked ? result.blockRuleType || '未知' : '正常';
- const blockRule = result.blocked ? result.blockRule || '未知' : '无';
- const blockSource = result.blocked ? result.blocksource || '未知' : '无';
- const timestamp = new Date(result.timestamp).toLocaleString();
-
- // 更新结果显示
- document.getElementById('result-domain').textContent = domain;
- document.getElementById('result-status').innerHTML = `${status}`;
- document.getElementById('result-type').textContent = blockType;
-
- // 检查是否存在屏蔽规则显示元素,如果不存在则创建
- let blockRuleElement = document.getElementById('result-block-rule');
- if (!blockRuleElement) {
- // 创建屏蔽规则显示区域
- const grid = resultDiv.querySelector('.grid');
- if (grid) {
- const newGridItem = document.createElement('div');
- newGridItem.className = 'bg-gray-50 p-4 rounded-lg';
- newGridItem.innerHTML = `
- 屏蔽规则
- -
- `;
- grid.appendChild(newGridItem);
- blockRuleElement = document.getElementById('result-block-rule');
- }
- }
-
- // 更新屏蔽规则显示
- if (blockRuleElement) {
- blockRuleElement.textContent = blockRule;
- }
-
- // 检查是否存在屏蔽来源显示元素,如果不存在则创建
- let blockSourceElement = document.getElementById('result-block-source');
- if (!blockSourceElement) {
- // 创建屏蔽来源显示区域
- const grid = resultDiv.querySelector('.grid');
- if (grid) {
- const newGridItem = document.createElement('div');
- newGridItem.className = 'bg-gray-50 p-4 rounded-lg';
- newGridItem.innerHTML = `
- 屏蔽来源
- -
- `;
- grid.appendChild(newGridItem);
- blockSourceElement = document.getElementById('result-block-source');
- }
- }
-
- // 更新屏蔽来源显示
- if (blockSourceElement) {
- blockSourceElement.textContent = blockSource;
- }
-
- document.getElementById('result-time').textContent = timestamp;
- document.getElementById('result-details').textContent = JSON.stringify(result, null, 2);
-}
-
-// 保存查询历史
-function saveQueryHistory(domain, result) {
- // 获取现有历史记录
- let history = JSON.parse(localStorage.getItem('dnsQueryHistory') || '[]');
-
- // 创建历史记录项
- const historyItem = {
- domain: domain,
- timestamp: new Date().toISOString(),
- result: {
- blocked: result.blocked,
- blockRuleType: result.blockRuleType,
- blockRule: result.blockRule,
- blocksource: result.blocksource
- }
- };
-
- // 添加到历史记录开头
- history.unshift(historyItem);
-
- // 限制历史记录数量
- if (history.length > 20) {
- history = history.slice(0, 20);
- }
-
- // 保存到本地存储
- localStorage.setItem('dnsQueryHistory', JSON.stringify(history));
-}
-
-// 加载查询历史
-function loadQueryHistory() {
- const historyDiv = document.getElementById('query-history');
- if (!historyDiv) return;
-
- // 获取历史记录
- const history = JSON.parse(localStorage.getItem('dnsQueryHistory') || '[]');
-
- if (history.length === 0) {
- historyDiv.innerHTML = '暂无查询历史
';
- return;
- }
-
- // 生成历史记录HTML
- const historyHTML = history.map(item => {
- const statusClass = item.result.blocked ? 'text-danger' : 'text-success';
- const statusText = item.result.blocked ? '被屏蔽' : '正常';
- const blockType = item.result.blocked ? item.result.blockRuleType : '正常';
- const blockRule = item.result.blocked ? item.result.blockRule : '无';
- const blockSource = item.result.blocked ? item.result.blocksource : '无';
- const formattedTime = new Date(item.timestamp).toLocaleString();
-
- return `
-
-
-
- ${item.domain}
- ${statusText}
- ${blockType}
-
-
规则: ${blockRule}
-
来源: ${blockSource}
-
${formattedTime}
-
-
-
- `;
- }).join('');
-
- historyDiv.innerHTML = historyHTML;
-}
-
-// 从历史记录重新查询
-function requeryFromHistory(domain) {
- const domainInput = document.getElementById('dns-query-domain');
- if (domainInput) {
- domainInput.value = domain;
- handleDNSQuery();
- }
-}
-
-// 清空查询历史
-function clearQueryHistory() {
- if (confirm('确定要清空所有查询历史吗?')) {
- localStorage.removeItem('dnsQueryHistory');
- loadQueryHistory();
- showSuccessMessage('查询历史已清空');
- }
-}
-
-// 设置事件监听器
-function setupQueryEventListeners() {
- // 查询按钮事件
- const queryBtn = document.getElementById('dns-query-btn');
- if (queryBtn) {
- queryBtn.addEventListener('click', handleDNSQuery);
- }
-
- // 输入框回车键事件
- const domainInput = document.getElementById('dns-query-domain');
- if (domainInput) {
- domainInput.addEventListener('keypress', (e) => {
- if (e.key === 'Enter') {
- e.preventDefault();
- handleDNSQuery();
- }
- });
- }
-
- // 清空历史按钮事件
- const clearHistoryBtn = document.getElementById('clear-history-btn');
- if (clearHistoryBtn) {
- clearHistoryBtn.addEventListener('click', clearQueryHistory);
- }
-}
-
-
-
-// 显示成功消息
-function showSuccessMessage(message) {
- showNotification(message, 'success');
-}
-
-// 显示错误消息
-function showErrorMessage(message) {
- showNotification(message, 'error');
-}
-
-// 显示通知
-function showNotification(message, type = 'info') {
- // 移除现有通知
- const existingNotification = document.querySelector('.notification');
- if (existingNotification) {
- existingNotification.remove();
- }
-
- // 创建新通知
- const notification = document.createElement('div');
- notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 ease-in-out translate-y-0 opacity-0`;
-
- // 设置通知样式
- if (type === 'success') {
- notification.classList.add('bg-green-500', 'text-white');
- } else if (type === 'error') {
- notification.classList.add('bg-red-500', 'text-white');
- } else {
- notification.classList.add('bg-blue-500', 'text-white');
- }
-
- notification.innerHTML = `
-
-
- ${message}
-
- `;
-
- document.body.appendChild(notification);
-
- // 显示通知
- setTimeout(() => {
- notification.classList.remove('opacity-0');
- notification.classList.add('opacity-100');
- }, 10);
-
- // 3秒后隐藏通知
- setTimeout(() => {
- notification.classList.remove('opacity-100');
- notification.classList.add('opacity-0');
- setTimeout(() => {
- notification.remove();
- }, 300);
- }, 3000);
-}
-
-// 页面加载完成后初始化
-if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', initQueryPage);
-} else {
- initQueryPage();
-}
-
-// 当切换到DNS查询页面时重新加载数据
-document.addEventListener('DOMContentLoaded', () => {
- // 监听hash变化,当切换到DNS查询页面时重新加载数据
- window.addEventListener('hashchange', () => {
- if (window.location.hash === '#query') {
- initQueryPage();
- }
- });
-});
\ No newline at end of file
diff --git a/staticbak/static/js/server-status.js b/staticbak/static/js/server-status.js
deleted file mode 100644
index fa2d8c0..0000000
--- a/staticbak/static/js/server-status.js
+++ /dev/null
@@ -1,305 +0,0 @@
-// 服务器状态组件 - 显示CPU使用率和查询统计
-
-// 全局变量
-let serverStatusUpdateTimer = null;
-let previousServerData = {
- cpu: 0,
- queries: 0
-};
-
-// 初始化服务器状态组件
-function initServerStatusWidget() {
- // 确保DOM元素存在
- const widget = document.getElementById('server-status-widget');
- if (!widget) return;
-
- // 初始化页面类型检测
- updateWidgetDisplayByPageType();
-
- // 设置页面切换事件监听
- handlePageSwitchEvents();
-
- // 设置WebSocket监听(如果可用)
- setupWebSocketListeners();
-
- // 立即加载一次数据
- loadServerStatusData();
-
- // 设置定时更新(每5秒更新一次)
- serverStatusUpdateTimer = setInterval(loadServerStatusData, 5000);
-}
-
-// 判断当前页面是否为仪表盘
-function isCurrentPageDashboard() {
- // 方法1:检查侧边栏激活状态
- const dashboardLink = document.querySelector('.sidebar a[href="#dashboard"]');
- if (dashboardLink && dashboardLink.classList.contains('active')) {
- return true;
- }
-
- // 方法2:检查仪表盘特有元素
- const dashboardElements = [
- '#dashboard-container',
- '.dashboard-summary',
- '#dashboard-stats'
- ];
-
- for (const selector of dashboardElements) {
- if (document.querySelector(selector)) {
- return true;
- }
- }
-
- // 方法3:检查URL哈希值
- if (window.location.hash === '#dashboard' || window.location.hash === '') {
- return true;
- }
-
- return false;
-}
-
-// 根据页面类型更新组件显示
-function updateWidgetDisplayByPageType() {
- const additionalStats = document.getElementById('server-additional-stats');
- if (!additionalStats) return;
-
- // 如果当前页面是仪表盘,隐藏额外统计指标
- if (isCurrentPageDashboard()) {
- additionalStats.classList.add('hidden');
- } else {
- // 非仪表盘页面,显示额外统计指标
- additionalStats.classList.remove('hidden');
- }
-}
-
-// 处理页面切换事件
-function handlePageSwitchEvents() {
- // 监听哈希变化(导航切换)
- window.addEventListener('hashchange', updateWidgetDisplayByPageType);
-
- // 监听侧边栏点击事件
- const sidebarLinks = document.querySelectorAll('.sidebar a');
- sidebarLinks.forEach(link => {
- link.addEventListener('click', function() {
- // 延迟检查,确保页面已切换
- setTimeout(updateWidgetDisplayByPageType, 100);
- });
- });
-
- // 监听导航菜单点击事件
- const navLinks = document.querySelectorAll('nav a');
- navLinks.forEach(link => {
- link.addEventListener('click', function() {
- setTimeout(updateWidgetDisplayByPageType, 100);
- });
- });
-}
-
-// 监控WebSocket连接状态
-function monitorWebSocketConnection() {
- // 如果存在WebSocket连接,监听消息
- if (window.socket) {
- window.socket.addEventListener('message', function(event) {
- try {
- const data = JSON.parse(event.data);
- if (data.type === 'status_update') {
- updateServerStatusWidget(data.payload);
- }
- } catch (error) {
- console.error('解析WebSocket消息失败:', error);
- }
- });
- }
-}
-
-// 设置WebSocket监听器
-function setupWebSocketListeners() {
- // 如果WebSocket已经存在
- if (window.socket) {
- monitorWebSocketConnection();
- } else {
- // 监听socket初始化事件
- window.addEventListener('socketInitialized', function() {
- monitorWebSocketConnection();
- });
- }
-}
-
-// 加载服务器状态数据
-async function loadServerStatusData() {
- try {
- // 使用现有的API获取系统状态
- const api = window.api || {};
- const getStatusFn = api.getStatus || function() { return Promise.resolve({}); };
- const statusData = await getStatusFn();
- if (statusData && !statusData.error) {
- updateServerStatusWidget(statusData);
- }
- } catch (error) {
- console.error('加载服务器状态数据失败:', error);
- }
-}
-
-// 更新服务器状态组件
-function updateServerStatusWidget(stats) {
- // 确保组件存在
- const widget = document.getElementById('server-status-widget');
- if (!widget) return;
-
- // 确保stats存在
- stats = stats || {};
-
- // 提取CPU使用率
- let cpuUsage = 0;
- if (stats.system && typeof stats.system.cpu === 'number') {
- cpuUsage = stats.system.cpu;
- } else if (typeof stats.cpuUsage === 'number') {
- cpuUsage = stats.cpuUsage;
- }
-
- // 提取查询统计数据
- let totalQueries = 0;
- let blockedQueries = 0;
- let allowedQueries = 0;
-
- if (stats.dns) {
- const allowed = typeof stats.dns.Allowed === 'number' ? stats.dns.Allowed : 0;
- const blocked = typeof stats.dns.Blocked === 'number' ? stats.dns.Blocked : 0;
- const errors = typeof stats.dns.Errors === 'number' ? stats.dns.Errors : 0;
- totalQueries = allowed + blocked + errors;
- blockedQueries = blocked;
- allowedQueries = allowed;
- } else {
- totalQueries = typeof stats.totalQueries === 'number' ? stats.totalQueries : 0;
- blockedQueries = typeof stats.blockedQueries === 'number' ? stats.blockedQueries : 0;
- allowedQueries = typeof stats.allowedQueries === 'number' ? stats.allowedQueries : 0;
- }
-
- // 更新CPU使用率
- const cpuValueElement = document.getElementById('server-cpu-value');
- if (cpuValueElement) {
- cpuValueElement.textContent = cpuUsage.toFixed(1) + '%';
- }
-
- const cpuBarElement = document.getElementById('server-cpu-bar');
- if (cpuBarElement) {
- cpuBarElement.style.width = Math.min(cpuUsage, 100) + '%';
-
- // 根据CPU使用率改变颜色
- if (cpuUsage > 80) {
- cpuBarElement.className = 'h-full bg-danger rounded-full';
- } else if (cpuUsage > 50) {
- cpuBarElement.className = 'h-full bg-warning rounded-full';
- } else {
- cpuBarElement.className = 'h-full bg-success rounded-full';
- }
- }
-
- // 更新查询量
- const queriesValueElement = document.getElementById('server-queries-value');
- if (queriesValueElement) {
- queriesValueElement.textContent = formatNumber(totalQueries);
- }
-
- // 计算查询量百分比(假设最大查询量为10000)
- const queryPercentage = Math.min((totalQueries / 10000) * 100, 100);
- const queriesBarElement = document.getElementById('server-queries-bar');
- if (queriesBarElement) {
- queriesBarElement.style.width = queryPercentage + '%';
- }
-
- // 更新额外统计指标
- const totalQueriesElement = document.getElementById('server-total-queries');
- if (totalQueriesElement) {
- totalQueriesElement.textContent = formatNumber(totalQueries);
- }
-
- const blockedQueriesElement = document.getElementById('server-blocked-queries');
- if (blockedQueriesElement) {
- blockedQueriesElement.textContent = formatNumber(blockedQueries);
- }
-
- const allowedQueriesElement = document.getElementById('server-allowed-queries');
- if (allowedQueriesElement) {
- allowedQueriesElement.textContent = formatNumber(allowedQueries);
- }
-
- // 添加光晕提示效果
- if (previousServerData.cpu !== cpuUsage || previousServerData.queries !== totalQueries) {
- addGlowEffect();
- }
-
- // 更新服务器状态指示器
- const statusIndicator = document.getElementById('server-status-indicator');
- if (statusIndicator) {
- // 检查系统状态
- if (stats.system && stats.system.status === 'error') {
- statusIndicator.className = 'inline-block w-2 h-2 bg-danger rounded-full';
- } else {
- statusIndicator.className = 'inline-block w-2 h-2 bg-success rounded-full';
- }
- }
-
- // 保存当前数据用于下次比较
- previousServerData = {
- cpu: cpuUsage,
- queries: totalQueries
- };
-}
-
-// 添加光晕提示效果
-function addGlowEffect() {
- const widget = document.getElementById('server-status-widget');
- if (!widget) return;
-
- // 添加光晕类
- widget.classList.add('glow-effect');
-
- // 2秒后移除光晕
- setTimeout(function() {
- widget.classList.remove('glow-effect');
- }, 2000);
-}
-
-// 格式化数字
-function formatNumber(num) {
- // 显示完整数字的最大长度阈值
- const MAX_FULL_LENGTH = 5;
-
- // 先获取完整数字字符串
- const fullNumStr = num.toString();
-
- // 如果数字长度小于等于阈值,直接返回完整数字
- if (fullNumStr.length <= MAX_FULL_LENGTH) {
- return fullNumStr;
- }
-
- // 否则使用缩写格式
- if (num >= 1000000) {
- return (num / 1000000).toFixed(1) + 'M';
- } else if (num >= 1000) {
- return (num / 1000).toFixed(1) + 'K';
- }
-
- return fullNumStr;
-}
-
-// 在DOM加载完成后初始化
-window.addEventListener('DOMContentLoaded', function() {
- // 延迟初始化,确保页面完全加载
- setTimeout(initServerStatusWidget, 500);
-});
-
-// 在页面卸载时清理资源
-window.addEventListener('beforeunload', function() {
- if (serverStatusUpdateTimer) {
- clearInterval(serverStatusUpdateTimer);
- serverStatusUpdateTimer = null;
- }
-});
-
-// 导出函数供其他模块使用
-window.serverStatusWidget = {
- init: initServerStatusWidget,
- update: updateServerStatusWidget
-};
\ No newline at end of file
diff --git a/staticbak/static/js/shield.js b/staticbak/static/js/shield.js
deleted file mode 100644
index a9ec599..0000000
--- a/staticbak/static/js/shield.js
+++ /dev/null
@@ -1,1302 +0,0 @@
-// 屏蔽管理页面功能实现
-
-// 初始化屏蔽管理页面
-async function initShieldPage() {
- // 并行加载所有数据
- await Promise.all([
- loadShieldStats(),
- loadLocalRules(),
- loadRemoteBlacklists()
- ]);
- // 设置事件监听器
- setupShieldEventListeners();
-}
-
-// 更新状态显示函数
-function updateStatus(url, status, message) {
- const statusElement = document.getElementById(`update-status-${encodeURIComponent(url)}`);
- if (!statusElement) return;
-
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- let statusHTML = '';
-
- switch (status) {
- case 'loading':
- statusHTML = ' 处理中...';
- break;
- case 'success':
- statusHTML = ` ${message || '成功'}`;
- break;
- case 'error':
- statusHTML = ` ${message || '失败'}`;
- break;
- default:
- statusHTML = '-';
- }
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 设置新的HTML内容
- statusElement.innerHTML = statusHTML;
-
- // 添加过渡类和对应状态类
- statusElement.classList.add('status-transition');
-
- // 如果不是默认状态,添加淡入动画和对应状态类
- if (status !== 'default') {
- statusElement.classList.add('status-fade-in');
- statusElement.classList.add(`status-${status}`);
- }
-
- // 如果是成功或失败状态,3秒后渐变消失
- if (status === 'success' || status === 'error') {
- setTimeout(() => {
- // 添加淡出类
- statusElement.classList.add('status-fade-out');
-
- // 等待淡出动画完成后切换到默认状态
- setTimeout(() => {
- // 清除所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
- // 设置默认状态
- statusElement.innerHTML = '-';
- }, 300); // 与CSS动画持续时间一致
- }, 3000);
- }
-}
-
-// 更新规则状态显示函数
-function updateRuleStatus(rule, status, message) {
- const statusElement = document.getElementById(`rule-status-${encodeURIComponent(rule)}`);
- if (!statusElement) return;
-
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- let statusHTML = '';
-
- switch (status) {
- case 'loading':
- statusHTML = ' 处理中...';
- break;
- case 'success':
- statusHTML = ` ${message || '成功'}`;
- break;
- case 'error':
- statusHTML = ` ${message || '失败'}`;
- break;
- default:
- statusHTML = '-';
- }
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 设置新的HTML内容
- statusElement.innerHTML = statusHTML;
-
- // 添加过渡类和对应状态类
- statusElement.classList.add('status-transition');
-
- // 如果不是默认状态,添加淡入动画和对应状态类
- if (status !== 'default') {
- statusElement.classList.add('status-fade-in');
- statusElement.classList.add(`status-${status}`);
- }
-
- // 如果是成功或失败状态,3秒后渐变消失
- if (status === 'success' || status === 'error') {
- setTimeout(() => {
- // 添加淡出类
- statusElement.classList.add('status-fade-out');
-
- // 等待淡出动画完成后切换到默认状态
- setTimeout(() => {
- // 清除所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
- // 设置默认状态
- statusElement.innerHTML = '-';
- }, 300); // 与CSS动画持续时间一致
- }, 3000);
- }
-}
-
-// 数字更新动画函数
-function animateCounter(element, target, duration = 1000) {
- // 确保element存在
- if (!element) return;
-
- // 清除元素上可能存在的现有定时器
- if (element.animationTimer) {
- clearInterval(element.animationTimer);
- }
-
- // 确保target是数字
- const targetNum = typeof target === 'number' ? target : parseInt(target) || 0;
-
- // 获取起始值,使用更安全的方法
- const startText = element.textContent.replace(/[^0-9]/g, '');
- const start = parseInt(startText) || 0;
-
- // 如果起始值和目标值相同,直接返回
- if (start === targetNum) {
- element.textContent = targetNum;
- return;
- }
-
- let current = start;
- const increment = (targetNum - start) / (duration / 16); // 16ms per frame
-
- // 使用requestAnimationFrame实现更平滑的动画
- let startTime = null;
-
- function updateCounter(timestamp) {
- if (!startTime) startTime = timestamp;
- const elapsed = timestamp - startTime;
- const progress = Math.min(elapsed / duration, 1);
-
- // 使用缓动函数使动画更自然
- const easeOutQuad = progress * (2 - progress);
- current = start + (targetNum - start) * easeOutQuad;
-
- // 根据方向使用floor或ceil确保平滑过渡
- const displayValue = targetNum > start ? Math.floor(current) : Math.ceil(current);
- element.textContent = displayValue;
-
- if (progress < 1) {
- // 继续动画
- element.animationTimer = requestAnimationFrame(updateCounter);
- } else {
- // 动画结束,确保显示准确值
- element.textContent = targetNum;
- // 清除定时器引用
- element.animationTimer = null;
- }
- }
-
- // 开始动画
- element.animationTimer = requestAnimationFrame(updateCounter);
-}
-
-// 加载屏蔽规则统计信息
-async function loadShieldStats() {
- try {
- // 获取屏蔽规则统计信息
- const shieldResponse = await fetch('/api/shield');
-
- if (!shieldResponse.ok) {
- throw new Error(`加载屏蔽统计失败: ${shieldResponse.status}`);
- }
-
- const stats = await shieldResponse.json();
-
- // 获取黑名单列表,计算禁用数量
- const blacklistsResponse = await fetch('/api/shield/blacklists');
-
- if (!blacklistsResponse.ok) {
- throw new Error(`加载黑名单列表失败: ${blacklistsResponse.status}`);
- }
-
- const blacklists = await blacklistsResponse.json();
- const disabledBlacklistCount = blacklists.filter(blacklist => !blacklist.enabled).length;
-
- // 更新统计信息
- const elements = [
- { id: 'domain-rules-count', value: stats.domainRulesCount },
- { id: 'domain-exceptions-count', value: stats.domainExceptionsCount },
- { id: 'regex-rules-count', value: stats.regexRulesCount },
- { id: 'regex-exceptions-count', value: stats.regexExceptionsCount },
- { id: 'hosts-rules-count', value: stats.hostsRulesCount },
- { id: 'blacklist-count', value: stats.blacklistCount }
- ];
-
- elements.forEach(item => {
- const element = document.getElementById(item.id);
- if (element) {
- animateCounter(element, item.value || 0);
- }
- });
-
- // 更新禁用黑名单数量
- const disabledBlacklistElement = document.getElementById('blacklist-disabled-count');
- if (disabledBlacklistElement) {
- animateCounter(disabledBlacklistElement, disabledBlacklistCount);
- }
- } catch (error) {
- console.error('加载屏蔽规则统计信息失败:', error);
- showNotification('加载屏蔽规则统计信息失败', 'error');
- }
-}
-
-// 加载自定义规则
-async function loadLocalRules() {
- try {
- const response = await fetch('/api/shield/localrules');
-
- if (!response.ok) {
- throw new Error(`加载失败: ${response.status}`);
- }
-
- const data = await response.json();
-
- // 更新自定义规则数量显示
- if (document.getElementById('local-rules-count')) {
- document.getElementById('local-rules-count').textContent = data.localRulesCount || 0;
- }
-
- // 设置当前规则类型
- currentRulesType = 'local';
-
- // 合并所有自定义规则
- let rules = [];
- // 添加域名规则
- if (Array.isArray(data.domainRules)) {
- rules = rules.concat(data.domainRules);
- }
- // 添加域名排除规则
- if (Array.isArray(data.domainExceptions)) {
- rules = rules.concat(data.domainExceptions);
- }
- // 添加正则规则
- if (Array.isArray(data.regexRules)) {
- rules = rules.concat(data.regexRules);
- }
- // 添加正则排除规则
- if (Array.isArray(data.regexExceptions)) {
- rules = rules.concat(data.regexExceptions);
- }
-
- updateRulesTable(rules);
- } catch (error) {
- console.error('加载自定义规则失败:', error);
- showNotification('加载自定义规则失败', 'error');
- }
-}
-
-// 加载远程规则
-async function loadRemoteRules() {
- try {
- // 设置当前规则类型
- currentRulesType = 'remote';
- const response = await fetch('/api/shield/remoterules');
-
- if (!response.ok) {
- throw new Error(`加载失败: ${response.status}`);
- }
-
- const data = await response.json();
-
- // 更新远程规则数量显示
- if (document.getElementById('remote-rules-count')) {
- document.getElementById('remote-rules-count').textContent = data.remoteRulesCount || 0;
- }
-
- // 合并所有远程规则
- let rules = [];
- // 添加域名规则
- if (Array.isArray(data.domainRules)) {
- rules = rules.concat(data.domainRules);
- }
- // 添加域名排除规则
- if (Array.isArray(data.domainExceptions)) {
- rules = rules.concat(data.domainExceptions);
- }
- // 添加正则规则
- if (Array.isArray(data.regexRules)) {
- rules = rules.concat(data.regexRules);
- }
- // 添加正则排除规则
- if (Array.isArray(data.regexExceptions)) {
- rules = rules.concat(data.regexExceptions);
- }
-
- updateRulesTable(rules);
- } catch (error) {
- console.error('加载远程规则失败:', error);
- showNotification('加载远程规则失败', 'error');
- }
-}
-
-// 更新规则表格
-function updateRulesTable(rules) {
- const tbody = document.getElementById('rules-table-body');
-
- // 清空表格
- tbody.innerHTML = '';
-
- if (rules.length === 0) {
- const emptyRow = document.createElement('tr');
- emptyRow.innerHTML = '暂无规则 | ';
- tbody.appendChild(emptyRow);
- return;
- }
-
- // 对于大量规则,限制显示数量
- const maxRulesToShow = 1000; // 限制最大显示数量
- const rulesToShow = rules.length > maxRulesToShow ? rules.slice(0, maxRulesToShow) : rules;
-
- // 使用DocumentFragment提高性能
- const fragment = document.createDocumentFragment();
-
- rulesToShow.forEach(rule => {
- const tr = document.createElement('tr');
- tr.className = 'border-b border-gray-200';
-
- const tdRule = document.createElement('td');
- tdRule.className = 'py-3 px-4';
- tdRule.textContent = rule;
-
- const tdStatus = document.createElement('td');
- tdStatus.className = 'py-3 px-4 text-center';
- tdStatus.id = `rule-status-${encodeURIComponent(rule)}`;
- tdStatus.innerHTML = '-';
-
- const tdAction = document.createElement('td');
- tdAction.className = 'py-3 px-4 text-right';
-
- const deleteBtn = document.createElement('button');
- deleteBtn.className = 'delete-rule-btn px-3 py-1 bg-danger text-white rounded-md hover:bg-danger/90 transition-colors text-sm';
- deleteBtn.dataset.rule = rule;
-
- // 创建删除图标
- const deleteIcon = document.createElement('i');
- deleteIcon.className = 'fa fa-trash';
- deleteIcon.style.pointerEvents = 'none'; // 防止图标拦截点击事件
-
- deleteBtn.appendChild(deleteIcon);
-
- // 使用普通函数,确保this指向按钮元素
- deleteBtn.onclick = function(e) {
- e.stopPropagation(); // 阻止事件冒泡
- handleDeleteRule(e);
- };
-
- tdAction.appendChild(deleteBtn);
-
- tr.appendChild(tdRule);
- tr.appendChild(tdStatus);
- tr.appendChild(tdAction);
- fragment.appendChild(tr);
- });
-
- // 一次性添加所有行到DOM
- tbody.appendChild(fragment);
-
- // 如果有更多规则,添加提示
- if (rules.length > maxRulesToShow) {
- const infoRow = document.createElement('tr');
- infoRow.innerHTML = `显示前 ${maxRulesToShow} 条规则,共 ${rules.length} 条 | `;
- tbody.appendChild(infoRow);
- }
-}
-
-// 处理删除规则
-async function handleDeleteRule(e) {
- console.log('Delete button clicked');
- let deleteBtn;
-
- // 尝试从事件目标获取按钮元素
- deleteBtn = e.target.closest('.delete-rule-btn');
- console.log('Delete button from event target:', deleteBtn);
-
- // 尝试从this获取按钮元素(备用方案)
- if (!deleteBtn && this && typeof this.classList === 'object' && this.classList) {
- if (this.classList.contains('delete-rule-btn')) {
- deleteBtn = this;
- console.log('Delete button from this:', deleteBtn);
- }
- }
-
- if (!deleteBtn) {
- console.error('Delete button not found');
- return;
- }
-
- const rule = deleteBtn.dataset.rule;
- console.log('Rule to delete:', rule);
-
- if (!rule) {
- console.error('Rule not found in data-rule attribute');
- return;
- }
-
- try {
- // 显示加载状态
- updateRuleStatus(rule, 'loading');
-
- console.log('Sending DELETE request to /api/shield');
- const response = await fetch('/api/shield', {
- method: 'DELETE',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({ rule })
- });
-
- console.log('Response status:', response.status);
- console.log('Response ok:', response.ok);
-
- // 解析服务器响应
- let responseData;
- try {
- responseData = await response.json();
- } catch (jsonError) {
- responseData = {};
- }
-
- console.log('Response data:', responseData);
-
- // 根据服务器响应判断是否成功
- if (response.ok && responseData.status === 'success') {
- // 显示成功状态
- updateRuleStatus(rule, 'success', '已删除');
-
- showNotification('规则删除成功', 'success');
- console.log('Current rules type:', currentRulesType);
-
- // 延迟重新加载规则列表和统计信息,让用户能看到成功状态
- setTimeout(() => {
- // 根据当前显示的规则类型重新加载对应的规则列表
- if (currentRulesType === 'local') {
- console.log('Reloading local rules');
- loadLocalRules();
- } else {
- console.log('Reloading remote rules');
- loadRemoteRules();
- }
- // 重新加载统计信息
- loadShieldStats();
- }, 3000);
- } else {
- const errorMessage = responseData.error || responseData.message || `删除规则失败: ${response.status}`;
- // 显示错误状态
- updateRuleStatus(rule, 'error', errorMessage);
- throw new Error(errorMessage);
- }
- } catch (error) {
- console.error('Error deleting rule:', error);
- // 显示错误状态
- updateRuleStatus(rule, 'error', error.message);
- showNotification('删除规则失败: ' + error.message, 'error');
- }
-}
-
-// 添加新规则
-async function handleAddRule() {
- const rule = document.getElementById('new-rule').value.trim();
- const statusElement = document.getElementById('save-rule-status');
-
- if (!rule) {
- showNotification('规则不能为空', 'error');
- return;
- }
-
- try {
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- // 显示加载状态
- statusElement.innerHTML = ' 正在添加...';
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 添加过渡类和加载状态类
- statusElement.classList.add('status-transition', 'status-fade-in', 'status-loading');
-
- const response = await fetch('/api/shield', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({ rule })
- });
-
- // 解析服务器响应
- let responseData;
- try {
- responseData = await response.json();
- } catch (jsonError) {
- responseData = {};
- }
-
- // 根据服务器响应判断是否成功
- if (response.ok && responseData.status === 'success') {
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- // 显示成功状态
- statusElement.innerHTML = ' 成功';
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 添加过渡类和成功状态类
- statusElement.classList.add('status-transition', 'status-fade-in', 'status-success');
-
- showNotification('规则添加成功', 'success');
- // 清空输入框
- document.getElementById('new-rule').value = '';
-
- // 延迟重新加载规则和统计信息,让用户能看到成功状态
- setTimeout(() => {
- // 重新加载规则
- loadLocalRules();
- // 重新加载统计信息
- loadShieldStats();
- }, 3000);
- } else {
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- // 显示失败状态
- const errorMessage = responseData.error || responseData.message || '添加规则失败';
- statusElement.innerHTML = ` ${errorMessage}`;
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 添加过渡类和错误状态类
- statusElement.classList.add('status-transition', 'status-fade-in', 'status-error');
-
- showNotification(errorMessage, 'error');
- }
- } catch (error) {
- console.error('Error adding rule:', error);
-
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- // 显示错误状态
- const errorMessage = error.message || '添加规则失败';
- statusElement.innerHTML = ` ${errorMessage}`;
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 添加过渡类和错误状态类
- statusElement.classList.add('status-transition', 'status-fade-in', 'status-error');
-
- showNotification(errorMessage, 'error');
- } finally {
- // 3秒后渐变消失
- setTimeout(() => {
- // 添加淡出类
- statusElement.classList.add('status-fade-out');
-
- // 等待淡出动画完成后清除状态
- setTimeout(() => {
- // 清除所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
- // 清空状态显示
- statusElement.innerHTML = '';
- }, 300); // 与CSS动画持续时间一致
- }, 3000);
- }
-}
-
-// 加载远程黑名单
-async function loadRemoteBlacklists() {
- try {
- const response = await fetch('/api/shield/blacklists');
-
- if (!response.ok) {
- throw new Error(`加载失败: ${response.status}`);
- }
-
- const blacklists = await response.json();
-
- // 确保blacklists是数组
- const blacklistArray = Array.isArray(blacklists) ? blacklists : [];
- updateBlacklistsTable(blacklistArray);
- } catch (error) {
- console.error('加载远程黑名单失败:', error);
- showNotification('加载远程黑名单失败', 'error');
- }
-}
-
-// 判断黑名单是否过期(超过24小时未更新视为过期)
-function isBlacklistExpired(lastUpdateTime) {
- if (!lastUpdateTime) {
- return true; // 从未更新过,视为过期
- }
-
- const lastUpdate = new Date(lastUpdateTime);
- const now = new Date();
- const hoursDiff = (now - lastUpdate) / (1000 * 60 * 60);
-
- return hoursDiff > 24; // 超过24小时视为过期
-}
-
-// 更新黑名单表格
-function updateBlacklistsTable(blacklists) {
- const tbody = document.getElementById('blacklists-table-body');
-
- // 清空表格
- tbody.innerHTML = '';
-
- // 检查黑名单数据是否为空
- if (!blacklists || blacklists.length === 0) {
- const emptyRow = document.createElement('tr');
- emptyRow.innerHTML = '| 暂无黑名单 |
';
- tbody.appendChild(emptyRow);
- return;
- }
-
- // 对于大量黑名单,限制显示数量
- const maxBlacklistsToShow = 100; // 限制最大显示数量
- const blacklistsToShow = blacklists.length > maxBlacklistsToShow ? blacklists.slice(0, maxBlacklistsToShow) : blacklists;
-
- // 使用DocumentFragment提高性能
- const fragment = document.createDocumentFragment();
-
- blacklistsToShow.forEach(blacklist => {
- const tr = document.createElement('tr');
- tr.className = 'border-b border-gray-200 hover:bg-gray-50';
-
- // 名称单元格
- const tdName = document.createElement('td');
- tdName.className = 'py-3 px-4';
- tdName.textContent = blacklist.name || '未命名';
-
- // URL单元格
- const tdUrl = document.createElement('td');
- tdUrl.className = 'py-3 px-4 truncate max-w-xs';
- tdUrl.textContent = blacklist.url;
-
- // 状态单元格
- const tdStatus = document.createElement('td');
- tdStatus.className = 'py-3 px-4 text-center';
-
- // 判断状态颜色:绿色(启用)、灰色(禁用)
- let statusColor = 'bg-gray-300'; // 默认禁用
- let statusText = '禁用';
-
- if (blacklist.enabled) {
- statusColor = 'bg-success'; // 绿色表示启用
- statusText = '启用';
- }
-
- const statusContainer = document.createElement('div');
- statusContainer.className = 'flex items-center justify-center';
-
- const statusDot = document.createElement('span');
- statusDot.className = `inline-block w-3 h-3 rounded-full ${statusColor}`;
- statusDot.title = statusText;
-
- const statusTextSpan = document.createElement('span');
- statusTextSpan.className = 'text-sm ml-2';
- statusTextSpan.textContent = statusText;
-
- statusContainer.appendChild(statusDot);
- statusContainer.appendChild(statusTextSpan);
- tdStatus.appendChild(statusContainer);
-
- // 更新状态单元格
- const tdUpdateStatus = document.createElement('td');
- tdUpdateStatus.className = 'py-3 px-4 text-center';
- tdUpdateStatus.id = `update-status-${encodeURIComponent(blacklist.url)}`;
- tdUpdateStatus.innerHTML = '-';
-
- // 操作单元格
- const tdActions = document.createElement('td');
- tdActions.className = 'py-3 px-4 text-right space-x-2';
-
- // 启用/禁用按钮
- const toggleBtn = document.createElement('button');
- toggleBtn.className = `toggle-blacklist-btn px-3 py-1 rounded-md transition-colors text-sm ${blacklist.enabled ? 'bg-warning text-white hover:bg-warning/90' : 'bg-success text-white hover:bg-success/90'}`;
- toggleBtn.dataset.url = blacklist.url;
- toggleBtn.dataset.enabled = blacklist.enabled;
- toggleBtn.innerHTML = ``;
- toggleBtn.title = blacklist.enabled ? '禁用黑名单' : '启用黑名单';
- toggleBtn.addEventListener('click', handleToggleBlacklist);
-
- // 刷新按钮
- const refreshBtn = document.createElement('button');
- refreshBtn.className = 'update-blacklist-btn px-3 py-1 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors text-sm';
- refreshBtn.dataset.url = blacklist.url;
- refreshBtn.innerHTML = '';
- refreshBtn.title = '刷新黑名单';
- refreshBtn.addEventListener('click', handleUpdateBlacklist);
-
- // 删除按钮
- const deleteBtn = document.createElement('button');
- deleteBtn.className = 'delete-blacklist-btn px-3 py-1 bg-danger text-white rounded-md hover:bg-danger/90 transition-colors text-sm';
- deleteBtn.dataset.url = blacklist.url;
- deleteBtn.innerHTML = '';
- deleteBtn.title = '删除黑名单';
- deleteBtn.addEventListener('click', handleDeleteBlacklist);
-
- tdActions.appendChild(toggleBtn);
- tdActions.appendChild(refreshBtn);
- tdActions.appendChild(deleteBtn);
-
- tr.appendChild(tdName);
- tr.appendChild(tdUrl);
- tr.appendChild(tdStatus);
- tr.appendChild(tdUpdateStatus);
- tr.appendChild(tdActions);
- fragment.appendChild(tr);
- });
-
- // 一次性添加所有行到DOM
- tbody.appendChild(fragment);
-
- // 如果有更多黑名单,添加提示
- if (blacklists.length > maxBlacklistsToShow) {
- const infoRow = document.createElement('tr');
- infoRow.innerHTML = `显示前 ${maxBlacklistsToShow} 个黑名单,共 ${blacklists.length} 个 | `;
- tbody.appendChild(infoRow);
- }
-}
-
-// 处理更新单个黑名单
-async function handleUpdateBlacklist(e) {
- // 确保获取到正确的按钮元素
- const btn = e.target.closest('.update-blacklist-btn');
- if (!btn) {
- console.error('未找到更新按钮元素');
- return;
- }
-
- const url = btn.dataset.url;
-
- if (!url) {
- showNotification('无效的黑名单URL', 'error');
- return;
- }
-
- try {
- // 显示加载状态
- updateStatus(url, 'loading');
-
- // 获取当前所有黑名单
- const response = await fetch('/api/shield/blacklists');
- if (!response.ok) {
- throw new Error(`获取黑名单失败: ${response.status}`);
- }
-
- const blacklists = await response.json();
-
- // 找到目标黑名单并更新其状态
- const updatedBlacklists = blacklists.map(blacklist => {
- if (blacklist.url === url) {
- return {
- Name: blacklist.name,
- URL: blacklist.url,
- Enabled: blacklist.enabled,
- LastUpdateTime: new Date().toISOString()
- };
- }
- return {
- Name: blacklist.name,
- URL: blacklist.url,
- Enabled: blacklist.enabled,
- LastUpdateTime: blacklist.lastUpdateTime || blacklist.LastUpdateTime
- };
- });
-
- // 发送更新请求
- const updateResponse = await fetch('/api/shield/blacklists', {
- method: 'PUT',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(updatedBlacklists)
- });
-
- // 解析服务器响应
- let responseData;
- try {
- responseData = await updateResponse.json();
- } catch (jsonError) {
- responseData = {};
- }
-
- // 根据服务器响应判断是否成功
- if (updateResponse.ok && (responseData.status === 'success' || !responseData.status)) {
- // 显示成功状态
- updateStatus(url, 'success');
-
- // 显示通知
- showNotification('黑名单更新成功', 'success');
-
- // 延迟重新加载黑名单和统计信息,让用户能看到成功状态
- setTimeout(() => {
- // 重新加载黑名单
- loadRemoteBlacklists();
- // 重新加载统计信息
- loadShieldStats();
- }, 3000);
- } else {
- // 显示失败状态
- updateStatus(url, 'error', responseData.error || responseData.message || `更新失败: ${updateResponse.status}`);
- showNotification(`黑名单更新失败: ${responseData.error || responseData.message || updateResponse.status}`, 'error');
-
- // 延迟重新加载黑名单和统计信息
- setTimeout(() => {
- // 重新加载黑名单
- loadRemoteBlacklists();
- // 重新加载统计信息
- loadShieldStats();
- }, 3000);
- }
- } catch (error) {
- console.error('更新黑名单失败:', error);
- // 显示错误状态
- updateStatus(url, 'error', error.message);
- showNotification('更新黑名单失败: ' + error.message, 'error');
- }
-}
-
-// 处理删除黑名单
-async function handleDeleteBlacklist(e) {
- // 确保获取到正确的按钮元素
- const btn = e.target.closest('.delete-blacklist-btn');
- if (!btn) {
- console.error('未找到删除按钮元素');
- return;
- }
-
- const url = btn.dataset.url;
-
- if (!url) {
- showNotification('无效的黑名单URL', 'error');
- return;
- }
-
- // 确认删除
- if (!confirm('确定要删除这个黑名单吗?删除后将无法恢复。')) {
- return;
- }
-
- try {
- // 获取当前行元素
- const tr = btn.closest('tr');
- if (!tr) {
- console.error('未找到行元素');
- return;
- }
-
- // 显示加载状态
- updateStatus(url, 'loading');
-
- // 获取当前所有黑名单
- const response = await fetch('/api/shield/blacklists');
- if (!response.ok) {
- throw new Error(`获取黑名单失败: ${response.status}`);
- }
-
- const blacklists = await response.json();
-
- // 过滤掉要删除的黑名单
- const updatedBlacklists = blacklists.filter(blacklist => blacklist.url !== url);
-
- // 发送更新请求
- const updateResponse = await fetch('/api/shield/blacklists', {
- method: 'PUT',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(updatedBlacklists)
- });
-
- // 解析服务器响应
- let responseData;
- try {
- responseData = await updateResponse.json();
- } catch (jsonError) {
- responseData = {};
- }
-
- // 根据服务器响应判断是否成功
- if (updateResponse.ok && responseData.status === 'success') {
- // 显示成功状态
- updateStatus(url, 'success', '已删除');
-
- // 显示通知
- showNotification('黑名单删除成功', 'success');
-
- // 延迟后渐变移除该行
- setTimeout(() => {
- // 添加渐变移除类
- tr.style.transition = 'all 0.3s ease-in-out';
- tr.style.opacity = '0';
- tr.style.transform = 'translateX(-10px)';
- tr.style.height = tr.offsetHeight + 'px';
- tr.style.overflow = 'hidden';
-
- // 等待过渡效果完成后,隐藏该行
- setTimeout(() => {
- tr.style.display = 'none';
-
- // 延迟重新加载黑名单和统计信息,确保视觉效果完成
- setTimeout(() => {
- // 重新加载黑名单
- loadRemoteBlacklists();
- // 重新加载统计信息
- loadShieldStats();
- }, 100);
- }, 300);
- }, 3000);
- } else {
- // 显示失败状态
- const errorMessage = responseData.error || responseData.message || `删除失败: ${updateResponse.status}`;
- updateStatus(url, 'error', errorMessage);
- showNotification(errorMessage, 'error');
-
- // 延迟重新加载黑名单和统计信息
- setTimeout(() => {
- // 重新加载黑名单
- loadRemoteBlacklists();
- // 重新加载统计信息
- loadShieldStats();
- }, 3000);
- }
- } catch (error) {
- console.error('删除黑名单失败:', error);
- // 显示错误状态
- updateStatus(url, 'error', error.message);
- showNotification('删除黑名单失败: ' + error.message, 'error');
- }
-}
-
-// 处理启用/禁用黑名单
-async function handleToggleBlacklist(e) {
- // 确保获取到正确的按钮元素
- const btn = e.target.closest('.toggle-blacklist-btn');
- if (!btn) {
- console.error('未找到启用/禁用按钮元素');
- return;
- }
-
- const url = btn.dataset.url;
- const currentEnabled = btn.dataset.enabled === 'true';
-
- if (!url) {
- showNotification('无效的黑名单URL', 'error');
- return;
- }
-
- try {
- // 显示加载状态
- updateStatus(url, 'loading');
-
- // 获取当前所有黑名单
- const response = await fetch('/api/shield/blacklists');
- if (!response.ok) {
- throw new Error(`获取黑名单失败: ${response.status}`);
- }
-
- const blacklists = await response.json();
-
- // 找到目标黑名单并更新其状态
- const updatedBlacklists = blacklists.map(blacklist => {
- if (blacklist.url === url) {
- return {
- Name: blacklist.name,
- URL: blacklist.url,
- Enabled: !currentEnabled,
- LastUpdateTime: blacklist.lastUpdateTime || blacklist.LastUpdateTime
- };
- }
- return {
- Name: blacklist.name,
- URL: blacklist.url,
- Enabled: blacklist.enabled,
- LastUpdateTime: blacklist.lastUpdateTime || blacklist.LastUpdateTime
- };
- });
-
- // 发送更新请求
- const updateResponse = await fetch('/api/shield/blacklists', {
- method: 'PUT',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(updatedBlacklists)
- });
-
- // 解析服务器响应
- let responseData;
- try {
- responseData = await updateResponse.json();
- } catch (jsonError) {
- responseData = {};
- }
-
- // 根据服务器响应判断是否成功
- if (updateResponse.ok && responseData.status === 'success') {
- // 显示成功状态
- updateStatus(url, 'success', currentEnabled ? '已禁用' : '已启用');
-
- // 显示通知
- showNotification(`黑名单已${currentEnabled ? '禁用' : '启用'}`, 'success');
-
- // 延迟重新加载黑名单和统计信息,让用户能看到成功状态
- setTimeout(() => {
- // 重新加载黑名单
- loadRemoteBlacklists();
- // 重新加载统计信息
- loadShieldStats();
- }, 3000);
- } else {
- // 显示失败状态
- const errorMessage = responseData.error || responseData.message || `更新状态失败: ${updateResponse.status}`;
- updateStatus(url, 'error', errorMessage);
- showNotification(errorMessage, 'error');
-
- // 延迟重新加载黑名单和统计信息
- setTimeout(() => {
- // 重新加载黑名单
- loadRemoteBlacklists();
- // 重新加载统计信息
- loadShieldStats();
- }, 3000);
- }
- } catch (error) {
- console.error('启用/禁用黑名单失败:', error);
- // 显示错误状态
- updateStatus(url, 'error', error.message);
- showNotification('启用/禁用黑名单失败: ' + error.message, 'error');
- }
-}
-
-// 处理添加黑名单
-async function handleAddBlacklist(event) {
- // 如果存在event参数,则调用preventDefault()防止表单默认提交
- if (event && typeof event.preventDefault === 'function') {
- event.preventDefault();
- }
-
- const nameInput = document.getElementById('blacklist-name');
- const urlInput = document.getElementById('blacklist-url');
- const statusElement = document.getElementById('save-blacklist-status');
-
- const name = nameInput ? nameInput.value.trim() : '';
- const url = urlInput ? urlInput.value.trim() : '';
-
- // 简单验证
- if (!name || !url) {
- showNotification('名称和URL不能为空', 'error');
- return;
- }
-
- // 验证URL格式
- try {
- new URL(url);
- } catch (e) {
- showNotification('URL格式不正确', 'error');
- return;
- }
-
- try {
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- // 显示加载状态
- statusElement.innerHTML = ' 正在添加...';
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 添加过渡类和加载状态类
- statusElement.classList.add('status-transition', 'status-fade-in', 'status-loading');
-
- // 发送添加请求
- const response = await fetch('/api/shield/blacklists', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({ name, url })
- });
-
- // 解析服务器响应
- let responseData;
- try {
- responseData = await response.json();
- } catch (jsonError) {
- responseData = {};
- }
-
- // 根据服务器响应判断是否成功
- if (response.ok && (responseData.status === 'success' || !responseData.status)) {
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- // 显示成功状态
- statusElement.innerHTML = ' 成功';
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 添加过渡类和成功状态类
- statusElement.classList.add('status-transition', 'status-fade-in', 'status-success');
-
- showNotification('黑名单添加成功', 'success');
- // 清空输入框
- if (nameInput) nameInput.value = '';
- if (urlInput) urlInput.value = '';
- // 重新加载黑名单
- loadRemoteBlacklists();
- // 重新加载统计信息
- loadShieldStats();
- } else {
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- // 显示失败状态
- const errorMessage = responseData.error || responseData.message || `添加失败: ${response.status}`;
- statusElement.innerHTML = ` ${errorMessage}`;
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 添加过渡类和错误状态类
- statusElement.classList.add('status-transition', 'status-fade-in', 'status-error');
-
- showNotification(errorMessage, 'error');
- }
- } catch (error) {
- console.error('Error adding blacklist:', error);
-
- // 清除之前的所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
-
- // 显示错误状态
- const errorMessage = error.message || '添加黑名单失败';
- statusElement.innerHTML = ` ${errorMessage}`;
-
- // 强制重排,确保过渡效果生效
- void statusElement.offsetWidth;
-
- // 添加过渡类和错误状态类
- statusElement.classList.add('status-transition', 'status-fade-in', 'status-error');
-
- showNotification(errorMessage, 'error');
- } finally {
- // 3秒后渐变消失
- setTimeout(() => {
- // 添加淡出类
- statusElement.classList.add('status-fade-out');
-
- // 等待淡出动画完成后清除状态
- setTimeout(() => {
- // 清除所有类
- statusElement.classList.remove('status-transition', 'status-loading', 'status-success', 'status-error', 'status-fade-in', 'status-fade-out');
- // 清空状态显示
- statusElement.innerHTML = '';
- }, 300); // 与CSS动画持续时间一致
- }, 3000);
- }
-}
-
-
-
-// 当前显示的规则类型:'local' 或 'remote'
-let currentRulesType = 'local';
-
-// 设置事件监听器
-function setupShieldEventListeners() {
- // 自定义规则管理事件
- const saveRuleBtn = document.getElementById('save-rule-btn');
- if (saveRuleBtn) {
- saveRuleBtn.addEventListener('click', handleAddRule);
- }
-
- // 远程黑名单管理事件
- const saveBlacklistBtn = document.getElementById('save-blacklist-btn');
- if (saveBlacklistBtn) {
- saveBlacklistBtn.addEventListener('click', handleAddBlacklist);
- }
-
- // 添加切换查看自定义规则和远程规则的事件监听
- const viewLocalRulesBtn = document.getElementById('view-local-rules-btn');
- if (viewLocalRulesBtn) {
- viewLocalRulesBtn.addEventListener('click', loadLocalRules);
- }
-
- const viewRemoteRulesBtn = document.getElementById('view-remote-rules-btn');
- if (viewRemoteRulesBtn) {
- viewRemoteRulesBtn.addEventListener('click', loadRemoteRules);
- }
-}
-
-// 显示成功消息
-function showSuccessMessage(message) {
- showNotification(message, 'success');
-}
-
-// 显示错误消息
-function showErrorMessage(message) {
- showNotification(message, 'error');
-}
-
-
-
-// 显示通知
-function showNotification(message, type = 'info') {
- // 移除现有通知
- const existingNotification = document.querySelector('.notification');
- if (existingNotification) {
- existingNotification.remove();
- }
-
- // 创建新通知
- const notification = document.createElement('div');
- notification.className = `notification fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg z-50 transform transition-all duration-300 ease-in-out translate-y-0 opacity-0`;
-
- // 设置通知样式
- if (type === 'success') {
- notification.classList.add('bg-green-500', 'text-white');
- } else if (type === 'error') {
- notification.classList.add('bg-red-500', 'text-white');
- } else {
- notification.classList.add('bg-blue-500', 'text-white');
- }
-
- notification.innerHTML = `
-
-
- ${message}
-
- `;
-
- document.body.appendChild(notification);
-
- // 显示通知
- setTimeout(() => {
- notification.classList.remove('opacity-0');
- notification.classList.add('opacity-100');
- }, 10);
-
- // 3秒后隐藏通知
- setTimeout(() => {
- notification.classList.remove('opacity-100');
- notification.classList.add('opacity-0');
- setTimeout(() => {
- notification.remove();
- }, 300);
- }, 3000);
-}
-
-// 页面加载完成后初始化
-if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', initShieldPage);
-} else {
- initShieldPage();
-}
-
-// 当切换到屏蔽管理页面时重新加载数据
-document.addEventListener('DOMContentLoaded', () => {
- // 监听hash变化,当切换到屏蔽管理页面时重新加载数据
- window.addEventListener('hashchange', () => {
- if (window.location.hash === '#shield') {
- initShieldPage();
- }
- });
-});
\ No newline at end of file
diff --git a/staticbak/static/js/vendor/chart.umd.min.js b/staticbak/static/js/vendor/chart.umd.min.js
deleted file mode 100644
index eafab1b..0000000
--- a/staticbak/static/js/vendor/chart.umd.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,function(){"use strict";var s=Object.freeze({__proto__:null,get Colors(){return dn},get Decimation(){return fn},get Filler(){return Dn},get Legend(){return Tn},get SubTitle(){return In},get Title(){return En},get Tooltip(){return Un}});function t(){}const F=(()=>{let t=0;return()=>t++})();function P(t){return null==t}function O(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function A(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function p(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function g(t,e){return p(t)?t:e}function T(t,e){return void 0===t?e:t}const V=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,B=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function k(t,e,i,s){let a,n,o;if(O(t))if(n=t.length,s)for(a=n-1;0<=a;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function q(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s=s.endsWith("\\")?s.slice(0,-1)+".":(i.push(s),"");return i}function m(t,e){const i=X[e]||(X[e]=function(){const i=q(e);return t=>{for(const e of i){if(""===e)break;t=t&&t[e]}return t}}());return i(t)}function K(t){return t.charAt(0).toUpperCase()+t.slice(1)}const G=t=>void 0!==t,u=t=>"function"==typeof t,Z=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function J(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const S=Math.PI,_=2*S,Q=_+S,tt=Number.POSITIVE_INFINITY,et=S/180,D=S/2,it=S/4,st=2*S/3,r=Math.log10,y=Math.sign;function at(t,e,i){return Math.abs(t-e)t-e).pop(),e}function rt(t){return!isNaN(parseFloat(t))&&isFinite(t)}function lt(t,e){var i=Math.round(t);return i-e<=t&&t<=i+e}function ht(t,e,i){let s,a,n;for(s=0,a=t.length;s=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function bt(e,i,t){t=t||(t=>e[t]>1)?n=s:a=s;return{lo:n,hi:a}}const f=(i,s,a,t)=>bt(i,a,t?t=>{var e=i[t][s];return ei[t][s]bt(e,s,t=>e[t][i]>=s);function vt(t,e,i){let s=0,a=t.length;for(;ss&&t[a-1]>i;)a--;return 0{const i="_onData"+K(t),s=a[t];Object.defineProperty(a,t,{configurable:!0,enumerable:!1,value(...e){var t=s.apply(this,e);return a._chartjs.listeners.forEach(t=>{"function"==typeof t[i]&&t[i](...e)}),t}})}))}function Mt(e,t){var i=e._chartjs;if(i){const s=i.listeners,a=s.indexOf(t);-1!==a&&s.splice(a,1),0{delete e[t]}),delete e._chartjs)}}function wt(t){var e=new Set(t);return e.size===t.length?t:Array.from(e)}const kt="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function St(e,i){let s,a=!1;return function(...t){s=t,a||(a=!0,kt.call(window,()=>{a=!1,e.apply(i,s)}))}}function Pt(e,i){let s;return function(...t){return i?(clearTimeout(s),s=setTimeout(e,i,t)):e.apply(this,t),i}}const Dt=t=>"start"===t?"left":"end"===t?"right":"center",E=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,Ct=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function Ot(t,e,i){var s=e.length;let a=0,n=s;if(t._sorted){const{iScale:o,_parsed:r}=t,l=o.axis,{min:h,max:c,minDefined:d,maxDefined:u}=o.getUserBounds();d&&(a=C(Math.min(f(r,l,h).lo,i?s:f(e,l,o.getPixelForValue(h)).lo),0,s-1)),n=u?C(Math.max(f(r,o.axis,c,!0).hi+1,i?0:f(e,l,o.getPixelForValue(c),!0).hi+1),a,s)-a:s-a}return{start:a,count:n}}function At(t){var{xScale:e,yScale:i,_scaleRanges:s}=t,a={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=a,!0;t=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,a),t}var l=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(e,i,s,t){const a=i.listeners[t],n=i.duration;a.forEach(t=>t({chart:e,initial:i.initial,numSteps:n,currentStep:Math.min(s-i.start,n)}))}_refresh(){this._request||(this._running=!0,this._request=kt.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(o=Date.now()){let r=0;this._charts.forEach((s,a)=>{if(s.running&&s.items.length){const n=s.items;let t,e=n.length-1,i=!1;for(;0<=e;--e)(t=n[e])._active?(t._total>s.duration&&(s.duration=t._total),t.tick(o),i=!0):(n[e]=n[n.length-1],n.pop());i&&(a.draw(),this._notify(a,s,o,"progress")),n.length||(s.running=!1,this._notify(a,s,o,"complete"),s.initial=!1),r+=n.length}}),this._lastDate=o,0===r&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return 0Math.max(t,e._duration),0),this._refresh())}running(t){if(!this._running)return!1;t=this._charts.get(t);return!!(t&&t.running&&t.items.length)}stop(e){const i=this._charts.get(e);if(i&&i.items.length){const s=i.items;let t=s.length-1;for(;0<=t;--t)s[t].cancel();i.items=[],this._notify(e,i,Date.now(),"complete")}}remove(t){return this._charts.delete(t)}};function Tt(t){return t+.5|0}const Lt=(t,e,i)=>Math.max(Math.min(t,i),e);function Et(t){return Lt(Tt(2.55*t),0,255)}function Rt(t){return Lt(Tt(255*t),0,255)}function o(t){return Lt(Tt(t/2.55)/100,0,1)}function It(t){return Lt(Tt(100*t),0,100)}const n={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},zt=[..."0123456789ABCDEF"],Ft=t=>zt[15&t],Vt=t=>zt[(240&t)>>4]+zt[15&t],Bt=t=>(240&t)>>4==(15&t);const Wt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Nt(i,t,s){const a=t*Math.min(s,1-s),e=(t,e=(t+i/30)%12)=>s-a*Math.max(Math.min(e-3,9-e,1),-1);return[e(0),e(8),e(4)]}function Ht(i,s,a){i=(t,e=(t+i/60)%6)=>a-a*s*Math.max(Math.min(e,4-e,1),0);return[i(5),i(3),i(1)]}function jt(t,e,i){const s=Nt(t,1,.5);let a;for(1t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Qt=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function te(e,i,s){if(e){let t=Yt(e);t[i]=Math.max(0,Math.min(t[i]+t[i]*s,0===i?360:1)),t=Ut(t),e.r=t[0],e.g=t[1],e.b=t[2]}}function ee(t,e){return t&&Object.assign(e||{},t)}function ie(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?3<=t.length&&(e={r:t[0],g:t[1],b:t[2],a:255},3>16&255,n>>8&255,255&n]}return t}()).transparent=[0,0,0,0]),(i=Gt[i.toLowerCase()])&&{r:i[0],g:i[1],b:i[2],a:4===i.length?i[3]:255})||se(t)),this._rgb=a,this._valid=!!a}get valid(){return this._valid}get rgb(){var t=ee(this._rgb);return t&&(t.a=o(t.a)),t}set rgb(t){this._rgb=ie(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${o(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?(t=this._rgb,e=t,e=Bt(e.r)&&Bt(e.g)&&Bt(e.b)&&Bt(e.a)?Ft:Vt,t?"#"+e(t.r)+e(t.g)+e(t.b)+((t=t.a)<255?e(t):""):void 0):void 0;var t,e}hslString(){if(this._valid){var t,e,i,s=this._rgb;if(s)return i=Yt(s),t=i[0],e=It(i[1]),i=It(i[2]),s.a<255?`hsla(${t}, ${e}%, ${i}%, ${o(s.a)})`:`hsl(${t}, ${e}%, ${i}%)`}}mix(t,e){if(t){const s=this.rgb,a=t.rgb;var t=void 0===e?.5:e,e=2*t-1,i=s.a-a.a,e=(1+(e*i==-1?e:(e+i)/(1+e*i)))/2,i=1-e;s.r=255&e*s.r+i*a.r+.5,s.g=255&e*s.g+i*a.g+.5,s.b=255&e*s.b+i*a.b+.5,s.a=t*s.a+(1-t)*a.a,this.rgb=s}return this}interpolate(t,e){return t&&(this._rgb=(i=this._rgb,t=t._rgb,e=e,s=Qt(o(i.r)),a=Qt(o(i.g)),n=Qt(o(i.b)),{r:Rt(Jt(s+e*(Qt(o(t.r))-s))),g:Rt(Jt(a+e*(Qt(o(t.g))-a))),b:Rt(Jt(n+e*(Qt(o(t.b))-n))),a:i.a+e*(t.a-i.a)})),this;var i,s,a,n}clone(){return new ae(this.rgb)}alpha(t){return this._rgb.a=Rt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=Tt(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return te(this._rgb,2,t),this}darken(t){return te(this._rgb,2,-t),this}saturate(t){return te(this._rgb,1,t),this}desaturate(t){return te(this._rgb,1,-t),this}rotate(t){return e=this._rgb,t=t,(i=Yt(e))[0]=Xt(i[0]+t),i=Ut(i),e.r=i[0],e.g=i[1],e.b=i[2],this;var e,i}}function ne(t){return!(!t||"object"!=typeof t)&&("[object CanvasPattern]"===(t=t.toString())||"[object CanvasGradient]"===t)}function oe(t){return ne(t)?t:new ae(t)}function re(t){return ne(t)?t:new ae(t).saturate(.5).darken(.1).hexString()}const le=["x","y","borderWidth","radius","tension"],he=["color","borderColor","backgroundColor"],ce=new Map;function de(t,e,a){return function(t,e){e=a||{};var i=t+JSON.stringify(e);let s=ce.get(i);return s||(s=new Intl.NumberFormat(t,e),ce.set(i,s)),s}(e).format(t)}const ue={values:t=>O(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";var s=this.chart.options.locale;let a,n=t;if(1.8*i.length?ue.numeric.call(this,t,e,i):""}};var ge={formatters:ue};const fe=Object.create(null),pe=Object.create(null);function me(i,t){if(!t)return i;var s=t.split(".");for(let t=0,e=s.length;tt.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>re(e.backgroundColor),this.hoverBorderColor=(t,e)=>re(e.borderColor),this.hoverColor=(t,e)=>re(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return be(this,t,e)}get(t){return me(this,t)}describe(t,e){return be(pe,t,e)}override(t,e){return be(fe,t,e)}route(t,e,i,s){const a=me(this,t),n=me(this,i),o="_"+e;Object.defineProperties(a,{[o]:{value:a[e],writable:!0},[e]:{enumerable:!0,get(){var t=this[o],e=n[s];return A(t)?Object.assign({},e,t):T(t,e)},set(t){this[o]=t}}})}apply(t){t.forEach(t=>t(this))}}({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:he},numbers:{type:"number",properties:le}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ge.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function xe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ve(t){let e=t.parentNode;return e=e&&"[object ShadowRoot]"===e.toString()?e.host:e}function _e(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const ye=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function Me(t,e){return ye(t).getPropertyValue(e)}const we=["top","right","bottom","left"];function ke(e,i,s){const a={};s=s?"-"+s:"";for(let t=0;t<4;t++){var n=we[t];a[n]=parseFloat(e[i+"-"+n+s])||0}return a.width=a.left+a.right,a.height=a.top+a.bottom,a}function Se(t,e){if("native"in t)return t;var{canvas:i,currentDevicePixelRatio:s}=e,a=ye(i),n="border-box"===a.boxSizing,o=ke(a,"padding"),a=ke(a,"border","width"),{x:t,y:r,box:l}=function(t,e){var i,s=t.touches,s=s&&s.length?s[0]:t,{offsetX:a,offsetY:n}=s;let o,r,l=!1;if(i=n,t=t.target,!(0Math.round(10*t)/10;function De(t,e,i,s){var a=ye(t),n=ke(a,"margin"),o=_e(a.maxWidth,t,"clientWidth")||tt,r=_e(a.maxHeight,t,"clientHeight")||tt,t=function(t,e,i){let s,a;if(void 0===e||void 0===i){const n=ve(t);if(n){const t=n.getBoundingClientRect(),o=ye(n),r=ke(o,"border","width"),l=ke(o,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=_e(o.maxWidth,n,"clientWidth"),a=_e(o.maxHeight,n,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||tt,maxHeight:a||tt}}(t,e,i);let{width:l,height:h}=t;if("content-box"===a.boxSizing){const t=ke(a,"border","width"),e=ke(a,"padding");l-=e.width+t.width,h-=e.height+t.height}return l=Math.max(0,l-n.width),h=Math.max(0,s?l/s:h-n.height),l=Pe(Math.min(l,o,t.maxWidth)),h=Pe(Math.min(h,r,t.maxHeight)),l&&!h&&(h=Pe(l/2)),(void 0!==e||void 0!==i)&&s&&t.height&&h>t.height&&(h=t.height,l=Pe(Math.floor(h*s))),{width:l,height:h}}function Ce(t,e,i){var e=e||1,s=Math.floor(t.height*e),a=Math.floor(t.width*e);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const n=t.canvas;return n.style&&(i||!n.style.height&&!n.style.width)&&(n.style.height=t.height+"px",n.style.width=t.width+"px"),(t.currentDevicePixelRatio!==e||n.height!==s||n.width!==a)&&(t.currentDevicePixelRatio=e,n.height=s,n.width=a,t.ctx.setTransform(e,0,0,e,0,0),!0)}var Oe=function(){let t=!1;try{var e={get passive(){return!(t=!0)}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function Ae(t,e){const i=Me(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function Te(t){return!t||P(t.size)||P(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Le(t,e,i,s,a){let n=e[a];return n||(n=e[a]=t.measureText(a).width,i.push(a)),s=n>s?n:s}function Ee(t,e,i,s){let a=(s=s||{}).data=s.data||{},n=s.garbageCollect=s.garbageCollect||[],o=(s.font!==e&&(a=s.data={},n=s.garbageCollect=[],s.font=e),t.save(),t.font=e,0);var r=i.length;let l,h,c,d,u;for(l=0;li.length){for(l=0;le.left-i&&t.xe.top-i&&t.yr[0]){const i=t||r;void 0===e&&(e=ti("_fallback",r));t={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:r,_rootScopes:i,_fallback:e,_getTarget:a,override:t=>Ye([t,...r],l,i,e)};return new Proxy(t,{deleteProperty:(t,e)=>(delete t[e],delete t._keys,delete r[0][e],!0),get:(n,o)=>Ke(n,o,()=>{var t,e=o,i=r,s=n;for(const a of l)if(t=ti(Xe(a,e),i),void 0!==t)return qe(e,t)?Je(i,s,e,t):t}),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(r[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=a());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(s,e,i,a){var t={_cacheable:!1,_proxy:s,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ue(s,a),setContext:t=>$e(s,t,i,a),override:t=>$e(s.override(t),e,i,a)};return new Proxy(t,{deleteProperty:(t,e)=>(delete t[e],delete s[e],!0),get:(r,h,c)=>Ke(r,h,()=>{{var l=r,e=h,i=c;const{_proxy:s,_context:a,_subProxy:n,_descriptors:o}=l;let t=s[e];return O(t=u(t)&&o.isScriptable(e)?function(t,e,i){const{_proxy:s,_context:a,_subProxy:n,_stack:o}=l;if(o.has(t))throw new Error("Recursion detected: "+Array.from(o).join("->")+"->"+t);o.add(t);let r=e(a,n||i);return o.delete(t),r=qe(t,r)?Je(s._scopes,s,t,r):r}(e,t,i):t)&&t.length&&(t=function(t,e,i,s){const{_proxy:a,_context:n,_subProxy:o,_descriptors:r}=i;if(void 0!==n.index&&s(t))return e[n.index%e.length];if(A(e[0])){const i=e,s=a._scopes.filter(t=>t!==i);e=[];for(const A of i){const i=Je(s,a,t,A);e.push($e(i,n,o&&o[t],r))}}return e}(e,t,l,o.isIndexable)),t=qe(e,t)?$e(t,a,n&&n[e],o):t}}),getOwnPropertyDescriptor:(t,e)=>t._descriptors.allKeys?Reflect.has(s,e)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(s,e),getPrototypeOf:()=>Reflect.getPrototypeOf(s),has:(t,e)=>Reflect.has(s,e),ownKeys:()=>Reflect.ownKeys(s),set:(t,e,i)=>(s[e]=i,delete t[e],!0)})}function Ue(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:a=e.allKeys}=t;return{allKeys:a,scriptable:i,indexable:s,isScriptable:u(i)?i:()=>i,isIndexable:u(s)?s:()=>s}}const Xe=(t,e)=>t?t+K(e):e,qe=(t,e)=>A(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function Ke(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];i=i();return t[e]=i}function Ge(t,e,i){return u(t)?t(e,i):t}function Ze(t,e,i,s,a){for(const r of e){n=i,o=r;const e=!0===n?o:"string"==typeof n?m(o,n):void 0;if(e){t.add(e);o=Ge(e._fallback,i,a);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}var n,o;return!1}function Je(t,s,a,n){const e=s._rootScopes,i=Ge(s._fallback,a,n),o=[...t,...e],r=new Set;r.add(n);t=Qe(r,o,a,i||a,n);return null!==t&&(void 0===i||i===a||null!==Qe(r,o,i,t,n))&&Ye(Array.from(r),[""],e,i,()=>{{var t=a,e=n;const i=s._getTarget();return t in i||(i[t]={}),O(t=i[t])&&A(e)?e:t||{}}})}function Qe(t,e,i,s,a){for(;i;)i=Ze(t,e,i,s,a);return i}function ti(t,e){for(const i of e)if(i){const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e=e||(t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter(t=>!t.startsWith("_")))e.add(t);return Array.from(e)}(t._scopes))}function ii(t,e,i,s){const a=t["iScale"],{key:n="r"}=this._parsing,o=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function oi(t,e,i,s){var t=t.skip?e:t,a=e,e=i.skip?e:i,i=gt(a,t),n=gt(e,a);let o=i/(i+n),r=n/(i+n);o=isNaN(o)?0:o,r=isNaN(r)?0:r;i=s*o,n=s*r;return{previous:{x:a.x-i*(e.x-t.x),y:a.y-i*(e.y-t.y)},next:{x:a.x+n*(e.x-t.x),y:a.y+n*(e.y-t.y)}}}function ri(t,n="x"){const e=ni(n),i=t.length,r=Array(i).fill(0),l=Array(i);let s,a,o,h=ai(t,0);for(s=0;s!t.skip)),"monotone"===e.cubicInterpolationMode)ri(o,t);else{let t=i?o[o.length-1]:o[0];for(s=0,a=o.length;s0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*--t)*Math.sin((t-e)*_/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*_/i)+1,gi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>--t*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-(--t*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>--t*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*D),easeOutSine:t=>Math.sin(t*D),easeInOutSine:t=>-.5*(Math.cos(S*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>1<=t?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1- --t*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){return ci(t)?t:t<.5?.5*di(2*t,.1125,.45):.5+.5*ui(2*t-1,.1125,.45)},easeInBack(t){return t*t*(2.70158*t-1.70158)},easeOutBack(t){return--t*t*(2.70158*t+1.70158)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-gi.easeOutBounce(1-t),easeOutBounce(t){var e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*gi.easeInBounce(2*t):.5*gi.easeOutBounce(2*t-1)+.5};function fi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:("middle"===s?i<.5?t:e:"after"===s?i<1?t:e:0+t||0;function yi(e,i){const t={},s=A(i),a=s?Object.keys(i):i,n=A(e)?s?t=>T(e[t],e[i[t]]):t=>e[t]:()=>e;for(const e of a)t[e]=_i(n(e));return t}function Mi(t){return yi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return yi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function I(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function z(t,e){e=e||R.font;let i=T((t=t||{}).size,e.size),s=("string"==typeof i&&(i=parseInt(i,10)),T(t.style,e.style));s&&!(""+s).match(xi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const a={family:T(t.family,e.family),lineHeight:vi(T(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:T(t.weight,e.weight),string:""};return a.string=Te(a),a}function ki(t,e,i,s){let a,n,o,r=!0;for(a=0,n=t.length;ai&&0===t?0:t+e;return{min:a(t,-Math.abs(e)),max:a(s,e)}}function Pi(t,e){return Object.assign(Object.create(t),e)}function Di(t,e,i){return t?(s=e,a=i,{x:t=>s+s+a-t,setWidth(t){a=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t};var s,a}function Ci(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(s=[(i=t.canvas.style).getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Oi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Ai(t){return"angle"===t?{between:pt,compare:ft,normalize:v}:{between:c,compare:(t,e)=>t-e,normalize:t=>t}}function Ti({start:t,end:e,count:i,loop:s,style:a}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:a}}function Li(t,i,g){if(!g)return[t];const{property:s,start:a,end:n}=g,o=i.length,{compare:r,between:l,normalize:h}=Ai(s),{start:c,end:d,loop:u,style:f}=function(t,e){const{property:i,start:s,end:a}=g,{between:n,normalize:o}=Ai(i),r=e.length;let l,h,{start:c,end:d,loop:u}=t;if(u){for(c+=r,d+=r,l=0,h=r;ls&&t[a%e].skip;)a--;return a%=e,{start:s,end:a}}(i,s,a);return Ii(t,!0===n?[{start:o,end:r,loop:a}]:function(t,e,i,s){const a=t.length,n=[];let o,r=e,l=t[e];for(o=e+1;o<=i;++o){const i=t[o%a];i.skip||i.stop?l.skip||(s=!1,n.push({start:e%a,end:(o-1)%a,loop:s}),e=r=i.stop?o:null):(r=o,l.skip&&(e=o)),l=i}return null!==r&&n.push({start:e%a,end:r%a,loop:s}),n}(i,o,r{t[r](s[a],n)&&(o.push({element:t,datasetIndex:e,index:i}),l=l||t.inRange(s.x,s.y,n))}),e&&!l?[]:o}var Hi={evaluateInteractionItems:Vi,modes:{index(t,e,i,s){const a=Se(e,t),n=i.axis||"x",o=i.includeInvisible||!1,r=i.intersect?Bi(t,a,n,s,o):Wi(t,a,n,!1,s,o),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach(t=>{var e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})}),l):[]},dataset(t,e,i,s){var e=Se(e,t),a=i.axis||"xy",n=i.includeInvisible||!1;let o=i.intersect?Bi(t,e,a,s,n):Wi(t,e,a,!1,s,n);if(0Bi(t,Se(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){var e=Se(e,t),a=i.axis||"xy",n=i.includeInvisible||!1;return Wi(t,e,a,i.intersect,s,n)},x:(t,e,i,s)=>Ni(t,Se(e,t),"x",i.intersect,s),y:(t,e,i,s)=>Ni(t,Se(e,t),"y",i.intersect,s)}};const ji=["left","top","right","bottom"];function Yi(t,e){return t.filter(t=>t.pos===e)}function $i(t,e){return t.filter(t=>-1===ji.indexOf(t.pos)&&t.box.axis===e)}function Ui(t,s){return t.sort((t,e)=>{var i=s?e:t,t=s?t:e;return i.weight===t.weight?i.index-t.index:i.weight-t.weight})}function Xi(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function qi(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Ki(t,e,i,s){const a=[];let n,o,r,l,h,c;for(n=0,o=t.length,h=0;n{s[t]=Math.max(e[t],i[t])}),s}}(r.horizontal,e));const{same:o,other:d}=function(t,e,i,s){const{pos:a,box:n}=i,o=t.maxPadding;if(!A(a)){i.size&&(t[a]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?n.height:n.width),i.size=e.size/e.count,t[a]+=i.size}n.getPadding&&qi(o,n.getPadding());var s=Math.max(0,e.outerWidth-Xi(o,t,"left","right")),e=Math.max(0,e.outerHeight-Xi(o,t,"top","bottom")),r=s!==t.w,l=e!==t.h;return t.w=s,t.h=e,i.horizontal?{same:r,other:l}:{same:l,other:r}}(e,i,r,s);h|=o&&a.length,c=c||d,l.fullSize||a.push(r)}return h&&Ki(a,e,i,s)||c}function Gi(t,e,i,s,a){t.top=i,t.left=e,t.right=e+s,t.bottom=i+a,t.width=s,t.height=a}function Zi(t,e,i,s){var a=i.padding;let{x:n,y:o}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight/l.weight||1;if(r.horizontal){const s=e.w*h,n=l.size||t.height;G(l.start)&&(o=l.start),t.fullSize?Gi(t,a.left,o,i.outerWidth-a.right-a.left,n):Gi(t,e.left+l.placed,o,s,n),l.start=o,l.placed+=s,o=t.bottom}else{const s=e.h*h,o=l.size||t.width;G(l.start)&&(n=l.start),t.fullSize?Gi(t,n,a.top,o,i.outerHeight-a.bottom-a.top):Gi(t,n,e.top+l.placed,o,s),l.start=n,l.placed+=s,n=t.right}}e.x=n,e.y=o}var a={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){e=t.boxes?t.boxes.indexOf(e):-1;-1!==e&&t.boxes.splice(e,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(l,t,e,i){if(l){const o=I(l.options.layout.padding),r=Math.max(t-o.width,0),h=Math.max(e-o.height,0),c=function(){const t=function(t){const e=[];let i,s,a,n,o,r;for(i=0,s=(t||[]).length;it.box.fullSize),!0),i=Ui(Yi(t,"left"),!0),s=Ui(Yi(t,"right")),a=Ui(Yi(t,"top"),!0),n=Ui(Yi(t,"bottom")),o=$i(t,"x"),r=$i(t,"y");return{fullSize:e,leftAndTop:i.concat(a),rightAndBottom:s.concat(r).concat(n).concat(o),chartArea:Yi(t,"chartArea"),vertical:i.concat(s).concat(r),horizontal:a.concat(n).concat(o)}}(),d=c.vertical,u=c.horizontal;k(l.boxes,t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()});var s=d.reduce((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1,0)||1,t=Object.freeze({outerWidth:t,outerHeight:e,padding:o,availableWidth:r,availableHeight:h,vBoxMaxWidth:r/2/s,hBoxMaxHeight:h/2}),e=Object.assign({},o);qi(e,I(i));const g=Object.assign({maxPadding:e,w:r,h:h,x:o.left,y:o.top},o),f=function(t,e){var i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:a}=i;if(t&&ji.includes(s)){const n=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});n.count++,n.weight+=a}}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:a}=e;let n,o,r;for(n=0,o=t.length;n{const e=t.box;Object.assign(e,l.chartArea),e.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})})}}};class Ji{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class Qi extends Ji{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ts="$chartjs",es={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},is=t=>null===t||""===t,ss=!!Oe&&{passive:!0};function as(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function ns(t,e,i){const s=t.canvas,a=new MutationObserver(t=>{let e=!1;for(const i of t)e=e||as(i.addedNodes,s),e=e&&!as(i.removedNodes,s);e&&i()});return a.observe(document,{childList:!0,subtree:!0}),a}function os(t,e,i){const s=t.canvas,a=new MutationObserver(t=>{let e=!1;for(const i of t)e=e||as(i.removedNodes,s),e=e&&!as(i.addedNodes,s);e&&i()});return a.observe(document,{childList:!0,subtree:!0}),a}const rs=new Map;let ls=0;function hs(){const i=window.devicePixelRatio;i!==ls&&(ls=i,rs.forEach((t,e)=>{e.currentDevicePixelRatio!==i&&t()}))}function cs(t,e,s){const i=t.canvas,a=i&&ve(i);if(a){const o=St((t,e)=>{var i=a.clientWidth;s(t,e),i{var t=t[0],e=t.contentRect.width,t=t.contentRect.height;0===e&&0===t||o(e,t)});return r.observe(a),t=t,n=o,rs.size||window.addEventListener("resize",hs),rs.set(t,n),r;var n}}function ds(t,e,i){i&&i.disconnect(),"resize"===e&&(i=t,rs.delete(i),rs.size||window.removeEventListener("resize",hs))}function us(e,t,i){var s=e.canvas,a=St(t=>{null!==e.ctx&&i(function(t,e){var i=es[t.type]||t.type,{x:s,y:a}=Se(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==a?a:null}}(t,e))},e);return s.addEventListener(t,a,ss),a}class gs extends Ji{acquireContext(t,e){var i=t&&t.getContext&&t.getContext("2d");{if(i&&i.canvas===t){{var s=e;const a=t.style,n=t.getAttribute("height"),o=t.getAttribute("width");if(t[ts]={initial:{height:n,width:o,style:{display:a.display,height:a.height,width:a.width}}},a.display=a.display||"block",a.boxSizing=a.boxSizing||"border-box",is(o)){const s=Ae(t,"width");void 0!==s&&(t.width=s)}if(is(n))if(""===t.style.height)t.height=t.width/(s||2);else{const s=Ae(t,"height");void 0!==s&&(t.height=s)}}return i}return null}}releaseContext(t){const i=t.canvas;if(!i[ts])return!1;const s=i[ts].initial,e=(["height","width"].forEach(t=>{var e=s[t];P(e)?i.removeAttribute(t):i.setAttribute(t,e)}),s.style||{});return Object.keys(e).forEach(t=>{i.style[t]=e[t]}),i.width=i.width,delete i[ts],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),a={attach:ns,detach:os,resize:cs}[e]||us;s[e]=a(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];s&&(({attach:ds,detach:ds,resize:ds}[e]||function(t,e,i){t.canvas.removeEventListener(e,i,ss)})(t,e,s),i[e]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return De(t,e,i,s)}isAttached(t){t=ve(t);return!(!t||!t.isConnected)}}function fs(t){return!xe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Qi:gs}Oe=Object.freeze({__proto__:null,BasePlatform:Ji,BasicPlatform:Qi,DomPlatform:gs,_detectPlatform:fs});const ps="transparent",ms={boolean:(t,e,i)=>.5t+(e-t)*i};class bs{constructor(t,e,i,s){var a=e[i],a=(s=ki([t.to,s,a,t.from]),ki([t.from,a,s]));this._active=!0,this._fn=t.fn||ms[t.type||typeof a],this._easing=gi[t.easing]||gi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=a,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){var s,a,n;this._active&&(this._notify(!1),s=this._target[this._prop],a=i-this._start,n=this._duration-a,this._start=i,this._duration=Math.floor(Math.max(n,t.duration)),this._total+=a,this._loop=!!t.loop,this._to=ki([t.to,e,s,t.from]),this._from=ki([t.from,s,e]))}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){var t=t-this._start,e=this._duration,i=this._prop,s=this._from,a=this._loop,n=this._to;let o;if(this._active=s!==n&&(a||t{i.push({res:t,rej:e})})}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const t=s[e];if(A(t)){const i={};for(const s of a)i[s]=t[s];(O(t.properties)&&t.properties||[e]).forEach(t=>{t!==e&&n.has(t)||n.set(t,i)})}})}}_animateOptions(t,e){const i=e.options,s=function(e,i){if(i){let t=e.options;if(t)return t.$shared&&(e.options=t=Object.assign({},t,{$shared:!1,$animations:{}})),t;e.options=i}}(t,i);if(!s)return[];e=this._createAnimations(s,i);return i.$shared&&function(e,t){const i=[],s=Object.keys(t);for(let t=0;t{t.options=i},()=>{}),e}_createAnimations(e,i){const s=this._properties,a=[],n=e.$animations||(e.$animations={}),t=Object.keys(i),o=Date.now();let r;for(r=t.length-1;0<=r;--r){const c=t[r];if("$"!==c.charAt(0))if("options"===c)a.push(...this._animateOptions(e,i));else{var l=i[c];let t=n[c];var h=s.get(c);if(t){if(h&&t.active()){t.update(h,l,o);continue}t.cancel()}h&&h.duration?(n[c]=t=new bs(h,e,c,l),a.push(t)):e[c]=l}}return a}update(t,e){{if(0!==this._properties.size)return(t=this._createAnimations(t,e)).length?(l.add(this._chart,t),!0):void 0;Object.assign(t,e)}}}function vs(t,e){var t=t&&t.options||{},i=t.reverse,s=void 0===t.min?e:0,t=void 0===t.max?e:0;return{start:i?t:s,end:i?s:t}}function _s(t,e){const i=[],s=t._getSortedDatasetMetas(e);let a,n;for(a=0,n=s.length;ai[t].axis===e).shift()}function Ps(t,e){var i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Ds=t=>"reset"===t||"none"===t,Cs=(t,e)=>e?t:Object.assign({},t);class Os{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Ms(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ps(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,a=e.xAxisID=T(i.xAxisID,Ss(t,"x")),n=e.yAxisID=T(i.yAxisID,Ss(t,"y")),o=e.rAxisID=T(i.rAxisID,Ss(t,"r")),r=e.indexAxis,l=e.iAxisID=s(r,a,n,o),h=e.vAxisID=s(r,n,a,o);e.xScale=this.getScaleForId(a),e.yScale=this.getScaleForId(n),e.rScale=this.getScaleForId(o),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){var e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){var t=this._cachedMeta;this._data&&Mt(this._data,this),t._stacked&&Ps(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(A(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,a,n;for(s=0,a=e.length;snull===l[o]||d&&l[o]t||cthis.getContext(i,s,e),c);return g.$shared&&(g.$shared=r,a[n]=Object.freeze(Cs(g,r))),g}_resolveAnimations(t,e,i){const s=this.chart,a=this._cachedDataOpts,n="animation-"+e,o=a[n];if(o)return o;let r;if(!1!==s.options.animation){const s=this.chart.config,a=s.datasetAnimationScopeKeys(this._type,e),n=s.getOptionScopes(this.getDataset(),a);r=s.createResolver(n,this.getContext(t,i,e))}t=new xs(s,r&&r.animations);return r&&r._cacheable&&(a[n]=Object.freeze(t)),t}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ds(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){var t=this.resolveDataElementOptions(t,e),i=this._sharedOptions,s=this.getSharedOptions(t),i=this.includeOptions(e,s)||s!==i;return this.updateSharedOptions(s,e,t),{sharedOptions:s,includeOptions:i}}updateElement(t,e,i,s){Ds(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Ds(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;var a=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(a)||a})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){var t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){var t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];var s=i.length,a=e.length,n=Math.min(a,s);n&&this.parse(0,n),s{for(t.length+=e,o=t.length-1;o>=n;o--)t[o]=t[o-e]};for(r(a),o=t;o{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]}),s}}function As(t,e,i,s,a){var n=T(s,0),o=Math.min(T(a,t.length),t.length);let r,l,h,c=0;for(i=Math.ceil(i),a&&(i=(r=a-s)/Math.floor(r/i)),h=n;h<0;)c++,h=Math.round(n+c*i);for(l=Math.max(n,0);l"top"===e||"left"===e?t[e]+i:t[e]-i,Ls=(t,e)=>Math.min(e||t,t);function Es(t,e){const i=[],s=t.length/e,a=t.length;let n=0;for(;nn?n:a,n=o&&a>n?a:n,{min:g(a,g(n,a)),max:g(n,g(a,n))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){var{beginAtZero:s,grace:a,ticks:n}=this.options,o=n.sampleSize,t=(this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Si(this,a,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks(),os)return i}return Math.max(s,1)}(n,s,a);if(0{const e=t.gc,i=e.length/2;let s;if(y({width:n[t]||0,height:o[t]||0});return{first:w(0),last:w(e-1),widest:w(i),highest:w(M),widths:n,heights:o}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);t=this._startPixel+t*this._length;return mt(this._alignToPixels?Re(this.chart,t,0):t)}getDecimalForPixel(t){t=(t-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){var{min:t,max:e}=this;return t<0&&e<0?e:0o+1e-6)))return l}(this,b,l))&&(v=Re(s,x,A),h?_=M=k=P=v:y=w=S=D=v,u.push({tx1:_,ty1:y,tx2:M,ty2:w,x1:k,y1:S,x2:P,y2:D,width:A,color:o,borderDash:T,borderDashOffset:c,tickWidth:d,tickColor:g,tickBorderDash:f,tickBorderDashOffset:p}))}return this._ticksLength=c,this._borderValue=m,u}_computeLabelItems(s){const a=this.axis,n=this.options,{position:o,ticks:e}=n,r=this.isHorizontal(),l=this.ticks,{align:h,crossAlign:c,padding:t,mirror:d}=e,i=Rs(n.grid),u=i+t,g=d?-t:u,f=-L(this.labelRotation),p=[];let m,b,x,v,_,y,M,w,k,S,P,D="middle";if("top"===o)_=this.bottom-g,y=this._getXAxisLabelAlignment();else if("bottom"===o)_=this.top+g,y=this._getXAxisLabelAlignment();else if("left"===o){const s=this._getYAxisLabelAlignment(i);y=s.textAlign,v=s.x}else if("right"===o){const s=this._getYAxisLabelAlignment(i);y=s.textAlign,v=s.x}else if("x"===a){if("center"===o)_=(s.top+s.bottom)/2+u;else if(A(o)){const s=Object.keys(o)[0],a=o[s];_=this.chart.scales[s].getPixelForValue(a)+u}y=this._getXAxisLabelAlignment()}else if("y"===a){if("center"===o)v=(s.left+s.right)/2-u;else if(A(o)){const s=Object.keys(o)[0],a=o[s];v=this.chart.scales[s].getPixelForValue(a)}y=this._getYAxisLabelAlignment(i).textAlign}"y"===a&&("start"===h?D="top":"end"===h&&(D="bottom"));var C=this._getLabelSizes();for(m=0,b=l.length;mt.value===e);return 0<=i?t.setContext(this.getContext(i)).lineWidth:0}drawGrid(t){const e=this.options.grid,s=this.ctx,i=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let a,n;var o=(t,e,i)=>{i.width&&i.color&&(s.save(),s.lineWidth=i.width,s.strokeStyle=i.color,s.setLineDash(i.borderDash||[]),s.lineDashOffset=i.borderDashOffset,s.beginPath(),s.moveTo(t.x,t.y),s.lineTo(e.x,e.y),s.stroke(),s.restore())};if(e.display)for(a=0,n=i.length;a{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:t,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let a,n;for(a=0,n=e.length;a{const e=t.split("."),i=e.pop(),s=[r].concat(e).join("."),a=l[t].split("."),n=a.pop(),o=a.join(".");R.route(s,i,o,n)})),e.descriptors&&R.describe(s,e.descriptors),this.override&&R.override(t.id,t.overrides)),h;throw new Error("class does not have id: "+t)}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in R[s]&&(delete R[s][i],this.override&&delete fe[i])}}var b=new class{constructor(){this.controllers=new Fs(Os,"datasets",!0),this.elements=new Fs(e,"elements"),this.plugins=new Fs(Object,"plugins"),this.scales=new Fs(zs,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(i,t,s){[...t].forEach(t=>{const e=s||this._getRegistryForType(t);s||e.isForType(t)||e===this.plugins&&t.id?this._exec(i,e,t):k(t,t=>{var e=s||this._getRegistryForType(t);this._exec(i,e,t)})})}_exec(t,e,i){var s=K(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(e){for(let t=0;tt.filter(e=>!i.some(t=>e.plugin.id===t.plugin.id));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function Bs(t,e){var i=R.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Ws(t){if("x"===t||"y"===t||"r"===t)return t}function Ns(t,...e){if(Ws(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||1{var e=r[t];if(!A(e))return console.error("Invalid scale configuration for scale: "+t);if(e._proxy)return console.warn("Ignoring resolver passed as options for scale: "+t);const i=Ns(t,e,function(e,t){if(t.data&&t.data.datasets){t=t.data.datasets.filter(t=>t.xAxisID===e||t.yAxisID===e);if(t.length)return Hs(e,"x",t[0])||Hs(e,"y",t[0])}return{}}(t,o),R.scales[e.type]),s=i===l?"_index_":"_value_",a=n.scales||{};h[t]=$(Object.create(null),[{axis:i},e,a[i],a[s]])}),o.data.datasets.forEach(s=>{const t=s.type||o.type,a=s.indexAxis||Bs(t,e),n=(fe[t]||{}).scales||{};Object.keys(n).forEach(t=>{var e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,a),i=s[e+"AxisID"]||e;h[i]=h[i]||Object.create(null),$(h[i],[{axis:e},r[i],n[t]])})}),Object.keys(h).forEach(t=>{t=h[t];$(t,[R.scales[t.type],R.scale])}),h}(t,e)}function Ys(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const $s=new Map,Us=new Set;function Xs(t,e){let i=$s.get(t);return i||(i=e(),$s.set(t,i),Us.add(i)),i}const qs=(t,e,i)=>{e=m(e,i);void 0!==e&&t.add(e)};class Ks{constructor(t){this._config=((t=(t=t)||{}).data=Ys(t.data),js(t),t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Ys(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){var t=this._config;this.clearCache(),js(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Xs(t,()=>[["datasets."+t,""]])}datasetAnimationScopeKeys(t,e){return Xs(t+".transition."+e,()=>[[`datasets.${t}.transitions.`+e,"transitions."+e],["datasets."+t,""]])}datasetElementScopeKeys(t,e){return Xs(t+"-"+e,()=>[[`datasets.${t}.elements.`+e,"datasets."+t,"elements."+e,""]])}pluginScopeKeys(t){const e=t.id;return Xs(this.type+"-plugin-"+e,()=>[["plugins."+e,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(e,t,i){const{options:s,type:a}=this,n=this._cachedScopes(e,i),o=n.get(t);if(o)return o;const r=new Set,l=(t.forEach(t=>{e&&(r.add(e),t.forEach(t=>qs(r,e,t))),t.forEach(t=>qs(r,s,t)),t.forEach(t=>qs(r,fe[a]||{},t)),t.forEach(t=>qs(r,R,t)),t.forEach(t=>qs(r,pe,t))}),Array.from(r));return 0===l.length&&l.push(Object.create(null)),Us.has(t)&&n.set(t,l),l}chartOptionScopes(){var{options:t,type:e}=this;return[t,fe[e]||{},R.datasets[e]||{},{type:e},R,pe]}resolveNamedOptions(t,e,i,s=[""]){const a={$shared:!0},{resolver:n,subPrefixes:o}=Gs(this._resolverCache,t,s);let r=n;!function(t,e){const{isScriptable:i,isIndexable:s}=Ue(t);for(const a of e){const e=i(a),n=s(a),o=(n||e)&&t[a];if(e&&(u(o)||Zs(o))||n&&O(o))return 1}}(n,e)||(a.$shared=!1,r=$e(n,i=u(i)?i():i,this.createResolver(t,i,o)));for(const t of e)a[t]=r[t];return a}createResolver(t,e,i=[""],s){t=Gs(this._resolverCache,t,i).resolver;return A(e)?$e(t,e,void 0,s):t}}function Gs(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));t=i.join();let a=s.get(t);return a||(a={resolver:Ye(e,i),subPrefixes:i.filter(t=>!t.toLowerCase().includes("hover"))},s.set(t,a)),a}const Zs=i=>A(i)&&Object.getOwnPropertyNames(i).reduce((t,e)=>t||u(i[e]),!1),Js=["top","bottom","left","right","chartArea"];function Qs(t,e){return"top"===t||"bottom"===t||-1===Js.indexOf(t)&&"x"===e}function ta(i,s){return function(t,e){return t[i]===e[i]?t[s]-e[s]:t[i]-e[i]}}function ea(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function ia(t){var e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function sa(t){return xe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t=t&&t.canvas?t.canvas:t}const aa={},na=t=>{const e=sa(t);return Object.values(aa).filter(t=>t.canvas===e).pop()};function oa(t,e,i){return(t.options.clip?t:e)[i]}class i{static defaults=R;static instances=aa;static overrides=fe;static registry=b;static version="4.4.0";static getChart=na;static register(...t){b.add(...t),ra()}static unregister(...t){b.remove(...t),ra()}constructor(t,e){const i=this.config=new Ks(e),s=sa(t),a=na(s);if(a)throw new Error("Canvas is already in use. Chart with ID '"+a.id+"' must be destroyed before the canvas with ID '"+a.canvas.id+"' can be reused.");var e=i.createResolver(i.chartOptionScopes(),this.getContext()),t=(this.platform=new(i.platform||fs(s)),this.platform.updateConfig(i),this.platform.acquireContext(s,e.aspectRatio)),n=t&&t.canvas,o=n&&n.height,r=n&&n.width;this.id=F(),this.ctx=t,this.canvas=n,this.width=r,this.height=o,this._options=e,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Vs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Pt(t=>this.update(t),e.resizeDelay||0),this._dataChanges=[],aa[this.id]=this,t&&n?(l.listen(this,"complete",ea),l.listen(this,"progress",ia),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){var{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:s,_aspectRatio:a}=this;return P(t)?e&&a?a:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return b}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Ce(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Ie(this.canvas,this.ctx),this}stop(){return l.stop(this),this}resize(t,e){l.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){var i=this.options,s=this.canvas,a=i.maintainAspectRatio&&this.aspectRatio,s=this.platform.getMaximumSize(s,t,e,a),t=i.devicePixelRatio||this.platform.getDevicePixelRatio(),e=this.width?"resize":"attach";this.width=s.width,this.height=s.height,this._aspectRatio=this.aspectRatio,Ce(this,t,!0)&&(this.notifyPlugins("resize",{size:s}),d(i.onResize,[this,s],this),this.attached&&this._doResize(e)&&this.render())}ensureScalesHaveIDs(){k(this.options.scales||{},(t,e)=>{t.id=e})}buildOrUpdateScales(){const o=this.options,s=o.scales,r=this.scales,l=Object.keys(r).reduce((t,e)=>(t[e]=!1,t),{});let t=[];k(t=s?t.concat(Object.keys(s).map(t=>{var e=s[t],t=Ns(t,e),i="r"===t,t="x"===t;return{options:e,dposition:i?"chartArea":t?"bottom":"left",dtype:i?"radialLinear":t?"category":"linear"}})):t,t=>{const e=t.options,i=e.id,s=Ns(i,e),a=T(e.type,t.dtype);void 0!==e.position&&Qs(e.position,s)===Qs(t.dposition)||(e.position=t.dposition),l[i]=!0;let n=null;i in r&&r[i].type===a?n=r[i]:(n=new(b.getScale(a))({id:i,type:a,ctx:this.ctx,chart:this}),r[n.id]=n),n.init(e,o)}),k(l,(t,e)=>{t||delete r[e]}),k(r,t=>{a.configure(this,t,t.options),a.addBox(this,t)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort((t,e)=>t.index-e.index),ei.length&&delete this._stacks,t.forEach((e,t)=>{0===i.filter(t=>t===e._dataset).length&&this._destroyDatasetMeta(t)})}buildOrUpdateControllers(){const e=[],i=this.data.datasets;let s,a;for(this._removeUnreferencedMetasets(),s=0,a=i.length;s{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const s=this.config,a=(s.update(),this._options=s.createResolver(s.chartOptionScopes(),this.getContext())),n=this._animationsDisabled=!a.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1!==this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})){const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let i=0;for(let t=0,e=this.data.datasets.length;t{t.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(ta("z","_idx"));var{_active:t,_lastEvent:e}=this;e?this._eventHandler(e,!0):t.length&&this._updateHoverStyles(t,t,!0),this.render()}}_updateScales(){k(this.scales,t=>{a.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){var t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);Z(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){var t,e,i,s,a=this["_hiddenIndices"];for({method:t,start:e,count:i}of this._getUniformDataChanges()||[]){n=void 0;o=void 0;r=void 0;s=void 0;var n=a;var o=e;var r="_removeElements"===t?-i:i;const l=Object.keys(n);for(const h of l){const l=+h;l>=o&&(s=n[h],delete n[h],(0o)&&(n[l+r]=s))}}}_getUniformDataChanges(){const t=this._dataChanges;if(t&&t.length){this._dataChanges=[];var e=this.data.datasets.length,i=e=>new Set(t.filter(t=>t[0]===e).map((t,e)=>e+","+t.splice(1).join(","))),s=i(0);for(let t=1;tt.split(",")).map(t=>({method:t[1],start:+t[2],count:+t[3]}))}}_updateLayout(t){if(!1!==this.notifyPlugins("beforeLayout",{cancelable:!0})){a.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],k(this.boxes,t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))},this),this._layers.forEach((t,e)=>{t._idx=e}),this.notifyPlugins("afterLayout")}}_updateDatasets(i){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:i,cancelable:!0})){for(let t=0,e=this.data.datasets.length;tt&&t._dataset===e).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Pi(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){var e=this.data.datasets[t];if(!e)return!1;t=this.getDatasetMeta(t);return"boolean"==typeof t.hidden?!t.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(e,t,i){const s=i?"show":"hide",a=this.getDatasetMeta(e),n=a.controller._resolveAnimations(void 0,s);G(t)?(a.data[t].hidden=!i,this.update()):(this.setDatasetVisibility(e,i),n.update(a,{visible:i}),this.update(t=>t.datasetIndex===e?s:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),l.remove(this),t=0,e=this.data.datasets.length;t{s.addEventListener(this,t,e),i[t]=e},a=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};k(this.options.events,t=>e(t,a))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const i=this._responsiveListeners,s=this.platform,t=(t,e)=>{s.addEventListener(this,t,e),i[t]=e},e=(t,e)=>{i[t]&&(s.removeEventListener(this,t,e),delete i[t])},a=(t,e)=>{this.canvas&&this.resize(t,e)};let n;const o=()=>{e("attach",o),this.attached=!0,this.resize(),t("resize",a),t("detach",n)};n=()=>{this.attached=!1,e("resize",a),this._stop(),this._resize(0,0),t("attach",o)},(s.isAttached(this.canvas)?o:n)()}unbindEvents(){k(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},k(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){var s=i?"set":"remove";let a,n,o,r;for("dataset"===e&&(a=this.getDatasetMeta(t[0].datasetIndex)).controller["_"+s+"DatasetHoverStyle"](),o=0,r=t.length;o{var i=this.getDatasetMeta(t);if(i)return{datasetIndex:t,element:i.data[e],index:e};throw new Error("No dataset found at index "+t)});W(t,e)||(this._active=t,this._lastEvent=null,this._updateHoverStyles(t,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(e){return 1===this._plugins._cache.filter(t=>t.plugin.id===e).length}_updateHoverStyles(t,e,i){var s=this.options.hover,a=(t,i)=>t.filter(e=>!i.some(t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)),n=a(e,t),i=i?t:a(t,e);n.length&&this.updateHoverStyle(n,s.mode,!1),i.length&&s.mode&&this.updateHoverStyle(i,s.mode,!0)}_eventHandler(e,t){const i={event:e,replay:t,cancelable:!0,inChartArea:this.isPointInArea(e)},s=t=>(t.options.events||this.options.events).includes(e.native.type);if(!1!==this.notifyPlugins("beforeEvent",i,s))return t=this._handleEvent(e,t,i.inChartArea),i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(t||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:a}=this,n=e,o=this._getActiveElements(t,s,i,n),r=J(t),l=(h=t,c=this._lastEvent,i&&"mouseout"!==h.type?r?c:h:null);i&&(this._lastEvent=null,d(a.onHover,[t,o,this],this),r&&d(a.onClick,[t,o,this],this));var h,c=!W(o,s);return(c||e)&&(this._active=o,this._updateHoverStyles(o,s,e)),this._lastEvent=l,c}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;i=this.options.hover;return this.getElementsAtEventForMode(t,i.mode,i,s)}}function ra(){k(i.instances,t=>t._plugins.invalidate())}function la(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}var ha={_date:class Xn{static override(t){Object.assign(Xn.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return la()}parse(){return la()}format(){return la()}add(){return la()}diff(){return la()}startOf(){return la()}endOf(){return la()}}};function ca(i,s,a,n){if(O(i)){var o=i,r=s,l=a,h=n,c=l.parse(o[0],h),o=l.parse(o[1],h),h=Math.min(c,o),d=Math.max(c,o);let t=h,e=d;Math.abs(h)>Math.abs(d)&&(t=d,e=h),r[l.axis]=e,r._custom={barStart:t,barEnd:e,start:c,end:o,min:h,max:d}}else s[a.axis]=a.parse(i,n);return s}function da(t,e,i,s){const a=t.iScale,n=t.vScale,o=a.getLabels(),r=a===n,l=[];let h,c,d,u;for(c=(h=i)+s;h"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(s){const t=s.data;if(t.labels.length&&t.datasets.length){const{pointStyle:a,color:n}=s.legend.options["labels"];return t.labels.map((t,e)=>{var i=s.getDatasetMeta(0).controller.getStyle(e);return{text:t,fillStyle:i.backgroundColor,strokeStyle:i.borderColor,fontColor:n,lineWidth:i.borderWidth,pointStyle:a,hidden:!s.getDataVisibility(e),index:e}})}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(s,a){const n=this.getDataset().data,o=this._cachedMeta;if(!1===this._parsing)o._parsed=n;else{let t,e,i=t=>+n[t];if(A(n[s])){const{key:s="value"}=this._parsing;i=t=>+m(n[t],s)}for(e=(t=s)+a;tpt(t,r,l,!0)?1:Math.max(e,e*s,i,i*s),f=(t,e,i)=>pt(t,r,l,!0)?-1:Math.min(e,e*s,i,i*s),p=g(0,h,d),m=g(D,c,u),b=f(S,h,d),x=f(S+D,c,u);i=(p-b)/2,a=(m-x)/2,n=-(p+b)/2,o=-(m+x)/2}return{ratioX:i,ratioY:a,offsetX:n,offsetY:o}}(c,h,r),p=(i.width-n)/d,m=(i.height-n)/u,b=Math.max(Math.min(p,m)/2,0),x=B(this.options.radius,b),v=(x-Math.max(x*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=g*x,this.offsetY=f*x,s.total=this.calculateTotal(),this.outerRadius=x-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(a,0,a.length,t)}_circumference(t,e){var i=this.options,s=this._cachedMeta,a=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*a/_)}updateElements(t,e,i,s){const a="reset"===s,n=this.chart,o=n.chartArea,r=n.options.animation,l=(o.left+o.right)/2,h=(o.top+o.bottom)/2,c=a&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:g,includeOptions:f}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p{var i=s.getDatasetMeta(0).controller.getStyle(e);return{text:t,fillStyle:i.backgroundColor,strokeStyle:i.borderColor,fontColor:n,lineWidth:i.borderWidth,pointStyle:a,hidden:!s.getDataVisibility(e),index:e}})}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){var e=this._cachedMeta,i=this.chart,s=i.data.labels||[],e=de(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:e}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){var e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,s={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((t,e)=>{var i=this.getParsed(e).r;!isNaN(i)&&this.chart.getDataVisibility(e)&&(is.max&&(s.max=i))}),s}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),a=Math.max(s/2,0),n=(a-Math.max(i.cutoutPercentage?a/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=a-n*this.index,this.innerRadius=this.outerRadius-n}updateElements(s,a,t,n){const o="reset"===n,r=this.chart,l=r.options.animation,h=this._cachedMeta.rScale,c=h.xCenter,d=h.yCenter,u=h.getIndexAngle(0)-.5*S;let g,f=u;var p=360/this.countVisibleElements();for(g=0;g{!isNaN(this.getParsed(e).r)&&this.chart.getDataVisibility(e)&&i++}),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?L(this.resolveDataElementOptions(t,e).angle||i):0}}var ba=Object.freeze({__proto__:null,BarController:class extends Os{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return da(t,e,i,s)}parseArrayData(t,e,i,s){return da(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:a,vScale:n}=t,{xAxisKey:o="x",yAxisKey:r="y"}=this._parsing,l="x"===a.axis?o:r,h="x"===n.axis?o:r,c=[];let d,u,g,f;for(u=(d=i)+s;dn.x,e="left","right"):(t=n.baset.controller.options.grouped),a=e.options.stacked,n=[];for(const e of s)if((void 0===i||!(t=>{var e=t.controller.getParsed(i),e=e&&e[t.vScale.axis];if(P(e)||isNaN(e))return!0})(e))&&((!1===a||-1===n.indexOf(e.stack)||void 0===a&&void 0===e.stack)&&n.push(e.stack),e.index===t))break;return n.length||n.push(void 0),n}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),a=void 0!==e?s.indexOf(e):-1;return-1===a?s.length-1:a}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let a,n;for(a=0,n=e.data.length;at-e))}return s._cache.$bar}(e,t.type);let s,a,n,o,r=e._length;var l=()=>{32767!==n&&-32768!==n&&(G(o)&&(r=Math.min(r,Math.abs(n-o)||r)),o=n)};for(s=0,a=i.length;s=m?1:-1))*n),u===o&&(x-=d/2);const t=e.getPixelForDecimal(0),P=e.getPixelForDecimal(1),a=Math.min(t,P),l=Math.max(t,P);x=Math.max(Math.min(x,l),a),c=x+d,i&&!h&&(r._stacks[e.axis]._visualValues[s]=e.getValueForPixel(c)-e.getValueForPixel(x))}if(x===e.getPixelForValue(o)){const t=y(d)*e.getLineWidthForValue(o)/2;x+=t,d-=t}return{size:d,base:x,head:c,center:c+d/2}}_calculateBarIndexPixels(t,e){const i=e.scale,s=this.options,a=s.skipNull,n=T(s.maxBarThickness,1/0);let o,r;if(e.grouped){const i=a?this._getStackCount(t):e.stackCount,T=("flex"===s.barThickness?function(t,e,i,s){var a=e.pixels,n=a[t];let o=0=b?x.skip=!0:(y=P((_=this.getParsed(t))[u]),M=x[d]=n.getPixelForValue(_[d],t),w=x[u]=a||y?o.getBasePixel():o.getPixelForValue(r?this.applyStack(o,_,r):_[u],t),x.skip=isNaN(M)||isNaN(w)||y,x.stop=0p,f&&(x.parsed=_,x.raw=l.data[t]),c&&(x.options=h||this.resolveDataElementOptions(t,g.active?"active":s)),m||this.updateElement(g,t,x,s),v=_)}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;var a=s[0].size(this.resolveDataElementOptions(0)),n=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,a,n)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends pa{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:ma,RadarController:class extends Os{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],a=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);var n={_loop:!0,_fullLoop:a.length===s.length,options:e};this.updateElement(i,void 0,n,t)}this.updateElements(s,0,s.length,t)}updateElements(e,i,s,a){const n=this._cachedMeta.rScale,o="reset"===a;for(let t=i;tm,p&&(f.parsed=s,f.raw=h.data[t]),d&&(f.options=c||this.resolveDataElementOptions(t,i.active?"active":a)),b||this.updateElement(i,t,f,a),x=s}this.updateSharedOptions(c,a,t)}getMaxOverflow(){const t=this._cachedMeta,i=t.data||[];if(!this.options.showLine){let e=0;for(let t=i.length-1;0<=t;--t)e=Math.max(e,i[t].size(this.resolveDataElementOptions(t))/2);return 0{var e=(i-Math.min(a,t))*s/2;return C(t,0,Math.min(a,e))};return{outerStart:o(t.outerStart),outerEnd:o(t.outerEnd),innerStart:C(t.innerStart,0,n),innerEnd:C(t.innerEnd,0,n)}}(e,h,d,l-g),b=d-c,x=d-f,v=g+c/b,_=l-f/x,y=h+p,M=h+m,w=g+p/y,k=l-m/M;if(t.beginPath(),n){const e=(v+_)/2;if(t.arc(o,r,d,v,e),t.arc(o,r,d,e,_),0(o+(h?r-t:t))%n,v=()=>{g!==f&&(t.lineTo(m,f),t.lineTo(m,g),t.lineTo(m,p))};for(l&&(d=a[x(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c)if(!(d=a[x(c)]).skip){const e=d.x,i=d.y,s=0|e;s===u?(if&&(f=i),m=(b*m+e)/++b):(v(),t.lineTo(e,i),u=s,b=0,g=f=i),p=i}v()}function Sa(t){var e=t.options,i=e.borderDash&&e.borderDash.length;return t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i?wa:ka}const Pa="function"==typeof Path2D;class Da extends e{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){var i,s=this.options;!s.tension&&"monotone"!==s.cubicInterpolationMode||s.stepped||this._pointsUpdated||(i=s.spanGaps?this._loop:this._fullLoop,hi(this._points,s,t,i,e),this._pointsUpdated=!0)}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ri(this,this.options.segment))}first(){var t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){var t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(i,s){var a=this.options,n=i[s],o=this.points,r=Ei(this,{property:s,start:n,end:n});if(r.length){const l=[],h=a.stepped?pi:a.tension||"monotone"===a.cubicInterpolationMode?mi:fi;let e,t;for(e=0,t=r.length;e"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){var{angle:t,distance:e}=ut(this.getProps(["x","y"],i),{x:t,y:e}),{startAngle:i,endAngle:s,innerRadius:a,outerRadius:n,circumference:o}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),r=(this.options.spacing+this.options.borderWidth)/2,o=T(o,s-i)>=_||pt(t,i,s),t=c(e,a+r,n+r);return o&&t}getCenterPoint(t){var{x:t,y:e,startAngle:i,endAngle:s,innerRadius:a,outerRadius:n}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:o,spacing:r}=this.options,i=(i+s)/2,s=(a+n+r+o)/2;return{x:t+Math.cos(i)*s,y:e+Math.sin(i)*s}}tooltipPosition(t){return this.getCenterPoint(t)}draw(e){var{options:i,circumference:s}=this,a=(i.offset||0)/4,n=(i.spacing||0)/2,o=i.circular;if(this.pixelMargin="inner"===i.borderAlign?.33:0,this.fullCircles=s>_?Math.floor(s/_):0,!(0===s||this.innerRadius<0||this.outerRadius<0)){e.save();var r=(this.startAngle+this.endAngle)/2,r=(e.translate(Math.cos(r)*a,Math.sin(r)*a),a*(1-Math.sin(Math.min(S,s||0))));e.fillStyle=i.backgroundColor,e.strokeStyle=i.borderColor;{var l=e;a=this;s=r;i=n;var h=o;var{fullCircles:c,startAngle:d,circumference:u}=a;let t=a.endAngle;if(c){va(l,a,s,i,t,h);for(let t=0;ts=e?s:t,r=t=>a=i?a:t;if(t){const t=y(s),e=y(a);t<0&&e<0?r(0):0g&&(k=nt(w*k/g/u)*u),P(r)||(_=Math.pow(10,r),k=Math.ceil(k*_)/_),M="ticks"===s?(y=Math.floor(f/k)*k,Math.ceil(p/k)*k):(y=f,p),m&&b&&a&<((o-n)/a,k/1e3)?(w=Math.round(Math.min((o-n)/k,h)),k=(o-n)/w,y=n,M=o):x?(y=m?n:y,M=b?o:M,w=l-1,k=(M-y)/w):w=at(w=(M-y)/k,Math.round(w),k/1e3)?Math.round(w):Math.ceil(w);e=Math.max(dt(k),dt(y));_=Math.pow(10,P(r)?e:r),y=Math.round(y*_)/_,M=Math.round(M*_)/_;let S=0;for(m&&(d&&y!==n?(i.push({value:n}),yo)break;i.push({value:t})}return b&&d&&M!==o?i.length&&at(i[i.length-1].value,o,za(o,v,t))?i[i.length-1].value=o:i.push({value:o}):b&&M!==o||i.push({value:M}),i}({maxTicks:Math.max(2,i),bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&ht(s,this,"value"),t.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}configure(){var t=this.ticks;let e=this.min,i=this.max;super.configure(),this.options.offset&&t.length&&(t=(i-e)/Math.max(t.length-1,1)/2,e-=t,i+=t),this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return de(t,this.chart.options.locale,this.options.ticks.format)}}class Va extends Fa{static id="linear";static defaults={ticks:{callback:ge.formatters.numeric}};determineDataLimits(){var{min:t,max:e}=this.getMinMax(!0);this.min=p(t)?t:0,this.max=p(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){var t=this.isHorizontal(),e=t?this.width:this.height,i=L(this.options.ticks.minRotation),t=(t?Math.sin(i):Math.cos(i))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,i.lineHeight/t))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const Ba=t=>Math.floor(r(t)),Wa=(t,e)=>Math.pow(10,Ba(t)+e);function Na(t){return 1==t/Math.pow(10,Ba(t))}function Ha(t,e,i){i=Math.pow(10,i),t=Math.floor(t/i);return Math.ceil(e/i)-t}class ja extends zs{static id="logarithmic";static defaults={ticks:{callback:ge.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){t=Fa.prototype.parse.apply(this,[t,e]);if(0!==t)return p(t)&&0s=e?s:t,n=t=>a=i?a:t;s===a&&(s<=0?(t(1),n(10)):(t(Wa(s,-1)),n(Wa(a,1)))),s<=0&&t(Wa(a,-1)),a<=0&&n(Wa(s,1)),this.min=s,this.max=a}buildTicks(){const t=this.options,e=function(t,{min:e,max:i}){e=g(t.min,e);const s=[],a=Ba(e);let n=function(t,e){let i=Ba(e-t);for(;10n?Math.pow(10,a):0,h=Math.round((e-l)*o)/o,c=Math.floor((e-l)/r/10)*r*10;let d=Math.floor((h-c)/Math.pow(10,n)),u=g(t.min,Math.round((l+c+d*Math.pow(10,n))*o)/o);for(;uf.r&&(t=(m.end-f.r)/x,g.r=Math.max(g.r,f.r+t)),b.startf.b&&(e=(b.end-f.b)/p,g.b=Math.max(g.b,f.b+e))}}var d,u;e.setCenterPoint(i.l-s.l,s.r-i.r,i.t-s.t,s.b-i.b),e._pointLabelItems=function(e,i,s){const a=[],n=e._pointLabels.length,t=e.options,{centerPointLabels:o,display:r}=t.pointLabels,l={extra:Ya(t)/2,additionalAngle:o?S/n:0};let h;for(let t=0;tt,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){var t=this._padding=I(Ya(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){var{min:t,max:e}=this.getMinMax(!1);this.min=p(t)&&!isNaN(t)?t:0,this.max=p(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Ya(this.options))}generateTickLabels(t){Fa.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map((t,e)=>{t=d(this.options.pointLabels.callback,[t,e],this);return t||0===t?t:""}).filter((t,e)=>this.chart.getDataVisibility(e))}fit(){var t=this.options;t.display&&t.pointLabels.display?Ua(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return v(t*(_/(this._pointLabels.length||1))+L(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(P(t))return NaN;var e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(P(t))return NaN;t/=this.drawingArea/(this.max-this.min);return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(t){var e=this._pointLabels||[];if(0<=t&&t0!==t)?(g.beginPath(),je(g,{x:f,y:r,w:x,h:m,radius:p}),g.fill()):g.fillRect(f,r,x,m)}var p=z(l.font),{x:v,y:b,textAlign:g}=o;He(_,n._pointLabels[t],v,b+p.lineHeight/2,p,{color:l.color,textAlign:g,textBaseline:"middle"})}}}if(h.display&&this.ticks.forEach((t,e)=>{if(0!==e){u=this.getDistanceFromCenterForValue(t.value);t=this.getContext(e),e=h.setContext(t),t=c.setContext(t);{var i=this,s=u,a=d;const n=i.ctx,o=e.circular,{color:r,lineWidth:l}=e;!o&&!a||!r||!l||s<0||(n.save(),n.strokeStyle=r,n.lineWidth=l,n.setLineDash(t.dash),n.lineDashOffset=t.dashOffset,n.beginPath(),Xa(i,s,o,a),n.closePath(),n.stroke(),n.restore())}}}),i.display){for(t.save(),s=d-1;0<=s;s--){const h=i.setContext(this.getPointLabelContext(s)),{color:c,lineWidth:d}=h;d&&c&&(t.lineWidth=d,t.strokeStyle=c,t.setLineDash(h.borderDash),t.lineDashOffset=h.borderDashOffset,u=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),a=this.getPointPosition(s,u),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(a.x,a.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const o=this.ctx,r=this.options,l=r.ticks;if(l.display){var t=this.getIndexAngle(0);let a,n;o.save(),o.translate(this.xCenter,this.yCenter),o.rotate(t),o.textAlign="center",o.textBaseline="middle",this.ticks.forEach((t,e)=>{if(0!==e||r.reverse){var i=l.setContext(this.getContext(e)),s=z(i.font);if(a=this.getDistanceFromCenterForValue(this.ticks[e].value),i.showLabelBackdrop){o.font=s.string,n=o.measureText(t.label).width,o.fillStyle=i.backdropColor;const r=I(i.backdropPadding);o.fillRect(-n/2-r.left,-a-s.size/2-r.top,n+r.width,s.size+r.height)}He(o,t.label,0,-a,s,{color:i.color,strokeColor:i.textStrokeColor,strokeWidth:i.textStrokeWidth})}}),o.restore()}}drawTitle(){}}const Ka={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},h=Object.keys(Ka);function Ga(t,e){return t-e}function Za(t,e){if(P(e))return null;const i=t._adapter,{parser:s,round:a,isoWeekday:n}=t._parseOpts;let o=e;return null===(o=p(o="function"==typeof s?s(o):o)?o:"string"==typeof s?i.parse(o,s):i.parse(o))?null:+(o=a?"week"!==a||!rt(n)&&!0!==n?i.startOf(o,a):i.startOf(o,"isoWeek",n):o)}function Ja(e,i,s,a){const n=h.length;for(let t=h.indexOf(e);t=e?i[s]:i[a]]=!0):t[e]=!0}function tn(i,t,s){const a=[],n={},e=t.length;let o,r;for(o=0;o=h.indexOf(s);t--){const s=h[t];if(Ka[s].common&&e._adapter.diff(n,a,s)>=i-1)return s}return h[s?h.indexOf(s):0]}(this,n.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(i){for(let t=h.indexOf(i)+1,e=h.length;t+t.value))}initOffsets(t=[]){let e,i,s=0,a=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),a=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);t=t.length<3?.5:.25;s=C(s,0,t),a=C(a,0,t),this._offsets={start:s,end:a,factor:1/(s+1+a)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,a=s.time,n=a.unit||Ja(a.minUnit,e,i,this._getLabelCapacity(e)),o=T(s.ticks.stepSize,1),r="week"===n&&a.isoWeekday,l=rt(r)||!0===r,h={};let c,d,u=e;if(l&&(u=+t.startOf(u,"isoWeek",r)),u=+t.startOf(u,l?"day":n),t.diff(i,e,n)>1e5*o)throw new Error(e+" and "+i+" are too far apart with stepSize of "+o+" "+n);var g="data"===s.ticks.source&&this.getDataTimestamps();for(c=u,d=0;c+t)}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){var i=this.options.time.displayFormats,s=this._unit,e=e||i[s];return this._adapter.format(t,e)}_tickFormatFunction(t,e,i,s){var a=this.options,n=a.ticks.callback;if(n)return d(n,[t,e,i],this);var n=a.time.displayFormats,a=this._unit,o=this._majorUnit,a=a&&n[a],n=o&&n[o],i=i[e],e=o&&n&&i&&i.major;return this._adapter.format(t,s||(e?n:a))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=f(t,"pos",e)),{pos:s,time:n}=t[r],{pos:a,time:o}=t[l]):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=f(t,"time",e)),{time:s,pos:n}=t[r],{time:a,pos:o}=t[l]);i=a-s;return i?n+(o-n)*(e-s)/i:n}var an=Object.freeze({__proto__:null,CategoryScale:class extends zs{static id="category";static defaults={ticks:{callback:Ia}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){var e=this._addedLabels;if(e.length){const t=this.getLabels();for(var{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(P(t))return null;var i,s,a,n,o,r,l=this.getLabels();return a=e=isFinite(e)&&l[e]===t?e:(i=l,s=T(e,t=t),a=this._addedLabels,-1===(r=i.indexOf(t))?(o=s,a=a,"string"==typeof(n=t)?(o=i.push(n)-1,a.unshift({index:o,label:n})):isNaN(n)&&(o=null),o):r!==i.lastIndexOf(t)?s:r),n=l.length-1,null===a?null:C(Math.round(a),0,n)}determineDataLimits(){var{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const e=this.min,i=this.max,t=this.options.offset,s=[];let a=this.getLabels();a=0===e&&i===a.length-1?a:a.slice(e,i+1),this._valueRange=Math.max(a.length-(t?0:1),1),this._startValue=this.min-(t?.5:0);for(let t=e;t<=i;t++)s.push({value:t});return s}getLabelForValue(t){return Ia.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return null===(t="number"!=typeof t?this.parse(t):t)?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:Va,LogarithmicScale:ja,RadialLinearScale:qa,TimeScale:en,TimeSeriesScale:class extends en{static id="timeseries";static defaults=en.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){var t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=sn(e,this.min),this._tableRange=sn(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],a=[];let n,o,r,l,h;for(n=0,o=t.length;n=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(n=0,o=s.length;nt-e)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t}getDecimalForValue(t){return(sn(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){var e=this._offsets,t=this.getDecimalForPixel(t)/e.factor-e.end;return sn(this._table,t*this._tableRange+this._minPos,!0)}}});const nn=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],on=nn.map(t=>t.replace("rgb(","rgba(").replace(")",", 0.5)"));function rn(t){return nn[t%nn.length]}function ln(t){return on[t%on.length]}function hn(n){let o=0;return(t,e)=>{var i,s,a,e=n.getDatasetMeta(e).controller;e instanceof pa?o=(s=t,a=o,s.backgroundColor=s.data.map(()=>rn(a++)),a):e instanceof ma?o=(s=t,i=o,s.backgroundColor=s.data.map(()=>ln(i++)),i):e&&(o=(e=t,t=o,e.borderColor=rn(t),e.backgroundColor=ln(t),++t))}}function cn(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return 1}var dn={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(i.enabled){const{data:{datasets:s},options:a}=t.config,n=a["elements"];!i.forceOverride&&(cn(s)||a&&(a.borderColor||a.backgroundColor)||n&&cn(n))||(i=hn(t),s.forEach(i))}}};function un(t){var e;t._decimated&&(e=t._data,delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e}))}function gn(t){t.data.datasets.forEach(t=>{un(t)})}var fn={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(r,t,M)=>{if(M.enabled){const l=r.width;r.data.datasets.forEach((e,t)=>{var{_data:i,indexAxis:s}=e,h=r.getDatasetMeta(t),a=i||e.data;if("y"!==ki([s,r.options.indexAxis])&&h.controller.supportsDecimation){t=r.scales[h.xAxisID];if(("linear"===t.type||"time"===t.type)&&!r.options.parsing){var{start:n,count:o}=function(t){var e=t.length;let i,s=0;const a=h["iScale"],{min:n,max:o,minDefined:r,maxDefined:l}=a.getUserBounds();return r&&(s=C(f(t,a.axis,n).lo,0,e-1)),i=l?C(f(t,a.axis,o).hi+1,s,e)-s:e-s,{start:s,count:i}}(a);if(o<=(M.threshold||4*l))un(e);else{let t;switch(P(i)&&(e._data=a,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),M.algorithm){case"lttb":t=function(s,a,n,t){var e=M.samples||t;if(n<=e)return s.slice(a,a+n);const o=[],r=(n-2)/(e-2);let l=0;const h=a+n-1;let c,d,u,g,f,p=a;for(o[l++]=s[p],c=0;cu&&(u=g,d=s[t],f=t);o[l++]=d,p=f}return o[l++]=s[h],o}(a,n,o,l);break;case"min-max":t=function(t,e,i,s){let a,n,o,r,l,h,c,d,u,g,f=0,p=0;const m=[],b=e+i-1,x=t[e].x,v=t[b].x-x;for(a=e;ag&&(g=r,c=a),f=(p*f+n.x)/++p;else{const i=a-1;if(!P(h)&&!P(c)){const e=Math.min(h,c),P=Math.max(h,c);e!==d&&e!==i&&m.push({...t[e],x:f}),P!==d&&P!==i&&m.push({...t[P],x:f})}0{e=mn(t,e,a);t=a[t],e=a[e];null!==s?(n.push({x:t.x,y:s}),n.push({x:e.x,y:s})):null!==i&&(n.push({x:i,y:t.y}),n.push({x:i,y:e.y}))}),n}(t)).length?new Da({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function vn(t){return t&&!1!==t.fill}function _n(e,i,s){const a=[];for(let t=0;t{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class On extends e{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const i=this.options.labels||{};let t=d(i.generateLabels,[this.chart],this)||[];i.filter&&(t=t.filter(t=>i.filter(t,this.chart.data))),i.sort&&(t=t.sort((t,e)=>i.sort(t,e,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){const{options:i,ctx:s}=this;if(i.display){var a=i.labels,n=z(a.font),o=n.size,r=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=Cn(a,o);let t,e;s.font=n.string,this.isHorizontal()?(t=this.maxWidth,e=this._fitRows(r,o,a,l)+10):(e=this.maxHeight,t=this._fitCols(r,n,a,l)+10),this.width=Math.min(t,i.maxWidth||this.maxWidth),this.height=Math.min(e,i.maxHeight||this.maxHeight)}else this.width=this.height=0}_fitRows(t,i,s,a){const{ctx:n,maxWidth:o,options:{labels:{padding:r}}}=this,l=this.legendHitBoxes=[],h=this.lineWidths=[0],c=a+r;let d=t,u=(n.textAlign="left",n.textBaseline="middle",-1),g=-c;return this.legendItems.forEach((t,e)=>{t=s+i/2+n.measureText(t.text).width;(0===e||h[h.length-1]+t+2*r>o)&&(d+=c,h[h.length-(0{o=l,i=r,s=c,a=t,n=h;var i,s,a,n,{itemWidth:t,itemHeight:o}={itemWidth:function(t,e,i){let s=a.text;return s&&"string"!=typeof s&&(s=s.reduce((t,e)=>t.length>e.length?t:e)),t+e.size/2+i.measureText(s).width}(o,i,s),itemHeight:function(t){let e=n;return e="string"!=typeof a.text?An(a,t):e}(i.lineHeight)};0f&&(p+=m+d,g.push({width:m,height:b}),x+=m+d,v++,m=b=0),u[e]={left:x,top:b,col:v,width:t,height:o},m=Math.max(m,t),b+=o+d}),p+=m,g.push({width:m,height:b}),p}adjustHitBoxes(){if(this.options.display){const i=this._computeTitleHeight(),{legendHitBoxes:s,options:{align:a,labels:{padding:n},rtl:t}}=this,o=Di(t,this.left,this.width);if(this.isHorizontal()){let t=0,e=E(a,this.left+n,this.right-this.lineWidths[t]);for(const r of s)t!==r.row&&(t=r.row,e=E(a,this.left+n,this.right-this.lineWidths[t])),r.top+=this.top+i+n,r.left=o.leftForLtr(o.x(e),r.width),e+=r.width+n}else{let t=0,e=E(a,this.top+i+n,this.bottom-this.columnSizes[t].height);for(const l of s)l.col!==t&&(t=l.col,e=E(a,this.top+i+n,this.bottom-this.columnSizes[t].height)),l.top=e,l.left+=this.left+n,l.left=o.leftForLtr(o.x(l.left),l.width),e+=l.height+n}}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){var t;this.options.display&&(Ve(t=this.ctx,this),this._draw(),Be(t))}_draw(){const{options:h,columnSizes:c,lineWidths:d,ctx:u}=this,{align:g,labels:f}=h,p=R.color,m=Di(h.rtl,this.left,this.width),b=z(f.font),x=f["padding"],v=b.size,_=v/2;let y;this.drawTitle(),u.textAlign=m.textAlign("left"),u.textBaseline="middle",u.lineWidth=.5,u.font=b.string;const{boxWidth:M,boxHeight:w,itemHeight:k}=Cn(f,v),S=this.isHorizontal(),P=this._computeTitleHeight(),D=(y=S?{x:E(g,this.left+x,this.right-d[0]),y:this.top+x+P,line:0}:{x:this.left+x,y:E(g,this.top+P+x,this.bottom-c[0].height),line:0},Ci(this.ctx,h.textDirection),k+x);this.legendItems.forEach((t,e)=>{u.strokeStyle=t.fontColor,u.fillStyle=t.fontColor;var i=u.measureText(t.text).width,s=m.textAlign(t.textAlign||(t.textAlign=f.textAlign)),i=M+_+i;let a=y.x,n=y.y;m.setWidth(this.width),S?0this.right&&(n=y.y+=D,y.line++,a=y.x=E(g,this.left+x,this.right-d[y.line])):0this.bottom&&(a=y.x=a+c[y.line].width+x,y.line++,n=y.y=E(g,this.top+P+x,this.bottom-c[y.line].height));var e=m.x(a),o=n,r=t;if(!(isNaN(M)||M<=0||isNaN(w)||w<0)){u.save();var l=T(r.lineWidth,1);if(u.fillStyle=T(r.fillStyle,p),u.lineCap=T(r.lineCap,"butt"),u.lineDashOffset=T(r.lineDashOffset,0),u.lineJoin=T(r.lineJoin,"miter"),u.lineWidth=l,u.strokeStyle=T(r.strokeStyle,p),u.setLineDash(T(r.lineDash,[])),f.usePointStyle){const p={radius:w*Math.SQRT2/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:l},T=m.xPlus(e,M/2);Fe(u,p,T,o+_,f.pointStyleWidth&&M)}else{const f=o+Math.max((v-w)/2,0),p=m.leftForLtr(e,M),T=wi(r.borderRadius);u.beginPath(),Object.values(T).some(t=>0!==t)?je(u,{x:p,y:f,w:M,h:w,radius:T}):u.rect(p,f,M,w),u.fill(),0!==l&&u.stroke()}u.restore()}if(a=Ct(s,a+M+_,S?a+i:this.right,h.rtl),o=m.x(a),e=n,r=t,He(u,r.text,o,e+k/2,b,{strikethrough:r.hidden,textAlign:m.textAlign(r.textAlign)}),S)y.x+=i+x;else if("string"!=typeof t.text){const h=b.lineHeight;y.y+=An(t,h)+x}else y.y+=D}),Oi(this.ctx,h.textDirection)}drawTitle(){const s=this.options,a=s.title,n=z(a.font),o=I(a.padding);if(a.display){const l=Di(s.rtl,this.left,this.width),h=this.ctx,c=a.position,d=n.size/2,u=o.top+d;let t,e=this.left,i=this.width;if(this.isHorizontal())i=Math.max(...this.lineWidths),t=this.top+u,e=E(s.align,e,this.right-i);else{const a=this.columnSizes.reduce((t,e)=>Math.max(t,e.height),0);t=u+E(s.align,this.top,this.bottom-a-s.labels.padding-this._computeTitleHeight())}var r=E(c,e,e+i);h.textAlign=l.textAlign(Dt(c)),h.textBaseline="middle",h.strokeStyle=a.color,h.fillStyle=a.color,h.font=n.string,He(h,a.text,r,t,n)}}_computeTitleHeight(){var t=this.options.title,e=z(t.font),i=I(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,a;if(c(t,this.left,this.right)&&c(e,this.top,this.bottom))for(a=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const s=t.data.datasets,{usePointStyle:a,pointStyle:n,textAlign:o,color:r,useBorderRadius:l,borderRadius:h}=t.legend.options["labels"];return t._getSortedDatasetMetas().map(t=>{var e=t.controller.getStyle(a?0:void 0),i=I(e.borderWidth);return{text:s[t.index].label,fillStyle:e.backgroundColor,fontColor:r,hidden:!t.visible,lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:(i.width+i.height)/4,strokeStyle:e.borderColor,pointStyle:n||e.pointStyle,rotation:e.rotation,textAlign:o||e.textAlign,borderRadius:l&&(h||e.borderRadius),datasetIndex:t.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Ln extends e{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){var i=this.options;this.left=0,this.top=0,i.display?(this.width=this.right=t,this.height=this.bottom=e,t=O(i.text)?i.text.length:1,this._padding=I(i.padding),e=t*z(i.font).lineHeight+this._padding.height,this.isHorizontal()?this.height=e:this.width=e):this.width=this.height=this.right=this.bottom=0}isHorizontal(){var t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){var{top:e,left:i,bottom:s,right:a,options:n}=this,o=n.align;let r,l,h,c=0;return r=this.isHorizontal()?(l=E(o,i,a),h=e+t,a-i):(c="left"===n.position?(l=i+t,h=E(o,s,e),-.5*S):(l=a-t,h=E(o,e,s),.5*S),s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){var t,e,i,s,a,n=this.ctx,o=this.options;o.display&&(e=(t=z(o.font)).lineHeight/2+this._padding.top,{titleX:e,titleY:i,maxWidth:s,rotation:a}=this._drawArgs(e),He(n,o.text,0,0,t,{color:o.color,maxWidth:s,rotation:a,textAlign:Dt(o.align),textBaseline:"middle",translation:[e,i]}))}}var En={id:"title",_element:Ln,start(t,e,i){var s;t=t,i=i,s=new Ln({ctx:t.ctx,options:i,chart:t}),a.configure(t,s,i),a.addBox(t,s),t.titleBlock=s},stop(t){var e=t.titleBlock;a.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;a.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Rn=new WeakMap;var In={id:"subtitle",start(t,e,i){var s=new Ln({ctx:t.ctx,options:i,chart:t});a.configure(t,s,i),a.addBox(t,s),Rn.set(t,s)},stop(t){a.removeBox(t,Rn.get(t)),Rn.delete(t)},beforeUpdate(t,e,i){const s=Rn.get(t);a.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const zn={average(t){if(!t.length)return!1;let e,i,s=0,a=0,n=0;for(e=0,i=t.length;et+e.before.length+e.lines.length+e.after.length,0),x=(b+=t.beforeBody.length+t.afterBody.length,d&&(p+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b&&(p+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing),u&&(p+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing),0);function v(t){m=Math.max(m,i.measureText(t).width+x)}return i.save(),i.font=h.string,k(t.title,v),i.font=l.string,k(t.beforeBody.concat(t.afterBody),v),x=e.displayColors?o+2+e.boxPadding:0,k(s,t=>{k(t.before,v),k(t.lines,v),k(t.after,v)}),x=0,i.font=c.string,k(t.footer,v),i.restore(),{width:m+=f.width,height:p}}function Bn(i,t,s){var e=s.yAlign||t.yAlign||function(){var{y:t,height:e}=s;return ti.height-e/2?"bottom":"center"}();return{xAlign:s.xAlign||t.xAlign||function(a,n,o,t){var{x:e,width:i}=o,{width:s,chartArea:{left:r,right:l}}=a;let h="center";return"center"===t?h=e<=(r+l)/2?"left":"right":e<=i/2?h="left":s-i/2<=e&&(h="right"),h=function(t){var{x:e,width:i}=o,s=n.caretSize+n.caretPadding;return"left"===t&&e+i+s>a.width||"right"===t&&e-i-s<0}(h)?"center":h}(i,t,s,e),yAlign:e}}function Wn(t,i,e,s){var{caretSize:t,caretPadding:a,cornerRadius:n}=t,{xAlign:o,yAlign:r}=e,l=t+a,{topLeft:e,topRight:a,bottomLeft:n,bottomRight:h}=wi(n);let c=function(){let{x:t,width:e}=i;return"right"===o?t-=e:"center"===o&&(t-=e/2),t}();var d=function(){let{y:t,height:e}=i;return"top"===r?t+=l:t-="bottom"===r?e+l:e/2,t}();return"center"===r?"left"===o?c+=l:"right"===o&&(c-=l):"left"===o?c-=Math.max(e,n)+t:"right"===o&&(c+=Math.max(a,h)+t),{x:C(c,0,s.width-i.width),y:C(d,0,s.height-i.height)}}function Nn(t,e,i){i=I(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-i.right:t.x+i.left}function Hn(t){return x([],Fn(t))}function jn(t,e){e=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return e?t.override(e):t}const Yn={beforeTitle:t,title(t){if(0{var e={before:[],lines:[],after:[]},i=jn(s,t);x(e.before,Fn(w(i,"beforeLabel",this,t))),x(e.lines,w(i,"label",this,t)),x(e.after,Fn(w(i,"afterLabel",this,t))),a.push(e)}),a}getAfterBody(t,e){return Hn(w(e.callbacks,"afterBody",this,t))}getFooter(t,e){var e=e["callbacks"],i=w(e,"beforeFooter",this,t),s=w(e,"footer",this,t),e=w(e,"afterFooter",this,t),t=x([],Fn(i));return t=x(t,Fn(s)),x(t,Fn(e))}_createItems(s){const t=this._active,a=this.chart.data,i=[],n=[],o=[];let e,r,l=[];for(e=0,r=t.length;es.filter(t,e,i,a))),k(l=s.itemSort?l.sort((t,e)=>s.itemSort(t,e,a)):l,t=>{var e=jn(s.callbacks,t);i.push(w(e,"labelColor",this,t)),n.push(w(e,"labelPointStyle",this,t)),o.push(w(e,"labelTextColor",this,t))}),this.labelColors=i,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let a,n=[];if(s.length){const t=zn[i.position].call(this,s,this._eventPosition),e=(n=this._createItems(i),this.title=this.getTitle(n,i),this.beforeBody=this.getBeforeBody(n,i),this.body=this.getBody(n,i),this.afterBody=this.getAfterBody(n,i),this.footer=this.getFooter(n,i),this._size=Vn(this,i)),o=Object.assign({},t,e),r=Bn(this.chart,i,o),l=Wn(i,o,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,a={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(a={opacity:0});this._tooltipItems=n,this.$context=void 0,a&&this._resolveAnimations().update(this,a),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){t=this.getCaretPosition(t,i,s);e.lineTo(t.x1,t.y1),e.lineTo(t.x2,t.y2),e.lineTo(t.x3,t.y3)}getCaretPosition(t,e,i){var{xAlign:s,yAlign:a}=this,{caretSize:i,cornerRadius:n}=i,{topLeft:n,topRight:o,bottomLeft:r,bottomRight:l}=wi(n),{x:t,y:h}=t,{width:e,height:c}=e;let d,u,g,f,p,m;return"center"===a?(p=h+c/2,m="left"===s?(d=t,u=d-i,f=p+i,p-i):(d=t+e,u=d+i,f=p-i,p+i),g=d):(u="left"===s?t+Math.max(n,r)+i:"right"===s?t+e-Math.max(o,l)-i:this.caretX,g="top"===a?(f=h,p=f-i,d=u-i,u+i):(f=h+c,p=f+i,d=u+i,u-i),m=f),{x1:d,x2:u,x3:g,y1:f,y2:p,y3:m}}drawTitle(t,e,i){var s=this.title,a=s.length;let n,o,r;if(a){const l=Di(i.rtl,this.x,this.width);for(t.x=Nn(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",n=z(i.titleFont),o=i.titleSpacing,e.fillStyle=i.titleColor,e.font=n.string,r=0;r0!==t)?(t.beginPath(),t.fillStyle=a.multiKeyBackground,je(t,{x:e,y:g,w:l,h:r,radius:o}),t.fill(),t.stroke(),t.fillStyle=n.backgroundColor,t.beginPath(),je(t,{x:i,y:g+1,w:l-2,h:r-2,radius:o}),t.fill()):(t.fillStyle=a.multiKeyBackground,t.fillRect(e,g,l,r),t.strokeRect(e,g,l,r),t.fillStyle=n.backgroundColor,t.fillRect(i,g+1,l-2,r-2))}t.fillStyle=this.labelTextColors[i]}drawBody(e,i,t){const s=this["body"],{bodySpacing:a,bodyAlign:n,displayColors:o,boxHeight:r,boxWidth:l,boxPadding:h}=t,c=z(t.bodyFont);let d=c.lineHeight,u=0;function g(t){i.fillText(t,f.x(e.x+u),e.y+d/2),e.y+=d+a}const f=Di(t.rtl,this.x,this.width),p=f.textAlign(n);let m,b,x,v,_,y,M;for(i.textAlign=n,i.textBaseline="middle",i.font=c.string,e.x=Nn(this,p,t),i.fillStyle=t.bodyColor,k(this.beforeBody,g),u=o&&"right"!==p?"center"===n?l/2+h:l+2+h:0,v=0,y=s.length;v{var i=this.chart.getDatasetMeta(t);if(i)return{datasetIndex:t,element:i.data[e],index:e};throw new Error("Cannot find a dataset at index "+t)}),i=!W(i,t),s=this._positionChanged(t,e);(i||s)&&(this._active=t,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;var s=this.options,a=this._active||[],i=this._getActiveElements(t,a,e,i),n=this._positionChanged(i,t),a=e||!W(i,a)||n;return a&&(this._active=i,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),a}_getActiveElements(t,e,i,s){var a=this.options;if("mouseout"===t.type)return[];if(!s)return e;const n=this.chart.getElementsAtEventForMode(t,a.mode,a,i);return a.reverse&&n.reverse(),n}_positionChanged(t,e){var{caretX:i,caretY:s,options:a}=this,a=zn[a.position].call(this,t,e);return!1!==a&&(i!==a.x||s!==a.y)}}var Un={id:"tooltip",_element:$n,positioners:zn,afterInit(t,e,i){i&&(t.tooltip=new $n({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;var i;e&&e._willRender()&&(!(i={tooltip:e})!==t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0})&&(e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)))},afterEvent(t,e){var i;t.tooltip&&(i=e.replay,t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0))},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Yn},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return i.register(ba,an,Ra,s),i.helpers={...Fi},i._adapters=ha,i.Animation=bs,i.Animations=xs,i.animator=l,i.controllers=b.controllers.items,i.DatasetController=Os,i.Element=e,i.elements=Ra,i.Interaction=Hi,i.layouts=a,i.platforms=Oe,i.Scale=zs,i.Ticks=ge,Object.assign(i,ba,an,Ra,s,Oe),i.Chart=i,"undefined"!=typeof window&&(window.Chart=i),i});
\ No newline at end of file
diff --git a/staticbak/static/js/vendor/tailwind.js b/staticbak/static/js/vendor/tailwind.js
deleted file mode 100644
index 14062be..0000000
--- a/staticbak/static/js/vendor/tailwind.js
+++ /dev/null
@@ -1,19 +0,0 @@
- tailwind.config = {
- theme: {
- extend: {
- colors: {
- primary: '#165DFF',
- secondary: '#36CFFB',
- success: '#00B42A',
- warning: '#FF7D00',
- danger: '#F53F3F',
- info: '#86909C',
- dark: '#1D2129',
- light: '#F2F3F5',
- },
- fontFamily: {
- sans: ['Inter', 'system-ui', 'sans-serif'],
- },
- },
- }
- }
\ No newline at end of file
diff --git a/staticbak/static/login.html b/staticbak/static/login.html
deleted file mode 100644
index f2ea214..0000000
--- a/staticbak/static/login.html
+++ /dev/null
@@ -1,194 +0,0 @@
-
-
-
-
-
- DNS服务器控制台 - 登录
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/test/test-domain-info.js b/test/test-domain-info.js
deleted file mode 100644
index d53dc39..0000000
--- a/test/test-domain-info.js
+++ /dev/null
@@ -1,261 +0,0 @@
-// 测试脚本,用于调试 getDomainInfo 函数
-const fs = require('fs');
-const path = require('path');
-
-// 模拟浏览器环境的 console.log
-console.log = function() {
- process.stdout.write(Array.from(arguments).join(' ') + '\n');
-};
-
-// 读取域名信息数据库
-const domainInfoPath = path.join(__dirname, 'static/domain-info/domains/domain-info.json');
-const domainInfoDatabase = JSON.parse(fs.readFileSync(domainInfoPath, 'utf8'));
-
-// 模拟已加载的数据库
-let domainInfoLoaded = true;
-
-// 检查域名是否匹配
-function isDomainMatch(urlValue, targetDomain, categoryId) {
- console.log(' 开始匹配URL:', urlValue, '目标域名:', targetDomain, '类别ID:', categoryId);
-
- // 规范化目标域名,去除末尾的点
- const normalizedTargetDomain = targetDomain.replace(/\.$/, '').toLowerCase();
-
- try {
- // 尝试将URL值解析为完整URL
- console.log(' 尝试解析URL为完整URL');
- const url = new URL(urlValue);
- let hostname = url.hostname.toLowerCase();
- // 规范化主机名,去除末尾的点
- hostname = hostname.replace(/\.$/, '');
- console.log(' 解析成功,主机名:', hostname, '规范化目标域名:', normalizedTargetDomain);
-
- // 根据类别ID选择匹配方式
- if (categoryId === 2) {
- // CDN类别,使用域名后缀匹配
- if (normalizedTargetDomain.endsWith('.' + hostname) || normalizedTargetDomain === hostname) {
- console.log(' CDN域名后缀匹配成功');
- return true;
- } else {
- console.log(' CDN域名后缀不匹配');
- return false;
- }
- } else {
- // 其他类别,使用完整域名匹配
- if (hostname === normalizedTargetDomain) {
- console.log(' 完整域名匹配成功');
- return true;
- } else {
- console.log(' 完整域名不匹配');
- return false;
- }
- }
- } catch (e) {
- console.log(' 解析URL失败,将其视为纯域名处理,错误信息:', e.message);
- // 如果是纯域名而不是完整URL
- let urlDomain = urlValue.toLowerCase();
- // 规范化纯域名,去除末尾的点
- urlDomain = urlDomain.replace(/\.$/, '');
- console.log(' 处理为纯域名:', urlDomain, '规范化目标域名:', normalizedTargetDomain);
-
- // 根据类别ID选择匹配方式
- if (categoryId === 2) {
- // CDN类别,使用域名后缀匹配
- if (normalizedTargetDomain.endsWith('.' + urlDomain) || normalizedTargetDomain === urlDomain) {
- console.log(' CDN域名后缀匹配成功');
- return true;
- } else {
- console.log(' CDN域名后缀不匹配');
- return false;
- }
- } else {
- // 其他类别,使用完整域名匹配
- if (urlDomain === normalizedTargetDomain) {
- console.log(' 完整域名匹配成功');
- return true;
- } else {
- console.log(' 完整域名不匹配');
- return false;
- }
- }
- }
-}
-
-// 根据域名查找对应的网站信息
-async function getDomainInfo(domain) {
- console.log('开始查找域名信息,域名:', domain);
-
- if (!domainInfoDatabase || !domainInfoDatabase.domains) {
- console.error('域名信息数据库无效或为空');
- return null;
- }
-
- // 规范化域名,移除可能的端口号
- const normalizedDomain = domain.replace(/:\d+$/, '').toLowerCase();
- console.log('规范化后的域名:', normalizedDomain);
-
- // 遍历所有公司
- console.log('开始遍历公司,总公司数:', Object.keys(domainInfoDatabase.domains).length);
- for (const companyKey in domainInfoDatabase.domains) {
- if (domainInfoDatabase.domains.hasOwnProperty(companyKey)) {
- console.log('检查公司:', companyKey);
- const companyData = domainInfoDatabase.domains[companyKey];
- const companyName = companyData.company || companyKey;
-
- // 遍历公司下的所有网站和类别
- for (const websiteKey in companyData) {
- if (companyData.hasOwnProperty(websiteKey) && websiteKey !== 'company') {
- console.log(' 检查网站/类别:', websiteKey);
- const website = companyData[websiteKey];
-
- // 如果有URL属性,直接检查域名
- if (website.url) {
- // 处理字符串类型的URL
- if (typeof website.url === 'string') {
- console.log(' 检查字符串URL:', website.url);
- if (isDomainMatch(website.url, normalizedDomain, website.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
- return {
- name: website.name,
- icon: website.icon,
- categoryId: website.categoryId,
- categoryName: domainInfoDatabase.categories[website.categoryId] || '未知',
- company: website.company || companyName
- };
- }
- }
- // 处理对象类型的URL
- else if (typeof website.url === 'object') {
- console.log(' 检查对象类型URL,包含', Object.keys(website.url).length, '个URL');
- for (const urlKey in website.url) {
- if (website.url.hasOwnProperty(urlKey)) {
- const urlValue = website.url[urlKey];
- console.log(' 检查URL', urlKey, ':', urlValue);
- if (isDomainMatch(urlValue, normalizedDomain, website.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
- return {
- name: website.name,
- icon: website.icon,
- categoryId: website.categoryId,
- categoryName: domainInfoDatabase.categories[website.categoryId] || '未知',
- company: website.company || companyName
- };
- }
- }
- }
- }
- } else if (typeof website === 'object' && website !== null) {
- // 没有URL属性,可能是嵌套的类别
- console.log(' 发现嵌套类别,进一步检查');
- for (const nestedWebsiteKey in website) {
- if (website.hasOwnProperty(nestedWebsiteKey) && nestedWebsiteKey !== 'company') {
- console.log(' 检查嵌套网站/类别:', nestedWebsiteKey);
- const nestedWebsite = website[nestedWebsiteKey];
-
- if (nestedWebsite.url) {
- // 处理字符串类型的URL
- if (typeof nestedWebsite.url === 'string') {
- console.log(' 检查字符串URL:', nestedWebsite.url);
- if (isDomainMatch(nestedWebsite.url, normalizedDomain, nestedWebsite.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
- return {
- name: nestedWebsite.name,
- icon: nestedWebsite.icon,
- categoryId: nestedWebsite.categoryId,
- categoryName: domainInfoDatabase.categories[nestedWebsite.categoryId] || '未知',
- company: nestedWebsite.company || companyName
- };
- }
- }
- // 处理对象类型的URL
- else if (typeof nestedWebsite.url === 'object') {
- console.log(' 检查对象类型URL,包含', Object.keys(nestedWebsite.url).length, '个URL');
- for (const urlKey in nestedWebsite.url) {
- if (nestedWebsite.url.hasOwnProperty(urlKey)) {
- const urlValue = nestedWebsite.url[urlKey];
- console.log(' 检查URL', urlKey, ':', urlValue);
- if (isDomainMatch(urlValue, normalizedDomain, nestedWebsite.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
- return {
- name: nestedWebsite.name,
- icon: nestedWebsite.icon,
- categoryId: nestedWebsite.categoryId,
- categoryName: domainInfoDatabase.categories[nestedWebsite.categoryId] || '未知',
- company: nestedWebsite.company || companyName
- };
- }
- }
- }
- }
- } else if (typeof nestedWebsite === 'object' && nestedWebsite !== null) {
- // 嵌套类别中的嵌套类别,递归检查
- console.log(' 发现二级嵌套类别,进一步检查');
- for (const secondNestedWebsiteKey in nestedWebsite) {
- if (nestedWebsite.hasOwnProperty(secondNestedWebsiteKey) && secondNestedWebsiteKey !== 'company') {
- console.log(' 检查二级嵌套网站:', secondNestedWebsiteKey);
- const secondNestedWebsite = nestedWebsite[secondNestedWebsiteKey];
-
- if (secondNestedWebsite.url) {
- // 处理字符串类型的URL
- if (typeof secondNestedWebsite.url === 'string') {
- console.log(' 检查字符串URL:', secondNestedWebsite.url);
- if (isDomainMatch(secondNestedWebsite.url, normalizedDomain, secondNestedWebsite.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
- return {
- name: secondNestedWebsite.name,
- icon: secondNestedWebsite.icon,
- categoryId: secondNestedWebsite.categoryId,
- categoryName: domainInfoDatabase.categories[secondNestedWebsite.categoryId] || '未知',
- company: secondNestedWebsite.company || companyName
- };
- }
- }
- // 处理对象类型的URL
- else if (typeof secondNestedWebsite.url === 'object') {
- console.log(' 检查对象类型URL,包含', Object.keys(secondNestedWebsite.url).length, '个URL');
- for (const urlKey in secondNestedWebsite.url) {
- if (secondNestedWebsite.url.hasOwnProperty(urlKey)) {
- const urlValue = secondNestedWebsite.url[urlKey];
- console.log(' 检查URL', urlKey, ':', urlValue);
- if (isDomainMatch(urlValue, normalizedDomain, secondNestedWebsite.categoryId)) {
- console.log(' 匹配成功,返回网站信息');
- return {
- name: secondNestedWebsite.name,
- icon: secondNestedWebsite.icon,
- categoryId: secondNestedWebsite.categoryId,
- categoryName: domainInfoDatabase.categories[secondNestedWebsite.categoryId] || '未知',
- company: secondNestedWebsite.company || companyName
- };
- }
- }
- }
- }
- }
- }
- }
- } else {
- console.log(' 嵌套网站没有URL属性且不是对象类型');
- }
- }
- }
- } else {
- console.log(' 网站没有URL属性');
- }
- }
- }
- }
- }
-
- console.log('未找到匹配的域名信息');
- return null;
-}
-
-// 测试 mcs.doubao.com
-getDomainInfo('mcs.doubao.com').then(result => {
- console.log('\n=== 测试结果 ===');
- if (result) {
- console.log('匹配成功:', JSON.stringify(result, null, 2));
- } else {
- console.log('匹配失败');
- }
-});
diff --git a/test/test_cache.go b/test/test_cache.go
deleted file mode 100644
index ce6b1f2..0000000
--- a/test/test_cache.go
+++ /dev/null
@@ -1,185 +0,0 @@
-package main
-
-import (
- "encoding/json"
- "fmt"
- "os"
- "time"
-
- "dns-server/dns"
-
- miekdns "github.com/miekg/dns"
-)
-
-func main() {
- // 测试1: 内存缓存模式
- fmt.Println("=== 测试1: 内存缓存模式 ===")
- memCache := dns.NewDNSCache(60*time.Second, "memory", 100, "test_cache.json", 10*time.Second, 3600*time.Second, 60*time.Second)
-
- // 设置缓存项
- msg := &miekdns.Msg{}
- msg.SetQuestion("test.com.", miekdns.TypeA)
- memCache.Set("test.com.", miekdns.TypeA, msg, 60*time.Second)
-
- // 从缓存获取
- _, found := memCache.Get("test.com.", miekdns.TypeA)
- if found {
- fmt.Println("✓ 内存缓存: 成功获取缓存项")
- } else {
- fmt.Println("✗ 内存缓存: 未能获取缓存项")
- }
-
- // 检查文件是否创建
- if _, err := os.Stat("test_cache.json"); os.IsNotExist(err) {
- fmt.Println("✓ 内存缓存: 没有创建缓存文件")
- } else {
- fmt.Println("✗ 内存缓存: 不应该创建缓存文件,但文件存在")
- }
-
- // 测试2: 文件缓存模式
- fmt.Println("\n=== 测试2: 文件缓存模式 ===")
- // 使用独立的缓存文件
- test2CacheFile := "test_cache2.json"
- // 先删除可能存在的测试文件
- os.Remove(test2CacheFile)
-
- fileCache := dns.NewDNSCache(60*time.Second, "file", 100, test2CacheFile, 1*time.Second, 3600*time.Second, 60*time.Second)
-
- // 设置缓存项
- fileCache.Set("test.com.", miekdns.TypeA, msg, 60*time.Second)
-
- // 等待保存到文件
- time.Sleep(2000 * time.Millisecond)
-
- // 检查文件是否创建
- if _, err := os.Stat(test2CacheFile); err == nil {
- fmt.Println("✓ 文件缓存: 成功创建缓存文件")
- } else {
- fmt.Println("✗ 文件缓存: 未能创建缓存文件")
- }
-
- // 测试3: 从文件加载缓存
- fmt.Println("\n=== 测试3: 从文件加载缓存 ===")
- // 创建新的缓存实例,从文件加载
- loadCache := dns.NewDNSCache(60*time.Second, "file", 100, test2CacheFile, 10*time.Second, 3600*time.Second, 60*time.Second)
-
- // 从缓存获取
- _, found = loadCache.Get("test.com.", miekdns.TypeA)
- if found {
- fmt.Println("✓ 文件缓存: 成功从文件加载缓存项")
- } else {
- fmt.Println("✗ 文件缓存: 未能从文件加载缓存项")
- }
-
- // 清理测试2的缓存文件
- os.Remove(test2CacheFile)
-
- // 测试4: 缓存模式切换
- fmt.Println("\n=== 测试4: 缓存模式切换 ===")
- // 使用独立的缓存文件
- test4CacheFile := "test_cache4.json"
- // 先删除可能存在的测试文件
- os.Remove(test4CacheFile)
- // 创建文件缓存
- switchCache := dns.NewDNSCache(60*time.Second, "file", 100, test4CacheFile, 1*time.Second, 3600*time.Second, 60*time.Second)
-
- // 设置缓存项
- switchCache.Set("switch.com.", miekdns.TypeA, msg, 60*time.Second)
-
- // 检查当前缓存大小
- size := switchCache.Size()
- fmt.Printf(" 设置缓存项后,缓存大小: %d\n", size)
-
- // 直接调用SaveToFile方法保存缓存
- switchCache.SaveToFile()
-
- // 检查文件是否存在
- if _, err := os.Stat(test4CacheFile); err == nil {
- fmt.Println(" 切换前: 缓存文件已存在")
- // 查看文件大小
- fileInfo, _ := os.Stat(test4CacheFile)
- fmt.Printf(" 切换前: 缓存文件大小: %d bytes\n", fileInfo.Size())
- // 读取文件内容
- content, _ := os.ReadFile(test4CacheFile)
- fmt.Printf(" 切换前: 缓存文件内容: %s\n", content)
- } else {
- fmt.Println(" 切换前: 缓存文件不存在")
- }
-
- // 切换到内存模式
- switchCache.SetCacheMode("memory")
-
- // 再设置一个缓存项
- switchCache.Set("switch2.com.", miekdns.TypeA, msg, 60*time.Second)
-
- // 等待一段时间,检查是否继续保存
- time.Sleep(2000 * time.Millisecond)
-
- // 检查文件是否仍然存在
- if _, err := os.Stat("test_cache.json"); err == nil {
- fmt.Println(" 切换后: 缓存文件仍然存在")
- // 查看文件大小
- fileInfo, _ := os.Stat("test_cache.json")
- fmt.Printf(" 切换后: 缓存文件大小: %d bytes\n", fileInfo.Size())
- // 读取文件内容
- content, _ := os.ReadFile("test_cache.json")
- fmt.Printf(" 切换后: 缓存文件内容: %s\n", content)
- } else {
- fmt.Println(" 切换后: 缓存文件不存在")
- }
-
- // 查看当前时间
- fmt.Printf(" 当前时间: %v\n", time.Now())
-
- // 查看缓存文件中的过期时间
- content, _ := os.ReadFile(test4CacheFile)
- var serializableCache map[string]interface{}
- json.Unmarshal(content, &serializableCache)
- if items, ok := serializableCache["items"].(map[string]interface{}); ok {
- if item, ok := items["switch.com.|A"].(map[string]interface{}); ok {
- if expiry, ok := item["expiry"].(float64); ok {
- expiryTime := time.Unix(0, int64(expiry))
- fmt.Printf(" 缓存项过期时间: %v\n", expiryTime)
- fmt.Printf(" 缓存项是否过期: %v\n", time.Now().After(expiryTime))
- }
- }
- }
-
- // 创建新的缓存实例,验证是否只保存了切换前的缓存项
- verifyCache := dns.NewDNSCache(60*time.Second, "file", 100, test4CacheFile, 10*time.Second, 3600*time.Second, 60*time.Second)
-
- // 检查verifyCache的缓存大小
- verifySize := verifyCache.Size()
- fmt.Printf(" 新缓存实例大小: %d\n", verifySize)
-
- // 我们无法直接访问verifyCache的内部缓存,所以我们尝试不同的域名格式
- // 尝试带点和不带点的域名
- _, found1 := verifyCache.Get("switch.com", miekdns.TypeA)
- _, found2 := verifyCache.Get("switch.com.", miekdns.TypeA)
- _, found3 := verifyCache.Get("switch.com.|A", miekdns.TypeA)
-
- fmt.Printf(" 尝试获取switch.com: %v\n", found1)
- fmt.Printf(" 尝试获取switch.com.: %v\n", found2)
- fmt.Printf(" 尝试获取switch.com.|A: %v\n", found3)
-
- // 检查切换前的缓存项
- _, found = verifyCache.Get("switch.com.", miekdns.TypeA)
- if found || found1 {
- fmt.Println("✓ 模式切换: 切换前的缓存项已保存到文件")
- } else {
- fmt.Println("✗ 模式切换: 切换前的缓存项未保存到文件")
- }
-
- // 检查切换后的缓存项
- _, found = verifyCache.Get("switch2.com.", miekdns.TypeA)
- if !found {
- fmt.Println("✓ 模式切换: 切换后的缓存项没有保存到文件")
- } else {
- fmt.Println("✗ 模式切换: 切换后的缓存项不应该保存到文件,但文件中存在")
- }
-
- // 清理测试文件
- os.Remove("test_cache.json")
-
- fmt.Println("\n=== 测试完成 ===")
-}
diff --git a/test/test_cache2.json b/test/test_cache2.json
deleted file mode 100644
index 4ff1ec5..0000000
--- a/test/test_cache2.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "items": {
- "test.com.|A": {
- "responseBytes": "kosBAAABAAAAAAAABHRlc3QDY29tAAABAAE=",
- "expiry": 1768551008159638734,
- "hasDNSSEC": false,
- "size": 378
- }
- },
- "ttl": 60000000000,
- "maxSize": 10000,
- "cacheMode": "file",
- "cacheFilePath": "test_cache2.json"
-}
\ No newline at end of file
diff --git a/test/test_cache4.json b/test/test_cache4.json
deleted file mode 100644
index 977f2a3..0000000
--- a/test/test_cache4.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "items": {
- "switch.com.|A": {
- "responseBytes": "kosBAAABAAAAAAAABHRlc3QDY29tAAABAAE=",
- "expiry": 1768551010161428066,
- "hasDNSSEC": false,
- "size": 378
- }
- },
- "ttl": 60000000000,
- "maxSize": 10000,
- "cacheMode": "file",
- "cacheFilePath": "test_cache4.json"
-}
\ No newline at end of file
diff --git a/test/test_dns_perf.sh b/test/test_dns_perf.sh
deleted file mode 100755
index 9e6023d..0000000
--- a/test/test_dns_perf.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-# DNS性能测试脚本
-SERVER="127.0.0.1"
-DOMAIN="example.com"
-THREADS=10
-QUERIES=1000
-
-# 创建临时文件存储进程ID
-pids=()
-
-# 运行并发查询
-for ((i=1; i<=THREADS; i++)); do
- for ((j=1; j<=$((QUERIES/THREADS)); j++)); do
- dig @$SERVER $DOMAIN A +short > /dev/null &
- pids+=($!)
- done
- echo "线程 $i 已启动,将执行 $((QUERIES/THREADS)) 个查询"
-done
-
-echo "所有查询已启动,等待完成..."
-
-# 等待所有查询完成
-for pid in "${pids[@]}"; do
- wait $pid
-done
-
-echo "所有查询已完成!"
diff --git a/test/test_dns_perf_stress.sh b/test/test_dns_perf_stress.sh
deleted file mode 100755
index f951912..0000000
--- a/test/test_dns_perf_stress.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/bash
-
-# DNS压力测试脚本
-SERVER="127.0.0.1"
-DOMAIN="example.com"
-THREADS=20
-QUERIES=1000
-
-# 创建临时文件存储进程ID
-pids=()
-
-echo "开始DNS压力测试..."
-echo "服务器: $SERVER"
-echo "域名: $DOMAIN"
-echo "线程数: $THREADS"
-echo "总查询数: $QUERIES"
-echo "--------------------------------------"
-
-# 记录开始时间(秒)
-start_time=$SECONDS
-
-# 运行并发查询
-for ((i=1; i<=THREADS; i++)); do
- for ((j=1; j<=$((QUERIES/THREADS)); j++)); do
- dig @$SERVER $DOMAIN A +short > /dev/null &
- pids+=($!)
- done
- # 每启动5个线程暂停一下,避免系统资源瞬间耗尽
- if (( $i % 5 == 0 )); then
- echo "线程 $i 已启动,已完成 $i/$THREADS 个线程..."
- sleep 0.5
- fi
-done
-
-echo "所有 $THREADS 个线程已启动,共执行 $QUERIES 个查询,等待完成..."
-
-# 等待所有查询完成
-for pid in "${pids[@]}"; do
- wait $pid
-done
-
-# 计算执行时间
-elapsed=$((SECONDS - start_time))
-
-# 计算QPS(每秒查询数)
-if [ $elapsed -eq 0 ]; then
- elapsed=1 # 避免除以零
-fi
-qps=$((QUERIES / elapsed))
-
-echo "--------------------------------------"
-echo "所有查询已完成!"
-echo "执行时间: $elapsed 秒"
-echo "QPS: $qps 次/秒"
-echo "--------------------------------------"
diff --git a/test/test_optimization.sh b/test/test_optimization.sh
deleted file mode 100755
index 7724944..0000000
--- a/test/test_optimization.sh
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/bin/bash
-
-# DNS性能优化验证脚本
-SERVER="127.0.0.1"
-DOMAIN="example.com"
-THREADS=50
-QUERIES=5000
-
-echo "========================================="
-echo "DNS服务器多线程优化验证测试"
-echo "========================================="
-echo "服务器: $SERVER"
-echo "域名: $DOMAIN"
-echo "线程数: $THREADS"
-echo "总查询数: $QUERIES"
-echo "========================================="
-
-echo ""
-echo "启动DNS服务器..."
-./dns-server > /dev/null 2>&1 &
-DNS_PID=$!
-echo "DNS服务器PID: $DNS_PID"
-
-sleep 5
-
-echo ""
-echo "========================================="
-echo "开始压力测试前系统状态:"
-echo "========================================="
-echo "CPU使用率:"
-top -b -n 1 | grep "Cpu(s)" | awk '{print " " $2 "% 用户, " $4 "% 系统, " $8 "% 空闲"}'
-echo ""
-echo "内存使用情况:"
-free -h | grep -E "Mem|Swap" | awk '{print " " $1 ": " $3 "/" $2 " (" $3/$2*100 "% 使用)"}'
-echo ""
-echo "DNS服务器进程资源使用:"
-ps -p $DNS_PID -o %cpu,%mem,cmd --no-headers | awk '{print " CPU: " $1 "%, 内存: " $2 "%"}'
-
-echo ""
-echo "========================================="
-echo "开始压力测试..."
-echo "========================================="
-
-start_time=$(date +%s.%N)
-
-pids=()
-for ((i=1; i<=THREADS; i++)); do
- for ((j=1; j<=$((QUERIES/THREADS)); j++)); do
- dig @$SERVER $DOMAIN A +short > /dev/null 2>&1 &
- pids+=($!)
- done
- if (( $i % 10 == 0 )); then
- echo "已启动 $i/$THREADS 个线程..."
- sleep 0.2
- fi
-done
-
-echo "所有线程已启动,等待完成..."
-
-for pid in "${pids[@]}"; do
- wait $pid 2>/dev/null
-done
-
-end_time=$(date +%s.%N)
-elapsed=$(echo "$end_time - $start_time" | bc)
-qps=$(echo "$QUERIES / $elapsed" | bc)
-
-echo ""
-echo "========================================="
-echo "压力测试后系统状态:"
-echo "========================================="
-echo "CPU使用率:"
-top -b -n 1 | grep "Cpu(s)" | awk '{print " " $2 "% 用户, " $4 "% 系统, " $8 "% 空闲"}'
-echo ""
-echo "内存使用情况:"
-free -h | grep -E "Mem|Swap" | awk '{print " " $1 ": " $3 "/" $2 " (" $3/$2*100 "% 使用)"}'
-echo ""
-echo "DNS服务器进程资源使用:"
-ps -p $DNS_PID -o %cpu,%mem,cmd --no-headers 2>/dev/null | awk '{print " CPU: " $1 "%, 内存: " $2 "%"}'
-
-echo ""
-echo "========================================="
-echo "测试结果:"
-echo "========================================="
-echo "总查询数: $QUERIES"
-echo "执行时间: $elapsed 秒"
-echo "QPS: $qps 次/秒"
-echo "========================================="
-
-echo ""
-echo "停止DNS服务器..."
-kill $DNS_PID 2>/dev/null
-sleep 2
-
-echo ""
-echo "测试完成!"
diff --git a/test/test_optimization_v2.sh b/test/test_optimization_v2.sh
deleted file mode 100755
index a153af9..0000000
--- a/test/test_optimization_v2.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-
-# DNS性能优化验证脚本(使用并发查询)
-SERVER="127.0.0.1"
-DOMAIN="example.com"
-CONCURRENCY=100
-QUERIES=10000
-
-echo "========================================="
-echo "DNS服务器多线程优化验证测试"
-echo "========================================="
-echo "服务器: $SERVER"
-echo "域名: $DOMAIN"
-echo "并发数: $CONCURRENCY"
-echo "总查询数: $QUERIES"
-echo "========================================="
-
-echo ""
-echo "启动DNS服务器..."
-./dns-server > /dev/null 2>&1 &
-DNS_PID=$!
-echo "DNS服务器PID: $DNS_PID"
-
-sleep 5
-
-echo ""
-echo "========================================="
-echo "开始压力测试前系统状态:"
-echo "========================================="
-echo "CPU使用率:"
-top -b -n 1 | grep "Cpu(s)" | awk '{print " " $2 "% 用户, " $4 "% 系统, " $8 "% 空闲"}'
-echo ""
-echo "内存使用情况:"
-free -h | grep -E "Mem|Swap" | awk '{print " " $1 ": " $3 "/" $2 " (" $3/$2*100 "% 使用)"}'
-echo ""
-echo "DNS服务器进程资源使用:"
-ps -p $DNS_PID -o %cpu,%mem,cmd --no-headers | awk '{print " CPU: " $1 "%, 内存: " $2 "%"}'
-
-echo ""
-echo "========================================="
-echo "开始压力测试..."
-echo "========================================="
-
-start_time=$(date +%s.%N)
-
-for ((i=1; i<=$QUERIES; i++)); do
- dig @$SERVER $DOMAIN A +short > /dev/null 2>&1 &
-
- if (( $i % $CONCURRENCY == 0 )); then
- wait
- fi
-done
-
-wait
-
-end_time=$(date +%s.%N)
-elapsed=$(echo "$end_time - $start_time" | bc)
-qps=$(echo "scale=2; $QUERIES / $elapsed" | bc)
-
-echo ""
-echo "========================================="
-echo "压力测试后系统状态:"
-echo "========================================="
-echo "CPU使用率:"
-top -b -n 1 | grep "Cpu(s)" | awk '{print " " $2 "% 用户, " $4 "% 系统, " $8 "% 空闲"}'
-echo ""
-echo "内存使用情况:"
-free -h | grep -E "Mem|Swap" | awk '{print " " $1 ": " $3 "/" $2 " (" $3/$2*100 "% 使用)"}'
-echo ""
-echo "DNS服务器进程资源使用:"
-ps -p $DNS_PID -o %cpu,%mem,cmd --no-headers 2>/dev/null | awk '{print " CPU: " $1 "%, 内存: " $2 "%"}'
-
-echo ""
-echo "========================================="
-echo "测试结果:"
-echo "========================================="
-echo "总查询数: $QUERIES"
-echo "执行时间: $elapsed 秒"
-echo "QPS: $qps 次/秒"
-echo "========================================="
-
-echo ""
-echo "停止DNS服务器..."
-kill $DNS_PID 2>/dev/null
-sleep 2
-
-echo ""
-echo "测试完成!"
diff --git a/test/test_optimization_v3.sh b/test/test_optimization_v3.sh
deleted file mode 100644
index eaf8b3b..0000000
--- a/test/test_optimization_v3.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-
-# DNS性能优化验证脚本(简化版)
-SERVER="127.0.0.1"
-DOMAIN="example.com"
-CONCURRENCY=50
-QUERIES=2000
-
-echo "========================================="
-echo "DNS服务器多线程优化验证测试"
-echo "========================================="
-echo "服务器: $SERVER"
-echo "域名: $DOMAIN"
-echo "并发数: $CONCURRENCY"
-echo "总查询数: $QUERIES"
-echo "========================================="
-
-echo ""
-echo "启动DNS服务器..."
-./dns-server > /dev/null 2>&1 &
-DNS_PID=$!
-echo "DNS服务器PID: $DNS_PID"
-
-sleep 5
-
-echo ""
-echo "========================================="
-echo "开始压力测试前系统状态:"
-echo "========================================="
-echo "CPU使用率:"
-top -b -n 1 | grep "Cpu(s)" | awk '{print " " $2 "% 用户, " $4 "% 系统, " $8 "% 空闲"}'
-echo ""
-echo "内存使用情况:"
-free -h | grep -E "Mem|Swap" | awk '{print " " $1 ": " $3 "/" $2 " (" $3/$2*100 "% 使用)"}'
-echo ""
-echo "DNS服务器进程资源使用:"
-ps -p $DNS_PID -o %cpu,%mem,cmd --no-headers | awk '{print " CPU: " $1 "%, 内存: " $2 "%"}'
-
-echo ""
-echo "========================================="
-echo "开始压力测试..."
-echo "========================================="
-
-start_time=$(date +%s.%N)
-
-for ((i=1; i<=$QUERIES; i++)); do
- dig @$SERVER $DOMAIN A +short > /dev/null 2>&1 &
-
- if (( $i % $CONCURRENCY == 0 )); then
- wait
- fi
-done
-
-wait
-
-end_time=$(date +%s.%N)
-elapsed=$(echo "$end_time - $start_time" | bc)
-qps=$(echo "scale=2; $QUERIES / $elapsed" | bc)
-
-echo ""
-echo "========================================="
-echo "压力测试后系统状态:"
-echo "========================================="
-echo "CPU使用率:"
-top -b -n 1 | grep "Cpu(s)" | awk '{print " " $2 "% 用户, " $4 "% 系统, " $8 "% 空闲"}'
-echo ""
-echo "内存使用情况:"
-free -h | grep -E "Mem|Swap" | awk '{print " " $1 ": " $3 "/" $2 " (" $3/$2*100 "% 使用)"}'
-echo ""
-echo "DNS服务器进程资源使用:"
-ps -p $DNS_PID -o %cpu,%mem,cmd --no-headers 2>/dev/null | awk '{print " CPU: " $1 "%, 内存: " $2 "%"}'
-
-echo ""
-echo "========================================="
-echo "测试结果:"
-echo "========================================="
-echo "总查询数: $QUERIES"
-echo "执行时间: $elapsed 秒"
-echo "QPS: $qps 次/秒"
-echo "========================================="
-
-echo ""
-echo "停止DNS服务器..."
-kill $DNS_PID 2>/dev/null
-sleep 2
-
-echo ""
-echo "测试完成!"