@weave_protocol/mund 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/constants.js CHANGED
@@ -534,6 +534,15 @@ export const CODE_PATTERNS = [
534
534
  // Injection Detection Patterns
535
535
  // ============================================================================
536
536
  export const INJECTION_PATTERNS = [
537
+ {
538
+ id: 'injection_classifier',
539
+ name: 'Likely Prompt Injection (local classifier)',
540
+ description: 'A small offline model over word and character n-grams flags text that reads like an attempt to override an agent\'s instructions, including paraphrases no pattern names. Never blocks on its own. Set MUND_CLASSIFIER=0 or disable this rule to turn it off.',
541
+ type: 'injection',
542
+ severity: 'medium',
543
+ action: 'alert',
544
+ enabled: true
545
+ },
537
546
  // Patterns run on normalized text: zero-width characters removed, Unicode
538
547
  // NFKC, curly quotes straightened, whitespace collapsed, and punctuation
539
548
  // other than . , ! ? ' " ( ) - replaced by spaces (so "System:" reads "System").
@@ -562,7 +571,7 @@ export const INJECTION_PATTERNS = [
562
571
  name: 'Prompt Injection - Addressed to the AI',
563
572
  description: 'Content that speaks to an AI reading it, a sign it was planted for an agent rather than written for a person',
564
573
  type: 'injection',
565
- pattern: String.raw `(?i)\bif\s+you(?:'re|\s+are)\s+(?:an?\s+)?(?:ai|llm|large\s+language\s+model|language\s+model|ai\s+assistant|ai\s+agent|ai\s+model|chatbot|gpt|chatgpt|claude|gemini|copilot)\b|\bif\s+you(?:'re|\s+are)\s+reading\s+this,?\s+(?:you\s+)?(?:must|should|need\s+to|have\s+to|are\s+required)\b|\b(?:note|message|instructions?)\s+(?:to|for)\s+(?:the\s+|any\s+|all\s+)?(?:ai|llm|ai\s+assistant|ai\s+agent|language\s+model|chatbot)s?\b|\b(?:any|all)\s+ai\s+(?:agents?|assistants?|models?|systems?)\s+(?:from|must|are|should|reading)\b|\b(?:ai|llm)\s+(?:agents?|assistants?|models?)\s*,?\s+(?:must|should|shall|please|you\s+must|in\s+addition|are\s+(?:required|instructed|forbidden|not\s+allowed|prohibited))\b|\b(?:ai|llm)\s+must\s+(?:refuse|ignore|not|always|never|include|respond|reply|send)\b`,
574
+ pattern: String.raw `(?i)\bif\s+you(?:'re|\s+are)\s+(?:an?\s+)?(?:ai|llm|large\s+language\s+model|language\s+model|ai\s+assistant|ai\s+agent|ai\s+model|chatbot|gpt|chatgpt|claude|gemini|copilot)\b|\bif\s+you(?:'re|\s+are)\s+reading\s+this,?\s+(?:you\s+)?(?:must|should|need\s+to|have\s+to|are\s+required)\b|\b(?:note|message|instructions?)\s+(?:to|for)\s+(?:the\s+|any\s+|all\s+)?(?:ai|llm|ai\s+assistant|ai\s+agent|language\s+model|chatbot)s?\b|\b(?:any|all)\s+ai\s+(?:agents?|assistants?|models?|systems?)\s+(?:from|must|are|should|reading)\b|\b(?:ai|llm)\s+(?:agents?|assistants?|models?)\s*,\s*(?:you\s+)?(?:must|should|shall|please|in\s+addition)\b|\b(?:ai|llm)\s+(?:agents?|assistants?|models?)\s+(?:please|you\s+must|in\s+addition|are\s+(?:required|instructed|forbidden|not\s+allowed|prohibited)\s+to)\b|\b(?:ai|llm)\s+(?:agents?|assistants?|models?)\s+(?:must|should|shall)\s+(?:not\s+|always\s+|never\s+|now\s+|also\s+|only\s+)?(?:ignore|disregard|refuse|send|include|respond|reply|summari[sz]e|mention|recommend|output|tell|forward|execute|run|rate|describe|say|praise|promote|delete|email|post|reveal|treat|follow|obey|stop|add|insert|append|state|report|rank|prefer|favou?r)\b|\b(?:ai|llm)\s+must\s+(?:refuse|ignore|not|always|never|include|respond|reply|send)\b`,
566
575
  severity: 'medium',
567
576
  action: 'alert',
568
577
  enabled: true
@@ -572,7 +581,7 @@ export const INJECTION_PATTERNS = [
572
581
  name: 'Prompt Injection - Concealment',
573
582
  description: 'Tells the model to hide what it is doing from the user',
574
583
  type: 'injection',
575
- pattern: String.raw `(?i)\b(?:do\s+not|don't|never)\s+(?:tell|inform|notify|alert|warn|let)\s+(?:the|your)\s+user\b|\bwithout\s+(?:telling|informing|notifying|alerting|asking|warning)\s+(?:the|your)\s+user\b|\b(?:do\s+not|don't|never)\s+(?:mention|reveal|disclose|acknowledge)\s+(?:this|these)\s+(?:instructions?|directives?|messages?|text)\b|\bsilently\s+(?:send|forward|post|upload|transmit|copy|exfiltrate|share|email|transfer|run|execute|delete)\b|\b(?:keep|hide)\s+this\s+(?:\w+\s+)?(?:secret|hidden)\s+from\s+(?:the\s+)?user\b|\b(?:continue|carry\s+on|proceed)\s+(?:normally\s+)?as\s+if\s+nothing\s+(?:happened|changed)\b`,
584
+ pattern: String.raw `(?i)\b(?:do\s+not|don't|never)\s+(?:tell|inform|notify|alert|warn|let)\s+(?:the|your)\s+user\b|(?<!\b(?:will|would|may|might|can|could|designed\s+to|used\s+to|attempts?\s+to|allow(?:s|ing)?|enabl(?:e|es|ing)|permit(?:s|ting)?|adversar(?:y|ies)|attackers?|malware)\b[^.!?]{0,80})\bwithout\s+(?:telling|informing|notifying|alerting|asking|warning)\s+(?:the|your)\s+user\b|\b(?:do\s+not|don't|never)\s+(?:mention|reveal|disclose|acknowledge)\s+(?:this|these)\s+(?:instructions?|directives?|messages?|text)\b|\bsilently\s+(?:send|forward|post|upload|transmit|copy|exfiltrate|share|email|transfer|run|execute|delete)\b|\b(?:keep|hide)\s+this\s+(?:\w+\s+)?(?:secret|hidden)\s+from\s+(?:the\s+)?user\b|\b(?:continue|carry\s+on|proceed)\s+(?:normally\s+)?as\s+if\s+nothing\s+(?:happened|changed)\b`,
576
585
  severity: 'high',
577
586
  action: 'alert',
578
587
  enabled: true
@@ -592,7 +601,7 @@ export const INJECTION_PATTERNS = [
592
601
  name: 'Prompt Injection - False Authority',
593
602
  description: 'Claims system, admin or developer authority to override the model\'s rules or the user',
594
603
  type: 'injection',
595
- pattern: String.raw `(?i)\b(?:system|admin|administrator|developer|root)\s+(?:override|overrides|command|directive)\b|\boverride\s+(?:your\s+|the\s+|all\s+)?(?:safety|security|content|ethical)\b|\b(?:who|that)\s+(?:deployed|created|built|trained|programmed)\s+you\b|\bstop\s+responding\s+to\s+(?:them|the\s+user)\b`,
604
+ pattern: String.raw `(?i)\b(?:system|admin|administrator|developer|root)\s+(?:override|overrides|directive)\b|\boverride\s+(?:your\s+|the\s+|all\s+)?(?:safety|security|content|ethical)\b|\b(?:who|that)\s+(?:deployed|created|built|trained|programmed)\s+you\b|\bstop\s+responding\s+to\s+(?:them|the\s+user)\b`,
596
605
  severity: 'high',
597
606
  action: 'alert',
598
607
  enabled: true
@@ -602,7 +611,7 @@ export const INJECTION_PATTERNS = [
602
611
  name: 'Prompt Injection - Jailbreak Attempt',
603
612
  description: 'Persona and framing jailbreaks: unrestricted personas, no-ethics claims, developer mode, forced prefixes',
604
613
  type: 'injection',
605
- pattern: String.raw `(?i)\bDAN\s+mode\b|\bdo\s+anything\s+now\b|\bpretend\s+you\s+(?:are|have)\s+no\s+(?:restrictions|limits)\b|\bact\s+as\s+(?:if|an?)\s+(?:unrestricted|unfiltered)\b|\b(?:unfiltered|uncensored|amoral|unrestricted|unconstrained|unaligned|jailbroken)\s+(?:and\s+\w+\s+)?(?:ai|assistant|chatbot|bot|model|mode|version|character|persona|llm)\b|\b(?:no|without|doesn't\s+have\s+any|does\s+not\s+have\s+any|free\s+(?:of|from)|not\s+bound\s+by)\s+(?:any\s+)?(?:ethical|moral|safety|content)(?:\s+or\s+(?:ethical|moral|safety))?\s+(?:guidelines|restrictions|filters|limits|polic(?:y|ies)|principles|constraints|boundaries)\b|\bbypass(?:es|ing)?\s+(?:all\s+|any\s+)?(?:content|safety|ethical)\s+(?:polic(?:y|ies)|filters|guidelines|restrictions)\b|\bnever\s+refuses?\b|\bdeveloper\s+mode\s+(?:enabled|output|response)\b|\bwith\s+developer\s+mode\b|\bstarting\s+with\s+exactly\b|\b(?:start|begin)\s+(?:your\s+)?(?:response|reply|answer)\s+with\s+exactly\b|\b(?:act|pretend|play|roleplay)\s+as\s+my\s+(?:deceased|late|dead)\b`,
614
+ pattern: String.raw `(?i)\bDAN\s+mode\b|\bdo\s+anything\s+now\b|\bpretend\s+you\s+(?:are|have)\s+no\s+(?:restrictions|limits)\b|\bact\s+as\s+(?:if|an?)\s+(?:unrestricted|unfiltered)\b|\b(?:unfiltered|uncensored|amoral|unrestricted|unconstrained|unaligned|jailbroken)\s+(?:and\s+\w+\s+)?(?:ai|assistant|chatbot|bot|model|mode|version|character|persona|llm)\b|\b(?:no|without|doesn't\s+have\s+any|does\s+not\s+have\s+any|free\s+(?:of|from)|not\s+bound\s+by)\s+(?:any\s+)?(?:ethical|moral|safety|content)(?:\s+or\s+(?:ethical|moral|safety))?\s+(?:guidelines|restrictions|filters|limits|polic(?:y|ies)|principles|constraints|boundaries)\b|(?<!\b(?:will|would|may|might|can|could|designed\s+to|used\s+to|attempts?\s+to|allow(?:s|ing)?|enabl(?:e|es|ing)|permit(?:s|ting)?|adversar(?:y|ies)|attackers?|malware)\b[^.!?]{0,80})\bbypass\s+(?:all\s+|any\s+|your\s+|the\s+)?(?:content|safety|ethical)\s+(?:polic(?:y|ies)|filters?|guidelines|restrictions)\b|\bnever\s+refuses?\b|\bdeveloper\s+mode\s+(?:enabled|output|response)\b|\bwith\s+developer\s+mode\b|\bstarting\s+with\s+exactly\b|\b(?:start|begin)\s+(?:your\s+)?(?:response|reply|answer)\s+with\s+exactly\b|\b(?:act|pretend|play|roleplay)\s+as\s+my\s+(?:deceased|late|dead)\b`,
606
615
  severity: 'high',
607
616
  action: 'alert',
608
617
  enabled: true
@@ -612,7 +621,7 @@ export const INJECTION_PATTERNS = [
612
621
  name: 'Prompt Injection - Decode and Execute',
613
622
  description: 'Asks the model to decode or translate hidden text and then act on it',
614
623
  type: 'injection',
615
- pattern: String.raw `(?i)\b(?:decode|translate|decrypt|deobfuscate|unscramble)\b[^.\n]{0,80}\b(?:and|then)\s+(?:execute|follow|run|obey|perform|carry\s+out|act\s+on)\b`,
624
+ pattern: String.raw `(?i)(?<!\b(?:will|would|may|might|can|could|designed\s+to|used\s+to|attempts?\s+to|allow(?:s|ing)?|enabl(?:e|es|ing)|permit(?:s|ting)?|adversar(?:y|ies)|attackers?|malware)\b[^.!?]{0,80})\b(?:decode|translate|decrypt|deobfuscate|unscramble)\b[^.\n]{0,80}\b(?:and|then)\s+(?:execute|follow|run|obey|perform|carry\s+out|act\s+on)\b`,
616
625
  severity: 'high',
617
626
  action: 'alert',
618
627
  enabled: true
@@ -642,7 +651,7 @@ export const INJECTION_PATTERNS = [
642
651
  name: 'Prompt Injection - User Data Harvest',
643
652
  description: 'Asks the model to collect or output the user\'s private data',
644
653
  type: 'injection',
645
- pattern: String.raw `(?i)\b(?:respond|reply|include|output|print|list|share|extract|collect|harvest|gather|reveal|send)\s+(?:with\s+)?(?:\S+\s+){0,3}?(?:the\s+)?(?:user's|users'|their)\s+(?:\w+\s+){0,2}?(?:conversation\s+history|chat\s+history|messages|e-?mail\s+addresses|location|credentials|passwords?|session|cookies|account\s+details|contacts)\b`,
654
+ pattern: String.raw `(?i)(?<!\b(?:will|would|may|might|can|could|designed\s+to|used\s+to|attempts?\s+to|allow(?:s|ing)?|enabl(?:e|es|ing)|permit(?:s|ting)?|adversar(?:y|ies)|attackers?|malware)\b[^.!?]{0,80})\b(?:respond|reply|include|output|print|list|share|extract|collect|harvest|gather|reveal|send)\s+(?:with\s+)?(?:\S+\s+){0,3}?(?:the\s+)?(?:user's|users'|their)\s+(?:\w+\s+){0,2}?(?:conversation\s+history|chat\s+history|messages|e-?mail\s+addresses|location|credentials|passwords?|session|cookies|account\s+details|contacts)\b`,
646
655
  severity: 'high',
647
656
  action: 'alert',
648
657
  enabled: true
@@ -666,6 +675,26 @@ export const INJECTION_PATTERNS = [
666
675
  severity: 'low',
667
676
  action: 'log',
668
677
  enabled: true
678
+ },
679
+ {
680
+ id: 'harmful_artifact_request',
681
+ name: 'Request for a Working Malicious Artifact',
682
+ description: 'Asks the agent to produce working malware or a phishing kit: an imperative request to write or build a keylogger, ransomware, phishing email, credential harvester or similar, with cues that it should work for real (complete, convincing, undetectable, in full technical detail). Descriptions of such tools, and defensive guidance, are not requests.',
683
+ type: 'injection',
684
+ pattern: String.raw `(?i)(?:^|[.!?:]\s+|\b(?:please|can\s+you|could\s+you|would\s+you|i\s+need\s+you\s+to|i\s+want\s+you\s+to|help\s+me|how\s+to|your\s+task\s+is\s+to|go\s+ahead\s+and)\s+)(?:write|generate|create|build|code|develop|produce|craft|compose|implement|make)\b(?:(?!\b(?:detect\w*|detection|rules?|signatures?|yara|sigma|scanners?|filters?|classifiers?|defen[cs]\w*|protect\w*|against|analy[sz]\w*|identif\w*|block\w*|prevent\w*|mitigat\w*)\b)[^.!?]){0,90}?\b(?:key\s?loggers?|ransomware|phishing\s+(?:e-?mails?|messages?|pages?|sites?|kits?|templates?|campaigns?|links?)|credential[\s-](?:harvest(?:er|ing)|stealers?|collection)|password\s+stealers?|info[\s-]?stealers?|stalkerware|spyware|rootkits?|botnets?|(?:remote\s+access\s+)?trojans?)\b(?=[\s\S]{0,300}?\b(?:complete|working|fully\s+functional|functional|convincing|realistic|deployable|undetectable|evad(?:e|es|ing)\s+(?:antivirus|av|edr|detection)|technical\s+accuracy|in\s+(?:full\s+)?detail|impersonat(?:e|es|ing)|captures?|steals?|exfiltrat(?:e|es))\b)`,
685
+ severity: 'medium',
686
+ action: 'alert',
687
+ enabled: true
688
+ },
689
+ {
690
+ id: 'prompt_injection_policy_probe',
691
+ name: 'Prompt Injection - Guardrail Mapping',
692
+ description: 'Maps the agent\'s guardrails: asks which tools, URLs or commands it may use and, in the same request, which are denied or need approval; or asks for its hidden reasoning together with the rules or constraints it follows',
693
+ type: 'injection',
694
+ pattern: String.raw `(?i)\b(?:tools?|capabilit(?:y|ies)|urls?|url\s+patterns?|domains?|commands?|actions?|endpoints?|apis?)\b[^.?!\n]{0,40}\b(?:are\s+you|you\s+are|you're)\s+(?:\w+\s+)?(?:allowed|permitted)\s+to\b(?=[\s\S]{0,400}?\b(?:denied|forbidden|blocked|prohibited|not\s+allowed|disallowed|(?:require|need)s?\s+(?:human\s+|user\s+|explicit\s+)?approval)\b)|\b(?:constraints?|restrictions?|guidelines?|rules?|instructions?|guardrails?|polic(?:y|ies))\b[\s\S]{0,400}?\b(?:output|reveal|print|show|share|dump|expose|include)\s+(?:me\s+)?(?:your\s+)?(?:(?:full|raw|hidden|internal|private|complete)\s+)*(?:reasoning\s+trace|chain[\s-]of[\s-]thought|hidden\s+reasoning|internal\s+reasoning)\b|\b(?:output|reveal|print|show|share|dump|expose|include)\s+(?:me\s+)?(?:your\s+)?(?:(?:full|raw|hidden|internal|private|complete)\s+)*(?:reasoning\s+trace|chain[\s-]of[\s-]thought|hidden\s+reasoning|internal\s+reasoning)\b[\s\S]{0,400}?\b(?:constraints?|restrictions?|guidelines?|rules?|instructions?|guardrails?|polic(?:y|ies))\b`,
695
+ severity: 'medium',
696
+ action: 'alert',
697
+ enabled: true
669
698
  }
670
699
  ];
671
700
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM;IACjB,YAAY,EAAE,QAAQ;IACtB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,MAAM;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2CAA2C;QACpD,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,qGAAqG;QAC9G,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2CAA2C;QACpD,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,4EAA4E;QACrF,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uFAAuF;QAChG,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,oDAAoD;QACjE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,4EAA4E;QACrF,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,4BAA4B;QACzC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,kFAAkF;QAC3F,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,mDAAmD;QAC5D,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,4BAA4B;QACzC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yEAAyE;QAClF,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,oCAAoC;QAC7C,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,oEAAoE;QAC7E,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,wDAAwD;QACjE,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,8DAA8D;QACvE,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,+DAA+D;QACxE,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,6DAA6D;QACtE,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,wFAAwF;QACjG,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,gEAAgE;QACzE,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yDAAyD;QAClE,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yBAAyB;QAClC,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,8CAA8C;QACvD,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,mCAAmC;QAC5C,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,wBAAwB;QACrC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAEF,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,YAAY,GAAoB;IAC3C;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,qCAAqC;QAC9C,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,qGAAqG;QAC9G,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,iDAAiD;QAC1D,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,wEAAwE;QACjF,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,2GAA2G;QACpH,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;KACf;CACF,CAAC;AAEF,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,uEAAuE;IACvE,8EAA8E;IAC9E;QACE,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,2HAA2H;QACxI,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,kVAAkV;QACrW,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,yEAAyE;QACtF,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,oIAAoI,GAAG,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA,gBAAgB;QAC9L,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,iDAAiD;QAC9D,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,iLAAiL;QACpM,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,2EAA2E;QACxF,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,2JAA2J;QAC9K,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,oEAAoE;QACjF,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,2GAA2G;QAC9H,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,0EAA0E;QAC7F,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,cAAc;QACpB,4EAA4E;QAC5E,uEAAuE;QACvE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,+LAA+L;QAClN,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,kFAAkF;QAC3F,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,qCAAqC;QAC9C,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,0CAA0C;QACnD,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,oEAAoE;QAC7E,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,iDAAiD;QAC9D,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,8HAA8H;QACvI,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAEF,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,kBAAkB,GAAoB;IACjD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,4CAA4C;QAClD,WAAW,EAAE,+PAA+P;QAC5Q,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD,0EAA0E;IAC1E,yEAAyE;IACzE,iFAAiF;IACjF;QACE,EAAE,EAAE,yBAAyB;QAC7B,IAAI,EAAE,wCAAwC;QAC9C,WAAW,EAAE,0GAA0G;QACvH,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,w7GAAw7G;QAC38G,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,kFAAkF;QAC/F,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,ggCAAggC;QACnhC,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,IAAI,EAAE,wCAAwC;QAC9C,WAAW,EAAE,8GAA8G;QAC3H,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,uuCAAuuC;QAC1vC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,wDAAwD;QACrE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,uxBAAuxB;QAC1yB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,0EAA0E;QACvF,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,wMAAwM;QAC3N,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EAAE,wFAAwF;QACrG,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,+RAA+R;QAClT,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,IAAI,EAAE,sCAAsC;QAC5C,WAAW,EAAE,0GAA0G;QACvH,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,irCAAirC;QACpsC,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,iCAAiC;QACrC,IAAI,EAAE,uCAAuC;QAC7C,WAAW,EAAE,sEAAsE;QACnF,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,2UAA2U;QAC9V,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,yGAAyG;QACtH,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,ggBAAggB;QACnhB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,IAAI,EAAE,6CAA6C;QACnD,WAAW,EAAE,+EAA+E;QAC5F,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,6zCAA6zC;QACh1C,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,IAAI,EAAE,sCAAsC;QAC5C,WAAW,EAAE,8DAA8D;QAC3E,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,kgBAAkgB;QACrhB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,uCAAuC;QAC7C,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,6KAA6K;QAChM,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,0CAA0C;QAChD,WAAW,EAAE,sFAAsF;QACnG,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,+bAA+b;QACld,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE,0CAA0C;QAChD,WAAW,EAAE,6VAA6V;QAC1W,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,++BAA++B;QAClgC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,IAAI,EAAE,sCAAsC;QAC5C,WAAW,EAAE,6NAA6N;QAC1O,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,6+BAA6+B;QAChgC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAEF,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD;QACE,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,6IAA6I;QAC1J,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,6UAA6U;QAChW,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,wFAAwF;QACrG,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAA,6lBAA6lB;QAChnB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,0JAA0J;QACnK,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,mDAAmD;QAC5D,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,sDAAsD;QACnE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,2FAA2F;QACpG,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAEF,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,6BAA6B;IAC7B,gBAAgB;IAChB,wBAAwB;IACxB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,YAAY;IACZ,eAAe;IAEf,yBAAyB;IACzB,WAAW;IACX,eAAe;IACf,UAAU;IAEV,uBAAuB;IACvB,sBAAsB;IAEtB,oCAAoC;IACpC,gDAAgD;CACjD,CAAC;AAEF,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,GAAG,eAAe;IAClB,GAAG,YAAY;IACf,GAAG,aAAa;IAChB,GAAG,kBAAkB;IACrB,GAAG,qBAAqB;CACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weave_protocol/mund",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
4
4
  "description": "The Guardian Protocol - MCP-based security monitoring for agentic AI systems",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Mund - local prompt-injection classifier (Mund 0.6.0)
3
+ *
4
+ * A small linear model over hashed word and character n-grams. It runs
5
+ * offline in microseconds, needs no API key or download, and catches
6
+ * paraphrased injections that no fixed pattern names. It backs up the
7
+ * rules; it never replaces them.
8
+ *
9
+ * The same featurizer is used to train the shipped weights and to score at
10
+ * runtime, so the two can't drift apart.
11
+ */
12
+
13
+ export const FEATURE_BITS = 18;
14
+ const DIM = 1 << FEATURE_BITS;
15
+
16
+ export interface InjectionModel {
17
+ version: string;
18
+ bits: number;
19
+ bias: number;
20
+ /** Decision threshold on the probability, chosen on validation data */
21
+ threshold: number;
22
+ /** Sparse weights: feature index -> weight */
23
+ weights: Map<number, number>;
24
+ }
25
+
26
+ /** FNV-1a 32-bit */
27
+ function hash(s: string): number {
28
+ let h = 0x811c9dc5;
29
+ for (let i = 0; i < s.length; i++) {
30
+ h ^= s.charCodeAt(i);
31
+ h = Math.imul(h, 0x01000193);
32
+ }
33
+ return h >>> 0;
34
+ }
35
+
36
+ export function normalizeForModel(text: string): string {
37
+ return text
38
+ .normalize('NFKC')
39
+ .replace(/[​-‍⁠­]/g, '')
40
+ .toLowerCase()
41
+ .replace(/\s+/g, ' ')
42
+ .trim();
43
+ }
44
+
45
+ /**
46
+ * Features of a text: word unigrams and bigrams, and character 3-5-grams
47
+ * within words. Binary, L2-normalized, hashed into 2^18 buckets.
48
+ */
49
+ export function featurize(text: string): Map<number, number> {
50
+ const t = normalizeForModel(text);
51
+ const words = t.match(/[\p{L}\p{N}']+/gu) ?? [];
52
+ const keys = new Set<number>();
53
+ const add = (k: string) => keys.add(hash(k) & (DIM - 1));
54
+ for (let i = 0; i < words.length; i++) {
55
+ const w = words[i];
56
+ add(`w:${w}`);
57
+ if (i + 1 < words.length) add(`b:${w} ${words[i + 1]}`);
58
+ const padded = ` ${w} `;
59
+ if (padded.length <= 40) {
60
+ for (let n = 3; n <= 5; n++) for (let j = 0; j + n <= padded.length; j++) add(`c:${padded.slice(j, j + n)}`);
61
+ }
62
+ }
63
+ const v = new Map<number, number>();
64
+ if (!keys.size) return v;
65
+ const x = 1 / Math.sqrt(keys.size);
66
+ for (const k of keys) v.set(k, x);
67
+ return v;
68
+ }
69
+
70
+ const sigmoid = (z: number) => 1 / (1 + Math.exp(-z));
71
+
72
+ /** Probability that one window of text is a prompt injection. */
73
+ export function scoreWindow(text: string, model: InjectionModel): number {
74
+ let z = model.bias;
75
+ for (const [k, x] of featurize(text)) z += (model.weights.get(k) ?? 0) * x;
76
+ return sigmoid(z);
77
+ }
78
+
79
+ /**
80
+ * Long content (a web page, a tool result) is scored in windows of about
81
+ * 800 characters, cut at paragraph or sentence breaks; the highest window
82
+ * counts, so an injection buried in a long document isn't averaged away.
83
+ */
84
+ export function windows(text: string, size = 800): string[] {
85
+ if (text.length <= size * 1.5) return [text];
86
+ const parts = text.split(/(?<=\n\s*\n)|(?<=[.!?])\s+/);
87
+ const out: string[] = [];
88
+ let cur = '';
89
+ for (const p of parts) {
90
+ if (cur && cur.length + p.length > size) { out.push(cur); cur = ''; }
91
+ cur += (cur ? ' ' : '') + p;
92
+ while (cur.length > size * 2) { out.push(cur.slice(0, size)); cur = cur.slice(size); }
93
+ }
94
+ if (cur.trim()) out.push(cur);
95
+ return out;
96
+ }
97
+
98
+ /**
99
+ * Sentences (and pairs of neighbours) inside a window, so an injection
100
+ * appended to an innocent question isn't diluted by it.
101
+ */
102
+ export function sentences(text: string): string[] {
103
+ const parts = text.split(/(?<=[.!?])\s+|\n+|(?<=\?)(?=\S)/).map((s) => s.trim()).filter((s) => s.length >= 12);
104
+ if (parts.length < 2) return [];
105
+ const out = [...parts];
106
+ for (let i = 0; i + 1 < parts.length; i++) out.push(`${parts[i]} ${parts[i + 1]}`);
107
+ return out;
108
+ }
109
+
110
+ export function scoreInjection(text: string, model: InjectionModel, opts: { sentences?: boolean } = {}): { score: number; window: string } {
111
+ let best = { score: 0, window: '' };
112
+ for (const w of windows(text)) {
113
+ for (const piece of [w, ...(opts.sentences === false ? [] : sentences(w))]) {
114
+ const score = scoreWindow(piece, model);
115
+ if (score > best.score) best = { score, window: piece };
116
+ }
117
+ }
118
+ return best;
119
+ }
120
+
121
+ /**
122
+ * Decode the shipped model: base64 of [u32 count][u32 index, i8 weight]...
123
+ * with a float scale, kept compact so the package stays small.
124
+ */
125
+ export function decodeModel(encoded: { version: string; bits: number; bias: number; threshold: number; scale: number; data: string }): InjectionModel {
126
+ const buf = Buffer.from(encoded.data, 'base64');
127
+ const weights = new Map<number, number>();
128
+ let prev = 0;
129
+ let i = 0;
130
+ while (i < buf.length) {
131
+ // delta-encoded index (varint), then an int8 weight
132
+ let delta = 0, shift = 0, b: number;
133
+ do { b = buf[i++]; delta |= (b & 0x7f) << shift; shift += 7; } while (b & 0x80);
134
+ prev += delta;
135
+ const q = buf.readInt8(i++);
136
+ weights.set(prev, q * encoded.scale);
137
+ }
138
+ return { version: encoded.version, bits: encoded.bits, bias: encoded.bias, threshold: encoded.threshold, weights };
139
+ }
140
+
141
+ export function encodeModel(model: { version: string; bias: number; threshold: number; weights: Map<number, number> }): { version: string; bits: number; bias: number; threshold: number; scale: number; data: string } {
142
+ const entries = [...model.weights.entries()].filter(([, w]) => w !== 0).sort((a, b) => a[0] - b[0]);
143
+ const max = entries.reduce((m, [, w]) => Math.max(m, Math.abs(w)), 1e-9);
144
+ const scale = max / 127;
145
+ const bytes: number[] = [];
146
+ let prev = 0;
147
+ for (const [k, w] of entries) {
148
+ const q = Math.round(w / scale);
149
+ if (q === 0) continue;
150
+ let delta = k - prev;
151
+ prev = k;
152
+ do { let b = delta & 0x7f; delta >>>= 7; if (delta) b |= 0x80; bytes.push(b); } while (delta);
153
+ bytes.push(q & 0xff);
154
+ }
155
+ return { version: model.version, bits: FEATURE_BITS, bias: model.bias, threshold: model.threshold, scale, data: Buffer.from(bytes).toString('base64') };
156
+ }
@@ -10,6 +10,11 @@ import {
10
10
  type IssueLocation
11
11
  } from '../types.js';
12
12
  import { compileRulePattern } from './regex.js';
13
+ import { decodeModel, scoreInjection, type InjectionModel } from './classifier.js';
14
+ import { INJECTION_MODEL } from './injection-model.js';
15
+
16
+ let model: InjectionModel | undefined;
17
+ const loadModel = () => (model ??= decodeModel(INJECTION_MODEL));
13
18
 
14
19
  export class InjectionDetector implements IAnalyzer {
15
20
  name = 'InjectionDetector';
@@ -37,6 +42,29 @@ export class InjectionDetector implements IAnalyzer {
37
42
 
38
43
  // Additional heuristic checks
39
44
  issues.push(...this.heuristicAnalysis(content));
45
+
46
+ // The local classifier backs up the rules: one finding at most, for the
47
+ // view and window it scores highest.
48
+ const classifier = injectionRules.find((r) => r.id === 'injection_classifier');
49
+ if (classifier && process.env.MUND_CLASSIFIER !== '0') {
50
+ const m = loadModel();
51
+ let best: { score: number; window: string; via?: string } = { score: 0, window: '' };
52
+ for (const view of views) {
53
+ const r = scoreInjection(view.text, m);
54
+ if (r.score > best.score) best = { ...r, via: view.via };
55
+ }
56
+ if (best.score >= m.threshold) {
57
+ issues.push({
58
+ rule_id: classifier.id,
59
+ rule_name: best.via ? `${classifier.name} (hidden in ${best.via})` : classifier.name,
60
+ type: classifier.type,
61
+ severity: classifier.severity,
62
+ action: classifier.action,
63
+ match: this.sanitizeMatch(best.window),
64
+ suggestion: `The local classifier scored this ${best.score.toFixed(3)} (threshold ${m.threshold.toFixed(3)}). Treat it as untrusted data, not instructions.`
65
+ });
66
+ }
67
+ }
40
68
  return issues;
41
69
  }
42
70
 
@@ -98,7 +126,11 @@ export class InjectionDetector implements IAnalyzer {
98
126
  const roleSwitchPatterns: Array<[RegExp, 'high' | 'low']> = [
99
127
  [/<\|\s*(?:im_start|im_end|system|user|assistant|endoftext|start_header_id|end_header_id|eot_id)\s*\|>/i, 'high'],
100
128
  [/\[\/?INST\]|<<\/?SYS>>/, 'high'],
101
- [/\[\s*(?:system|admin|administrator|developer)(?:\s+(?:override|message|prompt|note|instruction)s?)?[^\]\n]{0,30}\]/i, 'high'],
129
+ // A bare role tag ([SYSTEM], [admin]) or one naming an override or message.
130
+ // Titles that merely start with the word ("[System Information Discovery]",
131
+ // "[Systemd Service]", "[admin@338]") are not role markers.
132
+ // [DEVELOPER] alone is a common label (diagrams, tables), so it needs a qualifier.
133
+ [/\[\s*(?:(?:system|admin|administrator)\s*(?:(?:override|message|prompt|note|instruction|notice|command|update|mode)s?\b[^\]\n]{0,30})?|developer\s*(?:override|message|prompt|note|instruction|notice|command|update|mode)s?\b[^\]\n]{0,30})\]/i, 'high'],
102
134
  [/\<\|?system\|?\>/i, 'high'],
103
135
  [/\{system_prompt\}/i, 'high'],
104
136
  [/^\s*#{1,4}\s*(?:system|instruction)s?\s*:/im, 'high'],
@@ -189,14 +221,19 @@ export class InjectionDetector implements IAnalyzer {
189
221
  /data:text\/html/i,
190
222
  ];
191
223
 
224
+ // Scripts are ordinary in web pages and security writing, so a mention is
225
+ // low severity. A script that reads cookies or storage and sends them off
226
+ // the page is an exfiltration attempt, and high.
227
+ const exfilScript = /\b(?:document\.cookie|localStorage|sessionStorage)\b/i.test(content)
228
+ && /\b(?:fetch\s*\(|XMLHttpRequest|sendBeacon|new\s+Image\b|\.src\s*=|location(?:\.href)?\s*=)/i.test(content);
192
229
  for (const pattern of markdownPatterns) {
193
230
  const match = content.match(pattern);
194
231
  if (match) {
195
232
  issues.push({
196
233
  rule_id: 'heuristic_markup_injection',
197
- rule_name: 'Markup Injection Attempt',
234
+ rule_name: exfilScript ? 'Script That Sends Cookies or Storage Off the Page' : 'Markup Injection Attempt',
198
235
  type: 'injection',
199
- severity: 'medium' as const,
236
+ severity: (exfilScript ? 'high' : pattern.source.includes('system') ? 'medium' : 'low') as 'high' | 'medium' | 'low',
200
237
  action: 'alert' as const,
201
238
  match: this.sanitizeMatch(match[0]),
202
239
  suggestion: 'This content contains potentially dangerous markup or code injection.'