[{"data":1,"prerenderedAt":4628},["ShallowReactive",2],{"navLinks":3,"sidebar_docs_navigation_\u002Fdocs\u002Fauth-h3client":64,"navigation":217,"navLinks_footer":829,"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started_page":842,"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started_surround":2913,"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started":2916},{"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":20,"path":22,"stem":70,"children":71},"docs\u002Fauth-h3client\u002Findex",[72,73,82,119,145,167,170,191,195],{"title":20,"path":22,"stem":70},{"title":14,"path":74,"stem":75,"children":76},"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started","docs\u002Fauth-h3client\u002F00.getting-started\u002Findex",[77,78],{"title":14,"path":74,"stem":75},{"title":79,"path":80,"stem":81},"Nuxt Module","\u002Fdocs\u002Fauth-h3client\u002Fgetting-started\u002Fnuxt","docs\u002Fauth-h3client\u002F00.getting-started\u002F00.nuxt",{"title":83,"path":84,"stem":85,"children":86},"Essentials","\u002Fdocs\u002Fauth-h3client\u002Fessentials","docs\u002Fauth-h3client\u002F01.essentials\u002Findex",[87,88,92,96,100,104,108,111,115],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91},"Session Management","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fsession","docs\u002Fauth-h3client\u002F01.essentials\u002F00.session",{"title":93,"path":94,"stem":95},"Route Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Froute-protection","docs\u002Fauth-h3client\u002F01.essentials\u002F01.route-protection",{"title":97,"path":98,"stem":99},"CSRF Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcsrf","docs\u002Fauth-h3client\u002F01.essentials\u002F02.csrf",{"title":101,"path":102,"stem":103},"Auth Flows","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fauth-flows","docs\u002Fauth-h3client\u002F01.essentials\u002F03.auth-flows",{"title":105,"path":106,"stem":107},"OAuth and OIDC","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Foauth","docs\u002Fauth-h3client\u002F01.essentials\u002F04.oauth",{"title":33,"path":109,"stem":110},"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fbot-detection","docs\u002Fauth-h3client\u002F01.essentials\u002F05.bot-detection",{"title":112,"path":113,"stem":114},"Cookies","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies","docs\u002Fauth-h3client\u002F01.essentials\u002F06.cookies",{"title":116,"path":117,"stem":118},"Logging","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Flogging","docs\u002Fauth-h3client\u002F01.essentials\u002F07.logging",{"title":120,"path":121,"stem":122,"children":123},"MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa","docs\u002Fauth-h3client\u002F02.mfa\u002Findex",[124,125,129,133,137,141],{"title":120,"path":121,"stem":122},{"title":126,"path":127,"stem":128},"Built-in MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fbuilt-in-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F01.built-in-flow",{"title":130,"path":131,"stem":132},"Password Reset","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fpassword-reset","docs\u002Fauth-h3client\u002F02.mfa\u002F02.password-reset",{"title":134,"path":135,"stem":136},"Email Change","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change","docs\u002Fauth-h3client\u002F02.mfa\u002F03.email-change",{"title":138,"path":139,"stem":140},"Custom MFA Flow","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fcustom-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F04.custom-flow",{"title":142,"path":143,"stem":144},"Client-Side MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side","docs\u002Fauth-h3client\u002F02.mfa\u002F05.client-side",{"title":146,"path":147,"stem":148,"children":149},"Client-side","\u002Fdocs\u002Fauth-h3client\u002Fclient","docs\u002Fauth-h3client\u002F03.client\u002Findex",[150,151,155,159,163],{"title":146,"path":147,"stem":148},{"title":152,"path":153,"stem":154},"useAuthData","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-auth-data","docs\u002Fauth-h3client\u002F03.client\u002F00.use-auth-data",{"title":156,"path":157,"stem":158},"useMagicLink","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-magic-link","docs\u002Fauth-h3client\u002F03.client\u002F01.use-magic-link",{"title":160,"path":161,"stem":162},"executeRequest","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fexecute-request","docs\u002Fauth-h3client\u002F03.client\u002F02.execute-request",{"title":164,"path":165,"stem":166},"getCsrfToken","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fget-csrf-token","docs\u002Fauth-h3client\u002F03.client\u002F03.get-csrf-token",{"title":38,"path":168,"stem":169},"\u002Fdocs\u002Fauth-h3client\u002Fsecurity","docs\u002Fauth-h3client\u002F04.security",{"title":171,"path":172,"stem":173,"children":174,"page":53},"Guides","\u002Fdocs\u002Fauth-h3client\u002Fguides","docs\u002Fauth-h3client\u002F05.guides",[175,179,183,187],{"title":176,"path":177,"stem":178},"H3 and Nitro Setup","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fh3-nitro","docs\u002Fauth-h3client\u002F05.guides\u002F00.h3-nitro",{"title":180,"path":181,"stem":182},"HMAC Inter-service Auth","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fhmac","docs\u002Fauth-h3client\u002F05.guides\u002Fhmac",{"title":184,"path":185,"stem":186},"Image Upload","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fimage-upload","docs\u002Fauth-h3client\u002F05.guides\u002Fimage-upload",{"title":188,"path":189,"stem":190},"mTLS Configuration","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fmtls","docs\u002Fauth-h3client\u002F05.guides\u002Fmtls",{"title":192,"path":193,"stem":194},"Configuration","\u002Fdocs\u002Fauth-h3client\u002Fconfiguration","docs\u002Fauth-h3client\u002F06.configuration",{"title":196,"path":197,"stem":198,"children":199},"API Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi","docs\u002Fauth-h3client\u002F07.api\u002Findex",[200,201,205,209,213],{"title":196,"path":197,"stem":198},{"title":202,"path":203,"stem":204},"Routes Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcontrollers","docs\u002Fauth-h3client\u002F07.api\u002F00.controllers",{"title":206,"path":207,"stem":208},"Middleware Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fmiddleware","docs\u002Fauth-h3client\u002F07.api\u002F01.middleware",{"title":210,"path":211,"stem":212},"Client-side Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcomposables","docs\u002Fauth-h3client\u002F07.api\u002F02.composables",{"title":214,"path":215,"stem":216},"Utilities","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Futilities","docs\u002Fauth-h3client\u002F07.api\u002F03.utilities",[218],{"title":9,"path":66,"stem":67,"children":219,"page":53},[220,268,386,391,569,636],{"title":20,"path":22,"stem":70,"children":221},[222,223,227,238,246,253,254,260,261],{"title":20,"path":22,"stem":70},{"title":14,"path":74,"stem":75,"children":224},[225,226],{"title":14,"path":74,"stem":75},{"title":79,"path":80,"stem":81},{"title":83,"path":84,"stem":85,"children":228},[229,230,231,232,233,234,235,236,237],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99},{"title":101,"path":102,"stem":103},{"title":105,"path":106,"stem":107},{"title":33,"path":109,"stem":110},{"title":112,"path":113,"stem":114},{"title":116,"path":117,"stem":118},{"title":120,"path":121,"stem":122,"children":239},[240,241,242,243,244,245],{"title":120,"path":121,"stem":122},{"title":126,"path":127,"stem":128},{"title":130,"path":131,"stem":132},{"title":134,"path":135,"stem":136},{"title":138,"path":139,"stem":140},{"title":142,"path":143,"stem":144},{"title":146,"path":147,"stem":148,"children":247},[248,249,250,251,252],{"title":146,"path":147,"stem":148},{"title":152,"path":153,"stem":154},{"title":156,"path":157,"stem":158},{"title":160,"path":161,"stem":162},{"title":164,"path":165,"stem":166},{"title":38,"path":168,"stem":169},{"title":171,"path":172,"stem":173,"children":255,"page":53},[256,257,258,259],{"title":176,"path":177,"stem":178},{"title":180,"path":181,"stem":182},{"title":184,"path":185,"stem":186},{"title":188,"path":189,"stem":190},{"title":192,"path":193,"stem":194},{"title":196,"path":197,"stem":198,"children":262},[263,264,265,266,267],{"title":196,"path":197,"stem":198},{"title":202,"path":203,"stem":204},{"title":206,"path":207,"stem":208},{"title":210,"path":211,"stem":212},{"title":214,"path":215,"stem":216},{"title":269,"path":35,"stem":270,"children":271},"Bot Detector","docs\u002Fbot-detection\u002Findex",[272,273,276,280,284,303,377,380,383],{"title":269,"path":35,"stem":270},{"title":14,"path":274,"stem":275},"\u002Fdocs\u002Fbot-detection\u002Fgetting-started","docs\u002Fbot-detection\u002F00.getting-started",{"title":277,"path":278,"stem":279},"CLI","\u002Fdocs\u002Fbot-detection\u002Fcli","docs\u002Fbot-detection\u002F01.cli",{"title":281,"path":282,"stem":283},"Data Sources","\u002Fdocs\u002Fbot-detection\u002Fdata-sources","docs\u002Fbot-detection\u002F02.data-sources",{"title":171,"path":285,"stem":286,"children":287,"page":53},"\u002Fdocs\u002Fbot-detection\u002Fguides","docs\u002Fbot-detection\u002F03.guides",[288,292,296,299],{"title":289,"path":290,"stem":291},"Custom Checkers","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fcustom","docs\u002Fbot-detection\u002F03.guides\u002FCUSTOM",{"title":293,"path":294,"stem":295},"Scheduling Database Generation","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fgenerate","docs\u002Fbot-detection\u002F03.guides\u002FGENERATE",{"title":116,"path":297,"stem":298},"\u002Fdocs\u002Fbot-detection\u002Fguides\u002Flogging","docs\u002Fbot-detection\u002F03.guides\u002FLOGGING",{"title":300,"path":301,"stem":302},"Score Modes and Reputation Healing","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fscore","docs\u002Fbot-detection\u002F03.guides\u002FSCORE",{"title":304,"path":305,"stem":306,"children":307},"Checkers","\u002Fdocs\u002Fbot-detection\u002Fcheckers","docs\u002Fbot-detection\u002F04.checkers\u002Findex",[308,309,313,317,321,325,329,333,337,341,345,349,353,357,361,365,369,373],{"title":304,"path":305,"stem":306},{"title":310,"path":311,"stem":312},"IP Validation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fip-validation","docs\u002Fbot-detection\u002F04.checkers\u002F01.ip-validation",{"title":314,"path":315,"stem":316},"Good \u002F Bad Bot Verification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgood-bots","docs\u002Fbot-detection\u002F04.checkers\u002F02.good-bots",{"title":318,"path":319,"stem":320},"Browser & Device Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbrowser-device","docs\u002Fbot-detection\u002F04.checkers\u002F03.browser-device",{"title":322,"path":323,"stem":324},"Locale Map","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Flocale-map","docs\u002Fbot-detection\u002F04.checkers\u002F04.locale-map",{"title":326,"path":327,"stem":328},"Known Threats","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-threats","docs\u002Fbot-detection\u002F04.checkers\u002F05.known-threats",{"title":330,"path":331,"stem":332},"ASN Classification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fasn-classification","docs\u002Fbot-detection\u002F04.checkers\u002F06.asn-classification",{"title":334,"path":335,"stem":336},"Tor Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftor-analysis","docs\u002Fbot-detection\u002F04.checkers\u002F07.tor-analysis",{"title":338,"path":339,"stem":340},"Timezone Consistency","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftimezone-consistency","docs\u002Fbot-detection\u002F04.checkers\u002F08.timezone-consistency",{"title":342,"path":343,"stem":344},"Honeypot","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fhoneypot","docs\u002Fbot-detection\u002F04.checkers\u002F09.honeypot",{"title":346,"path":347,"stem":348},"Known Bad IPs","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ips","docs\u002Fbot-detection\u002F04.checkers\u002F10.known-bad-ips",{"title":350,"path":351,"stem":352},"Behavior Rate","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbehavior-rate","docs\u002Fbot-detection\u002F04.checkers\u002F11.behavior-rate",{"title":354,"path":355,"stem":356},"Proxy \u002F ISP \u002F Cookie","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fproxy-isp-cookies","docs\u002Fbot-detection\u002F04.checkers\u002F12.proxy-isp-cookies",{"title":358,"path":359,"stem":360},"Session Coherence","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fsession-coherence","docs\u002Fbot-detection\u002F04.checkers\u002F13.session-coherence",{"title":362,"path":363,"stem":364},"Velocity Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fvelocity-fingerprint","docs\u002Fbot-detection\u002F04.checkers\u002F14.velocity-fingerprint",{"title":366,"path":367,"stem":368},"UA & Header Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fua-header","docs\u002Fbot-detection\u002F04.checkers\u002F15.ua-header",{"title":370,"path":371,"stem":372},"Geolocation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgeolocation","docs\u002Fbot-detection\u002F04.checkers\u002F16.geolocation",{"title":374,"path":375,"stem":376},"Known Bad User-Agents","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ua","docs\u002Fbot-detection\u002F04.checkers\u002F17.known-bad-ua",{"title":38,"path":378,"stem":379},"\u002Fdocs\u002Fbot-detection\u002Fsecurity","docs\u002Fbot-detection\u002F04.security",{"title":196,"path":381,"stem":382},"\u002Fdocs\u002Fbot-detection\u002Fapi","docs\u002Fbot-detection\u002F05.api",{"title":192,"path":384,"stem":385},"\u002Fdocs\u002Fbot-detection\u002Fconfiguration","docs\u002Fbot-detection\u002F06.configuration",{"title":387,"path":11,"stem":388,"children":389},"Introduction","docs\u002Fgetting-started\u002Findex",[390],{"title":387,"path":11,"stem":388},{"title":27,"path":29,"stem":392,"children":393},"docs\u002Fiam\u002Findex",[394,395,398,533,536,552,555],{"title":27,"path":29,"stem":392},{"title":14,"path":396,"stem":397},"\u002Fdocs\u002Fiam\u002Fgetting-started","docs\u002Fiam\u002F00.getting-started",{"title":83,"path":399,"stem":400,"children":401},"\u002Fdocs\u002Fiam\u002Fessentials","docs\u002Fiam\u002F01.essentials\u002Findex",[402,403,407,411,415,419,423,427,431,435,439,443,446,450,454,458,462,465,469,473,476,480,483],{"title":83,"path":399,"stem":400},{"title":404,"path":405,"stem":406},"Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Ftokens","docs\u002Fiam\u002F01.essentials\u002F00.tokens",{"title":408,"path":409,"stem":410},"Access Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Faccess-tokens","docs\u002Fiam\u002F01.essentials\u002F01.access-tokens",{"title":412,"path":413,"stem":414},"Refresh Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Frefresh-tokens","docs\u002Fiam\u002F01.essentials\u002F02.refresh-tokens",{"title":416,"path":417,"stem":418},"Anomaly Detection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fanomalies","docs\u002Fiam\u002F01.essentials\u002F03.anomalies",{"title":420,"path":421,"stem":422},"Signup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fsignup","docs\u002Fiam\u002F01.essentials\u002F04.signup",{"title":424,"path":425,"stem":426},"Login","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogin","docs\u002Fiam\u002F01.essentials\u002F05.login",{"title":428,"path":429,"stem":430},"Logout","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogout","docs\u002Fiam\u002F01.essentials\u002F06.logout",{"title":432,"path":433,"stem":434},"OAuth","\u002Fdocs\u002Fiam\u002Fessentials\u002Foauth","docs\u002Fiam\u002F01.essentials\u002F07.oauth",{"title":436,"path":437,"stem":438},"Magic Links","\u002Fdocs\u002Fiam\u002Fessentials\u002Fmagic-links","docs\u002Fiam\u002F01.essentials\u002F08.magic-links",{"title":440,"path":441,"stem":442},"Emails","\u002Fdocs\u002Fiam\u002Fessentials\u002Femails","docs\u002Fiam\u002F01.essentials\u002F09.emails",{"title":120,"path":444,"stem":445},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fmfa","docs\u002Fiam\u002F01.essentials\u002F10.mfa",{"title":447,"path":448,"stem":449},"Fingerprinting","\u002Fdocs\u002Fiam\u002Fessentials\u002Ffingerprinting","docs\u002Fiam\u002F01.essentials\u002F11.fingerprinting",{"title":451,"path":452,"stem":453},"Backend for Frontend","\u002Fdocs\u002Fiam\u002Fessentials\u002Fbff","docs\u002Fiam\u002F01.essentials\u002F12.bff",{"title":455,"path":456,"stem":457},"HMAC Authentication","\u002Fdocs\u002Fiam\u002Fessentials\u002Fhmac","docs\u002Fiam\u002F01.essentials\u002F13.hmac",{"title":459,"path":460,"stem":461},"XSS Protection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fxss","docs\u002Fiam\u002F01.essentials\u002F14.xss",{"title":116,"path":463,"stem":464},"\u002Fdocs\u002Fiam\u002Fessentials\u002Flogging","docs\u002Fiam\u002F01.essentials\u002F15.logging",{"title":466,"path":467,"stem":468},"Rate Limiting","\u002Fdocs\u002Fiam\u002Fessentials\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F16.rate-limiting",{"title":470,"path":471,"stem":472},"Database","\u002Fdocs\u002Fiam\u002Fessentials\u002Fdatabase","docs\u002Fiam\u002F01.essentials\u002F17.database",{"title":112,"path":474,"stem":475},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fcookies","docs\u002Fiam\u002F01.essentials\u002F18.cookies",{"title":477,"path":478,"stem":479},"Service Startup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fservice","docs\u002Fiam\u002F01.essentials\u002F19.service",{"title":130,"path":481,"stem":482},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fpassword-reset","docs\u002Fiam\u002F01.essentials\u002F20.password-reset",{"title":484,"path":485,"stem":486,"children":487},"API Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi","docs\u002Fiam\u002F01.essentials\u002F21.api\u002Findex",[488,489,493,497,527,530],{"title":484,"path":485,"stem":486},{"title":490,"path":491,"stem":492},"Creating Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fcreation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F00.creation",{"title":494,"path":495,"stem":496},"Verifying Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fverification","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F01.verification",{"title":498,"path":499,"stem":500,"children":501},"Manage Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002Findex",[502,503,507,511,515,519,523],{"title":498,"path":499,"stem":500},{"title":504,"path":505,"stem":506},"Privileges","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fprivilege","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F00.privilege",{"title":508,"path":509,"stem":510},"Revocation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frevocation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F01.revocation",{"title":512,"path":513,"stem":514},"Rotation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frotation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F02.rotation",{"title":516,"path":517,"stem":518},"IP Restriction","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fip-updates","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F03.ip-updates",{"title":520,"path":521,"stem":522},"Metadata","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fmetadata","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F04.metadata",{"title":524,"path":525,"stem":526},"Token Listing","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Flist","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F05.list",{"title":466,"path":528,"stem":529},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F03.rate-limiting",{"title":38,"path":531,"stem":532},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fsecurity","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F04.security",{"title":38,"path":534,"stem":535},"\u002Fdocs\u002Fiam\u002Fsecurity","docs\u002Fiam\u002F02.security",{"title":171,"path":537,"stem":538,"children":539,"page":53},"\u002Fdocs\u002Fiam\u002Fguides","docs\u002Fiam\u002F03.guides",[540,544,548],{"title":541,"path":542,"stem":543},"Deployment","\u002Fdocs\u002Fiam\u002Fguides\u002Fdeployment","docs\u002Fiam\u002F03.guides\u002Fdeployment",{"title":545,"path":546,"stem":547},"Operation Scripts","\u002Fdocs\u002Fiam\u002Fguides\u002Foperation-scripts","docs\u002Fiam\u002F03.guides\u002Foperation-scripts",{"title":549,"path":550,"stem":551},"Role-Based Access Control","\u002Fdocs\u002Fiam\u002Fguides\u002Frbac","docs\u002Fiam\u002F03.guides\u002Frbac",{"title":192,"path":553,"stem":554},"\u002Fdocs\u002Fiam\u002Fconfiguration","docs\u002Fiam\u002F04.configuration",{"title":556,"path":557,"stem":558,"children":559,"page":53},"Api","\u002Fdocs\u002Fiam\u002Fapi","docs\u002Fiam\u002F05.API",[560,563,566],{"title":196,"path":561,"stem":562},"\u002Fdocs\u002Fiam\u002Fapi\u002Fapi","docs\u002Fiam\u002F05.API\u002F00.api",{"title":206,"path":564,"stem":565},"\u002Fdocs\u002Fiam\u002Fapi\u002Fmiddlewares","docs\u002Fiam\u002F05.API\u002F02.middlewares",{"title":202,"path":567,"stem":568},"\u002Fdocs\u002Fiam\u002Fapi\u002Froutes","docs\u002Fiam\u002F05.API\u002F03.routes",{"title":40,"path":42,"stem":570,"children":571},"docs\u002Fshield-base\u002Findex",[572,573,576,580,621,625,629,633],{"title":40,"path":42,"stem":570},{"title":14,"path":574,"stem":575},"\u002Fdocs\u002Fshield-base\u002Fgetting-started","docs\u002Fshield-base\u002F00.getting-started",{"title":577,"path":578,"stem":579},"CLI Reference","\u002Fdocs\u002Fshield-base\u002Fcli","docs\u002Fshield-base\u002F01.cli",{"title":281,"path":581,"stem":582,"children":583},"\u002Fdocs\u002Fshield-base\u002Fdata-sources","docs\u002Fshield-base\u002F02.data-sources\u002Findex",[584,585,589,593,597,601,605,609,613,617],{"title":281,"path":581,"stem":582},{"title":586,"path":587,"stem":588},"BGP \u002F ASN","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fbgp","docs\u002Fshield-base\u002F02.data-sources\u002Fbgp",{"title":590,"path":591,"stem":592},"City Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity","docs\u002Fshield-base\u002F02.data-sources\u002Fcity",{"title":594,"path":595,"stem":596},"Country Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcountry","docs\u002Fshield-base\u002F02.data-sources\u002Fcountry",{"title":598,"path":599,"stem":600},"Verified Crawlers","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcrawlers","docs\u002Fshield-base\u002F02.data-sources\u002Fcrawlers",{"title":602,"path":603,"stem":604},"Disposable Emails","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Femail","docs\u002Fshield-base\u002F02.data-sources\u002Femail",{"title":606,"path":607,"stem":608},"FireHOL Threat Intelligence","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol","docs\u002Fshield-base\u002F02.data-sources\u002Ffirehol",{"title":610,"path":611,"stem":612},"Proxy Detection","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fproxy","docs\u002Fshield-base\u002F02.data-sources\u002Fproxy",{"title":614,"path":615,"stem":616},"Tor Nodes","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ftor","docs\u002Fshield-base\u002F02.data-sources\u002Ftor",{"title":618,"path":619,"stem":620},"Suspicious User-Agents","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fuseragent","docs\u002Fshield-base\u002F02.data-sources\u002Fuseragent",{"title":622,"path":623,"stem":624},"Programmatic Usage","\u002Fdocs\u002Fshield-base\u002Fusage","docs\u002Fshield-base\u002F03.usage",{"title":626,"path":627,"stem":628},"Custom Data Sources","\u002Fdocs\u002Fshield-base\u002Fcustom-data-sources","docs\u002Fshield-base\u002F04.custom-data-sources",{"title":630,"path":631,"stem":632},"TypeScript Types","\u002Fdocs\u002Fshield-base\u002Ftypes","docs\u002Fshield-base\u002F05.types",{"title":196,"path":634,"stem":635},"\u002Fdocs\u002Fshield-base\u002Fapi","docs\u002Fshield-base\u002F06.api",{"title":214,"path":48,"stem":637,"children":638},"docs\u002Futils\u002Findex",[639,640,657,690,787],{"title":214,"path":48,"stem":637},{"title":641,"path":642,"stem":643,"children":644,"page":53},"Eslint","\u002Fdocs\u002Futils\u002Feslint","docs\u002Futils\u002Feslint",[645,649,653],{"title":646,"path":647,"stem":648},"React Config","\u002Fdocs\u002Futils\u002Feslint\u002Freact","docs\u002Futils\u002Feslint\u002Freact",{"title":650,"path":651,"stem":652},"TypeScript Config","\u002Fdocs\u002Futils\u002Feslint\u002Ftypescript","docs\u002Futils\u002Feslint\u002Ftypescript",{"title":654,"path":655,"stem":656},"Vue Config","\u002Fdocs\u002Futils\u002Feslint\u002Fvue","docs\u002Futils\u002Feslint\u002Fvue",{"title":658,"path":659,"stem":660,"children":661,"page":53},"Server","\u002Fdocs\u002Futils\u002Fserver","docs\u002Futils\u002Fserver",[662,666,670,674,678,682,686],{"title":663,"path":664,"stem":665},"Encryption","\u002Fdocs\u002Futils\u002Fserver\u002Fencryption","docs\u002Futils\u002Fserver\u002Fencryption",{"title":667,"path":668,"stem":669},"Path Resolver","\u002Fdocs\u002Futils\u002Fserver\u002Fpathresolver","docs\u002Futils\u002Fserver\u002FpathResolver",{"title":671,"path":672,"stem":673},"File Replacements","\u002Fdocs\u002Futils\u002Fserver\u002Freplace","docs\u002Futils\u002Fserver\u002Freplace",{"title":675,"path":676,"stem":677},"run","\u002Fdocs\u002Futils\u002Fserver\u002Frun","docs\u002Futils\u002Fserver\u002Frun",{"title":679,"path":680,"stem":681},"scheduleTask","\u002Fdocs\u002Futils\u002Fserver\u002Fscheduletask","docs\u002Futils\u002Fserver\u002FscheduleTask",{"title":683,"path":684,"stem":685},"spawnRun","\u002Fdocs\u002Futils\u002Fserver\u002Fspawnrun","docs\u002Futils\u002Fserver\u002FspawnRun",{"title":687,"path":688,"stem":689},"uploadCsv","\u002Fdocs\u002Futils\u002Fserver\u002Fuploadcsv","docs\u002Futils\u002Fserver\u002FuploadCsv",{"title":691,"path":692,"stem":693,"children":694,"page":53},"Shared","\u002Fdocs\u002Futils\u002Fshared","docs\u002Futils\u002Fshared",[695,699,703,707,711,715,719,723,727,731,735,739,743,747,751,755,759,763,767,771,775,779,783],{"title":696,"path":697,"stem":698},"BatchQueue","\u002Fdocs\u002Futils\u002Fshared\u002Fbatchqueue","docs\u002Futils\u002Fshared\u002FbatchQueue",{"title":700,"path":701,"stem":702},"capitalize","\u002Fdocs\u002Futils\u002Fshared\u002Fcapitalize","docs\u002Futils\u002Fshared\u002Fcapitalize",{"title":704,"path":705,"stem":706},"chunkProcess","\u002Fdocs\u002Futils\u002Fshared\u002Fchunkprocess","docs\u002Futils\u002Fshared\u002FchunkProcess",{"title":708,"path":709,"stem":710},"cleanObject","\u002Fdocs\u002Futils\u002Fshared\u002Fcleanobject","docs\u002Futils\u002Fshared\u002FcleanObject",{"title":712,"path":713,"stem":714},"createConfigManager","\u002Fdocs\u002Futils\u002Fshared\u002Fconfigurationdefiner","docs\u002Futils\u002Fshared\u002FconfigurationDefiner",{"title":716,"path":717,"stem":718},"debounce","\u002Fdocs\u002Futils\u002Fshared\u002Fdebounce","docs\u002Futils\u002Fshared\u002Fdebounce",{"title":720,"path":721,"stem":722},"ensureArray","\u002Fdocs\u002Futils\u002Fshared\u002Fensurearray","docs\u002Futils\u002Fshared\u002FensureArray",{"title":724,"path":725,"stem":726},"fetchWithRetry","\u002Fdocs\u002Futils\u002Fshared\u002Ffetchwithretry","docs\u002Futils\u002Fshared\u002FfetchWithRetry",{"title":728,"path":729,"stem":730},"filterEmptyValues","\u002Fdocs\u002Futils\u002Fshared\u002Ffilteremptyvalues","docs\u002Futils\u002Fshared\u002FfilterEmptyValues",{"title":732,"path":733,"stem":734},"findStringsInObject","\u002Fdocs\u002Futils\u002Fshared\u002Ffindobjectvalues","docs\u002Futils\u002Fshared\u002FfindObjectValues",{"title":736,"path":737,"stem":738},"fisherYatesShuffle","\u002Fdocs\u002Futils\u002Fshared\u002Ffisheryatesshuffle","docs\u002Futils\u002Fshared\u002FfisherYatesShuffle",{"title":740,"path":741,"stem":742},"getRandomImage","\u002Fdocs\u002Futils\u002Fshared\u002Fgetrandomimage","docs\u002Futils\u002Fshared\u002FgetRandomImage",{"title":744,"path":745,"stem":746},"isObjectHasValues","\u002Fdocs\u002Futils\u002Fshared\u002Fisobjecthasvalues","docs\u002Futils\u002Fshared\u002FisObjectHasValues",{"title":748,"path":749,"stem":750},"isAsyncOrPromise","\u002Fdocs\u002Futils\u002Fshared\u002Fispromise","docs\u002Futils\u002Fshared\u002FisPromise",{"title":752,"path":753,"stem":754},"MiniCache","\u002Fdocs\u002Futils\u002Fshared\u002Fminicache","docs\u002Futils\u002Fshared\u002FminiCache",{"title":756,"path":757,"stem":758},"parseCookies","\u002Fdocs\u002Futils\u002Fshared\u002Fparserawcookies","docs\u002Futils\u002Fshared\u002FparseRawCookies",{"title":760,"path":761,"stem":762},"safeAction","\u002Fdocs\u002Futils\u002Fshared\u002Fpromiselocker","docs\u002Futils\u002Fshared\u002FpromiseLocker",{"title":764,"path":765,"stem":766},"Random","\u002Fdocs\u002Futils\u002Fshared\u002Frandom","docs\u002Futils\u002Fshared\u002Frandom",{"title":768,"path":769,"stem":770},"range","\u002Fdocs\u002Futils\u002Fshared\u002Frange","docs\u002Futils\u002Fshared\u002Frange",{"title":772,"path":773,"stem":774},"rateLimiters","\u002Fdocs\u002Futils\u002Fshared\u002Fratelimiters","docs\u002Futils\u002Fshared\u002FrateLimiters",{"title":776,"path":777,"stem":778},"safeObjectMerge","\u002Fdocs\u002Futils\u002Fshared\u002Fsafemerge","docs\u002Futils\u002Fshared\u002FsafeMerge",{"title":780,"path":781,"stem":782},"textTruncation","\u002Fdocs\u002Futils\u002Fshared\u002Ftexttruncation","docs\u002Futils\u002Fshared\u002FtextTruncation",{"title":784,"path":785,"stem":786},"validateZodSchema","\u002Fdocs\u002Futils\u002Fshared\u002Fvalidatezodschema","docs\u002Futils\u002Fshared\u002FvalidateZodSchema",{"title":788,"path":789,"stem":790,"children":791},"Utility Types","\u002Fdocs\u002Futils\u002Ftypes","docs\u002Futils\u002Ftypes\u002Findex",[792,793,797,801,805,809,813,817,821,825],{"title":788,"path":789,"stem":790},{"title":794,"path":795,"stem":796},"Brand","\u002Fdocs\u002Futils\u002Ftypes\u002Fbrand","docs\u002Futils\u002Ftypes\u002FBrand",{"title":798,"path":799,"stem":800},"DeepPartial","\u002Fdocs\u002Futils\u002Ftypes\u002Fdeeppartial","docs\u002Futils\u002Ftypes\u002FDeepPartial",{"title":802,"path":803,"stem":804},"Merge","\u002Fdocs\u002Futils\u002Ftypes\u002Fmerge","docs\u002Futils\u002Ftypes\u002FMerge",{"title":806,"path":807,"stem":808},"NonNullable","\u002Fdocs\u002Futils\u002Ftypes\u002Fnonnullable","docs\u002Futils\u002Ftypes\u002FNonNullable",{"title":810,"path":811,"stem":812},"Prettify","\u002Fdocs\u002Futils\u002Ftypes\u002Fprettify","docs\u002Futils\u002Ftypes\u002FPrettify",{"title":814,"path":815,"stem":816},"PromiseType","\u002Fdocs\u002Futils\u002Ftypes\u002Fpromisetype","docs\u002Futils\u002Ftypes\u002FPromiseType",{"title":818,"path":819,"stem":820},"RequireKeys","\u002Fdocs\u002Futils\u002Ftypes\u002Frequirekeys","docs\u002Futils\u002Ftypes\u002FRequireKeys",{"title":822,"path":823,"stem":824},"StandardResponse","\u002Fdocs\u002Futils\u002Ftypes\u002Fstandardresponse","docs\u002Futils\u002Ftypes\u002FStandardResponse",{"title":826,"path":827,"stem":828},"ValueOf","\u002Fdocs\u002Futils\u002Ftypes\u002Fvalueof","docs\u002Futils\u002Ftypes\u002FValueOf",{"id":4,"extension":5,"links":830,"meta":841,"stem":62,"__hash__":63},[831,839,840],{"nested":8,"label":9,"icon":10,"to":11,"children":832},[833,834,835,836,837,838],{"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":843,"title":14,"body":844,"description":2906,"extension":2907,"icon":15,"meta":2908,"module":2909,"navigation":8,"path":74,"rawbody":2910,"seo":2911,"stem":75,"__hash__":2912},"docs\u002Fdocs\u002Fauth-h3client\u002F00.getting-started\u002Findex.md",{"type":845,"value":846,"toc":2895},"minimark",[847,860,865,881,885,956,959,963,966,973,1110,1136,1143,1147,1150,1165,1170,1776,1780,1783,2153,2160,2165,2169,2175,2823,2827,2833,2847,2880,2891],[848,849,850,854,855,859],"p",{},[851,852,853],"code",{},"@riavzon\u002Fauth-h3client"," connects your Nuxt or Nitro application to a running ",[856,857,858],"a",{"href":29},"IAM service",". The module registers server middleware, auto-imports server utilities and client composables, and wires up the authentication routes in a single Nitro plugin call.",[861,862,864],"h2",{"id":863},"requirements","Requirements",[866,867,868,872,875],"ul",{},[869,870,871],"li",{},"Node.js 22 or later",[869,873,874],{},"Nuxt 3 and later or a Nitro\u002FH3 application",[869,876,877,878,880],{},"A running ",[856,879,858],{"href":396}," reachable from your server",[861,882,884],{"id":883},"installation","Installation",[886,887,888,913,927,942],"code-group",{},[889,890,896],"pre",{"className":891,"code":892,"filename":893,"language":894,"meta":895,"style":895},"language-bash shiki shiki-themes light-plus light-plus dracula","pnpm add @riavzon\u002Fauth-h3client\n","pnpm","bash","",[851,897,898],{"__ignoreMap":895},[899,900,903,906,910],"span",{"class":901,"line":902},"line",1,[899,904,893],{"class":905},"sHOzp",[899,907,909],{"class":908},"sFB1V"," add",[899,911,912],{"class":908}," @riavzon\u002Fauth-h3client\n",[889,914,917],{"className":891,"code":915,"filename":916,"language":894,"meta":895,"style":895},"yarn add @riavzon\u002Fauth-h3client\n","yarn",[851,918,919],{"__ignoreMap":895},[899,920,921,923,925],{"class":901,"line":902},[899,922,916],{"class":905},[899,924,909],{"class":908},[899,926,912],{"class":908},[889,928,931],{"className":891,"code":929,"filename":930,"language":894,"meta":895,"style":895},"npm install @riavzon\u002Fauth-h3client\n","npm",[851,932,933],{"__ignoreMap":895},[899,934,935,937,940],{"class":901,"line":902},[899,936,930],{"class":905},[899,938,939],{"class":908}," install",[899,941,912],{"class":908},[889,943,946],{"className":891,"code":944,"filename":945,"language":894,"meta":895,"style":895},"bun add @riavzon\u002Fauth-h3client\n","bun",[851,947,948],{"__ignoreMap":895},[899,949,950,952,954],{"class":901,"line":902},[899,951,945],{"class":905},[899,953,909],{"class":908},[899,955,912],{"class":908},[957,958],"hr",{},[861,960,962],{"id":961},"nuxt-module-setup","Nuxt module setup",[848,964,965],{},"If you are using Nuxt, use the dedicated module. It handles auto-imports and can register the bundled middleware for you, while your Nitro plugin provides the runtime configuration.",[848,967,968,969,972],{},"Register the module in ",[851,970,971],{},"nuxt.config.ts",". This enables the auto-import of all server utilities and client composables, and optionally registers the global security middleware.",[889,974,978],{"className":975,"code":976,"filename":971,"language":977,"meta":895,"style":895},"language-ts shiki shiki-themes light-plus light-plus dracula","export default defineNuxtConfig({\n  modules: ['auth-h3client\u002Fmodule'],\n  authH3Client: {\n    enableMiddleware: true,\n    authStatusUrl: '\u002Fapi\u002Fauth\u002Fusers\u002FauthStatus',\n    registerApiRoute: {\n      path: '\u002Fapi\u002Fauth\u002Fapi-tokens'\n    }\n  }\n})\n","ts",[851,979,980,996,1022,1033,1048,1066,1076,1092,1098,1104],{"__ignoreMap":895},[899,981,982,986,989,992],{"class":901,"line":902},[899,983,985],{"class":984},"sZ328","export",[899,987,988],{"class":984}," default",[899,990,991],{"class":905}," defineNuxtConfig",[899,993,995],{"class":994},"sDd4n","({\n",[899,997,999,1003,1007,1010,1014,1017,1019],{"class":901,"line":998},2,[899,1000,1002],{"class":1001},"sjsA6","  modules",[899,1004,1006],{"class":1005},"s34zl",":",[899,1008,1009],{"class":994}," [",[899,1011,1013],{"class":1012},"sFkSl","'",[899,1015,1016],{"class":908},"auth-h3client\u002Fmodule",[899,1018,1013],{"class":1012},[899,1020,1021],{"class":994},"],\n",[899,1023,1025,1028,1030],{"class":901,"line":1024},3,[899,1026,1027],{"class":1001},"  authH3Client",[899,1029,1006],{"class":1005},[899,1031,1032],{"class":994}," {\n",[899,1034,1036,1039,1041,1045],{"class":901,"line":1035},4,[899,1037,1038],{"class":1001},"    enableMiddleware",[899,1040,1006],{"class":1005},[899,1042,1044],{"class":1043},"sjR7W"," true",[899,1046,1047],{"class":994},",\n",[899,1049,1051,1054,1056,1059,1062,1064],{"class":901,"line":1050},5,[899,1052,1053],{"class":1001},"    authStatusUrl",[899,1055,1006],{"class":1005},[899,1057,1058],{"class":1012}," '",[899,1060,1061],{"class":908},"\u002Fapi\u002Fauth\u002Fusers\u002FauthStatus",[899,1063,1013],{"class":1012},[899,1065,1047],{"class":994},[899,1067,1069,1072,1074],{"class":901,"line":1068},6,[899,1070,1071],{"class":1001},"    registerApiRoute",[899,1073,1006],{"class":1005},[899,1075,1032],{"class":994},[899,1077,1079,1082,1084,1086,1089],{"class":901,"line":1078},7,[899,1080,1081],{"class":1001},"      path",[899,1083,1006],{"class":1005},[899,1085,1058],{"class":1012},[899,1087,1088],{"class":908},"\u002Fapi\u002Fauth\u002Fapi-tokens",[899,1090,1091],{"class":1012},"'\n",[899,1093,1095],{"class":901,"line":1094},8,[899,1096,1097],{"class":994},"    }\n",[899,1099,1101],{"class":901,"line":1100},9,[899,1102,1103],{"class":994},"  }\n",[899,1105,1107],{"class":901,"line":1106},10,[899,1108,1109],{"class":994},"})\n",[1111,1112,1113],"warning",{},[848,1114,1115,1116,1119,1120,1123,1124,1127,1128,1131,1132,1135],{},"If your Nuxt app also exposes machine-to-machine routes protected with\n",[851,1117,1118],{},"defineAuthenticatePublicApi",", do not run the global auth middleware on those\npaths. That middleware runs ",[851,1121,1122],{},"isIPValid",", ",[851,1125,1126],{},"botDetectorMiddleware",", and\n",[851,1129,1130],{},"generateCsrfCookie",", which regular browser auth requests still need, but\nrepeated API-key verification traffic can be rate-limited or banned by the bot\ndetector. In mixed apps, set ",[851,1133,1134],{},"enableMiddleware: false"," and register your own\nserver middleware so those API-key routes bypass the browser middleware chain.\nThe module still registers the auth status route and, when configured, the\noptional API token list route.",[848,1137,1138,1139,1142],{},"Read the ",[856,1140,1141],{"href":80},"Nuxt Module Documentation"," for full configuration and usage.",[861,1144,1146],{"id":1145},"h3-v1-h3-v2","H3 v1 H3 v2",[848,1148,1149],{},"This module supports both H3 v1 and H3 v2. Choose the matching entry point for your H3 version:",[866,1151,1152,1159],{},[869,1153,1154,1155,1158],{},"H3 v1 (default): import from auth-h3client or auth-h3client\u002Fv1. supported version: ",[851,1156,1157],{},"h3@^1.15.4",".",[869,1160,1161,1162,1158],{},"H3 v2: import from auth-h3client\u002Fv2. supported version: ",[851,1163,1164],{},"h3@^2.0.0-beta.4",[1166,1167,1169],"h3",{"id":1168},"register-the-routes","Register the routes",[886,1171,1172,1483],{},[889,1173,1176],{"className":975,"code":1174,"filename":1175,"language":977,"meta":895,"style":895},"import { createApp, createRouter } from \"h3\";\nimport { configuration, httpLogger, useAuthRoutes, useOAuthRoutes, magicLinksRouter, bounceRouter } from 'auth-h3client';\n\nconfiguration(config);\n\nconst app = createApp();\nhttpLogger()(app);\napp.use(isIPValid);\napp.use(botDetectorMiddleware);\napp.use(generateCsrfCookie);\n\nconst router = createRouter();\nuseAuthRoutes(router);\nuseOAuthRoutes(router);\nbounceRouter(router);\nmagicLinksRouter(router, 'api');\nrouter.get('\u002Fauth\u002Fusers\u002FauthStatus', getAuthStatusHandler)\napp.use(router);\n\n\u002F\u002F Your handlers\n","H3v1",[851,1177,1178,1211,1258,1263,1276,1280,1300,1312,1327,1341,1355,1360,1375,1387,1398,1409,1429,1456,1471,1476],{"__ignoreMap":895},[899,1179,1180,1183,1186,1189,1191,1194,1197,1200,1203,1205,1208],{"class":901,"line":902},[899,1181,1182],{"class":984},"import",[899,1184,1185],{"class":994}," { ",[899,1187,1188],{"class":1001},"createApp",[899,1190,1123],{"class":994},[899,1192,1193],{"class":1001},"createRouter",[899,1195,1196],{"class":994}," } ",[899,1198,1199],{"class":984},"from",[899,1201,1202],{"class":1012}," \"",[899,1204,1166],{"class":908},[899,1206,1207],{"class":1012},"\"",[899,1209,1210],{"class":994},";\n",[899,1212,1213,1215,1217,1220,1222,1225,1227,1230,1232,1235,1237,1240,1242,1245,1247,1249,1251,1254,1256],{"class":901,"line":998},[899,1214,1182],{"class":984},[899,1216,1185],{"class":994},[899,1218,1219],{"class":1001},"configuration",[899,1221,1123],{"class":994},[899,1223,1224],{"class":1001},"httpLogger",[899,1226,1123],{"class":994},[899,1228,1229],{"class":1001},"useAuthRoutes",[899,1231,1123],{"class":994},[899,1233,1234],{"class":1001},"useOAuthRoutes",[899,1236,1123],{"class":994},[899,1238,1239],{"class":1001},"magicLinksRouter",[899,1241,1123],{"class":994},[899,1243,1244],{"class":1001},"bounceRouter",[899,1246,1196],{"class":994},[899,1248,1199],{"class":984},[899,1250,1058],{"class":1012},[899,1252,1253],{"class":908},"auth-h3client",[899,1255,1013],{"class":1012},[899,1257,1210],{"class":994},[899,1259,1260],{"class":901,"line":1024},[899,1261,1262],{"emptyLinePlaceholder":8},"\n",[899,1264,1265,1267,1270,1273],{"class":901,"line":1035},[899,1266,1219],{"class":905},[899,1268,1269],{"class":994},"(",[899,1271,1272],{"class":1001},"config",[899,1274,1275],{"class":994},");\n",[899,1277,1278],{"class":901,"line":1050},[899,1279,1262],{"emptyLinePlaceholder":8},[899,1281,1282,1286,1290,1294,1297],{"class":901,"line":1068},[899,1283,1285],{"class":1284},"sl46w","const",[899,1287,1289],{"class":1288},"s3JHE"," app",[899,1291,1293],{"class":1292},"saOXh"," =",[899,1295,1296],{"class":905}," createApp",[899,1298,1299],{"class":994},"();\n",[899,1301,1302,1304,1307,1310],{"class":901,"line":1078},[899,1303,1224],{"class":905},[899,1305,1306],{"class":994},"()(",[899,1308,1309],{"class":1001},"app",[899,1311,1275],{"class":994},[899,1313,1314,1316,1318,1321,1323,1325],{"class":901,"line":1094},[899,1315,1309],{"class":1001},[899,1317,1158],{"class":994},[899,1319,1320],{"class":905},"use",[899,1322,1269],{"class":994},[899,1324,1122],{"class":1001},[899,1326,1275],{"class":994},[899,1328,1329,1331,1333,1335,1337,1339],{"class":901,"line":1100},[899,1330,1309],{"class":1001},[899,1332,1158],{"class":994},[899,1334,1320],{"class":905},[899,1336,1269],{"class":994},[899,1338,1126],{"class":1001},[899,1340,1275],{"class":994},[899,1342,1343,1345,1347,1349,1351,1353],{"class":901,"line":1106},[899,1344,1309],{"class":1001},[899,1346,1158],{"class":994},[899,1348,1320],{"class":905},[899,1350,1269],{"class":994},[899,1352,1130],{"class":1001},[899,1354,1275],{"class":994},[899,1356,1358],{"class":901,"line":1357},11,[899,1359,1262],{"emptyLinePlaceholder":8},[899,1361,1363,1365,1368,1370,1373],{"class":901,"line":1362},12,[899,1364,1285],{"class":1284},[899,1366,1367],{"class":1288}," router",[899,1369,1293],{"class":1292},[899,1371,1372],{"class":905}," createRouter",[899,1374,1299],{"class":994},[899,1376,1378,1380,1382,1385],{"class":901,"line":1377},13,[899,1379,1229],{"class":905},[899,1381,1269],{"class":994},[899,1383,1384],{"class":1001},"router",[899,1386,1275],{"class":994},[899,1388,1390,1392,1394,1396],{"class":901,"line":1389},14,[899,1391,1234],{"class":905},[899,1393,1269],{"class":994},[899,1395,1384],{"class":1001},[899,1397,1275],{"class":994},[899,1399,1401,1403,1405,1407],{"class":901,"line":1400},15,[899,1402,1244],{"class":905},[899,1404,1269],{"class":994},[899,1406,1384],{"class":1001},[899,1408,1275],{"class":994},[899,1410,1412,1414,1416,1418,1420,1422,1425,1427],{"class":901,"line":1411},16,[899,1413,1239],{"class":905},[899,1415,1269],{"class":994},[899,1417,1384],{"class":1001},[899,1419,1123],{"class":994},[899,1421,1013],{"class":1012},[899,1423,1424],{"class":908},"api",[899,1426,1013],{"class":1012},[899,1428,1275],{"class":994},[899,1430,1432,1434,1436,1439,1441,1443,1446,1448,1450,1453],{"class":901,"line":1431},17,[899,1433,1384],{"class":1001},[899,1435,1158],{"class":994},[899,1437,1438],{"class":905},"get",[899,1440,1269],{"class":994},[899,1442,1013],{"class":1012},[899,1444,1445],{"class":908},"\u002Fauth\u002Fusers\u002FauthStatus",[899,1447,1013],{"class":1012},[899,1449,1123],{"class":994},[899,1451,1452],{"class":1001},"getAuthStatusHandler",[899,1454,1455],{"class":994},")\n",[899,1457,1459,1461,1463,1465,1467,1469],{"class":901,"line":1458},18,[899,1460,1309],{"class":1001},[899,1462,1158],{"class":994},[899,1464,1320],{"class":905},[899,1466,1269],{"class":994},[899,1468,1384],{"class":1001},[899,1470,1275],{"class":994},[899,1472,1474],{"class":901,"line":1473},19,[899,1475,1262],{"emptyLinePlaceholder":8},[899,1477,1479],{"class":901,"line":1478},20,[899,1480,1482],{"class":1481},"sghk6","\u002F\u002F Your handlers\n",[889,1484,1487],{"className":975,"code":1485,"filename":1486,"language":977,"meta":895,"style":895},"import { H3 } from 'h3'\nimport {\n  configuration,\n  httpLogger,\n  isIPValid,\n  botDetectorMiddleware,\n  generateCsrfCookie,\n  useAuthRoutes,\n  magicLinksRouter,\n  useOAuthRoutes,\n  getAuthStatusHandler\n} from 'auth-h3client\u002Fv2';\n\nconfiguration(config);\n\nconst app = new H3()\n\u002F\u002F v2 logger is a plugin: register directly\napp.register(httpLogger())\napp.use(isIPValid);\napp.use(botDetectorMiddleware);\napp.use(generateCsrfCookie);\n\nuseAuthRoutes(app);\nuseOAuthRoutes(app);\nbounceRouter(app);\nmagicLinksRouter(app, 'api');\napp.get('\u002Fauth\u002Fusers\u002FauthStatus', getAuthStatusHandler)\n\u002F\u002F Your handlers\n","H3v2",[851,1488,1489,1508,1514,1521,1528,1535,1542,1549,1556,1563,1570,1575,1591,1595,1605,1609,1627,1632,1648,1662,1676,1691,1696,1707,1718,1729,1748,1771],{"__ignoreMap":895},[899,1490,1491,1493,1495,1498,1500,1502,1504,1506],{"class":901,"line":902},[899,1492,1182],{"class":984},[899,1494,1185],{"class":994},[899,1496,1497],{"class":1001},"H3",[899,1499,1196],{"class":994},[899,1501,1199],{"class":984},[899,1503,1058],{"class":1012},[899,1505,1166],{"class":908},[899,1507,1091],{"class":1012},[899,1509,1510,1512],{"class":901,"line":998},[899,1511,1182],{"class":984},[899,1513,1032],{"class":994},[899,1515,1516,1519],{"class":901,"line":1024},[899,1517,1518],{"class":1001},"  configuration",[899,1520,1047],{"class":994},[899,1522,1523,1526],{"class":901,"line":1035},[899,1524,1525],{"class":1001},"  httpLogger",[899,1527,1047],{"class":994},[899,1529,1530,1533],{"class":901,"line":1050},[899,1531,1532],{"class":1001},"  isIPValid",[899,1534,1047],{"class":994},[899,1536,1537,1540],{"class":901,"line":1068},[899,1538,1539],{"class":1001},"  botDetectorMiddleware",[899,1541,1047],{"class":994},[899,1543,1544,1547],{"class":901,"line":1078},[899,1545,1546],{"class":1001},"  generateCsrfCookie",[899,1548,1047],{"class":994},[899,1550,1551,1554],{"class":901,"line":1094},[899,1552,1553],{"class":1001},"  useAuthRoutes",[899,1555,1047],{"class":994},[899,1557,1558,1561],{"class":901,"line":1100},[899,1559,1560],{"class":1001},"  magicLinksRouter",[899,1562,1047],{"class":994},[899,1564,1565,1568],{"class":901,"line":1106},[899,1566,1567],{"class":1001},"  useOAuthRoutes",[899,1569,1047],{"class":994},[899,1571,1572],{"class":901,"line":1357},[899,1573,1574],{"class":1001},"  getAuthStatusHandler\n",[899,1576,1577,1580,1582,1584,1587,1589],{"class":901,"line":1362},[899,1578,1579],{"class":994},"} ",[899,1581,1199],{"class":984},[899,1583,1058],{"class":1012},[899,1585,1586],{"class":908},"auth-h3client\u002Fv2",[899,1588,1013],{"class":1012},[899,1590,1210],{"class":994},[899,1592,1593],{"class":901,"line":1377},[899,1594,1262],{"emptyLinePlaceholder":8},[899,1596,1597,1599,1601,1603],{"class":901,"line":1389},[899,1598,1219],{"class":905},[899,1600,1269],{"class":994},[899,1602,1272],{"class":1001},[899,1604,1275],{"class":994},[899,1606,1607],{"class":901,"line":1400},[899,1608,1262],{"emptyLinePlaceholder":8},[899,1610,1611,1613,1615,1617,1621,1624],{"class":901,"line":1411},[899,1612,1285],{"class":1284},[899,1614,1289],{"class":1288},[899,1616,1293],{"class":1292},[899,1618,1620],{"class":1619},"sakC6"," new",[899,1622,1623],{"class":905}," H3",[899,1625,1626],{"class":994},"()\n",[899,1628,1629],{"class":901,"line":1431},[899,1630,1631],{"class":1481},"\u002F\u002F v2 logger is a plugin: register directly\n",[899,1633,1634,1636,1638,1641,1643,1645],{"class":901,"line":1458},[899,1635,1309],{"class":1001},[899,1637,1158],{"class":994},[899,1639,1640],{"class":905},"register",[899,1642,1269],{"class":994},[899,1644,1224],{"class":905},[899,1646,1647],{"class":994},"())\n",[899,1649,1650,1652,1654,1656,1658,1660],{"class":901,"line":1473},[899,1651,1309],{"class":1001},[899,1653,1158],{"class":994},[899,1655,1320],{"class":905},[899,1657,1269],{"class":994},[899,1659,1122],{"class":1001},[899,1661,1275],{"class":994},[899,1663,1664,1666,1668,1670,1672,1674],{"class":901,"line":1478},[899,1665,1309],{"class":1001},[899,1667,1158],{"class":994},[899,1669,1320],{"class":905},[899,1671,1269],{"class":994},[899,1673,1126],{"class":1001},[899,1675,1275],{"class":994},[899,1677,1679,1681,1683,1685,1687,1689],{"class":901,"line":1678},21,[899,1680,1309],{"class":1001},[899,1682,1158],{"class":994},[899,1684,1320],{"class":905},[899,1686,1269],{"class":994},[899,1688,1130],{"class":1001},[899,1690,1275],{"class":994},[899,1692,1694],{"class":901,"line":1693},22,[899,1695,1262],{"emptyLinePlaceholder":8},[899,1697,1699,1701,1703,1705],{"class":901,"line":1698},23,[899,1700,1229],{"class":905},[899,1702,1269],{"class":994},[899,1704,1309],{"class":1001},[899,1706,1275],{"class":994},[899,1708,1710,1712,1714,1716],{"class":901,"line":1709},24,[899,1711,1234],{"class":905},[899,1713,1269],{"class":994},[899,1715,1309],{"class":1001},[899,1717,1275],{"class":994},[899,1719,1721,1723,1725,1727],{"class":901,"line":1720},25,[899,1722,1244],{"class":905},[899,1724,1269],{"class":994},[899,1726,1309],{"class":1001},[899,1728,1275],{"class":994},[899,1730,1732,1734,1736,1738,1740,1742,1744,1746],{"class":901,"line":1731},26,[899,1733,1239],{"class":905},[899,1735,1269],{"class":994},[899,1737,1309],{"class":1001},[899,1739,1123],{"class":994},[899,1741,1013],{"class":1012},[899,1743,1424],{"class":908},[899,1745,1013],{"class":1012},[899,1747,1275],{"class":994},[899,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769],{"class":901,"line":1750},27,[899,1752,1309],{"class":1001},[899,1754,1158],{"class":994},[899,1756,1438],{"class":905},[899,1758,1269],{"class":994},[899,1760,1013],{"class":1012},[899,1762,1445],{"class":908},[899,1764,1013],{"class":1012},[899,1766,1123],{"class":994},[899,1768,1452],{"class":1001},[899,1770,1455],{"class":994},[899,1772,1774],{"class":901,"line":1773},28,[899,1775,1482],{"class":1481},[861,1777,1779],{"id":1778},"nitro","Nitro",[848,1781,1782],{},"Make a Nitro plugin:",[889,1784,1787],{"className":975,"code":1785,"filename":1786,"language":977,"meta":895,"style":895},"import { defineNitroPlugin } from \"nitro\";\nimport { configuration, httpLogger, useAuthRoutes, useOAuthRoutes, magicLinksRouter, bounceRouter } from 'auth-h3client';\nimport { configDefaults } from 'auth-h3client\u002Fserver\u002Ftemplates'\n\nexport default defineNitroPlugin((nitro) => {\nconfiguration({\n  ...configDefaults,\n    uStorage: {\n      storage: useStorage('cache'),\n      cacheOptions: {\n          successTtl: 60 * 60 * 24 * 30, \n          rateLimitTtl: 10    \n      }\n    }\n  });\n\nhttpLogger()(nitro.h3App);\nnitro.h3App.use(isIPValid)\nnitro.h3App.use(botDetectorMiddleware)\nnitro.h3App.use(generateCsrfCookie)\n\nuseAuthRoutes(nitro.router);\nuseOAuthRoutes(nitro.router);\nbounceRouter(nitro.router);\nmagicLinksRouter(nitro.router, 'api');\n})\n","server\u002Fplugins\u002FinitAuth.ts",[851,1788,1789,1810,1850,1870,1874,1897,1903,1912,1921,1943,1952,1981,1994,1999,2003,2008,2012,2027,2045,2063,2081,2085,2099,2113,2127,2149],{"__ignoreMap":895},[899,1790,1791,1793,1795,1798,1800,1802,1804,1806,1808],{"class":901,"line":902},[899,1792,1182],{"class":984},[899,1794,1185],{"class":994},[899,1796,1797],{"class":1001},"defineNitroPlugin",[899,1799,1196],{"class":994},[899,1801,1199],{"class":984},[899,1803,1202],{"class":1012},[899,1805,1778],{"class":908},[899,1807,1207],{"class":1012},[899,1809,1210],{"class":994},[899,1811,1812,1814,1816,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848],{"class":901,"line":998},[899,1813,1182],{"class":984},[899,1815,1185],{"class":994},[899,1817,1219],{"class":1001},[899,1819,1123],{"class":994},[899,1821,1224],{"class":1001},[899,1823,1123],{"class":994},[899,1825,1229],{"class":1001},[899,1827,1123],{"class":994},[899,1829,1234],{"class":1001},[899,1831,1123],{"class":994},[899,1833,1239],{"class":1001},[899,1835,1123],{"class":994},[899,1837,1244],{"class":1001},[899,1839,1196],{"class":994},[899,1841,1199],{"class":984},[899,1843,1058],{"class":1012},[899,1845,1253],{"class":908},[899,1847,1013],{"class":1012},[899,1849,1210],{"class":994},[899,1851,1852,1854,1856,1859,1861,1863,1865,1868],{"class":901,"line":1024},[899,1853,1182],{"class":984},[899,1855,1185],{"class":994},[899,1857,1858],{"class":1001},"configDefaults",[899,1860,1196],{"class":994},[899,1862,1199],{"class":984},[899,1864,1058],{"class":1012},[899,1866,1867],{"class":908},"auth-h3client\u002Fserver\u002Ftemplates",[899,1869,1091],{"class":1012},[899,1871,1872],{"class":901,"line":1035},[899,1873,1262],{"emptyLinePlaceholder":8},[899,1875,1876,1878,1880,1883,1886,1889,1892,1895],{"class":901,"line":1050},[899,1877,985],{"class":984},[899,1879,988],{"class":984},[899,1881,1882],{"class":905}," defineNitroPlugin",[899,1884,1885],{"class":994},"((",[899,1887,1778],{"class":1888},"sygFZ",[899,1890,1891],{"class":994},") ",[899,1893,1894],{"class":1284},"=>",[899,1896,1032],{"class":994},[899,1898,1899,1901],{"class":901,"line":1068},[899,1900,1219],{"class":905},[899,1902,995],{"class":994},[899,1904,1905,1908,1910],{"class":901,"line":1078},[899,1906,1907],{"class":1292},"  ...",[899,1909,1858],{"class":1001},[899,1911,1047],{"class":994},[899,1913,1914,1917,1919],{"class":901,"line":1094},[899,1915,1916],{"class":1001},"    uStorage",[899,1918,1006],{"class":1005},[899,1920,1032],{"class":994},[899,1922,1923,1926,1928,1931,1933,1935,1938,1940],{"class":901,"line":1100},[899,1924,1925],{"class":1001},"      storage",[899,1927,1006],{"class":1005},[899,1929,1930],{"class":905}," useStorage",[899,1932,1269],{"class":994},[899,1934,1013],{"class":1012},[899,1936,1937],{"class":908},"cache",[899,1939,1013],{"class":1012},[899,1941,1942],{"class":994},"),\n",[899,1944,1945,1948,1950],{"class":901,"line":1106},[899,1946,1947],{"class":1001},"      cacheOptions",[899,1949,1006],{"class":1005},[899,1951,1032],{"class":994},[899,1953,1954,1957,1959,1963,1966,1968,1970,1973,1975,1978],{"class":901,"line":1357},[899,1955,1956],{"class":1001},"          successTtl",[899,1958,1006],{"class":1005},[899,1960,1962],{"class":1961},"spgvN"," 60",[899,1964,1965],{"class":1292}," *",[899,1967,1962],{"class":1961},[899,1969,1965],{"class":1292},[899,1971,1972],{"class":1961}," 24",[899,1974,1965],{"class":1292},[899,1976,1977],{"class":1961}," 30",[899,1979,1980],{"class":994},", \n",[899,1982,1983,1986,1988,1991],{"class":901,"line":1362},[899,1984,1985],{"class":1001},"          rateLimitTtl",[899,1987,1006],{"class":1005},[899,1989,1990],{"class":1961}," 10",[899,1992,1993],{"class":994},"    \n",[899,1995,1996],{"class":901,"line":1377},[899,1997,1998],{"class":994},"      }\n",[899,2000,2001],{"class":901,"line":1389},[899,2002,1097],{"class":994},[899,2004,2005],{"class":901,"line":1400},[899,2006,2007],{"class":994},"  });\n",[899,2009,2010],{"class":901,"line":1411},[899,2011,1262],{"emptyLinePlaceholder":8},[899,2013,2014,2016,2018,2020,2022,2025],{"class":901,"line":1431},[899,2015,1224],{"class":905},[899,2017,1306],{"class":994},[899,2019,1778],{"class":1001},[899,2021,1158],{"class":994},[899,2023,2024],{"class":1001},"h3App",[899,2026,1275],{"class":994},[899,2028,2029,2031,2033,2035,2037,2039,2041,2043],{"class":901,"line":1458},[899,2030,1778],{"class":1001},[899,2032,1158],{"class":994},[899,2034,2024],{"class":1001},[899,2036,1158],{"class":994},[899,2038,1320],{"class":905},[899,2040,1269],{"class":994},[899,2042,1122],{"class":1001},[899,2044,1455],{"class":994},[899,2046,2047,2049,2051,2053,2055,2057,2059,2061],{"class":901,"line":1473},[899,2048,1778],{"class":1001},[899,2050,1158],{"class":994},[899,2052,2024],{"class":1001},[899,2054,1158],{"class":994},[899,2056,1320],{"class":905},[899,2058,1269],{"class":994},[899,2060,1126],{"class":1001},[899,2062,1455],{"class":994},[899,2064,2065,2067,2069,2071,2073,2075,2077,2079],{"class":901,"line":1478},[899,2066,1778],{"class":1001},[899,2068,1158],{"class":994},[899,2070,2024],{"class":1001},[899,2072,1158],{"class":994},[899,2074,1320],{"class":905},[899,2076,1269],{"class":994},[899,2078,1130],{"class":1001},[899,2080,1455],{"class":994},[899,2082,2083],{"class":901,"line":1678},[899,2084,1262],{"emptyLinePlaceholder":8},[899,2086,2087,2089,2091,2093,2095,2097],{"class":901,"line":1693},[899,2088,1229],{"class":905},[899,2090,1269],{"class":994},[899,2092,1778],{"class":1001},[899,2094,1158],{"class":994},[899,2096,1384],{"class":1001},[899,2098,1275],{"class":994},[899,2100,2101,2103,2105,2107,2109,2111],{"class":901,"line":1698},[899,2102,1234],{"class":905},[899,2104,1269],{"class":994},[899,2106,1778],{"class":1001},[899,2108,1158],{"class":994},[899,2110,1384],{"class":1001},[899,2112,1275],{"class":994},[899,2114,2115,2117,2119,2121,2123,2125],{"class":901,"line":1709},[899,2116,1244],{"class":905},[899,2118,1269],{"class":994},[899,2120,1778],{"class":1001},[899,2122,1158],{"class":994},[899,2124,1384],{"class":1001},[899,2126,1275],{"class":994},[899,2128,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147],{"class":901,"line":1720},[899,2130,1239],{"class":905},[899,2132,1269],{"class":994},[899,2134,1778],{"class":1001},[899,2136,1158],{"class":994},[899,2138,1384],{"class":1001},[899,2140,1123],{"class":994},[899,2142,1013],{"class":1012},[899,2144,1424],{"class":908},[899,2146,1013],{"class":1012},[899,2148,1275],{"class":994},[899,2150,2151],{"class":901,"line":1731},[899,2152,1109],{"class":994},[1111,2154,2155],{},[848,2156,2157,2158],{},"When using a newer version of nitro, use the same setup above, and check if that version uses the v2 version of h3, if so, import directly from ",[851,2159,1586],{},[848,2161,1138,2162,2164],{},[856,2163,176],{"href":177}," guide to learn more.",[861,2166,2168],{"id":2167},"configuring-the-module","Configuring the Module",[848,2170,2171,2172,2174],{},"Before using any exported handlers you must call the ",[851,2173,1219],{}," function exactly once at boot:",[889,2176,2179],{"className":975,"code":2177,"filename":2178,"language":977,"meta":895,"style":895},"import { configuration } from 'auth-h3client';\nimport { createStorage } from 'unstorage';\nimport memoryDriver from 'unstorage\u002Fdrivers\u002Fmemory';\n\nconst storage = createStorage({ driver: memoryDriver() });\n\nconfiguration({\n  server: {\n    auth_location: {\n      serverOrDNS: process.env.AUTH_API_HOST ?? '127.0.0.1',\n      port: Number(process.env.AUTH_API_PORT ?? 10000),\n    },\n    hmac: {\n      enableHmac: true,\n      clientId: process.env.AUTH_CLIENT_ID!,\n      sharedSecret: process.env.AUTH_SHARED_SECRET!,\n    },\n    ssl: {\n      enableSSL: false,\n    },\n    cryptoCookiesSecret: process.env.COOKIE_SECRET!,\n  },\n  uStorage: {\n    storage: storage,\n    cacheOptions: {\n      successTtl: 60 * 60 * 24 * 30,\n      rateLimitTtl: 10\n    }\n  },\n  onSuccessRedirect: 'https:\u002F\u002Fapp.example.com\u002Fdashboard',\n  OAuthProviders: [\n    {\n      kind: 'oidc',\n      name: 'google',\n      issuer: 'https:\u002F\u002Faccounts.google.com',\n      clientId: process.env.GOOGLE_CLIENT_ID!,\n      clientSecret: process.env.GOOGLE_CLIENT_SECRET!,\n      defaultScopes: ['openid', 'email', 'profile'],\n      redirectUri: 'https:\u002F\u002Fapp.example.com\u002Foauth\u002Fcallback\u002Fgoogle',\n      supportPKCE: true,\n      redirectUrlOnSuccess: 'https:\u002F\u002Fapp.example.com\u002Fdashboard',\n      redirectUrlOnError: 'https:\u002F\u002Fapp.example.com\u002Flogin',\n    },\n  ],\n  logLevel: 'info',\n});\n\n","config.ts",[851,2180,2181,2201,2223,2242,2246,2271,2275,2281,2290,2299,2332,2363,2368,2377,2388,2411,2433,2437,2446,2458,2462,2484,2489,2498,2509,2518,2541,2551,2555,2560,2577,2588,2594,2611,2628,2645,2667,2690,2727,2744,2756,2772,2789,2794,2800,2817],{"__ignoreMap":895},[899,2182,2183,2185,2187,2189,2191,2193,2195,2197,2199],{"class":901,"line":902},[899,2184,1182],{"class":984},[899,2186,1185],{"class":994},[899,2188,1219],{"class":1001},[899,2190,1196],{"class":994},[899,2192,1199],{"class":984},[899,2194,1058],{"class":1012},[899,2196,1253],{"class":908},[899,2198,1013],{"class":1012},[899,2200,1210],{"class":994},[899,2202,2203,2205,2207,2210,2212,2214,2216,2219,2221],{"class":901,"line":998},[899,2204,1182],{"class":984},[899,2206,1185],{"class":994},[899,2208,2209],{"class":1001},"createStorage",[899,2211,1196],{"class":994},[899,2213,1199],{"class":984},[899,2215,1058],{"class":1012},[899,2217,2218],{"class":908},"unstorage",[899,2220,1013],{"class":1012},[899,2222,1210],{"class":994},[899,2224,2225,2227,2230,2233,2235,2238,2240],{"class":901,"line":1024},[899,2226,1182],{"class":984},[899,2228,2229],{"class":1001}," memoryDriver",[899,2231,2232],{"class":984}," from",[899,2234,1058],{"class":1012},[899,2236,2237],{"class":908},"unstorage\u002Fdrivers\u002Fmemory",[899,2239,1013],{"class":1012},[899,2241,1210],{"class":994},[899,2243,2244],{"class":901,"line":1035},[899,2245,1262],{"emptyLinePlaceholder":8},[899,2247,2248,2250,2253,2255,2258,2261,2264,2266,2268],{"class":901,"line":1050},[899,2249,1285],{"class":1284},[899,2251,2252],{"class":1288}," storage",[899,2254,1293],{"class":1292},[899,2256,2257],{"class":905}," createStorage",[899,2259,2260],{"class":994},"({ ",[899,2262,2263],{"class":1001},"driver",[899,2265,1006],{"class":1005},[899,2267,2229],{"class":905},[899,2269,2270],{"class":994},"() });\n",[899,2272,2273],{"class":901,"line":1068},[899,2274,1262],{"emptyLinePlaceholder":8},[899,2276,2277,2279],{"class":901,"line":1078},[899,2278,1219],{"class":905},[899,2280,995],{"class":994},[899,2282,2283,2286,2288],{"class":901,"line":1094},[899,2284,2285],{"class":1001},"  server",[899,2287,1006],{"class":1005},[899,2289,1032],{"class":994},[899,2291,2292,2295,2297],{"class":901,"line":1100},[899,2293,2294],{"class":1001},"    auth_location",[899,2296,1006],{"class":1005},[899,2298,1032],{"class":994},[899,2300,2301,2304,2306,2309,2311,2314,2316,2320,2323,2325,2328,2330],{"class":901,"line":1106},[899,2302,2303],{"class":1001},"      serverOrDNS",[899,2305,1006],{"class":1005},[899,2307,2308],{"class":1001}," process",[899,2310,1158],{"class":994},[899,2312,2313],{"class":1001},"env",[899,2315,1158],{"class":994},[899,2317,2319],{"class":2318},"sPzPf","AUTH_API_HOST",[899,2321,2322],{"class":1292}," ??",[899,2324,1058],{"class":1012},[899,2326,2327],{"class":908},"127.0.0.1",[899,2329,1013],{"class":1012},[899,2331,1047],{"class":994},[899,2333,2334,2337,2339,2342,2344,2347,2349,2351,2353,2356,2358,2361],{"class":901,"line":1357},[899,2335,2336],{"class":1001},"      port",[899,2338,1006],{"class":1005},[899,2340,2341],{"class":905}," Number",[899,2343,1269],{"class":994},[899,2345,2346],{"class":1001},"process",[899,2348,1158],{"class":994},[899,2350,2313],{"class":1001},[899,2352,1158],{"class":994},[899,2354,2355],{"class":2318},"AUTH_API_PORT",[899,2357,2322],{"class":1292},[899,2359,2360],{"class":1961}," 10000",[899,2362,1942],{"class":994},[899,2364,2365],{"class":901,"line":1362},[899,2366,2367],{"class":994},"    },\n",[899,2369,2370,2373,2375],{"class":901,"line":1377},[899,2371,2372],{"class":1001},"    hmac",[899,2374,1006],{"class":1005},[899,2376,1032],{"class":994},[899,2378,2379,2382,2384,2386],{"class":901,"line":1389},[899,2380,2381],{"class":1001},"      enableHmac",[899,2383,1006],{"class":1005},[899,2385,1044],{"class":1043},[899,2387,1047],{"class":994},[899,2389,2390,2393,2395,2397,2399,2401,2403,2406,2409],{"class":901,"line":1400},[899,2391,2392],{"class":1001},"      clientId",[899,2394,1006],{"class":1005},[899,2396,2308],{"class":1001},[899,2398,1158],{"class":994},[899,2400,2313],{"class":1001},[899,2402,1158],{"class":994},[899,2404,2405],{"class":2318},"AUTH_CLIENT_ID",[899,2407,2408],{"class":1292},"!",[899,2410,1047],{"class":994},[899,2412,2413,2416,2418,2420,2422,2424,2426,2429,2431],{"class":901,"line":1411},[899,2414,2415],{"class":1001},"      sharedSecret",[899,2417,1006],{"class":1005},[899,2419,2308],{"class":1001},[899,2421,1158],{"class":994},[899,2423,2313],{"class":1001},[899,2425,1158],{"class":994},[899,2427,2428],{"class":2318},"AUTH_SHARED_SECRET",[899,2430,2408],{"class":1292},[899,2432,1047],{"class":994},[899,2434,2435],{"class":901,"line":1431},[899,2436,2367],{"class":994},[899,2438,2439,2442,2444],{"class":901,"line":1458},[899,2440,2441],{"class":1001},"    ssl",[899,2443,1006],{"class":1005},[899,2445,1032],{"class":994},[899,2447,2448,2451,2453,2456],{"class":901,"line":1473},[899,2449,2450],{"class":1001},"      enableSSL",[899,2452,1006],{"class":1005},[899,2454,2455],{"class":1043}," false",[899,2457,1047],{"class":994},[899,2459,2460],{"class":901,"line":1478},[899,2461,2367],{"class":994},[899,2463,2464,2467,2469,2471,2473,2475,2477,2480,2482],{"class":901,"line":1678},[899,2465,2466],{"class":1001},"    cryptoCookiesSecret",[899,2468,1006],{"class":1005},[899,2470,2308],{"class":1001},[899,2472,1158],{"class":994},[899,2474,2313],{"class":1001},[899,2476,1158],{"class":994},[899,2478,2479],{"class":2318},"COOKIE_SECRET",[899,2481,2408],{"class":1292},[899,2483,1047],{"class":994},[899,2485,2486],{"class":901,"line":1693},[899,2487,2488],{"class":994},"  },\n",[899,2490,2491,2494,2496],{"class":901,"line":1698},[899,2492,2493],{"class":1001},"  uStorage",[899,2495,1006],{"class":1005},[899,2497,1032],{"class":994},[899,2499,2500,2503,2505,2507],{"class":901,"line":1709},[899,2501,2502],{"class":1001},"    storage",[899,2504,1006],{"class":1005},[899,2506,2252],{"class":1001},[899,2508,1047],{"class":994},[899,2510,2511,2514,2516],{"class":901,"line":1720},[899,2512,2513],{"class":1001},"    cacheOptions",[899,2515,1006],{"class":1005},[899,2517,1032],{"class":994},[899,2519,2520,2523,2525,2527,2529,2531,2533,2535,2537,2539],{"class":901,"line":1731},[899,2521,2522],{"class":1001},"      successTtl",[899,2524,1006],{"class":1005},[899,2526,1962],{"class":1961},[899,2528,1965],{"class":1292},[899,2530,1962],{"class":1961},[899,2532,1965],{"class":1292},[899,2534,1972],{"class":1961},[899,2536,1965],{"class":1292},[899,2538,1977],{"class":1961},[899,2540,1047],{"class":994},[899,2542,2543,2546,2548],{"class":901,"line":1750},[899,2544,2545],{"class":1001},"      rateLimitTtl",[899,2547,1006],{"class":1005},[899,2549,2550],{"class":1961}," 10\n",[899,2552,2553],{"class":901,"line":1773},[899,2554,1097],{"class":994},[899,2556,2558],{"class":901,"line":2557},29,[899,2559,2488],{"class":994},[899,2561,2563,2566,2568,2570,2573,2575],{"class":901,"line":2562},30,[899,2564,2565],{"class":1001},"  onSuccessRedirect",[899,2567,1006],{"class":1005},[899,2569,1058],{"class":1012},[899,2571,2572],{"class":908},"https:\u002F\u002Fapp.example.com\u002Fdashboard",[899,2574,1013],{"class":1012},[899,2576,1047],{"class":994},[899,2578,2580,2583,2585],{"class":901,"line":2579},31,[899,2581,2582],{"class":1001},"  OAuthProviders",[899,2584,1006],{"class":1005},[899,2586,2587],{"class":994}," [\n",[899,2589,2591],{"class":901,"line":2590},32,[899,2592,2593],{"class":994},"    {\n",[899,2595,2597,2600,2602,2604,2607,2609],{"class":901,"line":2596},33,[899,2598,2599],{"class":1001},"      kind",[899,2601,1006],{"class":1005},[899,2603,1058],{"class":1012},[899,2605,2606],{"class":908},"oidc",[899,2608,1013],{"class":1012},[899,2610,1047],{"class":994},[899,2612,2614,2617,2619,2621,2624,2626],{"class":901,"line":2613},34,[899,2615,2616],{"class":1001},"      name",[899,2618,1006],{"class":1005},[899,2620,1058],{"class":1012},[899,2622,2623],{"class":908},"google",[899,2625,1013],{"class":1012},[899,2627,1047],{"class":994},[899,2629,2631,2634,2636,2638,2641,2643],{"class":901,"line":2630},35,[899,2632,2633],{"class":1001},"      issuer",[899,2635,1006],{"class":1005},[899,2637,1058],{"class":1012},[899,2639,2640],{"class":908},"https:\u002F\u002Faccounts.google.com",[899,2642,1013],{"class":1012},[899,2644,1047],{"class":994},[899,2646,2648,2650,2652,2654,2656,2658,2660,2663,2665],{"class":901,"line":2647},36,[899,2649,2392],{"class":1001},[899,2651,1006],{"class":1005},[899,2653,2308],{"class":1001},[899,2655,1158],{"class":994},[899,2657,2313],{"class":1001},[899,2659,1158],{"class":994},[899,2661,2662],{"class":2318},"GOOGLE_CLIENT_ID",[899,2664,2408],{"class":1292},[899,2666,1047],{"class":994},[899,2668,2670,2673,2675,2677,2679,2681,2683,2686,2688],{"class":901,"line":2669},37,[899,2671,2672],{"class":1001},"      clientSecret",[899,2674,1006],{"class":1005},[899,2676,2308],{"class":1001},[899,2678,1158],{"class":994},[899,2680,2313],{"class":1001},[899,2682,1158],{"class":994},[899,2684,2685],{"class":2318},"GOOGLE_CLIENT_SECRET",[899,2687,2408],{"class":1292},[899,2689,1047],{"class":994},[899,2691,2693,2696,2698,2700,2702,2705,2707,2709,2711,2714,2716,2718,2720,2723,2725],{"class":901,"line":2692},38,[899,2694,2695],{"class":1001},"      defaultScopes",[899,2697,1006],{"class":1005},[899,2699,1009],{"class":994},[899,2701,1013],{"class":1012},[899,2703,2704],{"class":908},"openid",[899,2706,1013],{"class":1012},[899,2708,1123],{"class":994},[899,2710,1013],{"class":1012},[899,2712,2713],{"class":908},"email",[899,2715,1013],{"class":1012},[899,2717,1123],{"class":994},[899,2719,1013],{"class":1012},[899,2721,2722],{"class":908},"profile",[899,2724,1013],{"class":1012},[899,2726,1021],{"class":994},[899,2728,2730,2733,2735,2737,2740,2742],{"class":901,"line":2729},39,[899,2731,2732],{"class":1001},"      redirectUri",[899,2734,1006],{"class":1005},[899,2736,1058],{"class":1012},[899,2738,2739],{"class":908},"https:\u002F\u002Fapp.example.com\u002Foauth\u002Fcallback\u002Fgoogle",[899,2741,1013],{"class":1012},[899,2743,1047],{"class":994},[899,2745,2747,2750,2752,2754],{"class":901,"line":2746},40,[899,2748,2749],{"class":1001},"      supportPKCE",[899,2751,1006],{"class":1005},[899,2753,1044],{"class":1043},[899,2755,1047],{"class":994},[899,2757,2759,2762,2764,2766,2768,2770],{"class":901,"line":2758},41,[899,2760,2761],{"class":1001},"      redirectUrlOnSuccess",[899,2763,1006],{"class":1005},[899,2765,1058],{"class":1012},[899,2767,2572],{"class":908},[899,2769,1013],{"class":1012},[899,2771,1047],{"class":994},[899,2773,2775,2778,2780,2782,2785,2787],{"class":901,"line":2774},42,[899,2776,2777],{"class":1001},"      redirectUrlOnError",[899,2779,1006],{"class":1005},[899,2781,1058],{"class":1012},[899,2783,2784],{"class":908},"https:\u002F\u002Fapp.example.com\u002Flogin",[899,2786,1013],{"class":1012},[899,2788,1047],{"class":994},[899,2790,2792],{"class":901,"line":2791},43,[899,2793,2367],{"class":994},[899,2795,2797],{"class":901,"line":2796},44,[899,2798,2799],{"class":994},"  ],\n",[899,2801,2803,2806,2808,2810,2813,2815],{"class":901,"line":2802},45,[899,2804,2805],{"class":1001},"  logLevel",[899,2807,1006],{"class":1005},[899,2809,1058],{"class":1012},[899,2811,2812],{"class":908},"info",[899,2814,1013],{"class":1012},[899,2816,1047],{"class":994},[899,2818,2820],{"class":901,"line":2819},46,[899,2821,2822],{"class":994},"});\n",[861,2824,2826],{"id":2825},"verify-the-setup","Verify the setup",[848,2828,2829,2830,2832],{},"Start your development server and make a request to the auth status endpoint.\nUnder the Nuxt module, the default path is ",[851,2831,1061],{},". With\nno active session the response should be:",[889,2834,2837],{"className":891,"code":2835,"filename":2836,"language":894,"meta":895,"style":895},"curl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fusers\u002FauthStatus\n","Terminal",[851,2838,2839],{"__ignoreMap":895},[899,2840,2841,2844],{"class":901,"line":902},[899,2842,2843],{"class":905},"curl",[899,2845,2846],{"class":908}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fusers\u002FauthStatus\n",[889,2848,2851],{"className":2849,"code":2850,"language":5,"meta":895,"style":895},"language-json shiki shiki-themes light-plus light-plus dracula","{\n  \"authorized\": false\n}\n",[851,2852,2853,2858,2875],{"__ignoreMap":895},[899,2854,2855],{"class":901,"line":902},[899,2856,2857],{"class":994},"{\n",[899,2859,2860,2864,2868,2870,2872],{"class":901,"line":998},[899,2861,2863],{"class":2862},"saJyd","  \"",[899,2865,2867],{"class":2866},"s_W10","authorized",[899,2869,1207],{"class":2862},[899,2871,1006],{"class":1292},[899,2873,2874],{"class":1043}," false\n",[899,2876,2877],{"class":901,"line":1024},[899,2878,2879],{"class":994},"}\n",[848,2881,2882,2883,2886,2887,2890],{},"A ",[851,2884,2885],{},"__Host-csrf"," cookie should also be present on the response. If the IAM service is unreachable, the auth status handler returns ",[851,2888,2889],{},"{ \"authorized\": false }"," rather than erroring, so check the server logs if you expect a different result.",[2892,2893,2894],"style",{},"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 .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 .s34zl, html code.shiki .s34zl{--shiki-light:#001080;--shiki-default:#001080;--shiki-dark:#FF79C6}html pre.shiki code .sFkSl, html code.shiki .sFkSl{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#E9F284}html pre.shiki code .sjR7W, html code.shiki .sjR7W{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#BD93F9}html pre.shiki code .sl46w, html code.shiki .sl46w{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#FF79C6}html pre.shiki code .s3JHE, html code.shiki .s3JHE{--shiki-light:#0070C1;--shiki-default:#0070C1;--shiki-dark:#F8F8F2}html pre.shiki code .saOXh, html code.shiki .saOXh{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#FF79C6}html pre.shiki code .sghk6, html code.shiki .sghk6{--shiki-light:#008000;--shiki-default:#008000;--shiki-dark:#6272A4}html pre.shiki code .sakC6, html code.shiki .sakC6{--shiki-light:#0000FF;--shiki-light-font-weight:inherit;--shiki-default:#0000FF;--shiki-default-font-weight:inherit;--shiki-dark:#FF79C6;--shiki-dark-font-weight:bold}html pre.shiki code .sygFZ, html code.shiki .sygFZ{--shiki-light:#001080;--shiki-light-font-style:inherit;--shiki-default:#001080;--shiki-default-font-style:inherit;--shiki-dark:#FFB86C;--shiki-dark-font-style:italic}html pre.shiki code .spgvN, html code.shiki .spgvN{--shiki-light:#098658;--shiki-default:#098658;--shiki-dark:#BD93F9}html pre.shiki code .sPzPf, html code.shiki .sPzPf{--shiki-light:#0070C1;--shiki-default:#0070C1;--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":895,"searchDepth":998,"depth":998,"links":2896},[2897,2898,2899,2900,2903,2904,2905],{"id":863,"depth":998,"text":864},{"id":883,"depth":998,"text":884},{"id":961,"depth":998,"text":962},{"id":1145,"depth":998,"text":1146,"children":2901},[2902],{"id":1168,"depth":1024,"text":1169},{"id":1778,"depth":998,"text":1779},{"id":2167,"depth":998,"text":2168},{"id":2825,"depth":998,"text":2826},"Prerequisites, installation, Nuxt module setup, plugin configuration, and first-run verification for the Auth H3 Client.","md",{},null,"---\ntitle: Getting Started\ndescription: Prerequisites, installation, Nuxt module setup, plugin configuration, and first-run verification for the Auth H3 Client.\nicon: i-lucide-rocket\n---\n\n`@riavzon\u002Fauth-h3client` connects your Nuxt or Nitro application to a running [IAM service](\u002Fdocs\u002Fiam). The module registers server middleware, auto-imports server utilities and client composables, and wires up the authentication routes in a single Nitro plugin call.\n\n## Requirements\n\n- Node.js 22 or later\n- Nuxt 3 and later or a Nitro\u002FH3 application\n- A running [IAM service](\u002Fdocs\u002Fiam\u002Fgetting-started) reachable from your server\n\n## Installation\n\n::code-group\n\n```bash [pnpm]\npnpm add @riavzon\u002Fauth-h3client\n```\n\n```bash [yarn]\nyarn add @riavzon\u002Fauth-h3client\n```\n\n```bash [npm]\nnpm install @riavzon\u002Fauth-h3client\n```\n\n```bash [bun]\nbun add @riavzon\u002Fauth-h3client\n```\n\n::\n\n---\n\n## Nuxt module setup\n\nIf you are using Nuxt, use the dedicated module. It handles auto-imports and can register the bundled middleware for you, while your Nitro plugin provides the runtime configuration.\n\nRegister the module in `nuxt.config.ts`. This enables the auto-import of all server utilities and client composables, and optionally registers the global security middleware.\n\n```ts [nuxt.config.ts]\nexport default defineNuxtConfig({\n  modules: ['auth-h3client\u002Fmodule'],\n  authH3Client: {\n    enableMiddleware: true,\n    authStatusUrl: '\u002Fapi\u002Fauth\u002Fusers\u002FauthStatus',\n    registerApiRoute: {\n      path: '\u002Fapi\u002Fauth\u002Fapi-tokens'\n    }\n  }\n})\n```\n\n::warning\nIf your Nuxt app also exposes machine-to-machine routes protected with\n`defineAuthenticatePublicApi`, do not run the global auth middleware on those\npaths. That middleware runs `isIPValid`, `botDetectorMiddleware`, and\n`generateCsrfCookie`, which regular browser auth requests still need, but\nrepeated API-key verification traffic can be rate-limited or banned by the bot\ndetector. In mixed apps, set `enableMiddleware: false` and register your own\nserver middleware so those API-key routes bypass the browser middleware chain.\nThe module still registers the auth status route and, when configured, the\noptional API token list route.\n::\n\nRead the [Nuxt Module Documentation](\u002Fdocs\u002Fauth-h3client\u002Fgetting-started\u002Fnuxt) for full configuration and usage.\n\n\n## H3 v1 H3 v2\n\nThis module supports both H3 v1 and H3 v2. Choose the matching entry point for your H3 version:\n\n- H3 v1 (default): import from auth-h3client or auth-h3client\u002Fv1. supported version: `h3@^1.15.4`.\n- H3 v2: import from auth-h3client\u002Fv2. supported version: `h3@^2.0.0-beta.4`.\n\n\n### Register the routes\n::code-group\n\n```ts [H3v1] \nimport { createApp, createRouter } from \"h3\";\nimport { configuration, httpLogger, useAuthRoutes, useOAuthRoutes, magicLinksRouter, bounceRouter } from 'auth-h3client';\n\nconfiguration(config);\n\nconst app = createApp();\nhttpLogger()(app);\napp.use(isIPValid);\napp.use(botDetectorMiddleware);\napp.use(generateCsrfCookie);\n\nconst router = createRouter();\nuseAuthRoutes(router);\nuseOAuthRoutes(router);\nbounceRouter(router);\nmagicLinksRouter(router, 'api');\nrouter.get('\u002Fauth\u002Fusers\u002FauthStatus', getAuthStatusHandler)\napp.use(router);\n\n\u002F\u002F Your handlers\n```\n\n```ts [H3v2] \nimport { H3 } from 'h3'\nimport {\n  configuration,\n  httpLogger,\n  isIPValid,\n  botDetectorMiddleware,\n  generateCsrfCookie,\n  useAuthRoutes,\n  magicLinksRouter,\n  useOAuthRoutes,\n  getAuthStatusHandler\n} from 'auth-h3client\u002Fv2';\n\nconfiguration(config);\n\nconst app = new H3()\n\u002F\u002F v2 logger is a plugin: register directly\napp.register(httpLogger())\napp.use(isIPValid);\napp.use(botDetectorMiddleware);\napp.use(generateCsrfCookie);\n\nuseAuthRoutes(app);\nuseOAuthRoutes(app);\nbounceRouter(app);\nmagicLinksRouter(app, 'api');\napp.get('\u002Fauth\u002Fusers\u002FauthStatus', getAuthStatusHandler)\n\u002F\u002F Your handlers\n```\n::\n\n## Nitro\nMake a Nitro plugin: \n\n```ts [server\u002Fplugins\u002FinitAuth.ts]\nimport { defineNitroPlugin } from \"nitro\";\nimport { configuration, httpLogger, useAuthRoutes, useOAuthRoutes, magicLinksRouter, bounceRouter } from 'auth-h3client';\nimport { configDefaults } from 'auth-h3client\u002Fserver\u002Ftemplates'\n\nexport default defineNitroPlugin((nitro) => {\nconfiguration({\n  ...configDefaults,\n    uStorage: {\n      storage: useStorage('cache'),\n      cacheOptions: {\n          successTtl: 60 * 60 * 24 * 30, \n          rateLimitTtl: 10    \n      }\n    }\n  });\n\nhttpLogger()(nitro.h3App);\nnitro.h3App.use(isIPValid)\nnitro.h3App.use(botDetectorMiddleware)\nnitro.h3App.use(generateCsrfCookie)\n\nuseAuthRoutes(nitro.router);\nuseOAuthRoutes(nitro.router);\nbounceRouter(nitro.router);\nmagicLinksRouter(nitro.router, 'api');\n})\n```\n::warning\nWhen using a newer version of nitro, use the same setup above, and check if that version uses the v2 version of h3, if so, import directly from `auth-h3client\u002Fv2`\n::\n\nRead the [H3 and Nitro Setup](\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fh3-nitro) guide to learn more.\n\n## Configuring the Module\n\nBefore using any exported handlers you must call the `configuration` function exactly once at boot:\n\n```ts [config.ts]\nimport { configuration } from 'auth-h3client';\nimport { createStorage } from 'unstorage';\nimport memoryDriver from 'unstorage\u002Fdrivers\u002Fmemory';\n\nconst storage = createStorage({ driver: memoryDriver() });\n\nconfiguration({\n  server: {\n    auth_location: {\n      serverOrDNS: process.env.AUTH_API_HOST ?? '127.0.0.1',\n      port: Number(process.env.AUTH_API_PORT ?? 10000),\n    },\n    hmac: {\n      enableHmac: true,\n      clientId: process.env.AUTH_CLIENT_ID!,\n      sharedSecret: process.env.AUTH_SHARED_SECRET!,\n    },\n    ssl: {\n      enableSSL: false,\n    },\n    cryptoCookiesSecret: process.env.COOKIE_SECRET!,\n  },\n  uStorage: {\n    storage: storage,\n    cacheOptions: {\n      successTtl: 60 * 60 * 24 * 30,\n      rateLimitTtl: 10\n    }\n  },\n  onSuccessRedirect: 'https:\u002F\u002Fapp.example.com\u002Fdashboard',\n  OAuthProviders: [\n    {\n      kind: 'oidc',\n      name: 'google',\n      issuer: 'https:\u002F\u002Faccounts.google.com',\n      clientId: process.env.GOOGLE_CLIENT_ID!,\n      clientSecret: process.env.GOOGLE_CLIENT_SECRET!,\n      defaultScopes: ['openid', 'email', 'profile'],\n      redirectUri: 'https:\u002F\u002Fapp.example.com\u002Foauth\u002Fcallback\u002Fgoogle',\n      supportPKCE: true,\n      redirectUrlOnSuccess: 'https:\u002F\u002Fapp.example.com\u002Fdashboard',\n      redirectUrlOnError: 'https:\u002F\u002Fapp.example.com\u002Flogin',\n    },\n  ],\n  logLevel: 'info',\n});\n\n```\n## Verify the setup\n\nStart your development server and make a request to the auth status endpoint.\nUnder the Nuxt module, the default path is `\u002Fapi\u002Fauth\u002Fusers\u002FauthStatus`. With\nno active session the response should be:\n\n```bash [Terminal]\ncurl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fusers\u002FauthStatus\n```\n\n```json\n{\n  \"authorized\": false\n}\n```\n\nA `__Host-csrf` cookie should also be present on the response. If the IAM service is unreachable, the auth status handler returns `{ \"authorized\": false }` rather than erroring, so check the server logs if you expect a different result.",{"title":14,"description":2906},"rHH6mbqMgDFDzgGa1fh2uj1TwbeEeysk2rtBlP5RkjY",[2914,2915],{"title":20,"path":22,"stem":70,"children":-1},{"title":79,"path":80,"stem":81,"children":-1},{"id":843,"title":14,"body":2917,"description":2906,"extension":2907,"icon":15,"meta":4626,"module":2909,"navigation":8,"path":74,"rawbody":2910,"seo":4627,"stem":75,"__hash__":2912},{"type":845,"value":2918,"toc":4615},[2919,2925,2927,2937,2939,2989,2991,2993,2995,2999,3093,3107,3111,3113,3115,3125,3127,3651,3653,3655,3995,4001,4005,4007,4011,4567,4569,4573,4583,4607,4613],[848,2920,2921,854,2923,859],{},[851,2922,853],{},[856,2924,858],{"href":29},[861,2926,864],{"id":863},[866,2928,2929,2931,2933],{},[869,2930,871],{},[869,2932,874],{},[869,2934,877,2935,880],{},[856,2936,858],{"href":396},[861,2938,884],{"id":883},[886,2940,2941,2953,2965,2977],{},[889,2942,2943],{"className":891,"code":892,"filename":893,"language":894,"meta":895,"style":895},[851,2944,2945],{"__ignoreMap":895},[899,2946,2947,2949,2951],{"class":901,"line":902},[899,2948,893],{"class":905},[899,2950,909],{"class":908},[899,2952,912],{"class":908},[889,2954,2955],{"className":891,"code":915,"filename":916,"language":894,"meta":895,"style":895},[851,2956,2957],{"__ignoreMap":895},[899,2958,2959,2961,2963],{"class":901,"line":902},[899,2960,916],{"class":905},[899,2962,909],{"class":908},[899,2964,912],{"class":908},[889,2966,2967],{"className":891,"code":929,"filename":930,"language":894,"meta":895,"style":895},[851,2968,2969],{"__ignoreMap":895},[899,2970,2971,2973,2975],{"class":901,"line":902},[899,2972,930],{"class":905},[899,2974,939],{"class":908},[899,2976,912],{"class":908},[889,2978,2979],{"className":891,"code":944,"filename":945,"language":894,"meta":895,"style":895},[851,2980,2981],{"__ignoreMap":895},[899,2982,2983,2985,2987],{"class":901,"line":902},[899,2984,945],{"class":905},[899,2986,909],{"class":908},[899,2988,912],{"class":908},[957,2990],{},[861,2992,962],{"id":961},[848,2994,965],{},[848,2996,968,2997,972],{},[851,2998,971],{},[889,3000,3001],{"className":975,"code":976,"filename":971,"language":977,"meta":895,"style":895},[851,3002,3003,3013,3029,3037,3047,3061,3069,3081,3085,3089],{"__ignoreMap":895},[899,3004,3005,3007,3009,3011],{"class":901,"line":902},[899,3006,985],{"class":984},[899,3008,988],{"class":984},[899,3010,991],{"class":905},[899,3012,995],{"class":994},[899,3014,3015,3017,3019,3021,3023,3025,3027],{"class":901,"line":998},[899,3016,1002],{"class":1001},[899,3018,1006],{"class":1005},[899,3020,1009],{"class":994},[899,3022,1013],{"class":1012},[899,3024,1016],{"class":908},[899,3026,1013],{"class":1012},[899,3028,1021],{"class":994},[899,3030,3031,3033,3035],{"class":901,"line":1024},[899,3032,1027],{"class":1001},[899,3034,1006],{"class":1005},[899,3036,1032],{"class":994},[899,3038,3039,3041,3043,3045],{"class":901,"line":1035},[899,3040,1038],{"class":1001},[899,3042,1006],{"class":1005},[899,3044,1044],{"class":1043},[899,3046,1047],{"class":994},[899,3048,3049,3051,3053,3055,3057,3059],{"class":901,"line":1050},[899,3050,1053],{"class":1001},[899,3052,1006],{"class":1005},[899,3054,1058],{"class":1012},[899,3056,1061],{"class":908},[899,3058,1013],{"class":1012},[899,3060,1047],{"class":994},[899,3062,3063,3065,3067],{"class":901,"line":1068},[899,3064,1071],{"class":1001},[899,3066,1006],{"class":1005},[899,3068,1032],{"class":994},[899,3070,3071,3073,3075,3077,3079],{"class":901,"line":1078},[899,3072,1081],{"class":1001},[899,3074,1006],{"class":1005},[899,3076,1058],{"class":1012},[899,3078,1088],{"class":908},[899,3080,1091],{"class":1012},[899,3082,3083],{"class":901,"line":1094},[899,3084,1097],{"class":994},[899,3086,3087],{"class":901,"line":1100},[899,3088,1103],{"class":994},[899,3090,3091],{"class":901,"line":1106},[899,3092,1109],{"class":994},[1111,3094,3095],{},[848,3096,1115,3097,1119,3099,1123,3101,1127,3103,1131,3105,1135],{},[851,3098,1118],{},[851,3100,1122],{},[851,3102,1126],{},[851,3104,1130],{},[851,3106,1134],{},[848,3108,1138,3109,1142],{},[856,3110,1141],{"href":80},[861,3112,1146],{"id":1145},[848,3114,1149],{},[866,3116,3117,3121],{},[869,3118,1154,3119,1158],{},[851,3120,1157],{},[869,3122,1161,3123,1158],{},[851,3124,1164],{},[1166,3126,1169],{"id":1168},[886,3128,3129,3387],{},[889,3130,3131],{"className":975,"code":1174,"filename":1175,"language":977,"meta":895,"style":895},[851,3132,3133,3157,3197,3201,3211,3215,3227,3237,3251,3265,3279,3283,3295,3305,3315,3325,3343,3365,3379,3383],{"__ignoreMap":895},[899,3134,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155],{"class":901,"line":902},[899,3136,1182],{"class":984},[899,3138,1185],{"class":994},[899,3140,1188],{"class":1001},[899,3142,1123],{"class":994},[899,3144,1193],{"class":1001},[899,3146,1196],{"class":994},[899,3148,1199],{"class":984},[899,3150,1202],{"class":1012},[899,3152,1166],{"class":908},[899,3154,1207],{"class":1012},[899,3156,1210],{"class":994},[899,3158,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195],{"class":901,"line":998},[899,3160,1182],{"class":984},[899,3162,1185],{"class":994},[899,3164,1219],{"class":1001},[899,3166,1123],{"class":994},[899,3168,1224],{"class":1001},[899,3170,1123],{"class":994},[899,3172,1229],{"class":1001},[899,3174,1123],{"class":994},[899,3176,1234],{"class":1001},[899,3178,1123],{"class":994},[899,3180,1239],{"class":1001},[899,3182,1123],{"class":994},[899,3184,1244],{"class":1001},[899,3186,1196],{"class":994},[899,3188,1199],{"class":984},[899,3190,1058],{"class":1012},[899,3192,1253],{"class":908},[899,3194,1013],{"class":1012},[899,3196,1210],{"class":994},[899,3198,3199],{"class":901,"line":1024},[899,3200,1262],{"emptyLinePlaceholder":8},[899,3202,3203,3205,3207,3209],{"class":901,"line":1035},[899,3204,1219],{"class":905},[899,3206,1269],{"class":994},[899,3208,1272],{"class":1001},[899,3210,1275],{"class":994},[899,3212,3213],{"class":901,"line":1050},[899,3214,1262],{"emptyLinePlaceholder":8},[899,3216,3217,3219,3221,3223,3225],{"class":901,"line":1068},[899,3218,1285],{"class":1284},[899,3220,1289],{"class":1288},[899,3222,1293],{"class":1292},[899,3224,1296],{"class":905},[899,3226,1299],{"class":994},[899,3228,3229,3231,3233,3235],{"class":901,"line":1078},[899,3230,1224],{"class":905},[899,3232,1306],{"class":994},[899,3234,1309],{"class":1001},[899,3236,1275],{"class":994},[899,3238,3239,3241,3243,3245,3247,3249],{"class":901,"line":1094},[899,3240,1309],{"class":1001},[899,3242,1158],{"class":994},[899,3244,1320],{"class":905},[899,3246,1269],{"class":994},[899,3248,1122],{"class":1001},[899,3250,1275],{"class":994},[899,3252,3253,3255,3257,3259,3261,3263],{"class":901,"line":1100},[899,3254,1309],{"class":1001},[899,3256,1158],{"class":994},[899,3258,1320],{"class":905},[899,3260,1269],{"class":994},[899,3262,1126],{"class":1001},[899,3264,1275],{"class":994},[899,3266,3267,3269,3271,3273,3275,3277],{"class":901,"line":1106},[899,3268,1309],{"class":1001},[899,3270,1158],{"class":994},[899,3272,1320],{"class":905},[899,3274,1269],{"class":994},[899,3276,1130],{"class":1001},[899,3278,1275],{"class":994},[899,3280,3281],{"class":901,"line":1357},[899,3282,1262],{"emptyLinePlaceholder":8},[899,3284,3285,3287,3289,3291,3293],{"class":901,"line":1362},[899,3286,1285],{"class":1284},[899,3288,1367],{"class":1288},[899,3290,1293],{"class":1292},[899,3292,1372],{"class":905},[899,3294,1299],{"class":994},[899,3296,3297,3299,3301,3303],{"class":901,"line":1377},[899,3298,1229],{"class":905},[899,3300,1269],{"class":994},[899,3302,1384],{"class":1001},[899,3304,1275],{"class":994},[899,3306,3307,3309,3311,3313],{"class":901,"line":1389},[899,3308,1234],{"class":905},[899,3310,1269],{"class":994},[899,3312,1384],{"class":1001},[899,3314,1275],{"class":994},[899,3316,3317,3319,3321,3323],{"class":901,"line":1400},[899,3318,1244],{"class":905},[899,3320,1269],{"class":994},[899,3322,1384],{"class":1001},[899,3324,1275],{"class":994},[899,3326,3327,3329,3331,3333,3335,3337,3339,3341],{"class":901,"line":1411},[899,3328,1239],{"class":905},[899,3330,1269],{"class":994},[899,3332,1384],{"class":1001},[899,3334,1123],{"class":994},[899,3336,1013],{"class":1012},[899,3338,1424],{"class":908},[899,3340,1013],{"class":1012},[899,3342,1275],{"class":994},[899,3344,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363],{"class":901,"line":1431},[899,3346,1384],{"class":1001},[899,3348,1158],{"class":994},[899,3350,1438],{"class":905},[899,3352,1269],{"class":994},[899,3354,1013],{"class":1012},[899,3356,1445],{"class":908},[899,3358,1013],{"class":1012},[899,3360,1123],{"class":994},[899,3362,1452],{"class":1001},[899,3364,1455],{"class":994},[899,3366,3367,3369,3371,3373,3375,3377],{"class":901,"line":1458},[899,3368,1309],{"class":1001},[899,3370,1158],{"class":994},[899,3372,1320],{"class":905},[899,3374,1269],{"class":994},[899,3376,1384],{"class":1001},[899,3378,1275],{"class":994},[899,3380,3381],{"class":901,"line":1473},[899,3382,1262],{"emptyLinePlaceholder":8},[899,3384,3385],{"class":901,"line":1478},[899,3386,1482],{"class":1481},[889,3388,3389],{"className":975,"code":1485,"filename":1486,"language":977,"meta":895,"style":895},[851,3390,3391,3409,3415,3421,3427,3433,3439,3445,3451,3457,3463,3467,3481,3485,3495,3499,3513,3517,3531,3545,3559,3573,3577,3587,3597,3607,3625,3647],{"__ignoreMap":895},[899,3392,3393,3395,3397,3399,3401,3403,3405,3407],{"class":901,"line":902},[899,3394,1182],{"class":984},[899,3396,1185],{"class":994},[899,3398,1497],{"class":1001},[899,3400,1196],{"class":994},[899,3402,1199],{"class":984},[899,3404,1058],{"class":1012},[899,3406,1166],{"class":908},[899,3408,1091],{"class":1012},[899,3410,3411,3413],{"class":901,"line":998},[899,3412,1182],{"class":984},[899,3414,1032],{"class":994},[899,3416,3417,3419],{"class":901,"line":1024},[899,3418,1518],{"class":1001},[899,3420,1047],{"class":994},[899,3422,3423,3425],{"class":901,"line":1035},[899,3424,1525],{"class":1001},[899,3426,1047],{"class":994},[899,3428,3429,3431],{"class":901,"line":1050},[899,3430,1532],{"class":1001},[899,3432,1047],{"class":994},[899,3434,3435,3437],{"class":901,"line":1068},[899,3436,1539],{"class":1001},[899,3438,1047],{"class":994},[899,3440,3441,3443],{"class":901,"line":1078},[899,3442,1546],{"class":1001},[899,3444,1047],{"class":994},[899,3446,3447,3449],{"class":901,"line":1094},[899,3448,1553],{"class":1001},[899,3450,1047],{"class":994},[899,3452,3453,3455],{"class":901,"line":1100},[899,3454,1560],{"class":1001},[899,3456,1047],{"class":994},[899,3458,3459,3461],{"class":901,"line":1106},[899,3460,1567],{"class":1001},[899,3462,1047],{"class":994},[899,3464,3465],{"class":901,"line":1357},[899,3466,1574],{"class":1001},[899,3468,3469,3471,3473,3475,3477,3479],{"class":901,"line":1362},[899,3470,1579],{"class":994},[899,3472,1199],{"class":984},[899,3474,1058],{"class":1012},[899,3476,1586],{"class":908},[899,3478,1013],{"class":1012},[899,3480,1210],{"class":994},[899,3482,3483],{"class":901,"line":1377},[899,3484,1262],{"emptyLinePlaceholder":8},[899,3486,3487,3489,3491,3493],{"class":901,"line":1389},[899,3488,1219],{"class":905},[899,3490,1269],{"class":994},[899,3492,1272],{"class":1001},[899,3494,1275],{"class":994},[899,3496,3497],{"class":901,"line":1400},[899,3498,1262],{"emptyLinePlaceholder":8},[899,3500,3501,3503,3505,3507,3509,3511],{"class":901,"line":1411},[899,3502,1285],{"class":1284},[899,3504,1289],{"class":1288},[899,3506,1293],{"class":1292},[899,3508,1620],{"class":1619},[899,3510,1623],{"class":905},[899,3512,1626],{"class":994},[899,3514,3515],{"class":901,"line":1431},[899,3516,1631],{"class":1481},[899,3518,3519,3521,3523,3525,3527,3529],{"class":901,"line":1458},[899,3520,1309],{"class":1001},[899,3522,1158],{"class":994},[899,3524,1640],{"class":905},[899,3526,1269],{"class":994},[899,3528,1224],{"class":905},[899,3530,1647],{"class":994},[899,3532,3533,3535,3537,3539,3541,3543],{"class":901,"line":1473},[899,3534,1309],{"class":1001},[899,3536,1158],{"class":994},[899,3538,1320],{"class":905},[899,3540,1269],{"class":994},[899,3542,1122],{"class":1001},[899,3544,1275],{"class":994},[899,3546,3547,3549,3551,3553,3555,3557],{"class":901,"line":1478},[899,3548,1309],{"class":1001},[899,3550,1158],{"class":994},[899,3552,1320],{"class":905},[899,3554,1269],{"class":994},[899,3556,1126],{"class":1001},[899,3558,1275],{"class":994},[899,3560,3561,3563,3565,3567,3569,3571],{"class":901,"line":1678},[899,3562,1309],{"class":1001},[899,3564,1158],{"class":994},[899,3566,1320],{"class":905},[899,3568,1269],{"class":994},[899,3570,1130],{"class":1001},[899,3572,1275],{"class":994},[899,3574,3575],{"class":901,"line":1693},[899,3576,1262],{"emptyLinePlaceholder":8},[899,3578,3579,3581,3583,3585],{"class":901,"line":1698},[899,3580,1229],{"class":905},[899,3582,1269],{"class":994},[899,3584,1309],{"class":1001},[899,3586,1275],{"class":994},[899,3588,3589,3591,3593,3595],{"class":901,"line":1709},[899,3590,1234],{"class":905},[899,3592,1269],{"class":994},[899,3594,1309],{"class":1001},[899,3596,1275],{"class":994},[899,3598,3599,3601,3603,3605],{"class":901,"line":1720},[899,3600,1244],{"class":905},[899,3602,1269],{"class":994},[899,3604,1309],{"class":1001},[899,3606,1275],{"class":994},[899,3608,3609,3611,3613,3615,3617,3619,3621,3623],{"class":901,"line":1731},[899,3610,1239],{"class":905},[899,3612,1269],{"class":994},[899,3614,1309],{"class":1001},[899,3616,1123],{"class":994},[899,3618,1013],{"class":1012},[899,3620,1424],{"class":908},[899,3622,1013],{"class":1012},[899,3624,1275],{"class":994},[899,3626,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645],{"class":901,"line":1750},[899,3628,1309],{"class":1001},[899,3630,1158],{"class":994},[899,3632,1438],{"class":905},[899,3634,1269],{"class":994},[899,3636,1013],{"class":1012},[899,3638,1445],{"class":908},[899,3640,1013],{"class":1012},[899,3642,1123],{"class":994},[899,3644,1452],{"class":1001},[899,3646,1455],{"class":994},[899,3648,3649],{"class":901,"line":1773},[899,3650,1482],{"class":1481},[861,3652,1779],{"id":1778},[848,3654,1782],{},[889,3656,3657],{"className":975,"code":1785,"filename":1786,"language":977,"meta":895,"style":895},[851,3658,3659,3679,3719,3737,3741,3759,3765,3773,3781,3799,3807,3829,3839,3843,3847,3851,3855,3869,3887,3905,3923,3927,3941,3955,3969,3991],{"__ignoreMap":895},[899,3660,3661,3663,3665,3667,3669,3671,3673,3675,3677],{"class":901,"line":902},[899,3662,1182],{"class":984},[899,3664,1185],{"class":994},[899,3666,1797],{"class":1001},[899,3668,1196],{"class":994},[899,3670,1199],{"class":984},[899,3672,1202],{"class":1012},[899,3674,1778],{"class":908},[899,3676,1207],{"class":1012},[899,3678,1210],{"class":994},[899,3680,3681,3683,3685,3687,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715,3717],{"class":901,"line":998},[899,3682,1182],{"class":984},[899,3684,1185],{"class":994},[899,3686,1219],{"class":1001},[899,3688,1123],{"class":994},[899,3690,1224],{"class":1001},[899,3692,1123],{"class":994},[899,3694,1229],{"class":1001},[899,3696,1123],{"class":994},[899,3698,1234],{"class":1001},[899,3700,1123],{"class":994},[899,3702,1239],{"class":1001},[899,3704,1123],{"class":994},[899,3706,1244],{"class":1001},[899,3708,1196],{"class":994},[899,3710,1199],{"class":984},[899,3712,1058],{"class":1012},[899,3714,1253],{"class":908},[899,3716,1013],{"class":1012},[899,3718,1210],{"class":994},[899,3720,3721,3723,3725,3727,3729,3731,3733,3735],{"class":901,"line":1024},[899,3722,1182],{"class":984},[899,3724,1185],{"class":994},[899,3726,1858],{"class":1001},[899,3728,1196],{"class":994},[899,3730,1199],{"class":984},[899,3732,1058],{"class":1012},[899,3734,1867],{"class":908},[899,3736,1091],{"class":1012},[899,3738,3739],{"class":901,"line":1035},[899,3740,1262],{"emptyLinePlaceholder":8},[899,3742,3743,3745,3747,3749,3751,3753,3755,3757],{"class":901,"line":1050},[899,3744,985],{"class":984},[899,3746,988],{"class":984},[899,3748,1882],{"class":905},[899,3750,1885],{"class":994},[899,3752,1778],{"class":1888},[899,3754,1891],{"class":994},[899,3756,1894],{"class":1284},[899,3758,1032],{"class":994},[899,3760,3761,3763],{"class":901,"line":1068},[899,3762,1219],{"class":905},[899,3764,995],{"class":994},[899,3766,3767,3769,3771],{"class":901,"line":1078},[899,3768,1907],{"class":1292},[899,3770,1858],{"class":1001},[899,3772,1047],{"class":994},[899,3774,3775,3777,3779],{"class":901,"line":1094},[899,3776,1916],{"class":1001},[899,3778,1006],{"class":1005},[899,3780,1032],{"class":994},[899,3782,3783,3785,3787,3789,3791,3793,3795,3797],{"class":901,"line":1100},[899,3784,1925],{"class":1001},[899,3786,1006],{"class":1005},[899,3788,1930],{"class":905},[899,3790,1269],{"class":994},[899,3792,1013],{"class":1012},[899,3794,1937],{"class":908},[899,3796,1013],{"class":1012},[899,3798,1942],{"class":994},[899,3800,3801,3803,3805],{"class":901,"line":1106},[899,3802,1947],{"class":1001},[899,3804,1006],{"class":1005},[899,3806,1032],{"class":994},[899,3808,3809,3811,3813,3815,3817,3819,3821,3823,3825,3827],{"class":901,"line":1357},[899,3810,1956],{"class":1001},[899,3812,1006],{"class":1005},[899,3814,1962],{"class":1961},[899,3816,1965],{"class":1292},[899,3818,1962],{"class":1961},[899,3820,1965],{"class":1292},[899,3822,1972],{"class":1961},[899,3824,1965],{"class":1292},[899,3826,1977],{"class":1961},[899,3828,1980],{"class":994},[899,3830,3831,3833,3835,3837],{"class":901,"line":1362},[899,3832,1985],{"class":1001},[899,3834,1006],{"class":1005},[899,3836,1990],{"class":1961},[899,3838,1993],{"class":994},[899,3840,3841],{"class":901,"line":1377},[899,3842,1998],{"class":994},[899,3844,3845],{"class":901,"line":1389},[899,3846,1097],{"class":994},[899,3848,3849],{"class":901,"line":1400},[899,3850,2007],{"class":994},[899,3852,3853],{"class":901,"line":1411},[899,3854,1262],{"emptyLinePlaceholder":8},[899,3856,3857,3859,3861,3863,3865,3867],{"class":901,"line":1431},[899,3858,1224],{"class":905},[899,3860,1306],{"class":994},[899,3862,1778],{"class":1001},[899,3864,1158],{"class":994},[899,3866,2024],{"class":1001},[899,3868,1275],{"class":994},[899,3870,3871,3873,3875,3877,3879,3881,3883,3885],{"class":901,"line":1458},[899,3872,1778],{"class":1001},[899,3874,1158],{"class":994},[899,3876,2024],{"class":1001},[899,3878,1158],{"class":994},[899,3880,1320],{"class":905},[899,3882,1269],{"class":994},[899,3884,1122],{"class":1001},[899,3886,1455],{"class":994},[899,3888,3889,3891,3893,3895,3897,3899,3901,3903],{"class":901,"line":1473},[899,3890,1778],{"class":1001},[899,3892,1158],{"class":994},[899,3894,2024],{"class":1001},[899,3896,1158],{"class":994},[899,3898,1320],{"class":905},[899,3900,1269],{"class":994},[899,3902,1126],{"class":1001},[899,3904,1455],{"class":994},[899,3906,3907,3909,3911,3913,3915,3917,3919,3921],{"class":901,"line":1478},[899,3908,1778],{"class":1001},[899,3910,1158],{"class":994},[899,3912,2024],{"class":1001},[899,3914,1158],{"class":994},[899,3916,1320],{"class":905},[899,3918,1269],{"class":994},[899,3920,1130],{"class":1001},[899,3922,1455],{"class":994},[899,3924,3925],{"class":901,"line":1678},[899,3926,1262],{"emptyLinePlaceholder":8},[899,3928,3929,3931,3933,3935,3937,3939],{"class":901,"line":1693},[899,3930,1229],{"class":905},[899,3932,1269],{"class":994},[899,3934,1778],{"class":1001},[899,3936,1158],{"class":994},[899,3938,1384],{"class":1001},[899,3940,1275],{"class":994},[899,3942,3943,3945,3947,3949,3951,3953],{"class":901,"line":1698},[899,3944,1234],{"class":905},[899,3946,1269],{"class":994},[899,3948,1778],{"class":1001},[899,3950,1158],{"class":994},[899,3952,1384],{"class":1001},[899,3954,1275],{"class":994},[899,3956,3957,3959,3961,3963,3965,3967],{"class":901,"line":1709},[899,3958,1244],{"class":905},[899,3960,1269],{"class":994},[899,3962,1778],{"class":1001},[899,3964,1158],{"class":994},[899,3966,1384],{"class":1001},[899,3968,1275],{"class":994},[899,3970,3971,3973,3975,3977,3979,3981,3983,3985,3987,3989],{"class":901,"line":1720},[899,3972,1239],{"class":905},[899,3974,1269],{"class":994},[899,3976,1778],{"class":1001},[899,3978,1158],{"class":994},[899,3980,1384],{"class":1001},[899,3982,1123],{"class":994},[899,3984,1013],{"class":1012},[899,3986,1424],{"class":908},[899,3988,1013],{"class":1012},[899,3990,1275],{"class":994},[899,3992,3993],{"class":901,"line":1731},[899,3994,1109],{"class":994},[1111,3996,3997],{},[848,3998,2157,3999],{},[851,4000,1586],{},[848,4002,1138,4003,2164],{},[856,4004,176],{"href":177},[861,4006,2168],{"id":2167},[848,4008,2171,4009,2174],{},[851,4010,1219],{},[889,4012,4013],{"className":975,"code":2177,"filename":2178,"language":977,"meta":895,"style":895},[851,4014,4015,4035,4055,4071,4075,4095,4099,4105,4113,4121,4147,4173,4177,4185,4195,4215,4235,4239,4247,4257,4261,4281,4285,4293,4303,4311,4333,4341,4345,4349,4363,4371,4375,4389,4403,4417,4437,4457,4489,4503,4513,4527,4541,4545,4549,4563],{"__ignoreMap":895},[899,4016,4017,4019,4021,4023,4025,4027,4029,4031,4033],{"class":901,"line":902},[899,4018,1182],{"class":984},[899,4020,1185],{"class":994},[899,4022,1219],{"class":1001},[899,4024,1196],{"class":994},[899,4026,1199],{"class":984},[899,4028,1058],{"class":1012},[899,4030,1253],{"class":908},[899,4032,1013],{"class":1012},[899,4034,1210],{"class":994},[899,4036,4037,4039,4041,4043,4045,4047,4049,4051,4053],{"class":901,"line":998},[899,4038,1182],{"class":984},[899,4040,1185],{"class":994},[899,4042,2209],{"class":1001},[899,4044,1196],{"class":994},[899,4046,1199],{"class":984},[899,4048,1058],{"class":1012},[899,4050,2218],{"class":908},[899,4052,1013],{"class":1012},[899,4054,1210],{"class":994},[899,4056,4057,4059,4061,4063,4065,4067,4069],{"class":901,"line":1024},[899,4058,1182],{"class":984},[899,4060,2229],{"class":1001},[899,4062,2232],{"class":984},[899,4064,1058],{"class":1012},[899,4066,2237],{"class":908},[899,4068,1013],{"class":1012},[899,4070,1210],{"class":994},[899,4072,4073],{"class":901,"line":1035},[899,4074,1262],{"emptyLinePlaceholder":8},[899,4076,4077,4079,4081,4083,4085,4087,4089,4091,4093],{"class":901,"line":1050},[899,4078,1285],{"class":1284},[899,4080,2252],{"class":1288},[899,4082,1293],{"class":1292},[899,4084,2257],{"class":905},[899,4086,2260],{"class":994},[899,4088,2263],{"class":1001},[899,4090,1006],{"class":1005},[899,4092,2229],{"class":905},[899,4094,2270],{"class":994},[899,4096,4097],{"class":901,"line":1068},[899,4098,1262],{"emptyLinePlaceholder":8},[899,4100,4101,4103],{"class":901,"line":1078},[899,4102,1219],{"class":905},[899,4104,995],{"class":994},[899,4106,4107,4109,4111],{"class":901,"line":1094},[899,4108,2285],{"class":1001},[899,4110,1006],{"class":1005},[899,4112,1032],{"class":994},[899,4114,4115,4117,4119],{"class":901,"line":1100},[899,4116,2294],{"class":1001},[899,4118,1006],{"class":1005},[899,4120,1032],{"class":994},[899,4122,4123,4125,4127,4129,4131,4133,4135,4137,4139,4141,4143,4145],{"class":901,"line":1106},[899,4124,2303],{"class":1001},[899,4126,1006],{"class":1005},[899,4128,2308],{"class":1001},[899,4130,1158],{"class":994},[899,4132,2313],{"class":1001},[899,4134,1158],{"class":994},[899,4136,2319],{"class":2318},[899,4138,2322],{"class":1292},[899,4140,1058],{"class":1012},[899,4142,2327],{"class":908},[899,4144,1013],{"class":1012},[899,4146,1047],{"class":994},[899,4148,4149,4151,4153,4155,4157,4159,4161,4163,4165,4167,4169,4171],{"class":901,"line":1357},[899,4150,2336],{"class":1001},[899,4152,1006],{"class":1005},[899,4154,2341],{"class":905},[899,4156,1269],{"class":994},[899,4158,2346],{"class":1001},[899,4160,1158],{"class":994},[899,4162,2313],{"class":1001},[899,4164,1158],{"class":994},[899,4166,2355],{"class":2318},[899,4168,2322],{"class":1292},[899,4170,2360],{"class":1961},[899,4172,1942],{"class":994},[899,4174,4175],{"class":901,"line":1362},[899,4176,2367],{"class":994},[899,4178,4179,4181,4183],{"class":901,"line":1377},[899,4180,2372],{"class":1001},[899,4182,1006],{"class":1005},[899,4184,1032],{"class":994},[899,4186,4187,4189,4191,4193],{"class":901,"line":1389},[899,4188,2381],{"class":1001},[899,4190,1006],{"class":1005},[899,4192,1044],{"class":1043},[899,4194,1047],{"class":994},[899,4196,4197,4199,4201,4203,4205,4207,4209,4211,4213],{"class":901,"line":1400},[899,4198,2392],{"class":1001},[899,4200,1006],{"class":1005},[899,4202,2308],{"class":1001},[899,4204,1158],{"class":994},[899,4206,2313],{"class":1001},[899,4208,1158],{"class":994},[899,4210,2405],{"class":2318},[899,4212,2408],{"class":1292},[899,4214,1047],{"class":994},[899,4216,4217,4219,4221,4223,4225,4227,4229,4231,4233],{"class":901,"line":1411},[899,4218,2415],{"class":1001},[899,4220,1006],{"class":1005},[899,4222,2308],{"class":1001},[899,4224,1158],{"class":994},[899,4226,2313],{"class":1001},[899,4228,1158],{"class":994},[899,4230,2428],{"class":2318},[899,4232,2408],{"class":1292},[899,4234,1047],{"class":994},[899,4236,4237],{"class":901,"line":1431},[899,4238,2367],{"class":994},[899,4240,4241,4243,4245],{"class":901,"line":1458},[899,4242,2441],{"class":1001},[899,4244,1006],{"class":1005},[899,4246,1032],{"class":994},[899,4248,4249,4251,4253,4255],{"class":901,"line":1473},[899,4250,2450],{"class":1001},[899,4252,1006],{"class":1005},[899,4254,2455],{"class":1043},[899,4256,1047],{"class":994},[899,4258,4259],{"class":901,"line":1478},[899,4260,2367],{"class":994},[899,4262,4263,4265,4267,4269,4271,4273,4275,4277,4279],{"class":901,"line":1678},[899,4264,2466],{"class":1001},[899,4266,1006],{"class":1005},[899,4268,2308],{"class":1001},[899,4270,1158],{"class":994},[899,4272,2313],{"class":1001},[899,4274,1158],{"class":994},[899,4276,2479],{"class":2318},[899,4278,2408],{"class":1292},[899,4280,1047],{"class":994},[899,4282,4283],{"class":901,"line":1693},[899,4284,2488],{"class":994},[899,4286,4287,4289,4291],{"class":901,"line":1698},[899,4288,2493],{"class":1001},[899,4290,1006],{"class":1005},[899,4292,1032],{"class":994},[899,4294,4295,4297,4299,4301],{"class":901,"line":1709},[899,4296,2502],{"class":1001},[899,4298,1006],{"class":1005},[899,4300,2252],{"class":1001},[899,4302,1047],{"class":994},[899,4304,4305,4307,4309],{"class":901,"line":1720},[899,4306,2513],{"class":1001},[899,4308,1006],{"class":1005},[899,4310,1032],{"class":994},[899,4312,4313,4315,4317,4319,4321,4323,4325,4327,4329,4331],{"class":901,"line":1731},[899,4314,2522],{"class":1001},[899,4316,1006],{"class":1005},[899,4318,1962],{"class":1961},[899,4320,1965],{"class":1292},[899,4322,1962],{"class":1961},[899,4324,1965],{"class":1292},[899,4326,1972],{"class":1961},[899,4328,1965],{"class":1292},[899,4330,1977],{"class":1961},[899,4332,1047],{"class":994},[899,4334,4335,4337,4339],{"class":901,"line":1750},[899,4336,2545],{"class":1001},[899,4338,1006],{"class":1005},[899,4340,2550],{"class":1961},[899,4342,4343],{"class":901,"line":1773},[899,4344,1097],{"class":994},[899,4346,4347],{"class":901,"line":2557},[899,4348,2488],{"class":994},[899,4350,4351,4353,4355,4357,4359,4361],{"class":901,"line":2562},[899,4352,2565],{"class":1001},[899,4354,1006],{"class":1005},[899,4356,1058],{"class":1012},[899,4358,2572],{"class":908},[899,4360,1013],{"class":1012},[899,4362,1047],{"class":994},[899,4364,4365,4367,4369],{"class":901,"line":2579},[899,4366,2582],{"class":1001},[899,4368,1006],{"class":1005},[899,4370,2587],{"class":994},[899,4372,4373],{"class":901,"line":2590},[899,4374,2593],{"class":994},[899,4376,4377,4379,4381,4383,4385,4387],{"class":901,"line":2596},[899,4378,2599],{"class":1001},[899,4380,1006],{"class":1005},[899,4382,1058],{"class":1012},[899,4384,2606],{"class":908},[899,4386,1013],{"class":1012},[899,4388,1047],{"class":994},[899,4390,4391,4393,4395,4397,4399,4401],{"class":901,"line":2613},[899,4392,2616],{"class":1001},[899,4394,1006],{"class":1005},[899,4396,1058],{"class":1012},[899,4398,2623],{"class":908},[899,4400,1013],{"class":1012},[899,4402,1047],{"class":994},[899,4404,4405,4407,4409,4411,4413,4415],{"class":901,"line":2630},[899,4406,2633],{"class":1001},[899,4408,1006],{"class":1005},[899,4410,1058],{"class":1012},[899,4412,2640],{"class":908},[899,4414,1013],{"class":1012},[899,4416,1047],{"class":994},[899,4418,4419,4421,4423,4425,4427,4429,4431,4433,4435],{"class":901,"line":2647},[899,4420,2392],{"class":1001},[899,4422,1006],{"class":1005},[899,4424,2308],{"class":1001},[899,4426,1158],{"class":994},[899,4428,2313],{"class":1001},[899,4430,1158],{"class":994},[899,4432,2662],{"class":2318},[899,4434,2408],{"class":1292},[899,4436,1047],{"class":994},[899,4438,4439,4441,4443,4445,4447,4449,4451,4453,4455],{"class":901,"line":2669},[899,4440,2672],{"class":1001},[899,4442,1006],{"class":1005},[899,4444,2308],{"class":1001},[899,4446,1158],{"class":994},[899,4448,2313],{"class":1001},[899,4450,1158],{"class":994},[899,4452,2685],{"class":2318},[899,4454,2408],{"class":1292},[899,4456,1047],{"class":994},[899,4458,4459,4461,4463,4465,4467,4469,4471,4473,4475,4477,4479,4481,4483,4485,4487],{"class":901,"line":2692},[899,4460,2695],{"class":1001},[899,4462,1006],{"class":1005},[899,4464,1009],{"class":994},[899,4466,1013],{"class":1012},[899,4468,2704],{"class":908},[899,4470,1013],{"class":1012},[899,4472,1123],{"class":994},[899,4474,1013],{"class":1012},[899,4476,2713],{"class":908},[899,4478,1013],{"class":1012},[899,4480,1123],{"class":994},[899,4482,1013],{"class":1012},[899,4484,2722],{"class":908},[899,4486,1013],{"class":1012},[899,4488,1021],{"class":994},[899,4490,4491,4493,4495,4497,4499,4501],{"class":901,"line":2729},[899,4492,2732],{"class":1001},[899,4494,1006],{"class":1005},[899,4496,1058],{"class":1012},[899,4498,2739],{"class":908},[899,4500,1013],{"class":1012},[899,4502,1047],{"class":994},[899,4504,4505,4507,4509,4511],{"class":901,"line":2746},[899,4506,2749],{"class":1001},[899,4508,1006],{"class":1005},[899,4510,1044],{"class":1043},[899,4512,1047],{"class":994},[899,4514,4515,4517,4519,4521,4523,4525],{"class":901,"line":2758},[899,4516,2761],{"class":1001},[899,4518,1006],{"class":1005},[899,4520,1058],{"class":1012},[899,4522,2572],{"class":908},[899,4524,1013],{"class":1012},[899,4526,1047],{"class":994},[899,4528,4529,4531,4533,4535,4537,4539],{"class":901,"line":2774},[899,4530,2777],{"class":1001},[899,4532,1006],{"class":1005},[899,4534,1058],{"class":1012},[899,4536,2784],{"class":908},[899,4538,1013],{"class":1012},[899,4540,1047],{"class":994},[899,4542,4543],{"class":901,"line":2791},[899,4544,2367],{"class":994},[899,4546,4547],{"class":901,"line":2796},[899,4548,2799],{"class":994},[899,4550,4551,4553,4555,4557,4559,4561],{"class":901,"line":2802},[899,4552,2805],{"class":1001},[899,4554,1006],{"class":1005},[899,4556,1058],{"class":1012},[899,4558,2812],{"class":908},[899,4560,1013],{"class":1012},[899,4562,1047],{"class":994},[899,4564,4565],{"class":901,"line":2819},[899,4566,2822],{"class":994},[861,4568,2826],{"id":2825},[848,4570,2829,4571,2832],{},[851,4572,1061],{},[889,4574,4575],{"className":891,"code":2835,"filename":2836,"language":894,"meta":895,"style":895},[851,4576,4577],{"__ignoreMap":895},[899,4578,4579,4581],{"class":901,"line":902},[899,4580,2843],{"class":905},[899,4582,2846],{"class":908},[889,4584,4585],{"className":2849,"code":2850,"language":5,"meta":895,"style":895},[851,4586,4587,4591,4603],{"__ignoreMap":895},[899,4588,4589],{"class":901,"line":902},[899,4590,2857],{"class":994},[899,4592,4593,4595,4597,4599,4601],{"class":901,"line":998},[899,4594,2863],{"class":2862},[899,4596,2867],{"class":2866},[899,4598,1207],{"class":2862},[899,4600,1006],{"class":1292},[899,4602,2874],{"class":1043},[899,4604,4605],{"class":901,"line":1024},[899,4606,2879],{"class":994},[848,4608,2882,4609,2886,4611,2890],{},[851,4610,2885],{},[851,4612,2889],{},[2892,4614,2894],{},{"title":895,"searchDepth":998,"depth":998,"links":4616},[4617,4618,4619,4620,4623,4624,4625],{"id":863,"depth":998,"text":864},{"id":883,"depth":998,"text":884},{"id":961,"depth":998,"text":962},{"id":1145,"depth":998,"text":1146,"children":4621},[4622],{"id":1168,"depth":1024,"text":1169},{"id":1778,"depth":998,"text":1779},{"id":2167,"depth":998,"text":2168},{"id":2825,"depth":998,"text":2826},{},{"title":14,"description":2906},1780436278659]