[{"data":1,"prerenderedAt":2904},["ShallowReactive",2],{"navLinks":3,"sidebar_docs_navigation_\u002Fdocs\u002Fshield-base":64,"navigation":138,"navLinks_footer":802,"\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol_page":815,"\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol_surround":1978,"\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol":1981},{"id":4,"extension":5,"links":6,"meta":61,"stem":62,"__hash__":63},"navigationMenu\u002Fnavigation.json","json",[7,52,57],{"nested":8,"label":9,"icon":10,"to":11,"children":12},true,"Docs","i-lucide-book-open","\u002Fdocs\u002Fgetting-started",[13,19,26,32,39,45],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},"Getting Started","i-lucide-rocket","An introduction to help you understand the core components.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fdocshub","Start Here",{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},"Auth H3 Client","i-lucide-key-round","\u002Fdocs\u002Fauth-h3client","Seamlessly enforce OAuth 2.0 authentication and session management integrated directly as the client of the IAM module.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth-h3client","Core",{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},"IAM","i-lucide-shield-check","\u002Fdocs\u002Fiam","Identity and Access Management featuring granular roles, permissions, and security policies.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth",{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},"Bot Detection","i-lucide-cpu","\u002Fdocs\u002Fbot-detection","Advanced behavioral analysis and request fingerprinting to stop malicious automated traffic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fbot-detector","Security",{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},"Shield Base","i-lucide-database-zap","\u002Fdocs\u002Fshield-base","CLI and programmatic toolkit for compiling offline-ready IP intelligence databases from BGP, GeoIP, Tor, FireHOL, and other public threat feeds.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fshield-base-cli",{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},"Utils","i-lucide-wrench","\u002Fdocs\u002Futils","A standard library of highly optimized helpers for formatting, validation, and core logic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Futils","Library",{"nested":53,"label":54,"icon":55,"to":56},false,"Blog","i-lucide-pen-line","\u002Fblog",{"nested":53,"label":58,"icon":59,"to":60},"Website","lucide:app-window-mac","https:\u002F\u002Friavzon.com",{},"navigation","gkaQ0xRGxSLrLyM3kttLe0oBwkrR1EBjlepF8LSbwF8",[65],{"title":9,"path":66,"stem":67,"children":68,"page":53},"\u002Fdocs","docs",[69],{"title":40,"path":42,"stem":70,"children":71},"docs\u002Fshield-base\u002Findex",[72,73,76,80,122,126,130,134],{"title":40,"path":42,"stem":70},{"title":14,"path":74,"stem":75},"\u002Fdocs\u002Fshield-base\u002Fgetting-started","docs\u002Fshield-base\u002F00.getting-started",{"title":77,"path":78,"stem":79},"CLI Reference","\u002Fdocs\u002Fshield-base\u002Fcli","docs\u002Fshield-base\u002F01.cli",{"title":81,"path":82,"stem":83,"children":84},"Data Sources","\u002Fdocs\u002Fshield-base\u002Fdata-sources","docs\u002Fshield-base\u002F02.data-sources\u002Findex",[85,86,90,94,98,102,106,110,114,118],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89},"BGP \u002F ASN","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fbgp","docs\u002Fshield-base\u002F02.data-sources\u002Fbgp",{"title":91,"path":92,"stem":93},"City Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity","docs\u002Fshield-base\u002F02.data-sources\u002Fcity",{"title":95,"path":96,"stem":97},"Country Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcountry","docs\u002Fshield-base\u002F02.data-sources\u002Fcountry",{"title":99,"path":100,"stem":101},"Verified Crawlers","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcrawlers","docs\u002Fshield-base\u002F02.data-sources\u002Fcrawlers",{"title":103,"path":104,"stem":105},"Disposable Emails","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Femail","docs\u002Fshield-base\u002F02.data-sources\u002Femail",{"title":107,"path":108,"stem":109},"FireHOL Threat Intelligence","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol","docs\u002Fshield-base\u002F02.data-sources\u002Ffirehol",{"title":111,"path":112,"stem":113},"Proxy Detection","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fproxy","docs\u002Fshield-base\u002F02.data-sources\u002Fproxy",{"title":115,"path":116,"stem":117},"Tor Nodes","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ftor","docs\u002Fshield-base\u002F02.data-sources\u002Ftor",{"title":119,"path":120,"stem":121},"Suspicious User-Agents","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fuseragent","docs\u002Fshield-base\u002F02.data-sources\u002Fuseragent",{"title":123,"path":124,"stem":125},"Programmatic Usage","\u002Fdocs\u002Fshield-base\u002Fusage","docs\u002Fshield-base\u002F03.usage",{"title":127,"path":128,"stem":129},"Custom Data Sources","\u002Fdocs\u002Fshield-base\u002Fcustom-data-sources","docs\u002Fshield-base\u002F04.custom-data-sources",{"title":131,"path":132,"stem":133},"TypeScript Types","\u002Fdocs\u002Fshield-base\u002Ftypes","docs\u002Fshield-base\u002F05.types",{"title":135,"path":136,"stem":137},"API Reference","\u002Fdocs\u002Fshield-base\u002Fapi","docs\u002Fshield-base\u002F06.api",[139],{"title":9,"path":66,"stem":67,"children":140,"page":53},[141,288,405,410,588,609],{"title":20,"path":22,"stem":142,"children":143},"docs\u002Fauth-h3client\u002Findex",[144,145,154,191,217,239,242,263,267],{"title":20,"path":22,"stem":142},{"title":14,"path":146,"stem":147,"children":148},"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started","docs\u002Fauth-h3client\u002F00.getting-started\u002Findex",[149,150],{"title":14,"path":146,"stem":147},{"title":151,"path":152,"stem":153},"Nuxt Module","\u002Fdocs\u002Fauth-h3client\u002Fgetting-started\u002Fnuxt","docs\u002Fauth-h3client\u002F00.getting-started\u002F00.nuxt",{"title":155,"path":156,"stem":157,"children":158},"Essentials","\u002Fdocs\u002Fauth-h3client\u002Fessentials","docs\u002Fauth-h3client\u002F01.essentials\u002Findex",[159,160,164,168,172,176,180,183,187],{"title":155,"path":156,"stem":157},{"title":161,"path":162,"stem":163},"Session Management","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fsession","docs\u002Fauth-h3client\u002F01.essentials\u002F00.session",{"title":165,"path":166,"stem":167},"Route Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Froute-protection","docs\u002Fauth-h3client\u002F01.essentials\u002F01.route-protection",{"title":169,"path":170,"stem":171},"CSRF Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcsrf","docs\u002Fauth-h3client\u002F01.essentials\u002F02.csrf",{"title":173,"path":174,"stem":175},"Auth Flows","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fauth-flows","docs\u002Fauth-h3client\u002F01.essentials\u002F03.auth-flows",{"title":177,"path":178,"stem":179},"OAuth and OIDC","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Foauth","docs\u002Fauth-h3client\u002F01.essentials\u002F04.oauth",{"title":33,"path":181,"stem":182},"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fbot-detection","docs\u002Fauth-h3client\u002F01.essentials\u002F05.bot-detection",{"title":184,"path":185,"stem":186},"Cookies","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies","docs\u002Fauth-h3client\u002F01.essentials\u002F06.cookies",{"title":188,"path":189,"stem":190},"Logging","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Flogging","docs\u002Fauth-h3client\u002F01.essentials\u002F07.logging",{"title":192,"path":193,"stem":194,"children":195},"MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa","docs\u002Fauth-h3client\u002F02.mfa\u002Findex",[196,197,201,205,209,213],{"title":192,"path":193,"stem":194},{"title":198,"path":199,"stem":200},"Built-in MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fbuilt-in-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F01.built-in-flow",{"title":202,"path":203,"stem":204},"Password Reset","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fpassword-reset","docs\u002Fauth-h3client\u002F02.mfa\u002F02.password-reset",{"title":206,"path":207,"stem":208},"Email Change","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change","docs\u002Fauth-h3client\u002F02.mfa\u002F03.email-change",{"title":210,"path":211,"stem":212},"Custom MFA Flow","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fcustom-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F04.custom-flow",{"title":214,"path":215,"stem":216},"Client-Side MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side","docs\u002Fauth-h3client\u002F02.mfa\u002F05.client-side",{"title":218,"path":219,"stem":220,"children":221},"Client-side","\u002Fdocs\u002Fauth-h3client\u002Fclient","docs\u002Fauth-h3client\u002F03.client\u002Findex",[222,223,227,231,235],{"title":218,"path":219,"stem":220},{"title":224,"path":225,"stem":226},"useAuthData","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-auth-data","docs\u002Fauth-h3client\u002F03.client\u002F00.use-auth-data",{"title":228,"path":229,"stem":230},"useMagicLink","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-magic-link","docs\u002Fauth-h3client\u002F03.client\u002F01.use-magic-link",{"title":232,"path":233,"stem":234},"executeRequest","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fexecute-request","docs\u002Fauth-h3client\u002F03.client\u002F02.execute-request",{"title":236,"path":237,"stem":238},"getCsrfToken","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fget-csrf-token","docs\u002Fauth-h3client\u002F03.client\u002F03.get-csrf-token",{"title":38,"path":240,"stem":241},"\u002Fdocs\u002Fauth-h3client\u002Fsecurity","docs\u002Fauth-h3client\u002F04.security",{"title":243,"path":244,"stem":245,"children":246,"page":53},"Guides","\u002Fdocs\u002Fauth-h3client\u002Fguides","docs\u002Fauth-h3client\u002F05.guides",[247,251,255,259],{"title":248,"path":249,"stem":250},"H3 and Nitro Setup","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fh3-nitro","docs\u002Fauth-h3client\u002F05.guides\u002F00.h3-nitro",{"title":252,"path":253,"stem":254},"HMAC Inter-service Auth","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fhmac","docs\u002Fauth-h3client\u002F05.guides\u002Fhmac",{"title":256,"path":257,"stem":258},"Image Upload","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fimage-upload","docs\u002Fauth-h3client\u002F05.guides\u002Fimage-upload",{"title":260,"path":261,"stem":262},"mTLS Configuration","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fmtls","docs\u002Fauth-h3client\u002F05.guides\u002Fmtls",{"title":264,"path":265,"stem":266},"Configuration","\u002Fdocs\u002Fauth-h3client\u002Fconfiguration","docs\u002Fauth-h3client\u002F06.configuration",{"title":135,"path":268,"stem":269,"children":270},"\u002Fdocs\u002Fauth-h3client\u002Fapi","docs\u002Fauth-h3client\u002F07.api\u002Findex",[271,272,276,280,284],{"title":135,"path":268,"stem":269},{"title":273,"path":274,"stem":275},"Routes Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcontrollers","docs\u002Fauth-h3client\u002F07.api\u002F00.controllers",{"title":277,"path":278,"stem":279},"Middleware Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fmiddleware","docs\u002Fauth-h3client\u002F07.api\u002F01.middleware",{"title":281,"path":282,"stem":283},"Client-side Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcomposables","docs\u002Fauth-h3client\u002F07.api\u002F02.composables",{"title":285,"path":286,"stem":287},"Utilities","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Futilities","docs\u002Fauth-h3client\u002F07.api\u002F03.utilities",{"title":289,"path":35,"stem":290,"children":291},"Bot Detector","docs\u002Fbot-detection\u002Findex",[292,293,296,300,303,322,396,399,402],{"title":289,"path":35,"stem":290},{"title":14,"path":294,"stem":295},"\u002Fdocs\u002Fbot-detection\u002Fgetting-started","docs\u002Fbot-detection\u002F00.getting-started",{"title":297,"path":298,"stem":299},"CLI","\u002Fdocs\u002Fbot-detection\u002Fcli","docs\u002Fbot-detection\u002F01.cli",{"title":81,"path":301,"stem":302},"\u002Fdocs\u002Fbot-detection\u002Fdata-sources","docs\u002Fbot-detection\u002F02.data-sources",{"title":243,"path":304,"stem":305,"children":306,"page":53},"\u002Fdocs\u002Fbot-detection\u002Fguides","docs\u002Fbot-detection\u002F03.guides",[307,311,315,318],{"title":308,"path":309,"stem":310},"Custom Checkers","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fcustom","docs\u002Fbot-detection\u002F03.guides\u002FCUSTOM",{"title":312,"path":313,"stem":314},"Scheduling Database Generation","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fgenerate","docs\u002Fbot-detection\u002F03.guides\u002FGENERATE",{"title":188,"path":316,"stem":317},"\u002Fdocs\u002Fbot-detection\u002Fguides\u002Flogging","docs\u002Fbot-detection\u002F03.guides\u002FLOGGING",{"title":319,"path":320,"stem":321},"Score Modes and Reputation Healing","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fscore","docs\u002Fbot-detection\u002F03.guides\u002FSCORE",{"title":323,"path":324,"stem":325,"children":326},"Checkers","\u002Fdocs\u002Fbot-detection\u002Fcheckers","docs\u002Fbot-detection\u002F04.checkers\u002Findex",[327,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384,388,392],{"title":323,"path":324,"stem":325},{"title":329,"path":330,"stem":331},"IP Validation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fip-validation","docs\u002Fbot-detection\u002F04.checkers\u002F01.ip-validation",{"title":333,"path":334,"stem":335},"Good \u002F Bad Bot Verification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgood-bots","docs\u002Fbot-detection\u002F04.checkers\u002F02.good-bots",{"title":337,"path":338,"stem":339},"Browser & Device Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbrowser-device","docs\u002Fbot-detection\u002F04.checkers\u002F03.browser-device",{"title":341,"path":342,"stem":343},"Locale Map","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Flocale-map","docs\u002Fbot-detection\u002F04.checkers\u002F04.locale-map",{"title":345,"path":346,"stem":347},"Known Threats","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-threats","docs\u002Fbot-detection\u002F04.checkers\u002F05.known-threats",{"title":349,"path":350,"stem":351},"ASN Classification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fasn-classification","docs\u002Fbot-detection\u002F04.checkers\u002F06.asn-classification",{"title":353,"path":354,"stem":355},"Tor Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftor-analysis","docs\u002Fbot-detection\u002F04.checkers\u002F07.tor-analysis",{"title":357,"path":358,"stem":359},"Timezone Consistency","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftimezone-consistency","docs\u002Fbot-detection\u002F04.checkers\u002F08.timezone-consistency",{"title":361,"path":362,"stem":363},"Honeypot","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fhoneypot","docs\u002Fbot-detection\u002F04.checkers\u002F09.honeypot",{"title":365,"path":366,"stem":367},"Known Bad IPs","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ips","docs\u002Fbot-detection\u002F04.checkers\u002F10.known-bad-ips",{"title":369,"path":370,"stem":371},"Behavior Rate","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbehavior-rate","docs\u002Fbot-detection\u002F04.checkers\u002F11.behavior-rate",{"title":373,"path":374,"stem":375},"Proxy \u002F ISP \u002F Cookie","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fproxy-isp-cookies","docs\u002Fbot-detection\u002F04.checkers\u002F12.proxy-isp-cookies",{"title":377,"path":378,"stem":379},"Session Coherence","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fsession-coherence","docs\u002Fbot-detection\u002F04.checkers\u002F13.session-coherence",{"title":381,"path":382,"stem":383},"Velocity Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fvelocity-fingerprint","docs\u002Fbot-detection\u002F04.checkers\u002F14.velocity-fingerprint",{"title":385,"path":386,"stem":387},"UA & Header Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fua-header","docs\u002Fbot-detection\u002F04.checkers\u002F15.ua-header",{"title":389,"path":390,"stem":391},"Geolocation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgeolocation","docs\u002Fbot-detection\u002F04.checkers\u002F16.geolocation",{"title":393,"path":394,"stem":395},"Known Bad User-Agents","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ua","docs\u002Fbot-detection\u002F04.checkers\u002F17.known-bad-ua",{"title":38,"path":397,"stem":398},"\u002Fdocs\u002Fbot-detection\u002Fsecurity","docs\u002Fbot-detection\u002F04.security",{"title":135,"path":400,"stem":401},"\u002Fdocs\u002Fbot-detection\u002Fapi","docs\u002Fbot-detection\u002F05.api",{"title":264,"path":403,"stem":404},"\u002Fdocs\u002Fbot-detection\u002Fconfiguration","docs\u002Fbot-detection\u002F06.configuration",{"title":406,"path":11,"stem":407,"children":408},"Introduction","docs\u002Fgetting-started\u002Findex",[409],{"title":406,"path":11,"stem":407},{"title":27,"path":29,"stem":411,"children":412},"docs\u002Fiam\u002Findex",[413,414,417,552,555,571,574],{"title":27,"path":29,"stem":411},{"title":14,"path":415,"stem":416},"\u002Fdocs\u002Fiam\u002Fgetting-started","docs\u002Fiam\u002F00.getting-started",{"title":155,"path":418,"stem":419,"children":420},"\u002Fdocs\u002Fiam\u002Fessentials","docs\u002Fiam\u002F01.essentials\u002Findex",[421,422,426,430,434,438,442,446,450,454,458,462,465,469,473,477,481,484,488,492,495,499,502],{"title":155,"path":418,"stem":419},{"title":423,"path":424,"stem":425},"Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Ftokens","docs\u002Fiam\u002F01.essentials\u002F00.tokens",{"title":427,"path":428,"stem":429},"Access Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Faccess-tokens","docs\u002Fiam\u002F01.essentials\u002F01.access-tokens",{"title":431,"path":432,"stem":433},"Refresh Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Frefresh-tokens","docs\u002Fiam\u002F01.essentials\u002F02.refresh-tokens",{"title":435,"path":436,"stem":437},"Anomaly Detection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fanomalies","docs\u002Fiam\u002F01.essentials\u002F03.anomalies",{"title":439,"path":440,"stem":441},"Signup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fsignup","docs\u002Fiam\u002F01.essentials\u002F04.signup",{"title":443,"path":444,"stem":445},"Login","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogin","docs\u002Fiam\u002F01.essentials\u002F05.login",{"title":447,"path":448,"stem":449},"Logout","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogout","docs\u002Fiam\u002F01.essentials\u002F06.logout",{"title":451,"path":452,"stem":453},"OAuth","\u002Fdocs\u002Fiam\u002Fessentials\u002Foauth","docs\u002Fiam\u002F01.essentials\u002F07.oauth",{"title":455,"path":456,"stem":457},"Magic Links","\u002Fdocs\u002Fiam\u002Fessentials\u002Fmagic-links","docs\u002Fiam\u002F01.essentials\u002F08.magic-links",{"title":459,"path":460,"stem":461},"Emails","\u002Fdocs\u002Fiam\u002Fessentials\u002Femails","docs\u002Fiam\u002F01.essentials\u002F09.emails",{"title":192,"path":463,"stem":464},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fmfa","docs\u002Fiam\u002F01.essentials\u002F10.mfa",{"title":466,"path":467,"stem":468},"Fingerprinting","\u002Fdocs\u002Fiam\u002Fessentials\u002Ffingerprinting","docs\u002Fiam\u002F01.essentials\u002F11.fingerprinting",{"title":470,"path":471,"stem":472},"Backend for Frontend","\u002Fdocs\u002Fiam\u002Fessentials\u002Fbff","docs\u002Fiam\u002F01.essentials\u002F12.bff",{"title":474,"path":475,"stem":476},"HMAC Authentication","\u002Fdocs\u002Fiam\u002Fessentials\u002Fhmac","docs\u002Fiam\u002F01.essentials\u002F13.hmac",{"title":478,"path":479,"stem":480},"XSS Protection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fxss","docs\u002Fiam\u002F01.essentials\u002F14.xss",{"title":188,"path":482,"stem":483},"\u002Fdocs\u002Fiam\u002Fessentials\u002Flogging","docs\u002Fiam\u002F01.essentials\u002F15.logging",{"title":485,"path":486,"stem":487},"Rate Limiting","\u002Fdocs\u002Fiam\u002Fessentials\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F16.rate-limiting",{"title":489,"path":490,"stem":491},"Database","\u002Fdocs\u002Fiam\u002Fessentials\u002Fdatabase","docs\u002Fiam\u002F01.essentials\u002F17.database",{"title":184,"path":493,"stem":494},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fcookies","docs\u002Fiam\u002F01.essentials\u002F18.cookies",{"title":496,"path":497,"stem":498},"Service Startup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fservice","docs\u002Fiam\u002F01.essentials\u002F19.service",{"title":202,"path":500,"stem":501},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fpassword-reset","docs\u002Fiam\u002F01.essentials\u002F20.password-reset",{"title":503,"path":504,"stem":505,"children":506},"API Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi","docs\u002Fiam\u002F01.essentials\u002F21.api\u002Findex",[507,508,512,516,546,549],{"title":503,"path":504,"stem":505},{"title":509,"path":510,"stem":511},"Creating Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fcreation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F00.creation",{"title":513,"path":514,"stem":515},"Verifying Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fverification","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F01.verification",{"title":517,"path":518,"stem":519,"children":520},"Manage Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002Findex",[521,522,526,530,534,538,542],{"title":517,"path":518,"stem":519},{"title":523,"path":524,"stem":525},"Privileges","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fprivilege","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F00.privilege",{"title":527,"path":528,"stem":529},"Revocation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frevocation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F01.revocation",{"title":531,"path":532,"stem":533},"Rotation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frotation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F02.rotation",{"title":535,"path":536,"stem":537},"IP Restriction","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fip-updates","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F03.ip-updates",{"title":539,"path":540,"stem":541},"Metadata","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fmetadata","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F04.metadata",{"title":543,"path":544,"stem":545},"Token Listing","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Flist","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F05.list",{"title":485,"path":547,"stem":548},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F03.rate-limiting",{"title":38,"path":550,"stem":551},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fsecurity","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F04.security",{"title":38,"path":553,"stem":554},"\u002Fdocs\u002Fiam\u002Fsecurity","docs\u002Fiam\u002F02.security",{"title":243,"path":556,"stem":557,"children":558,"page":53},"\u002Fdocs\u002Fiam\u002Fguides","docs\u002Fiam\u002F03.guides",[559,563,567],{"title":560,"path":561,"stem":562},"Deployment","\u002Fdocs\u002Fiam\u002Fguides\u002Fdeployment","docs\u002Fiam\u002F03.guides\u002Fdeployment",{"title":564,"path":565,"stem":566},"Operation Scripts","\u002Fdocs\u002Fiam\u002Fguides\u002Foperation-scripts","docs\u002Fiam\u002F03.guides\u002Foperation-scripts",{"title":568,"path":569,"stem":570},"Role-Based Access Control","\u002Fdocs\u002Fiam\u002Fguides\u002Frbac","docs\u002Fiam\u002F03.guides\u002Frbac",{"title":264,"path":572,"stem":573},"\u002Fdocs\u002Fiam\u002Fconfiguration","docs\u002Fiam\u002F04.configuration",{"title":575,"path":576,"stem":577,"children":578,"page":53},"Api","\u002Fdocs\u002Fiam\u002Fapi","docs\u002Fiam\u002F05.API",[579,582,585],{"title":135,"path":580,"stem":581},"\u002Fdocs\u002Fiam\u002Fapi\u002Fapi","docs\u002Fiam\u002F05.API\u002F00.api",{"title":277,"path":583,"stem":584},"\u002Fdocs\u002Fiam\u002Fapi\u002Fmiddlewares","docs\u002Fiam\u002F05.API\u002F02.middlewares",{"title":273,"path":586,"stem":587},"\u002Fdocs\u002Fiam\u002Fapi\u002Froutes","docs\u002Fiam\u002F05.API\u002F03.routes",{"title":40,"path":42,"stem":70,"children":589},[590,591,592,593,605,606,607,608],{"title":40,"path":42,"stem":70},{"title":14,"path":74,"stem":75},{"title":77,"path":78,"stem":79},{"title":81,"path":82,"stem":83,"children":594},[595,596,597,598,599,600,601,602,603,604],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89},{"title":91,"path":92,"stem":93},{"title":95,"path":96,"stem":97},{"title":99,"path":100,"stem":101},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125},{"title":127,"path":128,"stem":129},{"title":131,"path":132,"stem":133},{"title":135,"path":136,"stem":137},{"title":285,"path":48,"stem":610,"children":611},"docs\u002Futils\u002Findex",[612,613,630,663,760],{"title":285,"path":48,"stem":610},{"title":614,"path":615,"stem":616,"children":617,"page":53},"Eslint","\u002Fdocs\u002Futils\u002Feslint","docs\u002Futils\u002Feslint",[618,622,626],{"title":619,"path":620,"stem":621},"React Config","\u002Fdocs\u002Futils\u002Feslint\u002Freact","docs\u002Futils\u002Feslint\u002Freact",{"title":623,"path":624,"stem":625},"TypeScript Config","\u002Fdocs\u002Futils\u002Feslint\u002Ftypescript","docs\u002Futils\u002Feslint\u002Ftypescript",{"title":627,"path":628,"stem":629},"Vue Config","\u002Fdocs\u002Futils\u002Feslint\u002Fvue","docs\u002Futils\u002Feslint\u002Fvue",{"title":631,"path":632,"stem":633,"children":634,"page":53},"Server","\u002Fdocs\u002Futils\u002Fserver","docs\u002Futils\u002Fserver",[635,639,643,647,651,655,659],{"title":636,"path":637,"stem":638},"Encryption","\u002Fdocs\u002Futils\u002Fserver\u002Fencryption","docs\u002Futils\u002Fserver\u002Fencryption",{"title":640,"path":641,"stem":642},"Path Resolver","\u002Fdocs\u002Futils\u002Fserver\u002Fpathresolver","docs\u002Futils\u002Fserver\u002FpathResolver",{"title":644,"path":645,"stem":646},"File Replacements","\u002Fdocs\u002Futils\u002Fserver\u002Freplace","docs\u002Futils\u002Fserver\u002Freplace",{"title":648,"path":649,"stem":650},"run","\u002Fdocs\u002Futils\u002Fserver\u002Frun","docs\u002Futils\u002Fserver\u002Frun",{"title":652,"path":653,"stem":654},"scheduleTask","\u002Fdocs\u002Futils\u002Fserver\u002Fscheduletask","docs\u002Futils\u002Fserver\u002FscheduleTask",{"title":656,"path":657,"stem":658},"spawnRun","\u002Fdocs\u002Futils\u002Fserver\u002Fspawnrun","docs\u002Futils\u002Fserver\u002FspawnRun",{"title":660,"path":661,"stem":662},"uploadCsv","\u002Fdocs\u002Futils\u002Fserver\u002Fuploadcsv","docs\u002Futils\u002Fserver\u002FuploadCsv",{"title":664,"path":665,"stem":666,"children":667,"page":53},"Shared","\u002Fdocs\u002Futils\u002Fshared","docs\u002Futils\u002Fshared",[668,672,676,680,684,688,692,696,700,704,708,712,716,720,724,728,732,736,740,744,748,752,756],{"title":669,"path":670,"stem":671},"BatchQueue","\u002Fdocs\u002Futils\u002Fshared\u002Fbatchqueue","docs\u002Futils\u002Fshared\u002FbatchQueue",{"title":673,"path":674,"stem":675},"capitalize","\u002Fdocs\u002Futils\u002Fshared\u002Fcapitalize","docs\u002Futils\u002Fshared\u002Fcapitalize",{"title":677,"path":678,"stem":679},"chunkProcess","\u002Fdocs\u002Futils\u002Fshared\u002Fchunkprocess","docs\u002Futils\u002Fshared\u002FchunkProcess",{"title":681,"path":682,"stem":683},"cleanObject","\u002Fdocs\u002Futils\u002Fshared\u002Fcleanobject","docs\u002Futils\u002Fshared\u002FcleanObject",{"title":685,"path":686,"stem":687},"createConfigManager","\u002Fdocs\u002Futils\u002Fshared\u002Fconfigurationdefiner","docs\u002Futils\u002Fshared\u002FconfigurationDefiner",{"title":689,"path":690,"stem":691},"debounce","\u002Fdocs\u002Futils\u002Fshared\u002Fdebounce","docs\u002Futils\u002Fshared\u002Fdebounce",{"title":693,"path":694,"stem":695},"ensureArray","\u002Fdocs\u002Futils\u002Fshared\u002Fensurearray","docs\u002Futils\u002Fshared\u002FensureArray",{"title":697,"path":698,"stem":699},"fetchWithRetry","\u002Fdocs\u002Futils\u002Fshared\u002Ffetchwithretry","docs\u002Futils\u002Fshared\u002FfetchWithRetry",{"title":701,"path":702,"stem":703},"filterEmptyValues","\u002Fdocs\u002Futils\u002Fshared\u002Ffilteremptyvalues","docs\u002Futils\u002Fshared\u002FfilterEmptyValues",{"title":705,"path":706,"stem":707},"findStringsInObject","\u002Fdocs\u002Futils\u002Fshared\u002Ffindobjectvalues","docs\u002Futils\u002Fshared\u002FfindObjectValues",{"title":709,"path":710,"stem":711},"fisherYatesShuffle","\u002Fdocs\u002Futils\u002Fshared\u002Ffisheryatesshuffle","docs\u002Futils\u002Fshared\u002FfisherYatesShuffle",{"title":713,"path":714,"stem":715},"getRandomImage","\u002Fdocs\u002Futils\u002Fshared\u002Fgetrandomimage","docs\u002Futils\u002Fshared\u002FgetRandomImage",{"title":717,"path":718,"stem":719},"isObjectHasValues","\u002Fdocs\u002Futils\u002Fshared\u002Fisobjecthasvalues","docs\u002Futils\u002Fshared\u002FisObjectHasValues",{"title":721,"path":722,"stem":723},"isAsyncOrPromise","\u002Fdocs\u002Futils\u002Fshared\u002Fispromise","docs\u002Futils\u002Fshared\u002FisPromise",{"title":725,"path":726,"stem":727},"MiniCache","\u002Fdocs\u002Futils\u002Fshared\u002Fminicache","docs\u002Futils\u002Fshared\u002FminiCache",{"title":729,"path":730,"stem":731},"parseCookies","\u002Fdocs\u002Futils\u002Fshared\u002Fparserawcookies","docs\u002Futils\u002Fshared\u002FparseRawCookies",{"title":733,"path":734,"stem":735},"safeAction","\u002Fdocs\u002Futils\u002Fshared\u002Fpromiselocker","docs\u002Futils\u002Fshared\u002FpromiseLocker",{"title":737,"path":738,"stem":739},"Random","\u002Fdocs\u002Futils\u002Fshared\u002Frandom","docs\u002Futils\u002Fshared\u002Frandom",{"title":741,"path":742,"stem":743},"range","\u002Fdocs\u002Futils\u002Fshared\u002Frange","docs\u002Futils\u002Fshared\u002Frange",{"title":745,"path":746,"stem":747},"rateLimiters","\u002Fdocs\u002Futils\u002Fshared\u002Fratelimiters","docs\u002Futils\u002Fshared\u002FrateLimiters",{"title":749,"path":750,"stem":751},"safeObjectMerge","\u002Fdocs\u002Futils\u002Fshared\u002Fsafemerge","docs\u002Futils\u002Fshared\u002FsafeMerge",{"title":753,"path":754,"stem":755},"textTruncation","\u002Fdocs\u002Futils\u002Fshared\u002Ftexttruncation","docs\u002Futils\u002Fshared\u002FtextTruncation",{"title":757,"path":758,"stem":759},"validateZodSchema","\u002Fdocs\u002Futils\u002Fshared\u002Fvalidatezodschema","docs\u002Futils\u002Fshared\u002FvalidateZodSchema",{"title":761,"path":762,"stem":763,"children":764},"Utility Types","\u002Fdocs\u002Futils\u002Ftypes","docs\u002Futils\u002Ftypes\u002Findex",[765,766,770,774,778,782,786,790,794,798],{"title":761,"path":762,"stem":763},{"title":767,"path":768,"stem":769},"Brand","\u002Fdocs\u002Futils\u002Ftypes\u002Fbrand","docs\u002Futils\u002Ftypes\u002FBrand",{"title":771,"path":772,"stem":773},"DeepPartial","\u002Fdocs\u002Futils\u002Ftypes\u002Fdeeppartial","docs\u002Futils\u002Ftypes\u002FDeepPartial",{"title":775,"path":776,"stem":777},"Merge","\u002Fdocs\u002Futils\u002Ftypes\u002Fmerge","docs\u002Futils\u002Ftypes\u002FMerge",{"title":779,"path":780,"stem":781},"NonNullable","\u002Fdocs\u002Futils\u002Ftypes\u002Fnonnullable","docs\u002Futils\u002Ftypes\u002FNonNullable",{"title":783,"path":784,"stem":785},"Prettify","\u002Fdocs\u002Futils\u002Ftypes\u002Fprettify","docs\u002Futils\u002Ftypes\u002FPrettify",{"title":787,"path":788,"stem":789},"PromiseType","\u002Fdocs\u002Futils\u002Ftypes\u002Fpromisetype","docs\u002Futils\u002Ftypes\u002FPromiseType",{"title":791,"path":792,"stem":793},"RequireKeys","\u002Fdocs\u002Futils\u002Ftypes\u002Frequirekeys","docs\u002Futils\u002Ftypes\u002FRequireKeys",{"title":795,"path":796,"stem":797},"StandardResponse","\u002Fdocs\u002Futils\u002Ftypes\u002Fstandardresponse","docs\u002Futils\u002Ftypes\u002FStandardResponse",{"title":799,"path":800,"stem":801},"ValueOf","\u002Fdocs\u002Futils\u002Ftypes\u002Fvalueof","docs\u002Futils\u002Ftypes\u002FValueOf",{"id":4,"extension":5,"links":803,"meta":814,"stem":62,"__hash__":63},[804,812,813],{"nested":8,"label":9,"icon":10,"to":11,"children":805},[806,807,808,809,810,811],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},{"nested":53,"label":54,"icon":55,"to":56},{"nested":53,"label":58,"icon":59,"to":60},{},{"id":816,"title":107,"body":817,"description":1970,"extension":1971,"icon":1972,"meta":1973,"module":1974,"navigation":8,"path":108,"rawbody":1975,"seo":1976,"stem":109,"__hash__":1977},"docs\u002Fdocs\u002Fshield-base\u002F02.data-sources\u002Ffirehol.md",{"type":818,"value":819,"toc":1963},"minimark",[820,832,856,859,864,962,973,983,985,988,1071,1073,1077,1083,1424,1426,1430,1433,1489,1491,1495,1585,1949,1959],[821,822,823,824,831],"p",{},"The FireHOL source fetches IPv4 blocklists from the ",[825,826,830],"a",{"href":827,"rel":828},"https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets",[829],"nofollow","firehol\u002Fblocklist-ipsets"," repository and compiles each selected level into a separate MMDB database. Each database is named after its source level.",[821,833,834,838,839,843,844,843,847,843,850,843,853],{},[835,836,837],"strong",{},"Output files:"," ",[840,841,842],"code",{},"firehol_l1.mmdb",", ",[840,845,846],{},"firehol_l2.mmdb",[840,848,849],{},"firehol_l3.mmdb",[840,851,852],{},"firehol_l4.mmdb",[840,854,855],{},"firehol_anonymous.mmdb",[857,858],"hr",{},[860,861,863],"h2",{"id":862},"threat-levels","Threat Levels",[865,866,867,883],"table",{},[868,869,870],"thead",{},[871,872,873,877,880],"tr",{},[874,875,876],"th",{},"Level",[874,878,879],{},"Description",[874,881,882],{},"Flag",[884,885,886,902,917,932,947],"tbody",{},[871,887,888,894,897],{},[889,890,891],"td",{},[835,892,893],{},"Level 1",[889,895,896],{},"Maximum protection, minimum false positives.",[889,898,899],{},[840,900,901],{},"--l1",[871,903,904,909,912],{},[889,905,906],{},[835,907,908],{},"Level 2",[889,910,911],{},"Recent attacks.",[889,913,914],{},[840,915,916],{},"--l2",[871,918,919,924,927],{},[889,920,921],{},[835,922,923],{},"Level 3",[889,925,926],{},"Active attacks, spyware, and viruses.",[889,928,929],{},[840,930,931],{},"--l3",[871,933,934,939,942],{},[889,935,936],{},[835,937,938],{},"Level 4",[889,940,941],{},"Aggressive tracking, higher false-positive risk.",[889,943,944],{},[840,945,946],{},"--l4",[871,948,949,954,957],{},[889,950,951],{},[835,952,953],{},"Anonymous",[889,955,956],{},"Tor exit nodes, I2P, VPNs, and other anonymity network relays.",[889,958,959],{},[840,960,961],{},"--anonymous",[963,964,965],"note",{},[821,966,967,968,972],{},"FireHOL datasets its self aggregate these datasets, and, depending on the sources, may carry specific licensing.\nCheck ",[825,969,971],{"href":827,"rel":970},[829],"FireHOL"," documentation, for more information.",[974,975,976],"warning",{},[821,977,978,979,982],{},"You must pass ",[840,980,981],{},"--acceptFireholRisk"," when using these sources via the CLI, or acknowledge the license during the interactive wizard.",[857,984],{},[860,986,81],{"id":987},"data-sources",[865,989,990,999],{},[868,991,992],{},[871,993,994,996],{},[874,995,876],{},[874,997,998],{},"URL",[884,1000,1001,1015,1029,1043,1057],{},[871,1002,1003,1008],{},[889,1004,1005],{},[840,1006,1007],{},"firehol_l1",[889,1009,1010],{},[825,1011,1014],{"href":1012,"rel":1013},"https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_level1.netset",[829],"firehol_level1.netset",[871,1016,1017,1022],{},[889,1018,1019],{},[840,1020,1021],{},"firehol_l2",[889,1023,1024],{},[825,1025,1028],{"href":1026,"rel":1027},"https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_level2.netset",[829],"firehol_level2.netset",[871,1030,1031,1036],{},[889,1032,1033],{},[840,1034,1035],{},"firehol_l3",[889,1037,1038],{},[825,1039,1042],{"href":1040,"rel":1041},"https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_level3.netset",[829],"firehol_level3.netset",[871,1044,1045,1050],{},[889,1046,1047],{},[840,1048,1049],{},"firehol_l4",[889,1051,1052],{},[825,1053,1056],{"href":1054,"rel":1055},"https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_level4.netset",[829],"firehol_level4.netset",[871,1058,1059,1064],{},[889,1060,1061],{},[840,1062,1063],{},"firehol_anonymous",[889,1065,1066],{},[825,1067,1070],{"href":1068,"rel":1069},"https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_anonymous.netset",[829],"firehol_anonymous.netset",[857,1072],{},[860,1074,1076],{"id":1075},"usage","Usage",[821,1078,1079,1080,1082],{},"Select one or more levels using their corresponding flags. All FireHOL flags require ",[840,1081,981],{},".",[1084,1085,1086,1164,1204,1241,1278],"code-group",{},[1087,1088,1094],"pre",{"className":1089,"code":1090,"filename":1091,"language":1092,"meta":1093,"style":1093},"language-bash shiki shiki-themes light-plus light-plus dracula","# Compile all five levels\npnpm dlx @riavzon\u002Fshield-base --l1 --l2 --l3 --l4 --anonymous --acceptFireholRisk\n\n# Compile Level 1 and Level 2 only\npnpm dlx @riavzon\u002Fshield-base --l1 --l2 --acceptFireholRisk\n","pnpm","bash","",[840,1095,1096,1105,1137,1143,1149],{"__ignoreMap":1093},[1097,1098,1101],"span",{"class":1099,"line":1100},"line",1,[1097,1102,1104],{"class":1103},"sghk6","# Compile all five levels\n",[1097,1106,1108,1111,1115,1118,1122,1125,1128,1131,1134],{"class":1099,"line":1107},2,[1097,1109,1091],{"class":1110},"sHOzp",[1097,1112,1114],{"class":1113},"sFB1V"," dlx",[1097,1116,1117],{"class":1113}," @riavzon\u002Fshield-base",[1097,1119,1121],{"class":1120},"sjR7W"," --l1",[1097,1123,1124],{"class":1120}," --l2",[1097,1126,1127],{"class":1120}," --l3",[1097,1129,1130],{"class":1120}," --l4",[1097,1132,1133],{"class":1120}," --anonymous",[1097,1135,1136],{"class":1120}," --acceptFireholRisk\n",[1097,1138,1140],{"class":1099,"line":1139},3,[1097,1141,1142],{"emptyLinePlaceholder":8},"\n",[1097,1144,1146],{"class":1099,"line":1145},4,[1097,1147,1148],{"class":1103},"# Compile Level 1 and Level 2 only\n",[1097,1150,1152,1154,1156,1158,1160,1162],{"class":1099,"line":1151},5,[1097,1153,1091],{"class":1110},[1097,1155,1114],{"class":1113},[1097,1157,1117],{"class":1113},[1097,1159,1121],{"class":1120},[1097,1161,1124],{"class":1120},[1097,1163,1136],{"class":1120},[1087,1165,1168],{"className":1089,"code":1166,"filename":1167,"language":1092,"meta":1093,"style":1093},"yarn dlx @riavzon\u002Fshield-base --l1 --l2 --l3 --l4 --anonymous --acceptFireholRisk\nyarn dlx @riavzon\u002Fshield-base --l1 --l2 --acceptFireholRisk\n","yarn",[840,1169,1170,1190],{"__ignoreMap":1093},[1097,1171,1172,1174,1176,1178,1180,1182,1184,1186,1188],{"class":1099,"line":1100},[1097,1173,1167],{"class":1110},[1097,1175,1114],{"class":1113},[1097,1177,1117],{"class":1113},[1097,1179,1121],{"class":1120},[1097,1181,1124],{"class":1120},[1097,1183,1127],{"class":1120},[1097,1185,1130],{"class":1120},[1097,1187,1133],{"class":1120},[1097,1189,1136],{"class":1120},[1097,1191,1192,1194,1196,1198,1200,1202],{"class":1099,"line":1107},[1097,1193,1167],{"class":1110},[1097,1195,1114],{"class":1113},[1097,1197,1117],{"class":1113},[1097,1199,1121],{"class":1120},[1097,1201,1124],{"class":1120},[1097,1203,1136],{"class":1120},[1087,1205,1208],{"className":1089,"code":1206,"filename":1207,"language":1092,"meta":1093,"style":1093},"npx @riavzon\u002Fshield-base --l1 --l2 --l3 --l4 --anonymous --acceptFireholRisk\nnpx @riavzon\u002Fshield-base --l1 --l2 --acceptFireholRisk\n","npm",[840,1209,1210,1229],{"__ignoreMap":1093},[1097,1211,1212,1215,1217,1219,1221,1223,1225,1227],{"class":1099,"line":1100},[1097,1213,1214],{"class":1110},"npx",[1097,1216,1117],{"class":1113},[1097,1218,1121],{"class":1120},[1097,1220,1124],{"class":1120},[1097,1222,1127],{"class":1120},[1097,1224,1130],{"class":1120},[1097,1226,1133],{"class":1120},[1097,1228,1136],{"class":1120},[1097,1230,1231,1233,1235,1237,1239],{"class":1099,"line":1107},[1097,1232,1214],{"class":1110},[1097,1234,1117],{"class":1113},[1097,1236,1121],{"class":1120},[1097,1238,1124],{"class":1120},[1097,1240,1136],{"class":1120},[1087,1242,1245],{"className":1089,"code":1243,"filename":1244,"language":1092,"meta":1093,"style":1093},"bunx @riavzon\u002Fshield-base --l1 --l2 --l3 --l4 --anonymous --acceptFireholRisk\nbunx @riavzon\u002Fshield-base --l1 --l2 --acceptFireholRisk\n","bun",[840,1246,1247,1266],{"__ignoreMap":1093},[1097,1248,1249,1252,1254,1256,1258,1260,1262,1264],{"class":1099,"line":1100},[1097,1250,1251],{"class":1110},"bunx",[1097,1253,1117],{"class":1113},[1097,1255,1121],{"class":1120},[1097,1257,1124],{"class":1120},[1097,1259,1127],{"class":1120},[1097,1261,1130],{"class":1120},[1097,1263,1133],{"class":1120},[1097,1265,1136],{"class":1120},[1097,1267,1268,1270,1272,1274,1276],{"class":1099,"line":1107},[1097,1269,1251],{"class":1110},[1097,1271,1117],{"class":1113},[1097,1273,1121],{"class":1120},[1097,1275,1124],{"class":1120},[1097,1277,1136],{"class":1120},[1087,1279,1284],{"className":1280,"code":1281,"filename":1282,"language":1283,"meta":1093,"style":1093},"language-ts shiki shiki-themes light-plus light-plus dracula","import { getThreatLists } from '@riavzon\u002Fshield-base';\n\n\u002F\u002F Compile all five levels\nawait getThreatLists('.\u002Fout', 'mmdbctl', true);\n\n\u002F\u002F Compile a specific subset\nawait getThreatLists('.\u002Fout', 'mmdbctl', ['firehol_l1', 'firehol_l2', 'firehol_anonymous']);\n","Programmatic","ts",[840,1285,1286,1319,1323,1328,1363,1367,1373],{"__ignoreMap":1093},[1097,1287,1288,1292,1296,1300,1303,1306,1310,1313,1316],{"class":1099,"line":1100},[1097,1289,1291],{"class":1290},"sZ328","import",[1097,1293,1295],{"class":1294},"sDd4n"," { ",[1097,1297,1299],{"class":1298},"sjsA6","getThreatLists",[1097,1301,1302],{"class":1294}," } ",[1097,1304,1305],{"class":1290},"from",[1097,1307,1309],{"class":1308},"sFkSl"," '",[1097,1311,1312],{"class":1113},"@riavzon\u002Fshield-base",[1097,1314,1315],{"class":1308},"'",[1097,1317,1318],{"class":1294},";\n",[1097,1320,1321],{"class":1099,"line":1107},[1097,1322,1142],{"emptyLinePlaceholder":8},[1097,1324,1325],{"class":1099,"line":1139},[1097,1326,1327],{"class":1103},"\u002F\u002F Compile all five levels\n",[1097,1329,1330,1333,1336,1339,1341,1344,1346,1348,1350,1353,1355,1357,1360],{"class":1099,"line":1145},[1097,1331,1332],{"class":1290},"await",[1097,1334,1335],{"class":1110}," getThreatLists",[1097,1337,1338],{"class":1294},"(",[1097,1340,1315],{"class":1308},[1097,1342,1343],{"class":1113},".\u002Fout",[1097,1345,1315],{"class":1308},[1097,1347,843],{"class":1294},[1097,1349,1315],{"class":1308},[1097,1351,1352],{"class":1113},"mmdbctl",[1097,1354,1315],{"class":1308},[1097,1356,843],{"class":1294},[1097,1358,1359],{"class":1120},"true",[1097,1361,1362],{"class":1294},");\n",[1097,1364,1365],{"class":1099,"line":1151},[1097,1366,1142],{"emptyLinePlaceholder":8},[1097,1368,1370],{"class":1099,"line":1369},6,[1097,1371,1372],{"class":1103},"\u002F\u002F Compile a specific subset\n",[1097,1374,1376,1378,1380,1382,1384,1386,1388,1390,1392,1394,1396,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421],{"class":1099,"line":1375},7,[1097,1377,1332],{"class":1290},[1097,1379,1335],{"class":1110},[1097,1381,1338],{"class":1294},[1097,1383,1315],{"class":1308},[1097,1385,1343],{"class":1113},[1097,1387,1315],{"class":1308},[1097,1389,843],{"class":1294},[1097,1391,1315],{"class":1308},[1097,1393,1352],{"class":1113},[1097,1395,1315],{"class":1308},[1097,1397,1398],{"class":1294},", [",[1097,1400,1315],{"class":1308},[1097,1402,1007],{"class":1113},[1097,1404,1315],{"class":1308},[1097,1406,843],{"class":1294},[1097,1408,1315],{"class":1308},[1097,1410,1021],{"class":1113},[1097,1412,1315],{"class":1308},[1097,1414,843],{"class":1294},[1097,1416,1315],{"class":1308},[1097,1418,1063],{"class":1113},[1097,1420,1315],{"class":1308},[1097,1422,1423],{"class":1294},"]);\n",[857,1425],{},[860,1427,1429],{"id":1428},"record-structure","Record Structure",[821,1431,1432],{},"Each record stores the IP range and a comment identifying its source level and maintainer:",[1087,1434,1436],{"className":1280,"code":1435,"language":1283,"meta":1093,"style":1093},"interface ThreatRecord {\n  range: string;   \u002F\u002F IPv4 address or CIDR, e.g. \"45.143.203.0\u002F24\"\n  comment: string; \u002F\u002F e.g. \"firehol_l1  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\"\n}\n",[840,1437,1438,1451,1469,1484],{"__ignoreMap":1093},[1097,1439,1440,1444,1448],{"class":1099,"line":1100},[1097,1441,1443],{"class":1442},"sl46w","interface",[1097,1445,1447],{"class":1446},"sFs1U"," ThreatRecord",[1097,1449,1450],{"class":1294}," {\n",[1097,1452,1453,1456,1460,1463,1466],{"class":1099,"line":1107},[1097,1454,1455],{"class":1298},"  range",[1097,1457,1459],{"class":1458},"saOXh",":",[1097,1461,1462],{"class":1446}," string",[1097,1464,1465],{"class":1294},";   ",[1097,1467,1468],{"class":1103},"\u002F\u002F IPv4 address or CIDR, e.g. \"45.143.203.0\u002F24\"\n",[1097,1470,1471,1474,1476,1478,1481],{"class":1099,"line":1139},[1097,1472,1473],{"class":1298},"  comment",[1097,1475,1459],{"class":1458},[1097,1477,1462],{"class":1446},[1097,1479,1480],{"class":1294},"; ",[1097,1482,1483],{"class":1103},"\u002F\u002F e.g. \"firehol_l1  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\"\n",[1097,1485,1486],{"class":1099,"line":1145},[1097,1487,1488],{"class":1294},"}\n",[857,1490],{},[860,1492,1494],{"id":1493},"example-lookup","Example Lookup",[1087,1496,1499],{"className":1089,"code":1497,"filename":1498,"language":1092,"meta":1093,"style":1093},"mmdbctl read -f json-pretty 45.143.203.111 outputDirectory\u002Ffirehol_l1.mmdb\nmmdbctl read -f json-pretty 1.31.80.222 outputDirectory\u002Ffirehol_l2.mmdb\nmmdbctl read -f json-pretty 1.24.16.177 outputDirectory\u002Ffirehol_l3.mmdb\nmmdbctl read -f json-pretty 1.10.141.115 outputDirectory\u002Ffirehol_l4.mmdb\nmmdbctl read -f json-pretty 1.0.136.76 outputDirectory\u002Ffirehol_anonymous.mmdb\n","Terminal",[840,1500,1501,1521,1537,1553,1569],{"__ignoreMap":1093},[1097,1502,1503,1505,1508,1511,1514,1518],{"class":1099,"line":1100},[1097,1504,1352],{"class":1110},[1097,1506,1507],{"class":1113}," read",[1097,1509,1510],{"class":1120}," -f",[1097,1512,1513],{"class":1113}," json-pretty",[1097,1515,1517],{"class":1516},"spgvN"," 45.143.203.111",[1097,1519,1520],{"class":1113}," outputDirectory\u002Ffirehol_l1.mmdb\n",[1097,1522,1523,1525,1527,1529,1531,1534],{"class":1099,"line":1107},[1097,1524,1352],{"class":1110},[1097,1526,1507],{"class":1113},[1097,1528,1510],{"class":1120},[1097,1530,1513],{"class":1113},[1097,1532,1533],{"class":1516}," 1.31.80.222",[1097,1535,1536],{"class":1113}," outputDirectory\u002Ffirehol_l2.mmdb\n",[1097,1538,1539,1541,1543,1545,1547,1550],{"class":1099,"line":1139},[1097,1540,1352],{"class":1110},[1097,1542,1507],{"class":1113},[1097,1544,1510],{"class":1120},[1097,1546,1513],{"class":1113},[1097,1548,1549],{"class":1516}," 1.24.16.177",[1097,1551,1552],{"class":1113}," outputDirectory\u002Ffirehol_l3.mmdb\n",[1097,1554,1555,1557,1559,1561,1563,1566],{"class":1099,"line":1145},[1097,1556,1352],{"class":1110},[1097,1558,1507],{"class":1113},[1097,1560,1510],{"class":1120},[1097,1562,1513],{"class":1113},[1097,1564,1565],{"class":1516}," 1.10.141.115",[1097,1567,1568],{"class":1113}," outputDirectory\u002Ffirehol_l4.mmdb\n",[1097,1570,1571,1573,1575,1577,1579,1582],{"class":1099,"line":1151},[1097,1572,1352],{"class":1110},[1097,1574,1507],{"class":1113},[1097,1576,1510],{"class":1120},[1097,1578,1513],{"class":1113},[1097,1580,1581],{"class":1516}," 1.0.136.76",[1097,1583,1584],{"class":1113}," outputDirectory\u002Ffirehol_anonymous.mmdb\n",[1087,1586,1589],{"className":1587,"code":1588,"language":5,"meta":1093,"style":1093},"language-json shiki shiki-themes light-plus light-plus dracula","{\n\"comment\": \"firehol_l1  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"45.143.203.111\",\n\"network\": \"45.143.203.0\u002F24\"\n}\n\n{\n\"comment\": \"firehol_l2  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"1.31.80.222\",\n\"network\": \"1.31.80.222\u002F32\"\n}\n{\n\"comment\": \"firehol_l3  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"1.24.16.177\",\n\"network\": \"1.24.16.177\u002F32\"\n}\n\n{\n\"comment\": \"firehol_l4  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"1.10.141.115\",\n\"network\": \"1.10.141.115\u002F32\"\n}\n\n{\n\"comment\": \"firehol_anonymous  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"1.0.136.76\",\n\"network\": \"1.0.136.76\u002F32\"\n}\n",[840,1590,1591,1596,1621,1641,1660,1664,1668,1672,1692,1712,1730,1735,1740,1760,1780,1798,1803,1808,1813,1833,1853,1871,1876,1881,1886,1906,1926,1944],{"__ignoreMap":1093},[1097,1592,1593],{"class":1099,"line":1100},[1097,1594,1595],{"class":1294},"{\n",[1097,1597,1598,1602,1606,1608,1610,1613,1616,1618],{"class":1099,"line":1107},[1097,1599,1601],{"class":1600},"saJyd","\"",[1097,1603,1605],{"class":1604},"s_W10","comment",[1097,1607,1601],{"class":1600},[1097,1609,1459],{"class":1458},[1097,1611,1612],{"class":1308}," \"",[1097,1614,1615],{"class":1113},"firehol_l1  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F",[1097,1617,1601],{"class":1308},[1097,1619,1620],{"class":1294},",\n",[1097,1622,1623,1625,1628,1630,1632,1634,1637,1639],{"class":1099,"line":1139},[1097,1624,1601],{"class":1600},[1097,1626,1627],{"class":1604},"ip",[1097,1629,1601],{"class":1600},[1097,1631,1459],{"class":1458},[1097,1633,1612],{"class":1308},[1097,1635,1636],{"class":1113},"45.143.203.111",[1097,1638,1601],{"class":1308},[1097,1640,1620],{"class":1294},[1097,1642,1643,1645,1648,1650,1652,1654,1657],{"class":1099,"line":1145},[1097,1644,1601],{"class":1600},[1097,1646,1647],{"class":1604},"network",[1097,1649,1601],{"class":1600},[1097,1651,1459],{"class":1458},[1097,1653,1612],{"class":1308},[1097,1655,1656],{"class":1113},"45.143.203.0\u002F24",[1097,1658,1659],{"class":1308},"\"\n",[1097,1661,1662],{"class":1099,"line":1151},[1097,1663,1488],{"class":1294},[1097,1665,1666],{"class":1099,"line":1369},[1097,1667,1142],{"emptyLinePlaceholder":8},[1097,1669,1670],{"class":1099,"line":1375},[1097,1671,1595],{"class":1294},[1097,1673,1675,1677,1679,1681,1683,1685,1688,1690],{"class":1099,"line":1674},8,[1097,1676,1601],{"class":1600},[1097,1678,1605],{"class":1604},[1097,1680,1601],{"class":1600},[1097,1682,1459],{"class":1458},[1097,1684,1612],{"class":1308},[1097,1686,1687],{"class":1113},"firehol_l2  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F",[1097,1689,1601],{"class":1308},[1097,1691,1620],{"class":1294},[1097,1693,1695,1697,1699,1701,1703,1705,1708,1710],{"class":1099,"line":1694},9,[1097,1696,1601],{"class":1600},[1097,1698,1627],{"class":1604},[1097,1700,1601],{"class":1600},[1097,1702,1459],{"class":1458},[1097,1704,1612],{"class":1308},[1097,1706,1707],{"class":1113},"1.31.80.222",[1097,1709,1601],{"class":1308},[1097,1711,1620],{"class":1294},[1097,1713,1715,1717,1719,1721,1723,1725,1728],{"class":1099,"line":1714},10,[1097,1716,1601],{"class":1600},[1097,1718,1647],{"class":1604},[1097,1720,1601],{"class":1600},[1097,1722,1459],{"class":1458},[1097,1724,1612],{"class":1308},[1097,1726,1727],{"class":1113},"1.31.80.222\u002F32",[1097,1729,1659],{"class":1308},[1097,1731,1733],{"class":1099,"line":1732},11,[1097,1734,1488],{"class":1294},[1097,1736,1738],{"class":1099,"line":1737},12,[1097,1739,1595],{"class":1294},[1097,1741,1743,1745,1747,1749,1751,1753,1756,1758],{"class":1099,"line":1742},13,[1097,1744,1601],{"class":1600},[1097,1746,1605],{"class":1604},[1097,1748,1601],{"class":1600},[1097,1750,1459],{"class":1458},[1097,1752,1612],{"class":1308},[1097,1754,1755],{"class":1113},"firehol_l3  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F",[1097,1757,1601],{"class":1308},[1097,1759,1620],{"class":1294},[1097,1761,1763,1765,1767,1769,1771,1773,1776,1778],{"class":1099,"line":1762},14,[1097,1764,1601],{"class":1600},[1097,1766,1627],{"class":1604},[1097,1768,1601],{"class":1600},[1097,1770,1459],{"class":1458},[1097,1772,1612],{"class":1308},[1097,1774,1775],{"class":1113},"1.24.16.177",[1097,1777,1601],{"class":1308},[1097,1779,1620],{"class":1294},[1097,1781,1783,1785,1787,1789,1791,1793,1796],{"class":1099,"line":1782},15,[1097,1784,1601],{"class":1600},[1097,1786,1647],{"class":1604},[1097,1788,1601],{"class":1600},[1097,1790,1459],{"class":1458},[1097,1792,1612],{"class":1308},[1097,1794,1795],{"class":1113},"1.24.16.177\u002F32",[1097,1797,1659],{"class":1308},[1097,1799,1801],{"class":1099,"line":1800},16,[1097,1802,1488],{"class":1294},[1097,1804,1806],{"class":1099,"line":1805},17,[1097,1807,1142],{"emptyLinePlaceholder":8},[1097,1809,1811],{"class":1099,"line":1810},18,[1097,1812,1595],{"class":1294},[1097,1814,1816,1818,1820,1822,1824,1826,1829,1831],{"class":1099,"line":1815},19,[1097,1817,1601],{"class":1600},[1097,1819,1605],{"class":1604},[1097,1821,1601],{"class":1600},[1097,1823,1459],{"class":1458},[1097,1825,1612],{"class":1308},[1097,1827,1828],{"class":1113},"firehol_l4  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F",[1097,1830,1601],{"class":1308},[1097,1832,1620],{"class":1294},[1097,1834,1836,1838,1840,1842,1844,1846,1849,1851],{"class":1099,"line":1835},20,[1097,1837,1601],{"class":1600},[1097,1839,1627],{"class":1604},[1097,1841,1601],{"class":1600},[1097,1843,1459],{"class":1458},[1097,1845,1612],{"class":1308},[1097,1847,1848],{"class":1113},"1.10.141.115",[1097,1850,1601],{"class":1308},[1097,1852,1620],{"class":1294},[1097,1854,1856,1858,1860,1862,1864,1866,1869],{"class":1099,"line":1855},21,[1097,1857,1601],{"class":1600},[1097,1859,1647],{"class":1604},[1097,1861,1601],{"class":1600},[1097,1863,1459],{"class":1458},[1097,1865,1612],{"class":1308},[1097,1867,1868],{"class":1113},"1.10.141.115\u002F32",[1097,1870,1659],{"class":1308},[1097,1872,1874],{"class":1099,"line":1873},22,[1097,1875,1488],{"class":1294},[1097,1877,1879],{"class":1099,"line":1878},23,[1097,1880,1142],{"emptyLinePlaceholder":8},[1097,1882,1884],{"class":1099,"line":1883},24,[1097,1885,1595],{"class":1294},[1097,1887,1889,1891,1893,1895,1897,1899,1902,1904],{"class":1099,"line":1888},25,[1097,1890,1601],{"class":1600},[1097,1892,1605],{"class":1604},[1097,1894,1601],{"class":1600},[1097,1896,1459],{"class":1458},[1097,1898,1612],{"class":1308},[1097,1900,1901],{"class":1113},"firehol_anonymous  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F",[1097,1903,1601],{"class":1308},[1097,1905,1620],{"class":1294},[1097,1907,1909,1911,1913,1915,1917,1919,1922,1924],{"class":1099,"line":1908},26,[1097,1910,1601],{"class":1600},[1097,1912,1627],{"class":1604},[1097,1914,1601],{"class":1600},[1097,1916,1459],{"class":1458},[1097,1918,1612],{"class":1308},[1097,1920,1921],{"class":1113},"1.0.136.76",[1097,1923,1601],{"class":1308},[1097,1925,1620],{"class":1294},[1097,1927,1929,1931,1933,1935,1937,1939,1942],{"class":1099,"line":1928},27,[1097,1930,1601],{"class":1600},[1097,1932,1647],{"class":1604},[1097,1934,1601],{"class":1600},[1097,1936,1459],{"class":1458},[1097,1938,1612],{"class":1308},[1097,1940,1941],{"class":1113},"1.0.136.76\u002F32",[1097,1943,1659],{"class":1308},[1097,1945,1947],{"class":1099,"line":1946},28,[1097,1948,1488],{"class":1294},[1950,1951,1952],"tip",{},[821,1953,1954,1955,1958],{},"The ",[825,1956,1957],{"href":346},"Known Threat"," checker in Bot Detector reads these databases and applies configurable penalty scores per FireHOL level. Higher levels carry more aggressive penalties.",[1960,1961,1962],"style",{},"html pre.shiki code .sghk6, html code.shiki .sghk6{--shiki-light:#008000;--shiki-default:#008000;--shiki-dark:#6272A4}html pre.shiki code .sHOzp, html code.shiki .sHOzp{--shiki-light:#795E26;--shiki-default:#795E26;--shiki-dark:#50FA7B}html pre.shiki code .sFB1V, html code.shiki .sFB1V{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#F1FA8C}html pre.shiki code .sjR7W, html code.shiki .sjR7W{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#BD93F9}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZ328, html code.shiki .sZ328{--shiki-light:#AF00DB;--shiki-default:#AF00DB;--shiki-dark:#FF79C6}html pre.shiki code .sDd4n, html code.shiki .sDd4n{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .sjsA6, html code.shiki .sjsA6{--shiki-light:#001080;--shiki-default:#001080;--shiki-dark:#F8F8F2}html pre.shiki code .sFkSl, html code.shiki .sFkSl{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#E9F284}html pre.shiki code .sl46w, html code.shiki .sl46w{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#FF79C6}html pre.shiki code .sFs1U, html code.shiki .sFs1U{--shiki-light:#267F99;--shiki-light-font-style:inherit;--shiki-default:#267F99;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic}html pre.shiki code .saOXh, html code.shiki .saOXh{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#FF79C6}html pre.shiki code .spgvN, html code.shiki .spgvN{--shiki-light:#098658;--shiki-default:#098658;--shiki-dark:#BD93F9}html pre.shiki code .saJyd, html code.shiki .saJyd{--shiki-light:#0451A5;--shiki-default:#0451A5;--shiki-dark:#8BE9FE}html pre.shiki code .s_W10, html code.shiki .s_W10{--shiki-light:#0451A5;--shiki-default:#0451A5;--shiki-dark:#8BE9FD}",{"title":1093,"searchDepth":1107,"depth":1107,"links":1964},[1965,1966,1967,1968,1969],{"id":862,"depth":1107,"text":863},{"id":987,"depth":1107,"text":81},{"id":1075,"depth":1107,"text":1076},{"id":1428,"depth":1107,"text":1429},{"id":1493,"depth":1107,"text":1494},"Five FireHOL blocklist levels fetched from the firehol\u002Fblocklist-ipsets repository, each compiled into its own MMDB database keyed by IP range.","md","i-lucide-shield-alert",{},null,"---\ntitle: FireHOL Threat Intelligence\ndescription: Five FireHOL blocklist levels fetched from the firehol\u002Fblocklist-ipsets repository, each compiled into its own MMDB database keyed by IP range.\nicon: i-lucide-shield-alert\n---\n\nThe FireHOL source fetches IPv4 blocklists from the [firehol\u002Fblocklist-ipsets](https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets) repository and compiles each selected level into a separate MMDB database. Each database is named after its source level.\n\n**Output files:** `firehol_l1.mmdb`, `firehol_l2.mmdb`, `firehol_l3.mmdb`, `firehol_l4.mmdb`, `firehol_anonymous.mmdb`\n\n---\n\n## Threat Levels\n\n| Level | Description | Flag |\n| --- | --- | --- |\n| **Level 1** | Maximum protection, minimum false positives. | `--l1` |\n| **Level 2** | Recent attacks. | `--l2` |\n| **Level 3** | Active attacks, spyware, and viruses. | `--l3` |\n| **Level 4** | Aggressive tracking, higher false-positive risk. | `--l4` |\n| **Anonymous** | Tor exit nodes, I2P, VPNs, and other anonymity network relays. | `--anonymous` |\n\n::note\nFireHOL datasets its self aggregate these datasets, and, depending on the sources, may carry specific licensing.\nCheck [FireHOL](https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets) documentation, for more information. \n::\n\n::warning\nYou must pass `--acceptFireholRisk` when using these sources via the CLI, or acknowledge the license during the interactive wizard. \n::\n\n---\n\n## Data Sources\n\n| Level | URL |\n| --- | --- |\n| `firehol_l1` | [firehol_level1.netset](https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_level1.netset) |\n| `firehol_l2` | [firehol_level2.netset](https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_level2.netset) |\n| `firehol_l3` | [firehol_level3.netset](https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_level3.netset) |\n| `firehol_l4` | [firehol_level4.netset](https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_level4.netset) |\n| `firehol_anonymous` | [firehol_anonymous.netset](https:\u002F\u002Fgithub.com\u002Ffirehol\u002Fblocklist-ipsets\u002Fraw\u002Frefs\u002Fheads\u002Fmaster\u002Ffirehol_anonymous.netset) |\n\n---\n\n## Usage\n\nSelect one or more levels using their corresponding flags. All FireHOL flags require `--acceptFireholRisk`.\n\n::code-group\n```bash [pnpm]\n# Compile all five levels\npnpm dlx @riavzon\u002Fshield-base --l1 --l2 --l3 --l4 --anonymous --acceptFireholRisk\n\n# Compile Level 1 and Level 2 only\npnpm dlx @riavzon\u002Fshield-base --l1 --l2 --acceptFireholRisk\n```\n\n```bash [yarn]\nyarn dlx @riavzon\u002Fshield-base --l1 --l2 --l3 --l4 --anonymous --acceptFireholRisk\nyarn dlx @riavzon\u002Fshield-base --l1 --l2 --acceptFireholRisk\n```\n\n```bash [npm]\nnpx @riavzon\u002Fshield-base --l1 --l2 --l3 --l4 --anonymous --acceptFireholRisk\nnpx @riavzon\u002Fshield-base --l1 --l2 --acceptFireholRisk\n```\n\n```bash [bun]\nbunx @riavzon\u002Fshield-base --l1 --l2 --l3 --l4 --anonymous --acceptFireholRisk\nbunx @riavzon\u002Fshield-base --l1 --l2 --acceptFireholRisk\n```\n```ts [Programmatic]\nimport { getThreatLists } from '@riavzon\u002Fshield-base';\n\n\u002F\u002F Compile all five levels\nawait getThreatLists('.\u002Fout', 'mmdbctl', true);\n\n\u002F\u002F Compile a specific subset\nawait getThreatLists('.\u002Fout', 'mmdbctl', ['firehol_l1', 'firehol_l2', 'firehol_anonymous']);\n```\n::\n\n---\n\n## Record Structure\n\nEach record stores the IP range and a comment identifying its source level and maintainer:\n\n```ts\ninterface ThreatRecord {\n  range: string;   \u002F\u002F IPv4 address or CIDR, e.g. \"45.143.203.0\u002F24\"\n  comment: string; \u002F\u002F e.g. \"firehol_l1  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\"\n}\n```\n\n---\n\n## Example Lookup\n\n```bash [Terminal]\nmmdbctl read -f json-pretty 45.143.203.111 outputDirectory\u002Ffirehol_l1.mmdb\nmmdbctl read -f json-pretty 1.31.80.222 outputDirectory\u002Ffirehol_l2.mmdb\nmmdbctl read -f json-pretty 1.24.16.177 outputDirectory\u002Ffirehol_l3.mmdb\nmmdbctl read -f json-pretty 1.10.141.115 outputDirectory\u002Ffirehol_l4.mmdb\nmmdbctl read -f json-pretty 1.0.136.76 outputDirectory\u002Ffirehol_anonymous.mmdb\n```\n\n```json\n{\n\"comment\": \"firehol_l1  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"45.143.203.111\",\n\"network\": \"45.143.203.0\u002F24\"\n}\n\n{\n\"comment\": \"firehol_l2  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"1.31.80.222\",\n\"network\": \"1.31.80.222\u002F32\"\n}\n{\n\"comment\": \"firehol_l3  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"1.24.16.177\",\n\"network\": \"1.24.16.177\u002F32\"\n}\n\n{\n\"comment\": \"firehol_l4  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"1.10.141.115\",\n\"network\": \"1.10.141.115\u002F32\"\n}\n\n{\n\"comment\": \"firehol_anonymous  Maintainer: http:\u002F\u002Fiplists.firehol.org\u002F\",\n\"ip\": \"1.0.136.76\",\n\"network\": \"1.0.136.76\u002F32\"\n}\n```\n\n::tip\nThe [Known Threat](\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-threats) checker in Bot Detector reads these databases and applies configurable penalty scores per FireHOL level. Higher levels carry more aggressive penalties.\n::\n",{"title":107,"description":1970},"W4x8FOsoPArUG74pkTEo-IO-GKn5YeKXdfkqYV4EAy4",[1979,1980],{"title":103,"path":104,"stem":105,"children":-1},{"title":111,"path":112,"stem":113,"children":-1},{"id":816,"title":107,"body":1982,"description":1970,"extension":1971,"icon":1972,"meta":2902,"module":1974,"navigation":8,"path":108,"rawbody":1975,"seo":2903,"stem":109,"__hash__":1977},{"type":818,"value":1983,"toc":2895},[1984,1989,2003,2005,2007,2081,2088,2094,2096,2098,2165,2167,2169,2173,2447,2449,2451,2453,2493,2495,2497,2571,2887,2893],[821,1985,823,1986,831],{},[825,1987,830],{"href":827,"rel":1988},[829],[821,1990,1991,838,1993,843,1995,843,1997,843,1999,843,2001],{},[835,1992,837],{},[840,1994,842],{},[840,1996,846],{},[840,1998,849],{},[840,2000,852],{},[840,2002,855],{},[857,2004],{},[860,2006,863],{"id":862},[865,2008,2009,2019],{},[868,2010,2011],{},[871,2012,2013,2015,2017],{},[874,2014,876],{},[874,2016,879],{},[874,2018,882],{},[884,2020,2021,2033,2045,2057,2069],{},[871,2022,2023,2027,2029],{},[889,2024,2025],{},[835,2026,893],{},[889,2028,896],{},[889,2030,2031],{},[840,2032,901],{},[871,2034,2035,2039,2041],{},[889,2036,2037],{},[835,2038,908],{},[889,2040,911],{},[889,2042,2043],{},[840,2044,916],{},[871,2046,2047,2051,2053],{},[889,2048,2049],{},[835,2050,923],{},[889,2052,926],{},[889,2054,2055],{},[840,2056,931],{},[871,2058,2059,2063,2065],{},[889,2060,2061],{},[835,2062,938],{},[889,2064,941],{},[889,2066,2067],{},[840,2068,946],{},[871,2070,2071,2075,2077],{},[889,2072,2073],{},[835,2074,953],{},[889,2076,956],{},[889,2078,2079],{},[840,2080,961],{},[963,2082,2083],{},[821,2084,967,2085,972],{},[825,2086,971],{"href":827,"rel":2087},[829],[974,2089,2090],{},[821,2091,978,2092,982],{},[840,2093,981],{},[857,2095],{},[860,2097,81],{"id":987},[865,2099,2100,2108],{},[868,2101,2102],{},[871,2103,2104,2106],{},[874,2105,876],{},[874,2107,998],{},[884,2109,2110,2121,2132,2143,2154],{},[871,2111,2112,2116],{},[889,2113,2114],{},[840,2115,1007],{},[889,2117,2118],{},[825,2119,1014],{"href":1012,"rel":2120},[829],[871,2122,2123,2127],{},[889,2124,2125],{},[840,2126,1021],{},[889,2128,2129],{},[825,2130,1028],{"href":1026,"rel":2131},[829],[871,2133,2134,2138],{},[889,2135,2136],{},[840,2137,1035],{},[889,2139,2140],{},[825,2141,1042],{"href":1040,"rel":2142},[829],[871,2144,2145,2149],{},[889,2146,2147],{},[840,2148,1049],{},[889,2150,2151],{},[825,2152,1056],{"href":1054,"rel":2153},[829],[871,2155,2156,2160],{},[889,2157,2158],{},[840,2159,1063],{},[889,2161,2162],{},[825,2163,1070],{"href":1068,"rel":2164},[829],[857,2166],{},[860,2168,1076],{"id":1075},[821,2170,1079,2171,1082],{},[840,2172,981],{},[1084,2174,2175,2225,2263,2297,2331],{},[1087,2176,2177],{"className":1089,"code":1090,"filename":1091,"language":1092,"meta":1093,"style":1093},[840,2178,2179,2183,2203,2207,2211],{"__ignoreMap":1093},[1097,2180,2181],{"class":1099,"line":1100},[1097,2182,1104],{"class":1103},[1097,2184,2185,2187,2189,2191,2193,2195,2197,2199,2201],{"class":1099,"line":1107},[1097,2186,1091],{"class":1110},[1097,2188,1114],{"class":1113},[1097,2190,1117],{"class":1113},[1097,2192,1121],{"class":1120},[1097,2194,1124],{"class":1120},[1097,2196,1127],{"class":1120},[1097,2198,1130],{"class":1120},[1097,2200,1133],{"class":1120},[1097,2202,1136],{"class":1120},[1097,2204,2205],{"class":1099,"line":1139},[1097,2206,1142],{"emptyLinePlaceholder":8},[1097,2208,2209],{"class":1099,"line":1145},[1097,2210,1148],{"class":1103},[1097,2212,2213,2215,2217,2219,2221,2223],{"class":1099,"line":1151},[1097,2214,1091],{"class":1110},[1097,2216,1114],{"class":1113},[1097,2218,1117],{"class":1113},[1097,2220,1121],{"class":1120},[1097,2222,1124],{"class":1120},[1097,2224,1136],{"class":1120},[1087,2226,2227],{"className":1089,"code":1166,"filename":1167,"language":1092,"meta":1093,"style":1093},[840,2228,2229,2249],{"__ignoreMap":1093},[1097,2230,2231,2233,2235,2237,2239,2241,2243,2245,2247],{"class":1099,"line":1100},[1097,2232,1167],{"class":1110},[1097,2234,1114],{"class":1113},[1097,2236,1117],{"class":1113},[1097,2238,1121],{"class":1120},[1097,2240,1124],{"class":1120},[1097,2242,1127],{"class":1120},[1097,2244,1130],{"class":1120},[1097,2246,1133],{"class":1120},[1097,2248,1136],{"class":1120},[1097,2250,2251,2253,2255,2257,2259,2261],{"class":1099,"line":1107},[1097,2252,1167],{"class":1110},[1097,2254,1114],{"class":1113},[1097,2256,1117],{"class":1113},[1097,2258,1121],{"class":1120},[1097,2260,1124],{"class":1120},[1097,2262,1136],{"class":1120},[1087,2264,2265],{"className":1089,"code":1206,"filename":1207,"language":1092,"meta":1093,"style":1093},[840,2266,2267,2285],{"__ignoreMap":1093},[1097,2268,2269,2271,2273,2275,2277,2279,2281,2283],{"class":1099,"line":1100},[1097,2270,1214],{"class":1110},[1097,2272,1117],{"class":1113},[1097,2274,1121],{"class":1120},[1097,2276,1124],{"class":1120},[1097,2278,1127],{"class":1120},[1097,2280,1130],{"class":1120},[1097,2282,1133],{"class":1120},[1097,2284,1136],{"class":1120},[1097,2286,2287,2289,2291,2293,2295],{"class":1099,"line":1107},[1097,2288,1214],{"class":1110},[1097,2290,1117],{"class":1113},[1097,2292,1121],{"class":1120},[1097,2294,1124],{"class":1120},[1097,2296,1136],{"class":1120},[1087,2298,2299],{"className":1089,"code":1243,"filename":1244,"language":1092,"meta":1093,"style":1093},[840,2300,2301,2319],{"__ignoreMap":1093},[1097,2302,2303,2305,2307,2309,2311,2313,2315,2317],{"class":1099,"line":1100},[1097,2304,1251],{"class":1110},[1097,2306,1117],{"class":1113},[1097,2308,1121],{"class":1120},[1097,2310,1124],{"class":1120},[1097,2312,1127],{"class":1120},[1097,2314,1130],{"class":1120},[1097,2316,1133],{"class":1120},[1097,2318,1136],{"class":1120},[1097,2320,2321,2323,2325,2327,2329],{"class":1099,"line":1107},[1097,2322,1251],{"class":1110},[1097,2324,1117],{"class":1113},[1097,2326,1121],{"class":1120},[1097,2328,1124],{"class":1120},[1097,2330,1136],{"class":1120},[1087,2332,2333],{"className":1280,"code":1281,"filename":1282,"language":1283,"meta":1093,"style":1093},[840,2334,2335,2355,2359,2363,2391,2395,2399],{"__ignoreMap":1093},[1097,2336,2337,2339,2341,2343,2345,2347,2349,2351,2353],{"class":1099,"line":1100},[1097,2338,1291],{"class":1290},[1097,2340,1295],{"class":1294},[1097,2342,1299],{"class":1298},[1097,2344,1302],{"class":1294},[1097,2346,1305],{"class":1290},[1097,2348,1309],{"class":1308},[1097,2350,1312],{"class":1113},[1097,2352,1315],{"class":1308},[1097,2354,1318],{"class":1294},[1097,2356,2357],{"class":1099,"line":1107},[1097,2358,1142],{"emptyLinePlaceholder":8},[1097,2360,2361],{"class":1099,"line":1139},[1097,2362,1327],{"class":1103},[1097,2364,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389],{"class":1099,"line":1145},[1097,2366,1332],{"class":1290},[1097,2368,1335],{"class":1110},[1097,2370,1338],{"class":1294},[1097,2372,1315],{"class":1308},[1097,2374,1343],{"class":1113},[1097,2376,1315],{"class":1308},[1097,2378,843],{"class":1294},[1097,2380,1315],{"class":1308},[1097,2382,1352],{"class":1113},[1097,2384,1315],{"class":1308},[1097,2386,843],{"class":1294},[1097,2388,1359],{"class":1120},[1097,2390,1362],{"class":1294},[1097,2392,2393],{"class":1099,"line":1151},[1097,2394,1142],{"emptyLinePlaceholder":8},[1097,2396,2397],{"class":1099,"line":1369},[1097,2398,1372],{"class":1103},[1097,2400,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445],{"class":1099,"line":1375},[1097,2402,1332],{"class":1290},[1097,2404,1335],{"class":1110},[1097,2406,1338],{"class":1294},[1097,2408,1315],{"class":1308},[1097,2410,1343],{"class":1113},[1097,2412,1315],{"class":1308},[1097,2414,843],{"class":1294},[1097,2416,1315],{"class":1308},[1097,2418,1352],{"class":1113},[1097,2420,1315],{"class":1308},[1097,2422,1398],{"class":1294},[1097,2424,1315],{"class":1308},[1097,2426,1007],{"class":1113},[1097,2428,1315],{"class":1308},[1097,2430,843],{"class":1294},[1097,2432,1315],{"class":1308},[1097,2434,1021],{"class":1113},[1097,2436,1315],{"class":1308},[1097,2438,843],{"class":1294},[1097,2440,1315],{"class":1308},[1097,2442,1063],{"class":1113},[1097,2444,1315],{"class":1308},[1097,2446,1423],{"class":1294},[857,2448],{},[860,2450,1429],{"id":1428},[821,2452,1432],{},[1087,2454,2455],{"className":1280,"code":1435,"language":1283,"meta":1093,"style":1093},[840,2456,2457,2465,2477,2489],{"__ignoreMap":1093},[1097,2458,2459,2461,2463],{"class":1099,"line":1100},[1097,2460,1443],{"class":1442},[1097,2462,1447],{"class":1446},[1097,2464,1450],{"class":1294},[1097,2466,2467,2469,2471,2473,2475],{"class":1099,"line":1107},[1097,2468,1455],{"class":1298},[1097,2470,1459],{"class":1458},[1097,2472,1462],{"class":1446},[1097,2474,1465],{"class":1294},[1097,2476,1468],{"class":1103},[1097,2478,2479,2481,2483,2485,2487],{"class":1099,"line":1139},[1097,2480,1473],{"class":1298},[1097,2482,1459],{"class":1458},[1097,2484,1462],{"class":1446},[1097,2486,1480],{"class":1294},[1097,2488,1483],{"class":1103},[1097,2490,2491],{"class":1099,"line":1145},[1097,2492,1488],{"class":1294},[857,2494],{},[860,2496,1494],{"id":1493},[1087,2498,2499],{"className":1089,"code":1497,"filename":1498,"language":1092,"meta":1093,"style":1093},[840,2500,2501,2515,2529,2543,2557],{"__ignoreMap":1093},[1097,2502,2503,2505,2507,2509,2511,2513],{"class":1099,"line":1100},[1097,2504,1352],{"class":1110},[1097,2506,1507],{"class":1113},[1097,2508,1510],{"class":1120},[1097,2510,1513],{"class":1113},[1097,2512,1517],{"class":1516},[1097,2514,1520],{"class":1113},[1097,2516,2517,2519,2521,2523,2525,2527],{"class":1099,"line":1107},[1097,2518,1352],{"class":1110},[1097,2520,1507],{"class":1113},[1097,2522,1510],{"class":1120},[1097,2524,1513],{"class":1113},[1097,2526,1533],{"class":1516},[1097,2528,1536],{"class":1113},[1097,2530,2531,2533,2535,2537,2539,2541],{"class":1099,"line":1139},[1097,2532,1352],{"class":1110},[1097,2534,1507],{"class":1113},[1097,2536,1510],{"class":1120},[1097,2538,1513],{"class":1113},[1097,2540,1549],{"class":1516},[1097,2542,1552],{"class":1113},[1097,2544,2545,2547,2549,2551,2553,2555],{"class":1099,"line":1145},[1097,2546,1352],{"class":1110},[1097,2548,1507],{"class":1113},[1097,2550,1510],{"class":1120},[1097,2552,1513],{"class":1113},[1097,2554,1565],{"class":1516},[1097,2556,1568],{"class":1113},[1097,2558,2559,2561,2563,2565,2567,2569],{"class":1099,"line":1151},[1097,2560,1352],{"class":1110},[1097,2562,1507],{"class":1113},[1097,2564,1510],{"class":1120},[1097,2566,1513],{"class":1113},[1097,2568,1581],{"class":1516},[1097,2570,1584],{"class":1113},[1087,2572,2573],{"className":1587,"code":1588,"language":5,"meta":1093,"style":1093},[840,2574,2575,2579,2597,2615,2631,2635,2639,2643,2661,2679,2695,2699,2703,2721,2739,2755,2759,2763,2767,2785,2803,2819,2823,2827,2831,2849,2867,2883],{"__ignoreMap":1093},[1097,2576,2577],{"class":1099,"line":1100},[1097,2578,1595],{"class":1294},[1097,2580,2581,2583,2585,2587,2589,2591,2593,2595],{"class":1099,"line":1107},[1097,2582,1601],{"class":1600},[1097,2584,1605],{"class":1604},[1097,2586,1601],{"class":1600},[1097,2588,1459],{"class":1458},[1097,2590,1612],{"class":1308},[1097,2592,1615],{"class":1113},[1097,2594,1601],{"class":1308},[1097,2596,1620],{"class":1294},[1097,2598,2599,2601,2603,2605,2607,2609,2611,2613],{"class":1099,"line":1139},[1097,2600,1601],{"class":1600},[1097,2602,1627],{"class":1604},[1097,2604,1601],{"class":1600},[1097,2606,1459],{"class":1458},[1097,2608,1612],{"class":1308},[1097,2610,1636],{"class":1113},[1097,2612,1601],{"class":1308},[1097,2614,1620],{"class":1294},[1097,2616,2617,2619,2621,2623,2625,2627,2629],{"class":1099,"line":1145},[1097,2618,1601],{"class":1600},[1097,2620,1647],{"class":1604},[1097,2622,1601],{"class":1600},[1097,2624,1459],{"class":1458},[1097,2626,1612],{"class":1308},[1097,2628,1656],{"class":1113},[1097,2630,1659],{"class":1308},[1097,2632,2633],{"class":1099,"line":1151},[1097,2634,1488],{"class":1294},[1097,2636,2637],{"class":1099,"line":1369},[1097,2638,1142],{"emptyLinePlaceholder":8},[1097,2640,2641],{"class":1099,"line":1375},[1097,2642,1595],{"class":1294},[1097,2644,2645,2647,2649,2651,2653,2655,2657,2659],{"class":1099,"line":1674},[1097,2646,1601],{"class":1600},[1097,2648,1605],{"class":1604},[1097,2650,1601],{"class":1600},[1097,2652,1459],{"class":1458},[1097,2654,1612],{"class":1308},[1097,2656,1687],{"class":1113},[1097,2658,1601],{"class":1308},[1097,2660,1620],{"class":1294},[1097,2662,2663,2665,2667,2669,2671,2673,2675,2677],{"class":1099,"line":1694},[1097,2664,1601],{"class":1600},[1097,2666,1627],{"class":1604},[1097,2668,1601],{"class":1600},[1097,2670,1459],{"class":1458},[1097,2672,1612],{"class":1308},[1097,2674,1707],{"class":1113},[1097,2676,1601],{"class":1308},[1097,2678,1620],{"class":1294},[1097,2680,2681,2683,2685,2687,2689,2691,2693],{"class":1099,"line":1714},[1097,2682,1601],{"class":1600},[1097,2684,1647],{"class":1604},[1097,2686,1601],{"class":1600},[1097,2688,1459],{"class":1458},[1097,2690,1612],{"class":1308},[1097,2692,1727],{"class":1113},[1097,2694,1659],{"class":1308},[1097,2696,2697],{"class":1099,"line":1732},[1097,2698,1488],{"class":1294},[1097,2700,2701],{"class":1099,"line":1737},[1097,2702,1595],{"class":1294},[1097,2704,2705,2707,2709,2711,2713,2715,2717,2719],{"class":1099,"line":1742},[1097,2706,1601],{"class":1600},[1097,2708,1605],{"class":1604},[1097,2710,1601],{"class":1600},[1097,2712,1459],{"class":1458},[1097,2714,1612],{"class":1308},[1097,2716,1755],{"class":1113},[1097,2718,1601],{"class":1308},[1097,2720,1620],{"class":1294},[1097,2722,2723,2725,2727,2729,2731,2733,2735,2737],{"class":1099,"line":1762},[1097,2724,1601],{"class":1600},[1097,2726,1627],{"class":1604},[1097,2728,1601],{"class":1600},[1097,2730,1459],{"class":1458},[1097,2732,1612],{"class":1308},[1097,2734,1775],{"class":1113},[1097,2736,1601],{"class":1308},[1097,2738,1620],{"class":1294},[1097,2740,2741,2743,2745,2747,2749,2751,2753],{"class":1099,"line":1782},[1097,2742,1601],{"class":1600},[1097,2744,1647],{"class":1604},[1097,2746,1601],{"class":1600},[1097,2748,1459],{"class":1458},[1097,2750,1612],{"class":1308},[1097,2752,1795],{"class":1113},[1097,2754,1659],{"class":1308},[1097,2756,2757],{"class":1099,"line":1800},[1097,2758,1488],{"class":1294},[1097,2760,2761],{"class":1099,"line":1805},[1097,2762,1142],{"emptyLinePlaceholder":8},[1097,2764,2765],{"class":1099,"line":1810},[1097,2766,1595],{"class":1294},[1097,2768,2769,2771,2773,2775,2777,2779,2781,2783],{"class":1099,"line":1815},[1097,2770,1601],{"class":1600},[1097,2772,1605],{"class":1604},[1097,2774,1601],{"class":1600},[1097,2776,1459],{"class":1458},[1097,2778,1612],{"class":1308},[1097,2780,1828],{"class":1113},[1097,2782,1601],{"class":1308},[1097,2784,1620],{"class":1294},[1097,2786,2787,2789,2791,2793,2795,2797,2799,2801],{"class":1099,"line":1835},[1097,2788,1601],{"class":1600},[1097,2790,1627],{"class":1604},[1097,2792,1601],{"class":1600},[1097,2794,1459],{"class":1458},[1097,2796,1612],{"class":1308},[1097,2798,1848],{"class":1113},[1097,2800,1601],{"class":1308},[1097,2802,1620],{"class":1294},[1097,2804,2805,2807,2809,2811,2813,2815,2817],{"class":1099,"line":1855},[1097,2806,1601],{"class":1600},[1097,2808,1647],{"class":1604},[1097,2810,1601],{"class":1600},[1097,2812,1459],{"class":1458},[1097,2814,1612],{"class":1308},[1097,2816,1868],{"class":1113},[1097,2818,1659],{"class":1308},[1097,2820,2821],{"class":1099,"line":1873},[1097,2822,1488],{"class":1294},[1097,2824,2825],{"class":1099,"line":1878},[1097,2826,1142],{"emptyLinePlaceholder":8},[1097,2828,2829],{"class":1099,"line":1883},[1097,2830,1595],{"class":1294},[1097,2832,2833,2835,2837,2839,2841,2843,2845,2847],{"class":1099,"line":1888},[1097,2834,1601],{"class":1600},[1097,2836,1605],{"class":1604},[1097,2838,1601],{"class":1600},[1097,2840,1459],{"class":1458},[1097,2842,1612],{"class":1308},[1097,2844,1901],{"class":1113},[1097,2846,1601],{"class":1308},[1097,2848,1620],{"class":1294},[1097,2850,2851,2853,2855,2857,2859,2861,2863,2865],{"class":1099,"line":1908},[1097,2852,1601],{"class":1600},[1097,2854,1627],{"class":1604},[1097,2856,1601],{"class":1600},[1097,2858,1459],{"class":1458},[1097,2860,1612],{"class":1308},[1097,2862,1921],{"class":1113},[1097,2864,1601],{"class":1308},[1097,2866,1620],{"class":1294},[1097,2868,2869,2871,2873,2875,2877,2879,2881],{"class":1099,"line":1928},[1097,2870,1601],{"class":1600},[1097,2872,1647],{"class":1604},[1097,2874,1601],{"class":1600},[1097,2876,1459],{"class":1458},[1097,2878,1612],{"class":1308},[1097,2880,1941],{"class":1113},[1097,2882,1659],{"class":1308},[1097,2884,2885],{"class":1099,"line":1946},[1097,2886,1488],{"class":1294},[1950,2888,2889],{},[821,2890,1954,2891,1958],{},[825,2892,1957],{"href":346},[1960,2894,1962],{},{"title":1093,"searchDepth":1107,"depth":1107,"links":2896},[2897,2898,2899,2900,2901],{"id":862,"depth":1107,"text":863},{"id":987,"depth":1107,"text":81},{"id":1075,"depth":1107,"text":1076},{"id":1428,"depth":1107,"text":1429},{"id":1493,"depth":1107,"text":1494},{},{"title":107,"description":1970},1780436289123]