[{"data":1,"prerenderedAt":13869},["ShallowReactive",2],{"navigation":3,"/specifications/integration-requirements":506,"/specifications/integration-requirements-surround":13864},[4,66,204,292,339,402,450,482],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Whitepaper","i-lucide-file-text","/whitepaper","1.whitepaper",[10,13,17,22,27,32,37,42,47,51,56,61],{"title":5,"path":7,"stem":11,"icon":12},"1.whitepaper/index","i-heroicons-document-text",{"title":14,"path":15,"stem":16,"icon":12},"Executive Summary","/whitepaper/executive-summary","1.whitepaper/1.executive-summary",{"title":18,"path":19,"stem":20,"icon":21},"Investment Opportunity","/whitepaper/investment-opportunity","1.whitepaper/10.investment-opportunity","i-heroicons-banknotes",{"title":23,"path":24,"stem":25,"icon":26},"Risk Analysis","/whitepaper/risk-analysis","1.whitepaper/11.risk-analysis","i-lucide-shield-alert",{"title":28,"path":29,"stem":30,"icon":31},"Problem Statement","/whitepaper/problem-statement","1.whitepaper/2.problem-statement","i-heroicons-exclamation-triangle",{"title":33,"path":34,"stem":35,"icon":36},"Solution Overview","/whitepaper/solution-overview","1.whitepaper/3.solution-overview","i-heroicons-light-bulb",{"title":38,"path":39,"stem":40,"icon":41},"Market Opportunity","/whitepaper/market-opportunity","1.whitepaper/4.market-opportunity","i-heroicons-chart-bar",{"title":43,"path":44,"stem":45,"icon":46},"Technology Architecture","/whitepaper/technology-architecture","1.whitepaper/5.technology-architecture","i-heroicons-cog",{"title":48,"path":49,"stem":50,"icon":21},"Business Model","/whitepaper/business-model","1.whitepaper/6.business-model",{"title":52,"path":53,"stem":54,"icon":55},"Competitive Advantages","/whitepaper/competitive-advantages","1.whitepaper/7.competitive-advantages","i-heroicons-rocket-launch",{"title":57,"path":58,"stem":59,"icon":60},"Roadmap & Milestones","/whitepaper/roadmap-milestones","1.whitepaper/8.roadmap-milestones","i-heroicons-map",{"title":62,"path":63,"stem":64,"icon":65},"Team & Advisors","/whitepaper/team-advisors","1.whitepaper/9.team-advisors","i-heroicons-users",{"title":67,"icon":68,"path":69,"stem":70,"children":71},"Techniques","i-lucide-graduation-cap","/techniques","2.techniques",[72,75,107,139,171],{"title":67,"path":69,"stem":73,"icon":74},"2.techniques/index","i-heroicons-academic-cap",{"title":76,"path":77,"stem":78,"children":79,"icon":81,"parent":70,"order":82},"Remote Viewing","/techniques/remote-viewing","2.techniques/1.remote-viewing/index",[80,83,88,93,98,103],{"title":76,"path":77,"stem":78,"icon":81,"parent":70,"order":82},"i-lucide-eye",1,{"title":84,"path":85,"stem":86,"icon":87},"Controlled Remote Viewing (CRV)","/techniques/remote-viewing/controlled-remote-viewing-crv","2.techniques/1.remote-viewing/1.controlled-remote-viewing-crv","i-heroicons-clipboard-document-check",{"title":89,"path":90,"stem":91,"icon":92},"Scientific Remote Viewing (SRV)","/techniques/remote-viewing/scientific-remote-viewing-srv","2.techniques/1.remote-viewing/2.scientific-remote-viewing-srv","i-lucide-microscope",{"title":94,"path":95,"stem":96,"icon":97},"Technical Remote Viewing (TRV)","/techniques/remote-viewing/technical-remote-viewing-trv","2.techniques/1.remote-viewing/3.technical-remote-viewing-trv","i-heroicons-cog-6-tooth",{"title":99,"path":100,"stem":101,"icon":102},"Extended Remote Viewing (ERV)","/techniques/remote-viewing/extended-remote-viewing-erv","2.techniques/1.remote-viewing/4.extended-remote-viewing-erv","i-heroicons-arrows-pointing-out",{"title":104,"path":105,"stem":106,"icon":74},"RV Training & Development","/techniques/remote-viewing/rv-training-development","2.techniques/1.remote-viewing/5.rv-training-development",{"title":108,"path":109,"stem":110,"children":111,"icon":113,"parent":70,"order":114},"Dowsing","/techniques/dowsing","2.techniques/2.dowsing/index",[112,115,120,125,130,134],{"title":108,"path":109,"stem":110,"icon":113,"parent":70,"order":114},"i-lucide-compass",2,{"title":116,"path":117,"stem":118,"icon":119},"Pendulum Dowsing","/techniques/dowsing/pendulum-dowsing","2.techniques/2.dowsing/1.pendulum-dowsing","i-heroicons-clock",{"title":121,"path":122,"stem":123,"icon":124},"L-Rods Dowsing","/techniques/dowsing/l-rods-dowsing","2.techniques/2.dowsing/2.l-rods-dowsing","i-heroicons-adjustments-horizontal",{"title":126,"path":127,"stem":128,"icon":129},"Y-Rods Dowsing","/techniques/dowsing/y-rods-dowsing","2.techniques/2.dowsing/3.y-rods-dowsing","i-lucide-git-fork",{"title":131,"path":132,"stem":133,"icon":60},"Map Dowsing","/techniques/dowsing/map-dowsing","2.techniques/2.dowsing/4.map-dowsing",{"title":135,"path":136,"stem":137,"icon":138},"Information Dowsing","/techniques/dowsing/information-dowsing","2.techniques/2.dowsing/5.information-dowsing","i-heroicons-question-mark-circle",{"title":140,"path":141,"stem":142,"children":143,"icon":145,"parent":70,"order":146},"ESP Development","/techniques/esp-development","2.techniques/3.esp-development/index",[144,147,152,157,162,167],{"title":140,"path":141,"stem":142,"icon":145,"parent":70,"order":146},"i-lucide-brain",3,{"title":148,"path":149,"stem":150,"icon":151},"Telepathy Training","/techniques/esp-development/telepathy-training","2.techniques/3.esp-development/1.telepathy-training","i-heroicons-chat-bubble-left-right",{"title":153,"path":154,"stem":155,"icon":156},"Clairvoyance Development","/techniques/esp-development/clairvoyance-development","2.techniques/3.esp-development/2.clairvoyance-development","i-heroicons-eye",{"title":158,"path":159,"stem":160,"icon":161},"Clairaudience Practice","/techniques/esp-development/clairaudience-practice","2.techniques/3.esp-development/3.clairaudience-practice","i-heroicons-speaker-wave",{"title":163,"path":164,"stem":165,"icon":166},"Clairsentience Enhancement","/techniques/esp-development/clairsentience-enhancement","2.techniques/3.esp-development/4.clairsentience-enhancement","i-heroicons-hand-raised",{"title":168,"path":169,"stem":170,"icon":119},"Precognition Exercises","/techniques/esp-development/precognition-exercises","2.techniques/3.esp-development/5.precognition-exercises",{"title":172,"path":173,"stem":174,"children":175,"icon":177,"parent":70,"order":178},"Other Techniques","/techniques/other-techniques","2.techniques/4.other-techniques/index",[176,179,184,189,194,199],{"title":172,"path":173,"stem":174,"icon":177,"parent":70,"order":178},"i-lucide-sparkles",4,{"title":180,"path":181,"stem":182,"icon":183},"Tarot Reading","/techniques/other-techniques/tarot-reading","2.techniques/4.other-techniques/1.tarot-reading","i-heroicons-rectangle-stack",{"title":185,"path":186,"stem":187,"icon":188},"Astrology Applications","/techniques/other-techniques/astrology-applications","2.techniques/4.other-techniques/2.astrology-applications","i-heroicons-star",{"title":190,"path":191,"stem":192,"icon":193},"Numerology Methods","/techniques/other-techniques/numerology-methods","2.techniques/4.other-techniques/3.numerology-methods","i-heroicons-calculator",{"title":195,"path":196,"stem":197,"icon":198},"Scrying Practices","/techniques/other-techniques/scrying-practices","2.techniques/4.other-techniques/4.scrying-practices","i-heroicons-globe-americas",{"title":200,"path":201,"stem":202,"icon":203},"Meditation & Focus","/techniques/other-techniques/meditation-focus","2.techniques/4.other-techniques/5.meditation-focus","i-heroicons-sun",{"title":205,"icon":206,"path":207,"stem":208,"children":209},"Use Cases","i-lucide-briefcase","/use-cases","3.use-cases",[210,213,218,223,228,233,239,244,249,253,258,263,269,274,280,286],{"title":205,"path":207,"stem":211,"icon":212},"3.use-cases/index","i-heroicons-briefcase",{"title":214,"path":215,"stem":216,"icon":217,"parent":208,"order":82},"Missing Persons Applications","/use-cases/missing-persons","3.use-cases/1.missing-persons","i-heroicons-user-group",{"title":219,"path":220,"stem":221,"icon":41,"parent":208,"order":222},"Market Intelligence","/use-cases/market-intelligence","3.use-cases/10.market-intelligence",10,{"title":224,"path":225,"stem":226,"icon":21,"parent":208,"order":227},"Investment Opportunities","/use-cases/investment-opportunities","3.use-cases/11.investment-opportunities",11,{"title":229,"path":230,"stem":231,"icon":65,"parent":208,"order":232},"Competitive Analysis","/use-cases/competitive-analysis","3.use-cases/12.competitive-analysis",12,{"title":234,"path":235,"stem":236,"icon":237,"parent":208,"order":238},"Personal Guidance","/use-cases/personal-guidance","3.use-cases/13.personal-guidance","i-heroicons-heart",13,{"title":240,"path":241,"stem":242,"icon":74,"parent":208,"order":243},"Skill Development","/use-cases/skill-development","3.use-cases/14.skill-development",14,{"title":245,"path":246,"stem":247,"icon":60,"parent":208,"order":248},"Life Decisions","/use-cases/life-decisions","3.use-cases/15.life-decisions",15,{"title":250,"path":251,"stem":252,"icon":21,"parent":208,"order":114},"FBI Reward Cases","/use-cases/fbi-reward-cases","3.use-cases/2.fbi-reward-cases",{"title":254,"path":255,"stem":256,"icon":257,"parent":208,"order":146},"Success Stories","/use-cases/success-stories","3.use-cases/3.success-stories","i-heroicons-trophy",{"title":259,"path":260,"stem":261,"icon":262,"parent":208,"order":178},"Most Wanted Fugitives","/use-cases/most-wanted-fugitives","3.use-cases/4.most-wanted-fugitives","i-heroicons-finger-print",{"title":264,"path":265,"stem":266,"icon":267,"parent":208,"order":268},"Criminal Investigations","/use-cases/criminal-investigations","3.use-cases/5.criminal-investigations","i-heroicons-shield-check",5,{"title":270,"path":271,"stem":272,"icon":119,"parent":208,"order":273},"Cold Case Solutions","/use-cases/cold-case-solutions","3.use-cases/6.cold-case-solutions",6,{"title":275,"path":276,"stem":277,"icon":278,"parent":208,"order":279},"Archaeological Discoveries","/use-cases/archaeological-discoveries","3.use-cases/7.archaeological-discoveries","i-heroicons-building-library",7,{"title":281,"path":282,"stem":283,"icon":284,"parent":208,"order":285},"Historical Site Location","/use-cases/historical-site-location","3.use-cases/8.historical-site-location","i-heroicons-map-pin",8,{"title":287,"path":288,"stem":289,"icon":290,"parent":208,"order":291},"Ancient Artifact Finding","/use-cases/ancient-artifact-finding","3.use-cases/9.ancient-artifact-finding","i-heroicons-gift",9,{"title":293,"icon":294,"path":295,"stem":296,"children":297},"Investors","i-lucide-dollar-sign","/investors","4.investors",[298,300,304,307,311,316,321,325,330,335],{"title":293,"path":295,"stem":299,"icon":21},"4.investors/index",{"title":301,"path":302,"stem":303,"icon":41,"parent":296,"order":82},"Investment Overview","/investors/investment-overview","4.investors/1.investment-overview",{"title":38,"path":305,"stem":306,"icon":198,"parent":296,"order":114},"/investors/market-opportunity","4.investors/2.market-opportunity",{"title":308,"path":309,"stem":310,"icon":267,"parent":296,"order":146},"Competitive Advantage","/investors/competitive-advantage","4.investors/3.competitive-advantage",{"title":312,"path":313,"stem":314,"icon":315,"parent":296,"order":178},"Financial Projections","/investors/financial-projections","4.investors/4.financial-projections","i-lucide-trending-up",{"title":317,"path":318,"stem":319,"icon":320,"parent":296,"order":268},"Key Metrics","/investors/key-metrics","4.investors/5.key-metrics","i-heroicons-chart-pie",{"title":322,"path":323,"stem":324,"icon":21,"parent":296,"order":273},"Use of Funds","/investors/use-of-funds","4.investors/6.use-of-funds",{"title":326,"path":327,"stem":328,"icon":329,"parent":296,"order":279},"Investment Process","/investors/investment-process","4.investors/7.investment-process","i-heroicons-arrow-path",{"title":331,"path":332,"stem":333,"icon":334,"parent":296,"order":285},"Partnership Opportunities","/investors/partnership-opportunities","4.investors/8.partnership-opportunities","i-lucide-handshake",{"title":336,"path":337,"stem":338,"icon":138,"parent":296,"order":291},"Frequently Asked Questions","/investors/faq","4.investors/9.faq",{"title":340,"icon":341,"path":342,"stem":343,"children":344},"Developers","i-lucide-code","/developers","5.developers",[345,348,352,357,361,366,371,376,380,384,389,394,398],{"title":340,"path":342,"stem":346,"icon":347},"5.developers/index","i-heroicons-code-bracket",{"title":349,"path":350,"stem":351,"icon":55,"parent":343,"order":82},"Getting Started","/developers/getting-started","5.developers/1.getting-started",{"title":353,"path":354,"stem":355,"icon":356,"order":222},"Troubleshooting","/developers/troubleshooting","5.developers/10.troubleshooting","i-heroicons-wrench-screwdriver",{"title":358,"path":359,"stem":360,"icon":12,"order":227},"Changelog","/developers/changelog","5.developers/11.changelog",{"title":362,"path":363,"stem":364,"icon":365,"order":232},"Support","/developers/support","5.developers/12.support","i-heroicons-lifebuoy",{"title":367,"path":368,"stem":369,"icon":370,"parent":343,"order":114},"Platform Overview","/developers/platform-overview","5.developers/2.platform-overview","i-heroicons-cube",{"title":372,"path":373,"stem":374,"icon":375,"parent":343,"order":146},"Authentication","/developers/authentication","5.developers/3.authentication","i-heroicons-key",{"title":377,"path":378,"stem":379,"icon":347,"order":178},"API Reference","/developers/api-reference","5.developers/4.api-reference",{"title":381,"path":382,"stem":383,"icon":370,"order":268},"SDKs & Libraries","/developers/sdks","5.developers/5.sdks",{"title":385,"path":386,"stem":387,"icon":388,"order":273},"Webhooks","/developers/webhooks","5.developers/6.webhooks","i-heroicons-bell",{"title":390,"path":391,"stem":392,"icon":393,"order":279},"Integration Guides","/developers/integration-guides","5.developers/7.integration-guides","i-heroicons-puzzle-piece",{"title":395,"path":396,"stem":397,"icon":356,"order":285},"Developer Tools","/developers/developer-tools","5.developers/8.developer-tools",{"title":399,"path":400,"stem":401,"icon":36,"order":291},"Best Practices","/developers/best-practices","5.developers/9.best-practices",{"title":403,"icon":404,"path":405,"stem":406,"children":407},"Research","i-lucide-search","/research","6.research",[408,410,414,419,423,428,432,437,441,446],{"title":403,"path":405,"stem":409,"icon":92},"6.research/index",{"title":411,"path":412,"stem":413,"icon":92,"parent":406,"order":82},"Research Overview","/research/research-overview","6.research/1.research-overview",{"title":415,"path":416,"stem":417,"icon":418,"parent":406,"order":114},"Methodology Validation","/research/methodology-validation","6.research/2.methodology-validation","i-heroicons-check-circle",{"title":420,"path":421,"stem":422,"icon":55,"order":146},"Stargate Project Research","/research/stargate-project","6.research/3.stargate-project",{"title":424,"path":425,"stem":426,"icon":427,"order":178},"Government Programs Research","/research/government-programs","6.research/4.government-programs","i-heroicons-building-office",{"title":429,"path":430,"stem":431,"icon":257,"order":268},"Historical Success Cases","/research/historical-success-cases","6.research/5.historical-success-cases",{"title":433,"path":434,"stem":435,"icon":436,"order":273},"Ongoing Research","/research/ongoing-research","6.research/6.ongoing-research","i-heroicons-beaker",{"title":438,"path":439,"stem":440,"icon":74,"order":279},"Academic Partnerships","/research/academic-partnerships","6.research/7.academic-partnerships",{"title":442,"path":443,"stem":444,"icon":445,"order":285},"Future Research Directions","/research/future-research","6.research/8.future-research","i-heroicons-sparkles",{"title":447,"path":448,"stem":449,"icon":12,"order":291},"Publications","/research/publications","6.research/9.publications",{"title":451,"icon":452,"path":453,"stem":454,"children":455},"Specifications","i-lucide-settings","/specifications","7.specifications",[456,458,462,466,470,474,478],{"title":451,"path":453,"stem":457,"icon":97},"7.specifications/index",{"title":459,"path":460,"stem":461},"Technical Specifications","/specifications/technical-specifications","7.specifications/1.technical-specifications",{"title":463,"path":464,"stem":465},"API Endpoints Reference","/specifications/api-endpoints","7.specifications/2.api-endpoints",{"title":467,"path":468,"stem":469},"Data Models & Schemas","/specifications/data-models","7.specifications/3.data-models",{"title":471,"path":472,"stem":473},"Integration Requirements","/specifications/integration-requirements","7.specifications/4.integration-requirements",{"title":475,"path":476,"stem":477},"Compliance & Standards","/specifications/compliance-standards","7.specifications/5.compliance-standards",{"title":479,"path":480,"stem":481},"Dir","/specifications/_dir","7.specifications/_dir",{"title":483,"icon":484,"path":485,"stem":486,"children":487},"Resources","i-lucide-book-open","/resources","8.resources",[488,491,495,498,502],{"title":483,"path":485,"stem":489,"icon":490},"8.resources/index","i-heroicons-book-open",{"title":492,"path":493,"stem":494},"Glossary","/resources/glossary","8.resources/1.glossary",{"title":336,"path":496,"stem":497},"/resources/faqs","8.resources/2.faqs",{"title":499,"path":500,"stem":501},"Downloads & Resources","/resources/downloads","8.resources/3.downloads",{"title":503,"path":504,"stem":505},"Community & Support","/resources/community","8.resources/4.community",{"id":507,"title":471,"body":508,"description":13858,"extension":13859,"links":13860,"meta":13861,"navigation":594,"path":472,"seo":13862,"stem":473,"__hash__":13863},"docs/7.specifications/4.integration-requirements.md",{"type":509,"value":510,"toc":13832},"minimark",[511,516,521,526,689,693,820,824,828,951,955,1077,1081,1085,1089,1275,1279,1752,1756,1760,2222,2226,2376,2380,2577,2581,2585,2589,3754,3758,4031,4035,4039,5254,5258,5262,5266,6324,6328,6332,7876,7880,7884,7888,8698,8702,8706,10691,10695,10699,10703,12608,12612,12616,13824,13828],[512,513,515],"h2",{"id":514},"system-requirements","System Requirements",[517,518,520],"h3",{"id":519},"minimum-technical-specifications","Minimum Technical Specifications",[522,523,525],"h4",{"id":524},"hardware-requirements","Hardware Requirements",[527,528,533],"pre",{"className":529,"code":530,"language":531,"meta":532,"style":532},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Client Applications:\n  CPU: Dual-core 1.5GHz or equivalent\n  RAM: 4GB minimum, 8GB recommended\n  Storage: 500MB available space\n  Network: Broadband internet connection (10 Mbps+)\n\nMobile Applications:\n  OS: iOS 13+ or Android 8+\n  RAM: 2GB minimum\n  Storage: 200MB available space\n  Network: 4G LTE or WiFi recommended\n\nServer Integration:\n  CPU: Quad-core 2.0GHz or equivalent\n  RAM: 8GB minimum, 16GB recommended\n  Storage: 50GB available space\n  Network: Dedicated internet connection (100 Mbps+)\n","yaml","",[534,535,536,548,560,570,580,590,596,603,613,622,631,640,644,651,660,669,679],"code",{"__ignoreMap":532},[537,538,540,544],"span",{"class":539,"line":82},"line",[537,541,543],{"class":542},"swJcz","Client Applications",[537,545,547],{"class":546},"sMK4o",":\n",[537,549,550,553,556],{"class":539,"line":114},[537,551,552],{"class":542},"  CPU",[537,554,555],{"class":546},":",[537,557,559],{"class":558},"sfazB"," Dual-core 1.5GHz or equivalent\n",[537,561,562,565,567],{"class":539,"line":146},[537,563,564],{"class":542},"  RAM",[537,566,555],{"class":546},[537,568,569],{"class":558}," 4GB minimum, 8GB recommended\n",[537,571,572,575,577],{"class":539,"line":178},[537,573,574],{"class":542},"  Storage",[537,576,555],{"class":546},[537,578,579],{"class":558}," 500MB available space\n",[537,581,582,585,587],{"class":539,"line":268},[537,583,584],{"class":542},"  Network",[537,586,555],{"class":546},[537,588,589],{"class":558}," Broadband internet connection (10 Mbps+)\n",[537,591,592],{"class":539,"line":273},[537,593,595],{"emptyLinePlaceholder":594},true,"\n",[537,597,598,601],{"class":539,"line":279},[537,599,600],{"class":542},"Mobile Applications",[537,602,547],{"class":546},[537,604,605,608,610],{"class":539,"line":285},[537,606,607],{"class":542},"  OS",[537,609,555],{"class":546},[537,611,612],{"class":558}," iOS 13+ or Android 8+\n",[537,614,615,617,619],{"class":539,"line":291},[537,616,564],{"class":542},[537,618,555],{"class":546},[537,620,621],{"class":558}," 2GB minimum\n",[537,623,624,626,628],{"class":539,"line":222},[537,625,574],{"class":542},[537,627,555],{"class":546},[537,629,630],{"class":558}," 200MB available space\n",[537,632,633,635,637],{"class":539,"line":227},[537,634,584],{"class":542},[537,636,555],{"class":546},[537,638,639],{"class":558}," 4G LTE or WiFi recommended\n",[537,641,642],{"class":539,"line":232},[537,643,595],{"emptyLinePlaceholder":594},[537,645,646,649],{"class":539,"line":238},[537,647,648],{"class":542},"Server Integration",[537,650,547],{"class":546},[537,652,653,655,657],{"class":539,"line":243},[537,654,552],{"class":542},[537,656,555],{"class":546},[537,658,659],{"class":558}," Quad-core 2.0GHz or equivalent\n",[537,661,662,664,666],{"class":539,"line":248},[537,663,564],{"class":542},[537,665,555],{"class":546},[537,667,668],{"class":558}," 8GB minimum, 16GB recommended\n",[537,670,672,674,676],{"class":539,"line":671},16,[537,673,574],{"class":542},[537,675,555],{"class":546},[537,677,678],{"class":558}," 50GB available space\n",[537,680,682,684,686],{"class":539,"line":681},17,[537,683,584],{"class":542},[537,685,555],{"class":546},[537,687,688],{"class":558}," Dedicated internet connection (100 Mbps+)\n",[522,690,692],{"id":691},"software-requirements","Software Requirements",[527,694,696],{"className":529,"code":695,"language":531,"meta":532,"style":532},"Operating Systems:\n  - Windows 10/11 (64-bit)\n  - macOS 10.15+ (Catalina or later)\n  - Ubuntu 20.04+ LTS\n  - CentOS 8+ / RHEL 8+\n\nRuntime Environments:\n  - Node.js 18.0+ (for JavaScript SDK)\n  - Python 3.8+ (for Python SDK)\n  - Java 11+ (for Java SDK)\n  - .NET 6.0+ (for C# SDK)\n  - Go 1.18+ (for Go SDK)\n\nWeb Browsers:\n  - Chrome 90+\n  - Firefox 88+\n  - Safari 14+\n  - Edge 90+\n",[534,697,698,705,713,720,727,734,738,745,752,759,766,773,780,784,791,798,805,812],{"__ignoreMap":532},[537,699,700,703],{"class":539,"line":82},[537,701,702],{"class":542},"Operating Systems",[537,704,547],{"class":546},[537,706,707,710],{"class":539,"line":114},[537,708,709],{"class":546},"  -",[537,711,712],{"class":558}," Windows 10/11 (64-bit)\n",[537,714,715,717],{"class":539,"line":146},[537,716,709],{"class":546},[537,718,719],{"class":558}," macOS 10.15+ (Catalina or later)\n",[537,721,722,724],{"class":539,"line":178},[537,723,709],{"class":546},[537,725,726],{"class":558}," Ubuntu 20.04+ LTS\n",[537,728,729,731],{"class":539,"line":268},[537,730,709],{"class":546},[537,732,733],{"class":558}," CentOS 8+ / RHEL 8+\n",[537,735,736],{"class":539,"line":273},[537,737,595],{"emptyLinePlaceholder":594},[537,739,740,743],{"class":539,"line":279},[537,741,742],{"class":542},"Runtime Environments",[537,744,547],{"class":546},[537,746,747,749],{"class":539,"line":285},[537,748,709],{"class":546},[537,750,751],{"class":558}," Node.js 18.0+ (for JavaScript SDK)\n",[537,753,754,756],{"class":539,"line":291},[537,755,709],{"class":546},[537,757,758],{"class":558}," Python 3.8+ (for Python SDK)\n",[537,760,761,763],{"class":539,"line":222},[537,762,709],{"class":546},[537,764,765],{"class":558}," Java 11+ (for Java SDK)\n",[537,767,768,770],{"class":539,"line":227},[537,769,709],{"class":546},[537,771,772],{"class":558}," .NET 6.0+ (for C# SDK)\n",[537,774,775,777],{"class":539,"line":232},[537,776,709],{"class":546},[537,778,779],{"class":558}," Go 1.18+ (for Go SDK)\n",[537,781,782],{"class":539,"line":238},[537,783,595],{"emptyLinePlaceholder":594},[537,785,786,789],{"class":539,"line":243},[537,787,788],{"class":542},"Web Browsers",[537,790,547],{"class":546},[537,792,793,795],{"class":539,"line":248},[537,794,709],{"class":546},[537,796,797],{"class":558}," Chrome 90+\n",[537,799,800,802],{"class":539,"line":671},[537,801,709],{"class":546},[537,803,804],{"class":558}," Firefox 88+\n",[537,806,807,809],{"class":539,"line":681},[537,808,709],{"class":546},[537,810,811],{"class":558}," Safari 14+\n",[537,813,815,817],{"class":539,"line":814},18,[537,816,709],{"class":546},[537,818,819],{"class":558}," Edge 90+\n",[517,821,823],{"id":822},"network-requirements","Network Requirements",[522,825,827],{"id":826},"connectivity-requirements","Connectivity Requirements",[527,829,831],{"className":529,"code":830,"language":531,"meta":532,"style":532},"Bandwidth:\n  Minimum: 10 Mbps sustained\n  Recommended: 100 Mbps sustained\n  Peak: 1 Gbps for enterprise deployments\n\nLatency:\n  Maximum: 500ms round-trip\n  Recommended: \u003C100ms round-trip\n  Critical: \u003C50ms for real-time features\n\nReliability:\n  Uptime: 99.9% availability required\n  Packet Loss: \u003C0.1%\n  Jitter: \u003C20ms\n",[534,832,833,840,850,860,870,874,881,891,900,910,914,921,931,941],{"__ignoreMap":532},[537,834,835,838],{"class":539,"line":82},[537,836,837],{"class":542},"Bandwidth",[537,839,547],{"class":546},[537,841,842,845,847],{"class":539,"line":114},[537,843,844],{"class":542},"  Minimum",[537,846,555],{"class":546},[537,848,849],{"class":558}," 10 Mbps sustained\n",[537,851,852,855,857],{"class":539,"line":146},[537,853,854],{"class":542},"  Recommended",[537,856,555],{"class":546},[537,858,859],{"class":558}," 100 Mbps sustained\n",[537,861,862,865,867],{"class":539,"line":178},[537,863,864],{"class":542},"  Peak",[537,866,555],{"class":546},[537,868,869],{"class":558}," 1 Gbps for enterprise deployments\n",[537,871,872],{"class":539,"line":268},[537,873,595],{"emptyLinePlaceholder":594},[537,875,876,879],{"class":539,"line":273},[537,877,878],{"class":542},"Latency",[537,880,547],{"class":546},[537,882,883,886,888],{"class":539,"line":279},[537,884,885],{"class":542},"  Maximum",[537,887,555],{"class":546},[537,889,890],{"class":558}," 500ms round-trip\n",[537,892,893,895,897],{"class":539,"line":285},[537,894,854],{"class":542},[537,896,555],{"class":546},[537,898,899],{"class":558}," \u003C100ms round-trip\n",[537,901,902,905,907],{"class":539,"line":291},[537,903,904],{"class":542},"  Critical",[537,906,555],{"class":546},[537,908,909],{"class":558}," \u003C50ms for real-time features\n",[537,911,912],{"class":539,"line":222},[537,913,595],{"emptyLinePlaceholder":594},[537,915,916,919],{"class":539,"line":227},[537,917,918],{"class":542},"Reliability",[537,920,547],{"class":546},[537,922,923,926,928],{"class":539,"line":232},[537,924,925],{"class":542},"  Uptime",[537,927,555],{"class":546},[537,929,930],{"class":558}," 99.9% availability required\n",[537,932,933,936,938],{"class":539,"line":238},[537,934,935],{"class":542},"  Packet Loss",[537,937,555],{"class":546},[537,939,940],{"class":558}," \u003C0.1%\n",[537,942,943,946,948],{"class":539,"line":243},[537,944,945],{"class":542},"  Jitter",[537,947,555],{"class":546},[537,949,950],{"class":558}," \u003C20ms\n",[522,952,954],{"id":953},"firewall-configuration","Firewall Configuration",[527,956,958],{"className":529,"code":957,"language":531,"meta":532,"style":532},"Required Ports:\n  HTTPS (443/TCP): API access and web interface\n  WSS (443/TCP): WebSocket connections\n  HTTP (80/TCP): Redirect to HTTPS only\n\nIP Ranges:\n  Primary: 52.0.0.0/8 (AWS US-East)\n  Backup: 54.0.0.0/8 (AWS US-West)\n  CDN: 13.0.0.0/8 (CloudFront)\n\nDomain Whitelist:\n  - api.mindpeeker.com\n  - cdn.mindpeeker.com\n  - ws.mindpeeker.com\n  - auth.mindpeeker.com\n",[534,959,960,967,977,987,997,1001,1008,1018,1028,1038,1042,1049,1056,1063,1070],{"__ignoreMap":532},[537,961,962,965],{"class":539,"line":82},[537,963,964],{"class":542},"Required Ports",[537,966,547],{"class":546},[537,968,969,972,974],{"class":539,"line":114},[537,970,971],{"class":542},"  HTTPS (443/TCP)",[537,973,555],{"class":546},[537,975,976],{"class":558}," API access and web interface\n",[537,978,979,982,984],{"class":539,"line":146},[537,980,981],{"class":542},"  WSS (443/TCP)",[537,983,555],{"class":546},[537,985,986],{"class":558}," WebSocket connections\n",[537,988,989,992,994],{"class":539,"line":178},[537,990,991],{"class":542},"  HTTP (80/TCP)",[537,993,555],{"class":546},[537,995,996],{"class":558}," Redirect to HTTPS only\n",[537,998,999],{"class":539,"line":268},[537,1000,595],{"emptyLinePlaceholder":594},[537,1002,1003,1006],{"class":539,"line":273},[537,1004,1005],{"class":542},"IP Ranges",[537,1007,547],{"class":546},[537,1009,1010,1013,1015],{"class":539,"line":279},[537,1011,1012],{"class":542},"  Primary",[537,1014,555],{"class":546},[537,1016,1017],{"class":558}," 52.0.0.0/8 (AWS US-East)\n",[537,1019,1020,1023,1025],{"class":539,"line":285},[537,1021,1022],{"class":542},"  Backup",[537,1024,555],{"class":546},[537,1026,1027],{"class":558}," 54.0.0.0/8 (AWS US-West)\n",[537,1029,1030,1033,1035],{"class":539,"line":291},[537,1031,1032],{"class":542},"  CDN",[537,1034,555],{"class":546},[537,1036,1037],{"class":558}," 13.0.0.0/8 (CloudFront)\n",[537,1039,1040],{"class":539,"line":222},[537,1041,595],{"emptyLinePlaceholder":594},[537,1043,1044,1047],{"class":539,"line":227},[537,1045,1046],{"class":542},"Domain Whitelist",[537,1048,547],{"class":546},[537,1050,1051,1053],{"class":539,"line":232},[537,1052,709],{"class":546},[537,1054,1055],{"class":558}," api.mindpeeker.com\n",[537,1057,1058,1060],{"class":539,"line":238},[537,1059,709],{"class":546},[537,1061,1062],{"class":558}," cdn.mindpeeker.com\n",[537,1064,1065,1067],{"class":539,"line":243},[537,1066,709],{"class":546},[537,1068,1069],{"class":558}," ws.mindpeeker.com\n",[537,1071,1072,1074],{"class":539,"line":248},[537,1073,709],{"class":546},[537,1075,1076],{"class":558}," auth.mindpeeker.com\n",[512,1078,1080],{"id":1079},"api-integration-requirements","API Integration Requirements",[517,1082,1084],{"id":1083},"authentication-setup","Authentication Setup",[522,1086,1088],{"id":1087},"api-key-generation","API Key Generation",[527,1090,1094],{"className":1091,"code":1092,"language":1093,"meta":532,"style":532},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","1. Navigate to Settings → API Keys\n2. Click \"Generate New Key\"\n3. Configure permissions and limits\n4. Securely store the key\n\ncurl -X POST https://api.mindpeeker.com/v1/api-keys \\\n  -H \"Authorization: Bearer YOUR_JWT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"Production API Key\",\n    \"permissions\": [\n      {\"resource\": \"sessions\", \"actions\": [\"create\", \"read\"]},\n      {\"resource\": \"analyses\", \"actions\": [\"read\"]}\n    ],\n    \"rate_limit_per_minute\": 1000,\n    \"ip_whitelist\": [\"203.0.113.0/24\"]\n  }'\n","bash",[534,1095,1096,1120,1137,1154,1171,1175,1193,1208,1221,1232,1237,1242,1247,1252,1257,1262,1267],{"__ignoreMap":532},[537,1097,1098,1102,1105,1108,1111,1114,1117],{"class":539,"line":82},[537,1099,1101],{"class":1100},"sBMFI","1.",[537,1103,1104],{"class":558}," Navigate",[537,1106,1107],{"class":558}," to",[537,1109,1110],{"class":558}," Settings",[537,1112,1113],{"class":558}," →",[537,1115,1116],{"class":558}," API",[537,1118,1119],{"class":558}," Keys\n",[537,1121,1122,1125,1128,1131,1134],{"class":539,"line":114},[537,1123,1124],{"class":1100},"2.",[537,1126,1127],{"class":558}," Click",[537,1129,1130],{"class":546}," \"",[537,1132,1133],{"class":558},"Generate New Key",[537,1135,1136],{"class":546},"\"\n",[537,1138,1139,1142,1145,1148,1151],{"class":539,"line":146},[537,1140,1141],{"class":1100},"3.",[537,1143,1144],{"class":558}," Configure",[537,1146,1147],{"class":558}," permissions",[537,1149,1150],{"class":558}," and",[537,1152,1153],{"class":558}," limits\n",[537,1155,1156,1159,1162,1165,1168],{"class":539,"line":178},[537,1157,1158],{"class":1100},"4.",[537,1160,1161],{"class":558}," Securely",[537,1163,1164],{"class":558}," store",[537,1166,1167],{"class":558}," the",[537,1169,1170],{"class":558}," key\n",[537,1172,1173],{"class":539,"line":268},[537,1174,595],{"emptyLinePlaceholder":594},[537,1176,1177,1180,1183,1186,1189],{"class":539,"line":273},[537,1178,1179],{"class":1100},"curl",[537,1181,1182],{"class":558}," -X",[537,1184,1185],{"class":558}," POST",[537,1187,1188],{"class":558}," https://api.mindpeeker.com/v1/api-keys",[537,1190,1192],{"class":1191},"sTEyZ"," \\\n",[537,1194,1195,1198,1200,1203,1206],{"class":539,"line":279},[537,1196,1197],{"class":558},"  -H",[537,1199,1130],{"class":546},[537,1201,1202],{"class":558},"Authorization: Bearer YOUR_JWT_TOKEN",[537,1204,1205],{"class":546},"\"",[537,1207,1192],{"class":1191},[537,1209,1210,1212,1214,1217,1219],{"class":539,"line":285},[537,1211,1197],{"class":558},[537,1213,1130],{"class":546},[537,1215,1216],{"class":558},"Content-Type: application/json",[537,1218,1205],{"class":546},[537,1220,1192],{"class":1191},[537,1222,1223,1226,1229],{"class":539,"line":291},[537,1224,1225],{"class":558},"  -d",[537,1227,1228],{"class":546}," '",[537,1230,1231],{"class":558},"{\n",[537,1233,1234],{"class":539,"line":222},[537,1235,1236],{"class":558},"    \"name\": \"Production API Key\",\n",[537,1238,1239],{"class":539,"line":227},[537,1240,1241],{"class":558},"    \"permissions\": [\n",[537,1243,1244],{"class":539,"line":232},[537,1245,1246],{"class":558},"      {\"resource\": \"sessions\", \"actions\": [\"create\", \"read\"]},\n",[537,1248,1249],{"class":539,"line":238},[537,1250,1251],{"class":558},"      {\"resource\": \"analyses\", \"actions\": [\"read\"]}\n",[537,1253,1254],{"class":539,"line":243},[537,1255,1256],{"class":558},"    ],\n",[537,1258,1259],{"class":539,"line":248},[537,1260,1261],{"class":558},"    \"rate_limit_per_minute\": 1000,\n",[537,1263,1264],{"class":539,"line":671},[537,1265,1266],{"class":558},"    \"ip_whitelist\": [\"203.0.113.0/24\"]\n",[537,1268,1269,1272],{"class":539,"line":681},[537,1270,1271],{"class":558},"  }",[537,1273,1274],{"class":546},"'\n",[522,1276,1278],{"id":1277},"jwt-token-management","JWT Token Management",[527,1280,1284],{"className":1281,"code":1282,"language":1283,"meta":532,"style":532},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// Token refresh implementation\nclass TokenManager {\n  private refreshToken: string;\n  private accessToken: string;\n  private tokenExpiry: Date;\n\n  async getValidToken(): Promise\u003Cstring> {\n    if (!this.accessToken || this.isTokenExpired()) {\n      await this.refreshAccessToken();\n    }\n    return this.accessToken;\n  }\n\n  private async refreshAccessToken(): Promise\u003Cvoid> {\n    const response = await fetch('/api/auth/refresh', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ refresh_token: this.refreshToken })\n    });\n\n    const data = await response.json();\n    this.accessToken = data.token;\n    this.tokenExpiry = new Date(Date.now() + (data.expires_in * 1000));\n  }\n\n  private isTokenExpired(): boolean {\n    return new Date() >= this.tokenExpiry;\n  }\n}\n","typescript",[534,1285,1286,1292,1304,1320,1333,1347,1351,1376,1406,1421,1426,1437,1442,1446,1469,1502,1519,1548,1585,1596,1601,1624,1643,1696,1701,1706,1721,1741,1746],{"__ignoreMap":532},[537,1287,1288],{"class":539,"line":82},[537,1289,1291],{"class":1290},"sHwdD","// Token refresh implementation\n",[537,1293,1294,1298,1301],{"class":539,"line":114},[537,1295,1297],{"class":1296},"spNyl","class",[537,1299,1300],{"class":1100}," TokenManager",[537,1302,1303],{"class":546}," {\n",[537,1305,1306,1309,1312,1314,1317],{"class":539,"line":146},[537,1307,1308],{"class":1296},"  private",[537,1310,1311],{"class":542}," refreshToken",[537,1313,555],{"class":546},[537,1315,1316],{"class":1100}," string",[537,1318,1319],{"class":546},";\n",[537,1321,1322,1324,1327,1329,1331],{"class":539,"line":178},[537,1323,1308],{"class":1296},[537,1325,1326],{"class":542}," accessToken",[537,1328,555],{"class":546},[537,1330,1316],{"class":1100},[537,1332,1319],{"class":546},[537,1334,1335,1337,1340,1342,1345],{"class":539,"line":268},[537,1336,1308],{"class":1296},[537,1338,1339],{"class":542}," tokenExpiry",[537,1341,555],{"class":546},[537,1343,1344],{"class":1100}," Date",[537,1346,1319],{"class":546},[537,1348,1349],{"class":539,"line":273},[537,1350,595],{"emptyLinePlaceholder":594},[537,1352,1353,1356,1359,1362,1365,1368,1371,1374],{"class":539,"line":279},[537,1354,1355],{"class":1296},"  async",[537,1357,1358],{"class":542}," getValidToken",[537,1360,1361],{"class":546},"():",[537,1363,1364],{"class":1100}," Promise",[537,1366,1367],{"class":546},"\u003C",[537,1369,1370],{"class":1100},"string",[537,1372,1373],{"class":546},">",[537,1375,1303],{"class":546},[537,1377,1378,1382,1385,1388,1391,1394,1397,1401,1404],{"class":539,"line":285},[537,1379,1381],{"class":1380},"s7zQu","    if",[537,1383,1384],{"class":542}," (",[537,1386,1387],{"class":546},"!this.",[537,1389,1390],{"class":1191},"accessToken",[537,1392,1393],{"class":546}," ||",[537,1395,1396],{"class":546}," this.",[537,1398,1400],{"class":1399},"s2Zo4","isTokenExpired",[537,1402,1403],{"class":542},"()) ",[537,1405,1231],{"class":546},[537,1407,1408,1411,1413,1416,1419],{"class":539,"line":291},[537,1409,1410],{"class":1380},"      await",[537,1412,1396],{"class":546},[537,1414,1415],{"class":1399},"refreshAccessToken",[537,1417,1418],{"class":542},"()",[537,1420,1319],{"class":546},[537,1422,1423],{"class":539,"line":222},[537,1424,1425],{"class":546},"    }\n",[537,1427,1428,1431,1433,1435],{"class":539,"line":227},[537,1429,1430],{"class":1380},"    return",[537,1432,1396],{"class":546},[537,1434,1390],{"class":1191},[537,1436,1319],{"class":546},[537,1438,1439],{"class":539,"line":232},[537,1440,1441],{"class":546},"  }\n",[537,1443,1444],{"class":539,"line":238},[537,1445,595],{"emptyLinePlaceholder":594},[537,1447,1448,1450,1453,1456,1458,1460,1462,1465,1467],{"class":539,"line":243},[537,1449,1308],{"class":1296},[537,1451,1452],{"class":1296}," async",[537,1454,1455],{"class":542}," refreshAccessToken",[537,1457,1361],{"class":546},[537,1459,1364],{"class":1100},[537,1461,1367],{"class":546},[537,1463,1464],{"class":1100},"void",[537,1466,1373],{"class":546},[537,1468,1303],{"class":546},[537,1470,1471,1474,1477,1480,1483,1486,1489,1492,1495,1497,1500],{"class":539,"line":248},[537,1472,1473],{"class":1296},"    const",[537,1475,1476],{"class":1191}," response",[537,1478,1479],{"class":546}," =",[537,1481,1482],{"class":1380}," await",[537,1484,1485],{"class":1399}," fetch",[537,1487,1488],{"class":542},"(",[537,1490,1491],{"class":546},"'",[537,1493,1494],{"class":558},"/api/auth/refresh",[537,1496,1491],{"class":546},[537,1498,1499],{"class":546},",",[537,1501,1303],{"class":546},[537,1503,1504,1507,1509,1511,1514,1516],{"class":539,"line":671},[537,1505,1506],{"class":542},"      method",[537,1508,555],{"class":546},[537,1510,1228],{"class":546},[537,1512,1513],{"class":558},"POST",[537,1515,1491],{"class":546},[537,1517,1518],{"class":546},",\n",[537,1520,1521,1524,1526,1529,1531,1534,1536,1538,1540,1543,1545],{"class":539,"line":681},[537,1522,1523],{"class":542},"      headers",[537,1525,555],{"class":546},[537,1527,1528],{"class":546}," {",[537,1530,1228],{"class":546},[537,1532,1533],{"class":542},"Content-Type",[537,1535,1491],{"class":546},[537,1537,555],{"class":546},[537,1539,1228],{"class":546},[537,1541,1542],{"class":558},"application/json",[537,1544,1491],{"class":546},[537,1546,1547],{"class":546}," },\n",[537,1549,1550,1553,1555,1558,1561,1564,1566,1569,1572,1574,1576,1579,1582],{"class":539,"line":814},[537,1551,1552],{"class":542},"      body",[537,1554,555],{"class":546},[537,1556,1557],{"class":1191}," JSON",[537,1559,1560],{"class":546},".",[537,1562,1563],{"class":1399},"stringify",[537,1565,1488],{"class":542},[537,1567,1568],{"class":546},"{",[537,1570,1571],{"class":542}," refresh_token",[537,1573,555],{"class":546},[537,1575,1396],{"class":546},[537,1577,1578],{"class":1191},"refreshToken",[537,1580,1581],{"class":546}," }",[537,1583,1584],{"class":542},")\n",[537,1586,1588,1591,1594],{"class":539,"line":1587},19,[537,1589,1590],{"class":546},"    }",[537,1592,1593],{"class":542},")",[537,1595,1319],{"class":546},[537,1597,1599],{"class":539,"line":1598},20,[537,1600,595],{"emptyLinePlaceholder":594},[537,1602,1604,1606,1609,1611,1613,1615,1617,1620,1622],{"class":539,"line":1603},21,[537,1605,1473],{"class":1296},[537,1607,1608],{"class":1191}," data",[537,1610,1479],{"class":546},[537,1612,1482],{"class":1380},[537,1614,1476],{"class":1191},[537,1616,1560],{"class":546},[537,1618,1619],{"class":1399},"json",[537,1621,1418],{"class":542},[537,1623,1319],{"class":546},[537,1625,1627,1630,1632,1634,1636,1638,1641],{"class":539,"line":1626},22,[537,1628,1629],{"class":546},"    this.",[537,1631,1390],{"class":1191},[537,1633,1479],{"class":546},[537,1635,1608],{"class":1191},[537,1637,1560],{"class":546},[537,1639,1640],{"class":1191},"token",[537,1642,1319],{"class":546},[537,1644,1646,1648,1651,1653,1656,1658,1660,1663,1665,1668,1671,1674,1676,1679,1681,1684,1687,1691,1694],{"class":539,"line":1645},23,[537,1647,1629],{"class":546},[537,1649,1650],{"class":1191},"tokenExpiry",[537,1652,1479],{"class":546},[537,1654,1655],{"class":546}," new",[537,1657,1344],{"class":1399},[537,1659,1488],{"class":542},[537,1661,1662],{"class":1191},"Date",[537,1664,1560],{"class":546},[537,1666,1667],{"class":1399},"now",[537,1669,1670],{"class":542},"() ",[537,1672,1673],{"class":546},"+",[537,1675,1384],{"class":542},[537,1677,1678],{"class":1191},"data",[537,1680,1560],{"class":546},[537,1682,1683],{"class":1191},"expires_in",[537,1685,1686],{"class":546}," *",[537,1688,1690],{"class":1689},"sbssI"," 1000",[537,1692,1693],{"class":542},"))",[537,1695,1319],{"class":546},[537,1697,1699],{"class":539,"line":1698},24,[537,1700,1441],{"class":546},[537,1702,1704],{"class":539,"line":1703},25,[537,1705,595],{"emptyLinePlaceholder":594},[537,1707,1709,1711,1714,1716,1719],{"class":539,"line":1708},26,[537,1710,1308],{"class":1296},[537,1712,1713],{"class":542}," isTokenExpired",[537,1715,1361],{"class":546},[537,1717,1718],{"class":1100}," boolean",[537,1720,1303],{"class":546},[537,1722,1724,1726,1728,1730,1732,1735,1737,1739],{"class":539,"line":1723},27,[537,1725,1430],{"class":1380},[537,1727,1655],{"class":546},[537,1729,1344],{"class":1399},[537,1731,1670],{"class":542},[537,1733,1734],{"class":546},">=",[537,1736,1396],{"class":546},[537,1738,1650],{"class":1191},[537,1740,1319],{"class":546},[537,1742,1744],{"class":539,"line":1743},28,[537,1745,1441],{"class":546},[537,1747,1749],{"class":539,"line":1748},29,[537,1750,1751],{"class":546},"}\n",[517,1753,1755],{"id":1754},"sdk-integration","SDK Integration",[522,1757,1759],{"id":1758},"javascripttypescript-sdk","JavaScript/TypeScript SDK",[527,1761,1763],{"className":1281,"code":1762,"language":1283,"meta":532,"style":532},"// Installation\nnpm install @mindpeeker/sdk\n\n// Basic usage\nimport { MindPeekerClient } from '@mindpeeker/sdk';\n\nconst client = new MindPeekerClient({\n  apiKey: process.env.MINDPEEKER_API_KEY,\n  baseUrl: 'https://api.mindpeeker.com/v1',\n  timeout: 30000\n});\n\n// Create session\nconst session = await client.sessions.create({\n  cue: 'Describe the location of the missing artifact',\n  session_type: 'remote_viewing',\n  parameters: {\n    confidence_threshold: 0.8,\n    analysis_types: ['visual', 'spatial']\n  }\n});\n\n// Monitor progress\nclient.sessions.onProgress(session.id, (update) => {\n  console.log(`Progress: ${update.progress}%`);\n  console.log(`Status: ${update.status}`);\n});\n\n// Get results\nconst results = await client.sessions.getResults(session.id);\nconsole.log('Analysis complete:', results);\n",[534,1764,1765,1770,1787,1791,1796,1820,1824,1843,1865,1881,1891,1900,1904,1909,1937,1953,1969,1978,1990,2019,2023,2031,2035,2040,2077,2116,2147,2155,2159,2164,2196],{"__ignoreMap":532},[537,1766,1767],{"class":539,"line":82},[537,1768,1769],{"class":1290},"// Installation\n",[537,1771,1772,1775,1778,1781,1784],{"class":539,"line":114},[537,1773,1774],{"class":1191},"npm install ",[537,1776,1777],{"class":546},"@",[537,1779,1780],{"class":1191},"mindpeeker",[537,1782,1783],{"class":546},"/",[537,1785,1786],{"class":1191},"sdk\n",[537,1788,1789],{"class":539,"line":146},[537,1790,595],{"emptyLinePlaceholder":594},[537,1792,1793],{"class":539,"line":178},[537,1794,1795],{"class":1290},"// Basic usage\n",[537,1797,1798,1801,1803,1806,1808,1811,1813,1816,1818],{"class":539,"line":268},[537,1799,1800],{"class":1380},"import",[537,1802,1528],{"class":546},[537,1804,1805],{"class":1191}," MindPeekerClient",[537,1807,1581],{"class":546},[537,1809,1810],{"class":1380}," from",[537,1812,1228],{"class":546},[537,1814,1815],{"class":558},"@mindpeeker/sdk",[537,1817,1491],{"class":546},[537,1819,1319],{"class":546},[537,1821,1822],{"class":539,"line":273},[537,1823,595],{"emptyLinePlaceholder":594},[537,1825,1826,1829,1832,1835,1837,1839,1841],{"class":539,"line":279},[537,1827,1828],{"class":1296},"const",[537,1830,1831],{"class":1191}," client ",[537,1833,1834],{"class":546},"=",[537,1836,1655],{"class":546},[537,1838,1805],{"class":1399},[537,1840,1488],{"class":1191},[537,1842,1231],{"class":546},[537,1844,1845,1848,1850,1853,1855,1858,1860,1863],{"class":539,"line":285},[537,1846,1847],{"class":542},"  apiKey",[537,1849,555],{"class":546},[537,1851,1852],{"class":1191}," process",[537,1854,1560],{"class":546},[537,1856,1857],{"class":1191},"env",[537,1859,1560],{"class":546},[537,1861,1862],{"class":1191},"MINDPEEKER_API_KEY",[537,1864,1518],{"class":546},[537,1866,1867,1870,1872,1874,1877,1879],{"class":539,"line":291},[537,1868,1869],{"class":542},"  baseUrl",[537,1871,555],{"class":546},[537,1873,1228],{"class":546},[537,1875,1876],{"class":558},"https://api.mindpeeker.com/v1",[537,1878,1491],{"class":546},[537,1880,1518],{"class":546},[537,1882,1883,1886,1888],{"class":539,"line":222},[537,1884,1885],{"class":542},"  timeout",[537,1887,555],{"class":546},[537,1889,1890],{"class":1689}," 30000\n",[537,1892,1893,1896,1898],{"class":539,"line":227},[537,1894,1895],{"class":546},"}",[537,1897,1593],{"class":1191},[537,1899,1319],{"class":546},[537,1901,1902],{"class":539,"line":232},[537,1903,595],{"emptyLinePlaceholder":594},[537,1905,1906],{"class":539,"line":238},[537,1907,1908],{"class":1290},"// Create session\n",[537,1910,1911,1913,1916,1918,1920,1923,1925,1928,1930,1933,1935],{"class":539,"line":243},[537,1912,1828],{"class":1296},[537,1914,1915],{"class":1191}," session ",[537,1917,1834],{"class":546},[537,1919,1482],{"class":1380},[537,1921,1922],{"class":1191}," client",[537,1924,1560],{"class":546},[537,1926,1927],{"class":1191},"sessions",[537,1929,1560],{"class":546},[537,1931,1932],{"class":1399},"create",[537,1934,1488],{"class":1191},[537,1936,1231],{"class":546},[537,1938,1939,1942,1944,1946,1949,1951],{"class":539,"line":248},[537,1940,1941],{"class":542},"  cue",[537,1943,555],{"class":546},[537,1945,1228],{"class":546},[537,1947,1948],{"class":558},"Describe the location of the missing artifact",[537,1950,1491],{"class":546},[537,1952,1518],{"class":546},[537,1954,1955,1958,1960,1962,1965,1967],{"class":539,"line":671},[537,1956,1957],{"class":542},"  session_type",[537,1959,555],{"class":546},[537,1961,1228],{"class":546},[537,1963,1964],{"class":558},"remote_viewing",[537,1966,1491],{"class":546},[537,1968,1518],{"class":546},[537,1970,1971,1974,1976],{"class":539,"line":681},[537,1972,1973],{"class":542},"  parameters",[537,1975,555],{"class":546},[537,1977,1303],{"class":546},[537,1979,1980,1983,1985,1988],{"class":539,"line":814},[537,1981,1982],{"class":542},"    confidence_threshold",[537,1984,555],{"class":546},[537,1986,1987],{"class":1689}," 0.8",[537,1989,1518],{"class":546},[537,1991,1992,1995,1997,2000,2002,2005,2007,2009,2011,2014,2016],{"class":539,"line":1587},[537,1993,1994],{"class":542},"    analysis_types",[537,1996,555],{"class":546},[537,1998,1999],{"class":1191}," [",[537,2001,1491],{"class":546},[537,2003,2004],{"class":558},"visual",[537,2006,1491],{"class":546},[537,2008,1499],{"class":546},[537,2010,1228],{"class":546},[537,2012,2013],{"class":558},"spatial",[537,2015,1491],{"class":546},[537,2017,2018],{"class":1191},"]\n",[537,2020,2021],{"class":539,"line":1598},[537,2022,1441],{"class":546},[537,2024,2025,2027,2029],{"class":539,"line":1603},[537,2026,1895],{"class":546},[537,2028,1593],{"class":1191},[537,2030,1319],{"class":546},[537,2032,2033],{"class":539,"line":1626},[537,2034,595],{"emptyLinePlaceholder":594},[537,2036,2037],{"class":539,"line":1645},[537,2038,2039],{"class":1290},"// Monitor progress\n",[537,2041,2042,2045,2047,2049,2051,2054,2057,2059,2062,2064,2066,2070,2072,2075],{"class":539,"line":1698},[537,2043,2044],{"class":1191},"client",[537,2046,1560],{"class":546},[537,2048,1927],{"class":1191},[537,2050,1560],{"class":546},[537,2052,2053],{"class":1399},"onProgress",[537,2055,2056],{"class":1191},"(session",[537,2058,1560],{"class":546},[537,2060,2061],{"class":1191},"id",[537,2063,1499],{"class":546},[537,2065,1384],{"class":546},[537,2067,2069],{"class":2068},"sHdIc","update",[537,2071,1593],{"class":546},[537,2073,2074],{"class":1296}," =>",[537,2076,1303],{"class":546},[537,2078,2079,2082,2084,2087,2089,2092,2095,2098,2100,2102,2105,2107,2110,2112,2114],{"class":539,"line":1703},[537,2080,2081],{"class":1191},"  console",[537,2083,1560],{"class":546},[537,2085,2086],{"class":1399},"log",[537,2088,1488],{"class":542},[537,2090,2091],{"class":546},"`",[537,2093,2094],{"class":558},"Progress: ",[537,2096,2097],{"class":546},"${",[537,2099,2069],{"class":1191},[537,2101,1560],{"class":546},[537,2103,2104],{"class":1191},"progress",[537,2106,1895],{"class":546},[537,2108,2109],{"class":558},"%",[537,2111,2091],{"class":546},[537,2113,1593],{"class":542},[537,2115,1319],{"class":546},[537,2117,2118,2120,2122,2124,2126,2128,2131,2133,2135,2137,2140,2143,2145],{"class":539,"line":1708},[537,2119,2081],{"class":1191},[537,2121,1560],{"class":546},[537,2123,2086],{"class":1399},[537,2125,1488],{"class":542},[537,2127,2091],{"class":546},[537,2129,2130],{"class":558},"Status: ",[537,2132,2097],{"class":546},[537,2134,2069],{"class":1191},[537,2136,1560],{"class":546},[537,2138,2139],{"class":1191},"status",[537,2141,2142],{"class":546},"}`",[537,2144,1593],{"class":542},[537,2146,1319],{"class":546},[537,2148,2149,2151,2153],{"class":539,"line":1723},[537,2150,1895],{"class":546},[537,2152,1593],{"class":1191},[537,2154,1319],{"class":546},[537,2156,2157],{"class":539,"line":1743},[537,2158,595],{"emptyLinePlaceholder":594},[537,2160,2161],{"class":539,"line":1748},[537,2162,2163],{"class":1290},"// Get results\n",[537,2165,2167,2169,2172,2174,2176,2178,2180,2182,2184,2187,2189,2191,2194],{"class":539,"line":2166},30,[537,2168,1828],{"class":1296},[537,2170,2171],{"class":1191}," results ",[537,2173,1834],{"class":546},[537,2175,1482],{"class":1380},[537,2177,1922],{"class":1191},[537,2179,1560],{"class":546},[537,2181,1927],{"class":1191},[537,2183,1560],{"class":546},[537,2185,2186],{"class":1399},"getResults",[537,2188,2056],{"class":1191},[537,2190,1560],{"class":546},[537,2192,2193],{"class":1191},"id)",[537,2195,1319],{"class":546},[537,2197,2199,2202,2204,2206,2208,2210,2213,2215,2217,2220],{"class":539,"line":2198},31,[537,2200,2201],{"class":1191},"console",[537,2203,1560],{"class":546},[537,2205,2086],{"class":1399},[537,2207,1488],{"class":1191},[537,2209,1491],{"class":546},[537,2211,2212],{"class":558},"Analysis complete:",[537,2214,1491],{"class":546},[537,2216,1499],{"class":546},[537,2218,2219],{"class":1191}," results)",[537,2221,1319],{"class":546},[522,2223,2225],{"id":2224},"python-sdk","Python SDK",[527,2227,2231],{"className":2228,"code":2229,"language":2230,"meta":532,"style":532},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pip install mindpeeker-sdk\n\nfrom mindpeeker import MindPeekerClient\nimport asyncio\n\nasync def main():\n    client = MindPeekerClient(\n        api_key=os.getenv('MINDPEEKER_API_KEY'),\n        base_url='https://api.mindpeeker.com/v1'\n    )\n    \n    # Create session\n    session = await client.sessions.create(\n        cue='Describe the location of the missing artifact',\n        session_type='remote_viewing',\n        parameters={\n            'confidence_threshold': 0.8,\n            'analysis_types': ['visual', 'spatial']\n        }\n    )\n    \n    # Wait for completion\n    results = await client.sessions.wait_for_completion(\n        session.id, \n        timeout=1800\n    )\n    \n    print(f\"Analysis complete: {results}\")\n\nasyncio.run(main())\n","python",[534,2232,2233,2238,2242,2247,2252,2256,2261,2266,2271,2276,2281,2286,2291,2296,2301,2306,2311,2316,2321,2326,2330,2334,2339,2344,2349,2354,2358,2362,2367,2371],{"__ignoreMap":532},[537,2234,2235],{"class":539,"line":82},[537,2236,2237],{},"pip install mindpeeker-sdk\n",[537,2239,2240],{"class":539,"line":114},[537,2241,595],{"emptyLinePlaceholder":594},[537,2243,2244],{"class":539,"line":146},[537,2245,2246],{},"from mindpeeker import MindPeekerClient\n",[537,2248,2249],{"class":539,"line":178},[537,2250,2251],{},"import asyncio\n",[537,2253,2254],{"class":539,"line":268},[537,2255,595],{"emptyLinePlaceholder":594},[537,2257,2258],{"class":539,"line":273},[537,2259,2260],{},"async def main():\n",[537,2262,2263],{"class":539,"line":279},[537,2264,2265],{},"    client = MindPeekerClient(\n",[537,2267,2268],{"class":539,"line":285},[537,2269,2270],{},"        api_key=os.getenv('MINDPEEKER_API_KEY'),\n",[537,2272,2273],{"class":539,"line":291},[537,2274,2275],{},"        base_url='https://api.mindpeeker.com/v1'\n",[537,2277,2278],{"class":539,"line":222},[537,2279,2280],{},"    )\n",[537,2282,2283],{"class":539,"line":227},[537,2284,2285],{},"    \n",[537,2287,2288],{"class":539,"line":232},[537,2289,2290],{},"    # Create session\n",[537,2292,2293],{"class":539,"line":238},[537,2294,2295],{},"    session = await client.sessions.create(\n",[537,2297,2298],{"class":539,"line":243},[537,2299,2300],{},"        cue='Describe the location of the missing artifact',\n",[537,2302,2303],{"class":539,"line":248},[537,2304,2305],{},"        session_type='remote_viewing',\n",[537,2307,2308],{"class":539,"line":671},[537,2309,2310],{},"        parameters={\n",[537,2312,2313],{"class":539,"line":681},[537,2314,2315],{},"            'confidence_threshold': 0.8,\n",[537,2317,2318],{"class":539,"line":814},[537,2319,2320],{},"            'analysis_types': ['visual', 'spatial']\n",[537,2322,2323],{"class":539,"line":1587},[537,2324,2325],{},"        }\n",[537,2327,2328],{"class":539,"line":1598},[537,2329,2280],{},[537,2331,2332],{"class":539,"line":1603},[537,2333,2285],{},[537,2335,2336],{"class":539,"line":1626},[537,2337,2338],{},"    # Wait for completion\n",[537,2340,2341],{"class":539,"line":1645},[537,2342,2343],{},"    results = await client.sessions.wait_for_completion(\n",[537,2345,2346],{"class":539,"line":1698},[537,2347,2348],{},"        session.id, \n",[537,2350,2351],{"class":539,"line":1703},[537,2352,2353],{},"        timeout=1800\n",[537,2355,2356],{"class":539,"line":1708},[537,2357,2280],{},[537,2359,2360],{"class":539,"line":1723},[537,2361,2285],{},[537,2363,2364],{"class":539,"line":1743},[537,2365,2366],{},"    print(f\"Analysis complete: {results}\")\n",[537,2368,2369],{"class":539,"line":1748},[537,2370,595],{"emptyLinePlaceholder":594},[537,2372,2373],{"class":539,"line":2166},[537,2374,2375],{},"asyncio.run(main())\n",[522,2377,2379],{"id":2378},"java-sdk","Java SDK",[527,2381,2385],{"className":2382,"code":2383,"language":2384,"meta":532,"style":532},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// Installation (Maven)\n\u003Cdependency>\n    \u003CgroupId>com.mindpeeker\u003C/groupId>\n    \u003CartifactId>mindpeeker-sdk\u003C/artifactId>\n    \u003Cversion>1.5.0\u003C/version>\n\u003C/dependency>\n\n// Basic usage\nimport com.mindpeeker.client.MindPeekerClient;\nimport com.mindpeeker.model.*;\n\npublic class MindPeekerIntegration {\n    public static void main(String[] args) {\n        MindPeekerClient client = MindPeekerClient.builder()\n            .apiKey(System.getenv(\"MINDPEEKER_API_KEY\"))\n            .baseUrl(\"https://api.mindpeeker.com/v1\")\n            .timeout(Duration.ofSeconds(30))\n            .build();\n        \n        // Create session\n        Session session = client.sessions().create(SessionCreateRequest.builder()\n            .cue(\"Describe the location of the missing artifact\")\n            .sessionType(SessionType.REMOTE_VIEWING)\n            .parameter(\"confidence_threshold\", 0.8)\n            .parameter(\"analysis_types\", Arrays.asList(\"visual\", \"spatial\"))\n            .build());\n        \n        // Monitor progress\n        client.sessions().subscribeToUpdates(session.id, update -> {\n            System.out.println(\"Progress: \" + update.getProgress() + \"%\");\n            System.out.println(\"Status: \" + update.getStatus());\n        });\n        \n        // Get results\n        SessionResults results = client.sessions().getResults(session.id);\n        System.out.println(\"Analysis complete: \" + results);\n    }\n}\n","java",[534,2386,2387,2392,2397,2402,2407,2412,2417,2421,2425,2430,2435,2439,2444,2449,2454,2459,2464,2469,2474,2479,2484,2489,2494,2499,2504,2509,2514,2518,2523,2528,2533,2538,2544,2549,2555,2561,2567,2572],{"__ignoreMap":532},[537,2388,2389],{"class":539,"line":82},[537,2390,2391],{},"// Installation (Maven)\n",[537,2393,2394],{"class":539,"line":114},[537,2395,2396],{},"\u003Cdependency>\n",[537,2398,2399],{"class":539,"line":146},[537,2400,2401],{},"    \u003CgroupId>com.mindpeeker\u003C/groupId>\n",[537,2403,2404],{"class":539,"line":178},[537,2405,2406],{},"    \u003CartifactId>mindpeeker-sdk\u003C/artifactId>\n",[537,2408,2409],{"class":539,"line":268},[537,2410,2411],{},"    \u003Cversion>1.5.0\u003C/version>\n",[537,2413,2414],{"class":539,"line":273},[537,2415,2416],{},"\u003C/dependency>\n",[537,2418,2419],{"class":539,"line":279},[537,2420,595],{"emptyLinePlaceholder":594},[537,2422,2423],{"class":539,"line":285},[537,2424,1795],{},[537,2426,2427],{"class":539,"line":291},[537,2428,2429],{},"import com.mindpeeker.client.MindPeekerClient;\n",[537,2431,2432],{"class":539,"line":222},[537,2433,2434],{},"import com.mindpeeker.model.*;\n",[537,2436,2437],{"class":539,"line":227},[537,2438,595],{"emptyLinePlaceholder":594},[537,2440,2441],{"class":539,"line":232},[537,2442,2443],{},"public class MindPeekerIntegration {\n",[537,2445,2446],{"class":539,"line":238},[537,2447,2448],{},"    public static void main(String[] args) {\n",[537,2450,2451],{"class":539,"line":243},[537,2452,2453],{},"        MindPeekerClient client = MindPeekerClient.builder()\n",[537,2455,2456],{"class":539,"line":248},[537,2457,2458],{},"            .apiKey(System.getenv(\"MINDPEEKER_API_KEY\"))\n",[537,2460,2461],{"class":539,"line":671},[537,2462,2463],{},"            .baseUrl(\"https://api.mindpeeker.com/v1\")\n",[537,2465,2466],{"class":539,"line":681},[537,2467,2468],{},"            .timeout(Duration.ofSeconds(30))\n",[537,2470,2471],{"class":539,"line":814},[537,2472,2473],{},"            .build();\n",[537,2475,2476],{"class":539,"line":1587},[537,2477,2478],{},"        \n",[537,2480,2481],{"class":539,"line":1598},[537,2482,2483],{},"        // Create session\n",[537,2485,2486],{"class":539,"line":1603},[537,2487,2488],{},"        Session session = client.sessions().create(SessionCreateRequest.builder()\n",[537,2490,2491],{"class":539,"line":1626},[537,2492,2493],{},"            .cue(\"Describe the location of the missing artifact\")\n",[537,2495,2496],{"class":539,"line":1645},[537,2497,2498],{},"            .sessionType(SessionType.REMOTE_VIEWING)\n",[537,2500,2501],{"class":539,"line":1698},[537,2502,2503],{},"            .parameter(\"confidence_threshold\", 0.8)\n",[537,2505,2506],{"class":539,"line":1703},[537,2507,2508],{},"            .parameter(\"analysis_types\", Arrays.asList(\"visual\", \"spatial\"))\n",[537,2510,2511],{"class":539,"line":1708},[537,2512,2513],{},"            .build());\n",[537,2515,2516],{"class":539,"line":1723},[537,2517,2478],{},[537,2519,2520],{"class":539,"line":1743},[537,2521,2522],{},"        // Monitor progress\n",[537,2524,2525],{"class":539,"line":1748},[537,2526,2527],{},"        client.sessions().subscribeToUpdates(session.id, update -> {\n",[537,2529,2530],{"class":539,"line":2166},[537,2531,2532],{},"            System.out.println(\"Progress: \" + update.getProgress() + \"%\");\n",[537,2534,2535],{"class":539,"line":2198},[537,2536,2537],{},"            System.out.println(\"Status: \" + update.getStatus());\n",[537,2539,2541],{"class":539,"line":2540},32,[537,2542,2543],{},"        });\n",[537,2545,2547],{"class":539,"line":2546},33,[537,2548,2478],{},[537,2550,2552],{"class":539,"line":2551},34,[537,2553,2554],{},"        // Get results\n",[537,2556,2558],{"class":539,"line":2557},35,[537,2559,2560],{},"        SessionResults results = client.sessions().getResults(session.id);\n",[537,2562,2564],{"class":539,"line":2563},36,[537,2565,2566],{},"        System.out.println(\"Analysis complete: \" + results);\n",[537,2568,2570],{"class":539,"line":2569},37,[537,2571,1425],{},[537,2573,2575],{"class":539,"line":2574},38,[537,2576,1751],{},[512,2578,2580],{"id":2579},"webhook-integration-requirements","Webhook Integration Requirements",[517,2582,2584],{"id":2583},"webhook-endpoint-setup","Webhook Endpoint Setup",[522,2586,2588],{"id":2587},"secure-webhook-handler-nodejs","Secure Webhook Handler (Node.js)",[527,2590,2592],{"className":1281,"code":2591,"language":1283,"meta":532,"style":532},"import crypto from 'crypto';\nimport express from 'express';\n\nconst app = express();\nconst WEBHOOK_SECRET = process.env.WEBHOOK_SECRET;\n\n// Verify webhook signature\nfunction verifyWebhookSignature(payload: string, signature: string): boolean {\n  const expectedSignature = crypto\n    .createHmac('sha256', WEBHOOK_SECRET)\n    .update(payload)\n    .digest('hex');\n  \n  return crypto.timingSafeEqual(\n    Buffer.from(signature, 'hex'),\n    Buffer.from(expectedSignature, 'hex')\n  );\n}\n\n// Webhook endpoint\napp.post('/webhooks/mindpeeker', express.raw({ type: 'application/json' }), (req, res) => {\n  const signature = req.headers['x-mindpeeker-signature'] as string;\n  const payload = req.body.toString();\n  \n  if (!verifyWebhookSignature(payload, signature)) {\n    return res.status(401).json({ error: 'Invalid signature' });\n  }\n  \n  try {\n    const event = JSON.parse(payload);\n    \n    switch (event.type) {\n      case 'session.completed':\n        handleSessionCompleted(event.data);\n        break;\n      case 'session.failed':\n        handleSessionFailed(event.data);\n        break;\n      case 'analysis.ready':\n        handleAnalysisReady(event.data);\n        break;\n      default:\n        console.log(`Unhandled event type: ${event.type}`);\n    }\n    \n    res.status(200).json({ received: true });\n  } catch (error) {\n    console.error('Webhook processing error:', error);\n    res.status(500).json({ error: 'Internal server error' });\n  }\n});\n\nasync function handleSessionCompleted(data: any) {\n  console.log(`Session ${data.session_id} completed`);\n  // Process completed session\n  // Update database, notify users, etc.\n}\n\nasync function handleSessionFailed(data: any) {\n  console.log(`Session ${data.session_id} failed: ${data.error}`);\n  // Handle failed session\n  // Notify administrators, retry if appropriate, etc.\n}\n\nasync function handleAnalysisReady(data: any) {\n  console.log(`Analysis ${data.analysis_id} ready for session ${data.session_id}`);\n  // Process analysis results\n  // Store results, trigger notifications, etc.\n}\n\napp.listen(3000, () => {\n  console.log('Webhook server listening on port 3000');\n});\n",[534,2593,2594,2613,2631,2635,2651,2673,2677,2682,2715,2728,2752,2764,2784,2789,2805,2831,2854,2861,2865,2869,2874,2939,2975,3000,3004,3030,3073,3077,3081,3088,3112,3116,3136,3150,3167,3174,3187,3204,3210,3224,3242,3249,3257,3288,3293,3298,3338,3355,3382,3423,3428,3437,3442,3467,3503,3509,3515,3520,3525,3547,3589,3595,3601,3606,3611,3633,3677,3683,3689,3694,3699,3723,3745],{"__ignoreMap":532},[537,2595,2596,2598,2601,2604,2606,2609,2611],{"class":539,"line":82},[537,2597,1800],{"class":1380},[537,2599,2600],{"class":1191}," crypto ",[537,2602,2603],{"class":1380},"from",[537,2605,1228],{"class":546},[537,2607,2608],{"class":558},"crypto",[537,2610,1491],{"class":546},[537,2612,1319],{"class":546},[537,2614,2615,2617,2620,2622,2624,2627,2629],{"class":539,"line":114},[537,2616,1800],{"class":1380},[537,2618,2619],{"class":1191}," express ",[537,2621,2603],{"class":1380},[537,2623,1228],{"class":546},[537,2625,2626],{"class":558},"express",[537,2628,1491],{"class":546},[537,2630,1319],{"class":546},[537,2632,2633],{"class":539,"line":146},[537,2634,595],{"emptyLinePlaceholder":594},[537,2636,2637,2639,2642,2644,2647,2649],{"class":539,"line":178},[537,2638,1828],{"class":1296},[537,2640,2641],{"class":1191}," app ",[537,2643,1834],{"class":546},[537,2645,2646],{"class":1399}," express",[537,2648,1418],{"class":1191},[537,2650,1319],{"class":546},[537,2652,2653,2655,2658,2660,2662,2664,2666,2668,2671],{"class":539,"line":268},[537,2654,1828],{"class":1296},[537,2656,2657],{"class":1191}," WEBHOOK_SECRET ",[537,2659,1834],{"class":546},[537,2661,1852],{"class":1191},[537,2663,1560],{"class":546},[537,2665,1857],{"class":1191},[537,2667,1560],{"class":546},[537,2669,2670],{"class":1191},"WEBHOOK_SECRET",[537,2672,1319],{"class":546},[537,2674,2675],{"class":539,"line":273},[537,2676,595],{"emptyLinePlaceholder":594},[537,2678,2679],{"class":539,"line":279},[537,2680,2681],{"class":1290},"// Verify webhook signature\n",[537,2683,2684,2687,2690,2692,2695,2697,2699,2701,2704,2706,2708,2711,2713],{"class":539,"line":285},[537,2685,2686],{"class":1296},"function",[537,2688,2689],{"class":1399}," verifyWebhookSignature",[537,2691,1488],{"class":546},[537,2693,2694],{"class":2068},"payload",[537,2696,555],{"class":546},[537,2698,1316],{"class":1100},[537,2700,1499],{"class":546},[537,2702,2703],{"class":2068}," signature",[537,2705,555],{"class":546},[537,2707,1316],{"class":1100},[537,2709,2710],{"class":546},"):",[537,2712,1718],{"class":1100},[537,2714,1303],{"class":546},[537,2716,2717,2720,2723,2725],{"class":539,"line":291},[537,2718,2719],{"class":1296},"  const",[537,2721,2722],{"class":1191}," expectedSignature",[537,2724,1479],{"class":546},[537,2726,2727],{"class":1191}," crypto\n",[537,2729,2730,2733,2736,2738,2740,2743,2745,2747,2750],{"class":539,"line":222},[537,2731,2732],{"class":546},"    .",[537,2734,2735],{"class":1399},"createHmac",[537,2737,1488],{"class":542},[537,2739,1491],{"class":546},[537,2741,2742],{"class":558},"sha256",[537,2744,1491],{"class":546},[537,2746,1499],{"class":546},[537,2748,2749],{"class":1191}," WEBHOOK_SECRET",[537,2751,1584],{"class":542},[537,2753,2754,2756,2758,2760,2762],{"class":539,"line":227},[537,2755,2732],{"class":546},[537,2757,2069],{"class":1399},[537,2759,1488],{"class":542},[537,2761,2694],{"class":1191},[537,2763,1584],{"class":542},[537,2765,2766,2768,2771,2773,2775,2778,2780,2782],{"class":539,"line":232},[537,2767,2732],{"class":546},[537,2769,2770],{"class":1399},"digest",[537,2772,1488],{"class":542},[537,2774,1491],{"class":546},[537,2776,2777],{"class":558},"hex",[537,2779,1491],{"class":546},[537,2781,1593],{"class":542},[537,2783,1319],{"class":546},[537,2785,2786],{"class":539,"line":238},[537,2787,2788],{"class":542},"  \n",[537,2790,2791,2794,2797,2799,2802],{"class":539,"line":243},[537,2792,2793],{"class":1380},"  return",[537,2795,2796],{"class":1191}," crypto",[537,2798,1560],{"class":546},[537,2800,2801],{"class":1399},"timingSafeEqual",[537,2803,2804],{"class":542},"(\n",[537,2806,2807,2810,2812,2814,2816,2819,2821,2823,2825,2827,2829],{"class":539,"line":248},[537,2808,2809],{"class":1191},"    Buffer",[537,2811,1560],{"class":546},[537,2813,2603],{"class":1399},[537,2815,1488],{"class":542},[537,2817,2818],{"class":1191},"signature",[537,2820,1499],{"class":546},[537,2822,1228],{"class":546},[537,2824,2777],{"class":558},[537,2826,1491],{"class":546},[537,2828,1593],{"class":542},[537,2830,1518],{"class":546},[537,2832,2833,2835,2837,2839,2841,2844,2846,2848,2850,2852],{"class":539,"line":671},[537,2834,2809],{"class":1191},[537,2836,1560],{"class":546},[537,2838,2603],{"class":1399},[537,2840,1488],{"class":542},[537,2842,2843],{"class":1191},"expectedSignature",[537,2845,1499],{"class":546},[537,2847,1228],{"class":546},[537,2849,2777],{"class":558},[537,2851,1491],{"class":546},[537,2853,1584],{"class":542},[537,2855,2856,2859],{"class":539,"line":681},[537,2857,2858],{"class":542},"  )",[537,2860,1319],{"class":546},[537,2862,2863],{"class":539,"line":814},[537,2864,1751],{"class":546},[537,2866,2867],{"class":539,"line":1587},[537,2868,595],{"emptyLinePlaceholder":594},[537,2870,2871],{"class":539,"line":1598},[537,2872,2873],{"class":1290},"// Webhook endpoint\n",[537,2875,2876,2879,2881,2884,2886,2888,2891,2893,2895,2897,2899,2902,2904,2906,2909,2911,2913,2915,2917,2919,2921,2923,2925,2928,2930,2933,2935,2937],{"class":539,"line":1603},[537,2877,2878],{"class":1191},"app",[537,2880,1560],{"class":546},[537,2882,2883],{"class":1399},"post",[537,2885,1488],{"class":1191},[537,2887,1491],{"class":546},[537,2889,2890],{"class":558},"/webhooks/mindpeeker",[537,2892,1491],{"class":546},[537,2894,1499],{"class":546},[537,2896,2646],{"class":1191},[537,2898,1560],{"class":546},[537,2900,2901],{"class":1399},"raw",[537,2903,1488],{"class":1191},[537,2905,1568],{"class":546},[537,2907,2908],{"class":542}," type",[537,2910,555],{"class":546},[537,2912,1228],{"class":546},[537,2914,1542],{"class":558},[537,2916,1491],{"class":546},[537,2918,1581],{"class":546},[537,2920,1593],{"class":1191},[537,2922,1499],{"class":546},[537,2924,1384],{"class":546},[537,2926,2927],{"class":2068},"req",[537,2929,1499],{"class":546},[537,2931,2932],{"class":2068}," res",[537,2934,1593],{"class":546},[537,2936,2074],{"class":1296},[537,2938,1303],{"class":546},[537,2940,2941,2943,2945,2947,2950,2952,2955,2958,2960,2963,2965,2968,2971,2973],{"class":539,"line":1626},[537,2942,2719],{"class":1296},[537,2944,2703],{"class":1191},[537,2946,1479],{"class":546},[537,2948,2949],{"class":1191}," req",[537,2951,1560],{"class":546},[537,2953,2954],{"class":1191},"headers",[537,2956,2957],{"class":542},"[",[537,2959,1491],{"class":546},[537,2961,2962],{"class":558},"x-mindpeeker-signature",[537,2964,1491],{"class":546},[537,2966,2967],{"class":542},"] ",[537,2969,2970],{"class":1380},"as",[537,2972,1316],{"class":1100},[537,2974,1319],{"class":546},[537,2976,2977,2979,2982,2984,2986,2988,2991,2993,2996,2998],{"class":539,"line":1645},[537,2978,2719],{"class":1296},[537,2980,2981],{"class":1191}," payload",[537,2983,1479],{"class":546},[537,2985,2949],{"class":1191},[537,2987,1560],{"class":546},[537,2989,2990],{"class":1191},"body",[537,2992,1560],{"class":546},[537,2994,2995],{"class":1399},"toString",[537,2997,1418],{"class":542},[537,2999,1319],{"class":546},[537,3001,3002],{"class":539,"line":1698},[537,3003,2788],{"class":542},[537,3005,3006,3009,3011,3014,3017,3019,3021,3023,3025,3028],{"class":539,"line":1703},[537,3007,3008],{"class":1380},"  if",[537,3010,1384],{"class":542},[537,3012,3013],{"class":546},"!",[537,3015,3016],{"class":1399},"verifyWebhookSignature",[537,3018,1488],{"class":542},[537,3020,2694],{"class":1191},[537,3022,1499],{"class":546},[537,3024,2703],{"class":1191},[537,3026,3027],{"class":542},")) ",[537,3029,1231],{"class":546},[537,3031,3032,3034,3036,3038,3040,3042,3045,3047,3049,3051,3053,3055,3058,3060,3062,3065,3067,3069,3071],{"class":539,"line":1708},[537,3033,1430],{"class":1380},[537,3035,2932],{"class":1191},[537,3037,1560],{"class":546},[537,3039,2139],{"class":1399},[537,3041,1488],{"class":542},[537,3043,3044],{"class":1689},"401",[537,3046,1593],{"class":542},[537,3048,1560],{"class":546},[537,3050,1619],{"class":1399},[537,3052,1488],{"class":542},[537,3054,1568],{"class":546},[537,3056,3057],{"class":542}," error",[537,3059,555],{"class":546},[537,3061,1228],{"class":546},[537,3063,3064],{"class":558},"Invalid signature",[537,3066,1491],{"class":546},[537,3068,1581],{"class":546},[537,3070,1593],{"class":542},[537,3072,1319],{"class":546},[537,3074,3075],{"class":539,"line":1723},[537,3076,1441],{"class":546},[537,3078,3079],{"class":539,"line":1743},[537,3080,2788],{"class":542},[537,3082,3083,3086],{"class":539,"line":1748},[537,3084,3085],{"class":1380},"  try",[537,3087,1303],{"class":546},[537,3089,3090,3092,3095,3097,3099,3101,3104,3106,3108,3110],{"class":539,"line":2166},[537,3091,1473],{"class":1296},[537,3093,3094],{"class":1191}," event",[537,3096,1479],{"class":546},[537,3098,1557],{"class":1191},[537,3100,1560],{"class":546},[537,3102,3103],{"class":1399},"parse",[537,3105,1488],{"class":542},[537,3107,2694],{"class":1191},[537,3109,1593],{"class":542},[537,3111,1319],{"class":546},[537,3113,3114],{"class":539,"line":2198},[537,3115,2285],{"class":542},[537,3117,3118,3121,3123,3126,3128,3131,3134],{"class":539,"line":2540},[537,3119,3120],{"class":1380},"    switch",[537,3122,1384],{"class":542},[537,3124,3125],{"class":1191},"event",[537,3127,1560],{"class":546},[537,3129,3130],{"class":1191},"type",[537,3132,3133],{"class":542},") ",[537,3135,1231],{"class":546},[537,3137,3138,3141,3143,3146,3148],{"class":539,"line":2546},[537,3139,3140],{"class":1380},"      case",[537,3142,1228],{"class":546},[537,3144,3145],{"class":558},"session.completed",[537,3147,1491],{"class":546},[537,3149,547],{"class":546},[537,3151,3152,3155,3157,3159,3161,3163,3165],{"class":539,"line":2551},[537,3153,3154],{"class":1399},"        handleSessionCompleted",[537,3156,1488],{"class":542},[537,3158,3125],{"class":1191},[537,3160,1560],{"class":546},[537,3162,1678],{"class":1191},[537,3164,1593],{"class":542},[537,3166,1319],{"class":546},[537,3168,3169,3172],{"class":539,"line":2557},[537,3170,3171],{"class":1380},"        break",[537,3173,1319],{"class":546},[537,3175,3176,3178,3180,3183,3185],{"class":539,"line":2563},[537,3177,3140],{"class":1380},[537,3179,1228],{"class":546},[537,3181,3182],{"class":558},"session.failed",[537,3184,1491],{"class":546},[537,3186,547],{"class":546},[537,3188,3189,3192,3194,3196,3198,3200,3202],{"class":539,"line":2569},[537,3190,3191],{"class":1399},"        handleSessionFailed",[537,3193,1488],{"class":542},[537,3195,3125],{"class":1191},[537,3197,1560],{"class":546},[537,3199,1678],{"class":1191},[537,3201,1593],{"class":542},[537,3203,1319],{"class":546},[537,3205,3206,3208],{"class":539,"line":2574},[537,3207,3171],{"class":1380},[537,3209,1319],{"class":546},[537,3211,3213,3215,3217,3220,3222],{"class":539,"line":3212},39,[537,3214,3140],{"class":1380},[537,3216,1228],{"class":546},[537,3218,3219],{"class":558},"analysis.ready",[537,3221,1491],{"class":546},[537,3223,547],{"class":546},[537,3225,3227,3230,3232,3234,3236,3238,3240],{"class":539,"line":3226},40,[537,3228,3229],{"class":1399},"        handleAnalysisReady",[537,3231,1488],{"class":542},[537,3233,3125],{"class":1191},[537,3235,1560],{"class":546},[537,3237,1678],{"class":1191},[537,3239,1593],{"class":542},[537,3241,1319],{"class":546},[537,3243,3245,3247],{"class":539,"line":3244},41,[537,3246,3171],{"class":1380},[537,3248,1319],{"class":546},[537,3250,3252,3255],{"class":539,"line":3251},42,[537,3253,3254],{"class":1380},"      default",[537,3256,547],{"class":546},[537,3258,3260,3263,3265,3267,3269,3271,3274,3276,3278,3280,3282,3284,3286],{"class":539,"line":3259},43,[537,3261,3262],{"class":1191},"        console",[537,3264,1560],{"class":546},[537,3266,2086],{"class":1399},[537,3268,1488],{"class":542},[537,3270,2091],{"class":546},[537,3272,3273],{"class":558},"Unhandled event type: ",[537,3275,2097],{"class":546},[537,3277,3125],{"class":1191},[537,3279,1560],{"class":546},[537,3281,3130],{"class":1191},[537,3283,2142],{"class":546},[537,3285,1593],{"class":542},[537,3287,1319],{"class":546},[537,3289,3291],{"class":539,"line":3290},44,[537,3292,1425],{"class":546},[537,3294,3296],{"class":539,"line":3295},45,[537,3297,2285],{"class":542},[537,3299,3301,3304,3306,3308,3310,3313,3315,3317,3319,3321,3323,3326,3328,3332,3334,3336],{"class":539,"line":3300},46,[537,3302,3303],{"class":1191},"    res",[537,3305,1560],{"class":546},[537,3307,2139],{"class":1399},[537,3309,1488],{"class":542},[537,3311,3312],{"class":1689},"200",[537,3314,1593],{"class":542},[537,3316,1560],{"class":546},[537,3318,1619],{"class":1399},[537,3320,1488],{"class":542},[537,3322,1568],{"class":546},[537,3324,3325],{"class":542}," received",[537,3327,555],{"class":546},[537,3329,3331],{"class":3330},"sfNiH"," true",[537,3333,1581],{"class":546},[537,3335,1593],{"class":542},[537,3337,1319],{"class":546},[537,3339,3341,3343,3346,3348,3351,3353],{"class":539,"line":3340},47,[537,3342,1271],{"class":546},[537,3344,3345],{"class":1380}," catch",[537,3347,1384],{"class":542},[537,3349,3350],{"class":1191},"error",[537,3352,3133],{"class":542},[537,3354,1231],{"class":546},[537,3356,3358,3361,3363,3365,3367,3369,3372,3374,3376,3378,3380],{"class":539,"line":3357},48,[537,3359,3360],{"class":1191},"    console",[537,3362,1560],{"class":546},[537,3364,3350],{"class":1399},[537,3366,1488],{"class":542},[537,3368,1491],{"class":546},[537,3370,3371],{"class":558},"Webhook processing error:",[537,3373,1491],{"class":546},[537,3375,1499],{"class":546},[537,3377,3057],{"class":1191},[537,3379,1593],{"class":542},[537,3381,1319],{"class":546},[537,3383,3385,3387,3389,3391,3393,3396,3398,3400,3402,3404,3406,3408,3410,3412,3415,3417,3419,3421],{"class":539,"line":3384},49,[537,3386,3303],{"class":1191},[537,3388,1560],{"class":546},[537,3390,2139],{"class":1399},[537,3392,1488],{"class":542},[537,3394,3395],{"class":1689},"500",[537,3397,1593],{"class":542},[537,3399,1560],{"class":546},[537,3401,1619],{"class":1399},[537,3403,1488],{"class":542},[537,3405,1568],{"class":546},[537,3407,3057],{"class":542},[537,3409,555],{"class":546},[537,3411,1228],{"class":546},[537,3413,3414],{"class":558},"Internal server error",[537,3416,1491],{"class":546},[537,3418,1581],{"class":546},[537,3420,1593],{"class":542},[537,3422,1319],{"class":546},[537,3424,3426],{"class":539,"line":3425},50,[537,3427,1441],{"class":546},[537,3429,3431,3433,3435],{"class":539,"line":3430},51,[537,3432,1895],{"class":546},[537,3434,1593],{"class":1191},[537,3436,1319],{"class":546},[537,3438,3440],{"class":539,"line":3439},52,[537,3441,595],{"emptyLinePlaceholder":594},[537,3443,3445,3448,3451,3454,3456,3458,3460,3463,3465],{"class":539,"line":3444},53,[537,3446,3447],{"class":1296},"async",[537,3449,3450],{"class":1296}," function",[537,3452,3453],{"class":1399}," handleSessionCompleted",[537,3455,1488],{"class":546},[537,3457,1678],{"class":2068},[537,3459,555],{"class":546},[537,3461,3462],{"class":1100}," any",[537,3464,1593],{"class":546},[537,3466,1303],{"class":546},[537,3468,3470,3472,3474,3476,3478,3480,3483,3485,3487,3489,3492,3494,3497,3499,3501],{"class":539,"line":3469},54,[537,3471,2081],{"class":1191},[537,3473,1560],{"class":546},[537,3475,2086],{"class":1399},[537,3477,1488],{"class":542},[537,3479,2091],{"class":546},[537,3481,3482],{"class":558},"Session ",[537,3484,2097],{"class":546},[537,3486,1678],{"class":1191},[537,3488,1560],{"class":546},[537,3490,3491],{"class":1191},"session_id",[537,3493,1895],{"class":546},[537,3495,3496],{"class":558}," completed",[537,3498,2091],{"class":546},[537,3500,1593],{"class":542},[537,3502,1319],{"class":546},[537,3504,3506],{"class":539,"line":3505},55,[537,3507,3508],{"class":1290},"  // Process completed session\n",[537,3510,3512],{"class":539,"line":3511},56,[537,3513,3514],{"class":1290},"  // Update database, notify users, etc.\n",[537,3516,3518],{"class":539,"line":3517},57,[537,3519,1751],{"class":546},[537,3521,3523],{"class":539,"line":3522},58,[537,3524,595],{"emptyLinePlaceholder":594},[537,3526,3528,3530,3532,3535,3537,3539,3541,3543,3545],{"class":539,"line":3527},59,[537,3529,3447],{"class":1296},[537,3531,3450],{"class":1296},[537,3533,3534],{"class":1399}," handleSessionFailed",[537,3536,1488],{"class":546},[537,3538,1678],{"class":2068},[537,3540,555],{"class":546},[537,3542,3462],{"class":1100},[537,3544,1593],{"class":546},[537,3546,1303],{"class":546},[537,3548,3550,3552,3554,3556,3558,3560,3562,3564,3566,3568,3570,3572,3575,3577,3579,3581,3583,3585,3587],{"class":539,"line":3549},60,[537,3551,2081],{"class":1191},[537,3553,1560],{"class":546},[537,3555,2086],{"class":1399},[537,3557,1488],{"class":542},[537,3559,2091],{"class":546},[537,3561,3482],{"class":558},[537,3563,2097],{"class":546},[537,3565,1678],{"class":1191},[537,3567,1560],{"class":546},[537,3569,3491],{"class":1191},[537,3571,1895],{"class":546},[537,3573,3574],{"class":558}," failed: ",[537,3576,2097],{"class":546},[537,3578,1678],{"class":1191},[537,3580,1560],{"class":546},[537,3582,3350],{"class":1191},[537,3584,2142],{"class":546},[537,3586,1593],{"class":542},[537,3588,1319],{"class":546},[537,3590,3592],{"class":539,"line":3591},61,[537,3593,3594],{"class":1290},"  // Handle failed session\n",[537,3596,3598],{"class":539,"line":3597},62,[537,3599,3600],{"class":1290},"  // Notify administrators, retry if appropriate, etc.\n",[537,3602,3604],{"class":539,"line":3603},63,[537,3605,1751],{"class":546},[537,3607,3609],{"class":539,"line":3608},64,[537,3610,595],{"emptyLinePlaceholder":594},[537,3612,3614,3616,3618,3621,3623,3625,3627,3629,3631],{"class":539,"line":3613},65,[537,3615,3447],{"class":1296},[537,3617,3450],{"class":1296},[537,3619,3620],{"class":1399}," handleAnalysisReady",[537,3622,1488],{"class":546},[537,3624,1678],{"class":2068},[537,3626,555],{"class":546},[537,3628,3462],{"class":1100},[537,3630,1593],{"class":546},[537,3632,1303],{"class":546},[537,3634,3636,3638,3640,3642,3644,3646,3649,3651,3653,3655,3658,3660,3663,3665,3667,3669,3671,3673,3675],{"class":539,"line":3635},66,[537,3637,2081],{"class":1191},[537,3639,1560],{"class":546},[537,3641,2086],{"class":1399},[537,3643,1488],{"class":542},[537,3645,2091],{"class":546},[537,3647,3648],{"class":558},"Analysis ",[537,3650,2097],{"class":546},[537,3652,1678],{"class":1191},[537,3654,1560],{"class":546},[537,3656,3657],{"class":1191},"analysis_id",[537,3659,1895],{"class":546},[537,3661,3662],{"class":558}," ready for session ",[537,3664,2097],{"class":546},[537,3666,1678],{"class":1191},[537,3668,1560],{"class":546},[537,3670,3491],{"class":1191},[537,3672,2142],{"class":546},[537,3674,1593],{"class":542},[537,3676,1319],{"class":546},[537,3678,3680],{"class":539,"line":3679},67,[537,3681,3682],{"class":1290},"  // Process analysis results\n",[537,3684,3686],{"class":539,"line":3685},68,[537,3687,3688],{"class":1290},"  // Store results, trigger notifications, etc.\n",[537,3690,3692],{"class":539,"line":3691},69,[537,3693,1751],{"class":546},[537,3695,3697],{"class":539,"line":3696},70,[537,3698,595],{"emptyLinePlaceholder":594},[537,3700,3702,3704,3706,3709,3711,3714,3716,3719,3721],{"class":539,"line":3701},71,[537,3703,2878],{"class":1191},[537,3705,1560],{"class":546},[537,3707,3708],{"class":1399},"listen",[537,3710,1488],{"class":1191},[537,3712,3713],{"class":1689},"3000",[537,3715,1499],{"class":546},[537,3717,3718],{"class":546}," ()",[537,3720,2074],{"class":1296},[537,3722,1303],{"class":546},[537,3724,3726,3728,3730,3732,3734,3736,3739,3741,3743],{"class":539,"line":3725},72,[537,3727,2081],{"class":1191},[537,3729,1560],{"class":546},[537,3731,2086],{"class":1399},[537,3733,1488],{"class":542},[537,3735,1491],{"class":546},[537,3737,3738],{"class":558},"Webhook server listening on port 3000",[537,3740,1491],{"class":546},[537,3742,1593],{"class":542},[537,3744,1319],{"class":546},[537,3746,3748,3750,3752],{"class":539,"line":3747},73,[537,3749,1895],{"class":546},[537,3751,1593],{"class":1191},[537,3753,1319],{"class":546},[522,3755,3757],{"id":3756},"webhook-handler-python","Webhook Handler (Python)",[527,3759,3761],{"className":2228,"code":3760,"language":2230,"meta":532,"style":532},"import hmac\nimport hashlib\nimport json\nfrom flask import Flask, request, jsonify\n\napp = Flask(__name__)\nWEBHOOK_SECRET = os.getenv('WEBHOOK_SECRET')\n\ndef verify_webhook_signature(payload: str, signature: str) -> bool:\n    expected_signature = hmac.new(\n        WEBHOOK_SECRET.encode(),\n        payload.encode(),\n        hashlib.sha256\n    ).hexdigest()\n    \n    return hmac.compare_digest(signature, expected_signature)\n\n@app.route('/webhooks/mindpeeker', methods=['POST'])\ndef handle_webhook():\n    signature = request.headers.get('X-MindPeeker-Signature')\n    payload = request.get_data(as_text=True)\n    \n    if not verify_webhook_signature(payload, signature):\n        return jsonify({'error': 'Invalid signature'}), 401\n    \n    try:\n        event = json.loads(payload)\n        \n        if event['type'] == 'session.completed':\n            handle_session_completed(event['data'])\n        elif event['type'] == 'session.failed':\n            handle_session_failed(event['data'])\n        elif event['type'] == 'analysis.ready':\n            handle_analysis_ready(event['data'])\n        else:\n            print(f\"Unhandled event type: {event['type']}\")\n        \n        return jsonify({'received': True}), 200\n    except Exception as error:\n        print(f\"Webhook processing error: {error}\")\n        return jsonify({'error': 'Internal server error'}), 500\n\ndef handle_session_completed(data):\n    print(f\"Session {data['session_id']} completed\")\n    # Process completed session\n\ndef handle_session_failed(data):\n    print(f\"Session {data['session_id']} failed: {data['error']}\")\n    # Handle failed session\n\ndef handle_analysis_ready(data):\n    print(f\"Analysis {data['analysis_id']} ready for session {data['session_id']}\")\n    # Process analysis results\n\nif __name__ == '__main__':\n    app.run(port=3000)\n",[534,3762,3763,3768,3773,3778,3783,3787,3792,3797,3801,3806,3811,3816,3821,3826,3831,3835,3840,3844,3849,3854,3859,3864,3868,3873,3878,3882,3887,3892,3896,3901,3906,3911,3916,3921,3926,3931,3936,3940,3945,3950,3955,3960,3964,3969,3974,3979,3983,3988,3993,3998,4002,4007,4012,4017,4021,4026],{"__ignoreMap":532},[537,3764,3765],{"class":539,"line":82},[537,3766,3767],{},"import hmac\n",[537,3769,3770],{"class":539,"line":114},[537,3771,3772],{},"import hashlib\n",[537,3774,3775],{"class":539,"line":146},[537,3776,3777],{},"import json\n",[537,3779,3780],{"class":539,"line":178},[537,3781,3782],{},"from flask import Flask, request, jsonify\n",[537,3784,3785],{"class":539,"line":268},[537,3786,595],{"emptyLinePlaceholder":594},[537,3788,3789],{"class":539,"line":273},[537,3790,3791],{},"app = Flask(__name__)\n",[537,3793,3794],{"class":539,"line":279},[537,3795,3796],{},"WEBHOOK_SECRET = os.getenv('WEBHOOK_SECRET')\n",[537,3798,3799],{"class":539,"line":285},[537,3800,595],{"emptyLinePlaceholder":594},[537,3802,3803],{"class":539,"line":291},[537,3804,3805],{},"def verify_webhook_signature(payload: str, signature: str) -> bool:\n",[537,3807,3808],{"class":539,"line":222},[537,3809,3810],{},"    expected_signature = hmac.new(\n",[537,3812,3813],{"class":539,"line":227},[537,3814,3815],{},"        WEBHOOK_SECRET.encode(),\n",[537,3817,3818],{"class":539,"line":232},[537,3819,3820],{},"        payload.encode(),\n",[537,3822,3823],{"class":539,"line":238},[537,3824,3825],{},"        hashlib.sha256\n",[537,3827,3828],{"class":539,"line":243},[537,3829,3830],{},"    ).hexdigest()\n",[537,3832,3833],{"class":539,"line":248},[537,3834,2285],{},[537,3836,3837],{"class":539,"line":671},[537,3838,3839],{},"    return hmac.compare_digest(signature, expected_signature)\n",[537,3841,3842],{"class":539,"line":681},[537,3843,595],{"emptyLinePlaceholder":594},[537,3845,3846],{"class":539,"line":814},[537,3847,3848],{},"@app.route('/webhooks/mindpeeker', methods=['POST'])\n",[537,3850,3851],{"class":539,"line":1587},[537,3852,3853],{},"def handle_webhook():\n",[537,3855,3856],{"class":539,"line":1598},[537,3857,3858],{},"    signature = request.headers.get('X-MindPeeker-Signature')\n",[537,3860,3861],{"class":539,"line":1603},[537,3862,3863],{},"    payload = request.get_data(as_text=True)\n",[537,3865,3866],{"class":539,"line":1626},[537,3867,2285],{},[537,3869,3870],{"class":539,"line":1645},[537,3871,3872],{},"    if not verify_webhook_signature(payload, signature):\n",[537,3874,3875],{"class":539,"line":1698},[537,3876,3877],{},"        return jsonify({'error': 'Invalid signature'}), 401\n",[537,3879,3880],{"class":539,"line":1703},[537,3881,2285],{},[537,3883,3884],{"class":539,"line":1708},[537,3885,3886],{},"    try:\n",[537,3888,3889],{"class":539,"line":1723},[537,3890,3891],{},"        event = json.loads(payload)\n",[537,3893,3894],{"class":539,"line":1743},[537,3895,2478],{},[537,3897,3898],{"class":539,"line":1748},[537,3899,3900],{},"        if event['type'] == 'session.completed':\n",[537,3902,3903],{"class":539,"line":2166},[537,3904,3905],{},"            handle_session_completed(event['data'])\n",[537,3907,3908],{"class":539,"line":2198},[537,3909,3910],{},"        elif event['type'] == 'session.failed':\n",[537,3912,3913],{"class":539,"line":2540},[537,3914,3915],{},"            handle_session_failed(event['data'])\n",[537,3917,3918],{"class":539,"line":2546},[537,3919,3920],{},"        elif event['type'] == 'analysis.ready':\n",[537,3922,3923],{"class":539,"line":2551},[537,3924,3925],{},"            handle_analysis_ready(event['data'])\n",[537,3927,3928],{"class":539,"line":2557},[537,3929,3930],{},"        else:\n",[537,3932,3933],{"class":539,"line":2563},[537,3934,3935],{},"            print(f\"Unhandled event type: {event['type']}\")\n",[537,3937,3938],{"class":539,"line":2569},[537,3939,2478],{},[537,3941,3942],{"class":539,"line":2574},[537,3943,3944],{},"        return jsonify({'received': True}), 200\n",[537,3946,3947],{"class":539,"line":3212},[537,3948,3949],{},"    except Exception as error:\n",[537,3951,3952],{"class":539,"line":3226},[537,3953,3954],{},"        print(f\"Webhook processing error: {error}\")\n",[537,3956,3957],{"class":539,"line":3244},[537,3958,3959],{},"        return jsonify({'error': 'Internal server error'}), 500\n",[537,3961,3962],{"class":539,"line":3251},[537,3963,595],{"emptyLinePlaceholder":594},[537,3965,3966],{"class":539,"line":3259},[537,3967,3968],{},"def handle_session_completed(data):\n",[537,3970,3971],{"class":539,"line":3290},[537,3972,3973],{},"    print(f\"Session {data['session_id']} completed\")\n",[537,3975,3976],{"class":539,"line":3295},[537,3977,3978],{},"    # Process completed session\n",[537,3980,3981],{"class":539,"line":3300},[537,3982,595],{"emptyLinePlaceholder":594},[537,3984,3985],{"class":539,"line":3340},[537,3986,3987],{},"def handle_session_failed(data):\n",[537,3989,3990],{"class":539,"line":3357},[537,3991,3992],{},"    print(f\"Session {data['session_id']} failed: {data['error']}\")\n",[537,3994,3995],{"class":539,"line":3384},[537,3996,3997],{},"    # Handle failed session\n",[537,3999,4000],{"class":539,"line":3425},[537,4001,595],{"emptyLinePlaceholder":594},[537,4003,4004],{"class":539,"line":3430},[537,4005,4006],{},"def handle_analysis_ready(data):\n",[537,4008,4009],{"class":539,"line":3439},[537,4010,4011],{},"    print(f\"Analysis {data['analysis_id']} ready for session {data['session_id']}\")\n",[537,4013,4014],{"class":539,"line":3444},[537,4015,4016],{},"    # Process analysis results\n",[537,4018,4019],{"class":539,"line":3469},[537,4020,595],{"emptyLinePlaceholder":594},[537,4022,4023],{"class":539,"line":3505},[537,4024,4025],{},"if __name__ == '__main__':\n",[537,4027,4028],{"class":539,"line":3511},[537,4029,4030],{},"    app.run(port=3000)\n",[517,4032,4034],{"id":4033},"webhook-event-processing","Webhook Event Processing",[522,4036,4038],{"id":4037},"event-processing-architecture","Event Processing Architecture",[527,4040,4042],{"className":1281,"code":4041,"language":1283,"meta":532,"style":532},"interface WebhookEvent {\n  id: string;\n  type: WebhookEventType;\n  data: any;\n  timestamp: string;\n  signature: string;\n}\n\nenum WebhookEventType {\n  SESSION_COMPLETED = 'session.completed',\n  SESSION_FAILED = 'session.failed',\n  SESSION_CANCELLED = 'session.cancelled',\n  ANALYSIS_READY = 'analysis.ready',\n  ANALYSIS_FAILED = 'analysis.failed',\n  USER_CREATED = 'user.created',\n  USER_UPDATED = 'user.updated',\n  BILLING_PAYMENT_SUCCEEDED = 'billing.payment_succeeded',\n  BILLING_PAYMENT_FAILED = 'billing.payment_failed'\n}\n\nclass WebhookProcessor {\n  private eventHandlers: Map\u003CWebhookEventType, EventHandler>;\n  private retryQueue: RetryQueue;\n  private deadLetterQueue: DeadLetterQueue;\n\n  constructor() {\n    this.eventHandlers = new Map();\n    this.retryQueue = new RetryQueue();\n    this.deadLetterQueue = new DeadLetterQueue();\n    this.setupHandlers();\n  }\n\n  private setupHandlers(): void {\n    this.eventHandlers.set(WebhookEventType.SESSION_COMPLETED, new SessionCompletedHandler());\n    this.eventHandlers.set(WebhookEventType.SESSION_FAILED, new SessionFailedHandler());\n    this.eventHandlers.set(WebhookEventType.ANALYSIS_READY, new AnalysisReadyHandler());\n    // ... other handlers\n  }\n\n  async processEvent(event: WebhookEvent): Promise\u003Cvoid> {\n    const handler = this.eventHandlers.get(event.type);\n    \n    if (!handler) {\n      console.warn(`No handler for event type: ${event.type}`);\n      return;\n    }\n\n    try {\n      await handler.handle(event.data);\n      console.log(`Successfully processed event: ${event.id}`);\n    } catch (error) {\n      console.error(`Failed to process event ${event.id}:`, error);\n      await this.retryQueue.add(event, error);\n    }\n  }\n}\n\ninterface EventHandler {\n  handle(data: any): Promise\u003Cvoid>;\n}\n\nclass SessionCompletedHandler implements EventHandler {\n  async handle(data: any): Promise\u003Cvoid> {\n    // Update local database\n    await this.updateSessionStatus(data.session_id, 'completed');\n    \n    // Process results\n    await this.processResults(data.session_id, data.results);\n    \n    // Send notifications\n    await this.sendNotifications(data.user_id, data.session_id);\n    \n    // Update analytics\n    await this.updateAnalytics(data);\n  }\n\n  private async updateSessionStatus(sessionId: string, status: string): Promise\u003Cvoid> {\n    // Database update logic\n  }\n\n  private async processResults(sessionId: string, results: any): Promise\u003Cvoid> {\n    // Results processing logic\n  }\n\n  private async sendNotifications(userId: string, sessionId: string): Promise\u003Cvoid> {\n    // Notification logic\n  }\n\n  private async updateAnalytics(data: any): Promise\u003Cvoid> {\n    // Analytics update logic\n  }\n}\n",[534,4043,4044,4054,4065,4077,4088,4099,4110,4114,4118,4127,4142,4157,4173,4188,4204,4220,4236,4252,4266,4270,4274,4283,4308,4322,4336,4340,4349,4366,4383,4400,4411,4415,4419,4433,4465,4495,4525,4530,4534,4538,4565,4595,4599,4614,4645,4652,4656,4660,4667,4690,4719,4733,4770,4795,4799,4803,4807,4811,4819,4842,4846,4850,4863,4890,4895,4926,4930,4935,4965,4969,4974,5004,5008,5013,5031,5036,5041,5081,5087,5092,5097,5136,5142,5147,5152,5192,5198,5203,5208,5238,5244,5249],{"__ignoreMap":532},[537,4045,4046,4049,4052],{"class":539,"line":82},[537,4047,4048],{"class":1296},"interface",[537,4050,4051],{"class":1100}," WebhookEvent",[537,4053,1303],{"class":546},[537,4055,4056,4059,4061,4063],{"class":539,"line":114},[537,4057,4058],{"class":542},"  id",[537,4060,555],{"class":546},[537,4062,1316],{"class":1100},[537,4064,1319],{"class":546},[537,4066,4067,4070,4072,4075],{"class":539,"line":146},[537,4068,4069],{"class":542},"  type",[537,4071,555],{"class":546},[537,4073,4074],{"class":1100}," WebhookEventType",[537,4076,1319],{"class":546},[537,4078,4079,4082,4084,4086],{"class":539,"line":178},[537,4080,4081],{"class":542},"  data",[537,4083,555],{"class":546},[537,4085,3462],{"class":1100},[537,4087,1319],{"class":546},[537,4089,4090,4093,4095,4097],{"class":539,"line":268},[537,4091,4092],{"class":542},"  timestamp",[537,4094,555],{"class":546},[537,4096,1316],{"class":1100},[537,4098,1319],{"class":546},[537,4100,4101,4104,4106,4108],{"class":539,"line":273},[537,4102,4103],{"class":542},"  signature",[537,4105,555],{"class":546},[537,4107,1316],{"class":1100},[537,4109,1319],{"class":546},[537,4111,4112],{"class":539,"line":279},[537,4113,1751],{"class":546},[537,4115,4116],{"class":539,"line":285},[537,4117,595],{"emptyLinePlaceholder":594},[537,4119,4120,4123,4125],{"class":539,"line":291},[537,4121,4122],{"class":1296},"enum",[537,4124,4074],{"class":1100},[537,4126,1303],{"class":546},[537,4128,4129,4132,4134,4136,4138,4140],{"class":539,"line":222},[537,4130,4131],{"class":1191},"  SESSION_COMPLETED ",[537,4133,1834],{"class":546},[537,4135,1228],{"class":546},[537,4137,3145],{"class":558},[537,4139,1491],{"class":546},[537,4141,1518],{"class":546},[537,4143,4144,4147,4149,4151,4153,4155],{"class":539,"line":227},[537,4145,4146],{"class":1191},"  SESSION_FAILED ",[537,4148,1834],{"class":546},[537,4150,1228],{"class":546},[537,4152,3182],{"class":558},[537,4154,1491],{"class":546},[537,4156,1518],{"class":546},[537,4158,4159,4162,4164,4166,4169,4171],{"class":539,"line":232},[537,4160,4161],{"class":1191},"  SESSION_CANCELLED ",[537,4163,1834],{"class":546},[537,4165,1228],{"class":546},[537,4167,4168],{"class":558},"session.cancelled",[537,4170,1491],{"class":546},[537,4172,1518],{"class":546},[537,4174,4175,4178,4180,4182,4184,4186],{"class":539,"line":238},[537,4176,4177],{"class":1191},"  ANALYSIS_READY ",[537,4179,1834],{"class":546},[537,4181,1228],{"class":546},[537,4183,3219],{"class":558},[537,4185,1491],{"class":546},[537,4187,1518],{"class":546},[537,4189,4190,4193,4195,4197,4200,4202],{"class":539,"line":243},[537,4191,4192],{"class":1191},"  ANALYSIS_FAILED ",[537,4194,1834],{"class":546},[537,4196,1228],{"class":546},[537,4198,4199],{"class":558},"analysis.failed",[537,4201,1491],{"class":546},[537,4203,1518],{"class":546},[537,4205,4206,4209,4211,4213,4216,4218],{"class":539,"line":248},[537,4207,4208],{"class":1191},"  USER_CREATED ",[537,4210,1834],{"class":546},[537,4212,1228],{"class":546},[537,4214,4215],{"class":558},"user.created",[537,4217,1491],{"class":546},[537,4219,1518],{"class":546},[537,4221,4222,4225,4227,4229,4232,4234],{"class":539,"line":671},[537,4223,4224],{"class":1191},"  USER_UPDATED ",[537,4226,1834],{"class":546},[537,4228,1228],{"class":546},[537,4230,4231],{"class":558},"user.updated",[537,4233,1491],{"class":546},[537,4235,1518],{"class":546},[537,4237,4238,4241,4243,4245,4248,4250],{"class":539,"line":681},[537,4239,4240],{"class":1191},"  BILLING_PAYMENT_SUCCEEDED ",[537,4242,1834],{"class":546},[537,4244,1228],{"class":546},[537,4246,4247],{"class":558},"billing.payment_succeeded",[537,4249,1491],{"class":546},[537,4251,1518],{"class":546},[537,4253,4254,4257,4259,4261,4264],{"class":539,"line":814},[537,4255,4256],{"class":1191},"  BILLING_PAYMENT_FAILED ",[537,4258,1834],{"class":546},[537,4260,1228],{"class":546},[537,4262,4263],{"class":558},"billing.payment_failed",[537,4265,1274],{"class":546},[537,4267,4268],{"class":539,"line":1587},[537,4269,1751],{"class":546},[537,4271,4272],{"class":539,"line":1598},[537,4273,595],{"emptyLinePlaceholder":594},[537,4275,4276,4278,4281],{"class":539,"line":1603},[537,4277,1297],{"class":1296},[537,4279,4280],{"class":1100}," WebhookProcessor",[537,4282,1303],{"class":546},[537,4284,4285,4287,4290,4292,4295,4297,4300,4302,4305],{"class":539,"line":1626},[537,4286,1308],{"class":1296},[537,4288,4289],{"class":542}," eventHandlers",[537,4291,555],{"class":546},[537,4293,4294],{"class":1100}," Map",[537,4296,1367],{"class":546},[537,4298,4299],{"class":1100},"WebhookEventType",[537,4301,1499],{"class":546},[537,4303,4304],{"class":1100}," EventHandler",[537,4306,4307],{"class":546},">;\n",[537,4309,4310,4312,4315,4317,4320],{"class":539,"line":1645},[537,4311,1308],{"class":1296},[537,4313,4314],{"class":542}," retryQueue",[537,4316,555],{"class":546},[537,4318,4319],{"class":1100}," RetryQueue",[537,4321,1319],{"class":546},[537,4323,4324,4326,4329,4331,4334],{"class":539,"line":1698},[537,4325,1308],{"class":1296},[537,4327,4328],{"class":542}," deadLetterQueue",[537,4330,555],{"class":546},[537,4332,4333],{"class":1100}," DeadLetterQueue",[537,4335,1319],{"class":546},[537,4337,4338],{"class":539,"line":1703},[537,4339,595],{"emptyLinePlaceholder":594},[537,4341,4342,4345,4347],{"class":539,"line":1708},[537,4343,4344],{"class":1296},"  constructor",[537,4346,1418],{"class":546},[537,4348,1303],{"class":546},[537,4350,4351,4353,4356,4358,4360,4362,4364],{"class":539,"line":1723},[537,4352,1629],{"class":546},[537,4354,4355],{"class":1191},"eventHandlers",[537,4357,1479],{"class":546},[537,4359,1655],{"class":546},[537,4361,4294],{"class":1399},[537,4363,1418],{"class":542},[537,4365,1319],{"class":546},[537,4367,4368,4370,4373,4375,4377,4379,4381],{"class":539,"line":1743},[537,4369,1629],{"class":546},[537,4371,4372],{"class":1191},"retryQueue",[537,4374,1479],{"class":546},[537,4376,1655],{"class":546},[537,4378,4319],{"class":1399},[537,4380,1418],{"class":542},[537,4382,1319],{"class":546},[537,4384,4385,4387,4390,4392,4394,4396,4398],{"class":539,"line":1748},[537,4386,1629],{"class":546},[537,4388,4389],{"class":1191},"deadLetterQueue",[537,4391,1479],{"class":546},[537,4393,1655],{"class":546},[537,4395,4333],{"class":1399},[537,4397,1418],{"class":542},[537,4399,1319],{"class":546},[537,4401,4402,4404,4407,4409],{"class":539,"line":2166},[537,4403,1629],{"class":546},[537,4405,4406],{"class":1399},"setupHandlers",[537,4408,1418],{"class":542},[537,4410,1319],{"class":546},[537,4412,4413],{"class":539,"line":2198},[537,4414,1441],{"class":546},[537,4416,4417],{"class":539,"line":2540},[537,4418,595],{"emptyLinePlaceholder":594},[537,4420,4421,4423,4426,4428,4431],{"class":539,"line":2546},[537,4422,1308],{"class":1296},[537,4424,4425],{"class":542}," setupHandlers",[537,4427,1361],{"class":546},[537,4429,4430],{"class":1100}," void",[537,4432,1303],{"class":546},[537,4434,4435,4437,4439,4441,4444,4446,4448,4450,4453,4455,4457,4460,4463],{"class":539,"line":2551},[537,4436,1629],{"class":546},[537,4438,4355],{"class":1191},[537,4440,1560],{"class":546},[537,4442,4443],{"class":1399},"set",[537,4445,1488],{"class":542},[537,4447,4299],{"class":1191},[537,4449,1560],{"class":546},[537,4451,4452],{"class":1191},"SESSION_COMPLETED",[537,4454,1499],{"class":546},[537,4456,1655],{"class":546},[537,4458,4459],{"class":1399}," SessionCompletedHandler",[537,4461,4462],{"class":542},"())",[537,4464,1319],{"class":546},[537,4466,4467,4469,4471,4473,4475,4477,4479,4481,4484,4486,4488,4491,4493],{"class":539,"line":2557},[537,4468,1629],{"class":546},[537,4470,4355],{"class":1191},[537,4472,1560],{"class":546},[537,4474,4443],{"class":1399},[537,4476,1488],{"class":542},[537,4478,4299],{"class":1191},[537,4480,1560],{"class":546},[537,4482,4483],{"class":1191},"SESSION_FAILED",[537,4485,1499],{"class":546},[537,4487,1655],{"class":546},[537,4489,4490],{"class":1399}," SessionFailedHandler",[537,4492,4462],{"class":542},[537,4494,1319],{"class":546},[537,4496,4497,4499,4501,4503,4505,4507,4509,4511,4514,4516,4518,4521,4523],{"class":539,"line":2563},[537,4498,1629],{"class":546},[537,4500,4355],{"class":1191},[537,4502,1560],{"class":546},[537,4504,4443],{"class":1399},[537,4506,1488],{"class":542},[537,4508,4299],{"class":1191},[537,4510,1560],{"class":546},[537,4512,4513],{"class":1191},"ANALYSIS_READY",[537,4515,1499],{"class":546},[537,4517,1655],{"class":546},[537,4519,4520],{"class":1399}," AnalysisReadyHandler",[537,4522,4462],{"class":542},[537,4524,1319],{"class":546},[537,4526,4527],{"class":539,"line":2569},[537,4528,4529],{"class":1290},"    // ... other handlers\n",[537,4531,4532],{"class":539,"line":2574},[537,4533,1441],{"class":546},[537,4535,4536],{"class":539,"line":3212},[537,4537,595],{"emptyLinePlaceholder":594},[537,4539,4540,4542,4545,4547,4549,4551,4553,4555,4557,4559,4561,4563],{"class":539,"line":3226},[537,4541,1355],{"class":1296},[537,4543,4544],{"class":542}," processEvent",[537,4546,1488],{"class":546},[537,4548,3125],{"class":2068},[537,4550,555],{"class":546},[537,4552,4051],{"class":1100},[537,4554,2710],{"class":546},[537,4556,1364],{"class":1100},[537,4558,1367],{"class":546},[537,4560,1464],{"class":1100},[537,4562,1373],{"class":546},[537,4564,1303],{"class":546},[537,4566,4567,4569,4572,4574,4576,4578,4580,4583,4585,4587,4589,4591,4593],{"class":539,"line":3244},[537,4568,1473],{"class":1296},[537,4570,4571],{"class":1191}," handler",[537,4573,1479],{"class":546},[537,4575,1396],{"class":546},[537,4577,4355],{"class":1191},[537,4579,1560],{"class":546},[537,4581,4582],{"class":1399},"get",[537,4584,1488],{"class":542},[537,4586,3125],{"class":1191},[537,4588,1560],{"class":546},[537,4590,3130],{"class":1191},[537,4592,1593],{"class":542},[537,4594,1319],{"class":546},[537,4596,4597],{"class":539,"line":3251},[537,4598,2285],{"class":542},[537,4600,4601,4603,4605,4607,4610,4612],{"class":539,"line":3259},[537,4602,1381],{"class":1380},[537,4604,1384],{"class":542},[537,4606,3013],{"class":546},[537,4608,4609],{"class":1191},"handler",[537,4611,3133],{"class":542},[537,4613,1231],{"class":546},[537,4615,4616,4619,4621,4624,4626,4628,4631,4633,4635,4637,4639,4641,4643],{"class":539,"line":3290},[537,4617,4618],{"class":1191},"      console",[537,4620,1560],{"class":546},[537,4622,4623],{"class":1399},"warn",[537,4625,1488],{"class":542},[537,4627,2091],{"class":546},[537,4629,4630],{"class":558},"No handler for event type: ",[537,4632,2097],{"class":546},[537,4634,3125],{"class":1191},[537,4636,1560],{"class":546},[537,4638,3130],{"class":1191},[537,4640,2142],{"class":546},[537,4642,1593],{"class":542},[537,4644,1319],{"class":546},[537,4646,4647,4650],{"class":539,"line":3295},[537,4648,4649],{"class":1380},"      return",[537,4651,1319],{"class":546},[537,4653,4654],{"class":539,"line":3300},[537,4655,1425],{"class":546},[537,4657,4658],{"class":539,"line":3340},[537,4659,595],{"emptyLinePlaceholder":594},[537,4661,4662,4665],{"class":539,"line":3357},[537,4663,4664],{"class":1380},"    try",[537,4666,1303],{"class":546},[537,4668,4669,4671,4673,4675,4678,4680,4682,4684,4686,4688],{"class":539,"line":3384},[537,4670,1410],{"class":1380},[537,4672,4571],{"class":1191},[537,4674,1560],{"class":546},[537,4676,4677],{"class":1399},"handle",[537,4679,1488],{"class":542},[537,4681,3125],{"class":1191},[537,4683,1560],{"class":546},[537,4685,1678],{"class":1191},[537,4687,1593],{"class":542},[537,4689,1319],{"class":546},[537,4691,4692,4694,4696,4698,4700,4702,4705,4707,4709,4711,4713,4715,4717],{"class":539,"line":3425},[537,4693,4618],{"class":1191},[537,4695,1560],{"class":546},[537,4697,2086],{"class":1399},[537,4699,1488],{"class":542},[537,4701,2091],{"class":546},[537,4703,4704],{"class":558},"Successfully processed event: ",[537,4706,2097],{"class":546},[537,4708,3125],{"class":1191},[537,4710,1560],{"class":546},[537,4712,2061],{"class":1191},[537,4714,2142],{"class":546},[537,4716,1593],{"class":542},[537,4718,1319],{"class":546},[537,4720,4721,4723,4725,4727,4729,4731],{"class":539,"line":3430},[537,4722,1590],{"class":546},[537,4724,3345],{"class":1380},[537,4726,1384],{"class":542},[537,4728,3350],{"class":1191},[537,4730,3133],{"class":542},[537,4732,1231],{"class":546},[537,4734,4735,4737,4739,4741,4743,4745,4748,4750,4752,4754,4756,4758,4760,4762,4764,4766,4768],{"class":539,"line":3439},[537,4736,4618],{"class":1191},[537,4738,1560],{"class":546},[537,4740,3350],{"class":1399},[537,4742,1488],{"class":542},[537,4744,2091],{"class":546},[537,4746,4747],{"class":558},"Failed to process event ",[537,4749,2097],{"class":546},[537,4751,3125],{"class":1191},[537,4753,1560],{"class":546},[537,4755,2061],{"class":1191},[537,4757,1895],{"class":546},[537,4759,555],{"class":558},[537,4761,2091],{"class":546},[537,4763,1499],{"class":546},[537,4765,3057],{"class":1191},[537,4767,1593],{"class":542},[537,4769,1319],{"class":546},[537,4771,4772,4774,4776,4778,4780,4783,4785,4787,4789,4791,4793],{"class":539,"line":3444},[537,4773,1410],{"class":1380},[537,4775,1396],{"class":546},[537,4777,4372],{"class":1191},[537,4779,1560],{"class":546},[537,4781,4782],{"class":1399},"add",[537,4784,1488],{"class":542},[537,4786,3125],{"class":1191},[537,4788,1499],{"class":546},[537,4790,3057],{"class":1191},[537,4792,1593],{"class":542},[537,4794,1319],{"class":546},[537,4796,4797],{"class":539,"line":3469},[537,4798,1425],{"class":546},[537,4800,4801],{"class":539,"line":3505},[537,4802,1441],{"class":546},[537,4804,4805],{"class":539,"line":3511},[537,4806,1751],{"class":546},[537,4808,4809],{"class":539,"line":3517},[537,4810,595],{"emptyLinePlaceholder":594},[537,4812,4813,4815,4817],{"class":539,"line":3522},[537,4814,4048],{"class":1296},[537,4816,4304],{"class":1100},[537,4818,1303],{"class":546},[537,4820,4821,4824,4826,4828,4830,4832,4834,4836,4838,4840],{"class":539,"line":3527},[537,4822,4823],{"class":542},"  handle",[537,4825,1488],{"class":546},[537,4827,1678],{"class":2068},[537,4829,555],{"class":546},[537,4831,3462],{"class":1100},[537,4833,2710],{"class":546},[537,4835,1364],{"class":1100},[537,4837,1367],{"class":546},[537,4839,1464],{"class":1100},[537,4841,4307],{"class":546},[537,4843,4844],{"class":539,"line":3549},[537,4845,1751],{"class":546},[537,4847,4848],{"class":539,"line":3591},[537,4849,595],{"emptyLinePlaceholder":594},[537,4851,4852,4854,4856,4859,4861],{"class":539,"line":3597},[537,4853,1297],{"class":1296},[537,4855,4459],{"class":1100},[537,4857,4858],{"class":1296}," implements",[537,4860,4304],{"class":1100},[537,4862,1303],{"class":546},[537,4864,4865,4867,4870,4872,4874,4876,4878,4880,4882,4884,4886,4888],{"class":539,"line":3603},[537,4866,1355],{"class":1296},[537,4868,4869],{"class":542}," handle",[537,4871,1488],{"class":546},[537,4873,1678],{"class":2068},[537,4875,555],{"class":546},[537,4877,3462],{"class":1100},[537,4879,2710],{"class":546},[537,4881,1364],{"class":1100},[537,4883,1367],{"class":546},[537,4885,1464],{"class":1100},[537,4887,1373],{"class":546},[537,4889,1303],{"class":546},[537,4891,4892],{"class":539,"line":3608},[537,4893,4894],{"class":1290},"    // Update local database\n",[537,4896,4897,4900,4902,4905,4907,4909,4911,4913,4915,4917,4920,4922,4924],{"class":539,"line":3613},[537,4898,4899],{"class":1380},"    await",[537,4901,1396],{"class":546},[537,4903,4904],{"class":1399},"updateSessionStatus",[537,4906,1488],{"class":542},[537,4908,1678],{"class":1191},[537,4910,1560],{"class":546},[537,4912,3491],{"class":1191},[537,4914,1499],{"class":546},[537,4916,1228],{"class":546},[537,4918,4919],{"class":558},"completed",[537,4921,1491],{"class":546},[537,4923,1593],{"class":542},[537,4925,1319],{"class":546},[537,4927,4928],{"class":539,"line":3635},[537,4929,2285],{"class":542},[537,4931,4932],{"class":539,"line":3679},[537,4933,4934],{"class":1290},"    // Process results\n",[537,4936,4937,4939,4941,4944,4946,4948,4950,4952,4954,4956,4958,4961,4963],{"class":539,"line":3685},[537,4938,4899],{"class":1380},[537,4940,1396],{"class":546},[537,4942,4943],{"class":1399},"processResults",[537,4945,1488],{"class":542},[537,4947,1678],{"class":1191},[537,4949,1560],{"class":546},[537,4951,3491],{"class":1191},[537,4953,1499],{"class":546},[537,4955,1608],{"class":1191},[537,4957,1560],{"class":546},[537,4959,4960],{"class":1191},"results",[537,4962,1593],{"class":542},[537,4964,1319],{"class":546},[537,4966,4967],{"class":539,"line":3691},[537,4968,2285],{"class":542},[537,4970,4971],{"class":539,"line":3696},[537,4972,4973],{"class":1290},"    // Send notifications\n",[537,4975,4976,4978,4980,4983,4985,4987,4989,4992,4994,4996,4998,5000,5002],{"class":539,"line":3701},[537,4977,4899],{"class":1380},[537,4979,1396],{"class":546},[537,4981,4982],{"class":1399},"sendNotifications",[537,4984,1488],{"class":542},[537,4986,1678],{"class":1191},[537,4988,1560],{"class":546},[537,4990,4991],{"class":1191},"user_id",[537,4993,1499],{"class":546},[537,4995,1608],{"class":1191},[537,4997,1560],{"class":546},[537,4999,3491],{"class":1191},[537,5001,1593],{"class":542},[537,5003,1319],{"class":546},[537,5005,5006],{"class":539,"line":3725},[537,5007,2285],{"class":542},[537,5009,5010],{"class":539,"line":3747},[537,5011,5012],{"class":1290},"    // Update analytics\n",[537,5014,5016,5018,5020,5023,5025,5027,5029],{"class":539,"line":5015},74,[537,5017,4899],{"class":1380},[537,5019,1396],{"class":546},[537,5021,5022],{"class":1399},"updateAnalytics",[537,5024,1488],{"class":542},[537,5026,1678],{"class":1191},[537,5028,1593],{"class":542},[537,5030,1319],{"class":546},[537,5032,5034],{"class":539,"line":5033},75,[537,5035,1441],{"class":546},[537,5037,5039],{"class":539,"line":5038},76,[537,5040,595],{"emptyLinePlaceholder":594},[537,5042,5044,5046,5048,5051,5053,5056,5058,5060,5062,5065,5067,5069,5071,5073,5075,5077,5079],{"class":539,"line":5043},77,[537,5045,1308],{"class":1296},[537,5047,1452],{"class":1296},[537,5049,5050],{"class":542}," updateSessionStatus",[537,5052,1488],{"class":546},[537,5054,5055],{"class":2068},"sessionId",[537,5057,555],{"class":546},[537,5059,1316],{"class":1100},[537,5061,1499],{"class":546},[537,5063,5064],{"class":2068}," status",[537,5066,555],{"class":546},[537,5068,1316],{"class":1100},[537,5070,2710],{"class":546},[537,5072,1364],{"class":1100},[537,5074,1367],{"class":546},[537,5076,1464],{"class":1100},[537,5078,1373],{"class":546},[537,5080,1303],{"class":546},[537,5082,5084],{"class":539,"line":5083},78,[537,5085,5086],{"class":1290},"    // Database update logic\n",[537,5088,5090],{"class":539,"line":5089},79,[537,5091,1441],{"class":546},[537,5093,5095],{"class":539,"line":5094},80,[537,5096,595],{"emptyLinePlaceholder":594},[537,5098,5100,5102,5104,5107,5109,5111,5113,5115,5117,5120,5122,5124,5126,5128,5130,5132,5134],{"class":539,"line":5099},81,[537,5101,1308],{"class":1296},[537,5103,1452],{"class":1296},[537,5105,5106],{"class":542}," processResults",[537,5108,1488],{"class":546},[537,5110,5055],{"class":2068},[537,5112,555],{"class":546},[537,5114,1316],{"class":1100},[537,5116,1499],{"class":546},[537,5118,5119],{"class":2068}," results",[537,5121,555],{"class":546},[537,5123,3462],{"class":1100},[537,5125,2710],{"class":546},[537,5127,1364],{"class":1100},[537,5129,1367],{"class":546},[537,5131,1464],{"class":1100},[537,5133,1373],{"class":546},[537,5135,1303],{"class":546},[537,5137,5139],{"class":539,"line":5138},82,[537,5140,5141],{"class":1290},"    // Results processing logic\n",[537,5143,5145],{"class":539,"line":5144},83,[537,5146,1441],{"class":546},[537,5148,5150],{"class":539,"line":5149},84,[537,5151,595],{"emptyLinePlaceholder":594},[537,5153,5155,5157,5159,5162,5164,5167,5169,5171,5173,5176,5178,5180,5182,5184,5186,5188,5190],{"class":539,"line":5154},85,[537,5156,1308],{"class":1296},[537,5158,1452],{"class":1296},[537,5160,5161],{"class":542}," sendNotifications",[537,5163,1488],{"class":546},[537,5165,5166],{"class":2068},"userId",[537,5168,555],{"class":546},[537,5170,1316],{"class":1100},[537,5172,1499],{"class":546},[537,5174,5175],{"class":2068}," sessionId",[537,5177,555],{"class":546},[537,5179,1316],{"class":1100},[537,5181,2710],{"class":546},[537,5183,1364],{"class":1100},[537,5185,1367],{"class":546},[537,5187,1464],{"class":1100},[537,5189,1373],{"class":546},[537,5191,1303],{"class":546},[537,5193,5195],{"class":539,"line":5194},86,[537,5196,5197],{"class":1290},"    // Notification logic\n",[537,5199,5201],{"class":539,"line":5200},87,[537,5202,1441],{"class":546},[537,5204,5206],{"class":539,"line":5205},88,[537,5207,595],{"emptyLinePlaceholder":594},[537,5209,5211,5213,5215,5218,5220,5222,5224,5226,5228,5230,5232,5234,5236],{"class":539,"line":5210},89,[537,5212,1308],{"class":1296},[537,5214,1452],{"class":1296},[537,5216,5217],{"class":542}," updateAnalytics",[537,5219,1488],{"class":546},[537,5221,1678],{"class":2068},[537,5223,555],{"class":546},[537,5225,3462],{"class":1100},[537,5227,2710],{"class":546},[537,5229,1364],{"class":1100},[537,5231,1367],{"class":546},[537,5233,1464],{"class":1100},[537,5235,1373],{"class":546},[537,5237,1303],{"class":546},[537,5239,5241],{"class":539,"line":5240},90,[537,5242,5243],{"class":1290},"    // Analytics update logic\n",[537,5245,5247],{"class":539,"line":5246},91,[537,5248,1441],{"class":546},[537,5250,5252],{"class":539,"line":5251},92,[537,5253,1751],{"class":546},[512,5255,5257],{"id":5256},"database-integration-requirements","Database Integration Requirements",[517,5259,5261],{"id":5260},"data-synchronization","Data Synchronization",[522,5263,5265],{"id":5264},"real-time-data-sync","Real-time Data Sync",[527,5267,5269],{"className":1281,"code":5268,"language":1283,"meta":532,"style":532},"interface DataSyncConfig {\n  syncInterval: number;          // Sync interval in milliseconds\n  batchSize: number;            // Records per batch\n  maxRetries: number;           // Maximum retry attempts\n  conflictResolution: ConflictResolutionStrategy;\n}\n\nenum ConflictResolutionStrategy {\n  LAST_WRITE_WINS = 'last_write_wins',\n  FIRST_WRITE_WINS = 'first_write_wins',\n  MANUAL_REVIEW = 'manual_review',\n  MERGE = 'merge'\n}\n\nclass DataSynchronizer {\n  private config: DataSyncConfig;\n  private localDatabase: Database;\n  private mindPeekerClient: MindPeekerClient;\n\n  constructor(config: DataSyncConfig) {\n    this.config = config;\n    this.localDatabase = new Database();\n    this.mindPeekerClient = new MindPeekerClient();\n  }\n\n  async startSync(): Promise\u003Cvoid> {\n    setInterval(async () => {\n      try {\n        await this.syncSessions();\n        await this.syncAnalyses();\n        await this.syncUsers();\n      } catch (error) {\n        console.error('Sync error:', error);\n      }\n    }, this.config.syncInterval);\n  }\n\n  private async syncSessions(): Promise\u003Cvoid> {\n    const lastSyncTime = await this.getLastSyncTime('sessions');\n    const remoteSessions = await this.mindPeekerClient.sessions.list({\n      updated_since: lastSyncTime,\n      limit: this.config.batchSize\n    });\n\n    for (const session of remoteSessions.data) {\n      const localSession = await this.localDatabase.sessions.findById(session.id);\n      \n      if (!localSession) {\n        await this.localDatabase.sessions.create(session);\n      } else if (this.hasConflict(localSession, session)) {\n        await this.resolveConflict(localSession, session);\n      } else if (this.needsUpdate(localSession, session)) {\n        await this.localDatabase.sessions.update(session.id, session);\n      }\n    }\n\n    await this.updateLastSyncTime('sessions');\n  }\n\n  private hasConflict(local: any, remote: any): boolean {\n    return local.updated_at !== remote.updated_at && \n           local.version !== remote.version;\n  }\n\n  private async resolveConflict(local: any, remote: any): Promise\u003Cvoid> {\n    switch (this.config.conflictResolution) {\n      case ConflictResolutionStrategy.LAST_WRITE_WINS:\n        await this.localDatabase.sessions.update(remote.id, remote);\n        break;\n      case ConflictResolutionStrategy.MANUAL_REVIEW:\n        await this.queueForReview(local, remote);\n        break;\n      // ... other strategies\n    }\n  }\n}\n",[534,5270,5271,5280,5296,5310,5324,5336,5340,5344,5352,5368,5384,5400,5414,5418,5422,5431,5444,5458,5471,5475,5492,5504,5521,5538,5542,5546,5565,5580,5587,5601,5614,5627,5642,5667,5672,5690,5694,5698,5719,5747,5775,5786,5802,5810,5814,5839,5877,5882,5898,5922,5952,5973,6000,6032,6036,6040,6044,6065,6069,6073,6104,6131,6151,6155,6159,6196,6215,6228,6261,6267,6280,6301,6307,6312,6316,6320],{"__ignoreMap":532},[537,5272,5273,5275,5278],{"class":539,"line":82},[537,5274,4048],{"class":1296},[537,5276,5277],{"class":1100}," DataSyncConfig",[537,5279,1303],{"class":546},[537,5281,5282,5285,5287,5290,5293],{"class":539,"line":114},[537,5283,5284],{"class":542},"  syncInterval",[537,5286,555],{"class":546},[537,5288,5289],{"class":1100}," number",[537,5291,5292],{"class":546},";",[537,5294,5295],{"class":1290},"          // Sync interval in milliseconds\n",[537,5297,5298,5301,5303,5305,5307],{"class":539,"line":146},[537,5299,5300],{"class":542},"  batchSize",[537,5302,555],{"class":546},[537,5304,5289],{"class":1100},[537,5306,5292],{"class":546},[537,5308,5309],{"class":1290},"            // Records per batch\n",[537,5311,5312,5315,5317,5319,5321],{"class":539,"line":178},[537,5313,5314],{"class":542},"  maxRetries",[537,5316,555],{"class":546},[537,5318,5289],{"class":1100},[537,5320,5292],{"class":546},[537,5322,5323],{"class":1290},"           // Maximum retry attempts\n",[537,5325,5326,5329,5331,5334],{"class":539,"line":268},[537,5327,5328],{"class":542},"  conflictResolution",[537,5330,555],{"class":546},[537,5332,5333],{"class":1100}," ConflictResolutionStrategy",[537,5335,1319],{"class":546},[537,5337,5338],{"class":539,"line":273},[537,5339,1751],{"class":546},[537,5341,5342],{"class":539,"line":279},[537,5343,595],{"emptyLinePlaceholder":594},[537,5345,5346,5348,5350],{"class":539,"line":285},[537,5347,4122],{"class":1296},[537,5349,5333],{"class":1100},[537,5351,1303],{"class":546},[537,5353,5354,5357,5359,5361,5364,5366],{"class":539,"line":291},[537,5355,5356],{"class":1191},"  LAST_WRITE_WINS ",[537,5358,1834],{"class":546},[537,5360,1228],{"class":546},[537,5362,5363],{"class":558},"last_write_wins",[537,5365,1491],{"class":546},[537,5367,1518],{"class":546},[537,5369,5370,5373,5375,5377,5380,5382],{"class":539,"line":222},[537,5371,5372],{"class":1191},"  FIRST_WRITE_WINS ",[537,5374,1834],{"class":546},[537,5376,1228],{"class":546},[537,5378,5379],{"class":558},"first_write_wins",[537,5381,1491],{"class":546},[537,5383,1518],{"class":546},[537,5385,5386,5389,5391,5393,5396,5398],{"class":539,"line":227},[537,5387,5388],{"class":1191},"  MANUAL_REVIEW ",[537,5390,1834],{"class":546},[537,5392,1228],{"class":546},[537,5394,5395],{"class":558},"manual_review",[537,5397,1491],{"class":546},[537,5399,1518],{"class":546},[537,5401,5402,5405,5407,5409,5412],{"class":539,"line":232},[537,5403,5404],{"class":1191},"  MERGE ",[537,5406,1834],{"class":546},[537,5408,1228],{"class":546},[537,5410,5411],{"class":558},"merge",[537,5413,1274],{"class":546},[537,5415,5416],{"class":539,"line":238},[537,5417,1751],{"class":546},[537,5419,5420],{"class":539,"line":243},[537,5421,595],{"emptyLinePlaceholder":594},[537,5423,5424,5426,5429],{"class":539,"line":248},[537,5425,1297],{"class":1296},[537,5427,5428],{"class":1100}," DataSynchronizer",[537,5430,1303],{"class":546},[537,5432,5433,5435,5438,5440,5442],{"class":539,"line":671},[537,5434,1308],{"class":1296},[537,5436,5437],{"class":542}," config",[537,5439,555],{"class":546},[537,5441,5277],{"class":1100},[537,5443,1319],{"class":546},[537,5445,5446,5448,5451,5453,5456],{"class":539,"line":681},[537,5447,1308],{"class":1296},[537,5449,5450],{"class":542}," localDatabase",[537,5452,555],{"class":546},[537,5454,5455],{"class":1100}," Database",[537,5457,1319],{"class":546},[537,5459,5460,5462,5465,5467,5469],{"class":539,"line":814},[537,5461,1308],{"class":1296},[537,5463,5464],{"class":542}," mindPeekerClient",[537,5466,555],{"class":546},[537,5468,1805],{"class":1100},[537,5470,1319],{"class":546},[537,5472,5473],{"class":539,"line":1587},[537,5474,595],{"emptyLinePlaceholder":594},[537,5476,5477,5479,5481,5484,5486,5488,5490],{"class":539,"line":1598},[537,5478,4344],{"class":1296},[537,5480,1488],{"class":546},[537,5482,5483],{"class":2068},"config",[537,5485,555],{"class":546},[537,5487,5277],{"class":1100},[537,5489,1593],{"class":546},[537,5491,1303],{"class":546},[537,5493,5494,5496,5498,5500,5502],{"class":539,"line":1603},[537,5495,1629],{"class":546},[537,5497,5483],{"class":1191},[537,5499,1479],{"class":546},[537,5501,5437],{"class":1191},[537,5503,1319],{"class":546},[537,5505,5506,5508,5511,5513,5515,5517,5519],{"class":539,"line":1626},[537,5507,1629],{"class":546},[537,5509,5510],{"class":1191},"localDatabase",[537,5512,1479],{"class":546},[537,5514,1655],{"class":546},[537,5516,5455],{"class":1399},[537,5518,1418],{"class":542},[537,5520,1319],{"class":546},[537,5522,5523,5525,5528,5530,5532,5534,5536],{"class":539,"line":1645},[537,5524,1629],{"class":546},[537,5526,5527],{"class":1191},"mindPeekerClient",[537,5529,1479],{"class":546},[537,5531,1655],{"class":546},[537,5533,1805],{"class":1399},[537,5535,1418],{"class":542},[537,5537,1319],{"class":546},[537,5539,5540],{"class":539,"line":1698},[537,5541,1441],{"class":546},[537,5543,5544],{"class":539,"line":1703},[537,5545,595],{"emptyLinePlaceholder":594},[537,5547,5548,5550,5553,5555,5557,5559,5561,5563],{"class":539,"line":1708},[537,5549,1355],{"class":1296},[537,5551,5552],{"class":542}," startSync",[537,5554,1361],{"class":546},[537,5556,1364],{"class":1100},[537,5558,1367],{"class":546},[537,5560,1464],{"class":1100},[537,5562,1373],{"class":546},[537,5564,1303],{"class":546},[537,5566,5567,5570,5572,5574,5576,5578],{"class":539,"line":1723},[537,5568,5569],{"class":1399},"    setInterval",[537,5571,1488],{"class":542},[537,5573,3447],{"class":1296},[537,5575,3718],{"class":546},[537,5577,2074],{"class":1296},[537,5579,1303],{"class":546},[537,5581,5582,5585],{"class":539,"line":1743},[537,5583,5584],{"class":1380},"      try",[537,5586,1303],{"class":546},[537,5588,5589,5592,5594,5597,5599],{"class":539,"line":1748},[537,5590,5591],{"class":1380},"        await",[537,5593,1396],{"class":546},[537,5595,5596],{"class":1399},"syncSessions",[537,5598,1418],{"class":542},[537,5600,1319],{"class":546},[537,5602,5603,5605,5607,5610,5612],{"class":539,"line":2166},[537,5604,5591],{"class":1380},[537,5606,1396],{"class":546},[537,5608,5609],{"class":1399},"syncAnalyses",[537,5611,1418],{"class":542},[537,5613,1319],{"class":546},[537,5615,5616,5618,5620,5623,5625],{"class":539,"line":2198},[537,5617,5591],{"class":1380},[537,5619,1396],{"class":546},[537,5621,5622],{"class":1399},"syncUsers",[537,5624,1418],{"class":542},[537,5626,1319],{"class":546},[537,5628,5629,5632,5634,5636,5638,5640],{"class":539,"line":2540},[537,5630,5631],{"class":546},"      }",[537,5633,3345],{"class":1380},[537,5635,1384],{"class":542},[537,5637,3350],{"class":1191},[537,5639,3133],{"class":542},[537,5641,1231],{"class":546},[537,5643,5644,5646,5648,5650,5652,5654,5657,5659,5661,5663,5665],{"class":539,"line":2546},[537,5645,3262],{"class":1191},[537,5647,1560],{"class":546},[537,5649,3350],{"class":1399},[537,5651,1488],{"class":542},[537,5653,1491],{"class":546},[537,5655,5656],{"class":558},"Sync error:",[537,5658,1491],{"class":546},[537,5660,1499],{"class":546},[537,5662,3057],{"class":1191},[537,5664,1593],{"class":542},[537,5666,1319],{"class":546},[537,5668,5669],{"class":539,"line":2551},[537,5670,5671],{"class":546},"      }\n",[537,5673,5674,5677,5679,5681,5683,5686,5688],{"class":539,"line":2557},[537,5675,5676],{"class":546},"    },",[537,5678,1396],{"class":546},[537,5680,5483],{"class":1191},[537,5682,1560],{"class":546},[537,5684,5685],{"class":1191},"syncInterval",[537,5687,1593],{"class":542},[537,5689,1319],{"class":546},[537,5691,5692],{"class":539,"line":2563},[537,5693,1441],{"class":546},[537,5695,5696],{"class":539,"line":2569},[537,5697,595],{"emptyLinePlaceholder":594},[537,5699,5700,5702,5704,5707,5709,5711,5713,5715,5717],{"class":539,"line":2574},[537,5701,1308],{"class":1296},[537,5703,1452],{"class":1296},[537,5705,5706],{"class":542}," syncSessions",[537,5708,1361],{"class":546},[537,5710,1364],{"class":1100},[537,5712,1367],{"class":546},[537,5714,1464],{"class":1100},[537,5716,1373],{"class":546},[537,5718,1303],{"class":546},[537,5720,5721,5723,5726,5728,5730,5732,5735,5737,5739,5741,5743,5745],{"class":539,"line":3212},[537,5722,1473],{"class":1296},[537,5724,5725],{"class":1191}," lastSyncTime",[537,5727,1479],{"class":546},[537,5729,1482],{"class":1380},[537,5731,1396],{"class":546},[537,5733,5734],{"class":1399},"getLastSyncTime",[537,5736,1488],{"class":542},[537,5738,1491],{"class":546},[537,5740,1927],{"class":558},[537,5742,1491],{"class":546},[537,5744,1593],{"class":542},[537,5746,1319],{"class":546},[537,5748,5749,5751,5754,5756,5758,5760,5762,5764,5766,5768,5771,5773],{"class":539,"line":3226},[537,5750,1473],{"class":1296},[537,5752,5753],{"class":1191}," remoteSessions",[537,5755,1479],{"class":546},[537,5757,1482],{"class":1380},[537,5759,1396],{"class":546},[537,5761,5527],{"class":1191},[537,5763,1560],{"class":546},[537,5765,1927],{"class":1191},[537,5767,1560],{"class":546},[537,5769,5770],{"class":1399},"list",[537,5772,1488],{"class":542},[537,5774,1231],{"class":546},[537,5776,5777,5780,5782,5784],{"class":539,"line":3244},[537,5778,5779],{"class":542},"      updated_since",[537,5781,555],{"class":546},[537,5783,5725],{"class":1191},[537,5785,1518],{"class":546},[537,5787,5788,5791,5793,5795,5797,5799],{"class":539,"line":3251},[537,5789,5790],{"class":542},"      limit",[537,5792,555],{"class":546},[537,5794,1396],{"class":546},[537,5796,5483],{"class":1191},[537,5798,1560],{"class":546},[537,5800,5801],{"class":1191},"batchSize\n",[537,5803,5804,5806,5808],{"class":539,"line":3259},[537,5805,1590],{"class":546},[537,5807,1593],{"class":542},[537,5809,1319],{"class":546},[537,5811,5812],{"class":539,"line":3290},[537,5813,595],{"emptyLinePlaceholder":594},[537,5815,5816,5819,5821,5823,5826,5829,5831,5833,5835,5837],{"class":539,"line":3295},[537,5817,5818],{"class":1380},"    for",[537,5820,1384],{"class":542},[537,5822,1828],{"class":1296},[537,5824,5825],{"class":1191}," session",[537,5827,5828],{"class":546}," of",[537,5830,5753],{"class":1191},[537,5832,1560],{"class":546},[537,5834,1678],{"class":1191},[537,5836,3133],{"class":542},[537,5838,1231],{"class":546},[537,5840,5841,5844,5847,5849,5851,5853,5855,5857,5859,5861,5864,5866,5869,5871,5873,5875],{"class":539,"line":3300},[537,5842,5843],{"class":1296},"      const",[537,5845,5846],{"class":1191}," localSession",[537,5848,1479],{"class":546},[537,5850,1482],{"class":1380},[537,5852,1396],{"class":546},[537,5854,5510],{"class":1191},[537,5856,1560],{"class":546},[537,5858,1927],{"class":1191},[537,5860,1560],{"class":546},[537,5862,5863],{"class":1399},"findById",[537,5865,1488],{"class":542},[537,5867,5868],{"class":1191},"session",[537,5870,1560],{"class":546},[537,5872,2061],{"class":1191},[537,5874,1593],{"class":542},[537,5876,1319],{"class":546},[537,5878,5879],{"class":539,"line":3340},[537,5880,5881],{"class":542},"      \n",[537,5883,5884,5887,5889,5891,5894,5896],{"class":539,"line":3357},[537,5885,5886],{"class":1380},"      if",[537,5888,1384],{"class":542},[537,5890,3013],{"class":546},[537,5892,5893],{"class":1191},"localSession",[537,5895,3133],{"class":542},[537,5897,1231],{"class":546},[537,5899,5900,5902,5904,5906,5908,5910,5912,5914,5916,5918,5920],{"class":539,"line":3384},[537,5901,5591],{"class":1380},[537,5903,1396],{"class":546},[537,5905,5510],{"class":1191},[537,5907,1560],{"class":546},[537,5909,1927],{"class":1191},[537,5911,1560],{"class":546},[537,5913,1932],{"class":1399},[537,5915,1488],{"class":542},[537,5917,5868],{"class":1191},[537,5919,1593],{"class":542},[537,5921,1319],{"class":546},[537,5923,5924,5926,5929,5932,5934,5937,5940,5942,5944,5946,5948,5950],{"class":539,"line":3425},[537,5925,5631],{"class":546},[537,5927,5928],{"class":1380}," else",[537,5930,5931],{"class":1380}," if",[537,5933,1384],{"class":542},[537,5935,5936],{"class":546},"this.",[537,5938,5939],{"class":1399},"hasConflict",[537,5941,1488],{"class":542},[537,5943,5893],{"class":1191},[537,5945,1499],{"class":546},[537,5947,5825],{"class":1191},[537,5949,3027],{"class":542},[537,5951,1231],{"class":546},[537,5953,5954,5956,5958,5961,5963,5965,5967,5969,5971],{"class":539,"line":3430},[537,5955,5591],{"class":1380},[537,5957,1396],{"class":546},[537,5959,5960],{"class":1399},"resolveConflict",[537,5962,1488],{"class":542},[537,5964,5893],{"class":1191},[537,5966,1499],{"class":546},[537,5968,5825],{"class":1191},[537,5970,1593],{"class":542},[537,5972,1319],{"class":546},[537,5974,5975,5977,5979,5981,5983,5985,5988,5990,5992,5994,5996,5998],{"class":539,"line":3439},[537,5976,5631],{"class":546},[537,5978,5928],{"class":1380},[537,5980,5931],{"class":1380},[537,5982,1384],{"class":542},[537,5984,5936],{"class":546},[537,5986,5987],{"class":1399},"needsUpdate",[537,5989,1488],{"class":542},[537,5991,5893],{"class":1191},[537,5993,1499],{"class":546},[537,5995,5825],{"class":1191},[537,5997,3027],{"class":542},[537,5999,1231],{"class":546},[537,6001,6002,6004,6006,6008,6010,6012,6014,6016,6018,6020,6022,6024,6026,6028,6030],{"class":539,"line":3444},[537,6003,5591],{"class":1380},[537,6005,1396],{"class":546},[537,6007,5510],{"class":1191},[537,6009,1560],{"class":546},[537,6011,1927],{"class":1191},[537,6013,1560],{"class":546},[537,6015,2069],{"class":1399},[537,6017,1488],{"class":542},[537,6019,5868],{"class":1191},[537,6021,1560],{"class":546},[537,6023,2061],{"class":1191},[537,6025,1499],{"class":546},[537,6027,5825],{"class":1191},[537,6029,1593],{"class":542},[537,6031,1319],{"class":546},[537,6033,6034],{"class":539,"line":3469},[537,6035,5671],{"class":546},[537,6037,6038],{"class":539,"line":3505},[537,6039,1425],{"class":546},[537,6041,6042],{"class":539,"line":3511},[537,6043,595],{"emptyLinePlaceholder":594},[537,6045,6046,6048,6050,6053,6055,6057,6059,6061,6063],{"class":539,"line":3517},[537,6047,4899],{"class":1380},[537,6049,1396],{"class":546},[537,6051,6052],{"class":1399},"updateLastSyncTime",[537,6054,1488],{"class":542},[537,6056,1491],{"class":546},[537,6058,1927],{"class":558},[537,6060,1491],{"class":546},[537,6062,1593],{"class":542},[537,6064,1319],{"class":546},[537,6066,6067],{"class":539,"line":3522},[537,6068,1441],{"class":546},[537,6070,6071],{"class":539,"line":3527},[537,6072,595],{"emptyLinePlaceholder":594},[537,6074,6075,6077,6080,6082,6085,6087,6089,6091,6094,6096,6098,6100,6102],{"class":539,"line":3549},[537,6076,1308],{"class":1296},[537,6078,6079],{"class":542}," hasConflict",[537,6081,1488],{"class":546},[537,6083,6084],{"class":2068},"local",[537,6086,555],{"class":546},[537,6088,3462],{"class":1100},[537,6090,1499],{"class":546},[537,6092,6093],{"class":2068}," remote",[537,6095,555],{"class":546},[537,6097,3462],{"class":1100},[537,6099,2710],{"class":546},[537,6101,1718],{"class":1100},[537,6103,1303],{"class":546},[537,6105,6106,6108,6111,6113,6116,6119,6121,6123,6125,6128],{"class":539,"line":3591},[537,6107,1430],{"class":1380},[537,6109,6110],{"class":1191}," local",[537,6112,1560],{"class":546},[537,6114,6115],{"class":1191},"updated_at",[537,6117,6118],{"class":546}," !==",[537,6120,6093],{"class":1191},[537,6122,1560],{"class":546},[537,6124,6115],{"class":1191},[537,6126,6127],{"class":546}," &&",[537,6129,6130],{"class":542}," \n",[537,6132,6133,6136,6138,6141,6143,6145,6147,6149],{"class":539,"line":3597},[537,6134,6135],{"class":1191},"           local",[537,6137,1560],{"class":546},[537,6139,6140],{"class":1191},"version",[537,6142,6118],{"class":546},[537,6144,6093],{"class":1191},[537,6146,1560],{"class":546},[537,6148,6140],{"class":1191},[537,6150,1319],{"class":546},[537,6152,6153],{"class":539,"line":3603},[537,6154,1441],{"class":546},[537,6156,6157],{"class":539,"line":3608},[537,6158,595],{"emptyLinePlaceholder":594},[537,6160,6161,6163,6165,6168,6170,6172,6174,6176,6178,6180,6182,6184,6186,6188,6190,6192,6194],{"class":539,"line":3613},[537,6162,1308],{"class":1296},[537,6164,1452],{"class":1296},[537,6166,6167],{"class":542}," resolveConflict",[537,6169,1488],{"class":546},[537,6171,6084],{"class":2068},[537,6173,555],{"class":546},[537,6175,3462],{"class":1100},[537,6177,1499],{"class":546},[537,6179,6093],{"class":2068},[537,6181,555],{"class":546},[537,6183,3462],{"class":1100},[537,6185,2710],{"class":546},[537,6187,1364],{"class":1100},[537,6189,1367],{"class":546},[537,6191,1464],{"class":1100},[537,6193,1373],{"class":546},[537,6195,1303],{"class":546},[537,6197,6198,6200,6202,6204,6206,6208,6211,6213],{"class":539,"line":3635},[537,6199,3120],{"class":1380},[537,6201,1384],{"class":542},[537,6203,5936],{"class":546},[537,6205,5483],{"class":1191},[537,6207,1560],{"class":546},[537,6209,6210],{"class":1191},"conflictResolution",[537,6212,3133],{"class":542},[537,6214,1231],{"class":546},[537,6216,6217,6219,6221,6223,6226],{"class":539,"line":3679},[537,6218,3140],{"class":1380},[537,6220,5333],{"class":1191},[537,6222,1560],{"class":546},[537,6224,6225],{"class":1191},"LAST_WRITE_WINS",[537,6227,547],{"class":546},[537,6229,6230,6232,6234,6236,6238,6240,6242,6244,6246,6249,6251,6253,6255,6257,6259],{"class":539,"line":3685},[537,6231,5591],{"class":1380},[537,6233,1396],{"class":546},[537,6235,5510],{"class":1191},[537,6237,1560],{"class":546},[537,6239,1927],{"class":1191},[537,6241,1560],{"class":546},[537,6243,2069],{"class":1399},[537,6245,1488],{"class":542},[537,6247,6248],{"class":1191},"remote",[537,6250,1560],{"class":546},[537,6252,2061],{"class":1191},[537,6254,1499],{"class":546},[537,6256,6093],{"class":1191},[537,6258,1593],{"class":542},[537,6260,1319],{"class":546},[537,6262,6263,6265],{"class":539,"line":3691},[537,6264,3171],{"class":1380},[537,6266,1319],{"class":546},[537,6268,6269,6271,6273,6275,6278],{"class":539,"line":3696},[537,6270,3140],{"class":1380},[537,6272,5333],{"class":1191},[537,6274,1560],{"class":546},[537,6276,6277],{"class":1191},"MANUAL_REVIEW",[537,6279,547],{"class":546},[537,6281,6282,6284,6286,6289,6291,6293,6295,6297,6299],{"class":539,"line":3701},[537,6283,5591],{"class":1380},[537,6285,1396],{"class":546},[537,6287,6288],{"class":1399},"queueForReview",[537,6290,1488],{"class":542},[537,6292,6084],{"class":1191},[537,6294,1499],{"class":546},[537,6296,6093],{"class":1191},[537,6298,1593],{"class":542},[537,6300,1319],{"class":546},[537,6302,6303,6305],{"class":539,"line":3725},[537,6304,3171],{"class":1380},[537,6306,1319],{"class":546},[537,6308,6309],{"class":539,"line":3747},[537,6310,6311],{"class":1290},"      // ... other strategies\n",[537,6313,6314],{"class":539,"line":5015},[537,6315,1425],{"class":546},[537,6317,6318],{"class":539,"line":5033},[537,6319,1441],{"class":546},[537,6321,6322],{"class":539,"line":5038},[537,6323,1751],{"class":546},[517,6325,6327],{"id":6326},"backup-and-recovery","Backup and Recovery",[522,6329,6331],{"id":6330},"automated-backup-strategy","Automated Backup Strategy",[527,6333,6335],{"className":1281,"code":6334,"language":1283,"meta":532,"style":532},"interface BackupConfig {\n  schedule: string;              // Cron expression\n  retentionDays: number;         // Days to retain backups\n  compressionEnabled: boolean;   // Enable compression\n  encryptionEnabled: boolean;    // Enable encryption\n  storageLocation: StorageLocation;\n}\n\nenum StorageLocation {\n  LOCAL = 'local',\n  S3 = 's3',\n  AZURE_BLOB = 'azure_blob',\n  GOOGLE_CLOUD = 'google_cloud'\n}\n\nclass BackupManager {\n  private config: BackupConfig;\n  private encryptionKey: string;\n\n  constructor(config: BackupConfig, encryptionKey: string) {\n    this.config = config;\n    this.encryptionKey = encryptionKey;\n  }\n\n  async performBackup(): Promise\u003Cstring> {\n    const timestamp = new Date().toISOString();\n    const backupId = `backup_${timestamp.replace(/[:.]/g, '-')}`;\n    \n    try {\n      // Create backup\n      const backupData = await this.createBackup();\n      \n      // Compress if enabled\n      const compressedData = this.config.compressionEnabled \n        ? await this.compress(backupData)\n        : backupData;\n      \n      // Encrypt if enabled\n      const encryptedData = this.config.encryptionEnabled\n        ? await this.encrypt(compressedData)\n        : compressedData;\n      \n      // Store backup\n      const backupUrl = await this.storeBackup(backupId, encryptedData);\n      \n      // Update backup registry\n      await this.updateBackupRegistry(backupId, backupUrl, timestamp);\n      \n      // Clean old backups\n      await this.cleanupOldBackups();\n      \n      return backupId;\n    } catch (error) {\n      console.error('Backup failed:', error);\n      throw error;\n    }\n  }\n\n  private async createBackup(): Promise\u003Cany> {\n    // Export all relevant data\n    const users = await this.exportUsers();\n    const sessions = await this.exportSessions();\n    const analyses = await this.exportAnalyses();\n    const metadata = await this.exportMetadata();\n\n    return {\n      timestamp: new Date().toISOString(),\n      version: '1.0',\n      data: {\n        users,\n        sessions,\n        analyses,\n        metadata\n      }\n    };\n  }\n\n  private async storeBackup(backupId: string, data: Buffer): Promise\u003Cstring> {\n    switch (this.config.storageLocation) {\n      case StorageLocation.S3:\n        return await this.storeToS3(backupId, data);\n      case StorageLocation.AZURE_BLOB:\n        return await this.storeToAzureBlob(backupId, data);\n      case StorageLocation.GOOGLE_CLOUD:\n        return await this.storeToGoogleCloud(backupId, data);\n      default:\n        return await this.storeLocally(backupId, data);\n    }\n  }\n\n  async restoreFromBackup(backupId: string): Promise\u003Cvoid> {\n    try {\n      // Retrieve backup\n      const backupData = await this.retrieveBackup(backupId);\n      \n      // Decrypt if encrypted\n      const decryptedData = this.config.encryptionEnabled\n        ? await this.decrypt(backupData)\n        : backupData;\n      \n      // Decompress if compressed\n      const decompressedData = this.config.compressionEnabled\n        ? await this.decompress(decryptedData)\n        : decryptedData;\n      \n      // Parse backup data\n      const backup = JSON.parse(decompressedData.toString());\n      \n      // Validate backup integrity\n      await this.validateBackup(backup);\n      \n      // Restore data\n      await this.restoreUsers(backup.data.users);\n      await this.restoreSessions(backup.data.sessions);\n      await this.restoreAnalyses(backup.data.analyses);\n      await this.restoreMetadata(backup.data.metadata);\n      \n      console.log(`Successfully restored from backup: ${backupId}`);\n    } catch (error) {\n      console.error('Restore failed:', error);\n      throw error;\n    }\n  }\n}\n",[534,6336,6337,6346,6360,6374,6388,6402,6414,6418,6422,6430,6445,6461,6477,6491,6495,6499,6508,6520,6533,6537,6561,6573,6586,6590,6594,6613,6637,6691,6695,6701,6706,6726,6730,6735,6755,6774,6783,6787,6792,6810,6828,6836,6840,6845,6874,6878,6883,6908,6912,6917,6930,6934,6942,6956,6981,6990,6994,6998,7002,7024,7029,7049,7069,7089,7109,7113,7119,7140,7156,7165,7172,7179,7186,7191,7195,7200,7204,7208,7246,7265,7278,7302,7315,7338,7351,7374,7380,7403,7407,7411,7415,7442,7448,7454,7478,7483,7489,7507,7525,7534,7539,7545,7564,7583,7592,7597,7603,7632,7637,7643,7662,7667,7673,7700,7726,7753,7780,7785,7811,7826,7852,7861,7866,7871],{"__ignoreMap":532},[537,6338,6339,6341,6344],{"class":539,"line":82},[537,6340,4048],{"class":1296},[537,6342,6343],{"class":1100}," BackupConfig",[537,6345,1303],{"class":546},[537,6347,6348,6351,6353,6355,6357],{"class":539,"line":114},[537,6349,6350],{"class":542},"  schedule",[537,6352,555],{"class":546},[537,6354,1316],{"class":1100},[537,6356,5292],{"class":546},[537,6358,6359],{"class":1290},"              // Cron expression\n",[537,6361,6362,6365,6367,6369,6371],{"class":539,"line":146},[537,6363,6364],{"class":542},"  retentionDays",[537,6366,555],{"class":546},[537,6368,5289],{"class":1100},[537,6370,5292],{"class":546},[537,6372,6373],{"class":1290},"         // Days to retain backups\n",[537,6375,6376,6379,6381,6383,6385],{"class":539,"line":178},[537,6377,6378],{"class":542},"  compressionEnabled",[537,6380,555],{"class":546},[537,6382,1718],{"class":1100},[537,6384,5292],{"class":546},[537,6386,6387],{"class":1290},"   // Enable compression\n",[537,6389,6390,6393,6395,6397,6399],{"class":539,"line":268},[537,6391,6392],{"class":542},"  encryptionEnabled",[537,6394,555],{"class":546},[537,6396,1718],{"class":1100},[537,6398,5292],{"class":546},[537,6400,6401],{"class":1290},"    // Enable encryption\n",[537,6403,6404,6407,6409,6412],{"class":539,"line":273},[537,6405,6406],{"class":542},"  storageLocation",[537,6408,555],{"class":546},[537,6410,6411],{"class":1100}," StorageLocation",[537,6413,1319],{"class":546},[537,6415,6416],{"class":539,"line":279},[537,6417,1751],{"class":546},[537,6419,6420],{"class":539,"line":285},[537,6421,595],{"emptyLinePlaceholder":594},[537,6423,6424,6426,6428],{"class":539,"line":291},[537,6425,4122],{"class":1296},[537,6427,6411],{"class":1100},[537,6429,1303],{"class":546},[537,6431,6432,6435,6437,6439,6441,6443],{"class":539,"line":222},[537,6433,6434],{"class":1191},"  LOCAL ",[537,6436,1834],{"class":546},[537,6438,1228],{"class":546},[537,6440,6084],{"class":558},[537,6442,1491],{"class":546},[537,6444,1518],{"class":546},[537,6446,6447,6450,6452,6454,6457,6459],{"class":539,"line":227},[537,6448,6449],{"class":1191},"  S3 ",[537,6451,1834],{"class":546},[537,6453,1228],{"class":546},[537,6455,6456],{"class":558},"s3",[537,6458,1491],{"class":546},[537,6460,1518],{"class":546},[537,6462,6463,6466,6468,6470,6473,6475],{"class":539,"line":232},[537,6464,6465],{"class":1191},"  AZURE_BLOB ",[537,6467,1834],{"class":546},[537,6469,1228],{"class":546},[537,6471,6472],{"class":558},"azure_blob",[537,6474,1491],{"class":546},[537,6476,1518],{"class":546},[537,6478,6479,6482,6484,6486,6489],{"class":539,"line":238},[537,6480,6481],{"class":1191},"  GOOGLE_CLOUD ",[537,6483,1834],{"class":546},[537,6485,1228],{"class":546},[537,6487,6488],{"class":558},"google_cloud",[537,6490,1274],{"class":546},[537,6492,6493],{"class":539,"line":243},[537,6494,1751],{"class":546},[537,6496,6497],{"class":539,"line":248},[537,6498,595],{"emptyLinePlaceholder":594},[537,6500,6501,6503,6506],{"class":539,"line":671},[537,6502,1297],{"class":1296},[537,6504,6505],{"class":1100}," BackupManager",[537,6507,1303],{"class":546},[537,6509,6510,6512,6514,6516,6518],{"class":539,"line":681},[537,6511,1308],{"class":1296},[537,6513,5437],{"class":542},[537,6515,555],{"class":546},[537,6517,6343],{"class":1100},[537,6519,1319],{"class":546},[537,6521,6522,6524,6527,6529,6531],{"class":539,"line":814},[537,6523,1308],{"class":1296},[537,6525,6526],{"class":542}," encryptionKey",[537,6528,555],{"class":546},[537,6530,1316],{"class":1100},[537,6532,1319],{"class":546},[537,6534,6535],{"class":539,"line":1587},[537,6536,595],{"emptyLinePlaceholder":594},[537,6538,6539,6541,6543,6545,6547,6549,6551,6553,6555,6557,6559],{"class":539,"line":1598},[537,6540,4344],{"class":1296},[537,6542,1488],{"class":546},[537,6544,5483],{"class":2068},[537,6546,555],{"class":546},[537,6548,6343],{"class":1100},[537,6550,1499],{"class":546},[537,6552,6526],{"class":2068},[537,6554,555],{"class":546},[537,6556,1316],{"class":1100},[537,6558,1593],{"class":546},[537,6560,1303],{"class":546},[537,6562,6563,6565,6567,6569,6571],{"class":539,"line":1603},[537,6564,1629],{"class":546},[537,6566,5483],{"class":1191},[537,6568,1479],{"class":546},[537,6570,5437],{"class":1191},[537,6572,1319],{"class":546},[537,6574,6575,6577,6580,6582,6584],{"class":539,"line":1626},[537,6576,1629],{"class":546},[537,6578,6579],{"class":1191},"encryptionKey",[537,6581,1479],{"class":546},[537,6583,6526],{"class":1191},[537,6585,1319],{"class":546},[537,6587,6588],{"class":539,"line":1645},[537,6589,1441],{"class":546},[537,6591,6592],{"class":539,"line":1698},[537,6593,595],{"emptyLinePlaceholder":594},[537,6595,6596,6598,6601,6603,6605,6607,6609,6611],{"class":539,"line":1703},[537,6597,1355],{"class":1296},[537,6599,6600],{"class":542}," performBackup",[537,6602,1361],{"class":546},[537,6604,1364],{"class":1100},[537,6606,1367],{"class":546},[537,6608,1370],{"class":1100},[537,6610,1373],{"class":546},[537,6612,1303],{"class":546},[537,6614,6615,6617,6620,6622,6624,6626,6628,6630,6633,6635],{"class":539,"line":1708},[537,6616,1473],{"class":1296},[537,6618,6619],{"class":1191}," timestamp",[537,6621,1479],{"class":546},[537,6623,1655],{"class":546},[537,6625,1344],{"class":1399},[537,6627,1418],{"class":542},[537,6629,1560],{"class":546},[537,6631,6632],{"class":1399},"toISOString",[537,6634,1418],{"class":542},[537,6636,1319],{"class":546},[537,6638,6639,6641,6644,6646,6649,6652,6654,6657,6659,6662,6664,6667,6670,6673,6676,6678,6680,6683,6685,6687,6689],{"class":539,"line":1723},[537,6640,1473],{"class":1296},[537,6642,6643],{"class":1191}," backupId",[537,6645,1479],{"class":546},[537,6647,6648],{"class":546}," `",[537,6650,6651],{"class":558},"backup_",[537,6653,2097],{"class":546},[537,6655,6656],{"class":1191},"timestamp",[537,6658,1560],{"class":546},[537,6660,6661],{"class":1399},"replace",[537,6663,1488],{"class":1191},[537,6665,6666],{"class":546},"/[",[537,6668,6669],{"class":558},":.",[537,6671,6672],{"class":546},"]/",[537,6674,6675],{"class":1689},"g",[537,6677,1499],{"class":546},[537,6679,1228],{"class":546},[537,6681,6682],{"class":558},"-",[537,6684,1491],{"class":546},[537,6686,1593],{"class":1191},[537,6688,2142],{"class":546},[537,6690,1319],{"class":546},[537,6692,6693],{"class":539,"line":1743},[537,6694,2285],{"class":542},[537,6696,6697,6699],{"class":539,"line":1748},[537,6698,4664],{"class":1380},[537,6700,1303],{"class":546},[537,6702,6703],{"class":539,"line":2166},[537,6704,6705],{"class":1290},"      // Create backup\n",[537,6707,6708,6710,6713,6715,6717,6719,6722,6724],{"class":539,"line":2198},[537,6709,5843],{"class":1296},[537,6711,6712],{"class":1191}," backupData",[537,6714,1479],{"class":546},[537,6716,1482],{"class":1380},[537,6718,1396],{"class":546},[537,6720,6721],{"class":1399},"createBackup",[537,6723,1418],{"class":542},[537,6725,1319],{"class":546},[537,6727,6728],{"class":539,"line":2540},[537,6729,5881],{"class":542},[537,6731,6732],{"class":539,"line":2546},[537,6733,6734],{"class":1290},"      // Compress if enabled\n",[537,6736,6737,6739,6742,6744,6746,6748,6750,6753],{"class":539,"line":2551},[537,6738,5843],{"class":1296},[537,6740,6741],{"class":1191}," compressedData",[537,6743,1479],{"class":546},[537,6745,1396],{"class":546},[537,6747,5483],{"class":1191},[537,6749,1560],{"class":546},[537,6751,6752],{"class":1191},"compressionEnabled",[537,6754,6130],{"class":542},[537,6756,6757,6760,6762,6764,6767,6769,6772],{"class":539,"line":2557},[537,6758,6759],{"class":546},"        ?",[537,6761,1482],{"class":1380},[537,6763,1396],{"class":546},[537,6765,6766],{"class":1399},"compress",[537,6768,1488],{"class":542},[537,6770,6771],{"class":1191},"backupData",[537,6773,1584],{"class":542},[537,6775,6776,6779,6781],{"class":539,"line":2563},[537,6777,6778],{"class":546},"        :",[537,6780,6712],{"class":1191},[537,6782,1319],{"class":546},[537,6784,6785],{"class":539,"line":2569},[537,6786,5881],{"class":542},[537,6788,6789],{"class":539,"line":2574},[537,6790,6791],{"class":1290},"      // Encrypt if enabled\n",[537,6793,6794,6796,6799,6801,6803,6805,6807],{"class":539,"line":3212},[537,6795,5843],{"class":1296},[537,6797,6798],{"class":1191}," encryptedData",[537,6800,1479],{"class":546},[537,6802,1396],{"class":546},[537,6804,5483],{"class":1191},[537,6806,1560],{"class":546},[537,6808,6809],{"class":1191},"encryptionEnabled\n",[537,6811,6812,6814,6816,6818,6821,6823,6826],{"class":539,"line":3226},[537,6813,6759],{"class":546},[537,6815,1482],{"class":1380},[537,6817,1396],{"class":546},[537,6819,6820],{"class":1399},"encrypt",[537,6822,1488],{"class":542},[537,6824,6825],{"class":1191},"compressedData",[537,6827,1584],{"class":542},[537,6829,6830,6832,6834],{"class":539,"line":3244},[537,6831,6778],{"class":546},[537,6833,6741],{"class":1191},[537,6835,1319],{"class":546},[537,6837,6838],{"class":539,"line":3251},[537,6839,5881],{"class":542},[537,6841,6842],{"class":539,"line":3259},[537,6843,6844],{"class":1290},"      // Store backup\n",[537,6846,6847,6849,6852,6854,6856,6858,6861,6863,6866,6868,6870,6872],{"class":539,"line":3290},[537,6848,5843],{"class":1296},[537,6850,6851],{"class":1191}," backupUrl",[537,6853,1479],{"class":546},[537,6855,1482],{"class":1380},[537,6857,1396],{"class":546},[537,6859,6860],{"class":1399},"storeBackup",[537,6862,1488],{"class":542},[537,6864,6865],{"class":1191},"backupId",[537,6867,1499],{"class":546},[537,6869,6798],{"class":1191},[537,6871,1593],{"class":542},[537,6873,1319],{"class":546},[537,6875,6876],{"class":539,"line":3295},[537,6877,5881],{"class":542},[537,6879,6880],{"class":539,"line":3300},[537,6881,6882],{"class":1290},"      // Update backup registry\n",[537,6884,6885,6887,6889,6892,6894,6896,6898,6900,6902,6904,6906],{"class":539,"line":3340},[537,6886,1410],{"class":1380},[537,6888,1396],{"class":546},[537,6890,6891],{"class":1399},"updateBackupRegistry",[537,6893,1488],{"class":542},[537,6895,6865],{"class":1191},[537,6897,1499],{"class":546},[537,6899,6851],{"class":1191},[537,6901,1499],{"class":546},[537,6903,6619],{"class":1191},[537,6905,1593],{"class":542},[537,6907,1319],{"class":546},[537,6909,6910],{"class":539,"line":3357},[537,6911,5881],{"class":542},[537,6913,6914],{"class":539,"line":3384},[537,6915,6916],{"class":1290},"      // Clean old backups\n",[537,6918,6919,6921,6923,6926,6928],{"class":539,"line":3425},[537,6920,1410],{"class":1380},[537,6922,1396],{"class":546},[537,6924,6925],{"class":1399},"cleanupOldBackups",[537,6927,1418],{"class":542},[537,6929,1319],{"class":546},[537,6931,6932],{"class":539,"line":3430},[537,6933,5881],{"class":542},[537,6935,6936,6938,6940],{"class":539,"line":3439},[537,6937,4649],{"class":1380},[537,6939,6643],{"class":1191},[537,6941,1319],{"class":546},[537,6943,6944,6946,6948,6950,6952,6954],{"class":539,"line":3444},[537,6945,1590],{"class":546},[537,6947,3345],{"class":1380},[537,6949,1384],{"class":542},[537,6951,3350],{"class":1191},[537,6953,3133],{"class":542},[537,6955,1231],{"class":546},[537,6957,6958,6960,6962,6964,6966,6968,6971,6973,6975,6977,6979],{"class":539,"line":3469},[537,6959,4618],{"class":1191},[537,6961,1560],{"class":546},[537,6963,3350],{"class":1399},[537,6965,1488],{"class":542},[537,6967,1491],{"class":546},[537,6969,6970],{"class":558},"Backup failed:",[537,6972,1491],{"class":546},[537,6974,1499],{"class":546},[537,6976,3057],{"class":1191},[537,6978,1593],{"class":542},[537,6980,1319],{"class":546},[537,6982,6983,6986,6988],{"class":539,"line":3505},[537,6984,6985],{"class":1380},"      throw",[537,6987,3057],{"class":1191},[537,6989,1319],{"class":546},[537,6991,6992],{"class":539,"line":3511},[537,6993,1425],{"class":546},[537,6995,6996],{"class":539,"line":3517},[537,6997,1441],{"class":546},[537,6999,7000],{"class":539,"line":3522},[537,7001,595],{"emptyLinePlaceholder":594},[537,7003,7004,7006,7008,7011,7013,7015,7017,7020,7022],{"class":539,"line":3527},[537,7005,1308],{"class":1296},[537,7007,1452],{"class":1296},[537,7009,7010],{"class":542}," createBackup",[537,7012,1361],{"class":546},[537,7014,1364],{"class":1100},[537,7016,1367],{"class":546},[537,7018,7019],{"class":1100},"any",[537,7021,1373],{"class":546},[537,7023,1303],{"class":546},[537,7025,7026],{"class":539,"line":3549},[537,7027,7028],{"class":1290},"    // Export all relevant data\n",[537,7030,7031,7033,7036,7038,7040,7042,7045,7047],{"class":539,"line":3591},[537,7032,1473],{"class":1296},[537,7034,7035],{"class":1191}," users",[537,7037,1479],{"class":546},[537,7039,1482],{"class":1380},[537,7041,1396],{"class":546},[537,7043,7044],{"class":1399},"exportUsers",[537,7046,1418],{"class":542},[537,7048,1319],{"class":546},[537,7050,7051,7053,7056,7058,7060,7062,7065,7067],{"class":539,"line":3597},[537,7052,1473],{"class":1296},[537,7054,7055],{"class":1191}," sessions",[537,7057,1479],{"class":546},[537,7059,1482],{"class":1380},[537,7061,1396],{"class":546},[537,7063,7064],{"class":1399},"exportSessions",[537,7066,1418],{"class":542},[537,7068,1319],{"class":546},[537,7070,7071,7073,7076,7078,7080,7082,7085,7087],{"class":539,"line":3603},[537,7072,1473],{"class":1296},[537,7074,7075],{"class":1191}," analyses",[537,7077,1479],{"class":546},[537,7079,1482],{"class":1380},[537,7081,1396],{"class":546},[537,7083,7084],{"class":1399},"exportAnalyses",[537,7086,1418],{"class":542},[537,7088,1319],{"class":546},[537,7090,7091,7093,7096,7098,7100,7102,7105,7107],{"class":539,"line":3608},[537,7092,1473],{"class":1296},[537,7094,7095],{"class":1191}," metadata",[537,7097,1479],{"class":546},[537,7099,1482],{"class":1380},[537,7101,1396],{"class":546},[537,7103,7104],{"class":1399},"exportMetadata",[537,7106,1418],{"class":542},[537,7108,1319],{"class":546},[537,7110,7111],{"class":539,"line":3613},[537,7112,595],{"emptyLinePlaceholder":594},[537,7114,7115,7117],{"class":539,"line":3635},[537,7116,1430],{"class":1380},[537,7118,1303],{"class":546},[537,7120,7121,7124,7126,7128,7130,7132,7134,7136,7138],{"class":539,"line":3679},[537,7122,7123],{"class":542},"      timestamp",[537,7125,555],{"class":546},[537,7127,1655],{"class":546},[537,7129,1344],{"class":1399},[537,7131,1418],{"class":542},[537,7133,1560],{"class":546},[537,7135,6632],{"class":1399},[537,7137,1418],{"class":542},[537,7139,1518],{"class":546},[537,7141,7142,7145,7147,7149,7152,7154],{"class":539,"line":3685},[537,7143,7144],{"class":542},"      version",[537,7146,555],{"class":546},[537,7148,1228],{"class":546},[537,7150,7151],{"class":558},"1.0",[537,7153,1491],{"class":546},[537,7155,1518],{"class":546},[537,7157,7158,7161,7163],{"class":539,"line":3691},[537,7159,7160],{"class":542},"      data",[537,7162,555],{"class":546},[537,7164,1303],{"class":546},[537,7166,7167,7170],{"class":539,"line":3696},[537,7168,7169],{"class":1191},"        users",[537,7171,1518],{"class":546},[537,7173,7174,7177],{"class":539,"line":3701},[537,7175,7176],{"class":1191},"        sessions",[537,7178,1518],{"class":546},[537,7180,7181,7184],{"class":539,"line":3725},[537,7182,7183],{"class":1191},"        analyses",[537,7185,1518],{"class":546},[537,7187,7188],{"class":539,"line":3747},[537,7189,7190],{"class":1191},"        metadata\n",[537,7192,7193],{"class":539,"line":5015},[537,7194,5671],{"class":546},[537,7196,7197],{"class":539,"line":5033},[537,7198,7199],{"class":546},"    };\n",[537,7201,7202],{"class":539,"line":5038},[537,7203,1441],{"class":546},[537,7205,7206],{"class":539,"line":5043},[537,7207,595],{"emptyLinePlaceholder":594},[537,7209,7210,7212,7214,7217,7219,7221,7223,7225,7227,7229,7231,7234,7236,7238,7240,7242,7244],{"class":539,"line":5083},[537,7211,1308],{"class":1296},[537,7213,1452],{"class":1296},[537,7215,7216],{"class":542}," storeBackup",[537,7218,1488],{"class":546},[537,7220,6865],{"class":2068},[537,7222,555],{"class":546},[537,7224,1316],{"class":1100},[537,7226,1499],{"class":546},[537,7228,1608],{"class":2068},[537,7230,555],{"class":546},[537,7232,7233],{"class":1100}," Buffer",[537,7235,2710],{"class":546},[537,7237,1364],{"class":1100},[537,7239,1367],{"class":546},[537,7241,1370],{"class":1100},[537,7243,1373],{"class":546},[537,7245,1303],{"class":546},[537,7247,7248,7250,7252,7254,7256,7258,7261,7263],{"class":539,"line":5089},[537,7249,3120],{"class":1380},[537,7251,1384],{"class":542},[537,7253,5936],{"class":546},[537,7255,5483],{"class":1191},[537,7257,1560],{"class":546},[537,7259,7260],{"class":1191},"storageLocation",[537,7262,3133],{"class":542},[537,7264,1231],{"class":546},[537,7266,7267,7269,7271,7273,7276],{"class":539,"line":5094},[537,7268,3140],{"class":1380},[537,7270,6411],{"class":1191},[537,7272,1560],{"class":546},[537,7274,7275],{"class":1191},"S3",[537,7277,547],{"class":546},[537,7279,7280,7283,7285,7287,7290,7292,7294,7296,7298,7300],{"class":539,"line":5099},[537,7281,7282],{"class":1380},"        return",[537,7284,1482],{"class":1380},[537,7286,1396],{"class":546},[537,7288,7289],{"class":1399},"storeToS3",[537,7291,1488],{"class":542},[537,7293,6865],{"class":1191},[537,7295,1499],{"class":546},[537,7297,1608],{"class":1191},[537,7299,1593],{"class":542},[537,7301,1319],{"class":546},[537,7303,7304,7306,7308,7310,7313],{"class":539,"line":5138},[537,7305,3140],{"class":1380},[537,7307,6411],{"class":1191},[537,7309,1560],{"class":546},[537,7311,7312],{"class":1191},"AZURE_BLOB",[537,7314,547],{"class":546},[537,7316,7317,7319,7321,7323,7326,7328,7330,7332,7334,7336],{"class":539,"line":5144},[537,7318,7282],{"class":1380},[537,7320,1482],{"class":1380},[537,7322,1396],{"class":546},[537,7324,7325],{"class":1399},"storeToAzureBlob",[537,7327,1488],{"class":542},[537,7329,6865],{"class":1191},[537,7331,1499],{"class":546},[537,7333,1608],{"class":1191},[537,7335,1593],{"class":542},[537,7337,1319],{"class":546},[537,7339,7340,7342,7344,7346,7349],{"class":539,"line":5149},[537,7341,3140],{"class":1380},[537,7343,6411],{"class":1191},[537,7345,1560],{"class":546},[537,7347,7348],{"class":1191},"GOOGLE_CLOUD",[537,7350,547],{"class":546},[537,7352,7353,7355,7357,7359,7362,7364,7366,7368,7370,7372],{"class":539,"line":5154},[537,7354,7282],{"class":1380},[537,7356,1482],{"class":1380},[537,7358,1396],{"class":546},[537,7360,7361],{"class":1399},"storeToGoogleCloud",[537,7363,1488],{"class":542},[537,7365,6865],{"class":1191},[537,7367,1499],{"class":546},[537,7369,1608],{"class":1191},[537,7371,1593],{"class":542},[537,7373,1319],{"class":546},[537,7375,7376,7378],{"class":539,"line":5194},[537,7377,3254],{"class":1380},[537,7379,547],{"class":546},[537,7381,7382,7384,7386,7388,7391,7393,7395,7397,7399,7401],{"class":539,"line":5200},[537,7383,7282],{"class":1380},[537,7385,1482],{"class":1380},[537,7387,1396],{"class":546},[537,7389,7390],{"class":1399},"storeLocally",[537,7392,1488],{"class":542},[537,7394,6865],{"class":1191},[537,7396,1499],{"class":546},[537,7398,1608],{"class":1191},[537,7400,1593],{"class":542},[537,7402,1319],{"class":546},[537,7404,7405],{"class":539,"line":5205},[537,7406,1425],{"class":546},[537,7408,7409],{"class":539,"line":5210},[537,7410,1441],{"class":546},[537,7412,7413],{"class":539,"line":5240},[537,7414,595],{"emptyLinePlaceholder":594},[537,7416,7417,7419,7422,7424,7426,7428,7430,7432,7434,7436,7438,7440],{"class":539,"line":5246},[537,7418,1355],{"class":1296},[537,7420,7421],{"class":542}," restoreFromBackup",[537,7423,1488],{"class":546},[537,7425,6865],{"class":2068},[537,7427,555],{"class":546},[537,7429,1316],{"class":1100},[537,7431,2710],{"class":546},[537,7433,1364],{"class":1100},[537,7435,1367],{"class":546},[537,7437,1464],{"class":1100},[537,7439,1373],{"class":546},[537,7441,1303],{"class":546},[537,7443,7444,7446],{"class":539,"line":5251},[537,7445,4664],{"class":1380},[537,7447,1303],{"class":546},[537,7449,7451],{"class":539,"line":7450},93,[537,7452,7453],{"class":1290},"      // Retrieve backup\n",[537,7455,7457,7459,7461,7463,7465,7467,7470,7472,7474,7476],{"class":539,"line":7456},94,[537,7458,5843],{"class":1296},[537,7460,6712],{"class":1191},[537,7462,1479],{"class":546},[537,7464,1482],{"class":1380},[537,7466,1396],{"class":546},[537,7468,7469],{"class":1399},"retrieveBackup",[537,7471,1488],{"class":542},[537,7473,6865],{"class":1191},[537,7475,1593],{"class":542},[537,7477,1319],{"class":546},[537,7479,7481],{"class":539,"line":7480},95,[537,7482,5881],{"class":542},[537,7484,7486],{"class":539,"line":7485},96,[537,7487,7488],{"class":1290},"      // Decrypt if encrypted\n",[537,7490,7492,7494,7497,7499,7501,7503,7505],{"class":539,"line":7491},97,[537,7493,5843],{"class":1296},[537,7495,7496],{"class":1191}," decryptedData",[537,7498,1479],{"class":546},[537,7500,1396],{"class":546},[537,7502,5483],{"class":1191},[537,7504,1560],{"class":546},[537,7506,6809],{"class":1191},[537,7508,7510,7512,7514,7516,7519,7521,7523],{"class":539,"line":7509},98,[537,7511,6759],{"class":546},[537,7513,1482],{"class":1380},[537,7515,1396],{"class":546},[537,7517,7518],{"class":1399},"decrypt",[537,7520,1488],{"class":542},[537,7522,6771],{"class":1191},[537,7524,1584],{"class":542},[537,7526,7528,7530,7532],{"class":539,"line":7527},99,[537,7529,6778],{"class":546},[537,7531,6712],{"class":1191},[537,7533,1319],{"class":546},[537,7535,7537],{"class":539,"line":7536},100,[537,7538,5881],{"class":542},[537,7540,7542],{"class":539,"line":7541},101,[537,7543,7544],{"class":1290},"      // Decompress if compressed\n",[537,7546,7548,7550,7553,7555,7557,7559,7561],{"class":539,"line":7547},102,[537,7549,5843],{"class":1296},[537,7551,7552],{"class":1191}," decompressedData",[537,7554,1479],{"class":546},[537,7556,1396],{"class":546},[537,7558,5483],{"class":1191},[537,7560,1560],{"class":546},[537,7562,7563],{"class":1191},"compressionEnabled\n",[537,7565,7567,7569,7571,7573,7576,7578,7581],{"class":539,"line":7566},103,[537,7568,6759],{"class":546},[537,7570,1482],{"class":1380},[537,7572,1396],{"class":546},[537,7574,7575],{"class":1399},"decompress",[537,7577,1488],{"class":542},[537,7579,7580],{"class":1191},"decryptedData",[537,7582,1584],{"class":542},[537,7584,7586,7588,7590],{"class":539,"line":7585},104,[537,7587,6778],{"class":546},[537,7589,7496],{"class":1191},[537,7591,1319],{"class":546},[537,7593,7595],{"class":539,"line":7594},105,[537,7596,5881],{"class":542},[537,7598,7600],{"class":539,"line":7599},106,[537,7601,7602],{"class":1290},"      // Parse backup data\n",[537,7604,7606,7608,7611,7613,7615,7617,7619,7621,7624,7626,7628,7630],{"class":539,"line":7605},107,[537,7607,5843],{"class":1296},[537,7609,7610],{"class":1191}," backup",[537,7612,1479],{"class":546},[537,7614,1557],{"class":1191},[537,7616,1560],{"class":546},[537,7618,3103],{"class":1399},[537,7620,1488],{"class":542},[537,7622,7623],{"class":1191},"decompressedData",[537,7625,1560],{"class":546},[537,7627,2995],{"class":1399},[537,7629,4462],{"class":542},[537,7631,1319],{"class":546},[537,7633,7635],{"class":539,"line":7634},108,[537,7636,5881],{"class":542},[537,7638,7640],{"class":539,"line":7639},109,[537,7641,7642],{"class":1290},"      // Validate backup integrity\n",[537,7644,7646,7648,7650,7653,7655,7658,7660],{"class":539,"line":7645},110,[537,7647,1410],{"class":1380},[537,7649,1396],{"class":546},[537,7651,7652],{"class":1399},"validateBackup",[537,7654,1488],{"class":542},[537,7656,7657],{"class":1191},"backup",[537,7659,1593],{"class":542},[537,7661,1319],{"class":546},[537,7663,7665],{"class":539,"line":7664},111,[537,7666,5881],{"class":542},[537,7668,7670],{"class":539,"line":7669},112,[537,7671,7672],{"class":1290},"      // Restore data\n",[537,7674,7676,7678,7680,7683,7685,7687,7689,7691,7693,7696,7698],{"class":539,"line":7675},113,[537,7677,1410],{"class":1380},[537,7679,1396],{"class":546},[537,7681,7682],{"class":1399},"restoreUsers",[537,7684,1488],{"class":542},[537,7686,7657],{"class":1191},[537,7688,1560],{"class":546},[537,7690,1678],{"class":1191},[537,7692,1560],{"class":546},[537,7694,7695],{"class":1191},"users",[537,7697,1593],{"class":542},[537,7699,1319],{"class":546},[537,7701,7703,7705,7707,7710,7712,7714,7716,7718,7720,7722,7724],{"class":539,"line":7702},114,[537,7704,1410],{"class":1380},[537,7706,1396],{"class":546},[537,7708,7709],{"class":1399},"restoreSessions",[537,7711,1488],{"class":542},[537,7713,7657],{"class":1191},[537,7715,1560],{"class":546},[537,7717,1678],{"class":1191},[537,7719,1560],{"class":546},[537,7721,1927],{"class":1191},[537,7723,1593],{"class":542},[537,7725,1319],{"class":546},[537,7727,7729,7731,7733,7736,7738,7740,7742,7744,7746,7749,7751],{"class":539,"line":7728},115,[537,7730,1410],{"class":1380},[537,7732,1396],{"class":546},[537,7734,7735],{"class":1399},"restoreAnalyses",[537,7737,1488],{"class":542},[537,7739,7657],{"class":1191},[537,7741,1560],{"class":546},[537,7743,1678],{"class":1191},[537,7745,1560],{"class":546},[537,7747,7748],{"class":1191},"analyses",[537,7750,1593],{"class":542},[537,7752,1319],{"class":546},[537,7754,7756,7758,7760,7763,7765,7767,7769,7771,7773,7776,7778],{"class":539,"line":7755},116,[537,7757,1410],{"class":1380},[537,7759,1396],{"class":546},[537,7761,7762],{"class":1399},"restoreMetadata",[537,7764,1488],{"class":542},[537,7766,7657],{"class":1191},[537,7768,1560],{"class":546},[537,7770,1678],{"class":1191},[537,7772,1560],{"class":546},[537,7774,7775],{"class":1191},"metadata",[537,7777,1593],{"class":542},[537,7779,1319],{"class":546},[537,7781,7783],{"class":539,"line":7782},117,[537,7784,5881],{"class":542},[537,7786,7788,7790,7792,7794,7796,7798,7801,7803,7805,7807,7809],{"class":539,"line":7787},118,[537,7789,4618],{"class":1191},[537,7791,1560],{"class":546},[537,7793,2086],{"class":1399},[537,7795,1488],{"class":542},[537,7797,2091],{"class":546},[537,7799,7800],{"class":558},"Successfully restored from backup: ",[537,7802,2097],{"class":546},[537,7804,6865],{"class":1191},[537,7806,2142],{"class":546},[537,7808,1593],{"class":542},[537,7810,1319],{"class":546},[537,7812,7814,7816,7818,7820,7822,7824],{"class":539,"line":7813},119,[537,7815,1590],{"class":546},[537,7817,3345],{"class":1380},[537,7819,1384],{"class":542},[537,7821,3350],{"class":1191},[537,7823,3133],{"class":542},[537,7825,1231],{"class":546},[537,7827,7829,7831,7833,7835,7837,7839,7842,7844,7846,7848,7850],{"class":539,"line":7828},120,[537,7830,4618],{"class":1191},[537,7832,1560],{"class":546},[537,7834,3350],{"class":1399},[537,7836,1488],{"class":542},[537,7838,1491],{"class":546},[537,7840,7841],{"class":558},"Restore failed:",[537,7843,1491],{"class":546},[537,7845,1499],{"class":546},[537,7847,3057],{"class":1191},[537,7849,1593],{"class":542},[537,7851,1319],{"class":546},[537,7853,7855,7857,7859],{"class":539,"line":7854},121,[537,7856,6985],{"class":1380},[537,7858,3057],{"class":1191},[537,7860,1319],{"class":546},[537,7862,7864],{"class":539,"line":7863},122,[537,7865,1425],{"class":546},[537,7867,7869],{"class":539,"line":7868},123,[537,7870,1441],{"class":546},[537,7872,7874],{"class":539,"line":7873},124,[537,7875,1751],{"class":546},[512,7877,7879],{"id":7878},"security-integration-requirements","Security Integration Requirements",[517,7881,7883],{"id":7882},"data-encryption","Data Encryption",[522,7885,7887],{"id":7886},"client-side-encryption","Client-Side Encryption",[527,7889,7891],{"className":1281,"code":7890,"language":1283,"meta":532,"style":532},"import crypto from 'crypto';\n\nclass ClientEncryption {\n  private encryptionKey: Buffer;\n\n  constructor(keyBase64: string) {\n    this.encryptionKey = Buffer.from(keyBase64, 'base64');\n  }\n\n  encryptSensitiveData(data: string): string {\n    const iv = crypto.randomBytes(16);\n    const cipher = crypto.createCipher('aes-256-gcm', this.encryptionKey);\n    cipher.setAAD(Buffer.from('mindpeeker-data'));\n    \n    let encrypted = cipher.update(data, 'utf8', 'hex');\n    encrypted += cipher.final('hex');\n    \n    const authTag = cipher.getAuthTag();\n    \n    return JSON.stringify({\n      iv: iv.toString('hex'),\n      encrypted,\n      authTag: authTag.toString('hex')\n    });\n  }\n\n  decryptSensitiveData(encryptedData: string): string {\n    const { iv, encrypted, authTag } = JSON.parse(encryptedData);\n    \n    const decipher = crypto.createDecipher('aes-256-gcm', this.encryptionKey);\n    decipher.setAAD(Buffer.from('mindpeeker-data'));\n    decipher.setAuthTag(Buffer.from(authTag, 'hex'));\n    \n    let decrypted = decipher.update(encrypted, 'hex', 'utf8');\n    decrypted += decipher.final('utf8');\n    \n    return decrypted;\n  }\n}\n\n// Usage example\nconst encryption = new ClientEncryption(process.env.ENCRYPTION_KEY);\n\n// Encrypt sensitive cue data before sending\nconst sensitiveCue = \"Private investigation details about case #12345\";\nconst encryptedCue = encryption.encryptSensitiveData(sensitiveCue);\n\n// Send to API\nawait client.sessions.create({\n  cue: encryptedCue,\n  session_type: 'remote_viewing',\n  metadata: { encrypted: true }\n});\n",[534,7892,7893,7909,7913,7922,7934,7938,7955,7986,7990,7994,8013,8038,8073,8105,8109,8150,8177,8181,8201,8205,8219,8244,8251,8274,8282,8286,8290,8310,8344,8348,8382,8411,8445,8449,8489,8514,8518,8526,8530,8534,8538,8543,8570,8574,8579,8597,8619,8623,8628,8647,8658,8672,8690],{"__ignoreMap":532},[537,7894,7895,7897,7899,7901,7903,7905,7907],{"class":539,"line":82},[537,7896,1800],{"class":1380},[537,7898,2600],{"class":1191},[537,7900,2603],{"class":1380},[537,7902,1228],{"class":546},[537,7904,2608],{"class":558},[537,7906,1491],{"class":546},[537,7908,1319],{"class":546},[537,7910,7911],{"class":539,"line":114},[537,7912,595],{"emptyLinePlaceholder":594},[537,7914,7915,7917,7920],{"class":539,"line":146},[537,7916,1297],{"class":1296},[537,7918,7919],{"class":1100}," ClientEncryption",[537,7921,1303],{"class":546},[537,7923,7924,7926,7928,7930,7932],{"class":539,"line":178},[537,7925,1308],{"class":1296},[537,7927,6526],{"class":542},[537,7929,555],{"class":546},[537,7931,7233],{"class":1100},[537,7933,1319],{"class":546},[537,7935,7936],{"class":539,"line":268},[537,7937,595],{"emptyLinePlaceholder":594},[537,7939,7940,7942,7944,7947,7949,7951,7953],{"class":539,"line":273},[537,7941,4344],{"class":1296},[537,7943,1488],{"class":546},[537,7945,7946],{"class":2068},"keyBase64",[537,7948,555],{"class":546},[537,7950,1316],{"class":1100},[537,7952,1593],{"class":546},[537,7954,1303],{"class":546},[537,7956,7957,7959,7961,7963,7965,7967,7969,7971,7973,7975,7977,7980,7982,7984],{"class":539,"line":279},[537,7958,1629],{"class":546},[537,7960,6579],{"class":1191},[537,7962,1479],{"class":546},[537,7964,7233],{"class":1191},[537,7966,1560],{"class":546},[537,7968,2603],{"class":1399},[537,7970,1488],{"class":542},[537,7972,7946],{"class":1191},[537,7974,1499],{"class":546},[537,7976,1228],{"class":546},[537,7978,7979],{"class":558},"base64",[537,7981,1491],{"class":546},[537,7983,1593],{"class":542},[537,7985,1319],{"class":546},[537,7987,7988],{"class":539,"line":285},[537,7989,1441],{"class":546},[537,7991,7992],{"class":539,"line":291},[537,7993,595],{"emptyLinePlaceholder":594},[537,7995,7996,7999,8001,8003,8005,8007,8009,8011],{"class":539,"line":222},[537,7997,7998],{"class":542},"  encryptSensitiveData",[537,8000,1488],{"class":546},[537,8002,1678],{"class":2068},[537,8004,555],{"class":546},[537,8006,1316],{"class":1100},[537,8008,2710],{"class":546},[537,8010,1316],{"class":1100},[537,8012,1303],{"class":546},[537,8014,8015,8017,8020,8022,8024,8026,8029,8031,8034,8036],{"class":539,"line":227},[537,8016,1473],{"class":1296},[537,8018,8019],{"class":1191}," iv",[537,8021,1479],{"class":546},[537,8023,2796],{"class":1191},[537,8025,1560],{"class":546},[537,8027,8028],{"class":1399},"randomBytes",[537,8030,1488],{"class":542},[537,8032,8033],{"class":1689},"16",[537,8035,1593],{"class":542},[537,8037,1319],{"class":546},[537,8039,8040,8042,8045,8047,8049,8051,8054,8056,8058,8061,8063,8065,8067,8069,8071],{"class":539,"line":232},[537,8041,1473],{"class":1296},[537,8043,8044],{"class":1191}," cipher",[537,8046,1479],{"class":546},[537,8048,2796],{"class":1191},[537,8050,1560],{"class":546},[537,8052,8053],{"class":1399},"createCipher",[537,8055,1488],{"class":542},[537,8057,1491],{"class":546},[537,8059,8060],{"class":558},"aes-256-gcm",[537,8062,1491],{"class":546},[537,8064,1499],{"class":546},[537,8066,1396],{"class":546},[537,8068,6579],{"class":1191},[537,8070,1593],{"class":542},[537,8072,1319],{"class":546},[537,8074,8075,8078,8080,8083,8085,8088,8090,8092,8094,8096,8099,8101,8103],{"class":539,"line":238},[537,8076,8077],{"class":1191},"    cipher",[537,8079,1560],{"class":546},[537,8081,8082],{"class":1399},"setAAD",[537,8084,1488],{"class":542},[537,8086,8087],{"class":1191},"Buffer",[537,8089,1560],{"class":546},[537,8091,2603],{"class":1399},[537,8093,1488],{"class":542},[537,8095,1491],{"class":546},[537,8097,8098],{"class":558},"mindpeeker-data",[537,8100,1491],{"class":546},[537,8102,1693],{"class":542},[537,8104,1319],{"class":546},[537,8106,8107],{"class":539,"line":243},[537,8108,2285],{"class":542},[537,8110,8111,8114,8117,8119,8121,8123,8125,8127,8129,8131,8133,8136,8138,8140,8142,8144,8146,8148],{"class":539,"line":248},[537,8112,8113],{"class":1296},"    let",[537,8115,8116],{"class":1191}," encrypted",[537,8118,1479],{"class":546},[537,8120,8044],{"class":1191},[537,8122,1560],{"class":546},[537,8124,2069],{"class":1399},[537,8126,1488],{"class":542},[537,8128,1678],{"class":1191},[537,8130,1499],{"class":546},[537,8132,1228],{"class":546},[537,8134,8135],{"class":558},"utf8",[537,8137,1491],{"class":546},[537,8139,1499],{"class":546},[537,8141,1228],{"class":546},[537,8143,2777],{"class":558},[537,8145,1491],{"class":546},[537,8147,1593],{"class":542},[537,8149,1319],{"class":546},[537,8151,8152,8155,8158,8160,8162,8165,8167,8169,8171,8173,8175],{"class":539,"line":671},[537,8153,8154],{"class":1191},"    encrypted",[537,8156,8157],{"class":546}," +=",[537,8159,8044],{"class":1191},[537,8161,1560],{"class":546},[537,8163,8164],{"class":1399},"final",[537,8166,1488],{"class":542},[537,8168,1491],{"class":546},[537,8170,2777],{"class":558},[537,8172,1491],{"class":546},[537,8174,1593],{"class":542},[537,8176,1319],{"class":546},[537,8178,8179],{"class":539,"line":681},[537,8180,2285],{"class":542},[537,8182,8183,8185,8188,8190,8192,8194,8197,8199],{"class":539,"line":814},[537,8184,1473],{"class":1296},[537,8186,8187],{"class":1191}," authTag",[537,8189,1479],{"class":546},[537,8191,8044],{"class":1191},[537,8193,1560],{"class":546},[537,8195,8196],{"class":1399},"getAuthTag",[537,8198,1418],{"class":542},[537,8200,1319],{"class":546},[537,8202,8203],{"class":539,"line":1587},[537,8204,2285],{"class":542},[537,8206,8207,8209,8211,8213,8215,8217],{"class":539,"line":1598},[537,8208,1430],{"class":1380},[537,8210,1557],{"class":1191},[537,8212,1560],{"class":546},[537,8214,1563],{"class":1399},[537,8216,1488],{"class":542},[537,8218,1231],{"class":546},[537,8220,8221,8224,8226,8228,8230,8232,8234,8236,8238,8240,8242],{"class":539,"line":1603},[537,8222,8223],{"class":542},"      iv",[537,8225,555],{"class":546},[537,8227,8019],{"class":1191},[537,8229,1560],{"class":546},[537,8231,2995],{"class":1399},[537,8233,1488],{"class":542},[537,8235,1491],{"class":546},[537,8237,2777],{"class":558},[537,8239,1491],{"class":546},[537,8241,1593],{"class":542},[537,8243,1518],{"class":546},[537,8245,8246,8249],{"class":539,"line":1626},[537,8247,8248],{"class":1191},"      encrypted",[537,8250,1518],{"class":546},[537,8252,8253,8256,8258,8260,8262,8264,8266,8268,8270,8272],{"class":539,"line":1645},[537,8254,8255],{"class":542},"      authTag",[537,8257,555],{"class":546},[537,8259,8187],{"class":1191},[537,8261,1560],{"class":546},[537,8263,2995],{"class":1399},[537,8265,1488],{"class":542},[537,8267,1491],{"class":546},[537,8269,2777],{"class":558},[537,8271,1491],{"class":546},[537,8273,1584],{"class":542},[537,8275,8276,8278,8280],{"class":539,"line":1698},[537,8277,1590],{"class":546},[537,8279,1593],{"class":542},[537,8281,1319],{"class":546},[537,8283,8284],{"class":539,"line":1703},[537,8285,1441],{"class":546},[537,8287,8288],{"class":539,"line":1708},[537,8289,595],{"emptyLinePlaceholder":594},[537,8291,8292,8295,8297,8300,8302,8304,8306,8308],{"class":539,"line":1723},[537,8293,8294],{"class":542},"  decryptSensitiveData",[537,8296,1488],{"class":546},[537,8298,8299],{"class":2068},"encryptedData",[537,8301,555],{"class":546},[537,8303,1316],{"class":1100},[537,8305,2710],{"class":546},[537,8307,1316],{"class":1100},[537,8309,1303],{"class":546},[537,8311,8312,8314,8316,8318,8320,8322,8324,8326,8328,8330,8332,8334,8336,8338,8340,8342],{"class":539,"line":1743},[537,8313,1473],{"class":1296},[537,8315,1528],{"class":546},[537,8317,8019],{"class":1191},[537,8319,1499],{"class":546},[537,8321,8116],{"class":1191},[537,8323,1499],{"class":546},[537,8325,8187],{"class":1191},[537,8327,1581],{"class":546},[537,8329,1479],{"class":546},[537,8331,1557],{"class":1191},[537,8333,1560],{"class":546},[537,8335,3103],{"class":1399},[537,8337,1488],{"class":542},[537,8339,8299],{"class":1191},[537,8341,1593],{"class":542},[537,8343,1319],{"class":546},[537,8345,8346],{"class":539,"line":1748},[537,8347,2285],{"class":542},[537,8349,8350,8352,8355,8357,8359,8361,8364,8366,8368,8370,8372,8374,8376,8378,8380],{"class":539,"line":2166},[537,8351,1473],{"class":1296},[537,8353,8354],{"class":1191}," decipher",[537,8356,1479],{"class":546},[537,8358,2796],{"class":1191},[537,8360,1560],{"class":546},[537,8362,8363],{"class":1399},"createDecipher",[537,8365,1488],{"class":542},[537,8367,1491],{"class":546},[537,8369,8060],{"class":558},[537,8371,1491],{"class":546},[537,8373,1499],{"class":546},[537,8375,1396],{"class":546},[537,8377,6579],{"class":1191},[537,8379,1593],{"class":542},[537,8381,1319],{"class":546},[537,8383,8384,8387,8389,8391,8393,8395,8397,8399,8401,8403,8405,8407,8409],{"class":539,"line":2198},[537,8385,8386],{"class":1191},"    decipher",[537,8388,1560],{"class":546},[537,8390,8082],{"class":1399},[537,8392,1488],{"class":542},[537,8394,8087],{"class":1191},[537,8396,1560],{"class":546},[537,8398,2603],{"class":1399},[537,8400,1488],{"class":542},[537,8402,1491],{"class":546},[537,8404,8098],{"class":558},[537,8406,1491],{"class":546},[537,8408,1693],{"class":542},[537,8410,1319],{"class":546},[537,8412,8413,8415,8417,8420,8422,8424,8426,8428,8430,8433,8435,8437,8439,8441,8443],{"class":539,"line":2540},[537,8414,8386],{"class":1191},[537,8416,1560],{"class":546},[537,8418,8419],{"class":1399},"setAuthTag",[537,8421,1488],{"class":542},[537,8423,8087],{"class":1191},[537,8425,1560],{"class":546},[537,8427,2603],{"class":1399},[537,8429,1488],{"class":542},[537,8431,8432],{"class":1191},"authTag",[537,8434,1499],{"class":546},[537,8436,1228],{"class":546},[537,8438,2777],{"class":558},[537,8440,1491],{"class":546},[537,8442,1693],{"class":542},[537,8444,1319],{"class":546},[537,8446,8447],{"class":539,"line":2546},[537,8448,2285],{"class":542},[537,8450,8451,8453,8456,8458,8460,8462,8464,8466,8469,8471,8473,8475,8477,8479,8481,8483,8485,8487],{"class":539,"line":2551},[537,8452,8113],{"class":1296},[537,8454,8455],{"class":1191}," decrypted",[537,8457,1479],{"class":546},[537,8459,8354],{"class":1191},[537,8461,1560],{"class":546},[537,8463,2069],{"class":1399},[537,8465,1488],{"class":542},[537,8467,8468],{"class":1191},"encrypted",[537,8470,1499],{"class":546},[537,8472,1228],{"class":546},[537,8474,2777],{"class":558},[537,8476,1491],{"class":546},[537,8478,1499],{"class":546},[537,8480,1228],{"class":546},[537,8482,8135],{"class":558},[537,8484,1491],{"class":546},[537,8486,1593],{"class":542},[537,8488,1319],{"class":546},[537,8490,8491,8494,8496,8498,8500,8502,8504,8506,8508,8510,8512],{"class":539,"line":2557},[537,8492,8493],{"class":1191},"    decrypted",[537,8495,8157],{"class":546},[537,8497,8354],{"class":1191},[537,8499,1560],{"class":546},[537,8501,8164],{"class":1399},[537,8503,1488],{"class":542},[537,8505,1491],{"class":546},[537,8507,8135],{"class":558},[537,8509,1491],{"class":546},[537,8511,1593],{"class":542},[537,8513,1319],{"class":546},[537,8515,8516],{"class":539,"line":2563},[537,8517,2285],{"class":542},[537,8519,8520,8522,8524],{"class":539,"line":2569},[537,8521,1430],{"class":1380},[537,8523,8455],{"class":1191},[537,8525,1319],{"class":546},[537,8527,8528],{"class":539,"line":2574},[537,8529,1441],{"class":546},[537,8531,8532],{"class":539,"line":3212},[537,8533,1751],{"class":546},[537,8535,8536],{"class":539,"line":3226},[537,8537,595],{"emptyLinePlaceholder":594},[537,8539,8540],{"class":539,"line":3244},[537,8541,8542],{"class":1290},"// Usage example\n",[537,8544,8545,8547,8550,8552,8554,8556,8559,8561,8563,8565,8568],{"class":539,"line":3251},[537,8546,1828],{"class":1296},[537,8548,8549],{"class":1191}," encryption ",[537,8551,1834],{"class":546},[537,8553,1655],{"class":546},[537,8555,7919],{"class":1399},[537,8557,8558],{"class":1191},"(process",[537,8560,1560],{"class":546},[537,8562,1857],{"class":1191},[537,8564,1560],{"class":546},[537,8566,8567],{"class":1191},"ENCRYPTION_KEY)",[537,8569,1319],{"class":546},[537,8571,8572],{"class":539,"line":3259},[537,8573,595],{"emptyLinePlaceholder":594},[537,8575,8576],{"class":539,"line":3290},[537,8577,8578],{"class":1290},"// Encrypt sensitive cue data before sending\n",[537,8580,8581,8583,8586,8588,8590,8593,8595],{"class":539,"line":3295},[537,8582,1828],{"class":1296},[537,8584,8585],{"class":1191}," sensitiveCue ",[537,8587,1834],{"class":546},[537,8589,1130],{"class":546},[537,8591,8592],{"class":558},"Private investigation details about case #12345",[537,8594,1205],{"class":546},[537,8596,1319],{"class":546},[537,8598,8599,8601,8604,8606,8609,8611,8614,8617],{"class":539,"line":3300},[537,8600,1828],{"class":1296},[537,8602,8603],{"class":1191}," encryptedCue ",[537,8605,1834],{"class":546},[537,8607,8608],{"class":1191}," encryption",[537,8610,1560],{"class":546},[537,8612,8613],{"class":1399},"encryptSensitiveData",[537,8615,8616],{"class":1191},"(sensitiveCue)",[537,8618,1319],{"class":546},[537,8620,8621],{"class":539,"line":3340},[537,8622,595],{"emptyLinePlaceholder":594},[537,8624,8625],{"class":539,"line":3357},[537,8626,8627],{"class":1290},"// Send to API\n",[537,8629,8630,8633,8635,8637,8639,8641,8643,8645],{"class":539,"line":3384},[537,8631,8632],{"class":1380},"await",[537,8634,1922],{"class":1191},[537,8636,1560],{"class":546},[537,8638,1927],{"class":1191},[537,8640,1560],{"class":546},[537,8642,1932],{"class":1399},[537,8644,1488],{"class":1191},[537,8646,1231],{"class":546},[537,8648,8649,8651,8653,8656],{"class":539,"line":3425},[537,8650,1941],{"class":542},[537,8652,555],{"class":546},[537,8654,8655],{"class":1191}," encryptedCue",[537,8657,1518],{"class":546},[537,8659,8660,8662,8664,8666,8668,8670],{"class":539,"line":3430},[537,8661,1957],{"class":542},[537,8663,555],{"class":546},[537,8665,1228],{"class":546},[537,8667,1964],{"class":558},[537,8669,1491],{"class":546},[537,8671,1518],{"class":546},[537,8673,8674,8677,8679,8681,8683,8685,8687],{"class":539,"line":3439},[537,8675,8676],{"class":542},"  metadata",[537,8678,555],{"class":546},[537,8680,1528],{"class":546},[537,8682,8116],{"class":542},[537,8684,555],{"class":546},[537,8686,3331],{"class":3330},[537,8688,8689],{"class":546}," }\n",[537,8691,8692,8694,8696],{"class":539,"line":3444},[537,8693,1895],{"class":546},[537,8695,1593],{"class":1191},[537,8697,1319],{"class":546},[517,8699,8701],{"id":8700},"access-control-integration","Access Control Integration",[522,8703,8705],{"id":8704},"role-based-access-control-rbac","Role-Based Access Control (RBAC)",[527,8707,8709],{"className":1281,"code":8708,"language":1283,"meta":532,"style":532},"interface Role {\n  id: string;\n  name: string;\n  permissions: Permission[];\n  conditions?: AccessCondition[];\n}\n\ninterface Permission {\n  resource: string;\n  actions: string[];\n  conditions?: AccessCondition[];\n}\n\ninterface AccessCondition {\n  field: string;\n  operator: 'eq' | 'ne' | 'in' | 'not_in' | 'gt' | 'lt';\n  value: any;\n}\n\nclass AccessControlManager {\n  private roles: Map\u003Cstring, Role>;\n  private userRoles: Map\u003Cstring, string[]>;\n\n  constructor() {\n    this.roles = new Map();\n    this.userRoles = new Map();\n    this.loadRoles();\n  }\n\n  async checkPermission(\n    userId: string, \n    resource: string, \n    action: string, \n    context?: any\n  ): Promise\u003Cboolean> {\n    const userRoleIds = this.userRoles.get(userId) || [];\n    \n    for (const roleId of userRoleIds) {\n      const role = this.roles.get(roleId);\n      if (!role) continue;\n\n      for (const permission of role.permissions) {\n        if (this.matchesPermission(permission, resource, action, context)) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  private matchesPermission(\n    permission: Permission, \n    resource: string, \n    action: string, \n    context?: any\n  ): boolean {\n    // Check resource match\n    if (!this.matchesResource(permission.resource, resource)) {\n      return false;\n    }\n\n    // Check action match\n    if (!permission.actions.includes(action) && !permission.actions.includes('*')) {\n      return false;\n    }\n\n    // Check conditions\n    if (permission.conditions && context) {\n      return this.evaluateConditions(permission.conditions, context);\n    }\n\n    return true;\n  }\n\n  private matchesResource(permissionResource: string, actualResource: string): boolean {\n    if (permissionResource === '*') return true;\n    if (permissionResource === actualResource) return true;\n    \n    // Support wildcard patterns like 'sessions.*'\n    const pattern = permissionResource.replace('*', '.*');\n    const regex = new RegExp(`^${pattern}$`);\n    return regex.test(actualResource);\n  }\n\n  private evaluateConditions(conditions: AccessCondition[], context: any): boolean {\n    return conditions.every(condition => {\n      const contextValue = this.getNestedValue(context, condition.field);\n      \n      switch (condition.operator) {\n        case 'eq':\n          return contextValue === condition.value;\n        case 'ne':\n          return contextValue !== condition.value;\n        case 'in':\n          return Array.isArray(condition.value) && condition.value.includes(contextValue);\n        case 'not_in':\n          return Array.isArray(condition.value) && !condition.value.includes(contextValue);\n        case 'gt':\n          return contextValue > condition.value;\n        case 'lt':\n          return contextValue \u003C condition.value;\n        default:\n          return false;\n      }\n    });\n  }\n\n  private getNestedValue(obj: any, path: string): any {\n    return path.split('.').reduce((current, key) => current?.[key], obj);\n  }\n}\n\n// Middleware for API protection\nfunction requirePermission(resource: string, action: string) {\n  return async (req: any, res: any, next: any) => {\n    const userId = req.user.id;\n    const accessControl = new AccessControlManager();\n    \n    const hasPermission = await accessControl.checkPermission(\n      userId, \n      resource, \n      action, \n      {\n        sessionId: req.params.sessionId,\n        userId: req.params.userId,\n        organization: req.user.organization\n      }\n    );\n\n    if (!hasPermission) {\n      return res.status(403).json({ error: 'Insufficient permissions' });\n    }\n\n    next();\n  };\n}\n\n// Usage in API routes\napp.get('/sessions/:sessionId', \n  authenticateUser,\n  requirePermission('sessions', 'read'),\n  async (req, res) => {\n    // Session retrieval logic\n  }\n);\n",[534,8710,8711,8720,8730,8741,8756,8771,8775,8779,8787,8798,8811,8823,8827,8831,8839,8850,8912,8923,8927,8931,8940,8961,8984,8988,8996,9013,9030,9041,9045,9049,9058,9071,9084,9097,9107,9123,9154,9158,9177,9203,9221,9225,9250,9286,9295,9299,9303,9307,9311,9320,9324,9328,9337,9350,9362,9374,9382,9390,9395,9423,9431,9435,9439,9444,9500,9508,9512,9516,9521,9542,9567,9571,9575,9583,9587,9591,9622,9648,9668,9672,9677,9714,9751,9771,9775,9779,9810,9831,9864,9868,9886,9899,9916,9928,9944,9956,9999,10011,10053,10065,10082,10094,10111,10118,10126,10130,10138,10142,10146,10177,10242,10246,10250,10254,10259,10286,10323,10345,10362,10366,10386,10395,10404,10413,10418,10439,10459,10478,10483,10491,10496,10512,10555,10560,10565,10575,10581,10586,10591,10597,10619,10627,10654,10673,10679,10684],{"__ignoreMap":532},[537,8712,8713,8715,8718],{"class":539,"line":82},[537,8714,4048],{"class":1296},[537,8716,8717],{"class":1100}," Role",[537,8719,1303],{"class":546},[537,8721,8722,8724,8726,8728],{"class":539,"line":114},[537,8723,4058],{"class":542},[537,8725,555],{"class":546},[537,8727,1316],{"class":1100},[537,8729,1319],{"class":546},[537,8731,8732,8735,8737,8739],{"class":539,"line":146},[537,8733,8734],{"class":542},"  name",[537,8736,555],{"class":546},[537,8738,1316],{"class":1100},[537,8740,1319],{"class":546},[537,8742,8743,8746,8748,8751,8754],{"class":539,"line":178},[537,8744,8745],{"class":542},"  permissions",[537,8747,555],{"class":546},[537,8749,8750],{"class":1100}," Permission",[537,8752,8753],{"class":1191},"[]",[537,8755,1319],{"class":546},[537,8757,8758,8761,8764,8767,8769],{"class":539,"line":268},[537,8759,8760],{"class":542},"  conditions",[537,8762,8763],{"class":546},"?:",[537,8765,8766],{"class":1100}," AccessCondition",[537,8768,8753],{"class":1191},[537,8770,1319],{"class":546},[537,8772,8773],{"class":539,"line":273},[537,8774,1751],{"class":546},[537,8776,8777],{"class":539,"line":279},[537,8778,595],{"emptyLinePlaceholder":594},[537,8780,8781,8783,8785],{"class":539,"line":285},[537,8782,4048],{"class":1296},[537,8784,8750],{"class":1100},[537,8786,1303],{"class":546},[537,8788,8789,8792,8794,8796],{"class":539,"line":291},[537,8790,8791],{"class":542},"  resource",[537,8793,555],{"class":546},[537,8795,1316],{"class":1100},[537,8797,1319],{"class":546},[537,8799,8800,8803,8805,8807,8809],{"class":539,"line":222},[537,8801,8802],{"class":542},"  actions",[537,8804,555],{"class":546},[537,8806,1316],{"class":1100},[537,8808,8753],{"class":1191},[537,8810,1319],{"class":546},[537,8812,8813,8815,8817,8819,8821],{"class":539,"line":227},[537,8814,8760],{"class":542},[537,8816,8763],{"class":546},[537,8818,8766],{"class":1100},[537,8820,8753],{"class":1191},[537,8822,1319],{"class":546},[537,8824,8825],{"class":539,"line":232},[537,8826,1751],{"class":546},[537,8828,8829],{"class":539,"line":238},[537,8830,595],{"emptyLinePlaceholder":594},[537,8832,8833,8835,8837],{"class":539,"line":243},[537,8834,4048],{"class":1296},[537,8836,8766],{"class":1100},[537,8838,1303],{"class":546},[537,8840,8841,8844,8846,8848],{"class":539,"line":248},[537,8842,8843],{"class":542},"  field",[537,8845,555],{"class":546},[537,8847,1316],{"class":1100},[537,8849,1319],{"class":546},[537,8851,8852,8855,8857,8859,8862,8864,8867,8869,8872,8874,8876,8878,8881,8883,8885,8887,8890,8892,8894,8896,8899,8901,8903,8905,8908,8910],{"class":539,"line":671},[537,8853,8854],{"class":542},"  operator",[537,8856,555],{"class":546},[537,8858,1228],{"class":546},[537,8860,8861],{"class":558},"eq",[537,8863,1491],{"class":546},[537,8865,8866],{"class":546}," |",[537,8868,1228],{"class":546},[537,8870,8871],{"class":558},"ne",[537,8873,1491],{"class":546},[537,8875,8866],{"class":546},[537,8877,1228],{"class":546},[537,8879,8880],{"class":558},"in",[537,8882,1491],{"class":546},[537,8884,8866],{"class":546},[537,8886,1228],{"class":546},[537,8888,8889],{"class":558},"not_in",[537,8891,1491],{"class":546},[537,8893,8866],{"class":546},[537,8895,1228],{"class":546},[537,8897,8898],{"class":558},"gt",[537,8900,1491],{"class":546},[537,8902,8866],{"class":546},[537,8904,1228],{"class":546},[537,8906,8907],{"class":558},"lt",[537,8909,1491],{"class":546},[537,8911,1319],{"class":546},[537,8913,8914,8917,8919,8921],{"class":539,"line":681},[537,8915,8916],{"class":542},"  value",[537,8918,555],{"class":546},[537,8920,3462],{"class":1100},[537,8922,1319],{"class":546},[537,8924,8925],{"class":539,"line":814},[537,8926,1751],{"class":546},[537,8928,8929],{"class":539,"line":1587},[537,8930,595],{"emptyLinePlaceholder":594},[537,8932,8933,8935,8938],{"class":539,"line":1598},[537,8934,1297],{"class":1296},[537,8936,8937],{"class":1100}," AccessControlManager",[537,8939,1303],{"class":546},[537,8941,8942,8944,8947,8949,8951,8953,8955,8957,8959],{"class":539,"line":1603},[537,8943,1308],{"class":1296},[537,8945,8946],{"class":542}," roles",[537,8948,555],{"class":546},[537,8950,4294],{"class":1100},[537,8952,1367],{"class":546},[537,8954,1370],{"class":1100},[537,8956,1499],{"class":546},[537,8958,8717],{"class":1100},[537,8960,4307],{"class":546},[537,8962,8963,8965,8968,8970,8972,8974,8976,8978,8980,8982],{"class":539,"line":1626},[537,8964,1308],{"class":1296},[537,8966,8967],{"class":542}," userRoles",[537,8969,555],{"class":546},[537,8971,4294],{"class":1100},[537,8973,1367],{"class":546},[537,8975,1370],{"class":1100},[537,8977,1499],{"class":546},[537,8979,1316],{"class":1100},[537,8981,8753],{"class":1191},[537,8983,4307],{"class":546},[537,8985,8986],{"class":539,"line":1645},[537,8987,595],{"emptyLinePlaceholder":594},[537,8989,8990,8992,8994],{"class":539,"line":1698},[537,8991,4344],{"class":1296},[537,8993,1418],{"class":546},[537,8995,1303],{"class":546},[537,8997,8998,9000,9003,9005,9007,9009,9011],{"class":539,"line":1703},[537,8999,1629],{"class":546},[537,9001,9002],{"class":1191},"roles",[537,9004,1479],{"class":546},[537,9006,1655],{"class":546},[537,9008,4294],{"class":1399},[537,9010,1418],{"class":542},[537,9012,1319],{"class":546},[537,9014,9015,9017,9020,9022,9024,9026,9028],{"class":539,"line":1708},[537,9016,1629],{"class":546},[537,9018,9019],{"class":1191},"userRoles",[537,9021,1479],{"class":546},[537,9023,1655],{"class":546},[537,9025,4294],{"class":1399},[537,9027,1418],{"class":542},[537,9029,1319],{"class":546},[537,9031,9032,9034,9037,9039],{"class":539,"line":1723},[537,9033,1629],{"class":546},[537,9035,9036],{"class":1399},"loadRoles",[537,9038,1418],{"class":542},[537,9040,1319],{"class":546},[537,9042,9043],{"class":539,"line":1743},[537,9044,1441],{"class":546},[537,9046,9047],{"class":539,"line":1748},[537,9048,595],{"emptyLinePlaceholder":594},[537,9050,9051,9053,9056],{"class":539,"line":2166},[537,9052,1355],{"class":1296},[537,9054,9055],{"class":542}," checkPermission",[537,9057,2804],{"class":546},[537,9059,9060,9063,9065,9067,9069],{"class":539,"line":2198},[537,9061,9062],{"class":2068},"    userId",[537,9064,555],{"class":546},[537,9066,1316],{"class":1100},[537,9068,1499],{"class":546},[537,9070,6130],{"class":1191},[537,9072,9073,9076,9078,9080,9082],{"class":539,"line":2540},[537,9074,9075],{"class":2068},"    resource",[537,9077,555],{"class":546},[537,9079,1316],{"class":1100},[537,9081,1499],{"class":546},[537,9083,6130],{"class":1191},[537,9085,9086,9089,9091,9093,9095],{"class":539,"line":2546},[537,9087,9088],{"class":2068},"    action",[537,9090,555],{"class":546},[537,9092,1316],{"class":1100},[537,9094,1499],{"class":546},[537,9096,6130],{"class":1191},[537,9098,9099,9102,9104],{"class":539,"line":2551},[537,9100,9101],{"class":2068},"    context",[537,9103,8763],{"class":546},[537,9105,9106],{"class":1100}," any\n",[537,9108,9109,9112,9114,9116,9119,9121],{"class":539,"line":2557},[537,9110,9111],{"class":546},"  ):",[537,9113,1364],{"class":1100},[537,9115,1367],{"class":546},[537,9117,9118],{"class":1100},"boolean",[537,9120,1373],{"class":546},[537,9122,1303],{"class":546},[537,9124,9125,9127,9130,9132,9134,9136,9138,9140,9142,9144,9146,9149,9152],{"class":539,"line":2563},[537,9126,1473],{"class":1296},[537,9128,9129],{"class":1191}," userRoleIds",[537,9131,1479],{"class":546},[537,9133,1396],{"class":546},[537,9135,9019],{"class":1191},[537,9137,1560],{"class":546},[537,9139,4582],{"class":1399},[537,9141,1488],{"class":542},[537,9143,5166],{"class":1191},[537,9145,3133],{"class":542},[537,9147,9148],{"class":546},"||",[537,9150,9151],{"class":542}," []",[537,9153,1319],{"class":546},[537,9155,9156],{"class":539,"line":2569},[537,9157,2285],{"class":542},[537,9159,9160,9162,9164,9166,9169,9171,9173,9175],{"class":539,"line":2574},[537,9161,5818],{"class":1380},[537,9163,1384],{"class":542},[537,9165,1828],{"class":1296},[537,9167,9168],{"class":1191}," roleId",[537,9170,5828],{"class":546},[537,9172,9129],{"class":1191},[537,9174,3133],{"class":542},[537,9176,1231],{"class":546},[537,9178,9179,9181,9184,9186,9188,9190,9192,9194,9196,9199,9201],{"class":539,"line":3212},[537,9180,5843],{"class":1296},[537,9182,9183],{"class":1191}," role",[537,9185,1479],{"class":546},[537,9187,1396],{"class":546},[537,9189,9002],{"class":1191},[537,9191,1560],{"class":546},[537,9193,4582],{"class":1399},[537,9195,1488],{"class":542},[537,9197,9198],{"class":1191},"roleId",[537,9200,1593],{"class":542},[537,9202,1319],{"class":546},[537,9204,9205,9207,9209,9211,9214,9216,9219],{"class":539,"line":3226},[537,9206,5886],{"class":1380},[537,9208,1384],{"class":542},[537,9210,3013],{"class":546},[537,9212,9213],{"class":1191},"role",[537,9215,3133],{"class":542},[537,9217,9218],{"class":1380},"continue",[537,9220,1319],{"class":546},[537,9222,9223],{"class":539,"line":3244},[537,9224,595],{"emptyLinePlaceholder":594},[537,9226,9227,9230,9232,9234,9237,9239,9241,9243,9246,9248],{"class":539,"line":3251},[537,9228,9229],{"class":1380},"      for",[537,9231,1384],{"class":542},[537,9233,1828],{"class":1296},[537,9235,9236],{"class":1191}," permission",[537,9238,5828],{"class":546},[537,9240,9183],{"class":1191},[537,9242,1560],{"class":546},[537,9244,9245],{"class":1191},"permissions",[537,9247,3133],{"class":542},[537,9249,1231],{"class":546},[537,9251,9252,9255,9257,9259,9262,9264,9267,9269,9272,9274,9277,9279,9282,9284],{"class":539,"line":3259},[537,9253,9254],{"class":1380},"        if",[537,9256,1384],{"class":542},[537,9258,5936],{"class":546},[537,9260,9261],{"class":1399},"matchesPermission",[537,9263,1488],{"class":542},[537,9265,9266],{"class":1191},"permission",[537,9268,1499],{"class":546},[537,9270,9271],{"class":1191}," resource",[537,9273,1499],{"class":546},[537,9275,9276],{"class":1191}," action",[537,9278,1499],{"class":546},[537,9280,9281],{"class":1191}," context",[537,9283,3027],{"class":542},[537,9285,1231],{"class":546},[537,9287,9288,9291,9293],{"class":539,"line":3290},[537,9289,9290],{"class":1380},"          return",[537,9292,3331],{"class":3330},[537,9294,1319],{"class":546},[537,9296,9297],{"class":539,"line":3295},[537,9298,2325],{"class":546},[537,9300,9301],{"class":539,"line":3300},[537,9302,5671],{"class":546},[537,9304,9305],{"class":539,"line":3340},[537,9306,1425],{"class":546},[537,9308,9309],{"class":539,"line":3357},[537,9310,595],{"emptyLinePlaceholder":594},[537,9312,9313,9315,9318],{"class":539,"line":3384},[537,9314,1430],{"class":1380},[537,9316,9317],{"class":3330}," false",[537,9319,1319],{"class":546},[537,9321,9322],{"class":539,"line":3425},[537,9323,1441],{"class":546},[537,9325,9326],{"class":539,"line":3430},[537,9327,595],{"emptyLinePlaceholder":594},[537,9329,9330,9332,9335],{"class":539,"line":3439},[537,9331,1308],{"class":1296},[537,9333,9334],{"class":542}," matchesPermission",[537,9336,2804],{"class":546},[537,9338,9339,9342,9344,9346,9348],{"class":539,"line":3444},[537,9340,9341],{"class":2068},"    permission",[537,9343,555],{"class":546},[537,9345,8750],{"class":1100},[537,9347,1499],{"class":546},[537,9349,6130],{"class":1191},[537,9351,9352,9354,9356,9358,9360],{"class":539,"line":3469},[537,9353,9075],{"class":2068},[537,9355,555],{"class":546},[537,9357,1316],{"class":1100},[537,9359,1499],{"class":546},[537,9361,6130],{"class":1191},[537,9363,9364,9366,9368,9370,9372],{"class":539,"line":3505},[537,9365,9088],{"class":2068},[537,9367,555],{"class":546},[537,9369,1316],{"class":1100},[537,9371,1499],{"class":546},[537,9373,6130],{"class":1191},[537,9375,9376,9378,9380],{"class":539,"line":3511},[537,9377,9101],{"class":2068},[537,9379,8763],{"class":546},[537,9381,9106],{"class":1100},[537,9383,9384,9386,9388],{"class":539,"line":3517},[537,9385,9111],{"class":546},[537,9387,1718],{"class":1100},[537,9389,1303],{"class":546},[537,9391,9392],{"class":539,"line":3522},[537,9393,9394],{"class":1290},"    // Check resource match\n",[537,9396,9397,9399,9401,9403,9406,9408,9410,9412,9415,9417,9419,9421],{"class":539,"line":3527},[537,9398,1381],{"class":1380},[537,9400,1384],{"class":542},[537,9402,1387],{"class":546},[537,9404,9405],{"class":1399},"matchesResource",[537,9407,1488],{"class":542},[537,9409,9266],{"class":1191},[537,9411,1560],{"class":546},[537,9413,9414],{"class":1191},"resource",[537,9416,1499],{"class":546},[537,9418,9271],{"class":1191},[537,9420,3027],{"class":542},[537,9422,1231],{"class":546},[537,9424,9425,9427,9429],{"class":539,"line":3549},[537,9426,4649],{"class":1380},[537,9428,9317],{"class":3330},[537,9430,1319],{"class":546},[537,9432,9433],{"class":539,"line":3591},[537,9434,1425],{"class":546},[537,9436,9437],{"class":539,"line":3597},[537,9438,595],{"emptyLinePlaceholder":594},[537,9440,9441],{"class":539,"line":3603},[537,9442,9443],{"class":1290},"    // Check action match\n",[537,9445,9446,9448,9450,9452,9454,9456,9459,9461,9464,9466,9469,9471,9474,9477,9479,9481,9483,9485,9487,9489,9491,9494,9496,9498],{"class":539,"line":3608},[537,9447,1381],{"class":1380},[537,9449,1384],{"class":542},[537,9451,3013],{"class":546},[537,9453,9266],{"class":1191},[537,9455,1560],{"class":546},[537,9457,9458],{"class":1191},"actions",[537,9460,1560],{"class":546},[537,9462,9463],{"class":1399},"includes",[537,9465,1488],{"class":542},[537,9467,9468],{"class":1191},"action",[537,9470,3133],{"class":542},[537,9472,9473],{"class":546},"&&",[537,9475,9476],{"class":546}," !",[537,9478,9266],{"class":1191},[537,9480,1560],{"class":546},[537,9482,9458],{"class":1191},[537,9484,1560],{"class":546},[537,9486,9463],{"class":1399},[537,9488,1488],{"class":542},[537,9490,1491],{"class":546},[537,9492,9493],{"class":558},"*",[537,9495,1491],{"class":546},[537,9497,3027],{"class":542},[537,9499,1231],{"class":546},[537,9501,9502,9504,9506],{"class":539,"line":3613},[537,9503,4649],{"class":1380},[537,9505,9317],{"class":3330},[537,9507,1319],{"class":546},[537,9509,9510],{"class":539,"line":3635},[537,9511,1425],{"class":546},[537,9513,9514],{"class":539,"line":3679},[537,9515,595],{"emptyLinePlaceholder":594},[537,9517,9518],{"class":539,"line":3685},[537,9519,9520],{"class":1290},"    // Check conditions\n",[537,9522,9523,9525,9527,9529,9531,9534,9536,9538,9540],{"class":539,"line":3691},[537,9524,1381],{"class":1380},[537,9526,1384],{"class":542},[537,9528,9266],{"class":1191},[537,9530,1560],{"class":546},[537,9532,9533],{"class":1191},"conditions",[537,9535,6127],{"class":546},[537,9537,9281],{"class":1191},[537,9539,3133],{"class":542},[537,9541,1231],{"class":546},[537,9543,9544,9546,9548,9551,9553,9555,9557,9559,9561,9563,9565],{"class":539,"line":3696},[537,9545,4649],{"class":1380},[537,9547,1396],{"class":546},[537,9549,9550],{"class":1399},"evaluateConditions",[537,9552,1488],{"class":542},[537,9554,9266],{"class":1191},[537,9556,1560],{"class":546},[537,9558,9533],{"class":1191},[537,9560,1499],{"class":546},[537,9562,9281],{"class":1191},[537,9564,1593],{"class":542},[537,9566,1319],{"class":546},[537,9568,9569],{"class":539,"line":3701},[537,9570,1425],{"class":546},[537,9572,9573],{"class":539,"line":3725},[537,9574,595],{"emptyLinePlaceholder":594},[537,9576,9577,9579,9581],{"class":539,"line":3747},[537,9578,1430],{"class":1380},[537,9580,3331],{"class":3330},[537,9582,1319],{"class":546},[537,9584,9585],{"class":539,"line":5015},[537,9586,1441],{"class":546},[537,9588,9589],{"class":539,"line":5033},[537,9590,595],{"emptyLinePlaceholder":594},[537,9592,9593,9595,9598,9600,9603,9605,9607,9609,9612,9614,9616,9618,9620],{"class":539,"line":5038},[537,9594,1308],{"class":1296},[537,9596,9597],{"class":542}," matchesResource",[537,9599,1488],{"class":546},[537,9601,9602],{"class":2068},"permissionResource",[537,9604,555],{"class":546},[537,9606,1316],{"class":1100},[537,9608,1499],{"class":546},[537,9610,9611],{"class":2068}," actualResource",[537,9613,555],{"class":546},[537,9615,1316],{"class":1100},[537,9617,2710],{"class":546},[537,9619,1718],{"class":1100},[537,9621,1303],{"class":546},[537,9623,9624,9626,9628,9630,9633,9635,9637,9639,9641,9644,9646],{"class":539,"line":5043},[537,9625,1381],{"class":1380},[537,9627,1384],{"class":542},[537,9629,9602],{"class":1191},[537,9631,9632],{"class":546}," ===",[537,9634,1228],{"class":546},[537,9636,9493],{"class":558},[537,9638,1491],{"class":546},[537,9640,3133],{"class":542},[537,9642,9643],{"class":1380},"return",[537,9645,3331],{"class":3330},[537,9647,1319],{"class":546},[537,9649,9650,9652,9654,9656,9658,9660,9662,9664,9666],{"class":539,"line":5083},[537,9651,1381],{"class":1380},[537,9653,1384],{"class":542},[537,9655,9602],{"class":1191},[537,9657,9632],{"class":546},[537,9659,9611],{"class":1191},[537,9661,3133],{"class":542},[537,9663,9643],{"class":1380},[537,9665,3331],{"class":3330},[537,9667,1319],{"class":546},[537,9669,9670],{"class":539,"line":5089},[537,9671,2285],{"class":542},[537,9673,9674],{"class":539,"line":5094},[537,9675,9676],{"class":1290},"    // Support wildcard patterns like 'sessions.*'\n",[537,9678,9679,9681,9684,9686,9689,9691,9693,9695,9697,9699,9701,9703,9705,9708,9710,9712],{"class":539,"line":5099},[537,9680,1473],{"class":1296},[537,9682,9683],{"class":1191}," pattern",[537,9685,1479],{"class":546},[537,9687,9688],{"class":1191}," permissionResource",[537,9690,1560],{"class":546},[537,9692,6661],{"class":1399},[537,9694,1488],{"class":542},[537,9696,1491],{"class":546},[537,9698,9493],{"class":558},[537,9700,1491],{"class":546},[537,9702,1499],{"class":546},[537,9704,1228],{"class":546},[537,9706,9707],{"class":558},".*",[537,9709,1491],{"class":546},[537,9711,1593],{"class":542},[537,9713,1319],{"class":546},[537,9715,9716,9718,9721,9723,9725,9728,9730,9732,9735,9737,9740,9742,9745,9747,9749],{"class":539,"line":5138},[537,9717,1473],{"class":1296},[537,9719,9720],{"class":1191}," regex",[537,9722,1479],{"class":546},[537,9724,1655],{"class":546},[537,9726,9727],{"class":1399}," RegExp",[537,9729,1488],{"class":542},[537,9731,2091],{"class":546},[537,9733,9734],{"class":558},"^",[537,9736,2097],{"class":546},[537,9738,9739],{"class":1191},"pattern",[537,9741,1895],{"class":546},[537,9743,9744],{"class":558},"$",[537,9746,2091],{"class":546},[537,9748,1593],{"class":542},[537,9750,1319],{"class":546},[537,9752,9753,9755,9757,9759,9762,9764,9767,9769],{"class":539,"line":5144},[537,9754,1430],{"class":1380},[537,9756,9720],{"class":1191},[537,9758,1560],{"class":546},[537,9760,9761],{"class":1399},"test",[537,9763,1488],{"class":542},[537,9765,9766],{"class":1191},"actualResource",[537,9768,1593],{"class":542},[537,9770,1319],{"class":546},[537,9772,9773],{"class":539,"line":5149},[537,9774,1441],{"class":546},[537,9776,9777],{"class":539,"line":5154},[537,9778,595],{"emptyLinePlaceholder":594},[537,9780,9781,9783,9786,9788,9790,9792,9794,9796,9798,9800,9802,9804,9806,9808],{"class":539,"line":5194},[537,9782,1308],{"class":1296},[537,9784,9785],{"class":542}," evaluateConditions",[537,9787,1488],{"class":546},[537,9789,9533],{"class":2068},[537,9791,555],{"class":546},[537,9793,8766],{"class":1100},[537,9795,8753],{"class":1191},[537,9797,1499],{"class":546},[537,9799,9281],{"class":2068},[537,9801,555],{"class":546},[537,9803,3462],{"class":1100},[537,9805,2710],{"class":546},[537,9807,1718],{"class":1100},[537,9809,1303],{"class":546},[537,9811,9812,9814,9817,9819,9822,9824,9827,9829],{"class":539,"line":5200},[537,9813,1430],{"class":1380},[537,9815,9816],{"class":1191}," conditions",[537,9818,1560],{"class":546},[537,9820,9821],{"class":1399},"every",[537,9823,1488],{"class":542},[537,9825,9826],{"class":2068},"condition",[537,9828,2074],{"class":1296},[537,9830,1303],{"class":546},[537,9832,9833,9835,9838,9840,9842,9845,9847,9850,9852,9855,9857,9860,9862],{"class":539,"line":5205},[537,9834,5843],{"class":1296},[537,9836,9837],{"class":1191}," contextValue",[537,9839,1479],{"class":546},[537,9841,1396],{"class":546},[537,9843,9844],{"class":1399},"getNestedValue",[537,9846,1488],{"class":542},[537,9848,9849],{"class":1191},"context",[537,9851,1499],{"class":546},[537,9853,9854],{"class":1191}," condition",[537,9856,1560],{"class":546},[537,9858,9859],{"class":1191},"field",[537,9861,1593],{"class":542},[537,9863,1319],{"class":546},[537,9865,9866],{"class":539,"line":5210},[537,9867,5881],{"class":542},[537,9869,9870,9873,9875,9877,9879,9882,9884],{"class":539,"line":5240},[537,9871,9872],{"class":1380},"      switch",[537,9874,1384],{"class":542},[537,9876,9826],{"class":1191},[537,9878,1560],{"class":546},[537,9880,9881],{"class":1191},"operator",[537,9883,3133],{"class":542},[537,9885,1231],{"class":546},[537,9887,9888,9891,9893,9895,9897],{"class":539,"line":5246},[537,9889,9890],{"class":1380},"        case",[537,9892,1228],{"class":546},[537,9894,8861],{"class":558},[537,9896,1491],{"class":546},[537,9898,547],{"class":546},[537,9900,9901,9903,9905,9907,9909,9911,9914],{"class":539,"line":5251},[537,9902,9290],{"class":1380},[537,9904,9837],{"class":1191},[537,9906,9632],{"class":546},[537,9908,9854],{"class":1191},[537,9910,1560],{"class":546},[537,9912,9913],{"class":1191},"value",[537,9915,1319],{"class":546},[537,9917,9918,9920,9922,9924,9926],{"class":539,"line":7450},[537,9919,9890],{"class":1380},[537,9921,1228],{"class":546},[537,9923,8871],{"class":558},[537,9925,1491],{"class":546},[537,9927,547],{"class":546},[537,9929,9930,9932,9934,9936,9938,9940,9942],{"class":539,"line":7456},[537,9931,9290],{"class":1380},[537,9933,9837],{"class":1191},[537,9935,6118],{"class":546},[537,9937,9854],{"class":1191},[537,9939,1560],{"class":546},[537,9941,9913],{"class":1191},[537,9943,1319],{"class":546},[537,9945,9946,9948,9950,9952,9954],{"class":539,"line":7480},[537,9947,9890],{"class":1380},[537,9949,1228],{"class":546},[537,9951,8880],{"class":558},[537,9953,1491],{"class":546},[537,9955,547],{"class":546},[537,9957,9958,9960,9963,9965,9968,9970,9972,9974,9976,9978,9980,9982,9984,9986,9988,9990,9992,9995,9997],{"class":539,"line":7485},[537,9959,9290],{"class":1380},[537,9961,9962],{"class":1191}," Array",[537,9964,1560],{"class":546},[537,9966,9967],{"class":1399},"isArray",[537,9969,1488],{"class":542},[537,9971,9826],{"class":1191},[537,9973,1560],{"class":546},[537,9975,9913],{"class":1191},[537,9977,3133],{"class":542},[537,9979,9473],{"class":546},[537,9981,9854],{"class":1191},[537,9983,1560],{"class":546},[537,9985,9913],{"class":1191},[537,9987,1560],{"class":546},[537,9989,9463],{"class":1399},[537,9991,1488],{"class":542},[537,9993,9994],{"class":1191},"contextValue",[537,9996,1593],{"class":542},[537,9998,1319],{"class":546},[537,10000,10001,10003,10005,10007,10009],{"class":539,"line":7491},[537,10002,9890],{"class":1380},[537,10004,1228],{"class":546},[537,10006,8889],{"class":558},[537,10008,1491],{"class":546},[537,10010,547],{"class":546},[537,10012,10013,10015,10017,10019,10021,10023,10025,10027,10029,10031,10033,10035,10037,10039,10041,10043,10045,10047,10049,10051],{"class":539,"line":7509},[537,10014,9290],{"class":1380},[537,10016,9962],{"class":1191},[537,10018,1560],{"class":546},[537,10020,9967],{"class":1399},[537,10022,1488],{"class":542},[537,10024,9826],{"class":1191},[537,10026,1560],{"class":546},[537,10028,9913],{"class":1191},[537,10030,3133],{"class":542},[537,10032,9473],{"class":546},[537,10034,9476],{"class":546},[537,10036,9826],{"class":1191},[537,10038,1560],{"class":546},[537,10040,9913],{"class":1191},[537,10042,1560],{"class":546},[537,10044,9463],{"class":1399},[537,10046,1488],{"class":542},[537,10048,9994],{"class":1191},[537,10050,1593],{"class":542},[537,10052,1319],{"class":546},[537,10054,10055,10057,10059,10061,10063],{"class":539,"line":7527},[537,10056,9890],{"class":1380},[537,10058,1228],{"class":546},[537,10060,8898],{"class":558},[537,10062,1491],{"class":546},[537,10064,547],{"class":546},[537,10066,10067,10069,10071,10074,10076,10078,10080],{"class":539,"line":7536},[537,10068,9290],{"class":1380},[537,10070,9837],{"class":1191},[537,10072,10073],{"class":546}," >",[537,10075,9854],{"class":1191},[537,10077,1560],{"class":546},[537,10079,9913],{"class":1191},[537,10081,1319],{"class":546},[537,10083,10084,10086,10088,10090,10092],{"class":539,"line":7541},[537,10085,9890],{"class":1380},[537,10087,1228],{"class":546},[537,10089,8907],{"class":558},[537,10091,1491],{"class":546},[537,10093,547],{"class":546},[537,10095,10096,10098,10100,10103,10105,10107,10109],{"class":539,"line":7547},[537,10097,9290],{"class":1380},[537,10099,9837],{"class":1191},[537,10101,10102],{"class":546}," \u003C",[537,10104,9854],{"class":1191},[537,10106,1560],{"class":546},[537,10108,9913],{"class":1191},[537,10110,1319],{"class":546},[537,10112,10113,10116],{"class":539,"line":7566},[537,10114,10115],{"class":1380},"        default",[537,10117,547],{"class":546},[537,10119,10120,10122,10124],{"class":539,"line":7585},[537,10121,9290],{"class":1380},[537,10123,9317],{"class":3330},[537,10125,1319],{"class":546},[537,10127,10128],{"class":539,"line":7594},[537,10129,5671],{"class":546},[537,10131,10132,10134,10136],{"class":539,"line":7599},[537,10133,1590],{"class":546},[537,10135,1593],{"class":542},[537,10137,1319],{"class":546},[537,10139,10140],{"class":539,"line":7605},[537,10141,1441],{"class":546},[537,10143,10144],{"class":539,"line":7634},[537,10145,595],{"emptyLinePlaceholder":594},[537,10147,10148,10150,10153,10155,10158,10160,10162,10164,10167,10169,10171,10173,10175],{"class":539,"line":7639},[537,10149,1308],{"class":1296},[537,10151,10152],{"class":542}," getNestedValue",[537,10154,1488],{"class":546},[537,10156,10157],{"class":2068},"obj",[537,10159,555],{"class":546},[537,10161,3462],{"class":1100},[537,10163,1499],{"class":546},[537,10165,10166],{"class":2068}," path",[537,10168,555],{"class":546},[537,10170,1316],{"class":1100},[537,10172,2710],{"class":546},[537,10174,3462],{"class":1100},[537,10176,1303],{"class":546},[537,10178,10179,10181,10183,10185,10188,10190,10192,10194,10196,10198,10200,10203,10205,10207,10210,10212,10215,10217,10219,10222,10225,10227,10230,10233,10235,10238,10240],{"class":539,"line":7645},[537,10180,1430],{"class":1380},[537,10182,10166],{"class":1191},[537,10184,1560],{"class":546},[537,10186,10187],{"class":1399},"split",[537,10189,1488],{"class":542},[537,10191,1491],{"class":546},[537,10193,1560],{"class":558},[537,10195,1491],{"class":546},[537,10197,1593],{"class":542},[537,10199,1560],{"class":546},[537,10201,10202],{"class":1399},"reduce",[537,10204,1488],{"class":542},[537,10206,1488],{"class":546},[537,10208,10209],{"class":2068},"current",[537,10211,1499],{"class":546},[537,10213,10214],{"class":2068}," key",[537,10216,1593],{"class":546},[537,10218,2074],{"class":1296},[537,10220,10221],{"class":1191}," current",[537,10223,10224],{"class":546},"?.",[537,10226,2957],{"class":542},[537,10228,10229],{"class":1191},"key",[537,10231,10232],{"class":542},"]",[537,10234,1499],{"class":546},[537,10236,10237],{"class":1191}," obj",[537,10239,1593],{"class":542},[537,10241,1319],{"class":546},[537,10243,10244],{"class":539,"line":7664},[537,10245,1441],{"class":546},[537,10247,10248],{"class":539,"line":7669},[537,10249,1751],{"class":546},[537,10251,10252],{"class":539,"line":7675},[537,10253,595],{"emptyLinePlaceholder":594},[537,10255,10256],{"class":539,"line":7702},[537,10257,10258],{"class":1290},"// Middleware for API protection\n",[537,10260,10261,10263,10266,10268,10270,10272,10274,10276,10278,10280,10282,10284],{"class":539,"line":7728},[537,10262,2686],{"class":1296},[537,10264,10265],{"class":1399}," requirePermission",[537,10267,1488],{"class":546},[537,10269,9414],{"class":2068},[537,10271,555],{"class":546},[537,10273,1316],{"class":1100},[537,10275,1499],{"class":546},[537,10277,9276],{"class":2068},[537,10279,555],{"class":546},[537,10281,1316],{"class":1100},[537,10283,1593],{"class":546},[537,10285,1303],{"class":546},[537,10287,10288,10290,10292,10294,10296,10298,10300,10302,10304,10306,10308,10310,10313,10315,10317,10319,10321],{"class":539,"line":7755},[537,10289,2793],{"class":1380},[537,10291,1452],{"class":1296},[537,10293,1384],{"class":546},[537,10295,2927],{"class":2068},[537,10297,555],{"class":546},[537,10299,3462],{"class":1100},[537,10301,1499],{"class":546},[537,10303,2932],{"class":2068},[537,10305,555],{"class":546},[537,10307,3462],{"class":1100},[537,10309,1499],{"class":546},[537,10311,10312],{"class":2068}," next",[537,10314,555],{"class":546},[537,10316,3462],{"class":1100},[537,10318,1593],{"class":546},[537,10320,2074],{"class":1296},[537,10322,1303],{"class":546},[537,10324,10325,10327,10330,10332,10334,10336,10339,10341,10343],{"class":539,"line":7782},[537,10326,1473],{"class":1296},[537,10328,10329],{"class":1191}," userId",[537,10331,1479],{"class":546},[537,10333,2949],{"class":1191},[537,10335,1560],{"class":546},[537,10337,10338],{"class":1191},"user",[537,10340,1560],{"class":546},[537,10342,2061],{"class":1191},[537,10344,1319],{"class":546},[537,10346,10347,10349,10352,10354,10356,10358,10360],{"class":539,"line":7787},[537,10348,1473],{"class":1296},[537,10350,10351],{"class":1191}," accessControl",[537,10353,1479],{"class":546},[537,10355,1655],{"class":546},[537,10357,8937],{"class":1399},[537,10359,1418],{"class":542},[537,10361,1319],{"class":546},[537,10363,10364],{"class":539,"line":7813},[537,10365,2285],{"class":542},[537,10367,10368,10370,10373,10375,10377,10379,10381,10384],{"class":539,"line":7828},[537,10369,1473],{"class":1296},[537,10371,10372],{"class":1191}," hasPermission",[537,10374,1479],{"class":546},[537,10376,1482],{"class":1380},[537,10378,10351],{"class":1191},[537,10380,1560],{"class":546},[537,10382,10383],{"class":1399},"checkPermission",[537,10385,2804],{"class":542},[537,10387,10388,10391,10393],{"class":539,"line":7854},[537,10389,10390],{"class":1191},"      userId",[537,10392,1499],{"class":546},[537,10394,6130],{"class":542},[537,10396,10397,10400,10402],{"class":539,"line":7863},[537,10398,10399],{"class":1191},"      resource",[537,10401,1499],{"class":546},[537,10403,6130],{"class":542},[537,10405,10406,10409,10411],{"class":539,"line":7868},[537,10407,10408],{"class":1191},"      action",[537,10410,1499],{"class":546},[537,10412,6130],{"class":542},[537,10414,10415],{"class":539,"line":7873},[537,10416,10417],{"class":546},"      {\n",[537,10419,10421,10424,10426,10428,10430,10433,10435,10437],{"class":539,"line":10420},125,[537,10422,10423],{"class":542},"        sessionId",[537,10425,555],{"class":546},[537,10427,2949],{"class":1191},[537,10429,1560],{"class":546},[537,10431,10432],{"class":1191},"params",[537,10434,1560],{"class":546},[537,10436,5055],{"class":1191},[537,10438,1518],{"class":546},[537,10440,10442,10445,10447,10449,10451,10453,10455,10457],{"class":539,"line":10441},126,[537,10443,10444],{"class":542},"        userId",[537,10446,555],{"class":546},[537,10448,2949],{"class":1191},[537,10450,1560],{"class":546},[537,10452,10432],{"class":1191},[537,10454,1560],{"class":546},[537,10456,5166],{"class":1191},[537,10458,1518],{"class":546},[537,10460,10462,10465,10467,10469,10471,10473,10475],{"class":539,"line":10461},127,[537,10463,10464],{"class":542},"        organization",[537,10466,555],{"class":546},[537,10468,2949],{"class":1191},[537,10470,1560],{"class":546},[537,10472,10338],{"class":1191},[537,10474,1560],{"class":546},[537,10476,10477],{"class":1191},"organization\n",[537,10479,10481],{"class":539,"line":10480},128,[537,10482,5671],{"class":546},[537,10484,10486,10489],{"class":539,"line":10485},129,[537,10487,10488],{"class":542},"    )",[537,10490,1319],{"class":546},[537,10492,10494],{"class":539,"line":10493},130,[537,10495,595],{"emptyLinePlaceholder":594},[537,10497,10499,10501,10503,10505,10508,10510],{"class":539,"line":10498},131,[537,10500,1381],{"class":1380},[537,10502,1384],{"class":542},[537,10504,3013],{"class":546},[537,10506,10507],{"class":1191},"hasPermission",[537,10509,3133],{"class":542},[537,10511,1231],{"class":546},[537,10513,10515,10517,10519,10521,10523,10525,10528,10530,10532,10534,10536,10538,10540,10542,10544,10547,10549,10551,10553],{"class":539,"line":10514},132,[537,10516,4649],{"class":1380},[537,10518,2932],{"class":1191},[537,10520,1560],{"class":546},[537,10522,2139],{"class":1399},[537,10524,1488],{"class":542},[537,10526,10527],{"class":1689},"403",[537,10529,1593],{"class":542},[537,10531,1560],{"class":546},[537,10533,1619],{"class":1399},[537,10535,1488],{"class":542},[537,10537,1568],{"class":546},[537,10539,3057],{"class":542},[537,10541,555],{"class":546},[537,10543,1228],{"class":546},[537,10545,10546],{"class":558},"Insufficient permissions",[537,10548,1491],{"class":546},[537,10550,1581],{"class":546},[537,10552,1593],{"class":542},[537,10554,1319],{"class":546},[537,10556,10558],{"class":539,"line":10557},133,[537,10559,1425],{"class":546},[537,10561,10563],{"class":539,"line":10562},134,[537,10564,595],{"emptyLinePlaceholder":594},[537,10566,10568,10571,10573],{"class":539,"line":10567},135,[537,10569,10570],{"class":1399},"    next",[537,10572,1418],{"class":542},[537,10574,1319],{"class":546},[537,10576,10578],{"class":539,"line":10577},136,[537,10579,10580],{"class":546},"  };\n",[537,10582,10584],{"class":539,"line":10583},137,[537,10585,1751],{"class":546},[537,10587,10589],{"class":539,"line":10588},138,[537,10590,595],{"emptyLinePlaceholder":594},[537,10592,10594],{"class":539,"line":10593},139,[537,10595,10596],{"class":1290},"// Usage in API routes\n",[537,10598,10600,10602,10604,10606,10608,10610,10613,10615,10617],{"class":539,"line":10599},140,[537,10601,2878],{"class":1191},[537,10603,1560],{"class":546},[537,10605,4582],{"class":1399},[537,10607,1488],{"class":1191},[537,10609,1491],{"class":546},[537,10611,10612],{"class":558},"/sessions/:sessionId",[537,10614,1491],{"class":546},[537,10616,1499],{"class":546},[537,10618,6130],{"class":1191},[537,10620,10622,10625],{"class":539,"line":10621},141,[537,10623,10624],{"class":1191},"  authenticateUser",[537,10626,1518],{"class":546},[537,10628,10630,10633,10635,10637,10639,10641,10643,10645,10648,10650,10652],{"class":539,"line":10629},142,[537,10631,10632],{"class":1399},"  requirePermission",[537,10634,1488],{"class":1191},[537,10636,1491],{"class":546},[537,10638,1927],{"class":558},[537,10640,1491],{"class":546},[537,10642,1499],{"class":546},[537,10644,1228],{"class":546},[537,10646,10647],{"class":558},"read",[537,10649,1491],{"class":546},[537,10651,1593],{"class":1191},[537,10653,1518],{"class":546},[537,10655,10657,10659,10661,10663,10665,10667,10669,10671],{"class":539,"line":10656},143,[537,10658,1355],{"class":1296},[537,10660,1384],{"class":546},[537,10662,2927],{"class":2068},[537,10664,1499],{"class":546},[537,10666,2932],{"class":2068},[537,10668,1593],{"class":546},[537,10670,2074],{"class":1296},[537,10672,1303],{"class":546},[537,10674,10676],{"class":539,"line":10675},144,[537,10677,10678],{"class":1290},"    // Session retrieval logic\n",[537,10680,10682],{"class":539,"line":10681},145,[537,10683,1441],{"class":546},[537,10685,10687,10689],{"class":539,"line":10686},146,[537,10688,1593],{"class":1191},[537,10690,1319],{"class":546},[512,10692,10694],{"id":10693},"performance-integration-requirements","Performance Integration Requirements",[517,10696,10698],{"id":10697},"caching-strategy","Caching Strategy",[522,10700,10702],{"id":10701},"multi-level-caching","Multi-Level Caching",[527,10704,10706],{"className":1281,"code":10705,"language":1283,"meta":532,"style":532},"interface CacheConfig {\n  levels: CacheLevel[];\n  defaultTTL: number;\n  maxSize: number;\n  evictionPolicy: EvictionPolicy;\n}\n\nenum CacheLevel {\n  MEMORY = 'memory',\n  REDIS = 'redis',\n  DATABASE = 'database'\n}\n\nenum EvictionPolicy {\n  LRU = 'lru',\n  LFU = 'lfu',\n  FIFO = 'fifo'\n}\n\nclass MultiLevelCache {\n  private config: CacheConfig;\n  private memoryCache: Map\u003Cstring, CacheEntry>;\n  private redisClient: Redis;\n\n  constructor(config: CacheConfig) {\n    this.config = config;\n    this.memoryCache = new Map();\n    this.redisClient = new Redis(process.env.REDIS_URL);\n  }\n\n  async get\u003CT>(key: string): Promise\u003CT | null> {\n    // Try memory cache first\n    const memoryEntry = this.memoryCache.get(key);\n    if (memoryEntry && !this.isExpired(memoryEntry)) {\n      return memoryEntry.value;\n    }\n\n    // Try Redis cache\n    try {\n      const redisValue = await this.redisClient.get(key);\n      if (redisValue) {\n        const parsed = JSON.parse(redisValue);\n        \n        // Promote to memory cache\n        this.memoryCache.set(key, {\n          value: parsed,\n          timestamp: Date.now(),\n          ttl: this.config.defaultTTL\n        });\n        \n        return parsed;\n      }\n    } catch (error) {\n      console.error('Redis cache error:', error);\n    }\n\n    return null;\n  }\n\n  async set\u003CT>(key: string, value: T, ttl?: number): Promise\u003Cvoid> {\n    const effectiveTTL = ttl || this.config.defaultTTL;\n    const entry: CacheEntry = {\n      value,\n      timestamp: Date.now(),\n      ttl: effectiveTTL\n    };\n\n    // Set in memory cache\n    this.memoryCache.set(key, entry);\n    this.enforceMemoryLimit();\n\n    // Set in Redis cache\n    try {\n      await this.redisClient.setex(\n        key, \n        Math.ceil(effectiveTTL / 1000), \n        JSON.stringify(value)\n      );\n    } catch (error) {\n      console.error('Redis cache set error:', error);\n    }\n  }\n\n  async invalidate(pattern: string): Promise\u003Cvoid> {\n    // Invalidate memory cache\n    for (const key of this.memoryCache.keys()) {\n      if (this.matchesPattern(key, pattern)) {\n        this.memoryCache.delete(key);\n      }\n    }\n\n    // Invalidate Redis cache\n    try {\n      const keys = await this.redisClient.keys(pattern);\n      if (keys.length > 0) {\n        await this.redisClient.del(...keys);\n      }\n    } catch (error) {\n      console.error('Redis cache invalidation error:', error);\n    }\n  }\n\n  private enforceMemoryLimit(): void {\n    if (this.memoryCache.size \u003C= this.config.maxSize) {\n      return;\n    }\n\n    const entries = Array.from(this.memoryCache.entries());\n    \n    switch (this.config.evictionPolicy) {\n      case EvictionPolicy.LRU:\n        entries.sort((a, b) => a[1].timestamp - b[1].timestamp);\n        break;\n      case EvictionPolicy.LFU:\n        // Implementation would need access frequency tracking\n        entries.sort((a, b) => (a[1].accessCount || 0) - (b[1].accessCount || 0));\n        break;\n      case EvictionPolicy.FIFO:\n        entries.sort((a, b) => a[1].timestamp - b[1].timestamp);\n        break;\n    }\n\n    const toRemove = entries.slice(0, entries.length - this.config.maxSize);\n    toRemove.forEach(([key]) => this.memoryCache.delete(key));\n  }\n\n  private isExpired(entry: CacheEntry): boolean {\n    return Date.now() - entry.timestamp > entry.ttl;\n  }\n\n  private matchesPattern(key: string, pattern: string): boolean {\n    const regex = new RegExp(pattern.replace('*', '.*'));\n    return regex.test(key);\n  }\n}\n\ninterface CacheEntry {\n  value: any;\n  timestamp: number;\n  ttl: number;\n  accessCount?: number;\n}\n",[534,10707,10708,10717,10731,10742,10753,10765,10769,10773,10781,10797,10813,10827,10831,10835,10843,10859,10875,10889,10893,10897,10906,10918,10940,10954,10958,10974,10986,11003,11034,11038,11042,11080,11085,11110,11135,11147,11151,11155,11160,11166,11193,11206,11230,11234,11239,11258,11269,11286,11302,11311,11315,11323,11327,11341,11366,11370,11374,11381,11385,11389,11439,11463,11478,11485,11501,11511,11515,11519,11524,11546,11557,11561,11566,11572,11587,11596,11622,11637,11644,11658,11683,11687,11691,11695,11722,11727,11752,11775,11794,11798,11802,11806,11811,11817,11844,11866,11890,11894,11908,11933,11937,11941,11945,11958,11989,11995,11999,12003,12033,12037,12056,12069,12128,12134,12147,12152,12220,12226,12239,12291,12297,12301,12305,12348,12386,12390,12394,12416,12447,12451,12455,12484,12524,12542,12546,12550,12554,12562,12572,12582,12593,12604],{"__ignoreMap":532},[537,10709,10710,10712,10715],{"class":539,"line":82},[537,10711,4048],{"class":1296},[537,10713,10714],{"class":1100}," CacheConfig",[537,10716,1303],{"class":546},[537,10718,10719,10722,10724,10727,10729],{"class":539,"line":114},[537,10720,10721],{"class":542},"  levels",[537,10723,555],{"class":546},[537,10725,10726],{"class":1100}," CacheLevel",[537,10728,8753],{"class":1191},[537,10730,1319],{"class":546},[537,10732,10733,10736,10738,10740],{"class":539,"line":146},[537,10734,10735],{"class":542},"  defaultTTL",[537,10737,555],{"class":546},[537,10739,5289],{"class":1100},[537,10741,1319],{"class":546},[537,10743,10744,10747,10749,10751],{"class":539,"line":178},[537,10745,10746],{"class":542},"  maxSize",[537,10748,555],{"class":546},[537,10750,5289],{"class":1100},[537,10752,1319],{"class":546},[537,10754,10755,10758,10760,10763],{"class":539,"line":268},[537,10756,10757],{"class":542},"  evictionPolicy",[537,10759,555],{"class":546},[537,10761,10762],{"class":1100}," EvictionPolicy",[537,10764,1319],{"class":546},[537,10766,10767],{"class":539,"line":273},[537,10768,1751],{"class":546},[537,10770,10771],{"class":539,"line":279},[537,10772,595],{"emptyLinePlaceholder":594},[537,10774,10775,10777,10779],{"class":539,"line":285},[537,10776,4122],{"class":1296},[537,10778,10726],{"class":1100},[537,10780,1303],{"class":546},[537,10782,10783,10786,10788,10790,10793,10795],{"class":539,"line":291},[537,10784,10785],{"class":1191},"  MEMORY ",[537,10787,1834],{"class":546},[537,10789,1228],{"class":546},[537,10791,10792],{"class":558},"memory",[537,10794,1491],{"class":546},[537,10796,1518],{"class":546},[537,10798,10799,10802,10804,10806,10809,10811],{"class":539,"line":222},[537,10800,10801],{"class":1191},"  REDIS ",[537,10803,1834],{"class":546},[537,10805,1228],{"class":546},[537,10807,10808],{"class":558},"redis",[537,10810,1491],{"class":546},[537,10812,1518],{"class":546},[537,10814,10815,10818,10820,10822,10825],{"class":539,"line":227},[537,10816,10817],{"class":1191},"  DATABASE ",[537,10819,1834],{"class":546},[537,10821,1228],{"class":546},[537,10823,10824],{"class":558},"database",[537,10826,1274],{"class":546},[537,10828,10829],{"class":539,"line":232},[537,10830,1751],{"class":546},[537,10832,10833],{"class":539,"line":238},[537,10834,595],{"emptyLinePlaceholder":594},[537,10836,10837,10839,10841],{"class":539,"line":243},[537,10838,4122],{"class":1296},[537,10840,10762],{"class":1100},[537,10842,1303],{"class":546},[537,10844,10845,10848,10850,10852,10855,10857],{"class":539,"line":248},[537,10846,10847],{"class":1191},"  LRU ",[537,10849,1834],{"class":546},[537,10851,1228],{"class":546},[537,10853,10854],{"class":558},"lru",[537,10856,1491],{"class":546},[537,10858,1518],{"class":546},[537,10860,10861,10864,10866,10868,10871,10873],{"class":539,"line":671},[537,10862,10863],{"class":1191},"  LFU ",[537,10865,1834],{"class":546},[537,10867,1228],{"class":546},[537,10869,10870],{"class":558},"lfu",[537,10872,1491],{"class":546},[537,10874,1518],{"class":546},[537,10876,10877,10880,10882,10884,10887],{"class":539,"line":681},[537,10878,10879],{"class":1191},"  FIFO ",[537,10881,1834],{"class":546},[537,10883,1228],{"class":546},[537,10885,10886],{"class":558},"fifo",[537,10888,1274],{"class":546},[537,10890,10891],{"class":539,"line":814},[537,10892,1751],{"class":546},[537,10894,10895],{"class":539,"line":1587},[537,10896,595],{"emptyLinePlaceholder":594},[537,10898,10899,10901,10904],{"class":539,"line":1598},[537,10900,1297],{"class":1296},[537,10902,10903],{"class":1100}," MultiLevelCache",[537,10905,1303],{"class":546},[537,10907,10908,10910,10912,10914,10916],{"class":539,"line":1603},[537,10909,1308],{"class":1296},[537,10911,5437],{"class":542},[537,10913,555],{"class":546},[537,10915,10714],{"class":1100},[537,10917,1319],{"class":546},[537,10919,10920,10922,10925,10927,10929,10931,10933,10935,10938],{"class":539,"line":1626},[537,10921,1308],{"class":1296},[537,10923,10924],{"class":542}," memoryCache",[537,10926,555],{"class":546},[537,10928,4294],{"class":1100},[537,10930,1367],{"class":546},[537,10932,1370],{"class":1100},[537,10934,1499],{"class":546},[537,10936,10937],{"class":1100}," CacheEntry",[537,10939,4307],{"class":546},[537,10941,10942,10944,10947,10949,10952],{"class":539,"line":1645},[537,10943,1308],{"class":1296},[537,10945,10946],{"class":542}," redisClient",[537,10948,555],{"class":546},[537,10950,10951],{"class":1100}," Redis",[537,10953,1319],{"class":546},[537,10955,10956],{"class":539,"line":1698},[537,10957,595],{"emptyLinePlaceholder":594},[537,10959,10960,10962,10964,10966,10968,10970,10972],{"class":539,"line":1703},[537,10961,4344],{"class":1296},[537,10963,1488],{"class":546},[537,10965,5483],{"class":2068},[537,10967,555],{"class":546},[537,10969,10714],{"class":1100},[537,10971,1593],{"class":546},[537,10973,1303],{"class":546},[537,10975,10976,10978,10980,10982,10984],{"class":539,"line":1708},[537,10977,1629],{"class":546},[537,10979,5483],{"class":1191},[537,10981,1479],{"class":546},[537,10983,5437],{"class":1191},[537,10985,1319],{"class":546},[537,10987,10988,10990,10993,10995,10997,10999,11001],{"class":539,"line":1723},[537,10989,1629],{"class":546},[537,10991,10992],{"class":1191},"memoryCache",[537,10994,1479],{"class":546},[537,10996,1655],{"class":546},[537,10998,4294],{"class":1399},[537,11000,1418],{"class":542},[537,11002,1319],{"class":546},[537,11004,11005,11007,11010,11012,11014,11016,11018,11021,11023,11025,11027,11030,11032],{"class":539,"line":1743},[537,11006,1629],{"class":546},[537,11008,11009],{"class":1191},"redisClient",[537,11011,1479],{"class":546},[537,11013,1655],{"class":546},[537,11015,10951],{"class":1399},[537,11017,1488],{"class":542},[537,11019,11020],{"class":1191},"process",[537,11022,1560],{"class":546},[537,11024,1857],{"class":1191},[537,11026,1560],{"class":546},[537,11028,11029],{"class":1191},"REDIS_URL",[537,11031,1593],{"class":542},[537,11033,1319],{"class":546},[537,11035,11036],{"class":539,"line":1748},[537,11037,1441],{"class":546},[537,11039,11040],{"class":539,"line":2166},[537,11041,595],{"emptyLinePlaceholder":594},[537,11043,11044,11046,11049,11051,11054,11057,11059,11061,11063,11065,11067,11069,11071,11073,11076,11078],{"class":539,"line":2198},[537,11045,1355],{"class":1296},[537,11047,11048],{"class":542}," get",[537,11050,1367],{"class":546},[537,11052,11053],{"class":1100},"T",[537,11055,11056],{"class":546},">(",[537,11058,10229],{"class":2068},[537,11060,555],{"class":546},[537,11062,1316],{"class":1100},[537,11064,2710],{"class":546},[537,11066,1364],{"class":1100},[537,11068,1367],{"class":546},[537,11070,11053],{"class":1100},[537,11072,8866],{"class":546},[537,11074,11075],{"class":1100}," null",[537,11077,1373],{"class":546},[537,11079,1303],{"class":546},[537,11081,11082],{"class":539,"line":2540},[537,11083,11084],{"class":1290},"    // Try memory cache first\n",[537,11086,11087,11089,11092,11094,11096,11098,11100,11102,11104,11106,11108],{"class":539,"line":2546},[537,11088,1473],{"class":1296},[537,11090,11091],{"class":1191}," memoryEntry",[537,11093,1479],{"class":546},[537,11095,1396],{"class":546},[537,11097,10992],{"class":1191},[537,11099,1560],{"class":546},[537,11101,4582],{"class":1399},[537,11103,1488],{"class":542},[537,11105,10229],{"class":1191},[537,11107,1593],{"class":542},[537,11109,1319],{"class":546},[537,11111,11112,11114,11116,11119,11121,11124,11127,11129,11131,11133],{"class":539,"line":2551},[537,11113,1381],{"class":1380},[537,11115,1384],{"class":542},[537,11117,11118],{"class":1191},"memoryEntry",[537,11120,6127],{"class":546},[537,11122,11123],{"class":546}," !this.",[537,11125,11126],{"class":1399},"isExpired",[537,11128,1488],{"class":542},[537,11130,11118],{"class":1191},[537,11132,3027],{"class":542},[537,11134,1231],{"class":546},[537,11136,11137,11139,11141,11143,11145],{"class":539,"line":2557},[537,11138,4649],{"class":1380},[537,11140,11091],{"class":1191},[537,11142,1560],{"class":546},[537,11144,9913],{"class":1191},[537,11146,1319],{"class":546},[537,11148,11149],{"class":539,"line":2563},[537,11150,1425],{"class":546},[537,11152,11153],{"class":539,"line":2569},[537,11154,595],{"emptyLinePlaceholder":594},[537,11156,11157],{"class":539,"line":2574},[537,11158,11159],{"class":1290},"    // Try Redis cache\n",[537,11161,11162,11164],{"class":539,"line":3212},[537,11163,4664],{"class":1380},[537,11165,1303],{"class":546},[537,11167,11168,11170,11173,11175,11177,11179,11181,11183,11185,11187,11189,11191],{"class":539,"line":3226},[537,11169,5843],{"class":1296},[537,11171,11172],{"class":1191}," redisValue",[537,11174,1479],{"class":546},[537,11176,1482],{"class":1380},[537,11178,1396],{"class":546},[537,11180,11009],{"class":1191},[537,11182,1560],{"class":546},[537,11184,4582],{"class":1399},[537,11186,1488],{"class":542},[537,11188,10229],{"class":1191},[537,11190,1593],{"class":542},[537,11192,1319],{"class":546},[537,11194,11195,11197,11199,11202,11204],{"class":539,"line":3244},[537,11196,5886],{"class":1380},[537,11198,1384],{"class":542},[537,11200,11201],{"class":1191},"redisValue",[537,11203,3133],{"class":542},[537,11205,1231],{"class":546},[537,11207,11208,11211,11214,11216,11218,11220,11222,11224,11226,11228],{"class":539,"line":3251},[537,11209,11210],{"class":1296},"        const",[537,11212,11213],{"class":1191}," parsed",[537,11215,1479],{"class":546},[537,11217,1557],{"class":1191},[537,11219,1560],{"class":546},[537,11221,3103],{"class":1399},[537,11223,1488],{"class":542},[537,11225,11201],{"class":1191},[537,11227,1593],{"class":542},[537,11229,1319],{"class":546},[537,11231,11232],{"class":539,"line":3259},[537,11233,2478],{"class":542},[537,11235,11236],{"class":539,"line":3290},[537,11237,11238],{"class":1290},"        // Promote to memory cache\n",[537,11240,11241,11244,11246,11248,11250,11252,11254,11256],{"class":539,"line":3295},[537,11242,11243],{"class":546},"        this.",[537,11245,10992],{"class":1191},[537,11247,1560],{"class":546},[537,11249,4443],{"class":1399},[537,11251,1488],{"class":542},[537,11253,10229],{"class":1191},[537,11255,1499],{"class":546},[537,11257,1303],{"class":546},[537,11259,11260,11263,11265,11267],{"class":539,"line":3300},[537,11261,11262],{"class":542},"          value",[537,11264,555],{"class":546},[537,11266,11213],{"class":1191},[537,11268,1518],{"class":546},[537,11270,11271,11274,11276,11278,11280,11282,11284],{"class":539,"line":3340},[537,11272,11273],{"class":542},"          timestamp",[537,11275,555],{"class":546},[537,11277,1344],{"class":1191},[537,11279,1560],{"class":546},[537,11281,1667],{"class":1399},[537,11283,1418],{"class":542},[537,11285,1518],{"class":546},[537,11287,11288,11291,11293,11295,11297,11299],{"class":539,"line":3357},[537,11289,11290],{"class":542},"          ttl",[537,11292,555],{"class":546},[537,11294,1396],{"class":546},[537,11296,5483],{"class":1191},[537,11298,1560],{"class":546},[537,11300,11301],{"class":1191},"defaultTTL\n",[537,11303,11304,11307,11309],{"class":539,"line":3384},[537,11305,11306],{"class":546},"        }",[537,11308,1593],{"class":542},[537,11310,1319],{"class":546},[537,11312,11313],{"class":539,"line":3425},[537,11314,2478],{"class":542},[537,11316,11317,11319,11321],{"class":539,"line":3430},[537,11318,7282],{"class":1380},[537,11320,11213],{"class":1191},[537,11322,1319],{"class":546},[537,11324,11325],{"class":539,"line":3439},[537,11326,5671],{"class":546},[537,11328,11329,11331,11333,11335,11337,11339],{"class":539,"line":3444},[537,11330,1590],{"class":546},[537,11332,3345],{"class":1380},[537,11334,1384],{"class":542},[537,11336,3350],{"class":1191},[537,11338,3133],{"class":542},[537,11340,1231],{"class":546},[537,11342,11343,11345,11347,11349,11351,11353,11356,11358,11360,11362,11364],{"class":539,"line":3469},[537,11344,4618],{"class":1191},[537,11346,1560],{"class":546},[537,11348,3350],{"class":1399},[537,11350,1488],{"class":542},[537,11352,1491],{"class":546},[537,11354,11355],{"class":558},"Redis cache error:",[537,11357,1491],{"class":546},[537,11359,1499],{"class":546},[537,11361,3057],{"class":1191},[537,11363,1593],{"class":542},[537,11365,1319],{"class":546},[537,11367,11368],{"class":539,"line":3505},[537,11369,1425],{"class":546},[537,11371,11372],{"class":539,"line":3511},[537,11373,595],{"emptyLinePlaceholder":594},[537,11375,11376,11378],{"class":539,"line":3517},[537,11377,1430],{"class":1380},[537,11379,11380],{"class":546}," null;\n",[537,11382,11383],{"class":539,"line":3522},[537,11384,1441],{"class":546},[537,11386,11387],{"class":539,"line":3527},[537,11388,595],{"emptyLinePlaceholder":594},[537,11390,11391,11393,11396,11398,11400,11402,11404,11406,11408,11410,11413,11415,11418,11420,11423,11425,11427,11429,11431,11433,11435,11437],{"class":539,"line":3549},[537,11392,1355],{"class":1296},[537,11394,11395],{"class":542}," set",[537,11397,1367],{"class":546},[537,11399,11053],{"class":1100},[537,11401,11056],{"class":546},[537,11403,10229],{"class":2068},[537,11405,555],{"class":546},[537,11407,1316],{"class":1100},[537,11409,1499],{"class":546},[537,11411,11412],{"class":2068}," value",[537,11414,555],{"class":546},[537,11416,11417],{"class":1100}," T",[537,11419,1499],{"class":546},[537,11421,11422],{"class":2068}," ttl",[537,11424,8763],{"class":546},[537,11426,5289],{"class":1100},[537,11428,2710],{"class":546},[537,11430,1364],{"class":1100},[537,11432,1367],{"class":546},[537,11434,1464],{"class":1100},[537,11436,1373],{"class":546},[537,11438,1303],{"class":546},[537,11440,11441,11443,11446,11448,11450,11452,11454,11456,11458,11461],{"class":539,"line":3591},[537,11442,1473],{"class":1296},[537,11444,11445],{"class":1191}," effectiveTTL",[537,11447,1479],{"class":546},[537,11449,11422],{"class":1191},[537,11451,1393],{"class":546},[537,11453,1396],{"class":546},[537,11455,5483],{"class":1191},[537,11457,1560],{"class":546},[537,11459,11460],{"class":1191},"defaultTTL",[537,11462,1319],{"class":546},[537,11464,11465,11467,11470,11472,11474,11476],{"class":539,"line":3597},[537,11466,1473],{"class":1296},[537,11468,11469],{"class":1191}," entry",[537,11471,555],{"class":546},[537,11473,10937],{"class":1100},[537,11475,1479],{"class":546},[537,11477,1303],{"class":546},[537,11479,11480,11483],{"class":539,"line":3603},[537,11481,11482],{"class":1191},"      value",[537,11484,1518],{"class":546},[537,11486,11487,11489,11491,11493,11495,11497,11499],{"class":539,"line":3608},[537,11488,7123],{"class":542},[537,11490,555],{"class":546},[537,11492,1344],{"class":1191},[537,11494,1560],{"class":546},[537,11496,1667],{"class":1399},[537,11498,1418],{"class":542},[537,11500,1518],{"class":546},[537,11502,11503,11506,11508],{"class":539,"line":3613},[537,11504,11505],{"class":542},"      ttl",[537,11507,555],{"class":546},[537,11509,11510],{"class":1191}," effectiveTTL\n",[537,11512,11513],{"class":539,"line":3635},[537,11514,7199],{"class":546},[537,11516,11517],{"class":539,"line":3679},[537,11518,595],{"emptyLinePlaceholder":594},[537,11520,11521],{"class":539,"line":3685},[537,11522,11523],{"class":1290},"    // Set in memory cache\n",[537,11525,11526,11528,11530,11532,11534,11536,11538,11540,11542,11544],{"class":539,"line":3691},[537,11527,1629],{"class":546},[537,11529,10992],{"class":1191},[537,11531,1560],{"class":546},[537,11533,4443],{"class":1399},[537,11535,1488],{"class":542},[537,11537,10229],{"class":1191},[537,11539,1499],{"class":546},[537,11541,11469],{"class":1191},[537,11543,1593],{"class":542},[537,11545,1319],{"class":546},[537,11547,11548,11550,11553,11555],{"class":539,"line":3696},[537,11549,1629],{"class":546},[537,11551,11552],{"class":1399},"enforceMemoryLimit",[537,11554,1418],{"class":542},[537,11556,1319],{"class":546},[537,11558,11559],{"class":539,"line":3701},[537,11560,595],{"emptyLinePlaceholder":594},[537,11562,11563],{"class":539,"line":3725},[537,11564,11565],{"class":1290},"    // Set in Redis cache\n",[537,11567,11568,11570],{"class":539,"line":3747},[537,11569,4664],{"class":1380},[537,11571,1303],{"class":546},[537,11573,11574,11576,11578,11580,11582,11585],{"class":539,"line":5015},[537,11575,1410],{"class":1380},[537,11577,1396],{"class":546},[537,11579,11009],{"class":1191},[537,11581,1560],{"class":546},[537,11583,11584],{"class":1399},"setex",[537,11586,2804],{"class":542},[537,11588,11589,11592,11594],{"class":539,"line":5033},[537,11590,11591],{"class":1191},"        key",[537,11593,1499],{"class":546},[537,11595,6130],{"class":542},[537,11597,11598,11601,11603,11606,11608,11611,11614,11616,11618,11620],{"class":539,"line":5038},[537,11599,11600],{"class":1191},"        Math",[537,11602,1560],{"class":546},[537,11604,11605],{"class":1399},"ceil",[537,11607,1488],{"class":542},[537,11609,11610],{"class":1191},"effectiveTTL",[537,11612,11613],{"class":546}," /",[537,11615,1690],{"class":1689},[537,11617,1593],{"class":542},[537,11619,1499],{"class":546},[537,11621,6130],{"class":542},[537,11623,11624,11627,11629,11631,11633,11635],{"class":539,"line":5043},[537,11625,11626],{"class":1191},"        JSON",[537,11628,1560],{"class":546},[537,11630,1563],{"class":1399},[537,11632,1488],{"class":542},[537,11634,9913],{"class":1191},[537,11636,1584],{"class":542},[537,11638,11639,11642],{"class":539,"line":5083},[537,11640,11641],{"class":542},"      )",[537,11643,1319],{"class":546},[537,11645,11646,11648,11650,11652,11654,11656],{"class":539,"line":5089},[537,11647,1590],{"class":546},[537,11649,3345],{"class":1380},[537,11651,1384],{"class":542},[537,11653,3350],{"class":1191},[537,11655,3133],{"class":542},[537,11657,1231],{"class":546},[537,11659,11660,11662,11664,11666,11668,11670,11673,11675,11677,11679,11681],{"class":539,"line":5094},[537,11661,4618],{"class":1191},[537,11663,1560],{"class":546},[537,11665,3350],{"class":1399},[537,11667,1488],{"class":542},[537,11669,1491],{"class":546},[537,11671,11672],{"class":558},"Redis cache set error:",[537,11674,1491],{"class":546},[537,11676,1499],{"class":546},[537,11678,3057],{"class":1191},[537,11680,1593],{"class":542},[537,11682,1319],{"class":546},[537,11684,11685],{"class":539,"line":5099},[537,11686,1425],{"class":546},[537,11688,11689],{"class":539,"line":5138},[537,11690,1441],{"class":546},[537,11692,11693],{"class":539,"line":5144},[537,11694,595],{"emptyLinePlaceholder":594},[537,11696,11697,11699,11702,11704,11706,11708,11710,11712,11714,11716,11718,11720],{"class":539,"line":5149},[537,11698,1355],{"class":1296},[537,11700,11701],{"class":542}," invalidate",[537,11703,1488],{"class":546},[537,11705,9739],{"class":2068},[537,11707,555],{"class":546},[537,11709,1316],{"class":1100},[537,11711,2710],{"class":546},[537,11713,1364],{"class":1100},[537,11715,1367],{"class":546},[537,11717,1464],{"class":1100},[537,11719,1373],{"class":546},[537,11721,1303],{"class":546},[537,11723,11724],{"class":539,"line":5154},[537,11725,11726],{"class":1290},"    // Invalidate memory cache\n",[537,11728,11729,11731,11733,11735,11737,11739,11741,11743,11745,11748,11750],{"class":539,"line":5194},[537,11730,5818],{"class":1380},[537,11732,1384],{"class":542},[537,11734,1828],{"class":1296},[537,11736,10214],{"class":1191},[537,11738,5828],{"class":546},[537,11740,1396],{"class":546},[537,11742,10992],{"class":1191},[537,11744,1560],{"class":546},[537,11746,11747],{"class":1399},"keys",[537,11749,1403],{"class":542},[537,11751,1231],{"class":546},[537,11753,11754,11756,11758,11760,11763,11765,11767,11769,11771,11773],{"class":539,"line":5200},[537,11755,5886],{"class":1380},[537,11757,1384],{"class":542},[537,11759,5936],{"class":546},[537,11761,11762],{"class":1399},"matchesPattern",[537,11764,1488],{"class":542},[537,11766,10229],{"class":1191},[537,11768,1499],{"class":546},[537,11770,9683],{"class":1191},[537,11772,3027],{"class":542},[537,11774,1231],{"class":546},[537,11776,11777,11779,11781,11783,11786,11788,11790,11792],{"class":539,"line":5205},[537,11778,11243],{"class":546},[537,11780,10992],{"class":1191},[537,11782,1560],{"class":546},[537,11784,11785],{"class":1399},"delete",[537,11787,1488],{"class":542},[537,11789,10229],{"class":1191},[537,11791,1593],{"class":542},[537,11793,1319],{"class":546},[537,11795,11796],{"class":539,"line":5210},[537,11797,5671],{"class":546},[537,11799,11800],{"class":539,"line":5240},[537,11801,1425],{"class":546},[537,11803,11804],{"class":539,"line":5246},[537,11805,595],{"emptyLinePlaceholder":594},[537,11807,11808],{"class":539,"line":5251},[537,11809,11810],{"class":1290},"    // Invalidate Redis cache\n",[537,11812,11813,11815],{"class":539,"line":7450},[537,11814,4664],{"class":1380},[537,11816,1303],{"class":546},[537,11818,11819,11821,11824,11826,11828,11830,11832,11834,11836,11838,11840,11842],{"class":539,"line":7456},[537,11820,5843],{"class":1296},[537,11822,11823],{"class":1191}," keys",[537,11825,1479],{"class":546},[537,11827,1482],{"class":1380},[537,11829,1396],{"class":546},[537,11831,11009],{"class":1191},[537,11833,1560],{"class":546},[537,11835,11747],{"class":1399},[537,11837,1488],{"class":542},[537,11839,9739],{"class":1191},[537,11841,1593],{"class":542},[537,11843,1319],{"class":546},[537,11845,11846,11848,11850,11852,11854,11857,11859,11862,11864],{"class":539,"line":7480},[537,11847,5886],{"class":1380},[537,11849,1384],{"class":542},[537,11851,11747],{"class":1191},[537,11853,1560],{"class":546},[537,11855,11856],{"class":1191},"length",[537,11858,10073],{"class":546},[537,11860,11861],{"class":1689}," 0",[537,11863,3133],{"class":542},[537,11865,1231],{"class":546},[537,11867,11868,11870,11872,11874,11876,11879,11881,11884,11886,11888],{"class":539,"line":7485},[537,11869,5591],{"class":1380},[537,11871,1396],{"class":546},[537,11873,11009],{"class":1191},[537,11875,1560],{"class":546},[537,11877,11878],{"class":1399},"del",[537,11880,1488],{"class":542},[537,11882,11883],{"class":546},"...",[537,11885,11747],{"class":1191},[537,11887,1593],{"class":542},[537,11889,1319],{"class":546},[537,11891,11892],{"class":539,"line":7491},[537,11893,5671],{"class":546},[537,11895,11896,11898,11900,11902,11904,11906],{"class":539,"line":7509},[537,11897,1590],{"class":546},[537,11899,3345],{"class":1380},[537,11901,1384],{"class":542},[537,11903,3350],{"class":1191},[537,11905,3133],{"class":542},[537,11907,1231],{"class":546},[537,11909,11910,11912,11914,11916,11918,11920,11923,11925,11927,11929,11931],{"class":539,"line":7527},[537,11911,4618],{"class":1191},[537,11913,1560],{"class":546},[537,11915,3350],{"class":1399},[537,11917,1488],{"class":542},[537,11919,1491],{"class":546},[537,11921,11922],{"class":558},"Redis cache invalidation error:",[537,11924,1491],{"class":546},[537,11926,1499],{"class":546},[537,11928,3057],{"class":1191},[537,11930,1593],{"class":542},[537,11932,1319],{"class":546},[537,11934,11935],{"class":539,"line":7536},[537,11936,1425],{"class":546},[537,11938,11939],{"class":539,"line":7541},[537,11940,1441],{"class":546},[537,11942,11943],{"class":539,"line":7547},[537,11944,595],{"emptyLinePlaceholder":594},[537,11946,11947,11949,11952,11954,11956],{"class":539,"line":7566},[537,11948,1308],{"class":1296},[537,11950,11951],{"class":542}," enforceMemoryLimit",[537,11953,1361],{"class":546},[537,11955,4430],{"class":1100},[537,11957,1303],{"class":546},[537,11959,11960,11962,11964,11966,11968,11970,11973,11976,11978,11980,11982,11985,11987],{"class":539,"line":7585},[537,11961,1381],{"class":1380},[537,11963,1384],{"class":542},[537,11965,5936],{"class":546},[537,11967,10992],{"class":1191},[537,11969,1560],{"class":546},[537,11971,11972],{"class":1191},"size",[537,11974,11975],{"class":546}," \u003C=",[537,11977,1396],{"class":546},[537,11979,5483],{"class":1191},[537,11981,1560],{"class":546},[537,11983,11984],{"class":1191},"maxSize",[537,11986,3133],{"class":542},[537,11988,1231],{"class":546},[537,11990,11991,11993],{"class":539,"line":7594},[537,11992,4649],{"class":1380},[537,11994,1319],{"class":546},[537,11996,11997],{"class":539,"line":7599},[537,11998,1425],{"class":546},[537,12000,12001],{"class":539,"line":7605},[537,12002,595],{"emptyLinePlaceholder":594},[537,12004,12005,12007,12010,12012,12014,12016,12018,12020,12022,12024,12026,12029,12031],{"class":539,"line":7634},[537,12006,1473],{"class":1296},[537,12008,12009],{"class":1191}," entries",[537,12011,1479],{"class":546},[537,12013,9962],{"class":1191},[537,12015,1560],{"class":546},[537,12017,2603],{"class":1399},[537,12019,1488],{"class":542},[537,12021,5936],{"class":546},[537,12023,10992],{"class":1191},[537,12025,1560],{"class":546},[537,12027,12028],{"class":1399},"entries",[537,12030,4462],{"class":542},[537,12032,1319],{"class":546},[537,12034,12035],{"class":539,"line":7639},[537,12036,2285],{"class":542},[537,12038,12039,12041,12043,12045,12047,12049,12052,12054],{"class":539,"line":7645},[537,12040,3120],{"class":1380},[537,12042,1384],{"class":542},[537,12044,5936],{"class":546},[537,12046,5483],{"class":1191},[537,12048,1560],{"class":546},[537,12050,12051],{"class":1191},"evictionPolicy",[537,12053,3133],{"class":542},[537,12055,1231],{"class":546},[537,12057,12058,12060,12062,12064,12067],{"class":539,"line":7664},[537,12059,3140],{"class":1380},[537,12061,10762],{"class":1191},[537,12063,1560],{"class":546},[537,12065,12066],{"class":1191},"LRU",[537,12068,547],{"class":546},[537,12070,12071,12074,12076,12079,12081,12083,12086,12088,12091,12093,12095,12098,12100,12103,12105,12107,12109,12112,12114,12116,12118,12120,12122,12124,12126],{"class":539,"line":7669},[537,12072,12073],{"class":1191},"        entries",[537,12075,1560],{"class":546},[537,12077,12078],{"class":1399},"sort",[537,12080,1488],{"class":542},[537,12082,1488],{"class":546},[537,12084,12085],{"class":2068},"a",[537,12087,1499],{"class":546},[537,12089,12090],{"class":2068}," b",[537,12092,1593],{"class":546},[537,12094,2074],{"class":1296},[537,12096,12097],{"class":1191}," a",[537,12099,2957],{"class":542},[537,12101,12102],{"class":1689},"1",[537,12104,10232],{"class":542},[537,12106,1560],{"class":546},[537,12108,6656],{"class":1191},[537,12110,12111],{"class":546}," -",[537,12113,12090],{"class":1191},[537,12115,2957],{"class":542},[537,12117,12102],{"class":1689},[537,12119,10232],{"class":542},[537,12121,1560],{"class":546},[537,12123,6656],{"class":1191},[537,12125,1593],{"class":542},[537,12127,1319],{"class":546},[537,12129,12130,12132],{"class":539,"line":7675},[537,12131,3171],{"class":1380},[537,12133,1319],{"class":546},[537,12135,12136,12138,12140,12142,12145],{"class":539,"line":7702},[537,12137,3140],{"class":1380},[537,12139,10762],{"class":1191},[537,12141,1560],{"class":546},[537,12143,12144],{"class":1191},"LFU",[537,12146,547],{"class":546},[537,12148,12149],{"class":539,"line":7728},[537,12150,12151],{"class":1290},"        // Implementation would need access frequency tracking\n",[537,12153,12154,12156,12158,12160,12162,12164,12166,12168,12170,12172,12174,12176,12178,12180,12182,12184,12186,12189,12191,12193,12195,12197,12199,12202,12204,12206,12208,12210,12212,12214,12216,12218],{"class":539,"line":7755},[537,12155,12073],{"class":1191},[537,12157,1560],{"class":546},[537,12159,12078],{"class":1399},[537,12161,1488],{"class":542},[537,12163,1488],{"class":546},[537,12165,12085],{"class":2068},[537,12167,1499],{"class":546},[537,12169,12090],{"class":2068},[537,12171,1593],{"class":546},[537,12173,2074],{"class":1296},[537,12175,1384],{"class":542},[537,12177,12085],{"class":1191},[537,12179,2957],{"class":542},[537,12181,12102],{"class":1689},[537,12183,10232],{"class":542},[537,12185,1560],{"class":546},[537,12187,12188],{"class":1191},"accessCount",[537,12190,1393],{"class":546},[537,12192,11861],{"class":1689},[537,12194,3133],{"class":542},[537,12196,6682],{"class":546},[537,12198,1384],{"class":542},[537,12200,12201],{"class":1191},"b",[537,12203,2957],{"class":542},[537,12205,12102],{"class":1689},[537,12207,10232],{"class":542},[537,12209,1560],{"class":546},[537,12211,12188],{"class":1191},[537,12213,1393],{"class":546},[537,12215,11861],{"class":1689},[537,12217,1693],{"class":542},[537,12219,1319],{"class":546},[537,12221,12222,12224],{"class":539,"line":7782},[537,12223,3171],{"class":1380},[537,12225,1319],{"class":546},[537,12227,12228,12230,12232,12234,12237],{"class":539,"line":7787},[537,12229,3140],{"class":1380},[537,12231,10762],{"class":1191},[537,12233,1560],{"class":546},[537,12235,12236],{"class":1191},"FIFO",[537,12238,547],{"class":546},[537,12240,12241,12243,12245,12247,12249,12251,12253,12255,12257,12259,12261,12263,12265,12267,12269,12271,12273,12275,12277,12279,12281,12283,12285,12287,12289],{"class":539,"line":7813},[537,12242,12073],{"class":1191},[537,12244,1560],{"class":546},[537,12246,12078],{"class":1399},[537,12248,1488],{"class":542},[537,12250,1488],{"class":546},[537,12252,12085],{"class":2068},[537,12254,1499],{"class":546},[537,12256,12090],{"class":2068},[537,12258,1593],{"class":546},[537,12260,2074],{"class":1296},[537,12262,12097],{"class":1191},[537,12264,2957],{"class":542},[537,12266,12102],{"class":1689},[537,12268,10232],{"class":542},[537,12270,1560],{"class":546},[537,12272,6656],{"class":1191},[537,12274,12111],{"class":546},[537,12276,12090],{"class":1191},[537,12278,2957],{"class":542},[537,12280,12102],{"class":1689},[537,12282,10232],{"class":542},[537,12284,1560],{"class":546},[537,12286,6656],{"class":1191},[537,12288,1593],{"class":542},[537,12290,1319],{"class":546},[537,12292,12293,12295],{"class":539,"line":7828},[537,12294,3171],{"class":1380},[537,12296,1319],{"class":546},[537,12298,12299],{"class":539,"line":7854},[537,12300,1425],{"class":546},[537,12302,12303],{"class":539,"line":7863},[537,12304,595],{"emptyLinePlaceholder":594},[537,12306,12307,12309,12312,12314,12316,12318,12321,12323,12326,12328,12330,12332,12334,12336,12338,12340,12342,12344,12346],{"class":539,"line":7868},[537,12308,1473],{"class":1296},[537,12310,12311],{"class":1191}," toRemove",[537,12313,1479],{"class":546},[537,12315,12009],{"class":1191},[537,12317,1560],{"class":546},[537,12319,12320],{"class":1399},"slice",[537,12322,1488],{"class":542},[537,12324,12325],{"class":1689},"0",[537,12327,1499],{"class":546},[537,12329,12009],{"class":1191},[537,12331,1560],{"class":546},[537,12333,11856],{"class":1191},[537,12335,12111],{"class":546},[537,12337,1396],{"class":546},[537,12339,5483],{"class":1191},[537,12341,1560],{"class":546},[537,12343,11984],{"class":1191},[537,12345,1593],{"class":542},[537,12347,1319],{"class":546},[537,12349,12350,12353,12355,12358,12360,12363,12365,12368,12370,12372,12374,12376,12378,12380,12382,12384],{"class":539,"line":7873},[537,12351,12352],{"class":1191},"    toRemove",[537,12354,1560],{"class":546},[537,12356,12357],{"class":1399},"forEach",[537,12359,1488],{"class":542},[537,12361,12362],{"class":546},"([",[537,12364,10229],{"class":2068},[537,12366,12367],{"class":546},"])",[537,12369,2074],{"class":1296},[537,12371,1396],{"class":546},[537,12373,10992],{"class":1191},[537,12375,1560],{"class":546},[537,12377,11785],{"class":1399},[537,12379,1488],{"class":542},[537,12381,10229],{"class":1191},[537,12383,1693],{"class":542},[537,12385,1319],{"class":546},[537,12387,12388],{"class":539,"line":10420},[537,12389,1441],{"class":546},[537,12391,12392],{"class":539,"line":10441},[537,12393,595],{"emptyLinePlaceholder":594},[537,12395,12396,12398,12401,12403,12406,12408,12410,12412,12414],{"class":539,"line":10461},[537,12397,1308],{"class":1296},[537,12399,12400],{"class":542}," isExpired",[537,12402,1488],{"class":546},[537,12404,12405],{"class":2068},"entry",[537,12407,555],{"class":546},[537,12409,10937],{"class":1100},[537,12411,2710],{"class":546},[537,12413,1718],{"class":1100},[537,12415,1303],{"class":546},[537,12417,12418,12420,12422,12424,12426,12428,12430,12432,12434,12436,12438,12440,12442,12445],{"class":539,"line":10480},[537,12419,1430],{"class":1380},[537,12421,1344],{"class":1191},[537,12423,1560],{"class":546},[537,12425,1667],{"class":1399},[537,12427,1670],{"class":542},[537,12429,6682],{"class":546},[537,12431,11469],{"class":1191},[537,12433,1560],{"class":546},[537,12435,6656],{"class":1191},[537,12437,10073],{"class":546},[537,12439,11469],{"class":1191},[537,12441,1560],{"class":546},[537,12443,12444],{"class":1191},"ttl",[537,12446,1319],{"class":546},[537,12448,12449],{"class":539,"line":10485},[537,12450,1441],{"class":546},[537,12452,12453],{"class":539,"line":10493},[537,12454,595],{"emptyLinePlaceholder":594},[537,12456,12457,12459,12462,12464,12466,12468,12470,12472,12474,12476,12478,12480,12482],{"class":539,"line":10498},[537,12458,1308],{"class":1296},[537,12460,12461],{"class":542}," matchesPattern",[537,12463,1488],{"class":546},[537,12465,10229],{"class":2068},[537,12467,555],{"class":546},[537,12469,1316],{"class":1100},[537,12471,1499],{"class":546},[537,12473,9683],{"class":2068},[537,12475,555],{"class":546},[537,12477,1316],{"class":1100},[537,12479,2710],{"class":546},[537,12481,1718],{"class":1100},[537,12483,1303],{"class":546},[537,12485,12486,12488,12490,12492,12494,12496,12498,12500,12502,12504,12506,12508,12510,12512,12514,12516,12518,12520,12522],{"class":539,"line":10514},[537,12487,1473],{"class":1296},[537,12489,9720],{"class":1191},[537,12491,1479],{"class":546},[537,12493,1655],{"class":546},[537,12495,9727],{"class":1399},[537,12497,1488],{"class":542},[537,12499,9739],{"class":1191},[537,12501,1560],{"class":546},[537,12503,6661],{"class":1399},[537,12505,1488],{"class":542},[537,12507,1491],{"class":546},[537,12509,9493],{"class":558},[537,12511,1491],{"class":546},[537,12513,1499],{"class":546},[537,12515,1228],{"class":546},[537,12517,9707],{"class":558},[537,12519,1491],{"class":546},[537,12521,1693],{"class":542},[537,12523,1319],{"class":546},[537,12525,12526,12528,12530,12532,12534,12536,12538,12540],{"class":539,"line":10557},[537,12527,1430],{"class":1380},[537,12529,9720],{"class":1191},[537,12531,1560],{"class":546},[537,12533,9761],{"class":1399},[537,12535,1488],{"class":542},[537,12537,10229],{"class":1191},[537,12539,1593],{"class":542},[537,12541,1319],{"class":546},[537,12543,12544],{"class":539,"line":10562},[537,12545,1441],{"class":546},[537,12547,12548],{"class":539,"line":10567},[537,12549,1751],{"class":546},[537,12551,12552],{"class":539,"line":10577},[537,12553,595],{"emptyLinePlaceholder":594},[537,12555,12556,12558,12560],{"class":539,"line":10583},[537,12557,4048],{"class":1296},[537,12559,10937],{"class":1100},[537,12561,1303],{"class":546},[537,12563,12564,12566,12568,12570],{"class":539,"line":10588},[537,12565,8916],{"class":542},[537,12567,555],{"class":546},[537,12569,3462],{"class":1100},[537,12571,1319],{"class":546},[537,12573,12574,12576,12578,12580],{"class":539,"line":10593},[537,12575,4092],{"class":542},[537,12577,555],{"class":546},[537,12579,5289],{"class":1100},[537,12581,1319],{"class":546},[537,12583,12584,12587,12589,12591],{"class":539,"line":10599},[537,12585,12586],{"class":542},"  ttl",[537,12588,555],{"class":546},[537,12590,5289],{"class":1100},[537,12592,1319],{"class":546},[537,12594,12595,12598,12600,12602],{"class":539,"line":10621},[537,12596,12597],{"class":542},"  accessCount",[537,12599,8763],{"class":546},[537,12601,5289],{"class":1100},[537,12603,1319],{"class":546},[537,12605,12606],{"class":539,"line":10629},[537,12607,1751],{"class":546},[517,12609,12611],{"id":12610},"rate-limiting","Rate Limiting",[522,12613,12615],{"id":12614},"distributed-rate-limiting","Distributed Rate Limiting",[527,12617,12619],{"className":1281,"code":12618,"language":1283,"meta":532,"style":532},"interface RateLimitConfig {\n  windowMs: number;\n  maxRequests: number;\n  keyGenerator: (req: any) => string;\n  skipSuccessfulRequests: boolean;\n  skipFailedRequests: boolean;\n}\n\nclass DistributedRateLimiter {\n  private config: RateLimitConfig;\n  private redisClient: Redis;\n\n  constructor(config: RateLimitConfig) {\n    this.config = config;\n    this.redisClient = new Redis(process.env.REDIS_URL);\n  }\n\n  async isAllowed(req: any): Promise\u003C{ allowed: boolean; remaining: number; resetTime: number }> {\n    const key = this.config.keyGenerator(req);\n    const now = Date.now();\n    const windowStart = now - this.config.windowMs;\n\n    // Remove expired entries\n    await this.redisClient.zremrangebyscore(key, 0, windowStart);\n\n    // Count current requests\n    const currentRequests = await this.redisClient.zcard(key);\n\n    if (currentRequests >= this.config.maxRequests) {\n      const oldestRequest = await this.redisClient.zrange(key, 0, 0, 'WITHSCORES');\n      const resetTime = parseInt(oldestRequest[1]) + this.config.windowMs;\n      \n      return {\n        allowed: false,\n        remaining: 0,\n        resetTime\n      };\n    }\n\n    // Add current request\n    await this.redisClient.zadd(key, now, `${now}-${Math.random()}`);\n    await this.redisClient.expire(key, Math.ceil(this.config.windowMs / 1000));\n\n    return {\n      allowed: true,\n      remaining: this.config.maxRequests - currentRequests - 1,\n      resetTime: now + this.config.windowMs\n    };\n  }\n\n  middleware() {\n    return async (req: any, res: any, next: any) => {\n      const result = await this.isAllowed(req);\n      \n      res.set({\n        'X-RateLimit-Limit': this.config.maxRequests,\n        'X-RateLimit-Remaining': result.remaining,\n        'X-RateLimit-Reset': new Date(result.resetTime).toISOString()\n      });\n\n      if (!result.allowed) {\n        return res.status(429).json({\n          error: 'Too many requests',\n          message: `Rate limit exceeded. Try again in ${Math.ceil((result.resetTime - Date.now()) / 1000)} seconds.`\n        });\n      }\n\n      next();\n    };\n  }\n}\n\n// Usage example\nconst rateLimiter = new DistributedRateLimiter({\n  windowMs: 60 * 1000, // 1 minute\n  maxRequests: 100,\n  keyGenerator: (req) => `rate_limit:${req.user?.id || req.ip}`,\n  skipSuccessfulRequests: false,\n  skipFailedRequests: false\n});\n\napp.use('/api/', rateLimiter.middleware());\n",[534,12620,12621,12630,12641,12652,12675,12686,12697,12701,12705,12714,12726,12738,12742,12758,12770,12798,12802,12806,12858,12883,12902,12926,12930,12935,12964,12968,12973,13001,13005,13030,13075,13110,13114,13120,13131,13142,13147,13152,13156,13160,13165,13215,13259,13263,13269,13280,13306,13327,13331,13335,13339,13348,13384,13408,13412,13425,13447,13467,13501,13509,13513,13532,13557,13573,13625,13633,13637,13641,13650,13654,13658,13662,13666,13670,13687,13705,13716,13761,13771,13780,13788,13792],{"__ignoreMap":532},[537,12622,12623,12625,12628],{"class":539,"line":82},[537,12624,4048],{"class":1296},[537,12626,12627],{"class":1100}," RateLimitConfig",[537,12629,1303],{"class":546},[537,12631,12632,12635,12637,12639],{"class":539,"line":114},[537,12633,12634],{"class":542},"  windowMs",[537,12636,555],{"class":546},[537,12638,5289],{"class":1100},[537,12640,1319],{"class":546},[537,12642,12643,12646,12648,12650],{"class":539,"line":146},[537,12644,12645],{"class":542},"  maxRequests",[537,12647,555],{"class":546},[537,12649,5289],{"class":1100},[537,12651,1319],{"class":546},[537,12653,12654,12657,12659,12661,12663,12665,12667,12669,12671,12673],{"class":539,"line":178},[537,12655,12656],{"class":542},"  keyGenerator",[537,12658,555],{"class":546},[537,12660,1384],{"class":546},[537,12662,2927],{"class":2068},[537,12664,555],{"class":546},[537,12666,3462],{"class":1100},[537,12668,1593],{"class":546},[537,12670,2074],{"class":1296},[537,12672,1316],{"class":1100},[537,12674,1319],{"class":546},[537,12676,12677,12680,12682,12684],{"class":539,"line":268},[537,12678,12679],{"class":542},"  skipSuccessfulRequests",[537,12681,555],{"class":546},[537,12683,1718],{"class":1100},[537,12685,1319],{"class":546},[537,12687,12688,12691,12693,12695],{"class":539,"line":273},[537,12689,12690],{"class":542},"  skipFailedRequests",[537,12692,555],{"class":546},[537,12694,1718],{"class":1100},[537,12696,1319],{"class":546},[537,12698,12699],{"class":539,"line":279},[537,12700,1751],{"class":546},[537,12702,12703],{"class":539,"line":285},[537,12704,595],{"emptyLinePlaceholder":594},[537,12706,12707,12709,12712],{"class":539,"line":291},[537,12708,1297],{"class":1296},[537,12710,12711],{"class":1100}," DistributedRateLimiter",[537,12713,1303],{"class":546},[537,12715,12716,12718,12720,12722,12724],{"class":539,"line":222},[537,12717,1308],{"class":1296},[537,12719,5437],{"class":542},[537,12721,555],{"class":546},[537,12723,12627],{"class":1100},[537,12725,1319],{"class":546},[537,12727,12728,12730,12732,12734,12736],{"class":539,"line":227},[537,12729,1308],{"class":1296},[537,12731,10946],{"class":542},[537,12733,555],{"class":546},[537,12735,10951],{"class":1100},[537,12737,1319],{"class":546},[537,12739,12740],{"class":539,"line":232},[537,12741,595],{"emptyLinePlaceholder":594},[537,12743,12744,12746,12748,12750,12752,12754,12756],{"class":539,"line":238},[537,12745,4344],{"class":1296},[537,12747,1488],{"class":546},[537,12749,5483],{"class":2068},[537,12751,555],{"class":546},[537,12753,12627],{"class":1100},[537,12755,1593],{"class":546},[537,12757,1303],{"class":546},[537,12759,12760,12762,12764,12766,12768],{"class":539,"line":243},[537,12761,1629],{"class":546},[537,12763,5483],{"class":1191},[537,12765,1479],{"class":546},[537,12767,5437],{"class":1191},[537,12769,1319],{"class":546},[537,12771,12772,12774,12776,12778,12780,12782,12784,12786,12788,12790,12792,12794,12796],{"class":539,"line":248},[537,12773,1629],{"class":546},[537,12775,11009],{"class":1191},[537,12777,1479],{"class":546},[537,12779,1655],{"class":546},[537,12781,10951],{"class":1399},[537,12783,1488],{"class":542},[537,12785,11020],{"class":1191},[537,12787,1560],{"class":546},[537,12789,1857],{"class":1191},[537,12791,1560],{"class":546},[537,12793,11029],{"class":1191},[537,12795,1593],{"class":542},[537,12797,1319],{"class":546},[537,12799,12800],{"class":539,"line":671},[537,12801,1441],{"class":546},[537,12803,12804],{"class":539,"line":681},[537,12805,595],{"emptyLinePlaceholder":594},[537,12807,12808,12810,12813,12815,12817,12819,12821,12823,12825,12828,12831,12833,12835,12837,12840,12842,12844,12846,12849,12851,12853,12856],{"class":539,"line":814},[537,12809,1355],{"class":1296},[537,12811,12812],{"class":542}," isAllowed",[537,12814,1488],{"class":546},[537,12816,2927],{"class":2068},[537,12818,555],{"class":546},[537,12820,3462],{"class":1100},[537,12822,2710],{"class":546},[537,12824,1364],{"class":1100},[537,12826,12827],{"class":546},"\u003C{",[537,12829,12830],{"class":542}," allowed",[537,12832,555],{"class":546},[537,12834,1718],{"class":1100},[537,12836,5292],{"class":546},[537,12838,12839],{"class":542}," remaining",[537,12841,555],{"class":546},[537,12843,5289],{"class":1100},[537,12845,5292],{"class":546},[537,12847,12848],{"class":542}," resetTime",[537,12850,555],{"class":546},[537,12852,5289],{"class":1100},[537,12854,12855],{"class":546}," }>",[537,12857,1303],{"class":546},[537,12859,12860,12862,12864,12866,12868,12870,12872,12875,12877,12879,12881],{"class":539,"line":1587},[537,12861,1473],{"class":1296},[537,12863,10214],{"class":1191},[537,12865,1479],{"class":546},[537,12867,1396],{"class":546},[537,12869,5483],{"class":1191},[537,12871,1560],{"class":546},[537,12873,12874],{"class":1399},"keyGenerator",[537,12876,1488],{"class":542},[537,12878,2927],{"class":1191},[537,12880,1593],{"class":542},[537,12882,1319],{"class":546},[537,12884,12885,12887,12890,12892,12894,12896,12898,12900],{"class":539,"line":1598},[537,12886,1473],{"class":1296},[537,12888,12889],{"class":1191}," now",[537,12891,1479],{"class":546},[537,12893,1344],{"class":1191},[537,12895,1560],{"class":546},[537,12897,1667],{"class":1399},[537,12899,1418],{"class":542},[537,12901,1319],{"class":546},[537,12903,12904,12906,12909,12911,12913,12915,12917,12919,12921,12924],{"class":539,"line":1603},[537,12905,1473],{"class":1296},[537,12907,12908],{"class":1191}," windowStart",[537,12910,1479],{"class":546},[537,12912,12889],{"class":1191},[537,12914,12111],{"class":546},[537,12916,1396],{"class":546},[537,12918,5483],{"class":1191},[537,12920,1560],{"class":546},[537,12922,12923],{"class":1191},"windowMs",[537,12925,1319],{"class":546},[537,12927,12928],{"class":539,"line":1626},[537,12929,595],{"emptyLinePlaceholder":594},[537,12931,12932],{"class":539,"line":1645},[537,12933,12934],{"class":1290},"    // Remove expired entries\n",[537,12936,12937,12939,12941,12943,12945,12948,12950,12952,12954,12956,12958,12960,12962],{"class":539,"line":1698},[537,12938,4899],{"class":1380},[537,12940,1396],{"class":546},[537,12942,11009],{"class":1191},[537,12944,1560],{"class":546},[537,12946,12947],{"class":1399},"zremrangebyscore",[537,12949,1488],{"class":542},[537,12951,10229],{"class":1191},[537,12953,1499],{"class":546},[537,12955,11861],{"class":1689},[537,12957,1499],{"class":546},[537,12959,12908],{"class":1191},[537,12961,1593],{"class":542},[537,12963,1319],{"class":546},[537,12965,12966],{"class":539,"line":1703},[537,12967,595],{"emptyLinePlaceholder":594},[537,12969,12970],{"class":539,"line":1708},[537,12971,12972],{"class":1290},"    // Count current requests\n",[537,12974,12975,12977,12980,12982,12984,12986,12988,12990,12993,12995,12997,12999],{"class":539,"line":1723},[537,12976,1473],{"class":1296},[537,12978,12979],{"class":1191}," currentRequests",[537,12981,1479],{"class":546},[537,12983,1482],{"class":1380},[537,12985,1396],{"class":546},[537,12987,11009],{"class":1191},[537,12989,1560],{"class":546},[537,12991,12992],{"class":1399},"zcard",[537,12994,1488],{"class":542},[537,12996,10229],{"class":1191},[537,12998,1593],{"class":542},[537,13000,1319],{"class":546},[537,13002,13003],{"class":539,"line":1743},[537,13004,595],{"emptyLinePlaceholder":594},[537,13006,13007,13009,13011,13014,13017,13019,13021,13023,13026,13028],{"class":539,"line":1748},[537,13008,1381],{"class":1380},[537,13010,1384],{"class":542},[537,13012,13013],{"class":1191},"currentRequests",[537,13015,13016],{"class":546}," >=",[537,13018,1396],{"class":546},[537,13020,5483],{"class":1191},[537,13022,1560],{"class":546},[537,13024,13025],{"class":1191},"maxRequests",[537,13027,3133],{"class":542},[537,13029,1231],{"class":546},[537,13031,13032,13034,13037,13039,13041,13043,13045,13047,13050,13052,13054,13056,13058,13060,13062,13064,13066,13069,13071,13073],{"class":539,"line":2166},[537,13033,5843],{"class":1296},[537,13035,13036],{"class":1191}," oldestRequest",[537,13038,1479],{"class":546},[537,13040,1482],{"class":1380},[537,13042,1396],{"class":546},[537,13044,11009],{"class":1191},[537,13046,1560],{"class":546},[537,13048,13049],{"class":1399},"zrange",[537,13051,1488],{"class":542},[537,13053,10229],{"class":1191},[537,13055,1499],{"class":546},[537,13057,11861],{"class":1689},[537,13059,1499],{"class":546},[537,13061,11861],{"class":1689},[537,13063,1499],{"class":546},[537,13065,1228],{"class":546},[537,13067,13068],{"class":558},"WITHSCORES",[537,13070,1491],{"class":546},[537,13072,1593],{"class":542},[537,13074,1319],{"class":546},[537,13076,13077,13079,13081,13083,13086,13088,13091,13093,13095,13098,13100,13102,13104,13106,13108],{"class":539,"line":2198},[537,13078,5843],{"class":1296},[537,13080,12848],{"class":1191},[537,13082,1479],{"class":546},[537,13084,13085],{"class":1399}," parseInt",[537,13087,1488],{"class":542},[537,13089,13090],{"class":1191},"oldestRequest",[537,13092,2957],{"class":542},[537,13094,12102],{"class":1689},[537,13096,13097],{"class":542},"]) ",[537,13099,1673],{"class":546},[537,13101,1396],{"class":546},[537,13103,5483],{"class":1191},[537,13105,1560],{"class":546},[537,13107,12923],{"class":1191},[537,13109,1319],{"class":546},[537,13111,13112],{"class":539,"line":2540},[537,13113,5881],{"class":542},[537,13115,13116,13118],{"class":539,"line":2546},[537,13117,4649],{"class":1380},[537,13119,1303],{"class":546},[537,13121,13122,13125,13127,13129],{"class":539,"line":2551},[537,13123,13124],{"class":542},"        allowed",[537,13126,555],{"class":546},[537,13128,9317],{"class":3330},[537,13130,1518],{"class":546},[537,13132,13133,13136,13138,13140],{"class":539,"line":2557},[537,13134,13135],{"class":542},"        remaining",[537,13137,555],{"class":546},[537,13139,11861],{"class":1689},[537,13141,1518],{"class":546},[537,13143,13144],{"class":539,"line":2563},[537,13145,13146],{"class":1191},"        resetTime\n",[537,13148,13149],{"class":539,"line":2569},[537,13150,13151],{"class":546},"      };\n",[537,13153,13154],{"class":539,"line":2574},[537,13155,1425],{"class":546},[537,13157,13158],{"class":539,"line":3212},[537,13159,595],{"emptyLinePlaceholder":594},[537,13161,13162],{"class":539,"line":3226},[537,13163,13164],{"class":1290},"    // Add current request\n",[537,13166,13167,13169,13171,13173,13175,13178,13180,13182,13184,13186,13188,13191,13193,13195,13197,13199,13202,13204,13207,13209,13211,13213],{"class":539,"line":3244},[537,13168,4899],{"class":1380},[537,13170,1396],{"class":546},[537,13172,11009],{"class":1191},[537,13174,1560],{"class":546},[537,13176,13177],{"class":1399},"zadd",[537,13179,1488],{"class":542},[537,13181,10229],{"class":1191},[537,13183,1499],{"class":546},[537,13185,12889],{"class":1191},[537,13187,1499],{"class":546},[537,13189,13190],{"class":546}," `${",[537,13192,1667],{"class":1191},[537,13194,1895],{"class":546},[537,13196,6682],{"class":558},[537,13198,2097],{"class":546},[537,13200,13201],{"class":1191},"Math",[537,13203,1560],{"class":546},[537,13205,13206],{"class":1399},"random",[537,13208,1418],{"class":1191},[537,13210,2142],{"class":546},[537,13212,1593],{"class":542},[537,13214,1319],{"class":546},[537,13216,13217,13219,13221,13223,13225,13228,13230,13232,13234,13237,13239,13241,13243,13245,13247,13249,13251,13253,13255,13257],{"class":539,"line":3251},[537,13218,4899],{"class":1380},[537,13220,1396],{"class":546},[537,13222,11009],{"class":1191},[537,13224,1560],{"class":546},[537,13226,13227],{"class":1399},"expire",[537,13229,1488],{"class":542},[537,13231,10229],{"class":1191},[537,13233,1499],{"class":546},[537,13235,13236],{"class":1191}," Math",[537,13238,1560],{"class":546},[537,13240,11605],{"class":1399},[537,13242,1488],{"class":542},[537,13244,5936],{"class":546},[537,13246,5483],{"class":1191},[537,13248,1560],{"class":546},[537,13250,12923],{"class":1191},[537,13252,11613],{"class":546},[537,13254,1690],{"class":1689},[537,13256,1693],{"class":542},[537,13258,1319],{"class":546},[537,13260,13261],{"class":539,"line":3259},[537,13262,595],{"emptyLinePlaceholder":594},[537,13264,13265,13267],{"class":539,"line":3290},[537,13266,1430],{"class":1380},[537,13268,1303],{"class":546},[537,13270,13271,13274,13276,13278],{"class":539,"line":3295},[537,13272,13273],{"class":542},"      allowed",[537,13275,555],{"class":546},[537,13277,3331],{"class":3330},[537,13279,1518],{"class":546},[537,13281,13282,13285,13287,13289,13291,13293,13295,13297,13299,13301,13304],{"class":539,"line":3300},[537,13283,13284],{"class":542},"      remaining",[537,13286,555],{"class":546},[537,13288,1396],{"class":546},[537,13290,5483],{"class":1191},[537,13292,1560],{"class":546},[537,13294,13025],{"class":1191},[537,13296,12111],{"class":546},[537,13298,12979],{"class":1191},[537,13300,12111],{"class":546},[537,13302,13303],{"class":1689}," 1",[537,13305,1518],{"class":546},[537,13307,13308,13311,13313,13315,13318,13320,13322,13324],{"class":539,"line":3340},[537,13309,13310],{"class":542},"      resetTime",[537,13312,555],{"class":546},[537,13314,12889],{"class":1191},[537,13316,13317],{"class":546}," +",[537,13319,1396],{"class":546},[537,13321,5483],{"class":1191},[537,13323,1560],{"class":546},[537,13325,13326],{"class":1191},"windowMs\n",[537,13328,13329],{"class":539,"line":3357},[537,13330,7199],{"class":546},[537,13332,13333],{"class":539,"line":3384},[537,13334,1441],{"class":546},[537,13336,13337],{"class":539,"line":3425},[537,13338,595],{"emptyLinePlaceholder":594},[537,13340,13341,13344,13346],{"class":539,"line":3430},[537,13342,13343],{"class":542},"  middleware",[537,13345,1418],{"class":546},[537,13347,1303],{"class":546},[537,13349,13350,13352,13354,13356,13358,13360,13362,13364,13366,13368,13370,13372,13374,13376,13378,13380,13382],{"class":539,"line":3439},[537,13351,1430],{"class":1380},[537,13353,1452],{"class":1296},[537,13355,1384],{"class":546},[537,13357,2927],{"class":2068},[537,13359,555],{"class":546},[537,13361,3462],{"class":1100},[537,13363,1499],{"class":546},[537,13365,2932],{"class":2068},[537,13367,555],{"class":546},[537,13369,3462],{"class":1100},[537,13371,1499],{"class":546},[537,13373,10312],{"class":2068},[537,13375,555],{"class":546},[537,13377,3462],{"class":1100},[537,13379,1593],{"class":546},[537,13381,2074],{"class":1296},[537,13383,1303],{"class":546},[537,13385,13386,13388,13391,13393,13395,13397,13400,13402,13404,13406],{"class":539,"line":3444},[537,13387,5843],{"class":1296},[537,13389,13390],{"class":1191}," result",[537,13392,1479],{"class":546},[537,13394,1482],{"class":1380},[537,13396,1396],{"class":546},[537,13398,13399],{"class":1399},"isAllowed",[537,13401,1488],{"class":542},[537,13403,2927],{"class":1191},[537,13405,1593],{"class":542},[537,13407,1319],{"class":546},[537,13409,13410],{"class":539,"line":3469},[537,13411,5881],{"class":542},[537,13413,13414,13417,13419,13421,13423],{"class":539,"line":3505},[537,13415,13416],{"class":1191},"      res",[537,13418,1560],{"class":546},[537,13420,4443],{"class":1399},[537,13422,1488],{"class":542},[537,13424,1231],{"class":546},[537,13426,13427,13430,13433,13435,13437,13439,13441,13443,13445],{"class":539,"line":3511},[537,13428,13429],{"class":546},"        '",[537,13431,13432],{"class":542},"X-RateLimit-Limit",[537,13434,1491],{"class":546},[537,13436,555],{"class":546},[537,13438,1396],{"class":546},[537,13440,5483],{"class":1191},[537,13442,1560],{"class":546},[537,13444,13025],{"class":1191},[537,13446,1518],{"class":546},[537,13448,13449,13451,13454,13456,13458,13460,13462,13465],{"class":539,"line":3517},[537,13450,13429],{"class":546},[537,13452,13453],{"class":542},"X-RateLimit-Remaining",[537,13455,1491],{"class":546},[537,13457,555],{"class":546},[537,13459,13390],{"class":1191},[537,13461,1560],{"class":546},[537,13463,13464],{"class":1191},"remaining",[537,13466,1518],{"class":546},[537,13468,13469,13471,13474,13476,13478,13480,13482,13484,13487,13489,13492,13494,13496,13498],{"class":539,"line":3522},[537,13470,13429],{"class":546},[537,13472,13473],{"class":542},"X-RateLimit-Reset",[537,13475,1491],{"class":546},[537,13477,555],{"class":546},[537,13479,1655],{"class":546},[537,13481,1344],{"class":1399},[537,13483,1488],{"class":542},[537,13485,13486],{"class":1191},"result",[537,13488,1560],{"class":546},[537,13490,13491],{"class":1191},"resetTime",[537,13493,1593],{"class":542},[537,13495,1560],{"class":546},[537,13497,6632],{"class":1399},[537,13499,13500],{"class":542},"()\n",[537,13502,13503,13505,13507],{"class":539,"line":3527},[537,13504,5631],{"class":546},[537,13506,1593],{"class":542},[537,13508,1319],{"class":546},[537,13510,13511],{"class":539,"line":3549},[537,13512,595],{"emptyLinePlaceholder":594},[537,13514,13515,13517,13519,13521,13523,13525,13528,13530],{"class":539,"line":3591},[537,13516,5886],{"class":1380},[537,13518,1384],{"class":542},[537,13520,3013],{"class":546},[537,13522,13486],{"class":1191},[537,13524,1560],{"class":546},[537,13526,13527],{"class":1191},"allowed",[537,13529,3133],{"class":542},[537,13531,1231],{"class":546},[537,13533,13534,13536,13538,13540,13542,13544,13547,13549,13551,13553,13555],{"class":539,"line":3597},[537,13535,7282],{"class":1380},[537,13537,2932],{"class":1191},[537,13539,1560],{"class":546},[537,13541,2139],{"class":1399},[537,13543,1488],{"class":542},[537,13545,13546],{"class":1689},"429",[537,13548,1593],{"class":542},[537,13550,1560],{"class":546},[537,13552,1619],{"class":1399},[537,13554,1488],{"class":542},[537,13556,1231],{"class":546},[537,13558,13559,13562,13564,13566,13569,13571],{"class":539,"line":3603},[537,13560,13561],{"class":542},"          error",[537,13563,555],{"class":546},[537,13565,1228],{"class":546},[537,13567,13568],{"class":558},"Too many requests",[537,13570,1491],{"class":546},[537,13572,1518],{"class":546},[537,13574,13575,13578,13580,13582,13585,13587,13589,13591,13593,13596,13598,13601,13603,13605,13607,13609,13611,13613,13615,13617,13619,13622],{"class":539,"line":3608},[537,13576,13577],{"class":542},"          message",[537,13579,555],{"class":546},[537,13581,6648],{"class":546},[537,13583,13584],{"class":558},"Rate limit exceeded. Try again in ",[537,13586,2097],{"class":546},[537,13588,13201],{"class":1191},[537,13590,1560],{"class":546},[537,13592,11605],{"class":1399},[537,13594,13595],{"class":1191},"((result",[537,13597,1560],{"class":546},[537,13599,13600],{"class":1191},"resetTime ",[537,13602,6682],{"class":546},[537,13604,1344],{"class":1191},[537,13606,1560],{"class":546},[537,13608,1667],{"class":1399},[537,13610,1403],{"class":1191},[537,13612,1783],{"class":546},[537,13614,1690],{"class":1689},[537,13616,1593],{"class":1191},[537,13618,1895],{"class":546},[537,13620,13621],{"class":558}," seconds.",[537,13623,13624],{"class":546},"`\n",[537,13626,13627,13629,13631],{"class":539,"line":3613},[537,13628,11306],{"class":546},[537,13630,1593],{"class":542},[537,13632,1319],{"class":546},[537,13634,13635],{"class":539,"line":3635},[537,13636,5671],{"class":546},[537,13638,13639],{"class":539,"line":3679},[537,13640,595],{"emptyLinePlaceholder":594},[537,13642,13643,13646,13648],{"class":539,"line":3685},[537,13644,13645],{"class":1399},"      next",[537,13647,1418],{"class":542},[537,13649,1319],{"class":546},[537,13651,13652],{"class":539,"line":3691},[537,13653,7199],{"class":546},[537,13655,13656],{"class":539,"line":3696},[537,13657,1441],{"class":546},[537,13659,13660],{"class":539,"line":3701},[537,13661,1751],{"class":546},[537,13663,13664],{"class":539,"line":3725},[537,13665,595],{"emptyLinePlaceholder":594},[537,13667,13668],{"class":539,"line":3747},[537,13669,8542],{"class":1290},[537,13671,13672,13674,13677,13679,13681,13683,13685],{"class":539,"line":5015},[537,13673,1828],{"class":1296},[537,13675,13676],{"class":1191}," rateLimiter ",[537,13678,1834],{"class":546},[537,13680,1655],{"class":546},[537,13682,12711],{"class":1399},[537,13684,1488],{"class":1191},[537,13686,1231],{"class":546},[537,13688,13689,13691,13693,13696,13698,13700,13702],{"class":539,"line":5033},[537,13690,12634],{"class":542},[537,13692,555],{"class":546},[537,13694,13695],{"class":1689}," 60",[537,13697,1686],{"class":546},[537,13699,1690],{"class":1689},[537,13701,1499],{"class":546},[537,13703,13704],{"class":1290}," // 1 minute\n",[537,13706,13707,13709,13711,13714],{"class":539,"line":5038},[537,13708,12645],{"class":542},[537,13710,555],{"class":546},[537,13712,13713],{"class":1689}," 100",[537,13715,1518],{"class":546},[537,13717,13718,13720,13722,13724,13726,13728,13730,13732,13735,13737,13739,13741,13743,13745,13748,13750,13752,13754,13757,13759],{"class":539,"line":5043},[537,13719,12656],{"class":1399},[537,13721,555],{"class":546},[537,13723,1384],{"class":546},[537,13725,2927],{"class":2068},[537,13727,1593],{"class":546},[537,13729,2074],{"class":1296},[537,13731,6648],{"class":546},[537,13733,13734],{"class":558},"rate_limit:",[537,13736,2097],{"class":546},[537,13738,2927],{"class":1191},[537,13740,1560],{"class":546},[537,13742,10338],{"class":1191},[537,13744,10224],{"class":546},[537,13746,13747],{"class":1191},"id ",[537,13749,9148],{"class":546},[537,13751,2949],{"class":1191},[537,13753,1560],{"class":546},[537,13755,13756],{"class":1191},"ip",[537,13758,2142],{"class":546},[537,13760,1518],{"class":546},[537,13762,13763,13765,13767,13769],{"class":539,"line":5083},[537,13764,12679],{"class":542},[537,13766,555],{"class":546},[537,13768,9317],{"class":3330},[537,13770,1518],{"class":546},[537,13772,13773,13775,13777],{"class":539,"line":5089},[537,13774,12690],{"class":542},[537,13776,555],{"class":546},[537,13778,13779],{"class":3330}," false\n",[537,13781,13782,13784,13786],{"class":539,"line":5094},[537,13783,1895],{"class":546},[537,13785,1593],{"class":1191},[537,13787,1319],{"class":546},[537,13789,13790],{"class":539,"line":5099},[537,13791,595],{"emptyLinePlaceholder":594},[537,13793,13794,13796,13798,13801,13803,13805,13808,13810,13812,13815,13817,13820,13822],{"class":539,"line":5138},[537,13795,2878],{"class":1191},[537,13797,1560],{"class":546},[537,13799,13800],{"class":1399},"use",[537,13802,1488],{"class":1191},[537,13804,1491],{"class":546},[537,13806,13807],{"class":558},"/api/",[537,13809,1491],{"class":546},[537,13811,1499],{"class":546},[537,13813,13814],{"class":1191}," rateLimiter",[537,13816,1560],{"class":546},[537,13818,13819],{"class":1399},"middleware",[537,13821,4462],{"class":1191},[537,13823,1319],{"class":546},[13825,13826,13827],"p",{},"These integration requirements provide comprehensive guidelines for successfully integrating with the MindPeeker platform, covering authentication, SDK usage, webhooks, data synchronization, security, and performance considerations.",[13829,13830,13831],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":532,"searchDepth":82,"depth":114,"links":13833},[13834,13838,13842,13846,13850,13854],{"id":514,"depth":114,"text":515,"children":13835},[13836,13837],{"id":519,"depth":146,"text":520},{"id":822,"depth":146,"text":823},{"id":1079,"depth":114,"text":1080,"children":13839},[13840,13841],{"id":1083,"depth":146,"text":1084},{"id":1754,"depth":146,"text":1755},{"id":2579,"depth":114,"text":2580,"children":13843},[13844,13845],{"id":2583,"depth":146,"text":2584},{"id":4033,"depth":146,"text":4034},{"id":5256,"depth":114,"text":5257,"children":13847},[13848,13849],{"id":5260,"depth":146,"text":5261},{"id":6326,"depth":146,"text":6327},{"id":7878,"depth":114,"text":7879,"children":13851},[13852,13853],{"id":7882,"depth":146,"text":7883},{"id":8700,"depth":146,"text":8701},{"id":10693,"depth":114,"text":10694,"children":13855},[13856,13857],{"id":10697,"depth":146,"text":10698},{"id":12610,"depth":146,"text":12611},"Technical requirements and guidelines for integrating with MindPeeker platform","md",null,{"icon":393},{"title":471,"description":13858},"Ui6Pet-e-qtudxiQVLAnAQGh6NMrFS1dg2UFTX8VA_A",[13865,13867],{"title":467,"path":468,"stem":469,"description":13866,"children":-1},"Complete data models and schema definitions for MindPeeker platform",{"title":475,"path":476,"stem":477,"description":13868,"children":-1},"Regulatory compliance and industry standards adherence for MindPeeker platform",1776312215025]