acf-mcp 1.0.0 → 1.0.2

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/types.ts","../../src/core/locale.ts","../../src/core/content.ts","../../src/core/rule-types.ts","../../src/core/rules-loader.ts","../../src/core/search.ts","../../src/core/uri.ts","../../src/core/resources.ts","../../src/constants/tool-descriptions.ts","../../src/core/tools-read.ts","../../src/lib/zod-to-json-schema.ts","../../src/core/classify-agent-input.ts","../../src/core/infer-autonomy.ts","../../src/core/infer-criticality.ts","../../src/core/negation-aware.ts","../../src/core/trigger-eval.ts","../../src/core/infer-obligations.ts","../../src/core/infer-roles.ts","../../src/core/infer-sign-off.ts","../../src/core/infer-controls.ts","../../src/core/confidence.ts","../../src/constants/disclaimer.ts","../../src/core/doctrine-footer.ts","../../src/core/tool-classify-agent.ts","../../src/core/tool-advisor.ts","../../src/core/tool-assess-autonomy.ts","../../src/core/tool-identify-gaps.ts","../../src/core/tool-map-obligations.ts","../../src/core/tool-assign-controls.ts","../../src/core/tool-evaluate-mandate.ts","../../src/core/tools.ts","../../src/core/prompts.ts","../../src/core/server.ts","../../src/transport/stdio.ts"],"names":["z","readFile","path","s","s2","ficheFor"],"mappings":";;;;;;;;;;;;AAMO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM;AAC1E,CAAA;AAEO,IAAM,eAAA,GAAkB,CAAA,CAAE,IAAA,CAAK,iBAAiB,CAAA;AAMhD,IAAM,qBAAA,GAAwB,EAClC,MAAA,CAAO;AAAA,EACN,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,EAAA,EAAI,EAAE,MAAA;AACR,CAAC,CAAA,CACA,QAAA,CAAS,CAAA,CAAE,MAAA,EAAQ,CAAA;AAKf,IAAM,eAAA,GAAkB,EAAE,MAAA,CAAO;AAAA,EACtC,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,UAAU,CAAA;AAAA,EAC/B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,UAAU,CAAA;AAAA,EACjC,KAAA,EAAO,qBAAA;AAAA,EACP,OAAA,EAAS,qBAAA;AAAA,EACT,QAAA,EAAU,qBAAA;AAAA,EACV,cAAA,EAAgB,EAAE,KAAA,CAAM,CAAA,CAAE,QAAO,CAAE,KAAA,CAAM,uBAAuB,CAAC,CAAA;AAAA,EACjE,kBAAA,EAAoB,EAAE,KAAA,CAAM,CAAA,CAAE,QAAO,CAAE,KAAA,CAAM,UAAU,CAAC;AAC1D,CAAC,CAAA;AAGM,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,UAAU,CAAA;AAAA,EAC/B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,UAAU,CAAA;AAAA,EACjC,KAAA,EAAO,qBAAA;AAAA,EACP,WAAA,EAAa,qBAAA;AAAA,EACb,QAAA,EAAU,qBAAA;AAAA,EACV,QAAA,EAAU;AACZ,CAAC,CAAA;AAGM,IAAM,eAAA,GAAkB,EAAE,MAAA,CAAO;AAAA,EACtC,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,UAAU,CAAA;AAAA,EAC/B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,UAAU,CAAA;AAAA,EACjC,KAAA,EAAO,qBAAA;AAAA,EACP,WAAA,EAAa,qBAAA;AAAA,EACb,SAAA,EAAW;AACb,CAAC,CAAA;AAGM,IAAM,UAAA,GAAa,EAAE,MAAA,CAAO;AAAA,EACjC,KAAA,EAAO,qBAAA;AAAA,EACP,SAAA,EAAW,CAAA,CAAE,OAAA,CAAQ,kCAAkC,CAAA;AAAA,EACvD,UAAA,EAAY,qBAAA;AAAA,EACZ,gBAAA,EAAkB,qBAAA;AAAA,EAClB,uBAAA,EAAyB;AAC3B,CAAC,CAAA;AAKM,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,UAAA,EAAY,EAAE,IAAA,CAAK,CAAC,UAAU,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,WAAW,CAAC,CAAA;AAAA,EAClE,OAAA,EAAS,EAAE,MAAA,EAAO;AAAA,EAClB,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACxB,CAAC,CAAA;AAEM,IAAM,sBAAA,GAAyB,EAAE,MAAA,CAAO;AAAA,EAC7C,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uBAAuB,CAAA;AAAA,EAC9C,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACvB,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA;AAAA,EACrC,oBAAoB,CAAA,CAAE,MAAA,GAAS,KAAA,CAAM,UAAU,EAAE,QAAA,EAAS;AAAA,EAC1D,kBAAA,EAAoB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,GAAS,KAAA,CAAM,UAAU,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACnE,gBAAA,EAAkB,CAAA,CAAE,KAAA,CAAM,oBAAoB,EAAE,QAAA,EAAS;AAAA,EACzD,cAAA,EAAgB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,GAAS,KAAA,CAAM,uBAAuB,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC5E,QAAA,EAAU,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AAAA,EAC5B,OAAA,EAAS,EAAE,MAAA,EAAO;AAAA,EAClB,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACtB,CAAC,CAAA;AAYM,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,UAAA,EAAY,EAAE,MAAA,EAAO;AAAA,EACrB,IAAA,EAAM,EAAE,MAAA;AACV,CAAC,CAAA;AAEM,IAAM,sBAAA,GAAyB,EAAE,MAAA,CAAO;AAAA,EAC7C,UAAA,EAAY,EAAE,IAAA,CAAK,CAAC,UAAU,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,WAAW,CAAC,CAAA;AAAA,EAClE,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACvB,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,OAAA,EAAS,EAAE,MAAA,EAAO;AAAA,EAClB,WAAA,EAAa,EAAE,MAAA,EAAO;AAAA,EACtB,gBAAA,EAAkB,CAAA,CAAE,KAAA,CAAM,oBAAoB,EAAE,QAAA;AAClD,CAAC,CAAA;AAYM,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC5B,kBAAA,EAAoB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,GAAS,KAAA,CAAM,UAAU,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACnE,cAAA,EAAgB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,GAAS,KAAA,CAAM,uBAAuB,CAAC,CAAA,CAAE,QAAA;AACrE,CAAC,CAAA;AAKsC,EAAE,MAAA,CAAO;AAAA,EAC9C,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACvB,OAAO,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,QAAQ,CAAC,CAAA,EAAG,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAA;AAAA,EACzD,IAAA,EAAM,EAAE,MAAA;AACV,CAAC;AAYM,IAAM,UAAA,GAAa,EAAE,MAAA,CAAO;AAAA,EACjC,iBAAA,EAAmB,EAAE,MAAA,EAAO;AAAA,EAC5B,aAAA,EAAe,EAAE,MAAA,EAAO;AAAA,EACxB,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,WAAW,SAAS,CAAA;AAAA,EAC7C,kBAAA,EAAoB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACxC,qBAAA,EAAuB,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACtC,aAAA,EAAe,EAAE,MAAA,EAAO;AAAA,EACxB,OAAA,EAAS,CAAA,CAAE,KAAA,CAAM,eAAe,CAAA;AAAA,EAChC,eAAA,EAAiB;AACnB,CAAC,CAAA;;;ACvJM,IAAM,uBAAA,GAAqC,IAAA;AAC3C,IAAM,uBAAA,GAAqC,IAAA;AAElD,SAAS,eAAe,KAAA,EAA6C;AACnE,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,EAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,EAAK,CAAE,aAAY,CAAE,KAAA,CAAM,GAAG,CAAC,CAAA;AACnD,EAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,SAAA,CAAU,KAAK,CAAA;AAC9C,EAAA,OAAO,MAAA,CAAO,OAAA,GAAU,MAAA,CAAO,IAAA,GAAO,IAAA;AACxC;AAiBO,SAAS,gBAAgB,KAAA,EAA0C;AACxE,EAAA,MAAM,YAAA,GAAe,cAAA,CAAe,KAAA,CAAM,QAAQ,CAAA;AAClD,EAAA,IAAI,cAAc,OAAO,YAAA;AAOzB,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,KAAA,CAAM,SAAS,CAAA;AAC9C,EAAA,IAAI,SAAS,OAAO,OAAA;AAEpB,EAAA,OAAO,uBAAA;AACT;AAOO,SAAS,cAAc,SAAA,EAAmC;AAC/D,EAAA,MAAM,KAAA,GAAqB,CAAC,SAAS,CAAA;AACrC,EAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,uBAAuB,CAAA,EAAG,KAAA,CAAM,KAAK,uBAAuB,CAAA;AAChF,EAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,uBAAuB,CAAA,EAAG,KAAA,CAAM,KAAK,uBAAuB,CAAA;AAChF,EAAA,OAAO,KAAA;AACT;;;AC7BO,IAAM,gBAAN,MAAoB;AAAA,EACR,IAAA;AAAA,EACT,SAAA,GAAyB,IAAA;AAAA,EAEjC,YAAY,IAAA,EAA4B;AACtC,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,WAAA;AAAA,EACnB;AAAA;AAAA,EAIA,MAAM,QAAA,GAA0B;AAG9B,IAAA,IAAI,IAAA,CAAK,SAAA,EAAW,OAAO,IAAA,CAAK,SAAA;AAChC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,MAAM,WAAW,CAAA;AAC7C,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAC,CAAA;AACnD,IAAA,IAAA,CAAK,SAAA,GAAY,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AACrC,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA;AAAA,EAIA,MAAM,cAAA,GAAuC;AAC3C,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,aAAa,iBAAiB,CAAA;AAChE,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAC,CAAA;AACnD,IAAA,OAAA,CAAQ,GAAA,CAAI,UAAA,IAAc,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAe,eAAA,CAAgB,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,EAC5E;AAAA,EAEA,MAAM,kBAAA,GAA+C;AACnD,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,aAAa,sBAAsB,CAAA;AACrE,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAC,CAAA;AACnD,IAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,IAAU,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAe,mBAAA,CAAoB,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,EAC5E;AAAA,EAEA,MAAM,cAAA,GAAuC;AAC3C,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,aAAa,iBAAiB,CAAA;AAChE,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAC,CAAA;AACnD,IAAA,OAAA,CAAQ,GAAA,CAAI,UAAA,IAAc,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAe,eAAA,CAAgB,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,EAC5E;AAAA,EAEA,MAAM,QAAA,GAA0B;AAC9B,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,aAAa,WAAW,CAAA;AAC1D,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAC,CAAA;AACnD,IAAA,OAAO,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,SAAA,CAAU,IAAA,EAAc,MAAA,EAA2C;AACvE,IAAA,KAAA,MAAW,SAAA,IAAa,aAAA,CAAc,MAAM,CAAA,EAAG;AAC7C,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,UAAU,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,GAAA,CAAK,CAAA;AACrE,MAAA,IAAI,CAAC,UAAA,CAAW,IAAI,CAAA,EAAG;AACvB,MAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAA;AACvC,MAAA,MAAM,MAAA,GAAS,OAAO,GAAG,CAAA;AACzB,MAAA,MAAM,WAAA,GAAc,sBAAA,CAAuB,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAC5D,MAAA,OAAO;AAAA,QACL,WAAA;AAAA,QACA,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,aAAA,EAAe,SAAA;AAAA,QACf,aAAa,SAAA,KAAc;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,MAAA,EAAS,IAAI,CAAA,mCAAA,EAAsC,MAAM,CAAA,CAAE,CAAA;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,SAAA,CACJ,UAAA,EACA,MAAA,EACwB;AACxB,IAAA,KAAA,MAAW,SAAA,IAAa,aAAA,CAAc,MAAM,CAAA,EAAG;AAC7C,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,UAAU,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,SAAS,CAAA,GAAA,CAAK,CAAA;AAC3E,MAAA,IAAI,CAAC,UAAA,CAAW,IAAI,CAAA,EAAG;AACvB,MAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAA;AACvC,MAAA,MAAM,MAAA,GAAS,OAAO,GAAG,CAAA;AACzB,MAAA,MAAM,WAAA,GAAc,sBAAA,CAAuB,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAC5D,MAAA,OAAO;AAAA,QACL,WAAA;AAAA,QACA,MAAM,MAAA,CAAO,OAAA;AAAA,QACb,aAAA,EAAe,SAAA;AAAA,QACf,aAAa,SAAA,KAAc;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,MAAA,EAAS,UAAU,CAAA,mCAAA,EAAsC,MAAM,CAAA;AAAA,KACjE;AAAA,EACF;AAAA;AAAA,EAIA,MAAM,aAAa,MAAA,EAIhB;AACD,IAAA,KAAA,MAAW,SAAA,IAAa,aAAA,CAAc,MAAM,CAAA,EAAG;AAC7C,MAAA,MAAM,IAAA,GAAO,KAAK,IAAA,CAAK,IAAA,CAAK,MAAM,UAAA,EAAY,CAAA,EAAG,SAAS,CAAA,KAAA,CAAO,CAAA;AACjE,MAAA,IAAI,CAAC,UAAA,CAAW,IAAI,CAAA,EAAG;AACvB,MAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAC,CAAA;AACnD,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAI,GAAA,CAAI,CAAC,UAAU,mBAAA,CAAoB,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,QAC5D,aAAA,EAAe,SAAA;AAAA,QACf,aAAa,SAAA,KAAc;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2CAAA,EAA8C,MAAM,CAAA,CAAE,CAAA;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,iBAAA,CACJ,IAAA,EACA,MAAA,EAKQ;AACR,IAAA,MAAM,EAAE,SAAS,aAAA,EAAe,WAAA,KAAgB,MAAM,IAAA,CAAK,aAAa,MAAM,CAAA;AAC9E,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,IAAA,EAAK,CAAE,WAAA,EAAY;AAC3C,IAAA,MAAM,QACJ,OAAA,CAAQ,IAAA;AAAA,MACN,CAAC,CAAA,KACC,CAAA,CAAE,IAAA,CAAK,WAAA,OAAkB,UAAA,IACzB,CAAA,CAAE,SAAA,EAAW,WAAA,EAAY,KAAM;AAAA,KACnC,IAAK,IAAA;AACP,IAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,IAAA,OAAO,EAAE,KAAA,EAAO,aAAA,EAAe,WAAA,EAAY;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,kBAAkB,MAAA,EAIrB;AACD,IAAA,KAAA,MAAW,SAAA,IAAa,aAAA,CAAc,MAAM,CAAA,EAAG;AAC7C,MAAA,MAAM,IAAA,GAAO,KAAK,IAAA,CAAK,IAAA,CAAK,MAAM,YAAA,EAAc,CAAA,EAAG,SAAS,CAAA,GAAA,CAAK,CAAA;AACjE,MAAA,IAAI,CAAC,UAAA,CAAW,IAAI,CAAA,EAAG;AACvB,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAM,MAAM,CAAA;AACxC,MAAA,OAAO;AAAA,QACL,IAAA;AAAA,QACA,aAAA,EAAe,SAAA;AAAA,QACf,aAAa,SAAA,KAAc;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6CAAA,EAAgD,MAAM,CAAA,CAAE,CAAA;AAAA,EAC1E;AACF,CAAA;AC7MO,IAAM,mBAAmBA,CAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,QAAA,EAAU,MAAM,CAAC,CAAA;AAGzD,IAAM,iBAAA,GAAoBA,EAAE,IAAA,CAAK,CAAC,OAAO,QAAA,EAAU,MAAA,EAAQ,UAAU,CAAC,CAAA;AAGtE,IAAM,cAAA,GAAiBA,EAAE,IAAA,CAAK,CAAC,MAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAGtD,IAAM,eAAA,GAAkBA,EAAE,IAAA,CAAK;AAAA,EACpC,UAAA;AAAA,EAAY,UAAA;AAAA,EAAY,UAAA;AAAA,EAAY,aAAA;AAAA,EAAe;AACrD,CAAC,CAAA;AACM,IAAM,cAAA,GAAiBA,EAAE,IAAA,CAAK;AAAA,EACnC,YAAA;AAAA,EAAc,WAAA;AAAA,EAAa,kBAAA;AAAA,EAAoB;AACjD,CAAC,CAAA;AAEM,IAAM,aAAA,GAAgBA,EAAE,MAAA,CAAO;AAAA,EACpC,kBAAkBA,CAAAA,CAAE,KAAA,CAAMA,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EAC/C,kBAAkBA,CAAAA,CAAE,KAAA,CAAMA,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EAC/C,cAAA,EAAgBA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA;AAAA,EACxC,UAAA,EAAYA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAC,EAAE,QAAA;AACxD,CAAC,CAAA;AAKD,IAAM,eAAA,GAAkB;AAAA,EACtB,OAAA,EAASA,EAAE,MAAA,EAAO;AAAA,EAClB,WAAA,EAAaA,EAAE,MAAA;AACjB,CAAA;AAEO,IAAM,eAAA,GAAkBA,EAAE,MAAA,CAAO;AAAA,EACtC,aAAA,EAAeA,EAAE,MAAA,EAAO;AAAA,EACxB,WAAA,EAAaA,EAAE,MAAA,EAAO;AAAA,EACtB,wBAAA,EAA0BA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,QAAQ;AAC9C,CAAC,CAAA;AAIM,IAAM,kBAAA,GAAqBA,EAAE,MAAA,CAAO;AAAA,EACzC,EAAA,EAAIA,EAAE,MAAA,EAAO;AAAA,EACb,KAAA,EAAOA,EAAE,MAAA,EAAO;AAAA,EAChB,QAAA,EAAU,aAAA;AAAA,EACV,WAAA,EAAaA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,QAAQ,CAAA;AAAA,EAC/B,MAAA,EAAQA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,QAAQ,CAAA;AAAA,EAC1B,eAAA,EAAiB,gBAAA;AAAA,EACjB,qBAAA,EAAuBA,CAAAA,CAAE,OAAA,CAAQ,IAAI;AACvC,CAAC,CAAA;AAEM,IAAM,mBAAA,GAAsBA,EAAE,MAAA,CAAO;AAAA,EAC1C,GAAG,eAAA;AAAA,EACH,kBAAkBA,CAAAA,CAAE,KAAA;AAAA,IAClBA,EAAE,MAAA,CAAO;AAAA,MACP,QAAA,EAAUA,EAAE,MAAA,EAAO;AAAA,MACnB,eAAA,EAAiBA,EAAE,MAAA,EAAO;AAAA,MAC1B,QAAA,EAAUA,EAAE,OAAA;AAAQ,KACrB;AAAA,GACH;AAAA,EACA,UAAA,EAAYA,CAAAA,CAAE,KAAA,CAAM,kBAAkB;AACxC,CAAC,CAAA;AAEM,IAAM,iBAAA,GAAoBA,EAAE,MAAA,CAAO;AAAA,EACxC,GAAG,eAAA;AAAA,EACH,kBAAkBA,CAAAA,CAAE,KAAA;AAAA,IAClBA,EAAE,MAAA,CAAO;AAAA,MACP,QAAA,EAAUA,EAAE,MAAA,EAAO;AAAA,MACnB,eAAA,EAAiBA,EAAE,MAAA,EAAO;AAAA,MAC1B,QAAA,EAAUA,EAAE,OAAA;AAAQ,KACrB;AAAA,GACH;AAAA,EACA,UAAA,EAAYA,CAAAA,CAAE,KAAA,CAAM,kBAAkB;AACxC,CAAC,CAAA;AAIM,IAAM,kBAAA,GAAqBA,EAAE,MAAA,CAAO;AAAA,EACzC,GAAG,eAAA;AAAA,EACH,QAAA,EAAU,aAAA;AAAA,EACV,aAAaA,CAAAA,CAAE,KAAA;AAAA,IACbA,EAAE,MAAA,CAAO;AAAA,MACP,OAAA,EAASA,EAAE,MAAA,EAAO;AAAA,MAClB,WAAA,EAAaA,EAAE,MAAA,EAAO;AAAA,MACtB,eAAA,EAAiBA,EAAE,MAAA,EAAO;AAAA,MAC1B,kBAAA,EAAoBA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAAS,KAC1C;AAAA;AAEL,CAAC,CAAA;AAIM,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EAC9C,GAAG,eAAA;AAAA,EACH,OAAOA,CAAAA,CAAE,KAAA;AAAA,IACPA,EAAE,MAAA,CAAO;AAAA,MACP,qBAAqBA,CAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,EAAY,mBAAmB,CAAC,CAAA;AAAA,MACrE,kBAAA,EAAoBA,EAAE,IAAA,CAAK;AAAA,QACzB,MAAA;AAAA,QAAQ,eAAA;AAAA,QAAiB,iBAAA;AAAA,QAAmB;AAAA,OAC7C,CAAA;AAAA,MACD,eAAA,EAAiBA,EAAE,MAAA,EAAO;AAAA,MAC1B,KAAA,EAAO,iBAAA;AAAA,MACP,kBAAA,EAAoBA,EAAE,MAAA;AAAO,KAC9B;AAAA;AAEL,CAAC,CAAA;AAIM,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EAC9C,GAAG,eAAA;AAAA,EACH,YAAYA,CAAAA,CAAE,KAAA;AAAA,IACZA,EAAE,MAAA,CAAO;AAAA,MACP,KAAA,EAAO,cAAA;AAAA,MACP,UAAA,EAAYA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,MACpD,kBAAA,EAAoBA,EAAE,MAAA;AAAO,KAC9B;AAAA;AAEL,CAAC,CAAA;AAIM,IAAM,yBAAA,GAA4BA,EAAE,MAAA,CAAO;AAAA,EAChD,GAAG,eAAA;AAAA,EACH,UAAUA,CAAAA,CAAE,KAAA;AAAA,IACVA,EAAE,MAAA,CAAO;AAAA,MACP,KAAA,EAAO,cAAA;AAAA,MACP,IAAA,EAAM,iBAAA;AAAA,MACN,sBAAsBA,CAAAA,CAAE,KAAA;AAAA,QACtBA,EAAE,MAAA,CAAO;AAAA,UACP,KAAA,EAAOA,EAAE,MAAA,EAAO;AAAA,UAChB,WAAA,EAAaA,EAAE,MAAA,EAAO;AAAA,UACtB,UAAA,EAAYA,EAAE,IAAA,CAAK;AAAA,YACjB,MAAA;AAAA,YAAQ,KAAA;AAAA,YAAO,MAAA;AAAA,YAAQ,gBAAA;AAAA,YAAkB;AAAA,WAC1C,CAAA;AAAA,UACD,SAAA,EAAWA,EAAE,IAAA,CAAK;AAAA,YAChB,UAAA;AAAA,YAAY,SAAA;AAAA,YAAW,WAAA;AAAA,YAAa,QAAA;AAAA,YAAU;AAAA,WAC/C,CAAA;AAAA,UACD,iBAAA,EAAmBA,EAAE,MAAA;AAAO,SAC7B;AAAA,OACH;AAAA,MACA,eAAeA,CAAAA,CAAE,KAAA;AAAA,QACfA,EAAE,MAAA,CAAO;AAAA,UACP,UAAA,EAAYA,EAAE,MAAA,EAAO;AAAA,UACrB,YAAA,EAAcA,EAAE,IAAA,CAAK;AAAA,YACnB,YAAA;AAAA,YAAc,WAAA;AAAA,YAAa,YAAA;AAAA,YAAc;AAAA,WAC1C,CAAA;AAAA,UACD,eAAA,EAAiBA,EAAE,MAAA,EAAO;AAAA,UAC1B,mBAAA,EAAqBA,EAAE,MAAA;AAAO,SAC/B;AAAA;AACH,KACD;AAAA;AAEL,CAAC,CAAA;AAIM,IAAM,mBAAA,GAAsBA,EAAE,MAAA,CAAO;AAAA,EAC1C,GAAG,eAAA;AAAA,EACH,OAAOA,CAAAA,CAAE,KAAA;AAAA,IACPA,EAAE,MAAA,CAAO;AAAA,MACP,WAAA,EAAa,iBAAA;AAAA,MACb,qBAAqBA,CAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,EAAY,mBAAmB,CAAC,CAAA;AAAA,MACrE,kBAAA,EAAoBA,EAAE,IAAA,CAAK;AAAA,QACzB,MAAA;AAAA,QAAQ,eAAA;AAAA,QAAiB,iBAAA;AAAA,QAAmB;AAAA,OAC7C,CAAA;AAAA,MACD,QAAA,EAAUA,EAAE,MAAA,CAAO;AAAA,QACjB,QAAA,EAAUA,EAAE,OAAA,EAAQ;AAAA,QACpB,OAAA,EAASA,EAAE,OAAA,EAAQ;AAAA,QACnB,UAAA,EAAYA,EAAE,OAAA,EAAQ;AAAA,QACtB,KAAA,EAAOA,EAAE,OAAA,EAAQ;AAAA,QACjB,gBAAA,EAAkBA,EAAE,OAAA,EAAQ;AAAA,QAC5B,KAAA,EAAOA,EAAE,OAAA;AAAQ,OAClB;AAAA,KACF;AAAA;AAEL,CAAC,CAAA;AAIM,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EAC9C,GAAG,eAAA;AAAA,EACH,OAAOA,CAAAA,CAAE,KAAA;AAAA,IACPA,EAAE,MAAA,CAAO;AAAA,MACP,EAAA,EAAIA,EAAE,MAAA,EAAO;AAAA,MACb,QAAA,EAAU,aAAA;AAAA,MACV,IAAA,EAAM,cAAA;AAAA,MACN,eAAA,EAAiB,gBAAA;AAAA,MACjB,kBAAA,EAAoBA,EAAE,MAAA;AAAO,KAC9B;AAAA;AAEL,CAAC,CAAA;AAIM,IAAM,gBAAA,GAAmBA,EAAE,MAAA,CAAO;AAAA,EACvC,GAAG,eAAA;AAAA,EACH,OAAOA,CAAAA,CAAE,KAAA;AAAA,IACPA,EAAE,MAAA,CAAO;AAAA,MACP,EAAA,EAAIA,EAAE,MAAA,EAAO;AAAA,MACb,QAAA,EAAU,aAAA;AAAA,MACV,IAAA,EAAM,eAAA;AAAA,MACN,eAAA,EAAiB,gBAAA;AAAA,MACjB,kBAAA,EAAoBA,EAAE,MAAA;AAAO,KAC9B;AAAA;AAEL,CAAC,CAAA;;;AC7LM,IAAM,cAAN,MAAkB;AAAA,EACN,IAAA;AAAA,EAEjB,YAAY,IAAA,EAA0B;AACpC,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,SAAA;AAAA,EACnB;AAAA,EAEA,MAAc,SAAY,IAAA,EAA0B;AAClD,IAAA,MAAM,GAAA,GAAM,MAAMC,QAAAA,CAASC,IAAAA,CAAK,KAAK,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA,EAAG,MAAM,CAAA;AAC7D,IAAA,OAAO,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,aAAA,GAAgB;AACpB,IAAA,OAAO,gBAAgB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,iBAAiB,CAAC,CAAA;AAAA,EACrE;AAAA,EACA,MAAM,iBAAA,GAAoB;AACxB,IAAA,OAAO,oBAAoB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,uBAAuB,CAAC,CAAA;AAAA,EAC/E;AAAA,EACA,MAAM,eAAA,GAAkB;AACtB,IAAA,OAAO,kBAAkB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,qBAAqB,CAAC,CAAA;AAAA,EAC3E;AAAA,EACA,MAAM,gBAAA,GAAmB;AACvB,IAAA,OAAO,mBAAmB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,oBAAoB,CAAC,CAAA;AAAA,EAC3E;AAAA,EACA,MAAM,qBAAA,GAAwB;AAC5B,IAAA,OAAO,wBAAwB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,yBAAyB,CAAC,CAAA;AAAA,EACrF;AAAA,EACA,MAAM,qBAAA,GAAwB;AAC5B,IAAA,OAAO,wBAAwB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,yBAAyB,CAAC,CAAA;AAAA,EACrF;AAAA,EACA,MAAM,uBAAA,GAA0B;AAC9B,IAAA,OAAO,0BAA0B,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,4BAA4B,CAAC,CAAA;AAAA,EAC1F;AAAA,EACA,MAAM,iBAAA,GAAoB;AACxB,IAAA,OAAO,oBAAoB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,sBAAsB,CAAC,CAAA;AAAA,EAC9E;AAAA,EACA,MAAM,qBAAA,GAAwB;AAC5B,IAAA,OAAO,wBAAwB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,yBAAyB,CAAC,CAAA;AAAA,EACrF;AAAA,EACA,MAAM,cAAA,GAAiB;AACrB,IAAA,OAAO,iBAAiB,KAAA,CAAM,MAAM,IAAA,CAAK,QAAA,CAAS,mBAAmB,CAAC,CAAA;AAAA,EACxE;AACF,CAAA;AChCA,IAAM,oBAAA,uBAA2B,GAAA,CAAI;AAAA,EACnC,WAAA;AAAA,EAAa,gBAAA;AAAA,EAAkB,WAAA;AAAA,EAAa;AAC9C,CAAC,CAAA;AASD,IAAM,yBAAA,GAAmE;AAAA,EACvE,SAAA,EAAW,IAAA;AAAA,EACX,cAAA,EAAgB,GAAA;AAAA,EAChB,SAAA,EAAW,GAAA;AAAA,EACX,IAAA,EAAM,GAAA;AAAA,EACN,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,UAAA,EAAY,CAAA;AAAA,EACZ,QAAA,EAAU,GAAA;AAAA,EACV,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,YAAA,GAAN,MAAM,aAAA,CAAa;AAAA,EAChB,WAAA,CACW,KACA,IAAA,EACjB;AAFiB,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA,EAChB;AAAA,EAFgB,GAAA;AAAA,EACA,IAAA;AAAA,EAGnB,aAAa,SAAS,IAAA,EAAqC;AACzD,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAMD,QAAAA,CAAS,IAAA,EAAM,MAAM,CAAC,CAAA;AACnD,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAI,KAAK,CAAA;AACrC,IAAA,MAAM,OAAO,IAAI,GAAA,CAAI,OAAO,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAC,CAAA;AAC7C,IAAA,OAAO,IAAI,aAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EACnC;AAAA,EAEA,OAAO,WAAW,UAAA,EAA2C;AAC3D,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,WAAW,KAAK,CAAA;AAC5C,IAAA,MAAM,OAAO,IAAI,GAAA,CAAI,OAAO,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAC,CAAA;AACpD,IAAA,OAAO,IAAI,aAAA,CAAa,GAAA,EAAK,IAAI,CAAA;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAe,eAAe,CAAA,EAAmB;AAC/C,IAAA,OAAO,CAAA,CACJ,SAAA,CAAU,KAAK,CAAA,CACf,OAAA,CAAQ,IAAA,MAAA,CAAC,SAAA,EAAO,IAAE,CAAA,EAAE,EAAE,CAAA,CACtB,WAAA,EAAY;AAAA,EACjB;AAAA,EAEA,OAAO,KAAA,EAAiC;AACtC,IAAA,MAAM,eAAA,GAAkB,aAAA,CAAa,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAC/D,IAAA,IAAI,WAAA;AACJ,IAAA,IAAI;AACF,MAAA,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,eAAe,CAAA;AAAA,IAC/C,CAAA,CAAA,MAAQ;AAEN,MAAA,MAAM,YAAY,eAAA,CAAgB,OAAA,CAAQ,mBAAA,EAAqB,GAAG,EAAE,IAAA,EAAK;AACzE,MAAA,WAAA,GAAc,YAAY,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,SAAS,IAAI,EAAC;AAAA,IAC1D;AAKA,IAAA,MAAM,aAA0B,EAAC;AACjC,IAAA,KAAA,MAAW,KAAK,WAAA,EAAa;AAC3B,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,EAAE,GAAG,CAAA;AAC/B,MAAA,IAAI,CAAC,GAAA,EAAK;AACV,MAAA,IAAI,GAAA,CAAI,MAAA,KAAW,KAAA,CAAM,MAAA,EAAQ;AACjC,MAAA,IAAI,CAAC,IAAA,CAAK,YAAA,CAAa,IAAI,QAAA,EAAU,KAAA,CAAM,KAAK,CAAA,EAAG;AACnD,MAAA,MAAM,UAAA,GAAa,yBAAA,CAA0B,GAAA,CAAI,QAAQ,CAAA,IAAK,CAAA;AAC9D,MAAA,UAAA,CAAW,IAAA,CAAK;AAAA,QACd,KAAK,GAAA,CAAI,GAAA;AAAA,QACT,OAAO,GAAA,CAAI,KAAA;AAAA,QACX,SAAS,GAAA,CAAI,OAAA;AAAA,QACb,KAAA,EAAO,EAAE,KAAA,GAAQ,UAAA;AAAA,QACjB,UAAU,GAAA,CAAI,QAAA;AAAA,QACd,QAAQ,GAAA,CAAI;AAAA,OACb,CAAA;AAAA,IACH;AACA,IAAA,UAAA,CAAW,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,KAAA,GAAQ,EAAE,KAAK,CAAA;AAC3C,IAAA,OAAO,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA;AAAA,EACxC;AAAA,EAEQ,YAAA,CACN,UACA,KAAA,EACS;AACT,IAAA,IAAI,KAAA,KAAU,OAAO,OAAO,IAAA;AAC5B,IAAA,IAAI,KAAA,KAAU,WAAA,EAAa,OAAO,oBAAA,CAAqB,IAAI,QAAQ,CAAA;AACnE,IAAA,IAAI,KAAA,KAAU,OAAA,EAAS,OAAO,QAAA,KAAa,OAAA;AAC3C,IAAA,IAAI,KAAA,KAAU,OAAA,EAAS,OAAO,QAAA,KAAa,OAAA;AAC3C,IAAA,IAAI,KAAA,KAAU,YAAA,EAAc,OAAO,QAAA,KAAa,YAAA;AAChD,IAAA,IAAI,KAAA,KAAU,UAAA,EAAY,OAAO,QAAA,KAAa,UAAA;AAC9C,IAAA,OAAO,KAAA;AAAA,EACT;AACF,CAAA;;;ACxGA,IAAM,MAAA,GAAS,QAAA;AAER,SAAS,YAAY,GAAA,EAA2B;AACrD,EAAA,IAAI,CAAC,GAAA,CAAI,UAAA,CAAW,MAAM,CAAA,EAAG;AAC3B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4CAAA,EAA0C,GAAG,CAAA,CAAE,CAAA;AAAA,EACjE;AACA,EAAA,MAAM,IAAA,GAAO,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA;AACpC,EAAA,MAAM,CAAC,QAAA,EAAU,SAAS,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAC/C,EAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,GAAG,CAAA,CAAE,CAAA;AAAA,EACrC;AACA,EAAA,MAAM,WAAW,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,OAAO,OAAO,CAAA;AAEnD,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,SAAS,CAAA;AAC5C,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AAC9B,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,SAAA,CAAU,IAAI,CAAA;AAC7C,MAAA,IAAI,MAAA,CAAO,OAAA,EAAS,MAAA,GAAS,MAAA,CAAO,IAAA;AAAA,IACtC;AAAA,EACF;AAGA,EAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,WAAA,EAAa;AAC/B,IAAA,IAAI,SAAS,CAAC,CAAA,KAAM,WAAA,IAAe,QAAA,CAAS,CAAC,CAAA,EAAG;AAC9C,MAAA,OAAO,EAAE,QAAA,EAAU,qBAAA,EAAuB,IAAI,QAAA,CAAS,CAAC,GAAG,MAAA,EAAO;AAAA,IACpE;AACA,IAAA,IAAI,SAAS,CAAC,CAAA,KAAM,gBAAA,IAAoB,QAAA,CAAS,CAAC,CAAA,EAAG;AACnD,MAAA,OAAO,EAAE,QAAA,EAAU,0BAAA,EAA4B,IAAI,QAAA,CAAS,CAAC,GAAG,MAAA,EAAO;AAAA,IACzE;AACA,IAAA,IAAI,SAAS,CAAC,CAAA,KAAM,WAAA,IAAe,QAAA,CAAS,CAAC,CAAA,EAAG;AAC9C,MAAA,OAAO,EAAE,QAAA,EAAU,qBAAA,EAAuB,IAAI,QAAA,CAAS,CAAC,GAAG,MAAA,EAAO;AAAA,IACpE;AACA,IAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA,EAAQ;AAC1B,MAAA,OAAO,EAAE,QAAA,EAAU,gBAAA,EAAkB,EAAA,EAAI,QAAW,MAAA,EAAO;AAAA,IAC7D;AAAA,EACF;AACA,EAAA,IAAI,SAAS,CAAC,CAAA,KAAM,OAAA,IAAW,QAAA,CAAS,CAAC,CAAA,EAAG;AAC1C,IAAA,OAAO,EAAE,QAAA,EAAU,OAAA,EAAS,IAAI,QAAA,CAAS,CAAC,GAAG,MAAA,EAAO;AAAA,EACtD;AACA,EAAA,IAAI,SAAS,CAAC,CAAA,KAAM,OAAA,IAAW,QAAA,CAAS,CAAC,CAAA,EAAG;AAC1C,IAAA,OAAO,EAAE,QAAA,EAAU,OAAA,EAAS,IAAI,QAAA,CAAS,CAAC,GAAG,MAAA,EAAO;AAAA,EACtD;AACA,EAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,YAAA,EAAc;AAChC,IAAA,IAAI,CAAC,QAAA,CAAS,CAAC,CAAA,EAAG,OAAO,EAAE,QAAA,EAAU,YAAA,EAAc,EAAA,EAAI,MAAA,EAAW,MAAA,EAAO;AACzE,IAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,KAAA;AAClB,MAAA,OAAO,EAAE,QAAA,EAAU,gBAAA,EAAkB,EAAA,EAAI,QAAW,MAAA,EAAO;AAC7D,IAAA,IAAI,SAAS,CAAC,CAAA,KAAM,SAAA,IAAa,QAAA,CAAS,CAAC,CAAA,EAAG;AAC5C,MAAA,OAAO,EAAE,QAAA,EAAU,oBAAA,EAAsB,IAAI,QAAA,CAAS,CAAC,GAAG,MAAA,EAAO;AAAA,IACnE;AAAA,EACF;AACA,EAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,QAAA,EAAU;AAC5B,IAAA,IAAI,CAAC,QAAA,CAAS,CAAC,CAAA,EAAG,OAAO,EAAE,QAAA,EAAU,QAAA,EAAU,EAAA,EAAI,MAAA,EAAW,MAAA,EAAO;AACrE,IAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,KAAA;AAClB,MAAA,OAAO,EAAE,QAAA,EAAU,YAAA,EAAc,EAAA,EAAI,QAAW,MAAA,EAAO;AACzD,IAAA,IAAI,SAAS,CAAC,CAAA,KAAM,SAAA,IAAa,QAAA,CAAS,CAAC,CAAA,EAAG;AAC5C,MAAA,OAAO,EAAE,QAAA,EAAU,gBAAA,EAAkB,IAAI,QAAA,CAAS,CAAC,GAAG,MAAA,EAAO;AAAA,IAC/D;AAAA,EACF;AACA,EAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA,EAAQ;AAC1B,IAAA,OAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,EAAA,EAAI,QAAW,MAAA,EAAO;AAAA,EACnD;AACA,EAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,UAAA,EAAY;AAC9B,IAAA,IAAI,CAAC,QAAA,CAAS,CAAC,CAAA,EAAG,OAAO,EAAE,QAAA,EAAU,UAAA,EAAY,EAAA,EAAI,MAAA,EAAW,MAAA,EAAO;AACvE,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,gBAAA;AAAA,MACV,EAAA,EAAI,kBAAA,CAAmB,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,MAClC;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA,EAAQ;AAC1B,IAAA,OAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,EAAA,EAAI,QAAW,MAAA,EAAO;AAAA,EACnD;AACA,EAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,GAAG,CAAA,CAAE,CAAA;AAC3C;;;ACjFA,eAAsB,cACpB,QAAA,EAC6B;AAC7B,EAAA,MAAM,QAA4B,EAAC;AAGnC,EAAA,MAAM,UAAA,GAAa,MAAM,QAAA,CAAS,OAAA,CAAQ,cAAA,EAAe;AACzD,EAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,GAAA,EAAK,CAAA,0BAAA,EAA6B,CAAA,CAAE,IAAI,CAAA,CAAA;AAAA,MACxC,MAAM,CAAA,UAAA,EAAa,CAAA,CAAE,IAAI,CAAA,QAAA,EAAM,CAAA,CAAE,MAAM,EAAE,CAAA,CAAA;AAAA,MACzC,WAAA,EAAa,EAAE,OAAA,CAAQ,EAAA;AAAA,MACvB,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AAGA,EAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,OAAA,CAAQ,kBAAA,EAAmB;AACzD,EAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,GAAA,EAAK,CAAA,+BAAA,EAAkC,CAAA,CAAE,IAAI,CAAA,CAAA;AAAA,MAC7C,MAAM,CAAA,eAAA,EAAkB,CAAA,CAAE,IAAI,CAAA,QAAA,EAAM,CAAA,CAAE,MAAM,EAAE,CAAA,CAAA;AAAA,MAC9C,WAAA,EAAa,EAAE,WAAA,CAAY,EAAA;AAAA,MAC3B,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AAGA,EAAA,MAAM,UAAA,GAAa,MAAM,QAAA,CAAS,OAAA,CAAQ,cAAA,EAAe;AACzD,EAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,GAAA,EAAK,CAAA,0BAAA,EAA6B,CAAA,CAAE,IAAI,CAAA,CAAA;AAAA,MACxC,MAAM,CAAA,mBAAA,EAAsB,CAAA,CAAE,IAAI,CAAA,QAAA,EAAM,CAAA,CAAE,MAAM,EAAE,CAAA,CAAA;AAAA,MAClD,WAAA,EAAa,EAAE,WAAA,CAAY,EAAA;AAAA,MAC3B,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AAGA,EAAA,KAAA,CAAM,IAAA,CAAK;AAAA,IACT,GAAA,EAAK,sBAAA;AAAA,IACL,IAAA,EAAM,8CAAA;AAAA,IACN,WAAA,EAAa,sEAAA;AAAA,IACb,QAAA,EAAU;AAAA,GACX,CAAA;AAGD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,EAAA,EAAI,CAAA,EAAA,EAAK;AAC5B,IAAA,MAAM,IAAA,GAAO,OAAO,MAAA,CAAO,CAAC,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAC9C,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,GAAA,EAAK,eAAe,IAAI,CAAA,CAAA;AAAA,MACxB,IAAA,EAAM,gBAAa,IAAI,CAAA,CAAA;AAAA,MACvB,WAAA,EAAa,CAAA,kDAAA,CAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AAGA,EAAA,KAAA,CAAM,IAAA,CAAK;AAAA,IACT,GAAA,EAAK,gBAAA;AAAA,IACL,IAAA,EAAM,wBAAA;AAAA,IACN,WAAA,EAAa,kDAAA;AAAA,IACb,QAAA,EAAU;AAAA,GACX,CAAA;AAGD,EAAA,KAAA,CAAM,IAAA,CAAK;AAAA,IACT,GAAA,EAAK,YAAA;AAAA,IACL,IAAA,EAAM,2BAAA;AAAA,IACN,WAAA,EAAa,kEAAA;AAAA,IACb,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,OAAO,KAAA;AACT;AAEA,eAAsB,YAAA,CACpB,QAAA,EACA,GAAA,EACA,cAAA,EAC6B;AAC7B,EAAA,MAAM,MAAA,GAAS,YAAY,GAAG,CAAA;AAC9B,EAAA,MAAM,SAAS,eAAA,CAAgB;AAAA,IAC7B,UAAU,MAAA,CAAO,MAAA;AAAA,IAEjB,SAAA,EAAW,OAAA,CAAQ,GAAA,CAAI,gBAAgB;AAAA,GACxC,CAAA;AAED,EAAA,QAAQ,OAAO,QAAA;AAAU,IACvB,KAAK,qBAAA,EAAuB;AAC1B,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,OAAA,CAAQ,cAAA,EAAe;AACnD,MAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,OAAO,EAAE,CAAA;AACnD,MAAA,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,CAAA,qBAAA,EAAwB,MAAA,CAAO,EAAE,CAAA,CAAE,CAAA;AAC/D,MAAA,OAAO,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,IAChC;AAAA,IACA,KAAK,0BAAA,EAA4B;AAC/B,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,OAAA,CAAQ,kBAAA,EAAmB;AACvD,MAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,OAAO,EAAE,CAAA;AACnD,MAAA,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,CAAA,0BAAA,EAA6B,MAAA,CAAO,EAAE,CAAA,CAAE,CAAA;AACpE,MAAA,OAAO,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,IAChC;AAAA,IACA,KAAK,qBAAA,EAAuB;AAC1B,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,OAAA,CAAQ,cAAA,EAAe;AACnD,MAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,OAAO,EAAE,CAAA;AACnD,MAAA,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,CAAA,qBAAA,EAAwB,MAAA,CAAO,EAAE,CAAA,CAAE,CAAA;AAC/D,MAAA,OAAO,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,IAChC;AAAA,IACA,KAAK,gBAAA,EAAkB;AACrB,MAAA,OAAO,aAAa,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,CAAQ,UAAU,CAAA;AAAA,IAC5D;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,OAAA,CAAQ,UAAU,MAAA,CAAO,EAAA,IAAM,IAAI,MAAM,CAAA;AACtE,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR;AAAA,YACE,GAAA;AAAA,YACA,QAAA,EAAU,eAAA;AAAA,YACV,IAAA,EAAM,oBAAoB,KAAK;AAAA;AACjC;AACF,OACF;AAAA,IACF;AAAA,IACA,KAAK,UAAA,EAAY;AAEf,MAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,QAAA,CAAS,OAAA,CAAQ,aAAa,MAAM,CAAA;AAC9D,MAAA,OAAO,YAAA,CAAa,KAAK,OAAO,CAAA;AAAA,IAClC;AAAA,IACA,KAAK,gBAAA,EAAkB;AAErB,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,OAAA,CAAQ,kBAAkB,MAAA,CAAO,EAAA,IAAM,IAAI,MAAM,CAAA;AAC/E,MAAA,IAAI,CAAC,QAAQ,MAAM,IAAI,MAAM,CAAA,0BAAA,EAA6B,MAAA,CAAO,EAAE,CAAA,CAAE,CAAA;AACrE,MAAA,OAAO,YAAA,CAAa,GAAA,EAAK,MAAA,CAAO,KAAK,CAAA;AAAA,IACvC;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,OAAO,aAAa,GAAA,EAAK,MAAM,QAAA,CAAS,OAAA,CAAQ,UAAU,CAAA;AAAA,IAC5D;AAAA,IACA;AACE,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kCAAA,EAAqC,MAAA,CAAO,QAAQ,CAAA,CAAE,CAAA;AAAA;AAE5E;AAEA,SAAS,YAAA,CAAa,KAAa,IAAA,EAAmC;AACpE,EAAA,OAAO;AAAA,IACL,QAAA,EAAU;AAAA,MACR,EAAE,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAA,EAAM,KAAK,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA;AAAE;AAC3E,GACF;AACF;AAEA,SAAS,oBAAoB,KAAA,EAKlB;AACT,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,KAAA;AAAA,IACA,CAAA,eAAA,EAAkB,MAAM,aAAa,CAAA,CAAA;AAAA,IACrC,CAAA,aAAA,EAAgB,MAAM,WAAW,CAAA,CAAA;AAAA,IACjC,KAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,IAAI,CAAA;AACX,EAAA,OAAO,OAAO,KAAA,CAAM,IAAA;AACtB;AAIA,eAAsB,iBAAA,CACpB,QACA,QAAA,EACe;AACf,EAAA,MAAA,CAAO,iBAAA,CAAkB,4BAA4B,aAAa;AAAA,IAChE,SAAA,EAAW,MAAM,aAAA,CAAc,QAAQ;AAAA,GACzC,CAAE,CAAA;AAEF,EAAA,MAAA,CAAO,iBAAA,CAAkB,yBAAA,EAA2B,OAAO,GAAA,KAAQ;AACjE,IAAA,OAAO,YAAA,CAAa,QAAA,EAAU,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA;AAAA,EAC9C,CAAC,CAAA;AACH;;;ACjMO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,YAAA,EACE,4NAAA;AAAA,EACF,kBAAA,EACE,kRAAA;AAAA,EACF,wBAAA,EACE,uVAAA;AAAA,EACF,qBAAA,EACE,gPAAA;AAAA,EACF,UAAA,EACE,mNAAA;AAAA,EACF,aAAA,EACE,6aAAA;AAAA,EACF,oBAAA,EACE,0eAAA;AAAA,EACF,qBAAA,EACE,0UAAA;AAAA,EACF,8BAAA,EACE,uUAAA;AAAA,EACF,4BAAA,EACE,2dAAA;AAAA,EACF,0BAAA,EACE,iYAAA;AAAA,EACF,4BAAA,EACE;AACJ,CAAA;ACxBO,IAAM,iBAAA,GAAoBD,EAAE,MAAA,CAAO;AAAA,EACxC,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EAChC,KAAA,EAAOA,CAAAA,CACJ,IAAA,CAAK,CAAC,KAAA,EAAO,WAAA,EAAa,OAAA,EAAS,OAAA,EAAS,YAAA,EAAc,UAAU,CAAC,CAAA,CACrE,QAAQ,KAAK,CAAA;AAAA,EAChB,MAAA,EAAQ,gBAAgB,QAAA,EAAS;AAAA,EACjC,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,QAAQ,CAAC;AAClD,CAAC,CAAA;AAGD,eAAsB,gBAAA,CACpB,UACA,QAAA,EACgE;AAChE,EAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,IAAU,IAAA;AAC/B,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,MAAA,CAAO,MAAA,CAAO;AAAA,IAClC,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,MAAA;AAAA,IACA,OAAO,KAAA,CAAM;AAAA,GACd,CAAA;AACD,EAAA,OAAO,EAAE,IAAA,EAAK;AAChB;AAIO,IAAM,sBAAA,GAAyBA,EAAE,MAAA,CAAO;AAAA,EAC7C,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uBAAuB,CAAA;AAAA,EAC9C,MAAA,EAAQ,gBAAgB,QAAA,EAAS;AAAA,EACjC,mBAAA,EAAqBA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI;AAC/C,CAAC,CAAA;AAcD,eAAsB,qBAAA,CACpB,UACA,QAAA,EAC4B;AAC5B,EAAA,MAAM,KAAA,GAAQ,sBAAA,CAAuB,KAAA,CAAM,QAAQ,CAAA;AACnD,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,IAAU,IAAA;AAC/B,EAAA,MAAM,QAAQ,MAAM,QAAA,CAAS,QAAQ,SAAA,CAAU,KAAA,CAAM,MAAM,MAAM,CAAA;AACjE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,MAAM,WAAA,CAAY,IAAA;AAAA,IACxB,KAAA,EAAO,MAAM,WAAA,CAAY,KAAA;AAAA,IACzB,UAAU,KAAA,CAAM,IAAA;AAAA,IAChB,QAAA,EAAU,KAAA,CAAM,mBAAA,GACX,KAAA,CAAM,cACP,EAAC;AAAA,IACL,OAAA,EAAS,KAAA,CAAM,WAAA,CAAY,OAAA,IAAW,EAAA;AAAA,IACtC,GAAA,EAAK,CAAA,YAAA,EAAe,KAAA,CAAM,WAAA,CAAY,IAAI,CAAA,CAAA;AAAA,IAC1C,eAAe,KAAA,CAAM,aAAA;AAAA,IACrB,aAAa,KAAA,CAAM;AAAA,GACrB;AACF;AAIO,IAAM,4BAAA,GAA+BA,EAAE,MAAA,CAAO;AAAA,EACnD,UAAA,EAAYA,EAAE,IAAA,CAAK,CAAC,UAAU,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,WAAW,CAAC,CAAA;AAAA,EAClE,OAAA,EAASA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,EACjC,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAwBD,IAAM,gBAAA,GAA4E;AAAA,EAChF,QAAA,EAAU;AAAA,IACR,GAAA,EAAK;AAAA,MACH,UAAA,EAAY,QAAA;AAAA,MACZ,OAAA,EAAS,GAAA;AAAA,MACT,KAAA,EAAO,+CAAA;AAAA,MACP,IAAA,EAAM,yJAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,UAAA,EAAY,CAAC,IAAA,EAAM,IAAI,CAAA;AAAA,QACvB,UAAA,EAAY,CAAC,IAAA,EAAM,IAAI,CAAA;AAAA,QACvB,MAAA,EAAQ,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,QAC3B,gBAAA,EACE;AAAA,OACJ;AAAA,MACA,eAAA,EAAiB;AAAA,KACnB;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,QAAA;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO,iDAAA;AAAA,MACP,IAAA,EAAM,0LAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,UAAA,EAAY,CAAC,IAAI,CAAA;AAAA,QACjB,UAAA,EAAY,CAAC,IAAI,CAAA;AAAA,QACjB,MAAA,EAAQ,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,QAC3B,gBAAA,EACE;AAAA,OACJ;AAAA,MACA,eAAA,EAAiB;AAAA,KACnB;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,QAAA;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO,wCAAA;AAAA,MACP,IAAA,EAAM,8JAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,UAAA,EAAY,CAAC,IAAI,CAAA;AAAA,QACjB,UAAA,EAAY,CAAC,IAAA,EAAM,IAAI,CAAA;AAAA,QACvB,MAAA,EAAQ,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA;AAAA,QACrC,gBAAA,EACE;AAAA,OACJ;AAAA,MACA,eAAA,EAAiB;AAAA;AACnB,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO,0CAAA;AAAA,MACP,IAAA,EAAM,gLAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,UAAA,EAAY,CAAC,IAAI,CAAA;AAAA,QACjB,UAAA,EAAY,CAAC,IAAA,EAAM,IAAI,CAAA;AAAA,QACvB,MAAA,EAAQ,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,QAC3B,gBAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,UAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO,0CAAA;AAAA,MACP,IAAA,EAAM,qLAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,UAAA,EAAY,CAAC,IAAI,CAAA;AAAA,QACjB,UAAA,EAAY,CAAC,IAAI,CAAA;AAAA,QACjB,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,QACjB,gBAAA,EACE;AAAA;AACJ;AACF;AAEJ,CAAA;AAEA,eAAsB,2BAAA,CACpB,WACA,QAAA,EACkC;AAClC,EAAA,MAAM,KAAA,GAAQ,4BAAA,CAA6B,KAAA,CAAM,QAAQ,CAAA;AACzD,EAAA,MAAM,GAAA,GAAM,gBAAA,CAAiB,KAAA,CAAM,UAAU,CAAA;AAC7C,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,GAAA,CAAI,KAAA,CAAM,OAAO,CAAA,EAAG;AAC/B,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,QAAA,EAAW,KAAA,CAAM,UAAU,CAAA,MAAA,EAAS,MAAM,OAAO,CAAA,uFAAA;AAAA,KACnD;AAAA,EACF;AACA,EAAA,OAAO,GAAA,CAAI,MAAM,OAAO,CAAA;AAC1B;AAIO,IAAM,yBAAA,GAA4BA,EAAE,MAAA,CAAO;AAAA,EAChD,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,EAC9B,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAWD,eAAsB,wBAAA,CACpB,UACA,QAAA,EAC+B;AAC/B,EAAA,MAAM,KAAA,GAAQ,yBAAA,CAA0B,KAAA,CAAM,QAAQ,CAAA;AACtD,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,IAAU,IAAA;AAE/B,EAAA,MAAM,SAAS,MAAM,QAAA,CAAS,QAAQ,iBAAA,CAAkB,KAAA,CAAM,MAAM,MAAM,CAAA;AAC1E,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA;AAAA,EAC3D;AACA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,KAAA,CAAM,IAAA;AAAA,IACnB,SAAA,EAAW,OAAO,KAAA,CAAM,SAAA;AAAA,IACxB,UAAA,EAAY,OAAO,KAAA,CAAM,UAAA;AAAA,IACzB,OAAA,EAAS;AAAA,MACP,UAAA,EAAY,MAAA,CAAO,KAAA,CAAM,kBAAA,IAAsB,EAAC;AAAA,MAChD,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,cAAA,IAAkB;AAAC,KAC1C;AAAA;AAAA,IAEA,eAAe,MAAA,CAAO;AAAA,GACxB;AACF;AAIO,IAAM,eAAA,GAAkBA,EAAE,MAAA,CAAO;AAAA,EACtC,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,WAAW,CAAA;AAAA,EACjC,KAAA,EAAOA,CAAAA,CACJ,IAAA,CAAK,CAAC,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,QAAQ,CAAC,CAAA,CACnD,OAAA,CAAQ,KAAK,CAAA;AAAA,EAChB,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAQD,IAAM,eAAA,GAAkB,aAAA;AACxB,IAAM,aAAA,GAAgB,MAAA;AACtB,IAAM,iBAAA,GAAoB,yBAAA;AAE1B,SAAS,aAAa,GAAA,EAAqB;AAGzC,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAA,CAAE,OAAA,CAAQ,cAAA,EAAgB,GAAG,CAAA,CAAE,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AACvF;AAEA,eAAsB,cAAA,CACpB,UACA,QAAA,EACqB;AACrB,EAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,QAAQ,CAAA;AAC5C,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AACtB,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,GAAG,CAAA;AACnC,EAAA,MAAM,MAAM,CAAA,EAAG,iBAAiB,cAAc,IAAA,CAAK,iBAAiB,IAAI,IAAI,CAAA,CAAA;AAC5E,EAAA,MAAM,KAAA,GAAQ,CAAA,gDAAA,EAAwC,KAAA,CAAM,GAAG,CAAA,CAAA;AAC/D,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,MAAA,EAAQ,eAAA;AAAA,IACR,IAAA,EAAM,aAAA;AAAA,IACN,KAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,QAAA;AACJ,EAAA,QAAQ,MAAM,KAAA;AAAO,IACnB,KAAK,KAAA;AACH,MAAA,QAAA,GAAW,GAAG,eAAe,CAAA,EAAA,EAAK,aAAa,CAAA,GAAA,EAAM,KAAK,mBAAmB,GAAG,CAAA,CAAA;AAChF,MAAA;AAAA,IACF,KAAK,KAAA;AACH,MAAA,QAAA,GAAW,GAAG,eAAe,CAAA,EAAA,EAAK,KAAK,CAAA,iBAAA,EAAoB,aAAa,KAAK,GAAG,CAAA,CAAA,CAAA;AAChF,MAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAA,QAAA,GAAW,GAAG,eAAe,CAAA,EAAA,EAAK,KAAK,CAAA,iBAAA,EAAoB,aAAa,KAAK,GAAG,CAAA,CAAA,CAAA;AAChF,MAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAA,QAAA,GAAW,GAAG,eAAe,CAAA,CAAA,EAAI,KAAK,CAAA,gBAAA,EAAmB,aAAa,mBAAmB,GAAG,CAAA,CAAA;AAC5F,MAAA;AAAA,IACF,KAAK,QAAA;AACH,MAAA,QAAA,GAAW;AAAA,QACT,aAAa,IAAI,CAAA,CAAA,CAAA;AAAA,QACjB,eAAe,eAAe,CAAA,EAAA,CAAA;AAAA,QAC9B,cAAc,KAAK,CAAA,EAAA,CAAA;AAAA,QACnB,aAAa,aAAa,CAAA,EAAA,CAAA;AAAA,QAC1B,YAAY,GAAG,CAAA,CAAA,CAAA;AAAA,QACf;AAAA,OACF,CAAE,KAAK,IAAI,CAAA;AACX,MAAA;AAAA;AAEJ,EAAA,OAAO,EAAE,UAAU,UAAA,EAAW;AAChC;;;AChSO,SAAS,gBAAgB,MAAA,EAA8B;AAC5D,EAAA,OAAO,SAAS,MAAM,CAAA;AACxB;AAEA,SAAS,SAASG,EAAAA,EAAyB;AACzC,EAAA,MAAM,MAAMA,EAAAA,CAAE,IAAA;AACd,EAAA,QAAQ,IAAI,QAAA;AAAU,IACpB,KAAK,WAAA,EAAa;AAChB,MAAA,MAAM,GAAA,GAAMA,EAAAA;AACZ,MAAA,MAAM,aAAqC,EAAC;AAC5C,MAAA,MAAM,WAAqB,EAAC;AAC5B,MAAA,MAAM,QAAQ,GAAA,CAAI,KAAA;AAClB,MAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,EAAG;AACpC,QAAA,MAAM,KAAA,GAAQ,MAAM,GAAG,CAAA;AACvB,QAAA,UAAA,CAAW,GAAG,CAAA,GAAI,QAAA,CAAS,KAAK,CAAA;AAChC,QAAA,IAAI,CAAC,UAAA,CAAW,KAAK,CAAA,EAAG,QAAA,CAAS,KAAK,GAAG,CAAA;AAAA,MAC3C;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,UAAA;AAAA,QACA,QAAA;AAAA,QACA,oBAAA,EAAsB;AAAA,OACxB;AAAA,IACF;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,MAAMC,GAAAA,GAAKD,EAAAA;AACX,MAAA,MAAM,GAAA,GAA+B,EAAE,IAAA,EAAM,QAAA,EAAS;AACtD,MAAA,MAAM,MAAA,GAAUC,GAAAA,CAAG,IAAA,CAAyD,MAAA,IAAU,EAAC;AACvF,MAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,QAAA,IAAI,CAAA,CAAE,SAAS,KAAA,IAAS,CAAA,CAAE,UAAU,MAAA,EAAW,GAAA,CAAI,WAAW,CAAA,GAAI,CAAA,CAAE,KAAA;AACpE,QAAA,IAAI,CAAA,CAAE,SAAS,KAAA,IAAS,CAAA,CAAE,UAAU,MAAA,EAAW,GAAA,CAAI,WAAW,CAAA,GAAI,CAAA,CAAE,KAAA;AAAA,MACtE;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,IACA,KAAK,WAAA,EAAa;AAChB,MAAA,MAAMA,GAAAA,GAAKD,EAAAA;AACX,MAAA,MAAM,GAAA,GAA+B,EAAE,IAAA,EAAM,QAAA,EAAS;AACtD,MAAA,MAAM,MAAA,GAAUC,GAAAA,CAAG,IAAA,CAA8E,MAAA,IAAU,EAAC;AAC5G,MAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,QAAA,IAAI,CAAA,CAAE,SAAS,KAAA,IAAS,CAAA,CAAE,UAAU,MAAA,EAAW,GAAA,CAAI,SAAS,CAAA,GAAI,CAAA,CAAE,KAAA;AAClE,QAAA,IAAI,CAAA,CAAE,SAAS,KAAA,IAAS,CAAA,CAAE,UAAU,MAAA,EAAW,GAAA,CAAI,SAAS,CAAA,GAAI,CAAA,CAAE,KAAA;AAClE,QAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,EAAO,GAAA,CAAI,MAAM,CAAA,GAAI,SAAA;AAAA,MACtC;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,IACA,KAAK,YAAA;AACH,MAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAAA,IAC3B,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,CAAA,GAAID,EAAAA;AACV,MAAA,OAAO,EAAE,MAAM,QAAA,EAAU,IAAA,EAAM,CAAC,GAAG,CAAA,CAAE,OAAO,CAAA,EAAE;AAAA,IAChD;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,KAAA,GAASA,GAAE,IAAA,CAAgC,IAAA;AACjD,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,QAAA,CAAS,KAAK,CAAA,EAAE;AAAA,IACjD;AAAA,IACA,KAAK,aAAA,EAAe;AAClB,MAAA,MAAM,KAAA,GAASA,GAAE,IAAA,CAAqC,SAAA;AACtD,MAAA,OAAO,SAAS,KAAK,CAAA;AAAA,IACvB;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,KAAA,GAASA,GAAE,IAAA,CAAqC,SAAA;AACtD,MAAA,MAAM,GAAA,GAAM,SAAS,KAAK,CAAA;AAC1B,MAAA,MAAM,YAAA,GAAgBA,EAAAA,CAAE,IAAA,CAAyC,YAAA,EAAa;AAC9E,MAAA,OAAO,EAAE,GAAG,GAAA,EAAK,OAAA,EAAS,YAAA,EAAa;AAAA,IACzC;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,CAAA,GAAKA,GAAE,IAAA,CAA4B,KAAA;AACzC,MAAA,OAAO,EAAE,OAAO,CAAA,EAAE;AAAA,IACpB;AAAA,IACA,KAAK,WAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,oBAAA,EAAsB,IAAA,EAAK;AAAA,IACtD;AACE,MAAA,OAAO,EAAC;AAAA;AAEd;AAEA,SAAS,WAAWA,EAAAA,EAA0B;AAC5C,EAAA,MAAM,CAAA,GAAKA,GAAE,IAAA,CAA8B,QAAA;AAC3C,EAAA,OAAO,CAAA,KAAM,iBAAiB,CAAA,KAAM,YAAA;AACtC;ACpFO,IAAM,oBAAoBH,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,WAAA,EAAa,OAAO,CAAC,CAAA;AACjE,IAAM,gBAAA,GAAmBA,EAAE,IAAA,CAAK;AAAA,EACrC,MAAA;AAAA,EAAQ,UAAA;AAAA,EAAY;AACtB,CAAC,CAAA;AACM,IAAM,qBAAA,GAAwBA,EAAE,IAAA,CAAK;AAAA,EAC1C,MAAA;AAAA,EAAQ,eAAA;AAAA,EAAiB,iBAAA;AAAA,EAAmB;AAC9C,CAAC,CAAA;AACM,IAAM,mBAAA,GAAsBA,EAAE,IAAA,CAAK;AAAA,EACxC,MAAA;AAAA,EAAQ,WAAA;AAAA,EAAa,eAAA;AAAA,EAAiB;AACxC,CAAC,CAAA;AACM,IAAM,iBAAA,GAAoBA,EAAE,IAAA,CAAK;AAAA,EACtC,UAAA;AAAA,EAAY,iBAAA;AAAA,EAAmB;AACjC,CAAC,CAAA;AACM,IAAM,gBAAA,GAAmBA,EAAE,IAAA,CAAK;AAAA,EACrC,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM;AAC5C,CAAC,CAAA;AAEM,IAAM,gBAAA,GAAmBA,EAAE,IAAA,CAAK;AAAA,EACrC,oBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAC,CAAA;AAEM,IAAM,qBAAA,GAAwBA,EAAE,IAAA,CAAK;AAAA,EAC1C,IAAA;AAAA,EAAM,WAAA;AAAA,EAAa,gBAAA;AAAA,EAAkB,cAAA;AAAA,EAAgB,YAAA;AAAA,EACrD,WAAA;AAAA,EAAa,gBAAA;AAAA,EAAkB,uBAAA;AAAA,EAAyB;AAC1D,CAAC,CAAA;AAIM,IAAM,wBAAA,GAA2BA,EAAE,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EAC/B,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,IAAI,GAAI,CAAA;AAAA,EACxC,eAAA,EAAiBA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA;AAAA,EAElD,uBAAA,EAAyB,iBAAA;AAAA,EACzB,mBAAA,EAAqB,gBAAA;AAAA,EACrB,kBAAA,EAAoB,qBAAA;AAAA,EACpB,gBAAA,EAAkB,mBAAA;AAAA,EAElB,SAAA,EAAWA,EAAE,OAAA,EAAQ;AAAA,EACrB,cAAA,EAAgB,iBAAA;AAAA,EAChB,QAAQA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EACpC,YAAA,EAAcA,CAAAA,CAAE,KAAA,CAAM,gBAAgB,EAAE,QAAA,EAAS;AAAA,EAEjD,eAAA,EAAiBA,CAAAA,CAAE,KAAA,CAAM,gBAAgB,EAAE,QAAA,EAAS;AAAA,EACpD,mBAAA,EAAqBA,CAAAA,CAAE,KAAA,CAAM,qBAAqB,EAAE,QAAA,EAAS;AAAA,EAE7D,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAKM,SAAS,aAAa,KAAA,EAAqC;AAChE,EAAA,OAAO;AAAA,IACL,CAAA,wBAAA,EAA2B,MAAM,uBAAuB,CAAA,CAAA;AAAA,IACxD,CAAA,oBAAA,EAAuB,MAAM,mBAAmB,CAAA,CAAA;AAAA,IAChD,CAAA,mBAAA,EAAsB,MAAM,kBAAkB,CAAA,CAAA;AAAA,IAC9C,CAAA,iBAAA,EAAoB,MAAM,gBAAgB,CAAA,CAAA;AAAA,IAC1C,CAAA,eAAA,EAAkB,MAAM,cAAc,CAAA,CAAA;AAAA,IACtC,CAAA,UAAA,EAAa,MAAM,SAAS,CAAA;AAAA,GAC9B;AACF;AAEO,SAAS,iBACd,KAAA,EAC0B;AAC1B,EAAA,MAAM,QAAkC,EAAC;AACzC,EAAA,IAAI,KAAA,CAAM,eAAA,EAAiB,KAAA,CAAM,iBAAiB,IAAI,KAAA,CAAM,eAAA;AAC5D,EAAA,IAAI,KAAA,CAAM,mBAAA;AACR,IAAA,KAAA,CAAM,qBAAqB,IAAI,KAAA,CAAM,mBAAA;AACvC,EAAA,KAAA,CAAM,gBAAgB,CAAA,GAAI,CAAC,KAAA,CAAM,cAAc,CAAA;AAC/C,EAAA,KAAA,CAAM,qBAAqB,CAAA,GAAI,CAAC,KAAA,CAAM,mBAAmB,CAAA;AACzD,EAAA,KAAA,CAAM,WAAW,CAAA,GAAI,CAAC,MAAA,CAAO,KAAA,CAAM,SAAS,CAAC,CAAA;AAC7C,EAAA,OAAO,KAAA;AACT;;;AC7EO,SAAS,aAAA,CACd,OACA,KAAA,EACyD;AACzD,EAAA,KAAA,MAAW,CAAA,IAAK,MAAM,UAAA,EAAY;AAChC,IAAA,MAAM,SAAA,GAAY,CAAA,CAAE,UAAA,CAAW,yBAAyB,KAAK,EAAC;AAC9D,IAAA,MAAM,GAAA,GAAM,CAAA,CAAE,UAAA,CAAW,kBAAkB,KAAK,EAAC;AACjD,IAAA,IACE,SAAA,CAAU,SAAS,KAAA,CAAM,uBAAuB,KAChD,GAAA,CAAI,QAAA,CAAS,KAAA,CAAM,gBAAgB,CAAA,EACnC;AACA,MAAA,OAAO;AAAA,QACL,OAAO,CAAA,CAAE,KAAA;AAAA,QACT,WAAW,CAAA,CAAE,kBAAA;AAAA,QACb,OAAA,EAAS,CAAA,mBAAA,EAAsB,CAAA,CAAE,KAAK,CAAA;AAAA,OACxC;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,IAAA;AAAA,IACP,SAAA,EACE,gHAAA;AAAA,IACF,OAAA,EAAS;AAAA,GACX;AACF;;;ACvBO,SAAS,gBAAA,CACd,QACA,KAAA,EAMA;AACA,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,KAAA,EAAO;AAC/B,IAAA,IACE,KAAK,mBAAA,KAAwB,KAAA,CAAM,uBACnC,IAAA,CAAK,kBAAA,KAAuB,MAAM,kBAAA,EAClC;AACA,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,WAAW,IAAA,CAAK,kBAAA;AAAA,QAChB,YAAY,CAAA,KAAA,EAAQ,IAAA,CAAK,mBAAmB,CAAA,EAAA,EAAK,KAAK,kBAAkB,CAAA,CAAA,CAAA;AAAA,QACxE,SAAS,CAAA,mBAAA,EAAsB,IAAA,CAAK,mBAAmB,CAAA,CAAA,EAAI,KAAK,kBAAkB,CAAA;AAAA,OACpF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,QAAA;AAAA,IACP,SAAA,EACE,8GAAA;AAAA,IACF,UAAA,EAAY,gBAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AACF;;;ACjBA,IAAM,eAAA,GAAkB;AAAA;AAAA,EAEtB,SAAA;AAAA,EAAW,WAAA;AAAA,EAAa,QAAA;AAAA,EAAU,aAAA;AAAA,EAAe,eAAA;AAAA,EACjD,QAAA;AAAA,EAAU,OAAA;AAAA,EAAS,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU,cAAA;AAAA,EAAgB,cAAA;AAAA;AAAA,EAEvD,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,OAAA;AAAA,EAAS,SAAA;AAAA,EAAW;AACrC,CAAA;AAEA,IAAM,eAAA,GAAkB,EAAA;AAExB,IAAM,iBAAiB,IAAI,MAAA;AAAA,EACzB,CAAA,CAAA,EAAI,eAAA,CACD,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,CAAQ,qBAAA,EAAuB,MAAM,CAAC,CAAA,CACnD,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,EACZ;AACF,CAAA;AAEO,SAAS,kBAAA,CACd,MACA,QAAA,EACqB;AACrB,EAAA,MAAM,KAAA,GAAQ,KAAK,WAAA,EAAY;AAC/B,EAAA,MAAM,OAA2B,EAAC;AAElC,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAM,CAAA,GAAI,QAAQ,WAAA,EAAY;AAC9B,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,OAAO,IAAA,IAAQ,MAAM,MAAA,EAAQ;AAC3B,MAAA,MAAM,CAAA,GAAI,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,IAAI,CAAA;AAC/B,MAAA,IAAI,MAAM,EAAA,EAAI;AACd,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAI,eAAe,CAAA;AACnD,MAAA,MAAM,MAAA,GAAS,KAAA,CAAM,KAAA,CAAM,WAAA,EAAa,CAAC,CAAA;AACzC,MAAA,MAAM,OAAA,GAAU,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA;AAC1C,MAAA,IAAA,CAAK,KAAK,EAAE,OAAA,EAAS,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA;AACxC,MAAA,IAAA,GAAO,IAAI,CAAA,CAAE,MAAA;AAAA,IACf;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,SAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,KAAM,CAAC,EAAE,OAAO,CAAA;AAAA,IACpC;AAAA,GACF;AACF;;;ACnDO,SAAS,eAAA,CACd,SACA,KAAA,EACe;AACf,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,IAAI,KAAA,GAAQ,KAAA;AAGZ,EAAA,IAAI,OAAA,CAAQ,gBAAA,IAAoB,OAAA,CAAQ,gBAAA,CAAiB,SAAS,CAAA,EAAG;AACnE,IAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,KAAA,CAAM,IAAA,EAAM,QAAQ,gBAAgB,CAAA;AACjE,IAAA,IAAI,EAAE,OAAA,EAAS;AACb,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,KAAA,MAAW,CAAA,IAAK,EAAE,IAAA,EAAM;AACtB,QAAA,IAAI,CAAC,EAAE,OAAA,EAAS,QAAA,CAAS,KAAK,CAAA,QAAA,EAAW,CAAA,CAAE,OAAO,CAAA,CAAE,CAAA;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AAGA,EAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,IAAA,KAAA,MAAW,CAAC,SAAS,OAAO,CAAA,IAAK,OAAO,OAAA,CAAQ,OAAA,CAAQ,UAAU,CAAA,EAAG;AACnE,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,KAAA,CAAM,OAAO,KAAK,EAAC;AAC1C,MAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,QAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,CAAC,CAAA,EAAG;AACvB,UAAA,KAAA,GAAQ,IAAA;AACR,UAAA,QAAA,CAAS,IAAA,CAAK,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAA;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,EAAA,IAAI,QAAQ,gBAAA,EAAkB;AAC5B,IAAA,KAAA,MAAW,IAAA,IAAQ,QAAQ,gBAAA,EAAkB;AAC3C,MAAA,IAAI,KAAA,CAAM,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA,EAAG;AAC9B,QAAA,KAAA,GAAQ,IAAA;AACR,QAAA,QAAA,CAAS,IAAA,CAAK,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,OAAO,QAAA,EAAS;AAC3B;;;ACfO,SAAS,qBAAA,CACd,QACA,KAAA,EACqB;AACrB,EAAA,MAAM,GAAA,GAA2B;AAAA,IAC/B,iBAAiB,EAAC;AAAA,IAClB,iBAAiB,EAAC;AAAA,IAClB,oBAAoB;AAAC,GACvB;AAGA,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,QAAA,CAAS,UAAA,EAAY;AAC5C,IAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,GAAA,CAAI,QAAA,EAAU,KAAK,CAAA;AAC7C,IAAA,GAAA,CAAI,mBAAmB,IAAA,CAAK;AAAA,MAC1B,OAAA,EAAS,CAAA,iBAAA,EAAoB,GAAA,CAAI,EAAE,CAAA,CAAA;AAAA,MACnC,YAAA,EAAc,OAAO,QAAA,CAAS,OAAA;AAAA,MAC9B,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,QAAA,EAAU,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,IAAI;AAAA,KAC/B,CAAA;AACD,IAAA,IAAI,EAAE,KAAA,EAAO;AACX,MAAA,GAAA,CAAI,gBAAgB,IAAA,CAAK;AAAA,QACvB,IAAI,GAAA,CAAI,EAAA;AAAA,QACR,OAAO,GAAA,CAAI,KAAA;AAAA,QACX,aAAa,GAAA,CAAI,WAAA;AAAA,QACjB,QAAQ,GAAA,CAAI,MAAA;AAAA,QACZ,iBAAiB,GAAA,CAAI,eAAA;AAAA,QACrB,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AAAA,EACF;AAGA,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY;AAC1C,IAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,GAAA,CAAI,QAAA,EAAU,KAAK,CAAA;AAC7C,IAAA,GAAA,CAAI,mBAAmB,IAAA,CAAK;AAAA,MAC1B,OAAA,EAAS,CAAA,eAAA,EAAkB,GAAA,CAAI,EAAE,CAAA,CAAA;AAAA,MACjC,YAAA,EAAc,OAAO,MAAA,CAAO,OAAA;AAAA,MAC5B,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,QAAA,EAAU,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,IAAI;AAAA,KAC/B,CAAA;AACD,IAAA,IAAI,EAAE,KAAA,EAAO;AACX,MAAA,GAAA,CAAI,gBAAgB,IAAA,CAAK;AAAA,QACvB,IAAI,GAAA,CAAI,EAAA;AAAA,QACR,OAAO,GAAA,CAAI,KAAA;AAAA,QACX,aAAa,GAAA,CAAI,WAAA;AAAA,QACjB,QAAQ,GAAA,CAAI,MAAA;AAAA,QACZ,iBAAiB,GAAA,CAAI,eAAA;AAAA,QACrB,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AAAA,EACF;AAGA,EAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,MAAA,CAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AACzD,EAAA,GAAA,CAAI,mBAAmB,IAAA,CAAK;AAAA,IAC1B,OAAA,EAAS,eAAA;AAAA,IACT,YAAA,EAAc,OAAO,IAAA,CAAK,OAAA;AAAA,IAC1B,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,QAAA,EAAU,KAAA,CAAM,QAAA,CAAS,IAAA,CAAK,IAAI;AAAA,GACnC,CAAA;AACD,EAAA,IAAI,MAAM,KAAA,EAAO;AACf,IAAA,GAAA,CAAI,eAAA,GAAkB,MAAA,CAAO,IAAA,CAAK,WAAA,CAC/B,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,kBAAkB,CAAA,CACnC,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACX,SAAS,CAAA,CAAE,OAAA;AAAA,MACX,aAAa,CAAA,CAAE,WAAA;AAAA,MACf,iBAAiB,CAAA,CAAE;AAAA,KACrB,CAAE,CAAA;AAAA,EACN;AAEA,EAAA,OAAO,GAAA;AACT;;;AChGO,SAAS,cAAA,CACd,OACA,KAAA,EACc;AACd,EAAA,KAAA,MAAW,CAAA,IAAK,MAAM,KAAA,EAAO;AAC3B,IAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,CAAA,CAAE,QAAA,EAAU,KAAK,CAAA;AAC/C,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,OAAO;AAAA,QACL,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,YAAY,CAAA,CAAE,eAAA;AAAA,QACd,WAAW,CAAA,CAAE,kBAAA;AAAA,QACb,OAAA,EAAS,CAAA,aAAA,EAAgB,CAAA,CAAE,EAAE,CAAA,CAAA;AAAA,QAC7B,UAAU,KAAA,CAAM;AAAA,OAClB;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EACE,2GAAA;AAAA,IACF,OAAA,EAAS,yBAAA;AAAA,IACT,UAAU;AAAC,GACb;AACF;AAEO,SAAS,aAAA,CACd,OACA,KAAA,EACc;AACd,EAAA,KAAA,MAAW,CAAA,IAAK,MAAM,KAAA,EAAO;AAC3B,IAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,CAAA,CAAE,QAAA,EAAU,KAAK,CAAA;AAC/C,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,OAAO;AAAA,QACL,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,YAAY,CAAA,CAAE,eAAA;AAAA,QACd,WAAW,CAAA,CAAE,kBAAA;AAAA,QACb,OAAA,EAAS,CAAA,mBAAA,EAAsB,CAAA,CAAE,EAAE,CAAA,CAAA;AAAA,QACnC,UAAU,KAAA,CAAM;AAAA,OAClB;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EACE,4HAAA;AAAA,IACF,OAAA,EAAS,+BAAA;AAAA,IACT,UAAU;AAAC,GACb;AACF;;;AC5CA,IAAM,OAAA,GAAkC;AAAA,EACtC,QAAA,EAAU,KAAA;AAAA,EACV,OAAA,EAAS,KAAA;AAAA,EACT,UAAA,EAAY,KAAA;AAAA,EACZ,KAAA,EAAO,KAAA;AAAA,EACP,gBAAA,EAAkB,IAAA;AAAA,EAClB,KAAA,EAAO;AACT,CAAA;AAEO,SAAS,YAAA,CAAa,QAAgB,KAAA,EAAiC;AAE5E,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,KAAA,EAAO;AAC/B,IAAA,IACE,IAAA,CAAK,WAAA,KAAgB,KAAA,CAAM,WAAA,IAC3B,IAAA,CAAK,mBAAA,KAAwB,KAAA,CAAM,mBAAA,IACnC,IAAA,CAAK,kBAAA,KAAuB,KAAA,CAAM,kBAAA,EAClC;AACA,MAAA,OAAO;AAAA,QACL,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,OAAA,EAAS,mBAAmB,IAAA,CAAK,WAAW,IAAI,IAAA,CAAK,mBAAmB,CAAA,CAAA,EAAI,IAAA,CAAK,kBAAkB,CAAA;AAAA,OACrG;AAAA,IACF;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,KAAA,EAAO;AAC/B,IAAA,IAAI,IAAA,CAAK,WAAA,KAAgB,KAAA,CAAM,WAAA,EAAa;AAC1C,MAAA,OAAO;AAAA,QACL,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,OAAA,EAAS,CAAA,gBAAA,EAAmB,IAAA,CAAK,WAAW,CAAA,SAAA;AAAA,OAC9C;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,EAAE,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,yBAAA,EAA0B;AACjE;;;AClDA,IAAM,WAAA,GAA0B,CAAC,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AACvD,IAAM,UAAA,GAAwB,CAAC,KAAA,EAAO,QAAA,EAAU,QAAQ,UAAU,CAAA;AAElE,SAAS,SAAA,CACP,KAAA,EAAY,KAAA,EAAU,KAAA,EACnB;AACH,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAC7B,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAA,GAAI,KAAK,CAAC,CAAA;AAC3D,EAAA,OAAO,MAAM,CAAC,CAAA;AAChB;AAOO,SAAS,iBAAA,CAAkB,SAAkB,KAAA,EAAsB;AACxE,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,MAAM,IAAA,EAAK;AAAA,IACvC,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,UAAU,UAAA,EAAY,KAAA,CAAM,IAAA,EAAM,CAAE,CAAA,EAAE;AAAA,IAClE,EAAE,KAAA,EAAO,SAAA,CAAU,WAAA,EAAa,KAAA,CAAM,OAAO,CAAE,CAAA,EAAG,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK;AAAA,IACnE,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,UAAU,UAAA,EAAY,KAAA,CAAM,IAAA,EAAM,EAAE,CAAA,EAAE;AAAA,IAClE,EAAE,KAAA,EAAO,SAAA,CAAU,WAAA,EAAa,KAAA,CAAM,OAAO,EAAE,CAAA,EAAG,IAAA,EAAM,KAAA,CAAM,IAAA;AAAK,GACrE;AAEA,EAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,IAAA,MAAM,KAAA,GAAQ,QAAQ,QAAA,CAAS,IAAA;AAAA,MAC7B,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,EAAE,KAAA,IAAS,CAAA,CAAE,SAAS,CAAA,CAAE;AAAA,KAC7C;AACA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO;AAAA,QACL,sBAAsB,KAAA,CAAM,oBAAA;AAAA,QAC5B,eAAe,KAAA,CAAM,aAAA;AAAA,QACrB,SAAS,CAAA,sBAAA,EAAyB,CAAA,CAAE,KAAK,CAAA,CAAA,EAAI,EAAE,IAAI,CAAA;AAAA,OACrD;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,sBAAsB,EAAC;AAAA,IACvB,eAAe,EAAC;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AACF;;;ACxCA,IAAM,KAAA,GAAsB,CAAC,KAAA,EAAO,QAAA,EAAU,MAAM,CAAA;AAEpD,SAAS,IAAA,CAAK,GAAe,KAAA,EAA2B;AACtD,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AACzB,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAA,GAAI,KAAK,CAAC,CAAA;AAC3D,EAAA,OAAO,MAAM,CAAC,CAAA;AAChB;AAEO,SAAS,oBAAoB,KAAA,EAAqC;AACvE,EAAA,IAAI,UAAU,KAAA,CAAM,kBAAA;AAEpB,EAAA,IAAI,KAAA,CAAM,YAAA,EAAc,OAAA,GAAU,IAAA,CAAK,SAAS,CAAE,CAAA;AAAA,OAC7C,OAAA,GAAU,IAAA,CAAK,OAAA,EAAS,EAAE,CAAA;AAE/B,EAAA,IAAI,MAAM,qBAAA,IAAyB,CAAA,EAAG,OAAA,GAAU,IAAA,CAAK,SAAS,CAAE,CAAA;AAAA,OAAA,IACvD,MAAM,qBAAA,KAA0B,CAAA,EAAG,OAAA,GAAU,IAAA,CAAK,SAAS,EAAE,CAAA;AAEtE,EAAA,IAAI,MAAM,cAAA,KAAmB,CAAA,EAAG,OAAA,GAAU,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA,OAAA,IACjD,MAAM,cAAA,IAAkB,CAAA,EAAG,OAAA,GAAU,IAAA,CAAK,SAAS,EAAE,CAAA;AAE9D,EAAA,OAAO,OAAA;AACT;;;ACnBO,IAAM,qBAAA,GACX,uOAAA;;;ACNK,IAAM,mBAAA,GACX,4KAAA;AAoBK,SAAS,oBACd,KAAA,EACgB;AAChB,EAAA,OAAO;AAAA,IACL,kBAAkB,CAAA,eAAA,EAAkB,KAAA,CAAM,gBAAgB,CAAA,SAAA,EAAY,MAAM,YAAY,CAAA,CAAA;AAAA,IACxF,eAAe,KAAA,CAAM,WAAA;AAAA,IACrB,sBAAsB,KAAA,CAAM,UAAA;AAAA,IAC5B,mBAAA,EAAqB,mBAAA;AAAA,IACrB,YAAA,EAAA,iBAAc,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,IACrC,qBAAA,EAAuB,IAAA;AAAA,IACvB,UAAA,EAAY;AAAA,GACd;AACF;;;ACxBO,IAAM,6BAAA,GACX,sFAAA;AAgDF,IAAM,oBAAA,uBAA2B,GAAA,CAAI;AAAA,EACnC,OAAA;AAAA,EAAS,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU;AACnD,CAAC,CAAA;AACD,IAAM,oBAAA,uBAA2B,GAAA,CAAI;AAAA,EACnC,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU;AACtB,CAAC,CAAA;AAED,eAAsB,uBAAA,CACpB,UACA,QAAA,EAC8B;AAC9B,EAAA,MAAM,KAAA,GAAQ,wBAAA,CAAyB,KAAA,CAAM,QAAQ,CAAA;AAGrD,EAAA,MAAM;AAAA,IACJ,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,IACpB,QAAA,CAAS,MAAM,qBAAA,EAAsB;AAAA,IACrC,QAAA,CAAS,MAAM,qBAAA,EAAsB;AAAA,IACrC,QAAA,CAAS,MAAM,iBAAA,EAAkB;AAAA,IACjC,QAAA,CAAS,MAAM,eAAA,EAAgB;AAAA,IAC/B,QAAA,CAAS,MAAM,gBAAA,EAAiB;AAAA,IAChC,QAAA,CAAS,MAAM,cAAA,EAAe;AAAA,IAC9B,QAAA,CAAS,MAAM,qBAAA,EAAsB;AAAA,IACrC,QAAA,CAAS,MAAM,iBAAA,EAAkB;AAAA,IACjC,QAAA,CAAS,MAAM,uBAAA,EAAwB;AAAA,IACvC,QAAA,CAAS,MAAM,aAAA;AAAc,GAC9B,CAAA;AAGD,EAAA,MAAM,KAAA,GAAQ,aAAa,KAAK,CAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,iBAAiB,KAAK,CAAA;AACpC,EAAA,MAAM,eAAe,EAAE,IAAA,EAAM,KAAA,CAAM,WAAA,EAAa,OAAO,KAAA,EAAM;AAG7D,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,aAAA,EAAe,KAAK,CAAA;AACnD,EAAA,MAAM,WAAA,GAAc,gBAAA,CAAiB,gBAAA,EAAkB,KAAK,CAAA;AAG5D,EAAA,MAAM,cAAA,GAAiB,qBAAA;AAAA,IACrB,EAAE,QAAA,EAAU,MAAA,EAAQ,IAAA,EAAK;AAAA,IACzB;AAAA,GACF;AAGA,EAAA,MAAM,SAAA,GAAY,cAAA,CAAe,UAAA,EAAY,YAAY,CAAA;AACzD,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,SAAA,EAAW,YAAY,CAAA;AAGtD,EAAA,MAAM,OAAA,GAAU,aAAa,aAAA,EAAe;AAAA,IAC1C,aAAa,WAAA,CAAY,KAAA;AAAA,IACzB,qBAAqB,KAAA,CAAM,mBAAA;AAAA,IAC3B,oBAAoB,KAAA,CAAM;AAAA,GAC3B,CAAA;AACD,EAAA,MAAM,QAAA,GAAW,kBAAkB,eAAA,EAAiB;AAAA,IAClD,OAAO,QAAA,CAAS,KAAA;AAAA,IAChB,MAAM,WAAA,CAAY;AAAA,GACnB,CAAA;AAGD,EAAA,MAAM,YAAA,GAAA,CACH,MAAM,eAAA,EAAiB,MAAA,IAAU,KAAK,CAAA,IAAA,CACtC,KAAA,CAAM,mBAAA,EAAqB,MAAA,IAAU,CAAA,IAAK,CAAA;AAC7C,EAAA,MAAM,qBAAA,GAAA,CACH,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,MAAM,KAAA,CAAM,YAAA,EAAc,MAAA,GAAS,CAAA,GAAI,CAAA,CAAA,IAC1D,KAAA,CAAM,SAAA,KAAc,MAAA,GAAY,IAAI,CAAA,CAAA,GAAK,CAAA;AAE5C,EAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,KAAA,EAAO,cAAc,CAAA;AAClE,EAAA,MAAM,aAAa,mBAAA,CAAoB;AAAA,IACrC,kBAAA,EAAoB,kBAAkB,cAAA,CAAe,eAAA,CAAgB,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,eAAe,CAAC,CAAA;AAAA,IAClG,YAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,cAAwB,EAAC;AAC/B,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,IAAI,CAAC,MAAM,MAAA,EAAQ;AACjB,IAAA,WAAA,CAAY,KAAK,4EAA4E,CAAA;AAC7F,IAAA,IAAA,CAAK,KAAK,sFAAiF,CAAA;AAAA,EAC7F;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,YAAA,IAAgB,KAAA,CAAM,YAAA,CAAa,WAAW,CAAA,EAAG;AAC1D,IAAA,WAAA,CAAY,KAAK,gEAAgE,CAAA;AACjF,IAAA,IAAA,CAAK,KAAK,oGAA+F,CAAA;AAAA,EAC3G;AACA,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,WAAA,CAAY,KAAK,yFAAyF,CAAA;AAC1G,IAAA,IAAA,CAAK,KAAK,8FAA8F,CAAA;AAAA,EAC1G;AAGA,EAAA,MAAM,SAAS,aAAA,CAAc,QAAA,CAAS,OAAO,WAAA,CAAY,KAAA,EAAO,eAAe,eAAe,CAAA;AAG9F,EAAA,MAAM,SAAS,mBAAA,CAAoB;AAAA,IACjC,gBAAA,EAAkB,SAAS,IAAA,CAAK,iBAAA;AAAA,IAChC,cAAc,SAAA,CAAU,aAAA;AAAA,IACxB,WAAA,EAAa,SAAS,IAAA,CAAK,YAAA;AAAA,IAC3B,UAAA,EAAY,SAAS,IAAA,CAAK;AAAA,GAC3B,CAAA;AAGD,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,GAAG,cAAA,CAAe,kBAAA;AAAA,IAClB;AAAA,MACE,SAAS,SAAA,CAAU,OAAA;AAAA,MACnB,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,UAAU,IAAA,KAAS,gBAAA;AAAA,MAC1B,QAAA,EAAU,SAAA,CAAU,QAAA,CAAS,IAAA,CAAK,IAAI;AAAA,KACxC;AAAA,IACA;AAAA,MACE,SAAS,QAAA,CAAS,OAAA;AAAA,MAClB,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,SAAS,IAAA,KAAS,gBAAA;AAAA,MACzB,QAAA,EAAU,QAAA,CAAS,QAAA,CAAS,IAAA,CAAK,IAAI;AAAA,KACvC;AAAA,IACA;AAAA,MACE,SAAS,OAAA,CAAQ,OAAA;AAAA,MACjB,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,eAAe,WAAA,CAAY,KAAK,SAAS,KAAA,CAAM,mBAAmB,CAAA,MAAA,EAAS,KAAA,CAAM,kBAAkB,CAAA;AAAA,KAC/G;AAAA,IACA;AAAA,MACE,SAAS,QAAA,CAAS,OAAA;AAAA,MAClB,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,QAAA,CAAS,oBAAA,CAAqB,MAAA,GAAS,CAAA;AAAA,MAC9C,UAAU,CAAA,MAAA,EAAS,QAAA,CAAS,KAAK,CAAA,OAAA,EAAU,YAAY,KAAK,CAAA;AAAA,KAC9D;AAAA,IACA;AAAA,MACE,SAAS,QAAA,CAAS,OAAA;AAAA,MAClB,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,IAAA;AAAA,MACP,UAAU,CAAA,eAAA,EAAkB,KAAA,CAAM,uBAAuB,CAAA,MAAA,EAAS,MAAM,gBAAgB,CAAA;AAAA,KAC1F;AAAA,IACA;AAAA,MACE,SAAS,WAAA,CAAY,OAAA;AAAA,MACrB,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,IAAA;AAAA,MACP,UAAU,CAAA,IAAA,EAAO,KAAA,CAAM,mBAAmB,CAAA,MAAA,EAAS,MAAM,kBAAkB,CAAA;AAAA;AAC7E,GACF;AAEA,EAAA,OAAO;AAAA,IACL,WAAW,EAAE,KAAA,EAAO,SAAS,KAAA,EAAO,SAAA,EAAW,SAAS,SAAA,EAAU;AAAA,IAClE,WAAA,EAAa;AAAA,MACX,OAAO,WAAA,CAAY,KAAA;AAAA,MACnB,WAAW,WAAA,CAAY,SAAA;AAAA,MACvB,YAAY,WAAA,CAAY;AAAA,KAC1B;AAAA,IACA,yBAAA,EAA2B;AAAA,MACzB,oBAAoB,SAAA,CAAU,IAAA;AAAA,MAC9B,oBAAoB,QAAA,CAAS;AAAA,KAC/B;AAAA,IACA,oCAAA,EAAsC;AAAA,MACpC,oBAAoB,SAAA,CAAU,UAAA;AAAA,MAC9B,oBAAoB,QAAA,CAAS;AAAA,KAC/B;AAAA,IACA,kBAAA,EAAoB,uBAAA,CAAwB,cAAA,EAAgB,IAAA,CAAK,WAAW,CAAA;AAAA,IAC5E,iBAAA,EAAmB,MAAA;AAAA,IACnB,sBAAsB,QAAA,CAAS,oBAAA,CAAqB,IAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAAA,IACtE,eAAe,QAAA,CAAS,aAAA,CAAc,IAAI,CAAC,CAAA,KAAM,GAAG,CAAA,CAAE,UAAU,CAAA,EAAA,EAAK,CAAA,CAAE,YAAY,CAAA,EAAA,EAAK,CAAA,CAAE,eAAe,CAAA,GAAA,EAAM,CAAA,CAAE,mBAAmB,CAAA,CAAE,CAAA;AAAA,IACtI,eAAA,EAAiB;AAAA,MACf,QAAA,EAAU,WAAA,CAAY,KAAA,KAAU,MAAA,IAAU,YAAY,KAAA,KAAU,UAAA;AAAA,MAChE,kBAAA,EAAoB,0BAAA,CAA2B,QAAA,CAAS,KAAA,EAAO,YAAY,KAAK;AAAA,KAClF;AAAA,IACA,mBAAmB,OAAA,CAAQ,QAAA;AAAA,IAC3B,UAAA;AAAA,IACA,WAAA;AAAA,IACA,gBAAA,EAAkB,IAAA;AAAA,IAClB,qBAAA,EAAuB,IAAA;AAAA,IACvB,kBAAA,EAAoB,SAAA;AAAA,IACpB,GAAG,MAAA;AAAA,IACH,cAAA,EAAgB,6BAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AACF;AAIA,SAAS,kBACP,KAAA,EAC2B;AAC3B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,QAAA;AAC/B,EAAA,MAAM,QAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,MAAM,GAAA,IAAO,CAAA,KAAM,KAAA,GAAQ,CAAA,GAAI,MAAM,QAAA,GAAW,CAAA,GAAI,CAAA,CAAA,EAAI,CAAC,IAAI,KAAA,CAAM,MAAA;AACpG,EAAA,OAAO,KAAA,GAAQ,IAAA,GAAO,KAAA,GAAQ,KAAA,GAAQ,OAAO,QAAA,GAAW,MAAA;AAC1D;AAEA,SAAS,qBAAA,CACP,OACA,WAAA,EACQ;AACR,EAAA,IAAI,CAAA,GAAI,CAAA;AACR,EAAA,IAAA,CACG,KAAA,CAAM,iBAAiB,QAAA,CAAS,MAAM,KAAK,KAAA,KAC5C,WAAA,CAAY,eAAA,CAAgB,MAAA,GAAS,CAAA,EACrC;AACA,IAAA,CAAA,IAAK,CAAA;AAAA,EACP;AACA,EAAA,OAAO,CAAA;AACT;AAEA,SAAS,uBAAA,CACP,gBACA,OAAA,EAC2C;AAC3C,EAAA,MAAM,MAAgE,EAAC;AACvE,EAAA,MAAM,aAAsE,EAAC;AAC7E,EAAA,MAAM,WAAqE,EAAC;AAE5E,EAAA,MAAM,eAAA,uBAAsB,GAAA,EAAY;AACxC,EAAA,KAAA,MAAW,GAAA,IAAO,eAAe,eAAA,EAAiB;AAChD,IAAA,KAAA,MAAW,CAAA,IAAK,GAAA,CAAI,WAAA,EAAa,eAAA,CAAgB,IAAI,CAAC,CAAA;AAAA,EACxD;AAEA,EAAA,KAAA,MAAW,WAAW,eAAA,EAAiB;AACrC,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,OAAA;AAAA,MACA,WAAA,EAAa,yBAAA,CAA0B,OAAO,CAAA,IAAK,cAAc,OAAO,CAAA,CAAA;AAAA,MACxE,eAAA,EAAiB;AAAA,KACnB;AACA,IAAA,IAAI,qBAAqB,GAAA,CAAI,OAAO,CAAA,EAAG,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,SAAA,IAC3C,qBAAqB,GAAA,CAAI,OAAO,CAAA,EAAG,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,SACzD,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,EAC3B;AAEA,EAAA,KAAA,MAAW,CAAA,IAAK,eAAe,eAAA,EAAiB;AAC9C,IAAA,IAAI,qBAAqB,GAAA,CAAI,CAAA,CAAE,OAAO,CAAA,EAAG,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,SAC9C,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,EACxB;AAEA,EAAA,OAAO,EAAE,WAAA,EAAa,GAAA,EAAK,UAAA,EAAY,aAAa,QAAA,EAAS;AAC/D;AAEA,IAAM,yBAAA,GAAoD;AAAA,EACxD,OAAA,EAAS,iCAAA;AAAA,EACT,OAAA,EAAS,6DAAA;AAAA,EACT,QAAA,EAAU,iEAAA;AAAA,EACV,QAAA,EAAU,0BAAA;AAAA,EACV,QAAA,EAAU,qCAAA;AAAA,EACV,QAAA,EAAU,iEAAA;AAAA,EACV,QAAA,EAAU,iDAAA;AAAA,EACV,QAAA,EAAU,sCAAA;AAAA,EACV,QAAA,EAAU,uFAAA;AAAA,EACV,QAAA,EAAU,kEAAA;AAAA,EACV,QAAA,EAAU,yDAAA;AAAA,EACV,QAAA,EAAU,sDAAA;AAAA,EACV,QAAA,EAAU,gCAAA;AAAA,EACV,QAAA,EAAU,4CAAA;AAAA,EACV,QAAA,EAAU;AACZ,CAAA;AAEA,SAAS,0BAAA,CACP,OACA,IAAA,EACU;AACV,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,IAAA,EAAM;AACpC,IAAA,GAAA,CAAI,KAAK,4DAA4D,CAAA;AAAA,EACvE;AACA,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,GAAA,CAAI,KAAK,oEAAoE,CAAA;AAC7E,IAAA,GAAA,CAAI,KAAK,6DAA6D,CAAA;AAAA,EACxE;AACA,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,GAAA,CAAI,KAAK,2EAA2E,CAAA;AACpF,IAAA,GAAA,CAAI,KAAK,iEAAiE,CAAA;AAC1E,IAAA,GAAA,CAAI,KAAK,6DAA6D,CAAA;AAAA,EACxE;AACA,EAAA,IAAI,SAAS,UAAA,EAAY;AACvB,IAAA,GAAA,CAAI,KAAK,6EAA6E,CAAA;AAAA,EACxF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,aAAA,CACP,KAAA,EACA,IAAA,EACA,eAAA,EACiC;AACjC,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAoB;AAEvC,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,IAAA,EAAM;AACpC,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,2CAA2C,CAAA;AAChE,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,wCAAwC,CAAA;AAC7D,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,8CAA8C,CAAA;AAAA,EACrE;AACA,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,+CAA+C,CAAA;AACpE,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,0CAA0C,CAAA;AAAA,EACjE;AAEA,EAAA,IAAI,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,UAAA,EAAY;AAC1C,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,mDAAmD,CAAA;AACxE,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,sDAAsD,CAAA;AAC3E,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,gDAAgD,CAAA;AAAA,EACvE;AAEA,EAAA,KAAA,MAAW,OAAO,eAAA,EAAiB;AACjC,IAAA,KAAA,MAAW,CAAA,IAAK,IAAI,MAAA,EAAQ;AAC1B,MAAA,IAAI,CAAC,OAAO,GAAA,CAAI,CAAC,GAAG,MAAA,CAAO,GAAA,CAAI,GAAG,sEAAsE,CAAA;AAAA,IAC1G;AAAA,EACF;AACA,EAAA,OAAO,CAAC,GAAG,MAAA,CAAO,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,MAAM,GAAG,CAAA,MAAO,EAAE,IAAA,EAAM,KAAI,CAAE,CAAA;AACnE;AC9WO,IAAM,kBAAA,GAAqBA,EAAE,MAAA,CAAO;AAAA,EACzC,gBAAA,EAAkBA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,IAAI,GAAI,CAAA;AAAA,EAC7C,QAAQA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EACpC,YAAA,EAAcA,CAAAA,CAAE,IAAA,CAAK,CAAC,MAAK,IAAA,EAAK,IAAA,EAAK,IAAA,EAAK,IAAA,EAAK,IAAA,EAAK,IAAA,EAAK,OAAO,CAAC,EAAE,QAAA,EAAS;AAAA,EAC5E,gBAAA,EAAkBA,CAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAQ,cAAa,YAAA,EAAa,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAChF,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAGM,IAAM,sBAAA,GACX,wHAAA;AAEF,eAAsB,iBAAA,CAAkB,UAAuB,QAAA,EAAmB;AAChF,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,KAAA,CAAM,QAAQ,CAAA;AAE/C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAA,EAAkB,QAAA,EAAU,MAAA,EAAQ,MAAM,SAAS,CAAA,GACvE,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,IAChB,QAAA,CAAS,MAAM,qBAAA,EAAsB;AAAA,IACrC,QAAA,CAAS,MAAM,qBAAA,EAAsB;AAAA,IACrC,QAAA,CAAS,MAAM,iBAAA,EAAkB;AAAA,IACjC,QAAA,CAAS,MAAM,eAAA,EAAgB;AAAA,IAC/B,QAAA,CAAS,MAAM,gBAAA,EAAiB;AAAA,IAChC,QAAA,CAAS,MAAM,aAAA;AAAc,GAC9B,CAAA;AAGH,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,gBAAA,CAAiB,WAAA,EAAY;AACjD,EAAA,MAAM,gBAAA,GAAmB,mCAAA,CAAoC,IAAA,CAAK,KAAK,CAAA,GAAI,WAClD,oDAAA,CAAqD,IAAA,CAAK,KAAK,CAAA,GAAI,OAAA,GAAU,WAAA;AACtG,EAAA,MAAM,gBAAA,GAAmB,uDAAA,CAAwD,IAAA,CAAK,KAAK,IAAI,eAAA,GAAkB,WAAA;AACjH,EAAA,MAAM,WAAA,GACJ,yDAAA,CAA0D,IAAA,CAAK,KAAK,CAAA,GAAI,sBACxE,oDAAA,CAAqD,IAAA,CAAK,KAAK,CAAA,GAAI,UAAA,GAAa,MAAA;AAClF,EAAA,MAAM,iBAAA,GACJ,gDAAA,CAAiD,IAAA,CAAK,KAAK,IAAI,gBAAA,GAC/D,0BAAA,CAA2B,IAAA,CAAK,KAAK,IAAI,iBAAA,GACzC,oCAAA,CAAqC,IAAA,CAAK,KAAK,IAAI,eAAA,GAAkB,MAAA;AAEvE,EAAA,MAAM,QAAA,GAAW,cAAc,aAAA,EAAe;AAAA,IAC5C,uBAAA,EAAyB,gBAAA;AAAA,IACzB,gBAAA,EAAkB;AAAA,GACnB,CAAA;AACD,EAAA,MAAM,WAAA,GAAc,iBAAiB,gBAAA,EAAkB;AAAA,IACrD,mBAAA,EAAqB,WAAA;AAAA,IACrB,kBAAA,EAAoB;AAAA,GACrB,CAAA;AACD,EAAA,MAAM,cAAA,GAAiB,qBAAA;AAAA,IACrB,EAAE,QAAA,EAAU,MAAA,EAAQ,IAAA,EAAK;AAAA,IACzB,EAAE,MAAM,KAAA,CAAM,gBAAA,EAAkB,OAAO,EAAC,EAAG,KAAA,EAAO,EAAC;AAAE,GACvD;AAEA,EAAA,MAAM,UAAA,GAAa,2BAA2B,QAAA,CAAS,KAAA,EAAO,YAAY,KAAA,EAAO,cAAA,CAAe,eAAA,CAAgB,MAAA,GAAS,CAAC,CAAA;AAC1H,EAAA,MAAM,UAAA,GAAa,yBAAA,CAA0B,QAAA,CAAS,KAAA,EAAO,YAAY,KAAK,CAAA;AAC9E,EAAA,MAAM,SAAS,qBAAA,CAAsB,QAAA,CAAS,OAAO,WAAA,CAAY,KAAA,EAAO,eAAe,eAAe,CAAA;AACtG,EAAA,MAAM,QAAA,GAAW,0BAA0B,cAAc,CAAA;AAEzD,EAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,QAAA,CAAS,KAAA,EAAO,YAAY,KAAK,CAAA;AACzE,EAAA,MAAM,QAAQ,sBAAA,CAAuB,QAAA,CAAS,KAAA,EAAO,WAAA,CAAY,OAAO,cAAc,CAAA;AAEtF,EAAA,MAAM,aAAa,mBAAA,CAAoB;AAAA,IACrC,kBAAA,EAAoB,QAAA;AAAA,IACpB,YAAA,EAAc,KAAA;AAAA,IACd,qBAAA,EAAA,CAAwB,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,CAAA,KAAM,KAAA,CAAM,YAAA,GAAe,CAAA,GAAI,CAAA,CAAA,IAAM,KAAA,CAAM,gBAAA,GAAmB,CAAA,GAAI,CAAA,CAAA;AAAA,IAC7G,cAAA,EAAgB;AAAA,GACjB,CAAA;AAED,EAAA,MAAM,cAAwB,EAAC;AAC/B,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,IAAI,CAAC,MAAM,MAAA,EAAQ;AACjB,IAAA,WAAA,CAAY,KAAK,wDAAwD,CAAA;AACzE,IAAA,IAAA,CAAK,KAAK,uDAAuD,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,CAAC,MAAM,YAAA,EAAc;AACvB,IAAA,WAAA,CAAY,KAAK,kDAAkD,CAAA;AACnE,IAAA,IAAA,CAAK,KAAK,6DAA6D,CAAA;AAAA,EACzE;AACA,EAAA,WAAA,CAAY,KAAK,wKAAwK,CAAA;AACzL,EAAA,IAAA,CAAK,KAAK,0FAA0F,CAAA;AAEpG,EAAA,MAAM,SAAS,mBAAA,CAAoB;AAAA,IACjC,gBAAA,EAAkB,SAAS,IAAA,CAAK,iBAAA;AAAA,IAChC,cAAc,SAAA,CAAU,aAAA;AAAA,IACxB,WAAA,EAAa,SAAS,IAAA,CAAK,YAAA;AAAA,IAC3B,UAAA,EAAY,SAAS,IAAA,CAAK;AAAA,GAC3B,CAAA;AAED,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,GAAG,cAAA,CAAe,kBAAA;AAAA,IAClB;AAAA,MACE,SAAS,QAAA,CAAS,OAAA;AAAA,MAClB,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,CAAA,wBAAA,EAA2B,gBAAgB,CAAA,WAAA,EAAc,gBAAgB,CAAA,iBAAA;AAAA,KACrF;AAAA,IACA;AAAA,MACE,SAAS,WAAA,CAAY,OAAA;AAAA,MACrB,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,CAAA,aAAA,EAAgB,WAAW,CAAA,YAAA,EAAe,iBAAiB,CAAA,iBAAA;AAAA;AACvE,GACF;AAEA,EAAA,OAAO;AAAA,IACL,gBAAgB,EAAE,KAAA,EAAO,SAAS,KAAA,EAAO,SAAA,EAAW,SAAS,SAAA,EAAU;AAAA,IACvE,UAAA,EAAY;AAAA,MACV,KAAA,EAAO,WAAA,CAAY,KAAA,KAAU,UAAA,GAAa,cAAA,GAAiB,WAAA,CAAY,KAAA,KAAU,MAAA,GAAS,MAAA,GAAS,WAAA,CAAY,KAAA,KAAU,QAAA,GAAW,QAAA,GAAW,KAAA;AAAA,MAC/I,WAAW,WAAA,CAAY;AAAA,KACzB;AAAA,IACA,oBAAA,EAAsB,UAAA;AAAA,IACtB,mBAAA,EAAqB,UAAA;AAAA,IACrB,eAAA,EAAiB,MAAA;AAAA,IACjB,mBAAA,EAAqB,QAAA;AAAA,IACrB,aAAA,EAAe,YAAA;AAAA,IACf,iBAAA,EAAmB,KAAA;AAAA,IACnB,UAAA;AAAA,IACA,WAAA;AAAA,IACA,gBAAA,EAAkB,IAAA;AAAA,IAClB,qBAAA,EAAuB,IAAA;AAAA,IACvB,kBAAA,EAAoB,SAAA;AAAA,IACpB,GAAG,MAAA;AAAA,IACH,cAAA,EAAgB,sBAAA;AAAA,IAChB,UAAA,EAAY;AAAA,GACd;AACF;AAEA,SAAS,0BAAA,CAA2B,KAAA,EAAe,IAAA,EAAc,QAAA,EAAmB;AAClF,EAAA,MAAM,GAAA,GAAuC;AAAA,IAC3C,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,mFAAA;AAAoF,GACzG;AACA,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,IAAA,EAAM;AACpC,IAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,0EAA0E,CAAA;AAAA,EACxG;AACA,EAAA,IAAI,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,UAAA,EAAY;AAC1C,IAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,sEAAsE,CAAA;AAClG,IAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,qDAAqD,CAAA;AAAA,EACnF;AACA,EAAA,IAAI,QAAA,MAAc,IAAA,CAAK,EAAE,MAAM,IAAA,EAAM,GAAA,EAAK,0DAA0D,CAAA;AACpG,EAAA,OAAO,MAAM,GAAG,CAAA;AAClB;AAEA,SAAS,yBAAA,CAA0B,OAAe,IAAA,EAAc;AAC9D,EAAA,MAAM,MAAuC,EAAC;AAC9C,EAAA,IAAI,KAAA,KAAU,MAAM,GAAA,CAAI,IAAA,CAAK,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,iEAAA,EAAmE,CAAA;AACnH,EAAA,IAAI,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,UAAA,EAAY;AAC1C,IAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,4DAA4D,CAAA;AACxF,IAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,qEAAqE,CAAA;AAAA,EACnG;AACA,EAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,sEAAsE,CAAA;AAClG,EAAA,OAAO,MAAM,GAAG,CAAA;AAClB;AAEA,SAAS,qBAAA,CAAsB,KAAA,EAAe,IAAA,EAAc,eAAA,EAAyC;AACnG,EAAA,MAAM,MAAA,uBAAa,GAAA,EAA4C;AAC/D,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,MAAA,CAAO,IAAI,QAAA,EAAU,EAAE,OAAO,KAAA,EAAA,EAAS,GAAA,EAAK,uCAAuC,CAAA;AACnF,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,IAAA,EAAM;AACpC,IAAA,MAAA,CAAO,IAAI,QAAA,EAAU,EAAE,OAAO,KAAA,EAAA,EAAS,GAAA,EAAK,uCAAuC,CAAA;AACnF,IAAA,MAAA,CAAO,IAAI,QAAA,EAAU,EAAE,OAAO,KAAA,EAAA,EAAS,GAAA,EAAK,2CAA2C,CAAA;AAAA,EACzF;AACA,EAAA,IAAI,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,UAAA,EAAY;AAC1C,IAAA,MAAA,CAAO,IAAI,QAAA,EAAU,EAAE,OAAO,KAAA,EAAA,EAAS,GAAA,EAAK,0CAA0C,CAAA;AACtF,IAAA,MAAA,CAAO,IAAI,QAAA,EAAU,EAAE,OAAO,KAAA,EAAA,EAAS,GAAA,EAAK,iCAAiC,CAAA;AAC7E,IAAA,MAAA,CAAO,IAAI,QAAA,EAAU,EAAE,OAAO,KAAA,EAAA,EAAS,GAAA,EAAK,iCAAiC,CAAA;AAAA,EAC/E;AACA,EAAA,KAAA,MAAW,OAAO,eAAA,EAAiB;AACjC,IAAA,KAAA,MAAW,CAAA,IAAK,IAAI,MAAA,EAAQ;AAC1B,MAAA,IAAI,CAAC,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,CAAA,EAAG,EAAE,KAAA,EAAO,KAAA,EAAA,EAAS,GAAA,EAAK,6CAA6C,CAAA;AAAA,IACxG;AAAA,EACF;AACA,EAAA,OAAO,CAAC,GAAG,MAAA,CAAO,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,CAAC,CAAA,MAAO,EAAE,MAAM,KAAA,EAAO,CAAA,CAAE,OAAO,GAAA,EAAK,CAAA,CAAE,KAAI,CAAE,CAAA;AACxF;AAEA,SAAS,0BAA0B,WAAA,EAAuD;AACxF,EAAA,MAAM,MAAiG,EAAC;AACxG,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,KAAA,MAAW,GAAA,IAAO,YAAY,eAAA,EAAiB;AAC7C,IAAA,KAAA,MAAW,OAAA,IAAW,IAAI,WAAA,EAAa;AACrC,MAAA,MAAM,GAAA,GAAM,UAAU,OAAO,CAAA,CAAA;AAC7B,MAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG;AAClB,QAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,QAAA,GAAA,CAAI,IAAA,CAAK,EAAE,UAAA,EAAY,QAAA,EAAU,OAAA,EAAS,KAAK,CAAA,sBAAA,EAAyB,GAAA,CAAI,KAAK,CAAA,CAAA,CAAA,EAAK,CAAA;AAAA,MACxF;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,MAAW,CAAA,IAAK,YAAY,eAAA,EAAiB;AAC3C,IAAA,MAAM,GAAA,GAAM,CAAA,OAAA,EAAU,CAAA,CAAE,OAAO,CAAA,CAAA;AAC/B,IAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG;AAClB,MAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,MAAA,GAAA,CAAI,IAAA,CAAK,EAAE,UAAA,EAAY,QAAA,EAAU,SAAS,CAAA,CAAE,OAAA,EAAS,GAAA,EAAK,kBAAA,EAAoB,CAAA;AAAA,IAChF;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,kBAAA,CAAmB,OAAe,IAAA,EAAwB;AACjE,EAAA,MAAM,GAAA,GAAgB;AAAA,IACpB,sEAAA;AAAA,IACA,oGAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,IAAA,EAAM;AACpC,IAAA,GAAA,CAAI,KAAK,0DAA0D,CAAA;AAAA,EACrE;AACA,EAAA,IAAI,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,UAAA,EAAY;AAC1C,IAAA,GAAA,CAAI,KAAK,4DAA4D,CAAA;AAAA,EACvE;AACA,EAAA,OAAO,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACvB;AAEA,SAAS,sBAAA,CAAuB,KAAA,EAAe,IAAA,EAAc,WAAA,EAAiE;AAC5H,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,GAAA,CAAI,IAAA,CAAK,0DAA0D,CAAA;AACvF,EAAA,IAAI,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,UAAA,EAAY;AAC1C,IAAA,GAAA,CAAI,KAAK,+DAA+D,CAAA;AACxE,IAAA,GAAA,CAAI,KAAK,iEAAiE,CAAA;AAAA,EAC5E;AACA,EAAA,IAAI,WAAA,CAAY,eAAA,CAAgB,MAAA,GAAS,CAAA,EAAG;AAC1C,IAAA,GAAA,CAAI,KAAK,wGAAwG,CAAA;AAAA,EACnH;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,MAAkC,GAAA,EAAe;AACxD,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAAW,EAAC;AAClB,EAAA,KAAA,MAAW,KAAK,GAAA,EAAK;AACnB,IAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,IAAI,CAAA,EAAG;AACrB,MAAA,IAAA,CAAK,GAAA,CAAI,EAAE,IAAI,CAAA;AACf,MAAA,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,IACZ;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AC3OO,IAAM,yBAAA,GAA4BA,EAAE,MAAA,CAAO;AAAA,EAChD,iBAAA,EAAmBA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,IAAI,IAAI,CAAA;AAAA,EAC9C,gBAAA,EAAkBA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA;AAAA,EACnD,eAAeA,CAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,EAC5D,kBAAA,EAAoBA,EAAE,IAAA,CAAK,CAAC,QAAQ,UAAA,EAAY,YAAA,EAAc,UAAU,CAAC,CAAA;AAAA,EACzE,kBAAA,EAAoBA,EAAE,IAAA,CAAK,CAAC,OAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC/D,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAGD,eAAsB,wBAAA,CACpB,UACA,QAAA,EACA;AACA,EAAA,MAAM,KAAA,GAAQ,yBAAA,CAA0B,KAAA,CAAM,QAAQ,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,KAAA,CAAM,aAAA,EAAc;AAGrD,EAAA,IAAI,KAAA,GAAmC,IAAA;AACvC,EAAA,IAAI,SAAA,GAAY,6DAAA;AAEhB,EAAA,IAAI,KAAA,CAAM,kBAAA,KAAuB,YAAA,IAAgB,KAAA,CAAM,uBAAuB,UAAA,EAAY;AACxF,IAAA,KAAA,GAAQ,IAAA;AACR,IAAA,SAAA,GACE,uIAAA;AAAA,EACJ;AAEA,EAAA,IAAI,KAAA,CAAM,kBAAkB,cAAA,KAAmB,KAAA,CAAM,uBAAuB,YAAA,IAAgB,KAAA,CAAM,uBAAuB,UAAA,CAAA,EAAa;AACpI,IAAA,KAAA,GAAQ,IAAA;AACR,IAAA,SAAA,GACE,mJAAA;AAAA,EACJ;AAEA,EAAA,IAAI,KAAA,CAAM,kBAAA,KAAuB,UAAA,IAAc,KAAA,CAAM,kBAAkB,OAAA,EAAS;AAC9E,IAAA,IAAI,KAAA,CAAM,iBAAiB,KAAA,CAAM,CAAC,MAAM,iCAAA,CAAkC,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG;AAClF,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,SAAA,GAAY,sGAAA;AAAA,IACd;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,aAAA,KAAkB,WAAA,IAAe,KAAA,CAAM,uBAAuB,UAAA,EAAY;AAClF,IAAA,KAAA,GAAQ,IAAA;AACR,IAAA,SAAA,GAAY,oGAAA;AAAA,EACd;AAEA,EAAA,IAAI,KAAA,CAAM,kBAAkB,cAAA,IAAkB,KAAA,CAAM,uBAAuB,MAAA,IAAU,KAAA,CAAM,uBAAuB,MAAA,EAAQ;AACxH,IAAA,KAAA,GAAQ,IAAA;AACR,IAAA,SAAA,GAAY,2GAAA;AAAA,EACd;AAEA,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,EAAE,SAAA,EAAW,kCAAA,EAAoC,QAAQ,KAAA,KAAU,IAAA,GAAO,SAAS,aAAA,EAAuB;AAAA,IAC1G,EAAE,SAAA,EAAW,mCAAA,EAAqC,QAAQ,KAAA,KAAU,IAAA,GAAO,SAAS,MAAA,EAAgB;AAAA,IACpG,EAAE,SAAA,EAAW,kCAAA,EAAoC,QAAQ,KAAA,KAAU,IAAA,GAAO,SAAS,aAAA,EAAuB;AAAA,IAC1G,EAAE,SAAA,EAAW,8CAAA,EAAgD,QAAQ,KAAA,KAAU,IAAA,GAAO,SAAS,MAAA,EAAgB;AAAA,IAC/G,EAAE,SAAA,EAAW,6CAAA,EAA+C,MAAA,EAAQ,aAAA;AAAuB,GAC7F;AAEA,EAAA,MAAM,iBAAA,GAAoB;AAAA,IACxB,EAAE,SAAA,EAAW,oCAAA,EAAsC,UAAA,EAAY,mCAAA,EAAoC;AAAA,IACnG,EAAE,SAAA,EAAW,uCAAA,EAAyC,UAAA,EAAY,uCAAA,EAAwC;AAAA,IAC1G,EAAE,SAAA,EAAW,gCAAA,EAAkC,UAAA,EAAY,sCAAA;AAAuC,GACpG;AACA,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,iBAAA,CAAkB,IAAA,CAAK;AAAA,MACrB,SAAA,EAAW,6BAAA;AAAA,MACX,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,kBAAA,GAAqB;AAAA,IACzB,MAAA,EAAQ,CAAC,kBAAA,EAAoB,wBAAA,EAAqB,oBAAe,CAAA;AAAA,IACjE,eAAA,EAAiB,CAAC,CAAA,EAAG,GAAA,EAAK,IAAI;AAAA,GAChC;AAEA,EAAA,MAAM,iBAAA,GAAoB,KAAA,KAAU,IAAA,GAAO,CAAC,QAAA,EAAU,QAAQ,CAAA,GAC5D,KAAA,KAAU,IAAA,GAAO,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,IAC9C,KAAA,KAAU,IAAA,GAAO,CAAC,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA,GACxD,CAAC,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA;AAEzC,EAAA,MAAM,SAAS,mBAAA,CAAoB;AAAA,IACjC,gBAAA,EAAkB,SAAS,IAAA,CAAK,iBAAA;AAAA,IAChC,cAAc,SAAA,CAAU,aAAA;AAAA,IACxB,WAAA,EAAa,SAAS,IAAA,CAAK,YAAA;AAAA,IAC3B,UAAA,EAAY,SAAS,IAAA,CAAK;AAAA,GAC3B,CAAA;AAED,EAAA,OAAO;AAAA,IACL,iBAAA,EAAmB,EAAE,KAAA,EAAO,SAAA,EAAU;AAAA,IACtC,iBAAA,EAAmB,QAAA;AAAA,IACnB,iBAAA;AAAA,IACA,kBAAA;AAAA,IACA,iBAAA;AAAA,IACA,YAAY,mBAAA,CAAoB;AAAA,MAC9B,kBAAA,EAAoB,QAAA;AAAA,MACpB,YAAA,EAAc,IAAA;AAAA,MACd,qBAAA,EAAuB,KAAA,CAAM,kBAAA,GAAqB,CAAA,GAAI,CAAA;AAAA,MACtD,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,IACD,WAAA,EAAa,CAAC,6FAA6F,CAAA;AAAA,IAC3G,gBAAA,EAAkB;AAAA,MAChB,mFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,qBAAA,EAAuB,IAAA;AAAA,IACvB,kBAAA,EAAoB;AAAA,MAClB;AAAA,QACE,OAAA,EAAS,+BAAA;AAAA,QACT,cAAc,SAAA,CAAU,aAAA;AAAA,QACxB,KAAA,EAAO,IAAA;AAAA,QACP,QAAA,EAAU,CAAA,cAAA,EAAiB,KAAA,CAAM,aAAa,CAAA,QAAA,EAAW,MAAM,kBAAkB,CAAA,WAAA,EAAc,KAAA,CAAM,kBAAA,IAAsB,KAAK,CAAA;AAAA;AAClI,KACF;AAAA,IACA,GAAG,MAAA;AAAA,IACH,UAAA,EAAY;AAAA,GACd;AACF;ACpHO,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EAC9C,iBAAA,EAAmBA,EAAE,MAAA,CAAO;AAAA,IAC1B,kBAAkBA,CAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,IACxC,eAAA,EAAiBA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,IAClD,SAAA,EAAWA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,IAChC,eAAA,EAAiBA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAAS,GACvC,CAAA;AAAA,EACD,mBAAmBA,CAAAA,CAAE,KAAA;AAAA,IACnBA,EAAE,MAAA,CAAO;AAAA,MACP,OAAA,EAASA,EAAE,MAAA,EAAO;AAAA,MAClB,MAAA,EAAQA,EAAE,OAAA,EAAQ;AAAA,MAClB,UAAA,EAAYA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAAS,KAClC;AAAA,GACH;AAAA,EACA,QAAQA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EACpC,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAGD,IAAM,yBAAA,GAAsD;AAAA,EAC1D,EAAA,EAAI,CAAC,cAAA,EAAgB,mBAAmB,CAAA;AAAA,EACxC,EAAA,EAAI,CAAC,cAAA,EAAgB,oBAAoB,CAAA;AAAA,EACzC,EAAA,EAAI,CAAC,mBAAA,EAAqB,eAAe,CAAA;AAAA,EACzC,EAAA,EAAI,CAAC,gBAAA,EAAkB,MAAM,CAAA;AAAA,EAC7B,EAAA,EAAI,CAAC,MAAA,EAAQ,qBAAA,EAAuB,sBAAsB,CAAA;AAAA,EAC1D,EAAA,EAAI,CAAC,cAAA,EAAgB,iBAAiB;AACxC,CAAA;AAEA,eAAsB,sBAAA,CACpB,UACA,QAAA,EACA;AACA,EAAA,MAAM,KAAA,GAAQ,uBAAA,CAAwB,KAAA,CAAM,QAAQ,CAAA;AACpD,EAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,KAAA,CAAM,aAAA,EAAc;AACrD,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAuD;AAC9E,EAAA,KAAA,MAAW,KAAK,KAAA,CAAM,iBAAA,aAA8B,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAA;AAEpE,EAAA,MAAM,OAA+B,EAAC;AACtC,EAAA,MAAM,OAIA,EAAC;AAEP,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,yBAAyB,CAAA,EAAG;AACvE,IAAA,IAAI,KAAA,GAAQ,GAAA;AACZ,IAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AACjC,MAAA,IAAI,KAAA,IAAS,CAAC,KAAA,CAAM,MAAA,EAAQ;AAE1B,QAAA,KAAA,IAAS,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,QAAA,CAAS,MAAM,CAAA;AACzC,QAAA,MAAM,QAAA,GACJ,QAAQ,IAAA,GAAO,UAAA,GACf,QAAQ,IAAA,IAAQ,GAAA,KAAQ,OAAO,MAAA,GAC/B,QAAA;AACF,QAAA,IAAA,CAAK,IAAA,CAAK;AAAA,UACR,SAAA,EAAW,GAAA;AAAA,UACX,QAAA;AAAA,UACA,WAAA,EAAa,CAAA,SAAA,EAAY,IAAI,CAAA,iBAAA,EAAoB,GAAG,CAAA,CAAA,CAAA;AAAA,UACpD,WAAA,EAAa,iBAAiB,IAAI,CAAA;AAAA,UAClC,MAAA,EAAQ,SAAS,IAAI,CAAA;AAAA,UACrB,qBAAA,EAAuB,UAAU,IAAI;AAAA,SACtC,CAAA;AAAA,MACH,CAAA,MAAA,IAAW,CAAC,KAAA,EAAO;AAEjB,QAAA,KAAA,IAAS,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,QAAA,CAAS,MAAM,CAAA;AAAA,MAC1C,CAAA,MAAA,IAAW,KAAA,CAAM,UAAA,KAAe,KAAA,EAAO;AACrC,QAAA,KAAA,IAAS,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,QAAA,CAAS,MAAM,CAAA;AACxC,QAAA,IAAA,CAAK,IAAA,CAAK;AAAA,UACR,SAAA,EAAW,GAAA;AAAA,UACX,QAAA,EAAU,QAAA;AAAA,UACV,WAAA,EAAa,YAAY,IAAI,CAAA,6BAAA,CAAA;AAAA,UAC7B,WAAA,EAAa,aAAa,IAAI,CAAA,iCAAA,CAAA;AAAA,UAC9B,MAAA,EAAQ,SAAS,IAAI,CAAA;AAAA,UACrB,qBAAA,EAAuB;AAAA,SACxB,CAAA;AAAA,MACH;AAAA,IACF;AACA,IAAA,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,KAAK,CAAA;AAAA,EAC/B;AAGA,EAAA,IAAI,KAAA,CAAM,kBAAkB,eAAA,EAAiB;AAC3C,IAAA,IAAA,CAAK,IAAA,CAAK;AAAA,MACR,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU,MAAA;AAAA,MACV,WAAA,EAAa,uCAAA;AAAA,MACb,WAAA,EAAa,+EAAA;AAAA,MACb,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,MACjB,qBAAA,EAAuB;AAAA,KACxB,CAAA;AAAA,EACH;AACA,EAAA,IACE,KAAA,CAAM,iBAAA,CAAkB,eAAA,KAAoB,MAAA,IAC5C,KAAA,CAAM,iBAAA,CAAkB,eAAA,GAAkB,CAAA,IAC1C,CAAC,UAAA,CAAW,GAAA,CAAI,MAAM,GAAG,MAAA,EACzB;AACA,IAAA,IAAA,CAAK,IAAA,CAAK;AAAA,MACR,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU,UAAA;AAAA,MACV,WAAA,EAAa,gDAAA;AAAA,MACb,WAAA,EAAa,8DAAA;AAAA,MACb,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,MACjB,qBAAA,EAAuB;AAAA,KACxB,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,UAAU,IAAA,CAAK,KAAA;AAAA,IACnB,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA,CAAE,OAAO,CAAC,GAAA,EAAK,CAAA,KAAM,GAAA,GAAM,GAAG,CAAC,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE;AAAA,GACzE;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,UAAA,EAAY,MAAA,EAAQ,UAAU,KAAK,CAAA;AAClD,EAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAI,CAAA,CACtB,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,KAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,QAAQ,CAAA,GAAI,KAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,QAAQ,CAAC,CAAA,CACpE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,SAAS,CAAA,EAAA,EAAK,CAAA,CAAE,WAAW,CAAA,CAAE,CAAA;AAEhD,EAAA,MAAM,SAAA,GAAY,IAAA,CACf,MAAA,CAAO,CAAC,OAAO,CAAA,CAAE,qBAAA,IAAyB,CAAA,KAAM,CAAC,CAAA,CACjD,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,WAAW,CAAA;AAE3B,EAAA,MAAM,SAAS,mBAAA,CAAoB;AAAA,IACjC,gBAAA,EAAkB,SAAS,IAAA,CAAK,iBAAA;AAAA,IAChC,cAAc,SAAA,CAAU,aAAA;AAAA,IACxB,WAAA,EAAa,SAAS,IAAA,CAAK,YAAA;AAAA,IAC3B,UAAA,EAAY,SAAS,IAAA,CAAK;AAAA,GAC3B,CAAA;AAED,EAAA,OAAO;AAAA,IACL,cAAA,EAAgB,EAAE,OAAA,EAAS,YAAA,EAAc,IAAA,EAAK;AAAA,IAC9C,IAAA;AAAA,IACA,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,SAAA;AAAA,IACZ,YAAY,mBAAA,CAAoB;AAAA,MAC9B,kBAAA,EAAoB,QAAA;AAAA,MACpB,YAAA,EAAc,KAAA;AAAA,MACd,qBAAA,EAAuB,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,CAAA;AAAA,MAC1C,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,IACD,WAAA,EAAa,CAAC,gGAAgG,CAAA;AAAA,IAC9G,gBAAA,EAAkB;AAAA,MAChB,4EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,qBAAA,EAAuB,IAAA;AAAA,IACvB,kBAAA,EAAoB;AAAA,MAClB;AAAA,QACE,OAAA,EAAS,mCAAA;AAAA,QACT,cAAc,SAAA,CAAU,aAAA;AAAA,QACxB,KAAA,EAAO,IAAA;AAAA,QACP,QAAA,EAAU,CAAA,EAAG,KAAA,CAAM,iBAAA,CAAkB,MAAM,CAAA,oBAAA;AAAA;AAC7C,KACF;AAAA,IACA,GAAG,MAAA;AAAA,IACH,UAAA,EAAY;AAAA,GACd;AACF;AAEA,SAAS,iBAAiB,CAAA,EAAmB;AAC3C,EAAA,MAAM,GAAA,GAA8B;AAAA,IAClC,YAAA,EAAc,gEAAA;AAAA,IACd,iBAAA,EAAmB,iDAAA;AAAA,IACnB,YAAA,EAAc,8DAAA;AAAA,IACd,kBAAA,EAAoB,yEAAA;AAAA,IACpB,iBAAA,EAAmB,+CAAA;AAAA,IACnB,aAAA,EAAe,mDAAA;AAAA,IACf,cAAA,EAAgB,uDAAA;AAAA,IAChB,IAAA,EAAM,6EAAA;AAAA,IACN,IAAA,EAAM,yDAAA;AAAA,IACN,mBAAA,EAAqB,0EAAA;AAAA,IACrB,oBAAA,EAAsB,oEAAA;AAAA,IACtB,YAAA,EAAc,4DAAA;AAAA,IACd,eAAA,EAAiB;AAAA,GACnB;AACA,EAAA,OAAO,GAAA,CAAI,CAAC,CAAA,IAAK,CAAA,uBAAA,EAA0B,CAAC,CAAA,CAAA,CAAA;AAC9C;AAEA,SAAS,SAAS,CAAA,EAAqB;AACrC,EAAA,MAAM,GAAA,GAAgC;AAAA,IACpC,YAAA,EAAc,CAAC,QAAQ,CAAA;AAAA,IACvB,iBAAA,EAAmB,CAAC,QAAQ,CAAA;AAAA,IAC5B,iBAAA,EAAmB,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,IACtC,cAAA,EAAgB,CAAC,QAAQ,CAAA;AAAA,IACzB,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,IACf,mBAAA,EAAqB,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,IACxC,aAAA,EAAe,CAAC,QAAQ;AAAA,GAC1B;AACA,EAAA,OAAO,GAAA,CAAI,CAAC,CAAA,IAAK,EAAC;AACpB;AAEA,SAAS,UAAU,CAAA,EAAmB;AACpC,EAAA,MAAM,GAAA,GAA8B;AAAA,IAClC,YAAA,EAAc,CAAA;AAAA,IACd,iBAAA,EAAmB,CAAA;AAAA,IACnB,iBAAA,EAAmB,CAAA;AAAA,IACnB,IAAA,EAAM,EAAA;AAAA,IACN,YAAA,EAAc,CAAA;AAAA,IACd,aAAA,EAAe;AAAA,GACjB;AACA,EAAA,OAAO,GAAA,CAAI,CAAC,CAAA,IAAK,CAAA;AACnB;ACtMO,IAAM,yBAAA,GAA4BA,EAAE,MAAA,CAAO;AAAA,EAChD,OAAOA,CAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,EAAK,MAAM,CAAC,CAAA;AAAA,EAClC,QAAA,EAAUA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EACpC,sBAAsBA,CAAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,UAAA,EAAY,MAAM,CAAC,CAAA;AAAA,EAC7D,SAAA,EAAWA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAChC,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAGD,IAAM,WAAA,mBAAc,IAAI,GAAA,CAAI,CAAC,OAAA,EAAS,UAAU,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAC,CAAA;AACvF,IAAM,8BAAc,IAAI,GAAA,CAAI,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAC,CAAA;AAE1D,IAAM,cAAA,GAA0L;AAAA,EAC9L,OAAA,EAAS,EAAE,KAAA,EAAO,wBAAA,EAA0B,aAAa,yFAAA,EAA2F,QAAA,EAAU,cAAc,mBAAA,EAAqB,CAAC,0BAA0B,yBAAA,EAA2B,kBAAkB,GAAG,iBAAA,EAAmB,CAAC,iBAAiB,iBAAiB,CAAA,EAAG,0BAA0B,IAAA,EAAK;AAAA,EACpW,QAAA,EAAU,EAAE,KAAA,EAAO,0BAAA,EAA4B,aAAa,0EAAA,EAA4E,QAAA,EAAU,cAAc,mBAAA,EAAqB,CAAC,yBAAyB,qBAAA,EAAuB,gCAAgC,GAAG,iBAAA,EAAmB,CAAC,kBAAkB,wBAAwB,CAAA,EAAG,0BAA0B,IAAA,EAAK;AAAA,EACzW,UAAU,EAAE,KAAA,EAAO,yBAAA,EAA2B,WAAA,EAAa,kDAAkD,QAAA,EAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,kCAAkC,CAAA,EAAG,iBAAA,EAAmB,CAAC,yBAAyB,CAAA,EAAG,0BAA0B,IAAA,EAAK;AAAA,EAC/Q,UAAU,EAAE,KAAA,EAAO,kBAAkB,WAAA,EAAa,kDAAA,EAAoD,UAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,yBAAA,EAA2B,yBAAyB,CAAA,EAAG,iBAAA,EAAmB,CAAC,MAAM,CAAA,EAAG,0BAA0B,IAAA,EAAK;AAAA,EACvQ,UAAU,EAAE,KAAA,EAAO,6BAA6B,WAAA,EAAa,4EAAA,EAA8E,UAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,4BAAA,EAA8B,kCAAkC,CAAA,EAAG,iBAAA,EAAmB,CAAC,sBAAsB,CAAA,EAAG,0BAA0B,IAAA,EAAK;AAAA,EACxU,UAAU,EAAE,KAAA,EAAO,mBAAmB,WAAA,EAAa,+CAAA,EAAiD,UAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,6BAAA,EAA+B,yCAAyC,GAAG,iBAAA,EAAmB,CAAC,sBAAsB,eAAe,CAAA,EAAG,0BAA0B,IAAA,EAAK;AAAA,EACxT,QAAA,EAAU,EAAE,KAAA,EAAO,qCAAA,EAAuC,aAAa,6EAAA,EAA+E,QAAA,EAAU,cAAc,mBAAA,EAAqB,CAAC,wBAAwB,sBAAA,EAAwB,+BAA+B,GAAG,iBAAA,EAAmB,CAAC,kBAAkB,kBAAkB,CAAA,EAAG,0BAA0B,KAAA,EAAM;AAAA,EACjX,UAAU,EAAE,KAAA,EAAO,wBAAwB,WAAA,EAAa,iEAAA,EAAmE,UAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,2BAAA,EAA6B,0BAA0B,GAAG,iBAAA,EAAmB,CAAC,eAAe,iBAAiB,CAAA,EAAG,0BAA0B,IAAA,EAAK;AAAA,EACzT,UAAU,EAAE,KAAA,EAAO,sCAAA,EAAwC,WAAA,EAAa,2DAA2D,QAAA,EAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,aAAa,CAAA,EAAG,iBAAA,EAAmB,CAAC,MAAM,CAAA,EAAG,0BAA0B,IAAA,EAAK;AAAA,EAC7P,UAAU,EAAE,KAAA,EAAO,uBAAA,EAAyB,WAAA,EAAa,sDAAsD,QAAA,EAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,6CAA6C,CAAA,EAAG,iBAAA,EAAmB,CAAC,YAAY,CAAA,EAAG,0BAA0B,KAAA,EAAM;AAAA,EAChR,UAAU,EAAE,KAAA,EAAO,yBAAA,EAA2B,WAAA,EAAa,qEAAqE,QAAA,EAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,sCAAsC,CAAA,EAAG,iBAAA,EAAmB,CAAC,iBAAiB,CAAA,EAAG,0BAA0B,KAAA,EAAM;AAAA,EAC/R,UAAU,EAAE,KAAA,EAAO,wBAAA,EAA0B,WAAA,EAAa,8CAA8C,QAAA,EAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,oCAAoC,CAAA,EAAG,iBAAA,EAAmB,CAAC,oBAAoB,CAAA,EAAG,0BAA0B,KAAA,EAAM;AAAA,EACxQ,UAAU,EAAE,KAAA,EAAO,4BAAA,EAA8B,WAAA,EAAa,2DAA2D,QAAA,EAAU,aAAA,EAAe,mBAAA,EAAqB,CAAC,qDAAqD,CAAA,EAAG,iBAAA,EAAmB,CAAC,kBAAkB,CAAA,EAAG,0BAA0B,KAAA,EAAM;AAAA,EACzS,UAAU,EAAE,KAAA,EAAO,sBAAA,EAAwB,WAAA,EAAa,0EAA0E,QAAA,EAAU,YAAA,EAAc,mBAAA,EAAqB,CAAC,mCAAmC,CAAA,EAAG,iBAAA,EAAmB,CAAC,uBAAuB,CAAA,EAAG,0BAA0B,IAAA;AAChS,CAAA;AAEA,eAAsB,wBAAA,CACpB,UACA,QAAA,EACA;AACA,EAAA,MAAM,KAAA,GAAQ,yBAAA,CAA0B,KAAA,CAAM,QAAQ,CAAA;AACtD,EAAA,MAAM,CAAC,UAAU,MAAA,EAAQ,IAAA,EAAM,SAAS,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,IAC5D,QAAA,CAAS,MAAM,iBAAA,EAAkB;AAAA,IACjC,QAAA,CAAS,MAAM,eAAA,EAAgB;AAAA,IAC/B,QAAA,CAAS,MAAM,gBAAA,EAAiB;AAAA,IAChC,QAAA,CAAS,MAAM,aAAA;AAAc,GAC9B,CAAA;AAED,EAAA,MAAM,cAAA,GAAiB,qBAAA;AAAA,IACrB,EAAE,QAAA,EAAU,MAAA,EAAQ,IAAA,EAAK;AAAA,IACzB;AAAA,MACE,MAAM,KAAA,CAAM,QAAA;AAAA,MACZ,KAAA,EAAO,MAAM,SAAA,GAAY,EAAE,WAAW,CAAC,MAAM,CAAA,EAAE,GAAI,EAAC;AAAA,MACpD,OAAO;AAAC;AACV,GACF;AAEA,EAAA,MAAM,QAAA,uBAAe,GAAA,EAAY;AACjC,EAAA,KAAA,MAAW,GAAA,IAAO,eAAe,eAAA,EAAiB,KAAA,MAAW,KAAK,GAAA,CAAI,WAAA,EAAa,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AAGjG,EAAA,IAAI,KAAA,CAAM,oBAAA,KAAyB,UAAA,IAAc,KAAA,CAAM,yBAAyB,MAAA,EAAQ;AACtF,IAAA,QAAA,CAAS,IAAI,QAAQ,CAAA;AACrB,IAAA,QAAA,CAAS,IAAI,QAAQ,CAAA;AAAA,EACvB;AAGA,EAAA,QAAA,CAAS,IAAI,QAAQ,CAAA;AAErB,EAAA,MAAM,MAAa,EAAC;AACpB,EAAA,MAAM,aAAoB,EAAC;AAC3B,EAAA,MAAM,WAAkB,EAAC;AAEzB,EAAA,MAAMK,SAAAA,GAAW,CAAC,CAAA,KAAwB;AACxC,IAAA,KAAA,MAAW,GAAA,IAAO,eAAe,eAAA,EAAiB;AAChD,MAAA,IAAI,IAAI,WAAA,CAAY,QAAA,CAAS,CAAC,CAAA,SAAU,GAAA,CAAI,MAAA;AAAA,IAC9C;AACA,IAAA,OAAO,EAAC;AAAA,EACV,CAAA;AAEA,EAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,IAAA,MAAM,MAAA,GAAS,eAAe,CAAC,CAAA;AAC/B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,OAAA,EAAS,CAAA;AAAA,MACT,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,MAAA,EAAQA,UAAS,CAAC,CAAA;AAAA,MAClB,qBAAqB,MAAA,CAAO,mBAAA;AAAA,MAC5B,mBAAmB,MAAA,CAAO,iBAAA;AAAA,MAC1B,0BAA0B,MAAA,CAAO;AAAA,KACnC;AACA,IAAA,IAAI,YAAY,GAAA,CAAI,CAAC,CAAA,EAAG,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,SAAA,IAC5B,YAAY,GAAA,CAAI,CAAC,CAAA,EAAG,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,SAC1C,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,EAC3B;AAEA,EAAA,KAAA,MAAW,CAAA,IAAK,eAAe,eAAA,EAAiB;AAC9C,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,SAAS,CAAA,CAAE,OAAA;AAAA,MACX,KAAA,EAAO,cAAA,CAAe,CAAA,CAAE,OAAO,GAAG,KAAA,IAAS,iBAAA;AAAA,MAC3C,aAAa,CAAA,CAAE,WAAA;AAAA,MACf,UAAU,CAAA,CAAE,eAAA;AAAA,MACZ,QAAQ,EAAC;AAAA,MACT,qBAAqB,cAAA,CAAe,CAAA,CAAE,OAAO,CAAA,EAAG,uBAAuB,EAAC;AAAA,MACxE,mBAAmB,cAAA,CAAe,CAAA,CAAE,OAAO,CAAA,EAAG,qBAAqB,EAAC;AAAA,MACpE,wBAAA,EAA0B;AAAA,KAC5B;AACA,IAAA,IAAI,YAAY,GAAA,CAAI,CAAA,CAAE,OAAO,CAAA,EAAG,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,SACxC,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,EAC3B;AAEA,EAAA,MAAM,WAAA,GAAc,GAAA,CAAI,MAAA,GAAS,UAAA,CAAW,SAAS,QAAA,CAAS,MAAA;AAC9D,EAAA,MAAM,aAAA,GAAgB,IACnB,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,wBAAA,KAA6B,KAAK,CAAA,CAClD,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CACV,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,EAAE,OAAO,CAAA,EAAA,EAAK,CAAA,CAAE,KAAK,CAAA,CAAE,CAAA;AAExC,EAAA,MAAM,SAAS,mBAAA,CAAoB;AAAA,IACjC,gBAAA,EAAkB,SAAS,IAAA,CAAK,iBAAA;AAAA,IAChC,cAAc,SAAA,CAAU,aAAA;AAAA,IACxB,WAAA,EAAa,SAAS,IAAA,CAAK,YAAA;AAAA,IAC3B,UAAA,EAAY,SAAS,IAAA,CAAK;AAAA,GAC3B,CAAA;AAED,EAAA,OAAO;AAAA,IACL,aAAa,EAAE,WAAA,EAAa,GAAA,EAAK,UAAA,EAAY,aAAa,QAAA,EAAS;AAAA,IACnE,WAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAY,mBAAA,CAAoB;AAAA,MAC9B,kBAAA,EAAoB,QAAA;AAAA,MACpB,YAAA,EAAc,KAAA,CAAM,KAAA,KAAU,KAAA,IAAS,MAAM,KAAA,KAAU,GAAA;AAAA,MACvD,qBAAA,EAAuB,KAAA,CAAM,SAAA,KAAc,MAAA,GAAY,CAAA,GAAI,CAAA;AAAA,MAC3D,cAAA,EAAgB,MAAM,KAAA,KAAU,MAAA,IAAU,eAAe,eAAA,CAAgB,MAAA,GAAS,IAAI,CAAA,GAAI;AAAA,KAC3F,CAAA;AAAA,IACD,aAAa,KAAA,CAAM,KAAA,KAAU,SAAS,CAAC,kGAAkG,IAAI,EAAC;AAAA,IAC9I,gBAAA,EAAkB;AAAA,MAChB,kFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,qBAAA,EAAuB,IAAA;AAAA,IACvB,oBAAoB,cAAA,CAAe,kBAAA;AAAA,IACnC,GAAG,MAAA;AAAA,IACH,UAAA,EAAY;AAAA,GACd;AACF;AC3IO,IAAM,yBAAA,GAA4BL,EAAE,MAAA,CAAO;AAAA,EAChD,iBAAA,EAAmBA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EAC7C,SAAA,EAAWA,EAAE,IAAA,CAAK,CAAC,MAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,EAC1C,UAAA,EAAYA,EAAE,IAAA,CAAK,CAAC,OAAO,QAAA,EAAU,MAAA,EAAQ,UAAU,CAAC,CAAA;AAAA,EACxD,iBAAA,EAAmBA,EAAE,IAAA,CAAK,CAAC,WAAW,UAAA,EAAY,eAAe,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC7E,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAGD,IAAM,wBAAA,GAAmD;AAAA,EACvD,QAAA,EAAU,CAAA;AAAA,EAAG,OAAA,EAAS,CAAA;AAAA,EAAG,SAAA,EAAW,CAAA;AAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,EAAG,QAAA,EAAU;AAC9D,CAAA;AAEA,eAAsB,wBAAA,CACpB,UACA,QAAA,EACA;AACA,EAAA,MAAM,KAAA,GAAQ,yBAAA,CAA0B,KAAA,CAAM,QAAQ,CAAA;AACtD,EAAA,MAAM,CAAC,OAAA,EAAS,SAAS,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,IAC7C,QAAA,CAAS,MAAM,uBAAA,EAAwB;AAAA,IACvC,QAAA,CAAS,MAAM,aAAA;AAAc,GAC9B,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,kBAAkB,OAAA,EAAS;AAAA,IAC1C,OAAO,KAAA,CAAM,SAAA;AAAA,IACb,MAAM,KAAA,CAAM;AAAA,GACb,CAAA;AAED,EAAA,IAAI,cAAc,QAAA,CAAS,oBAAA;AAC3B,EAAA,IAAI,MAAM,iBAAA,KAAsB,SAAA,gBAAyB,WAAA,CAAY,KAAA,CAAM,GAAG,CAAC,CAAA;AAC/E,EAAA,IAAI,MAAM,iBAAA,KAAsB,eAAA,gBAA+B,CAAC,GAAG,SAAS,oBAAoB,CAAA;AAEhG,EAAA,MAAM,kBAAkB,WAAA,CAAY,MAAA;AAAA,IAClC,CAAC,GAAA,EAAK,CAAA,KAAM,OAAO,wBAAA,CAAyB,CAAA,CAAE,SAAS,CAAA,IAAK,CAAA,CAAA;AAAA,IAC5D;AAAA,GACF;AAEA,EAAA,MAAM,SAAS,mBAAA,CAAoB;AAAA,IACjC,gBAAA,EAAkB,SAAS,IAAA,CAAK,iBAAA;AAAA,IAChC,cAAc,SAAA,CAAU,aAAA;AAAA,IACxB,WAAA,EAAa,SAAS,IAAA,CAAK,YAAA;AAAA,IAC3B,UAAA,EAAY,SAAS,IAAA,CAAK;AAAA,GAC3B,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,CAAA,8BAAA,EAA8B,KAAA,CAAM,SAAS,CAAA,QAAA,EAAW,KAAA,CAAM,UAAU,CAAA,EAAA,EAAK,WAAA,CAAY,MAAM,CAAA,uBAAA,EAA0B,QAAA,CAAS,cAAc,MAAM,CAAA,yBAAA,CAAA;AAEtK,EAAA,OAAO;AAAA,IACL,oBAAA,EAAsB,WAAA;AAAA,IACtB,eAAe,QAAA,CAAS,aAAA;AAAA,IACxB,WAAA,EAAa,WAAA,CAAY,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,MAAA;AAAA,IACzD,2BAAA,EAA6B,eAAA;AAAA,IAC7B,YAAA,EAAc,OAAA;AAAA,IACd,YAAY,mBAAA,CAAoB;AAAA,MAC9B,kBAAA,EAAoB,QAAA;AAAA,MACpB,YAAA,EAAc,IAAA;AAAA,MACd,qBAAA,EAAuB,KAAA,CAAM,iBAAA,GAAoB,CAAA,GAAI,CAAA;AAAA,MACrD,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,IACD,WAAA,EAAa;AAAA,MACX;AAAA,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,gEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,qBAAA,EAAuB,IAAA;AAAA,IACvB,kBAAA,EAAoB;AAAA,MAClB;AAAA,QACE,SAAS,QAAA,CAAS,OAAA;AAAA,QAClB,cAAc,SAAA,CAAU,aAAA;AAAA,QACxB,KAAA,EAAO,IAAA;AAAA,QACP,UAAU,CAAA,MAAA,EAAS,KAAA,CAAM,SAAS,CAAA,OAAA,EAAU,MAAM,UAAU,CAAA;AAAA;AAC9D,KACF;AAAA,IACA,GAAG,MAAA;AAAA,IACH,UAAA,EAAY;AAAA,GACd;AACF;AC9EO,IAAM,0BAAA,GAA6BA,EAAE,MAAA,CAAO;AAAA,EACjD,YAAA,EAAcA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,IAAI,GAAK,CAAA;AAAA,EAC1C,aAAA,EAAeA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EACzC,oBAAoBA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS;AAAA,EACjD,MAAA,EAAQ,gBAAgB,QAAA;AAC1B,CAAC,CAAA;AAYD,IAAM,MAAA,GAAyB;AAAA,EAC7B;AAAA,IACE,GAAA,EAAK,gBAAA;AAAA,IACL,IAAA,EAAM,wBAAA;AAAA,IACN,MAAA,EAAQ,EAAA;AAAA,IACR,QAAA,EAAU,CAAC,0BAAA,EAA4B,sDAAsD,CAAA;AAAA,IAC7F,WAAA,EAAa,yFAAA;AAAA,IACb,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,GAAA,EAAK,oBAAA;AAAA,IACL,IAAA,EAAM,gCAAA;AAAA,IACN,MAAA,EAAQ,EAAA;AAAA,IACR,QAAA,EAAU,CAAC,6CAAA,EAA+C,4BAA4B,CAAA;AAAA,IACtF,WAAA,EAAa,wEAAA;AAAA,IACb,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,GAAA,EAAK,mBAAA;AAAA,IACL,IAAA,EAAM,oBAAA;AAAA,IACN,MAAA,EAAQ,EAAA;AAAA,IACR,QAAA,EAAU,CAAC,gDAAgD,CAAA;AAAA,IAC3D,WAAA,EAAa,yGAAA;AAAA,IACb,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,GAAA,EAAK,uBAAA;AAAA,IACL,IAAA,EAAM,mBAAA;AAAA,IACN,MAAA,EAAQ,EAAA;AAAA,IACR,QAAA,EAAU,CAAC,mCAAA,EAAqC,oBAAoB,CAAA;AAAA,IACpE,WAAA,EAAa,wDAAA;AAAA,IACb,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,GAAA,EAAK,aAAA;AAAA,IACL,IAAA,EAAM,aAAA;AAAA,IACN,MAAA,EAAQ,EAAA;AAAA,IACR,QAAA,EAAU,CAAC,qDAAqD,CAAA;AAAA,IAChE,WAAA,EAAa,qEAAA;AAAA,IACb,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,GAAA,EAAK,WAAA;AAAA,IACL,IAAA,EAAM,+BAAA;AAAA,IACN,MAAA,EAAQ,EAAA;AAAA,IACR,QAAA,EAAU,CAAC,uDAAuD,CAAA;AAAA,IAClE,WAAA,EAAa,sDAAA;AAAA,IACb,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,GAAA,EAAK,kBAAA;AAAA,IACL,IAAA,EAAM,kBAAA;AAAA,IACN,MAAA,EAAQ,EAAA;AAAA,IACR,QAAA,EAAU,CAAC,kBAAA,EAAoB,uBAAuB,CAAA;AAAA,IACtD,WAAA,EAAa,kEAAA;AAAA,IACb,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,GAAA,EAAK,UAAA;AAAA,IACL,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ,CAAA;AAAA,IACR,QAAA,EAAU,CAAC,6CAA6C,CAAA;AAAA,IACxD,WAAA,EAAa,2FAAA;AAAA,IACb,eAAA,EAAiB;AAAA;AAErB,CAAA;AAEA,eAAsB,yBAAA,CACpB,UACA,QAAA,EACA;AACA,EAAA,MAAM,KAAA,GAAQ,0BAAA,CAA2B,KAAA,CAAM,QAAQ,CAAA;AACvD,EAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,KAAA,CAAM,aAAA,EAAc;AAErD,EAAA,MAAM,YAAsB,EAAC;AAC7B,EAAA,MAAM,OAAkG,EAAC;AACzG,EAAA,MAAM,YAAoF,EAAC;AAC3F,EAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,CAAC,MAAM,CAAA,CAAE,IAAA,CAAK,KAAA,CAAM,YAAY,CAAC,CAAA;AACtE,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,KAAA,IAAS,KAAA,CAAM,MAAA;AACf,MAAA,SAAA,CAAU,IAAA,CAAK,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,UAAA,CAAY,CAAA;AAAA,IAC1C,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,IAAA,CAAK;AAAA,QACR,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,QAAA,EAAU,MAAM,MAAA,IAAU,EAAA,GAAK,SAAS,KAAA,CAAM,MAAA,IAAU,KAAK,QAAA,GAAW,KAAA;AAAA,QACxE,WAAA,EAAa,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,yBAAA;AAAA,OAC3B,CAAA;AACD,MAAA,SAAA,CAAU,IAAA,CAAK;AAAA,QACb,SAAS,KAAA,CAAM,IAAA;AAAA,QACf,gBAAgB,KAAA,CAAM,WAAA;AAAA,QACtB,iBAAiB,KAAA,CAAM;AAAA,OACxB,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,iCAAA,CAAkC,IAAA,CAAK,KAAA,CAAM,YAAY,CAAA;AACzE,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAA,CAAK,IAAA,CAAK;AAAA,MACR,IAAA,EAAM,cAAA;AAAA,MACN,QAAA,EAAU,UAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACd,CAAA;AACD,IAAA,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,EAAE,CAAA;AAAA,EAChC;AAEA,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI,KAAA,IAAS,IAAI,OAAA,GAAU,SAAA;AAAA,OAAA,IAClB,KAAA,IAAS,IAAI,OAAA,GAAU,sBAAA;AAAA,OAC3B,OAAA,GAAU,QAAA;AAEf,EAAA,MAAM,SAAS,mBAAA,CAAoB;AAAA,IACjC,gBAAA,EAAkB,SAAS,IAAA,CAAK,iBAAA;AAAA,IAChC,cAAc,SAAA,CAAU,aAAA;AAAA,IACxB,WAAA,EAAa,SAAS,IAAA,CAAK,YAAA;AAAA,IAC3B,UAAA,EAAY,SAAS,IAAA,CAAK;AAAA,GAC3B,CAAA;AAED,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,WAAW,OAAA,KAAY,SAAA,GACnB,gFAAA,GACA,OAAA,KAAY,yBACV,gHAAA,GACA,2FAAA;AAAA,IACN,SAAA;AAAA,IACA,eAAA,EAAiB,IAAA;AAAA,IACjB,kBAAA,EAAoB,SAAA;AAAA,IACpB,gBAAA,EAAkB,CAAC,QAAA,EAAU,QAAA,EAAU,UAAU,QAAQ,CAAA;AAAA,IACzD,oBAAA,EAAsB,KAAA;AAAA,IACtB,YAAY,mBAAA,CAAoB;AAAA,MAC9B,kBAAA,EAAoB,QAAA;AAAA,MACpB,YAAA,EAAc,KAAA;AAAA,MACd,qBAAA,EAAuB,KAAA,CAAM,kBAAA,GAAqB,CAAA,GAAI,CAAA;AAAA,MACtD,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,IACD,WAAA,EAAa,CAAC,0GAAqG,CAAA;AAAA,IACnH,gBAAA,EAAkB;AAAA,MAChB,8FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,qBAAA,EAAuB,IAAA;AAAA,IACvB,kBAAA,EAAoB,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACrC,OAAA,EAAS,CAAA,iBAAA,EAAoB,CAAA,CAAE,GAAG,CAAA,CAAA;AAAA,MAClC,cAAc,SAAA,CAAU,aAAA;AAAA,MACxB,KAAA,EAAO,CAAA,CAAE,QAAA,CAAS,KAAA,CAAM,CAAC,MAAM,CAAA,CAAE,IAAA,CAAK,KAAA,CAAM,YAAY,CAAC,CAAA;AAAA,MACzD,QAAA,EAAU,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,MAAA;AAAA,KACrB,CAAE,CAAA;AAAA,IACF,GAAG,MAAA;AAAA,IACH,UAAA,EAAY;AAAA,GACd;AACF;;;AClJA,IAAM,QAAA,GAA0B;AAAA,EAC9B;AAAA,IACE,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,YAAY,CAAA;AAAA,IAC3C,WAAA,EAAa,gBAAgB,iBAAiB,CAAA;AAAA,IAC9C,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,kBAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,kBAAkB,CAAA;AAAA,IACjD,WAAA,EAAa,gBAAgB,sBAAsB,CAAA;AAAA,IACnD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,wBAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,wBAAwB,CAAA;AAAA,IACvD,WAAA,EAAa,gBAAgB,4BAA4B,CAAA;AAAA,IACzD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,qBAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,qBAAqB,CAAA;AAAA,IACpD,WAAA,EAAa,gBAAgB,yBAAyB,CAAA;AAAA,IACtD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,UAAU,CAAA;AAAA,IACzC,WAAA,EAAa,gBAAgB,eAAe,CAAA;AAAA,IAC5C,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,oBAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,oBAAoB,CAAA;AAAA,IACnD,WAAA,EAAa,gBAAgB,wBAAwB,CAAA;AAAA,IACrD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,aAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,aAAa,CAAA;AAAA,IAC5C,WAAA,EAAa,gBAAgB,kBAAkB,CAAA;AAAA,IAC/C,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,qBAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,qBAAqB,CAAA;AAAA,IACpD,WAAA,EAAa,gBAAgB,yBAAyB,CAAA;AAAA,IACtD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,8BAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,8BAA8B,CAAA;AAAA,IAC7D,WAAA,EAAa,gBAAgB,uBAAuB,CAAA;AAAA,IACpD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,4BAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,4BAA4B,CAAA;AAAA,IAC3D,WAAA,EAAa,gBAAgB,yBAAyB,CAAA;AAAA,IACtD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,0BAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,0BAA0B,CAAA;AAAA,IACzD,WAAA,EAAa,gBAAgB,yBAAyB,CAAA;AAAA,IACtD,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,4BAAA;AAAA,IACN,WAAA,EAAa,kBAAkB,4BAA4B,CAAA;AAAA,IAC3D,WAAA,EAAa,gBAAgB,0BAA0B,CAAA;AAAA,IACvD,MAAA,EAAQ;AAAA;AAEZ,CAAA;AAEA,eAAsB,aAAA,CACpB,QACA,QAAA,EACe;AACf,EAAA,MAAA,CAAO,iBAAA,CAAkB,wBAAwB,aAAa;AAAA,IAC5D,KAAA,EAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC1B,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,aAAa,CAAA,CAAE,WAAA;AAAA,MACf,aAAa,CAAA,CAAE;AAAA,KACjB,CAAE;AAAA,GACJ,CAAE,CAAA;AAEF,EAAA,MAAA,CAAO,iBAAA,CAAkB,qBAAA,EAAuB,OAAO,GAAA,KAAQ;AAC7D,IAAA,MAAM,OAAA,GAAU,SAAS,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA;AAC/D,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,cAAA,EAAiB,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,IACpD;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,MAAA,CAAO,UAAU,GAAA,CAAI,MAAA,CAAO,SAAA,IAAa,EAAE,CAAA;AACxE,IAAA,OAAO;AAAA,MACL,OAAA,EAAS;AAAA,QACP,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,KAAK,SAAA,CAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAA;AAAE;AACxD,KACF;AAAA,EACF,CAAC,CAAA;AACH;ACpHA,SAAS,CAAA,CAAE,MAA+B,GAAA,EAAqB;AAC7D,EAAA,MAAM,CAAA,GAAI,KAAK,GAAG,CAAA;AAClB,EAAA,OAAO,MAAM,MAAA,IAAa,CAAA,KAAM,IAAA,GAAO,EAAA,GAAK,OAAO,CAAC,CAAA;AACtD;AAEO,IAAM,WAAA,GAA2B;AAAA,EACtC;AAAA,IACE,IAAA,EAAM,gBAAA;AAAA,IACN,WAAA,EACE,oPAAA;AAAA,IACF,SAAA,EAAW;AAAA,MACT,EAAE,IAAA,EAAM,aAAA,EAAe,WAAA,EAAa,wBAAA,EAA0B,UAAU,IAAA,EAAK;AAAA,MAC7E,EAAE,IAAA,EAAM,oBAAA,EAAsB,WAAA,EAAa,uBAAA,EAAyB,UAAU,IAAA,EAAK;AAAA,MACnF,EAAE,IAAA,EAAM,oBAAA,EAAsB,WAAA,EAAa,6BAAA,EAA+B,UAAU,IAAA,EAAK;AAAA,MACzF,EAAE,IAAA,EAAM,qBAAA,EAAuB,WAAA,EAAa,uDAAA,EAAyD,UAAU,KAAA;AAAM,KACvH;AAAA,IACA,MAAA,EAAQ,CAAC,IAAA,KAAS;AAAA,MAChB,gEAAA;AAAA,MACA,EAAA;AAAA,MACA,CAAA,QAAA,EAAW,CAAA,CAAE,IAAA,EAAM,aAAa,CAAC,CAAA,CAAA;AAAA,MACjC,CAAA,eAAA,EAAkB,CAAA,CAAE,IAAA,EAAM,oBAAoB,CAAC,CAAA,CAAA;AAAA,MAC/C,CAAA,sBAAA,EAAyB,CAAA,CAAE,IAAA,EAAM,oBAAoB,CAAC,CAAA,CAAA;AAAA,MACtD,CAAA,uBAAA,EAA0B,CAAA,CAAE,IAAA,EAAM,qBAAqB,KAAK,YAAY,CAAA,CAAA;AAAA,MACxE,EAAA;AAAA,MACA,4CAAA;AAAA,MACA,oDAAA;AAAA,MACA,iDAAA;AAAA,MACA,2CAAA;AAAA,MACA,sDAAA;AAAA,MACA,EAAA;AAAA,MACA,gNAAA;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,0BAAA;AAAA,IACN,WAAA,EACE,uMAAA;AAAA,IACF,SAAA,EAAW;AAAA,MACT,EAAE,IAAA,EAAM,aAAA,EAAe,WAAA,EAAa,wBAAA,EAA0B,UAAU,IAAA,EAAK;AAAA,MAC7E,EAAE,IAAA,EAAM,sBAAA,EAAwB,WAAA,EAAa,+CAAA,EAAiD,UAAU,IAAA,EAAK;AAAA,MAC7G,EAAE,IAAA,EAAM,oBAAA,EAAsB,WAAA,EAAa,+BAAA,EAAiC,UAAU,IAAA;AAAK,KAC7F;AAAA,IACA,MAAA,EAAQ,CAAC,IAAA,KAAS;AAAA,MAChB,0EAAA;AAAA,MACA,EAAA;AAAA,MACA,CAAA,UAAA,EAAa,CAAA,CAAE,IAAA,EAAM,aAAa,CAAC,CAAA,CAAA;AAAA,MACnC,CAAA,QAAA,EAAW,CAAA,CAAE,IAAA,EAAM,sBAAsB,CAAC,CAAA,CAAA;AAAA,MAC1C,CAAA,sBAAA,EAAyB,CAAA,CAAE,IAAA,EAAM,oBAAoB,CAAC,CAAA,CAAA;AAAA,MACtD,EAAA;AAAA,MACA,OAAA;AAAA,MACA,iEAAA;AAAA,MACA,0DAAA;AAAA,MACA,wCAAA;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,wBAAA;AAAA,IACN,WAAA,EACE,mNAAA;AAAA,IACF,SAAA,EAAW;AAAA,MACT,EAAE,IAAA,EAAM,SAAA,EAAW,WAAA,EAAa,qCAAA,EAAuC,UAAU,IAAA,EAAK;AAAA,MACtF,EAAE,IAAA,EAAM,kBAAA,EAAoB,WAAA,EAAa,qCAAA,EAAuC,UAAU,IAAA,EAAK;AAAA,MAC/F,EAAE,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,8BAAA,EAAgC,UAAU,KAAA,EAAM;AAAA,MACxF,EAAE,IAAA,EAAM,mBAAA,EAAqB,WAAA,EAAa,mCAAA,EAAqC,UAAU,KAAA,EAAM;AAAA,MAC/F,EAAE,IAAA,EAAM,eAAA,EAAiB,WAAA,EAAa,+CAAA,EAA4C,UAAU,KAAA;AAAM,KACpG;AAAA,IACA,MAAA,EAAQ,CAAC,IAAA,KAAS;AAAA,MAChB,0DAAA;AAAA,MACA,EAAA;AAAA,MACA,CAAA,WAAA,EAAc,CAAA,CAAE,IAAA,EAAM,SAAS,CAAC,CAAA,CAAA;AAAA,MAChC,CAAA,4BAAA,EAA+B,CAAA,CAAE,IAAA,EAAM,kBAAkB,CAAC,CAAA,CAAA;AAAA,MAC1D,CAAA,qBAAA,EAAwB,CAAA,CAAE,IAAA,EAAM,iBAAiB,KAAK,KAAK,CAAA,CAAA;AAAA,MAC3D,CAAA,qBAAA,EAAwB,CAAA,CAAE,IAAA,EAAM,mBAAmB,KAAK,KAAK,CAAA,CAAA;AAAA,MAC7D,CAAA,WAAA,EAAc,CAAA,CAAE,IAAA,EAAM,eAAe,KAAK,EAAE,CAAA,CAAA;AAAA,MAC5C,EAAA;AAAA,MACA,OAAA;AAAA,MACA,+CAAA;AAAA,MACA,0DAAA;AAAA,MACA,wDAAA;AAAA,MACA,iEAAA;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,wBAAA;AAAA,IACN,WAAA,EACE,qOAAA;AAAA,IACF,SAAA,EAAW;AAAA,MACT,EAAE,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,oBAAA,EAAsB,UAAU,IAAA,EAAK;AAAA,MACxE,EAAE,IAAA,EAAM,eAAA,EAAiB,WAAA,EAAa,sBAAA,EAAwB,UAAU,IAAA,EAAK;AAAA,MAC7E,EAAE,IAAA,EAAM,oBAAA,EAAsB,WAAA,EAAa,gCAAA,EAAkC,UAAU,IAAA,EAAK;AAAA,MAC5F,EAAE,IAAA,EAAM,uBAAA,EAAyB,WAAA,EAAa,wBAAA,EAA0B,UAAU,IAAA;AAAK,KACzF;AAAA,IACA,MAAA,EAAQ,CAAC,IAAA,KAAS;AAAA,MAChB,iCAAA;AAAA,MACA,EAAA;AAAA,MACA,CAAA,cAAA,EAAiB,CAAA,CAAE,IAAA,EAAM,YAAY,CAAC,CAAA,CAAA;AAAA,MACtC,CAAA,WAAA,EAAc,CAAA,CAAE,IAAA,EAAM,eAAe,CAAC,CAAA,CAAA;AAAA,MACtC,CAAA,sBAAA,EAAyB,CAAA,CAAE,IAAA,EAAM,oBAAoB,CAAC,CAAA,CAAA;AAAA,MACtD,CAAA,yBAAA,EAA4B,CAAA,CAAE,IAAA,EAAM,uBAAuB,CAAC,CAAA,CAAA;AAAA,MAC5D,EAAA;AAAA,MACA,OAAA;AAAA,MACA,wBAAA;AAAA,MACA,yCAAA;AAAA,MACA,qCAAA;AAAA,MACA,oCAAA;AAAA,MACA,8CAAA;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,2BAAA;AAAA,IACN,WAAA,EACE,0PAAA;AAAA,IACF,SAAA,EAAW;AAAA,MACT,EAAE,IAAA,EAAM,oBAAA,EAAsB,WAAA,EAAa,uBAAA,EAAyB,UAAU,IAAA,EAAK;AAAA,MACnF,EAAE,IAAA,EAAM,QAAA,EAAU,WAAA,EAAa,sBAAA,EAAwB,UAAU,IAAA,EAAK;AAAA,MACtE,EAAE,IAAA,EAAM,eAAA,EAAiB,WAAA,EAAa,gCAAA,EAAkC,UAAU,KAAA;AAAM,KAC1F;AAAA,IACA,MAAA,EAAQ,CAAC,IAAA,KAAS;AAAA,MAChB,2CAAA;AAAA,MACA,EAAA;AAAA,MACA,CAAA,UAAA,EAAa,CAAA,CAAE,IAAA,EAAM,oBAAoB,CAAC,CAAA,CAAA;AAAA,MAC1C,CAAA,UAAA,EAAa,CAAA,CAAE,IAAA,EAAM,QAAQ,CAAC,CAAA,CAAA;AAAA,MAC9B,CAAA,iBAAA,EAAoB,CAAA,CAAE,IAAA,EAAM,eAAe,KAAK,YAAY,CAAA,CAAA;AAAA,MAC5D,EAAA;AAAA,MACA,OAAA;AAAA,MACA,sBAAA;AAAA,MACA,oCAAA;AAAA,MACA,wCAAA;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,wBAAA;AAAA,IACN,WAAA,EACE,uSAAA;AAAA,IACF,SAAA,EAAW;AAAA,MACT,EAAE,IAAA,EAAM,OAAA,EAAS,WAAA,EAAa,8CAAA,EAAgD,UAAU,IAAA,EAAK;AAAA,MAC7F,EAAE,IAAA,EAAM,UAAA,EAAY,WAAA,EAAa,qCAAA,EAAuC,UAAU,IAAA,EAAK;AAAA,MACvF,EAAE,IAAA,EAAM,kBAAA,EAAoB,WAAA,EAAa,+BAAA,EAAiC,UAAU,KAAA;AAAM,KAC5F;AAAA,IACA,MAAA,EAAQ,CAAC,IAAA,KAAS;AAAA,MAChB,iDAAA;AAAA,MACA,EAAA;AAAA,MACA,CAAA,SAAA,EAAY,CAAA,CAAE,IAAA,EAAM,OAAO,CAAC,CAAA,CAAA;AAAA,MAC5B,CAAA,YAAA,EAAe,CAAA,CAAE,IAAA,EAAM,UAAU,CAAC,CAAA,CAAA;AAAA,MAClC,CAAA,YAAA,EAAe,CAAA,CAAE,IAAA,EAAM,kBAAkB,KAAK,IAAI,CAAA,QAAA,CAAA;AAAA,MAClD,EAAA;AAAA,MACA,OAAA;AAAA,MACA,qCAAA;AAAA,MACA,gCAAA;AAAA,MACA,gCAAA;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA;AAEf,CAAA;AAEA,IAAM,YAAA,GAAe,IAAI,GAAA,CAAI,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,IAAA,EAAM,CAAC,CAAC,CAAC,CAAA;AAEzD,SAAS,YAAA,CAAa,MAAc,IAAA,EAA+B;AACxE,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AACpC,EAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,IAAI,CAAA,CAAE,CAAA;AACtD,EAAA,OAAO;AAAA,IACL,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,QAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,EAAiB,MAAM,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAAE;AAC9D;AACF,GACF;AACF;AAEA,eAAsB,eAAA,CACpB,QACA,SAAA,EACe;AACf,EAAA,MAAA,CAAO,iBAAA,CAAkB,0BAA0B,aAAa;AAAA,IAC9D,OAAA,EAAS,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC/B,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,aAAa,CAAA,CAAE,WAAA;AAAA,MACf,WAAW,CAAA,CAAE;AAAA,KACf,CAAE;AAAA,GACJ,CAAE,CAAA;AACF,EAAA,MAAA,CAAO,iBAAA,CAAkB,sBAAA,EAAwB,OAAO,GAAA,KAAQ;AAC9D,IAAA,OAAO,YAAA,CAAa,IAAI,MAAA,CAAO,IAAA,EAAM,IAAI,MAAA,CAAO,SAAA,IAAa,EAAE,CAAA;AAAA,EACjE,CAAC,CAAA;AACH;;;ACnMO,IAAM,YAAA,GAAe,SAAA;AACrB,IAAM,eAAA,GAAkB,OAAA;AAE/B,eAAsB,gBACpB,IAAA,EACoD;AACpD,EAAA,MAAM,UAAU,IAAI,aAAA,CAAc,EAAE,WAAA,EAAa,IAAA,CAAK,aAAa,CAAA;AACnE,EAAA,MAAM,QAAQ,IAAI,WAAA,CAAY,EAAE,SAAA,EAAW,IAAA,CAAK,WAAW,CAAA;AAC3D,EAAA,MAAM,MAAA,GAAS,MAAM,YAAA,CAAa,QAAA,CAAS,KAAK,SAAS,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,QAAA,EAAS;AAEpC,EAAA,MAAM,QAAA,GAAwB,EAAE,OAAA,EAAS,KAAA,EAAO,QAAQ,IAAA,EAAK;AAE7D,EAAA,MAAM,SAAS,IAAI,MAAA;AAAA,IACjB,EAAE,IAAA,EAAM,YAAA,EAAc,OAAA,EAAS,eAAA,EAAgB;AAAA,IAC/C;AAAA,MACE,YAAA,EAAc;AAAA,QACZ,SAAA,EAAW,EAAE,WAAA,EAAa,KAAA,EAAO,WAAW,KAAA,EAAM;AAAA,QAClD,KAAA,EAAO,EAAE,WAAA,EAAa,KAAA,EAAM;AAAA,QAC5B,OAAA,EAAS,EAAE,WAAA,EAAa,KAAA;AAAM;AAChC;AACF,GACF;AAEA,EAAA,MAAM,iBAAA,CAAkB,QAAQ,QAAQ,CAAA;AACxC,EAAA,MAAM,aAAA,CAAc,QAAQ,QAAQ,CAAA;AACpC,EAAA,MAAM,eAAA,CAAgB,MAAgB,CAAA;AAEtC,EAAA,OAAO,EAAE,QAAQ,QAAA,EAAS;AAC5B;;;ACtCA,IAAM,OAAOE,IAAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AACxD,IAAM,QAAA,GAAWA,IAAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,MAAM,IAAI,CAAA;AAE9C,eAAe,IAAA,GAAsB;AACnC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,eAAA,CAAgB;AAAA,IACvC,WAAA,EAAaA,IAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,SAAS,CAAA;AAAA,IAC1C,SAAA,EAAWA,IAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,WAAW,OAAO,CAAA;AAAA,IACjD,SAAA,EAAWA,IAAAA,CAAK,IAAA,CAAK,QAAA,EAAU,QAAQ,mBAAmB;AAAA,GAC3D,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,IAAI,oBAAA,EAAqB;AAC3C,EAAA,MAAM,MAAA,CAAO,QAAQ,SAAS,CAAA;AAC9B,EAAA,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA;AAAA,CAA0B,CAAA;AACjD;AAEA,IAAA,EAAK,CAAE,KAAA,CAAM,CAAC,GAAA,KAAQ;AACpB,EAAA,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,EAAI,IAAc,KAAA,IAAS,MAAA,CAAO,GAAG,CAAC;AAAA,CAAI,CAAA;AAC/D,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB,CAAC,CAAA","file":"stdio.js","sourcesContent":["import { z } from \"zod\";\n\n/**\n * Supported locales — V1.0 ships FR + EN translated; 11 others fall back to EN\n * (cf. spec §8.3). Infrastructure supports all 13 codes uniformly.\n */\nexport const SUPPORTED_LOCALES = [\n \"fr\", \"en\", \"es\", \"de\", \"pt\", \"it\", \"nl\", \"ru\", \"ar\", \"tr\", \"ja\", \"zh\", \"ko\",\n] as const;\n\nexport const AcfLocaleSchema = z.enum(SUPPORTED_LOCALES);\nexport type AcfLocale = z.infer<typeof AcfLocaleSchema>;\n\n/**\n * Localized string: at minimum FR + EN must be provided.\n */\nexport const LocalizedStringSchema = z\n .object({\n fr: z.string(),\n en: z.string(),\n })\n .catchall(z.string());\nexport type LocalizedString = z.infer<typeof LocalizedStringSchema>;\n\n/* -------------------- Framework -------------------- */\n\nexport const PrincipleSchema = z.object({\n id: z.string().regex(/^P[1-4]$/),\n code: z.string().regex(/^P[1-4]$/),\n title: LocalizedStringSchema,\n summary: LocalizedStringSchema,\n doctrine: LocalizedStringSchema,\n related_fiches: z.array(z.string().regex(/^ACF-(0[0-9]|1[0-6])$/)),\n related_dimensions: z.array(z.string().regex(/^D[1-6]$/)),\n});\nexport type Principle = z.infer<typeof PrincipleSchema>;\n\nexport const AutonomyLevelSchema = z.object({\n id: z.string().regex(/^N[0-3]$/),\n code: z.string().regex(/^N[0-3]$/),\n title: LocalizedStringSchema,\n description: LocalizedStringSchema,\n controls: LocalizedStringSchema,\n examples: LocalizedStringSchema,\n});\nexport type AutonomyLevel = z.infer<typeof AutonomyLevelSchema>;\n\nexport const DimensionSchema = z.object({\n id: z.string().regex(/^D[1-6]$/),\n code: z.string().regex(/^D[1-6]$/),\n title: LocalizedStringSchema,\n description: LocalizedStringSchema,\n practices: LocalizedStringSchema,\n});\nexport type Dimension = z.infer<typeof DimensionSchema>;\n\nexport const DdaoSchema = z.object({\n title: LocalizedStringSchema,\n expansion: z.literal(\"Delegated Decision Agent Officer\"),\n definition: LocalizedStringSchema,\n responsibilities: LocalizedStringSchema,\n not_to_be_confused_with: LocalizedStringSchema,\n});\nexport type Ddao = z.infer<typeof DdaoSchema>;\n\n/* -------------------- Fiches -------------------- */\n\nexport const RelatedArticleSchema = z.object({\n regulation: z.enum([\"ai-act\", \"gdpr\", \"dora\", \"nis2\", \"iso-42001\"]),\n article: z.string(),\n paragraph: z.string().optional(),\n});\n\nexport const FicheFrontmatterSchema = z.object({\n code: z.string().regex(/^ACF-(0[0-9]|1[0-6])$/),\n slug: z.string().min(1),\n title: z.string().min(1),\n title_en: z.string().optional(),\n order: z.number().int().min(0).max(16),\n maturity_dimension: z.string().regex(/^D[1-6]$/).optional(),\n related_principles: z.array(z.string().regex(/^P[1-4]$/)).optional(),\n related_articles: z.array(RelatedArticleSchema).optional(),\n related_fiches: z.array(z.string().regex(/^ACF-(0[0-9]|1[0-6])$/)).optional(),\n keywords: z.array(z.string()),\n version: z.string(),\n pdf_url: z.string().optional(),\n});\nexport type FicheFrontmatter = z.infer<typeof FicheFrontmatterSchema>;\n\nexport interface FicheDocument {\n frontmatter: FicheFrontmatter;\n body: string;\n served_locale: AcfLocale;\n is_fallback: boolean;\n}\n\n/* -------------------- Guides -------------------- */\n\nexport const ApplicableDateSchema = z.object({\n obligation: z.string(),\n date: z.string(),\n});\n\nexport const GuideFrontmatterSchema = z.object({\n regulation: z.enum([\"ai-act\", \"gdpr\", \"dora\", \"nis2\", \"iso-42001\"]),\n title: z.string().min(1),\n title_en: z.string().optional(),\n version: z.string(),\n last_update: z.string(),\n applicable_dates: z.array(ApplicableDateSchema).optional(),\n});\nexport type GuideFrontmatter = z.infer<typeof GuideFrontmatterSchema>;\n\nexport interface GuideDocument {\n frontmatter: GuideFrontmatter;\n body: string;\n served_locale: AcfLocale;\n is_fallback: boolean;\n}\n\n/* -------------------- Glossary -------------------- */\n\nexport const GlossaryEntrySchema = z.object({\n term: z.string().min(1),\n expansion: z.string().optional(),\n definition: z.string().min(1),\n related_principles: z.array(z.string().regex(/^P[1-4]$/)).optional(),\n related_fiches: z.array(z.string().regex(/^ACF-(0[0-9]|1[0-6])$/)).optional(),\n});\nexport type GlossaryEntry = z.infer<typeof GlossaryEntrySchema>;\n\n/* -------------------- Whitepaper / Manual -------------------- */\n\nexport const WhitepaperSectionSchema = z.object({\n slug: z.string().min(1),\n title: z.string().min(1),\n level: z.union([z.literal(1), z.literal(2), z.literal(3)]),\n body: z.string(),\n});\nexport type WhitepaperSection = z.infer<typeof WhitepaperSectionSchema>;\n\nexport interface WhitepaperDocument {\n toc: WhitepaperSection[];\n full_body: string;\n served_locale: AcfLocale;\n is_fallback: boolean;\n}\n\n/* -------------------- Meta -------------------- */\n\nexport const MetaSchema = z.object({\n framework_version: z.string(),\n content_build: z.string(),\n content_hash: z.string().startsWith(\"sha256:\"),\n doctrine_signature: z.string().optional(),\n permanent_archive_url: z.string().url(),\n rules_version: z.string(),\n locales: z.array(AcfLocaleSchema),\n fallback_locale: AcfLocaleSchema,\n});\nexport type Meta = z.infer<typeof MetaSchema>;\n\n/* -------------------- Resolved-content union (returned by ContentLoader) -------------------- */\n\nexport type ResolvedContent =\n | { kind: \"principle\"; data: Principle }\n | { kind: \"autonomy_level\"; data: AutonomyLevel }\n | { kind: \"dimension\"; data: Dimension }\n | { kind: \"ddao\"; data: Ddao }\n | { kind: \"fiche\"; data: FicheDocument }\n | { kind: \"guide\"; data: GuideDocument }\n | { kind: \"whitepaper\"; data: WhitepaperDocument }\n | { kind: \"glossary_entry\"; data: GlossaryEntry }\n | { kind: \"glossary_index\"; data: GlossaryEntry[] }\n | { kind: \"meta\"; data: Meta };\n","import { AcfLocale, AcfLocaleSchema, SUPPORTED_LOCALES } from \"./types\";\n\nexport interface LocaleNegotiationInput {\n explicit?: string | undefined;\n acceptLanguage?: string | undefined;\n envLocale?: string | undefined;\n}\n\nexport const DEFAULT_FALLBACK_LOCALE: AcfLocale = \"en\";\nexport const AUTHORITY_SOURCE_LOCALE: AcfLocale = \"fr\";\n\nfunction tryParseLocale(value: string | undefined): AcfLocale | null {\n if (!value) return null;\n const lower = value.trim().toLowerCase().slice(0, 2);\n const result = AcfLocaleSchema.safeParse(lower);\n return result.success ? result.data : null;\n}\n\nfunction parseAcceptLanguage(header: string): AcfLocale[] {\n return header\n .split(\",\")\n .map((part) => part.trim().split(\";\")[0]?.split(\"-\")[0] ?? \"\")\n .map((code) => tryParseLocale(code))\n .filter((code): code is AcfLocale => code !== null);\n}\n\n/**\n * Locale negotiation per spec §8.1:\n * 1. Explicit param (URI ?lang= or tool argument)\n * 2. HTTP Accept-Language\n * 3. ACF_MCP_LOCALE env var (stdio only)\n * 4. DEFAULT_FALLBACK_LOCALE ('en')\n */\nexport function negotiateLocale(input: LocaleNegotiationInput): AcfLocale {\n const fromExplicit = tryParseLocale(input.explicit);\n if (fromExplicit) return fromExplicit;\n\n if (input.acceptLanguage) {\n const candidates = parseAcceptLanguage(input.acceptLanguage);\n if (candidates[0]) return candidates[0];\n }\n\n const fromEnv = tryParseLocale(input.envLocale);\n if (fromEnv) return fromEnv;\n\n return DEFAULT_FALLBACK_LOCALE;\n}\n\n/**\n * Fallback chain used by ContentLoader:\n * requested → DEFAULT_FALLBACK_LOCALE ('en') → AUTHORITY_SOURCE_LOCALE ('fr')\n * Deduplicated.\n */\nexport function fallbackChain(requested: AcfLocale): AcfLocale[] {\n const chain: AcfLocale[] = [requested];\n if (!chain.includes(DEFAULT_FALLBACK_LOCALE)) chain.push(DEFAULT_FALLBACK_LOCALE);\n if (!chain.includes(AUTHORITY_SOURCE_LOCALE)) chain.push(AUTHORITY_SOURCE_LOCALE);\n return chain;\n}\n\nexport { SUPPORTED_LOCALES };\n","import { readFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport matter from \"gray-matter\";\nimport {\n AcfLocale,\n AutonomyLevel,\n AutonomyLevelSchema,\n Ddao,\n DdaoSchema,\n Dimension,\n DimensionSchema,\n FicheDocument,\n FicheFrontmatterSchema,\n GlossaryEntry,\n GlossaryEntrySchema,\n GuideDocument,\n GuideFrontmatterSchema,\n Meta,\n MetaSchema,\n Principle,\n PrincipleSchema,\n} from \"./types\";\nimport { fallbackChain } from \"./locale\";\n\nexport interface ContentLoaderOptions {\n contentRoot: string;\n}\n\nexport class ContentLoader {\n private readonly root: string;\n private metaCache: Meta | null = null;\n\n constructor(opts: ContentLoaderOptions) {\n this.root = opts.contentRoot;\n }\n\n /* -------------------- Meta -------------------- */\n\n async loadMeta(): Promise<Meta> {\n // No lock needed: concurrent callers all parse the same file and write\n // identical values to metaCache, so the last write is idempotent.\n if (this.metaCache) return this.metaCache;\n const file = path.join(this.root, \"meta.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n this.metaCache = MetaSchema.parse(raw);\n return this.metaCache;\n }\n\n /* -------------------- Framework -------------------- */\n\n async loadPrinciples(): Promise<Principle[]> {\n const file = path.join(this.root, \"framework\", \"principles.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n return (raw.principles ?? []).map((p: unknown) => PrincipleSchema.parse(p));\n }\n\n async loadAutonomyLevels(): Promise<AutonomyLevel[]> {\n const file = path.join(this.root, \"framework\", \"autonomy-levels.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n return (raw.levels ?? []).map((l: unknown) => AutonomyLevelSchema.parse(l));\n }\n\n async loadDimensions(): Promise<Dimension[]> {\n const file = path.join(this.root, \"framework\", \"dimensions.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n return (raw.dimensions ?? []).map((d: unknown) => DimensionSchema.parse(d));\n }\n\n async loadDdao(): Promise<Ddao> {\n const file = path.join(this.root, \"framework\", \"ddao.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n return DdaoSchema.parse(raw);\n }\n\n /* -------------------- Fiches -------------------- */\n\n /**\n * Load a fiche by code with locale fallback chain.\n *\n * **Caller contract:** `code` MUST be pre-validated against `/^ACF-(0[0-9]|1[0-6])$/`\n * before calling this method. ContentLoader does NOT sanitise the code and relies\n * on Zod validation at the tool boundary (Phase 5+). Skipping pre-validation is a\n * path traversal risk.\n */\n async loadFiche(code: string, locale: AcfLocale): Promise<FicheDocument> {\n for (const candidate of fallbackChain(locale)) {\n const file = path.join(this.root, \"fiches\", `${code}.${candidate}.md`);\n if (!existsSync(file)) continue;\n const raw = await readFile(file, \"utf8\");\n const parsed = matter(raw);\n const frontmatter = FicheFrontmatterSchema.parse(parsed.data);\n return {\n frontmatter,\n body: parsed.content,\n served_locale: candidate,\n is_fallback: candidate !== locale,\n };\n }\n throw new Error(`Fiche ${code} not found in any locale chain for ${locale}`);\n }\n\n /* -------------------- Guides -------------------- */\n\n /**\n * Load a regulatory guide markdown with locale fallback chain.\n *\n * **Caller contract:** `regulation` MUST be pre-validated against the\n * `[\"ai-act\", \"gdpr\", \"dora\", \"nis2\", \"iso-42001\"]` enum before calling\n * this method. ContentLoader does NOT sanitise the regulation string.\n */\n async loadGuide(\n regulation: string,\n locale: AcfLocale,\n ): Promise<GuideDocument> {\n for (const candidate of fallbackChain(locale)) {\n const file = path.join(this.root, \"guides\", `${regulation}.${candidate}.md`);\n if (!existsSync(file)) continue;\n const raw = await readFile(file, \"utf8\");\n const parsed = matter(raw);\n const frontmatter = GuideFrontmatterSchema.parse(parsed.data);\n return {\n frontmatter,\n body: parsed.content,\n served_locale: candidate,\n is_fallback: candidate !== locale,\n };\n }\n throw new Error(\n `Guide ${regulation} not found in any locale chain for ${locale}`,\n );\n }\n\n /* -------------------- Glossary -------------------- */\n\n async loadGlossary(locale: AcfLocale): Promise<{\n entries: GlossaryEntry[];\n served_locale: AcfLocale;\n is_fallback: boolean;\n }> {\n for (const candidate of fallbackChain(locale)) {\n const file = path.join(this.root, \"glossary\", `${candidate}.json`);\n if (!existsSync(file)) continue;\n const raw = JSON.parse(await readFile(file, \"utf8\")) as unknown[];\n return {\n entries: raw.map((entry) => GlossaryEntrySchema.parse(entry)),\n served_locale: candidate,\n is_fallback: candidate !== locale,\n };\n }\n throw new Error(`Glossary not found in any locale chain for ${locale}`);\n }\n\n /**\n * Lookup a glossary entry by `term` or `expansion` (case-insensitive).\n *\n * **Caller contract:** `term` is matched against entry strings, not used as a\n * file path, so path traversal is not a concern here. But callers should\n * still validate length/format to avoid pathological inputs.\n *\n * Returns null if no entry matches.\n */\n async loadGlossaryEntry(\n term: string,\n locale: AcfLocale,\n ): Promise<{\n entry: GlossaryEntry;\n served_locale: AcfLocale;\n is_fallback: boolean;\n } | null> {\n const { entries, served_locale, is_fallback } = await this.loadGlossary(locale);\n const normalised = term.trim().toLowerCase();\n const entry =\n entries.find(\n (e) =>\n e.term.toLowerCase() === normalised ||\n e.expansion?.toLowerCase() === normalised,\n ) ?? null;\n if (!entry) return null;\n return { entry, served_locale, is_fallback };\n }\n\n /* -------------------- Whitepaper -------------------- */\n\n /**\n * Load the whitepaper raw markdown body with locale fallback chain.\n *\n * Returns the file contents AS-IS. If the file contains a YAML frontmatter\n * block, that block is included verbatim in `body` (this method does NOT\n * strip it). The Phase 5 whitepaper section parser is responsible for\n * walking H1/H2 and discarding any frontmatter prefix.\n */\n async loadWhitepaperRaw(locale: AcfLocale): Promise<{\n body: string;\n served_locale: AcfLocale;\n is_fallback: boolean;\n }> {\n for (const candidate of fallbackChain(locale)) {\n const file = path.join(this.root, \"whitepaper\", `${candidate}.md`);\n if (!existsSync(file)) continue;\n const body = await readFile(file, \"utf8\");\n return {\n body,\n served_locale: candidate,\n is_fallback: candidate !== locale,\n };\n }\n throw new Error(`Whitepaper not found in any locale chain for ${locale}`);\n }\n}\n","import { z } from \"zod\";\n\n/* -------------------- Generic primitives -------------------- */\n\nexport const ConfidenceSchema = z.enum([\"low\", \"medium\", \"high\"]);\nexport type Confidence = z.infer<typeof ConfidenceSchema>;\n\nexport const CriticalitySchema = z.enum([\"low\", \"medium\", \"high\", \"critical\"]);\nexport type Criticality = z.infer<typeof CriticalitySchema>;\n\nexport const AcfLevelSchema = z.enum([\"N0\", \"N1\", \"N2\", \"N3\"]);\nexport type AcfLevel = z.infer<typeof AcfLevelSchema>;\n\nexport const AiActRoleSchema = z.enum([\n \"provider\", \"deployer\", \"importer\", \"distributor\", \"not_applicable\",\n]);\nexport const GdprRoleSchema = z.enum([\n \"controller\", \"processor\", \"joint_controller\", \"not_applicable\",\n]);\n\nexport const TriggerSchema = z.object({\n structured_flags: z.array(z.string()).optional(),\n keyword_patterns: z.array(z.string()).optional(),\n negation_aware: z.boolean().default(true),\n enum_match: z.record(z.string(), z.array(z.string())).optional(),\n});\nexport type Trigger = z.infer<typeof TriggerSchema>;\n\n/* -------------------- Common metadata header -------------------- */\n\nconst versionedHeader = {\n version: z.string(),\n last_update: z.string(),\n};\n\nexport const RulesMetaSchema = z.object({\n rules_version: z.string(),\n last_update: z.string(),\n applicable_jurisdictions: z.array(z.string()),\n});\n\n/* -------------------- AI Act Annex III -------------------- */\n\nexport const RuleCategorySchema = z.object({\n id: z.string(),\n title: z.string(),\n triggers: TriggerSchema,\n obligations: z.array(z.string()),\n fiches: z.array(z.string()),\n confidence_base: ConfidenceSchema,\n requires_human_review: z.literal(true),\n});\n\nexport const AiActAnnexIIISchema = z.object({\n ...versionedHeader,\n applicable_dates: z.array(\n z.object({\n category: z.string(),\n applicable_from: z.string(),\n deferred: z.boolean(),\n }),\n ),\n categories: z.array(RuleCategorySchema),\n});\n\nexport const AiActAnnexISchema = z.object({\n ...versionedHeader,\n applicable_dates: z.array(\n z.object({\n category: z.string(),\n applicable_from: z.string(),\n deferred: z.boolean(),\n }),\n ),\n categories: z.array(RuleCategorySchema),\n});\n\n/* -------------------- GPAI -------------------- */\n\nexport const GpaiTriggersSchema = z.object({\n ...versionedHeader,\n triggers: TriggerSchema,\n obligations: z.array(\n z.object({\n article: z.string(),\n requirement: z.string(),\n applicable_date: z.string(),\n systemic_risk_only: z.boolean().optional(),\n }),\n ),\n});\n\n/* -------------------- Criticality matrix -------------------- */\n\nexport const CriticalityMatrixSchema = z.object({\n ...versionedHeader,\n cells: z.array(\n z.object({\n personal_data_level: z.enum([\"none\", \"standard\", \"sensitive_special\"]),\n financial_exposure: z.enum([\n \"none\", \"low_operation\", \"medium_contract\", \"high_corporate\",\n ]),\n sector_modifier: z.number(),\n score: CriticalitySchema,\n rationale_template: z.string(),\n }),\n ),\n});\n\n/* -------------------- Autonomy inference -------------------- */\n\nexport const AutonomyInferenceSchema = z.object({\n ...versionedHeader,\n thresholds: z.array(\n z.object({\n level: AcfLevelSchema,\n conditions: z.record(z.string(), z.array(z.string())),\n rationale_template: z.string(),\n }),\n ),\n});\n\n/* -------------------- DDAO controls mapping -------------------- */\n\nexport const DdaoControlsMappingSchema = z.object({\n ...versionedHeader,\n mappings: z.array(\n z.object({\n level: AcfLevelSchema,\n risk: CriticalitySchema,\n recommended_controls: z.array(\n z.object({\n title: z.string(),\n description: z.string(),\n owner_role: z.enum([\n \"ddao\", \"dpo\", \"ciso\", \"business_owner\", \"auditor\",\n ]),\n frequency: z.enum([\n \"one_time\", \"monthly\", \"quarterly\", \"annual\", \"on_event\",\n ]),\n evidence_artifact: z.string(),\n }),\n ),\n ddao_controls: z.array(\n z.object({\n control_id: z.string(),\n control_type: z.enum([\n \"preventive\", \"detective\", \"corrective\", \"governance\",\n ]),\n fiche_reference: z.string(),\n implementation_note: z.string(),\n }),\n ),\n }),\n ),\n});\n\n/* -------------------- Sign-off matrix -------------------- */\n\nexport const SignOffMatrixSchema = z.object({\n ...versionedHeader,\n rules: z.array(\n z.object({\n criticality: CriticalitySchema,\n personal_data_level: z.enum([\"none\", \"standard\", \"sensitive_special\"]),\n financial_exposure: z.enum([\n \"none\", \"low_operation\", \"medium_contract\", \"high_corporate\",\n ]),\n required: z.object({\n security: z.boolean(),\n privacy: z.boolean(),\n compliance: z.boolean(),\n legal: z.boolean(),\n business_sponsor: z.boolean(),\n board: z.boolean(),\n }),\n }),\n ),\n});\n\n/* -------------------- GDPR qualification -------------------- */\n\nexport const GdprQualificationSchema = z.object({\n ...versionedHeader,\n cases: z.array(\n z.object({\n id: z.string(),\n triggers: TriggerSchema,\n role: GdprRoleSchema,\n confidence_base: ConfidenceSchema,\n rationale_template: z.string(),\n }),\n ),\n});\n\n/* -------------------- AI Act roles -------------------- */\n\nexport const AiActRolesSchema = z.object({\n ...versionedHeader,\n rules: z.array(\n z.object({\n id: z.string(),\n triggers: TriggerSchema,\n role: AiActRoleSchema,\n confidence_base: ConfidenceSchema,\n rationale_template: z.string(),\n }),\n ),\n});\n","import { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n AiActAnnexIIISchema,\n AiActAnnexISchema,\n AiActRolesSchema,\n AutonomyInferenceSchema,\n CriticalityMatrixSchema,\n DdaoControlsMappingSchema,\n GdprQualificationSchema,\n GpaiTriggersSchema,\n RulesMetaSchema,\n SignOffMatrixSchema,\n} from \"./rule-types\";\n\nexport interface RulesLoaderOptions {\n rulesRoot: string;\n}\n\nexport class RulesLoader {\n private readonly root: string;\n\n constructor(opts: RulesLoaderOptions) {\n this.root = opts.rulesRoot;\n }\n\n private async loadJson<T>(file: string): Promise<T> {\n const raw = await readFile(path.join(this.root, file), \"utf8\");\n return JSON.parse(raw) as T;\n }\n\n async loadRulesMeta() {\n return RulesMetaSchema.parse(await this.loadJson(\"rules-meta.json\"));\n }\n async loadAiActAnnexIII() {\n return AiActAnnexIIISchema.parse(await this.loadJson(\"ai-act-annex-iii.json\"));\n }\n async loadAiActAnnexI() {\n return AiActAnnexISchema.parse(await this.loadJson(\"ai-act-annex-i.json\"));\n }\n async loadGpaiTriggers() {\n return GpaiTriggersSchema.parse(await this.loadJson(\"gpai-triggers.json\"));\n }\n async loadAutonomyInference() {\n return AutonomyInferenceSchema.parse(await this.loadJson(\"autonomy-inference.json\"));\n }\n async loadCriticalityMatrix() {\n return CriticalityMatrixSchema.parse(await this.loadJson(\"criticality-matrix.json\"));\n }\n async loadDdaoControlsMapping() {\n return DdaoControlsMappingSchema.parse(await this.loadJson(\"ddao-controls-mapping.json\"));\n }\n async loadSignOffMatrix() {\n return SignOffMatrixSchema.parse(await this.loadJson(\"sign-off-matrix.json\"));\n }\n async loadGdprQualification() {\n return GdprQualificationSchema.parse(await this.loadJson(\"gdpr-qualification.json\"));\n }\n async loadAiActRoles() {\n return AiActRolesSchema.parse(await this.loadJson(\"ai-act-roles.json\"));\n }\n}\n","import { readFile } from \"node:fs/promises\";\nimport lunr from \"lunr\";\nimport { AcfLocale } from \"./types\";\nimport { SearchDoc } from \"./search-doc\";\n\nexport interface SearchInput {\n query: string;\n scope:\n | \"all\" | \"framework\" | \"fiche\" | \"guide\" | \"whitepaper\" | \"glossary\";\n locale: AcfLocale;\n limit: number;\n}\n\nexport interface SearchHit {\n uri: string;\n title: string;\n snippet: string;\n score: number;\n category: SearchDoc[\"category\"];\n locale: AcfLocale;\n}\n\ninterface SerialisedIndex {\n index: object;\n docs: Record<string, SearchDoc>;\n built_at: string;\n doc_count: number;\n}\n\nconst FRAMEWORK_CATEGORIES = new Set([\n \"principle\", \"autonomy_level\", \"dimension\", \"ddao\",\n]);\n\n/**\n * Category relevance multiplier applied after lunr scoring.\n * Principle/framework content is promoted slightly over glossary/fiche so that\n * canonical framework queries (e.g. \"souveraineté\") return the authoritative\n * principle record first, not a glossary synonym that happens to have a higher\n * raw TF-IDF score due to a shorter body.\n */\nconst CATEGORY_SCORE_MULTIPLIER: Record<SearchDoc[\"category\"], number> = {\n principle: 1.15,\n autonomy_level: 1.10,\n dimension: 1.10,\n ddao: 1.10,\n fiche: 1.05,\n guide: 1.02,\n whitepaper: 1.00,\n glossary: 0.90,\n meta: 0.80,\n};\n\nexport class SearchEngine {\n private constructor(\n private readonly idx: lunr.Index,\n private readonly docs: Map<string, SearchDoc>,\n ) {}\n\n static async fromFile(file: string): Promise<SearchEngine> {\n const raw = JSON.parse(await readFile(file, \"utf8\")) as SerialisedIndex;\n const idx = lunr.Index.load(raw.index);\n const docs = new Map(Object.entries(raw.docs));\n return new SearchEngine(idx, docs);\n }\n\n static fromMemory(serialised: SerialisedIndex): SearchEngine {\n const idx = lunr.Index.load(serialised.index);\n const docs = new Map(Object.entries(serialised.docs));\n return new SearchEngine(idx, docs);\n }\n\n /**\n * Normalise a query string the same way lunr normalises indexed tokens:\n * - strip combining diacritics (é → e, ü → u, ç → c, etc.)\n * - lower-case\n * This ensures \"souveraineté\" matches the stored token \"souverainete\".\n */\n private static normaliseQuery(q: string): string {\n return q\n .normalize(\"NFD\")\n .replace(/\\p{Mn}/gu, \"\") // strip combining diacritics\n .toLowerCase();\n }\n\n search(input: SearchInput): SearchHit[] {\n const normalisedQuery = SearchEngine.normaliseQuery(input.query);\n let lunrResults: lunr.Index.Result[];\n try {\n lunrResults = this.idx.search(normalisedQuery);\n } catch {\n // lunr throws on certain special characters — sanitise to a wildcard search\n const sanitised = normalisedQuery.replace(/[^\\p{L}\\p{N}\\s]/gu, \" \").trim();\n lunrResults = sanitised ? this.idx.search(sanitised) : [];\n }\n\n // Collect all filtered results, apply category multiplier, re-sort, then slice.\n // This promotes canonical framework docs (principles, levels, dimensions) above\n // glossary synonyms that may have higher raw TF-IDF due to shorter bodies.\n const candidates: SearchHit[] = [];\n for (const r of lunrResults) {\n const doc = this.docs.get(r.ref);\n if (!doc) continue;\n if (doc.locale !== input.locale) continue;\n if (!this.matchesScope(doc.category, input.scope)) continue;\n const multiplier = CATEGORY_SCORE_MULTIPLIER[doc.category] ?? 1.0;\n candidates.push({\n uri: doc.uri,\n title: doc.title,\n snippet: doc.snippet,\n score: r.score * multiplier,\n category: doc.category,\n locale: doc.locale,\n });\n }\n candidates.sort((a, b) => b.score - a.score);\n return candidates.slice(0, input.limit);\n }\n\n private matchesScope(\n category: SearchDoc[\"category\"],\n scope: SearchInput[\"scope\"],\n ): boolean {\n if (scope === \"all\") return true;\n if (scope === \"framework\") return FRAMEWORK_CATEGORIES.has(category);\n if (scope === \"fiche\") return category === \"fiche\";\n if (scope === \"guide\") return category === \"guide\";\n if (scope === \"whitepaper\") return category === \"whitepaper\";\n if (scope === \"glossary\") return category === \"glossary\";\n return false;\n }\n}\n","import { AcfLocale, AcfLocaleSchema } from \"./types\";\n\nexport type AcfUriCategory =\n | \"framework_principle\"\n | \"framework_autonomy_level\"\n | \"framework_dimension\"\n | \"framework_ddao\"\n | \"fiche\"\n | \"guide\"\n | \"whitepaper\"\n | \"whitepaper_toc\"\n | \"whitepaper_section\"\n | \"manual\"\n | \"manual_toc\"\n | \"manual_section\"\n | \"deck\"\n | \"glossary\"\n | \"glossary_entry\"\n | \"meta\";\n\nexport interface AcfUriParsed {\n category: AcfUriCategory;\n id?: string;\n locale?: AcfLocale;\n}\n\nconst PREFIX = \"acf://\";\n\nexport function parseAcfUri(uri: string): AcfUriParsed {\n if (!uri.startsWith(PREFIX)) {\n throw new Error(`Invalid scheme — expected acf://, got: ${uri}`);\n }\n const rest = uri.slice(PREFIX.length);\n const [pathPart, queryPart] = rest.split(\"?\", 2);\n if (pathPart === undefined) {\n throw new Error(`Empty URI: ${uri}`);\n }\n const segments = pathPart.split(\"/\").filter(Boolean);\n\n let locale: AcfLocale | undefined;\n if (queryPart) {\n const params = new URLSearchParams(queryPart);\n const lang = params.get(\"lang\");\n if (lang) {\n const parsed = AcfLocaleSchema.safeParse(lang);\n if (parsed.success) locale = parsed.data;\n }\n }\n\n // Routing table\n if (segments[0] === \"framework\") {\n if (segments[1] === \"principle\" && segments[2]) {\n return { category: \"framework_principle\", id: segments[2], locale };\n }\n if (segments[1] === \"autonomy-level\" && segments[2]) {\n return { category: \"framework_autonomy_level\", id: segments[2], locale };\n }\n if (segments[1] === \"dimension\" && segments[2]) {\n return { category: \"framework_dimension\", id: segments[2], locale };\n }\n if (segments[1] === \"ddao\") {\n return { category: \"framework_ddao\", id: undefined, locale };\n }\n }\n if (segments[0] === \"fiche\" && segments[1]) {\n return { category: \"fiche\", id: segments[1], locale };\n }\n if (segments[0] === \"guide\" && segments[1]) {\n return { category: \"guide\", id: segments[1], locale };\n }\n if (segments[0] === \"whitepaper\") {\n if (!segments[1]) return { category: \"whitepaper\", id: undefined, locale };\n if (segments[1] === \"toc\")\n return { category: \"whitepaper_toc\", id: undefined, locale };\n if (segments[1] === \"section\" && segments[2]) {\n return { category: \"whitepaper_section\", id: segments[2], locale };\n }\n }\n if (segments[0] === \"manual\") {\n if (!segments[1]) return { category: \"manual\", id: undefined, locale };\n if (segments[1] === \"toc\")\n return { category: \"manual_toc\", id: undefined, locale };\n if (segments[1] === \"section\" && segments[2]) {\n return { category: \"manual_section\", id: segments[2], locale };\n }\n }\n if (segments[0] === \"deck\") {\n return { category: \"deck\", id: undefined, locale };\n }\n if (segments[0] === \"glossary\") {\n if (!segments[1]) return { category: \"glossary\", id: undefined, locale };\n return {\n category: \"glossary_entry\",\n id: decodeURIComponent(segments[1]),\n locale,\n };\n }\n if (segments[0] === \"meta\") {\n return { category: \"meta\", id: undefined, locale };\n }\n throw new Error(`Unknown ACF URI: ${uri}`);\n}\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n ListResourcesRequestSchema,\n ReadResourceRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { AcfRegistry } from \"./registry\";\nimport { parseAcfUri } from \"./uri\";\nimport { negotiateLocale } from \"./locale\";\n\nexport interface ResourceListItem {\n uri: string;\n name: string;\n description?: string;\n mimeType?: string;\n}\n\nexport interface ResourceReadResult {\n contents: { uri: string; mimeType: string; text: string }[];\n}\n\nexport async function listResources(\n registry: AcfRegistry,\n): Promise<ResourceListItem[]> {\n const items: ResourceListItem[] = [];\n\n /* Principles */\n const principles = await registry.content.loadPrinciples();\n for (const p of principles) {\n items.push({\n uri: `acf://framework/principle/${p.code}`,\n name: `Principle ${p.code} — ${p.title.en}`,\n description: p.summary.en,\n mimeType: \"application/json\",\n });\n }\n\n /* Autonomy levels */\n const levels = await registry.content.loadAutonomyLevels();\n for (const l of levels) {\n items.push({\n uri: `acf://framework/autonomy-level/${l.code}`,\n name: `Autonomy level ${l.code} — ${l.title.en}`,\n description: l.description.en,\n mimeType: \"application/json\",\n });\n }\n\n /* Dimensions */\n const dimensions = await registry.content.loadDimensions();\n for (const d of dimensions) {\n items.push({\n uri: `acf://framework/dimension/${d.code}`,\n name: `Maturity dimension ${d.code} — ${d.title.en}`,\n description: d.description.en,\n mimeType: \"application/json\",\n });\n }\n\n /* DDAO */\n items.push({\n uri: \"acf://framework/ddao\",\n name: \"DDAO — Delegated Decision Agent Officer\",\n description: \"Canonical ACF® role definition for autonomous-agent guardianship.\",\n mimeType: \"application/json\",\n });\n\n /* Fiches */\n for (let i = 0; i <= 16; i++) {\n const code = `ACF-${String(i).padStart(2, \"0\")}`;\n items.push({\n uri: `acf://fiche/${code}`,\n name: `ACF® card ${code}`,\n description: `One of the 17 ACF® methodological cards (V1.0).`,\n mimeType: \"text/markdown\",\n });\n }\n\n /* Glossary */\n items.push({\n uri: \"acf://glossary\",\n name: \"ACF® Glossary index\",\n description: \"List of canonical ACF® terms with cross-refs.\",\n mimeType: \"application/json\",\n });\n\n /* Meta */\n items.push({\n uri: \"acf://meta\",\n name: \"ACF® doctrine metadata\",\n description: \"Framework version, content hash, archive URL, supported locales.\",\n mimeType: \"application/json\",\n });\n\n return items;\n}\n\nexport async function readResource(\n registry: AcfRegistry,\n uri: string,\n acceptLanguage?: string,\n): Promise<ResourceReadResult> {\n const parsed = parseAcfUri(uri);\n const locale = negotiateLocale({\n explicit: parsed.locale,\n acceptLanguage,\n envLocale: process.env[\"ACF_MCP_LOCALE\"],\n });\n\n switch (parsed.category) {\n case \"framework_principle\": {\n const list = await registry.content.loadPrinciples();\n const found = list.find((p) => p.code === parsed.id);\n if (!found) throw new Error(`Principle not found: ${parsed.id}`);\n return jsonResource(uri, found);\n }\n case \"framework_autonomy_level\": {\n const list = await registry.content.loadAutonomyLevels();\n const found = list.find((l) => l.code === parsed.id);\n if (!found) throw new Error(`Autonomy level not found: ${parsed.id}`);\n return jsonResource(uri, found);\n }\n case \"framework_dimension\": {\n const list = await registry.content.loadDimensions();\n const found = list.find((d) => d.code === parsed.id);\n if (!found) throw new Error(`Dimension not found: ${parsed.id}`);\n return jsonResource(uri, found);\n }\n case \"framework_ddao\": {\n return jsonResource(uri, await registry.content.loadDdao());\n }\n case \"fiche\": {\n const fiche = await registry.content.loadFiche(parsed.id ?? \"\", locale);\n return {\n contents: [\n {\n uri,\n mimeType: \"text/markdown\",\n text: renderFicheMarkdown(fiche),\n },\n ],\n };\n }\n case \"glossary\": {\n // loadGlossary returns { entries, served_locale, is_fallback } envelope\n const { entries } = await registry.content.loadGlossary(locale);\n return jsonResource(uri, entries);\n }\n case \"glossary_entry\": {\n // loadGlossaryEntry returns { entry, served_locale, is_fallback } | null\n const result = await registry.content.loadGlossaryEntry(parsed.id ?? \"\", locale);\n if (!result) throw new Error(`Glossary entry not found: ${parsed.id}`);\n return jsonResource(uri, result.entry);\n }\n case \"meta\": {\n return jsonResource(uri, await registry.content.loadMeta());\n }\n default:\n throw new Error(`Resource not implemented in V1.0: ${parsed.category}`);\n }\n}\n\nfunction jsonResource(uri: string, data: unknown): ResourceReadResult {\n return {\n contents: [\n { uri, mimeType: \"application/json\", text: JSON.stringify(data, null, 2) },\n ],\n };\n}\n\nfunction renderFicheMarkdown(fiche: {\n frontmatter: Record<string, unknown>;\n body: string;\n served_locale: string;\n is_fallback: boolean;\n}): string {\n const head = [\n \"---\",\n `served_locale: ${fiche.served_locale}`,\n `is_fallback: ${fiche.is_fallback}`,\n \"---\",\n \"\",\n ].join(\"\\n\");\n return head + fiche.body;\n}\n\n/* -------------------- SDK wiring -------------------- */\n\nexport async function registerResources(\n server: Server,\n registry: AcfRegistry,\n): Promise<void> {\n server.setRequestHandler(ListResourcesRequestSchema, async () => ({\n resources: await listResources(registry),\n }));\n\n server.setRequestHandler(ReadResourceRequestSchema, async (req) => {\n return readResource(registry, req.params.uri);\n });\n}\n","/**\n * Canonical problem-first descriptions for the 11 V1.0 tools.\n * Single source of truth — referenced by tools.ts and snapshot tests.\n */\n\nexport const TOOL_DESCRIPTIONS = {\n \"acf.search\":\n \"When you don't know which ACF® resource is most relevant to the situation at hand (a question, a regulator request, a board challenge…), search the full ACF® corpus and rank candidate resources by relevance.\",\n \"acf.fiche.lookup\":\n \"When facing a specific governance question (defining an agent's mandate, designing a kill switch, building a decision register…), retrieve the canonical ACF® methodological card that applies — with its example, its mapping to principles and its related cards.\",\n \"acf.regulation.article\":\n \"When a regulator, an auditor or a board references a specific article (AI Act Art. 9, GDPR Art. 35, DORA Art. 28, NIS2 Art. 21, ISO 42001 §6…), get the verified text and its operational translation into the ACF® framework — which principles it activates, which maturity dimensions it stresses, which fiches operationalise it.\",\n \"acf.glossary.define\":\n \"When governance vocabulary becomes ambiguous (what is a DDAO? what does Decision Sovereignty exactly mean? when does an agent transition from N1 to N2?), get the canonical ACF® definition and its connection to the rest of the doctrine.\",\n \"acf.cite\":\n \"When writing a thesis, a regulatory filing, a board memo or an academic paper that needs to reference ACF®, produce a properly formatted citation in the requested style (APA, MLA, Chicago, ISO 690, BibTeX).\",\n \"acf.advisor\":\n \"When a user describes a real AI use case and needs a structured ACF® governance assessment in return — which principles fire, which maturity dimensions are critical, which autonomy level fits, which regulatory obligations apply, which fiches to mobilise in what order, what are the first operational actions, what are the operational risks. This is the conversion tool: from documentation library to governance advisor.\",\n \"acf.classify-agent\":\n \"When a system owner needs a first-pass governance qualification of an AI agent before go-live — what autonomy level it likely operates at, what risk class it likely carries, what regulations apply, what controls to put in place, who should sign off — get one structured preliminary assessment covering all five questions in a single call. Input kept deliberately simple (10 qualified fields); output is structured for human review, not for autonomous regulatory decision-making.\",\n \"acf.assess-autonomy\":\n \"When deciding how much autonomy to grant an agent — should it propose, decide or execute? what triggers human review? what is the kill switch design? — get a first-pass assessment grounded in the 4 ACF® autonomy levels with explicit go/no-go criteria, gating thresholds, and uncertainty signalling for human review.\",\n \"acf.identify-governance-gaps\":\n \"When auditing your current AI governance setup — what does ACF® suggest you should have that you don't? — get a first-pass gap analysis across the 6 maturity dimensions, prioritised by criticality, with remediation actions, quick wins, and explicit uncertainty signalling on which gaps were inferred vs declared.\",\n \"acf.map-ai-act-obligations\":\n \"When a system has been preliminarily qualified as high-risk and you need the exhaustive list of AI Act obligations that apply — Art. 9 risk management, Art. 10 data, Art. 11 docs, Art. 12 logs, Art. 13 transparency, Art. 14 human oversight, Art. 15 robustness, GPAI Art. 51-55 — get the full obligation set structured by lifecycle phase (pre-go-live / continuous / on-incident) with deadlines (incl. Digital Omnibus deferrals) and ACF® operational translation.\",\n \"acf.assign-ddao-controls\":\n \"When a DDAO needs concrete controls assigned to an autonomous agent — what kill switches, what escalation thresholds, what audit trails, what documentation, who owns each control — get the ACF® control set scoped to the agent's autonomy level and risk class, with double vocabulary (plain-English recommended_controls + ACF-canonical ddao_controls) for external clarity.\",\n \"acf.evaluate-agent-mandate\":\n \"When an existing agent mandate already exists (drafted or proposed for DDAO sign-off) and you need a first-pass audit before go-live or regulatory inspection — does it cover the decision perimeter, the escalation thresholds, the kill switch, the audit trail, the documentation duty? — get a structured preliminary verdict with strengths, gaps, required additions, and explicit gaps_to_validate for the human reviewer.\",\n} as const;\n\nexport type AcfToolName = keyof typeof TOOL_DESCRIPTIONS;\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\n\n/* -------------------- acf.search -------------------- */\n\nexport const SearchInputSchema = z.object({\n query: z.string().min(2).max(200),\n scope: z\n .enum([\"all\", \"framework\", \"fiche\", \"guide\", \"whitepaper\", \"glossary\"])\n .default(\"all\"),\n locale: AcfLocaleSchema.optional(),\n limit: z.number().int().min(1).max(20).default(5),\n});\nexport type SearchInput = z.infer<typeof SearchInputSchema>;\n\nexport async function handleSearchTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<{ hits: ReturnType<AcfRegistry[\"search\"][\"search\"]> }> {\n const input = SearchInputSchema.parse(rawInput);\n const locale = input.locale ?? \"en\";\n const hits = registry.search.search({\n query: input.query,\n scope: input.scope,\n locale,\n limit: input.limit,\n });\n return { hits };\n}\n\n/* -------------------- acf.fiche.lookup -------------------- */\n\nexport const FicheLookupInputSchema = z.object({\n code: z.string().regex(/^ACF-(0[0-9]|1[0-6])$/),\n locale: AcfLocaleSchema.optional(),\n include_frontmatter: z.boolean().default(true),\n});\nexport type FicheLookupInput = z.infer<typeof FicheLookupInputSchema>;\n\nexport interface FicheLookupOutput {\n code: string;\n title: string;\n markdown: string;\n metadata: Record<string, unknown>;\n pdf_url: string;\n uri: string;\n served_locale: string;\n is_fallback: boolean;\n}\n\nexport async function handleFicheLookupTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<FicheLookupOutput> {\n const input = FicheLookupInputSchema.parse(rawInput);\n const locale = input.locale ?? \"en\";\n const fiche = await registry.content.loadFiche(input.code, locale);\n return {\n code: fiche.frontmatter.code,\n title: fiche.frontmatter.title,\n markdown: fiche.body,\n metadata: input.include_frontmatter\n ? (fiche.frontmatter as unknown as Record<string, unknown>)\n : {},\n pdf_url: fiche.frontmatter.pdf_url ?? \"\",\n uri: `acf://fiche/${fiche.frontmatter.code}`,\n served_locale: fiche.served_locale,\n is_fallback: fiche.is_fallback,\n };\n}\n\n/* -------------------- acf.regulation.article -------------------- */\n\nexport const RegulationArticleInputSchema = z.object({\n regulation: z.enum([\"ai-act\", \"gdpr\", \"dora\", \"nis2\", \"iso-42001\"]),\n article: z.string().min(1).max(20),\n locale: AcfLocaleSchema.optional(),\n});\nexport type RegulationArticleInput = z.infer<typeof RegulationArticleInputSchema>;\n\nexport interface RegulationArticleOutput {\n regulation: string;\n article: string;\n title: string;\n text: string;\n mapping: {\n principles: string[];\n dimensions: string[];\n fiches: string[];\n operational_note: string;\n };\n applicable_date?: string;\n}\n\n/**\n * V1.0 stub: the full text of each regulation article lives in\n * content/guides/<reg>.<locale>.md (Phase 11 fills these). For V1.0 baseline\n * we return a canonical mapping derived from the rules JSON, with\n * placeholder text. The 5 expert guides are content production deferred to\n * the guide-authoring sub-plan.\n */\nconst ARTICLE_MAPPINGS: Record<string, Record<string, RegulationArticleOutput>> = {\n \"ai-act\": {\n \"9\": {\n regulation: \"ai-act\",\n article: \"9\",\n title: \"Risk management system (high-risk AI systems)\",\n text: \"Providers of high-risk AI systems shall establish, implement, document and maintain a risk management system. See Regulation (EU) 2024/1689, Article 9.\",\n mapping: {\n principles: [\"P2\", \"P4\"],\n dimensions: [\"D5\", \"D6\"],\n fiches: [\"ACF-02\", \"ACF-11\"],\n operational_note:\n \"ACF® operationalises Art. 9 via ACF-02 (criticality matrix) + ACF-11 (risk assessment), bound by P4 (proportional governance).\",\n },\n applicable_date: \"2027-12-02\",\n },\n \"10\": {\n regulation: \"ai-act\",\n article: \"10\",\n title: \"Data and data governance (high-risk AI systems)\",\n text: \"Training, validation and testing data sets shall be subject to data governance and management practices appropriate for the intended purpose. See Regulation (EU) 2024/1689, Article 10.\",\n mapping: {\n principles: [\"P2\"],\n dimensions: [\"D5\"],\n fiches: [\"ACF-05\", \"ACF-13\"],\n operational_note:\n \"ACF® operationalises Art. 10 via ACF-05 (decision register) + ACF-13 (retention policy).\",\n },\n applicable_date: \"2027-12-02\",\n },\n \"14\": {\n regulation: \"ai-act\",\n article: \"14\",\n title: \"Human oversight (high-risk AI systems)\",\n text: \"High-risk AI systems shall be designed and developed so that they can be effectively overseen by natural persons. See Regulation (EU) 2024/1689, Article 14.\",\n mapping: {\n principles: [\"P3\"],\n dimensions: [\"D3\", \"D4\"],\n fiches: [\"ACF-07\", \"ACF-09\", \"ACF-14\"],\n operational_note:\n \"ACF® operationalises Art. 14 via P3 (ultimate human control), ACF-07 (kill switch), ACF-09 (escalation thresholds), ACF-14 (takeover drills).\",\n },\n applicable_date: \"2027-12-02\",\n },\n },\n \"gdpr\": {\n \"25\": {\n regulation: \"gdpr\",\n article: \"25\",\n title: \"Data protection by design and by default\",\n text: \"The controller shall implement appropriate technical and organisational measures to ensure data protection by design and by default. See Regulation (EU) 2016/679, Article 25.\",\n mapping: {\n principles: [\"P2\"],\n dimensions: [\"D3\", \"D5\"],\n fiches: [\"ACF-03\", \"ACF-13\"],\n operational_note:\n \"ACF® operationalises Art. 25 via ACF-03 (constitution forbidding non-purposeful PII access) + ACF-13 (retention policy).\",\n },\n },\n \"35\": {\n regulation: \"gdpr\",\n article: \"35\",\n title: \"Data protection impact assessment (DPIA)\",\n text: \"Where processing is likely to result in a high risk to the rights and freedoms of natural persons, the controller shall carry out a DPIA. See Regulation (EU) 2016/679, Article 35.\",\n mapping: {\n principles: [\"P2\"],\n dimensions: [\"D5\"],\n fiches: [\"ACF-11\"],\n operational_note:\n \"ACF® operationalises Art. 35 via ACF-11 (risk assessment) feeding the DPIA template.\",\n },\n },\n },\n};\n\nexport async function handleRegulationArticleTool(\n _registry: AcfRegistry,\n rawInput: unknown,\n): Promise<RegulationArticleOutput> {\n const input = RegulationArticleInputSchema.parse(rawInput);\n const reg = ARTICLE_MAPPINGS[input.regulation];\n if (!reg || !reg[input.article]) {\n throw new Error(\n `Article ${input.regulation} Art. ${input.article} not yet seeded in V1.0 — full expert guides arrive in content-authoring sub-plan.`,\n );\n }\n return reg[input.article]!;\n}\n\n/* -------------------- acf.glossary.define -------------------- */\n\nexport const GlossaryDefineInputSchema = z.object({\n term: z.string().min(1).max(80),\n locale: AcfLocaleSchema.optional(),\n});\nexport type GlossaryDefineInput = z.infer<typeof GlossaryDefineInputSchema>;\n\nexport interface GlossaryDefineOutput {\n term: string;\n expansion?: string;\n definition: string;\n related: { principles: string[]; fiches: string[] };\n served_locale: string;\n}\n\nexport async function handleGlossaryDefineTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<GlossaryDefineOutput> {\n const input = GlossaryDefineInputSchema.parse(rawInput);\n const locale = input.locale ?? \"en\";\n // loadGlossaryEntry returns { entry, served_locale, is_fallback } | null\n const result = await registry.content.loadGlossaryEntry(input.term, locale);\n if (!result) {\n throw new Error(`Glossary entry not found: ${input.term}`);\n }\n return {\n term: result.entry.term,\n expansion: result.entry.expansion,\n definition: result.entry.definition,\n related: {\n principles: result.entry.related_principles ?? [],\n fiches: result.entry.related_fiches ?? [],\n },\n // Use the ACTUAL served locale (which may be a fallback), not the requested one.\n served_locale: result.served_locale,\n };\n}\n\n/* -------------------- acf.cite -------------------- */\n\nexport const CiteInputSchema = z.object({\n uri: z.string().regex(/^acf:\\/\\//),\n style: z\n .enum([\"apa\", \"mla\", \"chicago\", \"iso-690\", \"bibtex\"])\n .default(\"apa\"),\n locale: AcfLocaleSchema.optional(),\n});\nexport type CiteInput = z.infer<typeof CiteInputSchema>;\n\nexport interface CiteOutput {\n citation: string;\n structured: { author: string; year: string; title: string; url: string };\n}\n\nconst CITATION_AUTHOR = \"Dorange, V.\";\nconst CITATION_YEAR = \"2026\";\nconst CITATION_BASE_URL = \"https://acfstandard.com\";\n\nfunction uriToUrlSlug(uri: string): string {\n // Strip the acf:// scheme, then turn the remaining path into a clean slug.\n // e.g. acf://framework/principle/P1 → framework-principle-P1\n return uri.replace(/^acf:\\/\\//, \"\").replace(/[^a-z0-9]+/gi, \"-\").replace(/^-|-$/g, \"\");\n}\n\nexport async function handleCiteTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<CiteOutput> {\n const input = CiteInputSchema.parse(rawInput);\n const meta = registry.meta;\n const slug = uriToUrlSlug(input.uri);\n const url = `${CITATION_BASE_URL}/doctrine/v${meta.framework_version}/${slug}`;\n const title = `Agentic Commerce Framework® (ACF®) — ${input.uri}`;\n const structured = {\n author: CITATION_AUTHOR,\n year: CITATION_YEAR,\n title,\n url,\n };\n let citation: string;\n switch (input.style) {\n case \"apa\":\n citation = `${CITATION_AUTHOR} (${CITATION_YEAR}). ${title}. ACF Standard. ${url}`;\n break;\n case \"mla\":\n citation = `${CITATION_AUTHOR} \"${title}.\" ACF Standard, ${CITATION_YEAR}, ${url}.`;\n break;\n case \"chicago\":\n citation = `${CITATION_AUTHOR} \"${title}.\" ACF Standard. ${CITATION_YEAR}. ${url}.`;\n break;\n case \"iso-690\":\n citation = `${CITATION_AUTHOR} ${title}. ACF Standard, ${CITATION_YEAR}. Available at: ${url}`;\n break;\n case \"bibtex\":\n citation = [\n `@misc{acf-${slug},`,\n ` author = {${CITATION_AUTHOR}},`,\n ` title = {${title}},`,\n ` year = {${CITATION_YEAR}},`,\n ` url = {${url}}`,\n \"}\",\n ].join(\"\\n\");\n break;\n }\n return { citation, structured };\n}\n","import { z } from \"zod\";\n\n/**\n * Minimal Zod → JSON Schema converter sufficient for MCP tool inputSchema.\n * Supports: ZodObject, ZodString, ZodNumber, ZodBoolean, ZodArray, ZodEnum,\n * ZodOptional, ZodDefault. Defers to z's openapi-style metadata via _def.\n *\n * We deliberately keep this small to avoid a heavyweight dep; if we need\n * more, add `zod-to-json-schema` package.\n */\nexport function zodToJsonSchema(schema: z.ZodTypeAny): object {\n return toSchema(schema);\n}\n\nfunction toSchema(s: z.ZodTypeAny): object {\n const def = s._def as { typeName: string };\n switch (def.typeName) {\n case \"ZodObject\": {\n const obj = s as z.ZodObject<z.ZodRawShape>;\n const properties: Record<string, object> = {};\n const required: string[] = [];\n const shape = obj.shape;\n for (const key of Object.keys(shape)) {\n const child = shape[key]!;\n properties[key] = toSchema(child);\n if (!isOptional(child)) required.push(key);\n }\n return {\n type: \"object\",\n properties,\n required,\n additionalProperties: false,\n };\n }\n case \"ZodString\": {\n const s2 = s as z.ZodString;\n const out: Record<string, unknown> = { type: \"string\" };\n const checks = (s2._def as { checks?: { kind: string; value?: number }[] }).checks ?? [];\n for (const c of checks) {\n if (c.kind === \"min\" && c.value !== undefined) out[\"minLength\"] = c.value;\n if (c.kind === \"max\" && c.value !== undefined) out[\"maxLength\"] = c.value;\n }\n return out;\n }\n case \"ZodNumber\": {\n const s2 = s as z.ZodNumber;\n const out: Record<string, unknown> = { type: \"number\" };\n const checks = (s2._def as { checks?: { kind: string; value?: number; inclusive?: boolean }[] }).checks ?? [];\n for (const c of checks) {\n if (c.kind === \"min\" && c.value !== undefined) out[\"minimum\"] = c.value;\n if (c.kind === \"max\" && c.value !== undefined) out[\"maximum\"] = c.value;\n if (c.kind === \"int\") out[\"type\"] = \"integer\";\n }\n return out;\n }\n case \"ZodBoolean\":\n return { type: \"boolean\" };\n case \"ZodEnum\": {\n const e = s as z.ZodEnum<[string, ...string[]]>;\n return { type: \"string\", enum: [...e.options] };\n }\n case \"ZodArray\": {\n const inner = (s._def as { type: z.ZodTypeAny }).type;\n return { type: \"array\", items: toSchema(inner) };\n }\n case \"ZodOptional\": {\n const inner = (s._def as { innerType: z.ZodTypeAny }).innerType;\n return toSchema(inner);\n }\n case \"ZodDefault\": {\n const inner = (s._def as { innerType: z.ZodTypeAny }).innerType;\n const out = toSchema(inner);\n const defaultValue = (s._def as { defaultValue: () => unknown }).defaultValue();\n return { ...out, default: defaultValue };\n }\n case \"ZodLiteral\": {\n const v = (s._def as { value: unknown }).value;\n return { const: v };\n }\n case \"ZodRecord\":\n return { type: \"object\", additionalProperties: true };\n default:\n return {};\n }\n}\n\nfunction isOptional(s: z.ZodTypeAny): boolean {\n const t = (s._def as { typeName: string }).typeName;\n return t === \"ZodOptional\" || t === \"ZodDefault\";\n}\n","import { z } from \"zod\";\nimport { AcfLocaleSchema } from \"./types\";\n\n/* -------------------- Enums -------------------- */\n\nexport const HumanApprovalEnum = z.enum([\"always\", \"sometimes\", \"never\"]);\nexport const PersonalDataEnum = z.enum([\n \"none\", \"standard\", \"sensitive_special\",\n]);\nexport const FinancialExposureEnum = z.enum([\n \"none\", \"low_operation\", \"medium_contract\", \"high_corporate\",\n]);\nexport const ExternalActionsEnum = z.enum([\n \"none\", \"read_only\", \"limited_write\", \"full_write\",\n]);\nexport const UsageAudienceEnum = z.enum([\n \"internal\", \"third_party_b2b\", \"public_consumer\",\n]);\nexport const JurisdictionEnum = z.enum([\n \"eu\", \"uk\", \"us\", \"ca\", \"ch\", \"br\", \"jp\", \"other\",\n]);\n\nexport const AiActTriggerEnum = z.enum([\n \"biometric_identity\",\n \"critical_infrastructure\",\n \"educational_assessment\",\n \"employment_recruitment\",\n \"credit_scoring\",\n \"law_enforcement\",\n \"migration_asylum\",\n \"justice_democracy\",\n \"none\",\n]);\n\nexport const ProcessingPurposeEnum = z.enum([\n \"hr\", \"marketing\", \"core_financial\", \"tech_support\", \"healthcare\",\n \"education\", \"public_service\", \"compliance_monitoring\", \"other\",\n]);\n\n/* -------------------- Input schema (10 qualified fields + hints) -------------------- */\n\nexport const ClassifyAgentInputSchema = z.object({\n name: z.string().min(2).max(200),\n description: z.string().min(20).max(1000),\n decisions_taken: z.array(z.string()).min(1).max(20),\n\n human_approval_required: HumanApprovalEnum,\n personal_data_level: PersonalDataEnum,\n financial_exposure: FinancialExposureEnum,\n external_actions: ExternalActionsEnum,\n\n gpai_used: z.boolean(),\n usage_audience: UsageAudienceEnum,\n sector: z.string().max(80).optional(),\n jurisdiction: z.array(JurisdictionEnum).optional(),\n\n ai_act_triggers: z.array(AiActTriggerEnum).optional(),\n processing_purposes: z.array(ProcessingPurposeEnum).optional(),\n\n locale: AcfLocaleSchema.optional(),\n});\nexport type ClassifyAgentInput = z.infer<typeof ClassifyAgentInputSchema>;\n\n/* -------------------- Extractors -------------------- */\n\nexport function extractFlags(input: ClassifyAgentInput): string[] {\n return [\n `human_approval_required:${input.human_approval_required}`,\n `personal_data_level:${input.personal_data_level}`,\n `financial_exposure:${input.financial_exposure}`,\n `external_actions:${input.external_actions}`,\n `usage_audience:${input.usage_audience}`,\n `gpai_used:${input.gpai_used}`,\n ];\n}\n\nexport function extractEnumHints(\n input: ClassifyAgentInput,\n): Record<string, string[]> {\n const hints: Record<string, string[]> = {};\n if (input.ai_act_triggers) hints[\"ai_act_triggers\"] = input.ai_act_triggers;\n if (input.processing_purposes)\n hints[\"processing_purposes\"] = input.processing_purposes;\n hints[\"usage_audience\"] = [input.usage_audience];\n hints[\"personal_data_level\"] = [input.personal_data_level];\n hints[\"gpai_used\"] = [String(input.gpai_used)];\n return hints;\n}\n","import { AcfLevel, AutonomyInferenceSchema } from \"./rule-types\";\nimport { z } from \"zod\";\n\ntype Rules = z.infer<typeof AutonomyInferenceSchema>;\n\nexport interface AutonomyInferInput {\n human_approval_required: string;\n external_actions: string;\n}\n\nexport function inferAutonomy(\n rules: Rules,\n input: AutonomyInferInput,\n): { level: AcfLevel; rationale: string; rule_id: string } {\n for (const t of rules.thresholds) {\n const happroved = t.conditions[\"human_approval_required\"] ?? [];\n const ext = t.conditions[\"external_actions\"] ?? [];\n if (\n happroved.includes(input.human_approval_required) &&\n ext.includes(input.external_actions)\n ) {\n return {\n level: t.level,\n rationale: t.rationale_template,\n rule_id: `autonomy-inference.${t.level}`,\n };\n }\n }\n return {\n level: \"N1\",\n rationale:\n \"No clear autonomy threshold matched the declared inputs; defaulting to N1 (supervised). Confirm with the team.\",\n rule_id: \"autonomy-inference.default-N1\",\n };\n}\n","import { Criticality, CriticalityMatrixSchema } from \"./rule-types\";\nimport { z } from \"zod\";\n\ntype Matrix = z.infer<typeof CriticalityMatrixSchema>;\n\nexport interface CriticalityInferInput {\n personal_data_level: \"none\" | \"standard\" | \"sensitive_special\";\n financial_exposure:\n | \"none\" | \"low_operation\" | \"medium_contract\" | \"high_corporate\";\n}\n\nexport function inferCriticality(\n matrix: Matrix,\n input: CriticalityInferInput,\n): {\n score: Criticality;\n rationale: string;\n matrix_ref: string;\n rule_id: string;\n} {\n for (const cell of matrix.cells) {\n if (\n cell.personal_data_level === input.personal_data_level &&\n cell.financial_exposure === input.financial_exposure\n ) {\n return {\n score: cell.score,\n rationale: cell.rationale_template,\n matrix_ref: `cell(${cell.personal_data_level}, ${cell.financial_exposure})`,\n rule_id: `criticality-matrix.${cell.personal_data_level}-${cell.financial_exposure}`,\n };\n }\n }\n return {\n score: \"medium\",\n rationale:\n \"Combination of personal_data_level + financial_exposure not yet calibrated; defaulting to medium for safety.\",\n matrix_ref: \"default-medium\",\n rule_id: \"criticality-matrix.default-medium\",\n };\n}\n","export interface NegationAwareHit {\n pattern: string;\n index: number;\n negated: boolean;\n}\n\nexport interface NegationAwareResult {\n matched: boolean;\n hits: NegationAwareHit[];\n}\n\n/**\n * Simple negation-aware matcher (V1.0). Per spec §5.7:\n * - Regex find each pattern in `text` (case-insensitive)\n * - For each hit, look backward 40 chars for a negation token in FR or EN\n * - Mark the hit as negated if a negation precedes within that window\n * - The overall `matched` flag is true iff at least one non-negated hit exists\n *\n * Trade-off: this is a \"good enough\" baseline. False positives are mitigated by\n * (a) presence of optional enums (ai_act_triggers / processing_purposes) which\n * take precedence when provided, (b) confidence flagged accordingly, and (c)\n * requires_human_review: true on every REASON output.\n */\nconst NEGATION_TOKENS = [\n // FR\n \"n'a pas\", \"n'est pas\", \"ne pas\", \"ne sont pas\", \"n'analyse pas\",\n \"pas de\", \"aucun\", \"aucune\", \"jamais\", \"n'... jamais\", \"ne... jamais\",\n // EN\n \"not \", \"no \", \"never\", \"without\", \"absent\",\n];\n\nconst NEGATION_WINDOW = 40;\n\nconst NEGATION_REGEX = new RegExp(\n `(${NEGATION_TOKENS\n .map((t) => t.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"))\n .join(\"|\")})`,\n \"i\",\n);\n\nexport function negationAwareMatch(\n text: string,\n patterns: string[],\n): NegationAwareResult {\n const lower = text.toLowerCase();\n const hits: NegationAwareHit[] = [];\n\n for (const pattern of patterns) {\n const p = pattern.toLowerCase();\n let from = 0;\n while (from <= lower.length) {\n const i = lower.indexOf(p, from);\n if (i === -1) break;\n const windowStart = Math.max(0, i - NEGATION_WINDOW);\n const before = lower.slice(windowStart, i);\n const negated = NEGATION_REGEX.test(before);\n hits.push({ pattern, index: i, negated });\n from = i + p.length;\n }\n }\n\n return {\n matched: hits.some((h) => !h.negated),\n hits,\n };\n}\n","import { Trigger } from \"./rule-types\";\nimport { negationAwareMatch } from \"./negation-aware\";\n\nexport interface TriggerInput {\n text: string;\n enums: Record<string, string[]>;\n flags: string[];\n}\n\nexport interface TriggerResult {\n fired: boolean;\n evidence: string[];\n}\n\nexport function evaluateTrigger(\n trigger: Trigger,\n input: TriggerInput,\n): TriggerResult {\n const evidence: string[] = [];\n let fired = false;\n\n /* Keyword patterns */\n if (trigger.keyword_patterns && trigger.keyword_patterns.length > 0) {\n const r = negationAwareMatch(input.text, trigger.keyword_patterns);\n if (r.matched) {\n fired = true;\n for (const h of r.hits) {\n if (!h.negated) evidence.push(`keyword:${h.pattern}`);\n }\n }\n }\n\n /* Enum match */\n if (trigger.enum_match) {\n for (const [enumKey, allowed] of Object.entries(trigger.enum_match)) {\n const provided = input.enums[enumKey] ?? [];\n for (const v of provided) {\n if (allowed.includes(v)) {\n fired = true;\n evidence.push(`enum:${enumKey}=${v}`);\n }\n }\n }\n }\n\n /* Structured flags */\n if (trigger.structured_flags) {\n for (const flag of trigger.structured_flags) {\n if (input.flags.includes(flag)) {\n fired = true;\n evidence.push(`flag:${flag}`);\n }\n }\n }\n\n return { fired, evidence };\n}\n","import { z } from \"zod\";\nimport {\n AiActAnnexIIISchema, AiActAnnexISchema, GpaiTriggersSchema,\n} from \"./rule-types\";\nimport { evaluateTrigger, TriggerInput } from \"./trigger-eval\";\n\ntype AnnexIII = z.infer<typeof AiActAnnexIIISchema>;\ntype AnnexI = z.infer<typeof AiActAnnexISchema>;\ntype Gpai = z.infer<typeof GpaiTriggersSchema>;\n\nexport interface ObligationItem {\n article: string;\n requirement: string;\n applicable_date: string;\n}\n\nexport interface ObligationsInferOut {\n firedCategories: {\n id: string;\n title: string;\n obligations: string[];\n fiches: string[];\n confidence_base: \"low\" | \"medium\" | \"high\";\n evidence: string[];\n source: \"annex-iii\" | \"annex-i\";\n }[];\n gpaiObligations: ObligationItem[];\n rationale_per_rule: {\n rule_id: string;\n rule_version: string;\n fired: boolean;\n evidence: string;\n }[];\n}\n\nexport interface InferRulesBundle {\n annexIII: AnnexIII;\n annexI: AnnexI;\n gpai: Gpai;\n}\n\nexport function inferAiActObligations(\n bundle: InferRulesBundle,\n input: TriggerInput,\n): ObligationsInferOut {\n const out: ObligationsInferOut = {\n firedCategories: [],\n gpaiObligations: [],\n rationale_per_rule: [],\n };\n\n /* Annex III */\n for (const cat of bundle.annexIII.categories) {\n const r = evaluateTrigger(cat.triggers, input);\n out.rationale_per_rule.push({\n rule_id: `ai-act-annex-iii.${cat.id}`,\n rule_version: bundle.annexIII.version,\n fired: r.fired,\n evidence: r.evidence.join(\"; \"),\n });\n if (r.fired) {\n out.firedCategories.push({\n id: cat.id,\n title: cat.title,\n obligations: cat.obligations,\n fiches: cat.fiches,\n confidence_base: cat.confidence_base,\n evidence: r.evidence,\n source: \"annex-iii\",\n });\n }\n }\n\n /* Annex I */\n for (const cat of bundle.annexI.categories) {\n const r = evaluateTrigger(cat.triggers, input);\n out.rationale_per_rule.push({\n rule_id: `ai-act-annex-i.${cat.id}`,\n rule_version: bundle.annexI.version,\n fired: r.fired,\n evidence: r.evidence.join(\"; \"),\n });\n if (r.fired) {\n out.firedCategories.push({\n id: cat.id,\n title: cat.title,\n obligations: cat.obligations,\n fiches: cat.fiches,\n confidence_base: cat.confidence_base,\n evidence: r.evidence,\n source: \"annex-i\",\n });\n }\n }\n\n /* GPAI */\n const gpaiR = evaluateTrigger(bundle.gpai.triggers, input);\n out.rationale_per_rule.push({\n rule_id: \"gpai-triggers\",\n rule_version: bundle.gpai.version,\n fired: gpaiR.fired,\n evidence: gpaiR.evidence.join(\"; \"),\n });\n if (gpaiR.fired) {\n out.gpaiObligations = bundle.gpai.obligations\n .filter((o) => !o.systemic_risk_only)\n .map((o) => ({\n article: o.article,\n requirement: o.requirement,\n applicable_date: o.applicable_date,\n }));\n }\n\n return out;\n}\n","import { z } from \"zod\";\nimport {\n AiActRolesSchema, GdprQualificationSchema,\n Confidence,\n} from \"./rule-types\";\nimport { evaluateTrigger, TriggerInput } from \"./trigger-eval\";\n\ntype AiActRoles = z.infer<typeof AiActRolesSchema>;\ntype GdprRules = z.infer<typeof GdprQualificationSchema>;\n\nexport interface RoleInferOut {\n role: string;\n confidence: Confidence;\n rationale: string;\n rule_id: string;\n evidence: string[];\n}\n\nexport function inferAiActRole(\n rules: AiActRoles,\n input: TriggerInput,\n): RoleInferOut {\n for (const r of rules.rules) {\n const fired = evaluateTrigger(r.triggers, input);\n if (fired.fired) {\n return {\n role: r.role,\n confidence: r.confidence_base,\n rationale: r.rationale_template,\n rule_id: `ai-act-roles.${r.id}`,\n evidence: fired.evidence,\n };\n }\n }\n return {\n role: \"not_applicable\",\n confidence: \"low\",\n rationale:\n \"No AI Act role rule fired with the declared inputs. Defaulting to not_applicable — confirm manually.\",\n rule_id: \"ai-act-roles.default-na\",\n evidence: [],\n };\n}\n\nexport function inferGdprRole(\n rules: GdprRules,\n input: TriggerInput,\n): RoleInferOut {\n for (const c of rules.cases) {\n const fired = evaluateTrigger(c.triggers, input);\n if (fired.fired) {\n return {\n role: c.role,\n confidence: c.confidence_base,\n rationale: c.rationale_template,\n rule_id: `gdpr-qualification.${c.id}`,\n evidence: fired.evidence,\n };\n }\n }\n return {\n role: \"not_applicable\",\n confidence: \"low\",\n rationale:\n \"No GDPR qualification rule fired; defaulting to not_applicable — confirm manually whether any PII transits the agent.\",\n rule_id: \"gdpr-qualification.default-na\",\n evidence: [],\n };\n}\n","import { z } from \"zod\";\nimport { SignOffMatrixSchema } from \"./rule-types\";\n\ntype Matrix = z.infer<typeof SignOffMatrixSchema>;\n\nexport interface SignOffInput {\n criticality: \"low\" | \"medium\" | \"high\" | \"critical\";\n personal_data_level: \"none\" | \"standard\" | \"sensitive_special\";\n financial_exposure:\n | \"none\" | \"low_operation\" | \"medium_contract\" | \"high_corporate\";\n}\n\nexport interface SignOffOut {\n required: {\n security: boolean;\n privacy: boolean;\n compliance: boolean;\n legal: boolean;\n business_sponsor: boolean;\n board: boolean;\n };\n rule_id: string;\n}\n\nconst DEFAULT: SignOffOut[\"required\"] = {\n security: false,\n privacy: false,\n compliance: false,\n legal: false,\n business_sponsor: true,\n board: false,\n};\n\nexport function inferSignOff(matrix: Matrix, input: SignOffInput): SignOffOut {\n // Pick the first rule that matches exactly (criticality + PII + financial)\n for (const rule of matrix.rules) {\n if (\n rule.criticality === input.criticality &&\n rule.personal_data_level === input.personal_data_level &&\n rule.financial_exposure === input.financial_exposure\n ) {\n return {\n required: rule.required,\n rule_id: `sign-off-matrix.${rule.criticality}-${rule.personal_data_level}-${rule.financial_exposure}`,\n };\n }\n }\n // Fallback: pick the closest by criticality (escalate on PII/financial unknown)\n for (const rule of matrix.rules) {\n if (rule.criticality === input.criticality) {\n return {\n required: rule.required,\n rule_id: `sign-off-matrix.${rule.criticality}-fallback`,\n };\n }\n }\n return { required: DEFAULT, rule_id: \"sign-off-matrix.default\" };\n}\n","import { z } from \"zod\";\nimport { DdaoControlsMappingSchema } from \"./rule-types\";\n\ntype Mapping = z.infer<typeof DdaoControlsMappingSchema>;\ntype LevelKey = \"N0\" | \"N1\" | \"N2\" | \"N3\";\ntype RiskKey = \"low\" | \"medium\" | \"high\" | \"critical\";\n\nconst LEVEL_ORDER: LevelKey[] = [\"N0\", \"N1\", \"N2\", \"N3\"];\nconst RISK_ORDER: RiskKey[] = [\"low\", \"medium\", \"high\", \"critical\"];\n\nfunction clampNext<T extends string>(\n order: T[], value: T, delta: -1 | 1,\n): T {\n const i = order.indexOf(value);\n const j = Math.min(order.length - 1, Math.max(0, i + delta));\n return order[j]!;\n}\n\nexport interface ControlsInput {\n level: LevelKey;\n risk: RiskKey;\n}\n\nexport function inferDdaoControls(mapping: Mapping, input: ControlsInput) {\n const candidates = [\n { level: input.level, risk: input.risk },\n { level: input.level, risk: clampNext(RISK_ORDER, input.risk, +1) },\n { level: clampNext(LEVEL_ORDER, input.level, +1), risk: input.risk },\n { level: input.level, risk: clampNext(RISK_ORDER, input.risk, -1) },\n { level: clampNext(LEVEL_ORDER, input.level, -1), risk: input.risk },\n ];\n\n for (const c of candidates) {\n const found = mapping.mappings.find(\n (m) => m.level === c.level && m.risk === c.risk,\n );\n if (found) {\n return {\n recommended_controls: found.recommended_controls,\n ddao_controls: found.ddao_controls,\n rule_id: `ddao-controls-mapping.${c.level}-${c.risk}`,\n };\n }\n }\n return {\n recommended_controls: [],\n ddao_controls: [],\n rule_id: \"ddao-controls-mapping.fallback-empty\",\n };\n}\n","import { Confidence } from \"./rule-types\";\n\nexport interface ConfidenceInputs {\n ruleBaseConfidence: Confidence;\n enumProvided: boolean;\n contextFieldsProvided: number; // sector, jurisdiction, gpai_used…\n contradictions: number;\n}\n\nconst ORDER: Confidence[] = [\"low\", \"medium\", \"high\"];\n\nfunction step(c: Confidence, delta: number): Confidence {\n const i = ORDER.indexOf(c);\n const j = Math.min(ORDER.length - 1, Math.max(0, i + delta));\n return ORDER[j]!;\n}\n\nexport function aggregateConfidence(input: ConfidenceInputs): Confidence {\n let current = input.ruleBaseConfidence;\n\n if (input.enumProvided) current = step(current, +0);\n else current = step(current, -1);\n\n if (input.contextFieldsProvided >= 3) current = step(current, +0);\n else if (input.contextFieldsProvided === 0) current = step(current, -1);\n\n if (input.contradictions === 1) current = step(current, -1);\n else if (input.contradictions >= 2) current = step(current, -2);\n\n return current;\n}\n","/**\n * Canonical disclaimer attached to every REASON tool output.\n *\n * MODIFYING THIS STRING REQUIRES:\n * 1. an explicit PR with rationale,\n * 2. updating the snapshot in tests/constants/disclaimer.test.ts,\n * 3. updating the 6 REASON-tool snapshot tests simultaneously,\n * 4. a changelog entry.\n *\n * The CI snapshot check blocks unilateral changes. Cf. spec §11.1.\n */\nexport const ACF_REASON_DISCLAIMER =\n \"Preliminary qualification produced by the ACF® deterministic engine. \" +\n \"Not legal advice. Human review required. \" +\n \"Do not use for autonomous regulatory decision-making. \" +\n \"See doctrine_archive_url for the version of the doctrine used.\";\n","import { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\n/**\n * Regulatory snapshot — names every corpus the engine reasoned against,\n * with the date of the snapshot. Bumped any time a regulation evolves.\n */\nexport const REGULATORY_SNAPSHOT =\n \"EU AI Act (Reg. 2024/1689, incl. Digital Omnibus deferral) + GDPR (Reg. 2016/679) \" +\n \"+ DORA (Reg. 2022/2554) + NIS2 (Dir. 2022/2555) + ISO 42001:2023 — as of 2026-06-07\";\n\nexport interface DoctrineFooterInput {\n frameworkVersion: string;\n rulesVersion: string;\n contentHash: string;\n archiveUrl: string;\n}\n\nexport interface DoctrineFooter {\n doctrine_version: string;\n doctrine_hash: string;\n doctrine_archive_url: string;\n regulatory_snapshot: string;\n generated_at: string;\n requires_human_review: true;\n disclaimer: string;\n}\n\nexport function buildDoctrineFooter(\n input: DoctrineFooterInput,\n): DoctrineFooter {\n return {\n doctrine_version: `ACF framework v${input.frameworkVersion} / rules ${input.rulesVersion}`,\n doctrine_hash: input.contentHash,\n doctrine_archive_url: input.archiveUrl,\n regulatory_snapshot: REGULATORY_SNAPSHOT,\n generated_at: new Date().toISOString(),\n requires_human_review: true,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport {\n ClassifyAgentInputSchema, extractFlags, extractEnumHints,\n} from \"./classify-agent-input\";\nimport { inferAutonomy } from \"./infer-autonomy\";\nimport { inferCriticality } from \"./infer-criticality\";\nimport { inferAiActObligations } from \"./infer-obligations\";\nimport { inferAiActRole, inferGdprRole } from \"./infer-roles\";\nimport { inferSignOff } from \"./infer-sign-off\";\nimport { inferDdaoControls } from \"./infer-controls\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const CLASSIFY_AGENT_CONVERSION_CTA =\n \"Generate the full auditable PDF report on https://acfstandard.com/compliance?ref=mcp\";\n\nexport interface ClassifyAgentOutput {\n acf_level: { level: \"N0\" | \"N1\" | \"N2\" | \"N3\"; rationale: string };\n criticality: {\n score: \"low\" | \"medium\" | \"high\" | \"critical\";\n rationale: string;\n matrix_ref: string;\n };\n regulatory_qualifications: {\n likely_ai_act_role: string;\n likely_gdpr_status: string;\n };\n regulatory_qualifications_confidence: {\n likely_ai_act_role: \"low\" | \"medium\" | \"high\";\n likely_gdpr_status: \"low\" | \"medium\" | \"high\";\n };\n ai_act_obligations: {\n pre_go_live: { article: string; requirement: string; applicable_date: string }[];\n continuous: { article: string; requirement: string; applicable_date: string }[];\n on_incident: { article: string; requirement: string; applicable_date: string }[];\n };\n applicable_fiches: { code: string; why: string }[];\n recommended_controls: string[];\n ddao_controls: string[];\n ddao_escalation: { required: boolean; trigger_thresholds: string[] };\n sign_off_required: {\n security: boolean; privacy: boolean; compliance: boolean;\n legal: boolean; business_sponsor: boolean; board: boolean;\n };\n\n /* footer + traceability */\n confidence: \"low\" | \"medium\" | \"high\";\n assumptions: string[];\n gaps_to_validate: string[];\n requires_human_review: true;\n rationale_per_rule: {\n rule_id: string; rule_version: string; fired: boolean; evidence: string;\n }[];\n doctrine_version: string;\n doctrine_hash: string;\n doctrine_archive_url: string;\n regulatory_snapshot: string;\n generated_at: string;\n conversion_cta: string;\n disclaimer: string;\n}\n\nconst PRE_GO_LIVE_ARTICLES = new Set([\n \"art-9\", \"art-10\", \"art-11\", \"art-13\", \"art-43\", \"art-50\",\n]);\nconst ON_INCIDENT_ARTICLES = new Set([\n \"art-15\", \"art-72\", \"art-79\",\n]);\n\nexport async function handleClassifyAgentTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<ClassifyAgentOutput> {\n const input = ClassifyAgentInputSchema.parse(rawInput);\n\n /* Load rules */\n const [\n autonomyRules,\n criticalityRules,\n annexIII,\n annexI,\n gpai,\n aiActRoles,\n gdprRules,\n signOffMatrix,\n controlsMapping,\n rulesMeta,\n ] = await Promise.all([\n registry.rules.loadAutonomyInference(),\n registry.rules.loadCriticalityMatrix(),\n registry.rules.loadAiActAnnexIII(),\n registry.rules.loadAiActAnnexI(),\n registry.rules.loadGpaiTriggers(),\n registry.rules.loadAiActRoles(),\n registry.rules.loadGdprQualification(),\n registry.rules.loadSignOffMatrix(),\n registry.rules.loadDdaoControlsMapping(),\n registry.rules.loadRulesMeta(),\n ]);\n\n /* Extractors */\n const flags = extractFlags(input);\n const enums = extractEnumHints(input);\n const triggerInput = { text: input.description, enums, flags };\n\n /* Autonomy + criticality */\n const autonomy = inferAutonomy(autonomyRules, input);\n const criticality = inferCriticality(criticalityRules, input);\n\n /* AI Act obligations */\n const obligationsOut = inferAiActObligations(\n { annexIII, annexI, gpai },\n triggerInput,\n );\n\n /* AI Act role + GDPR */\n const aiActRole = inferAiActRole(aiActRoles, triggerInput);\n const gdprRole = inferGdprRole(gdprRules, triggerInput);\n\n /* Sign-off + controls */\n const signOff = inferSignOff(signOffMatrix, {\n criticality: criticality.score,\n personal_data_level: input.personal_data_level,\n financial_exposure: input.financial_exposure,\n });\n const controls = inferDdaoControls(controlsMapping, {\n level: autonomy.level,\n risk: criticality.score,\n });\n\n /* Confidence + assumptions */\n const enumProvided =\n (input.ai_act_triggers?.length ?? 0) > 0 ||\n (input.processing_purposes?.length ?? 0) > 0;\n const contextFieldsProvided =\n (input.sector ? 1 : 0) + (input.jurisdiction?.length ? 1 : 0) +\n (input.gpai_used !== undefined ? 1 : 0) + 1; /* usage_audience always there */\n\n const contradictions = computeContradictions(input, obligationsOut);\n const confidence = aggregateConfidence({\n ruleBaseConfidence: averageConfidence(obligationsOut.firedCategories.map((c) => c.confidence_base)),\n enumProvided,\n contextFieldsProvided,\n contradictions,\n });\n\n const assumptions: string[] = [];\n const gaps: string[] = [];\n if (!input.sector) {\n assumptions.push(\"sector not provided; the criticality calibration uses the neutral default.\");\n gaps.push(\"confirm sector — banking/health/critical-infra modifiers may shift criticality.\");\n }\n if (!input.jurisdiction || input.jurisdiction.length === 0) {\n assumptions.push(\"jurisdiction not provided; AI Act + GDPR reasoning assumes EU.\");\n gaps.push(\"confirm jurisdiction(s) — non-EU jurisdictions may require entirely different qualifications.\");\n }\n if (!enumProvided) {\n assumptions.push(\"ai_act_triggers and processing_purposes inferred from description (free-text matching).\");\n gaps.push(\"validate inferred AI Act triggers with a human reviewer before relying on the qualification.\");\n }\n\n /* Fiches */\n const fiches = collectFiches(autonomy.level, criticality.score, obligationsOut.firedCategories);\n\n /* Footer */\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n /* Rationale per rule — combine obligations + role + sign-off + controls */\n const rationale = [\n ...obligationsOut.rationale_per_rule,\n {\n rule_id: aiActRole.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: aiActRole.role !== \"not_applicable\",\n evidence: aiActRole.evidence.join(\"; \"),\n },\n {\n rule_id: gdprRole.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: gdprRole.role !== \"not_applicable\",\n evidence: gdprRole.evidence.join(\"; \"),\n },\n {\n rule_id: signOff.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `criticality=${criticality.score}, pii=${input.personal_data_level}, fin=${input.financial_exposure}`,\n },\n {\n rule_id: controls.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: controls.recommended_controls.length > 0,\n evidence: `level=${autonomy.level}, risk=${criticality.score}`,\n },\n {\n rule_id: autonomy.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `human_approval=${input.human_approval_required}, ext=${input.external_actions}`,\n },\n {\n rule_id: criticality.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `pii=${input.personal_data_level}, fin=${input.financial_exposure}`,\n },\n ];\n\n return {\n acf_level: { level: autonomy.level, rationale: autonomy.rationale },\n criticality: {\n score: criticality.score,\n rationale: criticality.rationale,\n matrix_ref: criticality.matrix_ref,\n },\n regulatory_qualifications: {\n likely_ai_act_role: aiActRole.role,\n likely_gdpr_status: gdprRole.role,\n },\n regulatory_qualifications_confidence: {\n likely_ai_act_role: aiActRole.confidence,\n likely_gdpr_status: gdprRole.confidence,\n },\n ai_act_obligations: groupObligationsByPhase(obligationsOut, gpai.obligations),\n applicable_fiches: fiches,\n recommended_controls: controls.recommended_controls.map((c) => c.title),\n ddao_controls: controls.ddao_controls.map((c) => `${c.control_id} (${c.control_type}, ${c.fiche_reference}): ${c.implementation_note}`),\n ddao_escalation: {\n required: criticality.score === \"high\" || criticality.score === \"critical\",\n trigger_thresholds: deriveEscalationThresholds(autonomy.level, criticality.score),\n },\n sign_off_required: signOff.required,\n confidence,\n assumptions,\n gaps_to_validate: gaps,\n requires_human_review: true,\n rationale_per_rule: rationale,\n ...footer,\n conversion_cta: CLASSIFY_AGENT_CONVERSION_CTA,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n\n/* -------------------- helpers -------------------- */\n\nfunction averageConfidence(\n confs: (\"low\" | \"medium\" | \"high\")[],\n): \"low\" | \"medium\" | \"high\" {\n if (confs.length === 0) return \"medium\";\n const score = confs.reduce((acc, c) => acc + (c === \"low\" ? 0 : c === \"medium\" ? 1 : 2), 0) / confs.length;\n return score < 0.66 ? \"low\" : score < 1.34 ? \"medium\" : \"high\";\n}\n\nfunction computeContradictions(\n input: z.infer<typeof ClassifyAgentInputSchema>,\n obligations: ReturnType<typeof inferAiActObligations>,\n): number {\n let n = 0;\n if (\n (input.ai_act_triggers?.includes(\"none\") ?? false) &&\n obligations.firedCategories.length > 0\n ) {\n n += 1;\n }\n return n;\n}\n\nfunction groupObligationsByPhase(\n obligationsOut: ReturnType<typeof inferAiActObligations>,\n gpaiAll: { article: string; requirement: string; applicable_date: string; systemic_risk_only?: boolean }[],\n): ClassifyAgentOutput[\"ai_act_obligations\"] {\n const pre: ClassifyAgentOutput[\"ai_act_obligations\"][\"pre_go_live\"] = [];\n const continuous: ClassifyAgentOutput[\"ai_act_obligations\"][\"continuous\"] = [];\n const incident: ClassifyAgentOutput[\"ai_act_obligations\"][\"on_incident\"] = [];\n\n const flatObligations = new Set<string>();\n for (const cat of obligationsOut.firedCategories) {\n for (const o of cat.obligations) flatObligations.add(o);\n }\n\n for (const article of flatObligations) {\n const item = {\n article,\n requirement: ARTICLE_REQUIREMENT_BY_ID[article] ?? `See AI Act ${article}`,\n applicable_date: \"2027-12-02\",\n };\n if (PRE_GO_LIVE_ARTICLES.has(article)) pre.push(item);\n else if (ON_INCIDENT_ARTICLES.has(article)) incident.push(item);\n else continuous.push(item);\n }\n\n for (const o of obligationsOut.gpaiObligations) {\n if (PRE_GO_LIVE_ARTICLES.has(o.article)) pre.push(o);\n else continuous.push(o);\n }\n\n return { pre_go_live: pre, continuous, on_incident: incident };\n}\n\nconst ARTICLE_REQUIREMENT_BY_ID: Record<string, string> = {\n \"art-5\": \"Prohibited practices screening.\",\n \"art-9\": \"Establish, implement and document a risk management system.\",\n \"art-10\": \"Data governance, training/validation/testing data sets quality.\",\n \"art-11\": \"Technical documentation.\",\n \"art-12\": \"Record-keeping / automated logging.\",\n \"art-13\": \"Transparency and provision of information to deployers / users.\",\n \"art-14\": \"Effective human oversight design and operation.\",\n \"art-15\": \"Accuracy, robustness, cybersecurity.\",\n \"art-26\": \"Deployer obligations: instructions, monitoring, fundamental rights impact assessment.\",\n \"art-27\": \"Fundamental rights impact assessment for high-risk AI deployers.\",\n \"art-43\": \"Conformity assessment for Annex I product-safety scope.\",\n \"art-50\": \"Transparency notice when interacting with AI / GPAI.\",\n \"art-72\": \"Post-market monitoring system.\",\n \"art-79\": \"Serious incident reporting to authorities.\",\n \"art-86\": \"Right to explanation of individual decision-making.\",\n};\n\nfunction deriveEscalationThresholds(\n level: \"N0\" | \"N1\" | \"N2\" | \"N3\",\n risk: \"low\" | \"medium\" | \"high\" | \"critical\",\n): string[] {\n const out: string[] = [];\n if (level === \"N0\" || level === \"N1\") {\n out.push(\"Any rejection of human-validated action escalates to DDAO.\");\n }\n if (level === \"N2\") {\n out.push(\"Action above bounded perimeter escalates to DDAO before execution.\");\n out.push(\"Drift > 10% on key metric vs baseline escalates within 24h.\");\n }\n if (level === \"N3\") {\n out.push(\"Any out-of-perimeter action escalates immediately (block + human review).\");\n out.push(\"Drift > 5% on any key metric triggers a kill-switch evaluation.\");\n out.push(\"3 consecutive incidents within 24h auto-suspends the agent.\");\n }\n if (risk === \"critical\") {\n out.push(\"Any incident with regulatory exposure escalates to board + legal within 4h.\");\n }\n return out;\n}\n\nfunction collectFiches(\n level: \"N0\" | \"N1\" | \"N2\" | \"N3\",\n risk: \"low\" | \"medium\" | \"high\" | \"critical\",\n firedCategories: { fiches: string[] }[],\n): { code: string; why: string }[] {\n const fiches = new Map<string, string>();\n // Level-derived\n if (level === \"N2\" || level === \"N3\") {\n fiches.set(\"ACF-12\", \"Formal mandate required for N2+ autonomy.\");\n fiches.set(\"ACF-07\", \"Kill switch required for N2+ autonomy.\");\n fiches.set(\"ACF-05\", \"Decision register required for N2+ autonomy.\");\n }\n if (level === \"N3\") {\n fiches.set(\"ACF-14\", \"Monthly human-takeover drill required for N3.\");\n fiches.set(\"ACF-08\", \"Real-time observability required for N3.\");\n }\n // Risk-derived\n if (risk === \"high\" || risk === \"critical\") {\n fiches.set(\"ACF-02\", \"Criticality matrix grounds the high-risk scoring.\");\n fiches.set(\"ACF-09\", \"Escalation thresholds required for high+criticality.\");\n fiches.set(\"ACF-11\", \"Risk assessment required for high+criticality.\");\n }\n // Regulation-derived\n for (const cat of firedCategories) {\n for (const f of cat.fiches) {\n if (!fiches.has(f)) fiches.set(f, \"Mobilised by an AI Act category that fired on the agent description.\");\n }\n }\n return [...fiches.entries()].map(([code, why]) => ({ code, why }));\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { inferAutonomy } from \"./infer-autonomy\";\nimport { inferCriticality } from \"./infer-criticality\";\nimport { inferAiActObligations } from \"./infer-obligations\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const AdvisorInputSchema = z.object({\n case_description: z.string().min(20).max(2000),\n sector: z.string().max(80).optional(),\n jurisdiction: z.enum([\"eu\",\"uk\",\"us\",\"ca\",\"ch\",\"br\",\"jp\",\"other\"]).optional(),\n deployment_scale: z.enum([\"pilot\",\"department\",\"enterprise\",\"public\"]).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type AdvisorInput = z.infer<typeof AdvisorInputSchema>;\n\nexport const ADVISOR_CONVERSION_CTA =\n \"Continue this assessment with the auditable ACF® Compliance workspace at https://acfstandard.com/compliance?ref=mcp\";\n\nexport async function handleAdvisorTool(registry: AcfRegistry, rawInput: unknown) {\n const input = AdvisorInputSchema.parse(rawInput);\n\n const [autonomyRules, criticalityRules, annexIII, annexI, gpai, rulesMeta] =\n await Promise.all([\n registry.rules.loadAutonomyInference(),\n registry.rules.loadCriticalityMatrix(),\n registry.rules.loadAiActAnnexIII(),\n registry.rules.loadAiActAnnexI(),\n registry.rules.loadGpaiTriggers(),\n registry.rules.loadRulesMeta(),\n ]);\n\n /* Free-text heuristics (lightweight v1) */\n const lower = input.case_description.toLowerCase();\n const inferredApproval = /(human validate|valide|sign-off)/i.test(lower) ? \"always\" :\n /(without approval|sans validation|never validate)/i.test(lower) ? \"never\" : \"sometimes\";\n const inferredExternal = /(automated send|exécute|execute|place order|envoyer)/i.test(lower) ? \"limited_write\" : \"read_only\";\n const inferredPII =\n /(health|sensitive|medical|biometric|santé|biométrique)/i.test(lower) ? \"sensitive_special\" :\n /(customer|client|email|user|utilisateur|name|nom)/i.test(lower) ? \"standard\" : \"none\";\n const inferredFinancial =\n /(eur 50k|10k|million|millions|board exposure)/i.test(lower) ? \"high_corporate\" :\n /(contract|contrat|deal)/i.test(lower) ? \"medium_contract\" :\n /(operating cost|opex|operational)/i.test(lower) ? \"low_operation\" : \"none\";\n\n const autonomy = inferAutonomy(autonomyRules, {\n human_approval_required: inferredApproval,\n external_actions: inferredExternal,\n });\n const criticality = inferCriticality(criticalityRules, {\n personal_data_level: inferredPII,\n financial_exposure: inferredFinancial,\n });\n const obligationsOut = inferAiActObligations(\n { annexIII, annexI, gpai },\n { text: input.case_description, enums: {}, flags: [] },\n );\n\n const principles = collectActivatedPrinciples(autonomy.level, criticality.score, obligationsOut.firedCategories.length > 0);\n const dimensions = collectCriticalDimensions(autonomy.level, criticality.score);\n const fiches = collectPriorityFiches(autonomy.level, criticality.score, obligationsOut.firedCategories);\n const articles = collectApplicableArticles(obligationsOut);\n\n const firstActions = deriveFirstActions(autonomy.level, criticality.score);\n const risks = deriveOperationalRisks(autonomy.level, criticality.score, obligationsOut);\n\n const confidence = aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: false,\n contextFieldsProvided: (input.sector ? 1 : 0) + (input.jurisdiction ? 1 : 0) + (input.deployment_scale ? 1 : 0),\n contradictions: 0,\n });\n\n const assumptions: string[] = [];\n const gaps: string[] = [];\n if (!input.sector) {\n assumptions.push(\"sector not provided; criticality uses neutral default.\");\n gaps.push(\"provide sector to refine the criticality calibration.\");\n }\n if (!input.jurisdiction) {\n assumptions.push(\"jurisdiction not provided; reasoning assumes EU.\");\n gaps.push(\"confirm jurisdiction to keep the regulatory snapshot valid.\");\n }\n assumptions.push(\"human_approval, external_actions and personal_data_level were inferred from the free-text description; pass classify-agent with qualified enums for higher confidence.\");\n gaps.push(\"re-run via acf.classify-agent with structured enums for a more defensible qualification.\");\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n const rationale = [\n ...obligationsOut.rationale_per_rule,\n {\n rule_id: autonomy.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `inferred human_approval=${inferredApproval}, external=${inferredExternal} from description`,\n },\n {\n rule_id: criticality.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `inferred pii=${inferredPII}, financial=${inferredFinancial} from description`,\n },\n ];\n\n return {\n autonomy_level: { level: autonomy.level, rationale: autonomy.rationale },\n risk_level: {\n level: criticality.score === \"critical\" ? \"unacceptable\" : criticality.score === \"high\" ? \"high\" : criticality.score === \"medium\" ? \"medium\" : \"low\",\n rationale: criticality.rationale,\n },\n activated_principles: principles,\n critical_dimensions: dimensions,\n priority_fiches: fiches,\n applicable_articles: articles,\n first_actions: firstActions,\n operational_risks: risks,\n confidence,\n assumptions,\n gaps_to_validate: gaps,\n requires_human_review: true as const,\n rationale_per_rule: rationale,\n ...footer,\n conversion_cta: ADVISOR_CONVERSION_CTA,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n\nfunction collectActivatedPrinciples(level: string, risk: string, regFired: boolean) {\n const out: { code: string; why: string }[] = [\n { code: \"P1\", why: \"Decision sovereignty applies to every agentic deployment, regardless of autonomy.\" },\n ];\n if (level === \"N2\" || level === \"N3\") {\n out.push({ code: \"P3\", why: \"Conditional or autonomous execution requires a documented kill switch.\" });\n }\n if (risk === \"high\" || risk === \"critical\") {\n out.push({ code: \"P2\", why: \"High-criticality decisions must be reconstructible after the fact.\" });\n out.push({ code: \"P4\", why: \"Reinforced governance must match the criticality.\" });\n }\n if (regFired) out.push({ code: \"P2\", why: \"Regulatory exposure makes traceability non-negotiable.\" });\n return dedup(out);\n}\n\nfunction collectCriticalDimensions(level: string, risk: string) {\n const out: { code: string; why: string }[] = [];\n if (level !== \"N0\") out.push({ code: \"D4\", why: \"Role allocation (DDAO + sign-off) is required for N1+ autonomy.\" });\n if (risk === \"high\" || risk === \"critical\") {\n out.push({ code: \"D5\", why: \"Regulatory compliance dimension is on the critical path.\" });\n out.push({ code: \"D3\", why: \"Technical control (kill switch, observability) is non-negotiable.\" });\n }\n out.push({ code: \"D2\", why: \"Doctrine adoption is the entry gate before any agentic deployment.\" });\n return dedup(out);\n}\n\nfunction collectPriorityFiches(level: string, risk: string, firedCategories: { fiches: string[] }[]) {\n const fiches = new Map<string, { order: number; why: string }>();\n let order = 1;\n fiches.set(\"ACF-00\", { order: order++, why: \"Read first: framework introduction.\" });\n if (level === \"N2\" || level === \"N3\") {\n fiches.set(\"ACF-12\", { order: order++, why: \"Mandate is required before go-live.\" });\n fiches.set(\"ACF-07\", { order: order++, why: \"Kill switch is required before go-live.\" });\n }\n if (risk === \"high\" || risk === \"critical\") {\n fiches.set(\"ACF-02\", { order: order++, why: \"Calibrate criticality with the matrix.\" });\n fiches.set(\"ACF-09\", { order: order++, why: \"Define escalation thresholds.\" });\n fiches.set(\"ACF-11\", { order: order++, why: \"Run a formal risk assessment.\" });\n }\n for (const cat of firedCategories) {\n for (const f of cat.fiches) {\n if (!fiches.has(f)) fiches.set(f, { order: order++, why: \"Mobilised by a fired regulatory category.\" });\n }\n }\n return [...fiches.entries()].map(([code, v]) => ({ code, order: v.order, why: v.why }));\n}\n\nfunction collectApplicableArticles(obligations: ReturnType<typeof inferAiActObligations>) {\n const out: { regulation: \"ai-act\"|\"gdpr\"|\"dora\"|\"nis2\"|\"iso-42001\"; article: string; why: string }[] = [];\n const seen = new Set<string>();\n for (const cat of obligations.firedCategories) {\n for (const article of cat.obligations) {\n const key = `ai-act:${article}`;\n if (!seen.has(key)) {\n seen.add(key);\n out.push({ regulation: \"ai-act\", article, why: `Mobilised by category ${cat.title}.` });\n }\n }\n }\n for (const g of obligations.gpaiObligations) {\n const key = `ai-act:${g.article}`;\n if (!seen.has(key)) {\n seen.add(key);\n out.push({ regulation: \"ai-act\", article: g.article, why: \"GPAI obligation.\" });\n }\n }\n return out;\n}\n\nfunction deriveFirstActions(level: string, risk: string): string[] {\n const out: string[] = [\n \"Identify or appoint the DDAO accountable for the agent (cf. ACF-12).\",\n \"Document the agent constitution (decision perimeter, allowed/forbidden actions — cf. ACF-03).\",\n \"Open the decision register and define the retention policy (cf. ACF-05 + ACF-13).\",\n ];\n if (level === \"N2\" || level === \"N3\") {\n out.push(\"Design, implement and test the kill switch (cf. ACF-07).\");\n }\n if (risk === \"high\" || risk === \"critical\") {\n out.push(\"Run the formal risk assessment + DPIA if PII (cf. ACF-11).\");\n }\n return out.slice(0, 5);\n}\n\nfunction deriveOperationalRisks(level: string, risk: string, obligations: ReturnType<typeof inferAiActObligations>): string[] {\n const out: string[] = [];\n if (level === \"N3\") out.push(\"Drift goes undetected if observability is not real-time.\");\n if (risk === \"high\" || risk === \"critical\") {\n out.push(\"Audit chain breaks if the decision register is not immutable.\");\n out.push(\"Sign-off bottleneck if DDAO is not available in escalation SLA.\");\n }\n if (obligations.firedCategories.length > 0) {\n out.push(\"Regulatory exposure escalates if Article 49 register is not maintained in sync with internal register.\");\n }\n return out;\n}\n\nfunction dedup<T extends { code: string }>(arr: T[]): T[] {\n const seen = new Set<string>();\n const out: T[] = [];\n for (const e of arr) {\n if (!seen.has(e.code)) {\n seen.add(e.code);\n out.push(e);\n }\n }\n return out;\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const AssessAutonomyInputSchema = z.object({\n agent_description: z.string().min(10).max(1500),\n intended_actions: z.array(z.string()).min(1).max(20),\n reversibility: z.enum([\"fully\", \"partially\", \"irreversible\"]),\n audit_requirements: z.enum([\"none\", \"internal\", \"regulatory\", \"forensic\"]),\n human_in_loop_cost: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type AssessAutonomyInput = z.infer<typeof AssessAutonomyInputSchema>;\n\nexport async function handleAssessAutonomyTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = AssessAutonomyInputSchema.parse(rawInput);\n const rulesMeta = await registry.rules.loadRulesMeta();\n\n /* Decision tree (simple deterministic baseline). */\n let level: \"N0\" | \"N1\" | \"N2\" | \"N3\" = \"N1\";\n let rationale = \"Default baseline for AI agents with bounded responsibility.\";\n\n if (input.audit_requirements === \"regulatory\" || input.audit_requirements === \"forensic\") {\n level = \"N1\";\n rationale =\n \"Regulatory-audit obligations push the recommended baseline to N1 (supervised) at a minimum. Consider N0 if traceability is uncertain.\";\n }\n\n if (input.reversibility === \"irreversible\" && (input.audit_requirements === \"regulatory\" || input.audit_requirements === \"forensic\")) {\n level = \"N2\";\n rationale =\n \"Irreversible actions combined with regulatory-audit obligations require at minimum N2 (bounded autonomy) with strong human oversight checkpoints.\";\n }\n\n if (input.audit_requirements === \"internal\" && input.reversibility === \"fully\") {\n if (input.intended_actions.every((a) => /search|summari|propose|suggest/i.test(a))) {\n level = \"N0\";\n rationale = \"All intended actions are reversible suggestions or read-only; N0 (assistance) is the right baseline.\";\n }\n }\n\n if (input.reversibility === \"partially\" && input.audit_requirements === \"internal\") {\n level = \"N2\";\n rationale = \"Partial reversibility with internal audit allows bounded N2 execution within a documented mandate.\";\n }\n\n if (input.reversibility !== \"irreversible\" && input.audit_requirements === \"none\" && input.human_in_loop_cost === \"high\") {\n level = \"N3\";\n rationale = \"High human-in-loop cost and reversible actions allow N3 autonomy with strong observability + kill switch.\";\n }\n\n const go_no_go = [\n { criterion: \"Mandate signed by the named DDAO\", status: level === \"N0\" ? \"pass\" : \"conditional\" as const },\n { criterion: \"Kill switch documented and tested\", status: level === \"N0\" ? \"pass\" : \"fail\" as const },\n { criterion: \"Decision register format defined\", status: level === \"N0\" ? \"pass\" : \"conditional\" as const },\n { criterion: \"Escalation thresholds named in numeric terms\", status: level === \"N0\" ? \"pass\" : \"fail\" as const },\n { criterion: \"Sign-off from DPO if PII transits the agent\", status: \"conditional\" as const },\n ];\n\n const gating_thresholds = [\n { condition: \"Any action above bounded perimeter\", escalation: \"Block + DDAO ack before execution\" },\n { condition: \"Drift > 10% on key metric vs baseline\", escalation: \"Auto-suspend within 24h + post-mortem\" },\n { condition: \"3 consecutive incidents in 24h\", escalation: \"Auto-suspend + immediate DDAO review\" },\n ];\n if (level === \"N3\") {\n gating_thresholds.push({\n condition: \"Any out-of-perimeter action\",\n escalation: \"Block + kill switch evaluation within 5 minutes\",\n });\n }\n\n const kill_switch_design = {\n levels: [\"freeze (instant)\", \"redirect (≤5 min)\", \"revoke (≤1 h)\"],\n response_time_s: [5, 300, 3600],\n };\n\n const referenced_fiches = level === \"N0\" ? [\"ACF-00\", \"ACF-05\"] :\n level === \"N1\" ? [\"ACF-05\", \"ACF-09\", \"ACF-12\"] :\n level === \"N2\" ? [\"ACF-07\", \"ACF-09\", \"ACF-12\", \"ACF-05\"] :\n [\"ACF-07\", \"ACF-08\", \"ACF-12\", \"ACF-14\"];\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n return {\n recommended_level: { level, rationale },\n go_no_go_criteria: go_no_go,\n gating_thresholds,\n kill_switch_design,\n referenced_fiches,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: true,\n contextFieldsProvided: input.human_in_loop_cost ? 1 : 0,\n contradictions: 0,\n }),\n assumptions: [\"Inference is deterministic over the 4 supplied dimensions; sector calibration not included.\"],\n gaps_to_validate: [\n \"Confirm whether any intended action handles PII (Article 35 GDPR DPIA may apply).\",\n \"Confirm whether the kill switch has been tested in the last quarter.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: [\n {\n rule_id: \"assess-autonomy.decision-tree\",\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `reversibility=${input.reversibility}, audit=${input.audit_requirements}, hil_cost=${input.human_in_loop_cost ?? \"n/a\"}`,\n },\n ],\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const IdentifyGapsInputSchema = z.object({\n current_inventory: z.object({\n ai_systems_count: z.number().int().min(0),\n high_risk_count: z.number().int().min(0).optional(),\n gpai_used: z.boolean().optional(),\n shadow_ai_known: z.boolean().optional(),\n }),\n current_processes: z.array(\n z.object({\n process: z.string(),\n exists: z.boolean(),\n documented: z.boolean().optional(),\n }),\n ),\n sector: z.string().max(80).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type IdentifyGapsInput = z.infer<typeof IdentifyGapsInputSchema>;\n\nconst REQUIRED_PROCESSES_BY_DIM: Record<string, string[]> = {\n D1: [\"ai_committee\", \"executive_sponsor\"],\n D2: [\"ai_inventory\", \"doctrine_published\"],\n D3: [\"kill_switch_drill\", \"observability\"],\n D4: [\"ddao_appointed\", \"raci\"],\n D5: [\"dpia\", \"article_49_register\", \"ai_act_qualification\"],\n D6: [\"annual_audit\", \"incident_review\"],\n};\n\nexport async function handleIdentifyGapsTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = IdentifyGapsInputSchema.parse(rawInput);\n const rulesMeta = await registry.rules.loadRulesMeta();\n const processMap = new Map<string, { exists: boolean; documented?: boolean }>();\n for (const p of input.current_processes) processMap.set(p.process, p);\n\n const dims: Record<string, number> = {};\n const gaps: {\n dimension: string; severity: \"low\" | \"medium\" | \"high\" | \"critical\";\n description: string; remediation: string; fiches: string[];\n estimated_effort_days?: number;\n }[] = [];\n\n for (const [dim, required] of Object.entries(REQUIRED_PROCESSES_BY_DIM)) {\n let score = 100;\n for (const proc of required) {\n const found = processMap.get(proc);\n if (found && !found.exists) {\n // Explicitly declared as not existing\n score -= Math.floor(100 / required.length);\n const severity =\n dim === \"D5\" ? \"critical\" :\n dim === \"D3\" || dim === \"D4\" ? \"high\" :\n \"medium\" as const;\n gaps.push({\n dimension: dim,\n severity,\n description: `Process '${proc}' is missing for ${dim}.`,\n remediation: remediateProcess(proc),\n fiches: ficheFor(proc),\n estimated_effort_days: effortFor(proc),\n });\n } else if (!found) {\n // Not declared at all — treat as unknown (partial penalty)\n score -= Math.floor(50 / required.length);\n } else if (found.documented === false) {\n score -= Math.floor(50 / required.length);\n gaps.push({\n dimension: dim,\n severity: \"medium\",\n description: `Process '${proc}' exists but is undocumented.`,\n remediation: `Document '${proc}' with the relevant ACF® card.`,\n fiches: ficheFor(proc),\n estimated_effort_days: 2,\n });\n }\n }\n dims[dim] = Math.max(0, score);\n }\n\n // Inventory-driven gaps\n if (input.current_inventory.shadow_ai_known) {\n gaps.push({\n dimension: \"D1\",\n severity: \"high\",\n description: \"Shadow AI exists in the organisation.\",\n remediation: \"Run a discovery campaign + classify each shadow agent via acf.classify-agent.\",\n fiches: [\"ACF-01\"],\n estimated_effort_days: 10,\n });\n }\n if (\n input.current_inventory.high_risk_count !== undefined &&\n input.current_inventory.high_risk_count > 0 &&\n !processMap.get(\"dpia\")?.exists\n ) {\n gaps.push({\n dimension: \"D5\",\n severity: \"critical\",\n description: \"High-risk systems present but no DPIA process.\",\n remediation: \"Stand up the DPIA workflow before any new high-risk go-live.\",\n fiches: [\"ACF-11\"],\n estimated_effort_days: 5,\n });\n }\n\n const overall = Math.round(\n Object.values(dims).reduce((acc, v) => acc + v, 0) / Object.keys(dims).length,\n );\n\n const order = [\"critical\", \"high\", \"medium\", \"low\"] as const;\n const priority = [...gaps]\n .sort((a, b) => order.indexOf(a.severity) - order.indexOf(b.severity))\n .map((g) => `${g.dimension}: ${g.description}`);\n\n const quickWins = gaps\n .filter((g) => (g.estimated_effort_days ?? 0) <= 3)\n .map((g) => g.description);\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n return {\n maturity_score: { overall, by_dimension: dims },\n gaps,\n priority_order: priority,\n quick_wins: quickWins,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: false,\n contextFieldsProvided: input.sector ? 1 : 0,\n contradictions: 0,\n }),\n assumptions: [\"Maturity baseline is unweighted across dimensions; sector-specific weights not yet calibrated.\"],\n gaps_to_validate: [\n \"Confirm which gaps were inferred vs explicitly declared by your inventory.\",\n \"Run acf.classify-agent on the high-risk subset to consolidate the qualification.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: [\n {\n rule_id: \"identify-gaps.dimension-checklist\",\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `${input.current_processes.length} processes evaluated`,\n },\n ],\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n\nfunction remediateProcess(p: string): string {\n const map: Record<string, string> = {\n ai_committee: \"Establish a recurring AI committee with executive sponsorship.\",\n executive_sponsor: \"Identify a sponsoring executive at COMEX level.\",\n ai_inventory: \"Stand up the AI inventory using the ACF-01 mapping template.\",\n doctrine_published: \"Publish a doctrine note grounded in ACF® v1.0 to the relevant teams.\",\n kill_switch_drill: \"Run a quarterly kill-switch drill per ACF-14.\",\n observability: \"Wire end-to-end observability on every N2+ agent.\",\n ddao_appointed: \"Appoint a DDAO per N2+ agent with documented mandate.\",\n raci: \"Publish a RACI for agentic decisions including DDAO + DPO + CISO + sponsor.\",\n dpia: \"Stand up the DPIA workflow with ACF-11 as the template.\",\n article_49_register: \"Prepare the Article 49 register for any high-risk system before go-live.\",\n ai_act_qualification: \"Run acf.classify-agent on each system to qualify under the AI Act.\",\n annual_audit: \"Schedule an annual internal audit of agents in production.\",\n incident_review: \"Open a quarterly incident review forum with the AI committee.\",\n };\n return map[p] ?? `Document and implement ${p}.`;\n}\n\nfunction ficheFor(p: string): string[] {\n const map: Record<string, string[]> = {\n ai_inventory: [\"ACF-01\"],\n decision_register: [\"ACF-05\"],\n kill_switch_drill: [\"ACF-07\", \"ACF-14\"],\n ddao_appointed: [\"ACF-12\"],\n dpia: [\"ACF-11\"],\n article_49_register: [\"ACF-05\", \"ACF-11\"],\n observability: [\"ACF-08\"],\n };\n return map[p] ?? [];\n}\n\nfunction effortFor(p: string): number {\n const map: Record<string, number> = {\n ai_committee: 5,\n decision_register: 8,\n kill_switch_drill: 3,\n dpia: 10,\n ai_inventory: 8,\n observability: 15,\n };\n return map[p] ?? 5;\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { inferAiActObligations } from \"./infer-obligations\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const MapObligationsInputSchema = z.object({\n annex: z.enum([\"iii\", \"i\", \"none\"]),\n use_case: z.string().min(10).max(500),\n provider_or_deployer: z.enum([\"provider\", \"deployer\", \"both\"]),\n gpai_used: z.boolean().optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type MapObligationsInput = z.infer<typeof MapObligationsInputSchema>;\n\nconst PRE_GO_LIVE = new Set([\"art-9\", \"art-10\", \"art-11\", \"art-13\", \"art-43\", \"art-50\"]);\nconst ON_INCIDENT = new Set([\"art-15\", \"art-72\", \"art-79\"]);\n\nconst ARTICLE_DETAIL: Record<string, { title: string; requirement: string; deadline: string; operational_actions: string[]; evidence_required: string[]; digital_omnibus_deferred: boolean }> = {\n \"art-9\": { title: \"Risk management system\", requirement: \"Establish, implement, document, maintain a risk management system across the lifecycle.\", deadline: \"2027-12-02\", operational_actions: [\"Stand up risk register\", \"Define risk methodology\", \"Review quarterly\"], evidence_required: [\"Risk register\", \"Methodology doc\"], digital_omnibus_deferred: true },\n \"art-10\": { title: \"Data and data governance\", requirement: \"Training/validation/testing data sets governance + quality requirements.\", deadline: \"2027-12-02\", operational_actions: [\"Document data sources\", \"Run bias evaluation\", \"Document data drift monitoring\"], evidence_required: [\"Data inventory\", \"Bias evaluation report\"], digital_omnibus_deferred: true },\n \"art-11\": { title: \"Technical documentation\", requirement: \"Maintain technical documentation per Annex IV.\", deadline: \"2027-12-02\", operational_actions: [\"Author Annex IV-aligned tech doc\"], evidence_required: [\"Technical documentation\"], digital_omnibus_deferred: true },\n \"art-12\": { title: \"Record-keeping\", requirement: \"Automated logs over the lifecycle of the system.\", deadline: \"2027-12-02\", operational_actions: [\"Wire structured logging\", \"Define retention policy\"], evidence_required: [\"Logs\"], digital_omnibus_deferred: true },\n \"art-13\": { title: \"Transparency to deployers\", requirement: \"Provide instructions for use that allow the deployer to interpret outputs.\", deadline: \"2027-12-02\", operational_actions: [\"Draft instructions for use\", \"Translate to operating languages\"], evidence_required: [\"Instructions for use\"], digital_omnibus_deferred: true },\n \"art-14\": { title: \"Human oversight\", requirement: \"Effective human oversight design + operation.\", deadline: \"2027-12-02\", operational_actions: [\"Design kill switch (ACF-07)\", \"Document escalation thresholds (ACF-09)\"], evidence_required: [\"Kill switch design\", \"Drill reports\"], digital_omnibus_deferred: true },\n \"art-15\": { title: \"Accuracy, robustness, cybersecurity\", requirement: \"Maintain accuracy, robustness, cybersecurity levels appropriate to the use.\", deadline: \"continuous\", operational_actions: [\"Define accuracy KPIs\", \"Run robustness tests\", \"Define cybersecurity controls\"], evidence_required: [\"KPI dashboards\", \"Pen test reports\"], digital_omnibus_deferred: false },\n \"art-26\": { title: \"Deployer obligations\", requirement: \"Instructions, monitoring, fundamental rights impact assessment.\", deadline: \"2027-12-02\", operational_actions: [\"Run fundamental rights IA\", \"Document monitoring plan\"], evidence_required: [\"FRIA report\", \"Monitoring plan\"], digital_omnibus_deferred: true },\n \"art-27\": { title: \"Fundamental rights impact assessment\", requirement: \"Mandatory FRIA for high-risk deployers in some sectors.\", deadline: \"2027-12-02\", operational_actions: [\"Author FRIA\"], evidence_required: [\"FRIA\"], digital_omnibus_deferred: true },\n \"art-43\": { title: \"Conformity assessment\", requirement: \"Conformity assessment procedure for Annex I scope.\", deadline: \"2028-08-02\", operational_actions: [\"Run conformity assessment via notified body\"], evidence_required: [\"CE marking\"], digital_omnibus_deferred: false },\n \"art-50\": { title: \"Transparency on AI/GPAI\", requirement: \"Disclose AI usage to natural persons interacting with the system.\", deadline: \"2026-08-02\", operational_actions: [\"Add disclosure on every user surface\"], evidence_required: [\"Disclosure copy\"], digital_omnibus_deferred: false },\n \"art-72\": { title: \"Post-market monitoring\", requirement: \"Establish a post-market monitoring system.\", deadline: \"continuous\", operational_actions: [\"Define post-market monitoring plan\"], evidence_required: [\"Monitoring reports\"], digital_omnibus_deferred: false },\n \"art-79\": { title: \"Serious incident reporting\", requirement: \"Report serious incidents to authorities within 15 days.\", deadline: \"on-incident\", operational_actions: [\"Define incident classification + reporting playbook\"], evidence_required: [\"Incident reports\"], digital_omnibus_deferred: false },\n \"art-86\": { title: \"Right to explanation\", requirement: \"Affected persons can request an explanation of an individual decision.\", deadline: \"2027-12-02\", operational_actions: [\"Build explanation generation flow\"], evidence_required: [\"Explanation templates\"], digital_omnibus_deferred: true },\n};\n\nexport async function handleMapObligationsTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = MapObligationsInputSchema.parse(rawInput);\n const [annexIII, annexI, gpai, rulesMeta] = await Promise.all([\n registry.rules.loadAiActAnnexIII(),\n registry.rules.loadAiActAnnexI(),\n registry.rules.loadGpaiTriggers(),\n registry.rules.loadRulesMeta(),\n ]);\n\n const obligationsOut = inferAiActObligations(\n { annexIII, annexI, gpai },\n {\n text: input.use_case,\n enums: input.gpai_used ? { gpai_used: [\"true\"] } : {},\n flags: [],\n },\n );\n\n const articles = new Set<string>();\n for (const cat of obligationsOut.firedCategories) for (const a of cat.obligations) articles.add(a);\n\n // Always add deployer/provider duties\n if (input.provider_or_deployer === \"deployer\" || input.provider_or_deployer === \"both\") {\n articles.add(\"art-26\");\n articles.add(\"art-27\");\n }\n\n // Always add transparency (art-50) — mandatory for all AI interacting with natural persons\n articles.add(\"art-50\");\n\n const pre: any[] = [];\n const continuous: any[] = [];\n const incident: any[] = [];\n\n const ficheFor = (a: string): string[] => {\n for (const cat of obligationsOut.firedCategories) {\n if (cat.obligations.includes(a)) return cat.fiches;\n }\n return [];\n };\n\n for (const a of articles) {\n const detail = ARTICLE_DETAIL[a];\n if (!detail) continue;\n const item = {\n article: a,\n title: detail.title,\n requirement: detail.requirement,\n deadline: detail.deadline,\n fiches: ficheFor(a),\n operational_actions: detail.operational_actions,\n evidence_required: detail.evidence_required,\n digital_omnibus_deferred: detail.digital_omnibus_deferred,\n };\n if (PRE_GO_LIVE.has(a)) pre.push(item);\n else if (ON_INCIDENT.has(a)) incident.push(item);\n else continuous.push(item);\n }\n\n for (const o of obligationsOut.gpaiObligations) {\n const item = {\n article: o.article,\n title: ARTICLE_DETAIL[o.article]?.title ?? \"GPAI obligation\",\n requirement: o.requirement,\n deadline: o.applicable_date,\n fiches: [],\n operational_actions: ARTICLE_DETAIL[o.article]?.operational_actions ?? [],\n evidence_required: ARTICLE_DETAIL[o.article]?.evidence_required ?? [],\n digital_omnibus_deferred: false,\n };\n if (PRE_GO_LIVE.has(o.article)) pre.push(item);\n else continuous.push(item);\n }\n\n const total_count = pre.length + continuous.length + incident.length;\n const critical_path = pre\n .filter((p) => p.digital_omnibus_deferred === false)\n .slice(0, 5)\n .map((p) => `${p.article}: ${p.title}`);\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n return {\n obligations: { pre_go_live: pre, continuous, on_incident: incident },\n total_count,\n critical_path,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: input.annex === \"iii\" || input.annex === \"i\",\n contextFieldsProvided: input.gpai_used !== undefined ? 1 : 0,\n contradictions: input.annex === \"none\" && obligationsOut.firedCategories.length > 0 ? 1 : 0,\n }),\n assumptions: input.annex === \"none\" ? [\"Caller declared no annex but at least one rule fired on the use case description; flagged below.\"] : [],\n gaps_to_validate: [\n \"Confirm provider_or_deployer qualification — it changes the obligation set.\",\n \"Confirm GPAI usage — Article 50 transparency obligation depends on it.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: obligationsOut.rationale_per_rule,\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { inferDdaoControls } from \"./infer-controls\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const AssignControlsInputSchema = z.object({\n agent_description: z.string().min(10).max(500),\n acf_level: z.enum([\"N0\", \"N1\", \"N2\", \"N3\"]),\n risk_level: z.enum([\"low\", \"medium\", \"high\", \"critical\"]),\n budget_constraint: z.enum([\"minimal\", \"standard\", \"comprehensive\"]).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type AssignControlsInput = z.infer<typeof AssignControlsInputSchema>;\n\nconst EFFORT_DAYS_BY_FREQUENCY: Record<string, number> = {\n one_time: 5, monthly: 1, quarterly: 2, annual: 4, on_event: 1,\n};\n\nexport async function handleAssignControlsTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = AssignControlsInputSchema.parse(rawInput);\n const [mapping, rulesMeta] = await Promise.all([\n registry.rules.loadDdaoControlsMapping(),\n registry.rules.loadRulesMeta(),\n ]);\n\n const controls = inferDdaoControls(mapping, {\n level: input.acf_level,\n risk: input.risk_level,\n });\n\n let recommended = controls.recommended_controls;\n if (input.budget_constraint === \"minimal\") recommended = recommended.slice(0, 2);\n if (input.budget_constraint === \"comprehensive\") recommended = [...controls.recommended_controls];\n\n const estimatedEffort = recommended.reduce(\n (acc, c) => acc + (EFFORT_DAYS_BY_FREQUENCY[c.frequency] ?? 1),\n 0,\n );\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n const summary = `Control set scoped to ACF® ${input.acf_level} / risk=${input.risk_level} (${recommended.length} recommended controls, ${controls.ddao_controls.length} ACF-canonical controls).`;\n\n return {\n recommended_controls: recommended,\n ddao_controls: controls.ddao_controls,\n total_count: recommended.length + controls.ddao_controls.length,\n estimated_total_effort_days: estimatedEffort,\n ddao_summary: summary,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: true,\n contextFieldsProvided: input.budget_constraint ? 1 : 0,\n contradictions: 0,\n }),\n assumptions: [\n \"Controls are derived from the canonical level × risk mapping; sector-specific overrides not applied in V1.0.\",\n ],\n gaps_to_validate: [\n \"Confirm DDAO availability for the proposed escalation cadence.\",\n \"Confirm evidence-storage location for each control before go-live.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: [\n {\n rule_id: controls.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `level=${input.acf_level}, risk=${input.risk_level}`,\n },\n ],\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const EvaluateMandateInputSchema = z.object({\n mandate_text: z.string().min(50).max(10000),\n agent_purpose: z.string().min(10).max(500),\n deployment_context: z.string().max(500).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type EvaluateMandateInput = z.infer<typeof EvaluateMandateInputSchema>;\n\ninterface MandateCheck {\n key: string;\n area: string;\n weight: number;\n matchers: RegExp[];\n remediation: string;\n fiche_reference: string;\n}\n\nconst CHECKS: MandateCheck[] = [\n {\n key: \"ddao_appointed\",\n area: \"Identification du DDAO\",\n weight: 15,\n matchers: [/\\bDDAO\\b[^.]*:\\s*\\S{3,}/i, /\\bDelegated Decision Agent Officer\\b[^.]*:\\s*\\S{3,}/i],\n remediation: \"Name an actual DDAO (person or role) — placeholders like 'TBD' are not acceptable.\",\n fiche_reference: \"ACF-12\",\n },\n {\n key: \"decision_perimeter\",\n area: \"Périmètre de décision\",\n weight: 15,\n matchers: [/\\b(decision perimeter|perimeter|périmètre)/i, /\\b(allowed|autorisées?)\\b/i],\n remediation: \"Document the positive (allowed) and negative (forbidden) action lists.\",\n fiche_reference: \"ACF-03\",\n },\n {\n key: \"forbidden_actions\",\n area: \"Actions interdites\",\n weight: 10,\n matchers: [/\\b(forbidden|interdites?|not allowed|never)\\b/i],\n remediation: \"Add an explicit forbidden-actions list — without it, the agent drifts at the first uncovered case.\",\n fiche_reference: \"ACF-03\",\n },\n {\n key: \"escalation_thresholds\",\n area: \"Seuils d'escalade\",\n weight: 15,\n matchers: [/\\b(escalation|escalade)\\b[^.]*\\d/i, /\\bthreshold|seuil/i],\n remediation: \"Specify numeric and qualitative escalation thresholds.\",\n fiche_reference: \"ACF-09\",\n },\n {\n key: \"kill_switch\",\n area: \"Kill switch\",\n weight: 15,\n matchers: [/\\b(kill switch|suspension|revoke|révoquer|drill)\\b/i],\n remediation: \"Document the kill switch (levels, response times, drill frequency).\",\n fiche_reference: \"ACF-07\",\n },\n {\n key: \"audit_log\",\n area: \"Audit log / decision register\",\n weight: 15,\n matchers: [/\\b(audit log|decision register|registre|retention)\\b/i],\n remediation: \"Document the decision register format and retention.\",\n fiche_reference: \"ACF-05\",\n },\n {\n key: \"doctrine_version\",\n area: \"Doctrine version\",\n weight: 10,\n matchers: [/\\bACF®?[^.]*v\\d/i, /\\bdoctrine version\\b/i],\n remediation: \"Cite the ACF® doctrine version applied (e.g. 'ACF® v1.0').\",\n fiche_reference: \"ACF-00\",\n },\n {\n key: \"sign_off\",\n area: \"Sign-off\",\n weight: 5,\n matchers: [/\\b(sign-off|sign off|signature|approuvé)\\b/i],\n remediation: \"List the sign-off roles (DDAO + DPO if PII + CISO if attack surface + Legal if exposure).\",\n fiche_reference: \"ACF-12\",\n },\n];\n\nexport async function handleEvaluateMandateTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = EvaluateMandateInputSchema.parse(rawInput);\n const rulesMeta = await registry.rules.loadRulesMeta();\n\n const strengths: string[] = [];\n const gaps: { area: string; severity: \"low\" | \"medium\" | \"high\" | \"critical\"; description: string }[] = [];\n const additions: { section: string; suggested_text: string; fiche_reference: string }[] = [];\n let score = 0;\n\n for (const check of CHECKS) {\n const matched = check.matchers.every((m) => m.test(input.mandate_text));\n if (matched) {\n score += check.weight;\n strengths.push(`${check.area}: present.`);\n } else {\n gaps.push({\n area: check.area,\n severity: check.weight >= 15 ? \"high\" : check.weight >= 10 ? \"medium\" : \"low\",\n description: `${check.area} missing or insufficient.`,\n });\n additions.push({\n section: check.area,\n suggested_text: check.remediation,\n fiche_reference: check.fiche_reference,\n });\n }\n }\n\n const tbdHits = /\\bTBD\\b|\\bà compléter\\b|\\?\\?\\?/i.test(input.mandate_text);\n if (tbdHits) {\n gaps.push({\n area: \"Placeholders\",\n severity: \"critical\",\n description: \"Mandate contains 'TBD' / placeholders — it is not signable in this state.\",\n });\n score = Math.max(0, score - 20);\n }\n\n let verdict: \"approve\" | \"approve_with_changes\" | \"reject\";\n if (score >= 80) verdict = \"approve\";\n else if (score >= 50) verdict = \"approve_with_changes\";\n else verdict = \"reject\";\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n return {\n verdict,\n rationale: verdict === \"approve\"\n ? \"All canonical mandate sections are present; no critical placeholders detected.\"\n : verdict === \"approve_with_changes\"\n ? \"The mandate covers the core but misses one or more sections. Address the additions below before DDAO sign-off.\"\n : \"The mandate misses too many canonical sections (or contains placeholders) to be signable.\",\n strengths,\n identified_gaps: gaps,\n required_additions: additions,\n reference_fiches: [\"ACF-03\", \"ACF-07\", \"ACF-09\", \"ACF-12\"],\n acf_compliance_score: score,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: false,\n contextFieldsProvided: input.deployment_context ? 1 : 0,\n contradictions: 0,\n }),\n assumptions: [\"Mandate evaluation uses an 8-check canonical baseline — sector-specific extras not yet implemented.\"],\n gaps_to_validate: [\n \"Confirm with the DDAO that the named escalation thresholds reflect real organisational SLAs.\",\n \"Confirm that the kill switch drill has been run in the last quarter.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: CHECKS.map((c) => ({\n rule_id: `evaluate-mandate.${c.key}`,\n rule_version: rulesMeta.rules_version,\n fired: c.matchers.every((m) => m.test(input.mandate_text)),\n evidence: `${c.area} check`,\n })),\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { AcfRegistry } from \"./registry\";\nimport { TOOL_DESCRIPTIONS } from \"../constants/tool-descriptions\";\nimport {\n handleSearchTool, SearchInputSchema,\n handleFicheLookupTool, FicheLookupInputSchema,\n handleRegulationArticleTool, RegulationArticleInputSchema,\n handleGlossaryDefineTool, GlossaryDefineInputSchema,\n handleCiteTool, CiteInputSchema,\n} from \"./tools-read\";\nimport { zodToJsonSchema } from \"../lib/zod-to-json-schema\";\nimport { handleClassifyAgentTool } from \"./tool-classify-agent\";\nimport { ClassifyAgentInputSchema } from \"./classify-agent-input\";\nimport { handleAdvisorTool, AdvisorInputSchema } from \"./tool-advisor\";\nimport { handleAssessAutonomyTool, AssessAutonomyInputSchema } from \"./tool-assess-autonomy\";\nimport { handleIdentifyGapsTool, IdentifyGapsInputSchema } from \"./tool-identify-gaps\";\nimport { handleMapObligationsTool, MapObligationsInputSchema } from \"./tool-map-obligations\";\nimport { handleAssignControlsTool, AssignControlsInputSchema } from \"./tool-assign-controls\";\nimport { handleEvaluateMandateTool, EvaluateMandateInputSchema } from \"./tool-evaluate-mandate\";\n\ninterface ToolHandler {\n name: string;\n description: string;\n inputSchema: object;\n handle: (registry: AcfRegistry, input: unknown) => Promise<unknown>;\n}\n\nconst HANDLERS: ToolHandler[] = [\n {\n name: \"acf.search\",\n description: TOOL_DESCRIPTIONS[\"acf.search\"],\n inputSchema: zodToJsonSchema(SearchInputSchema),\n handle: handleSearchTool,\n },\n {\n name: \"acf.fiche.lookup\",\n description: TOOL_DESCRIPTIONS[\"acf.fiche.lookup\"],\n inputSchema: zodToJsonSchema(FicheLookupInputSchema),\n handle: handleFicheLookupTool,\n },\n {\n name: \"acf.regulation.article\",\n description: TOOL_DESCRIPTIONS[\"acf.regulation.article\"],\n inputSchema: zodToJsonSchema(RegulationArticleInputSchema),\n handle: handleRegulationArticleTool,\n },\n {\n name: \"acf.glossary.define\",\n description: TOOL_DESCRIPTIONS[\"acf.glossary.define\"],\n inputSchema: zodToJsonSchema(GlossaryDefineInputSchema),\n handle: handleGlossaryDefineTool,\n },\n {\n name: \"acf.cite\",\n description: TOOL_DESCRIPTIONS[\"acf.cite\"],\n inputSchema: zodToJsonSchema(CiteInputSchema),\n handle: handleCiteTool,\n },\n {\n name: \"acf.classify-agent\",\n description: TOOL_DESCRIPTIONS[\"acf.classify-agent\"],\n inputSchema: zodToJsonSchema(ClassifyAgentInputSchema),\n handle: handleClassifyAgentTool,\n },\n {\n name: \"acf.advisor\",\n description: TOOL_DESCRIPTIONS[\"acf.advisor\"],\n inputSchema: zodToJsonSchema(AdvisorInputSchema),\n handle: handleAdvisorTool,\n },\n {\n name: \"acf.assess-autonomy\",\n description: TOOL_DESCRIPTIONS[\"acf.assess-autonomy\"],\n inputSchema: zodToJsonSchema(AssessAutonomyInputSchema),\n handle: handleAssessAutonomyTool,\n },\n {\n name: \"acf.identify-governance-gaps\",\n description: TOOL_DESCRIPTIONS[\"acf.identify-governance-gaps\"],\n inputSchema: zodToJsonSchema(IdentifyGapsInputSchema),\n handle: handleIdentifyGapsTool,\n },\n {\n name: \"acf.map-ai-act-obligations\",\n description: TOOL_DESCRIPTIONS[\"acf.map-ai-act-obligations\"],\n inputSchema: zodToJsonSchema(MapObligationsInputSchema),\n handle: handleMapObligationsTool,\n },\n {\n name: \"acf.assign-ddao-controls\",\n description: TOOL_DESCRIPTIONS[\"acf.assign-ddao-controls\"],\n inputSchema: zodToJsonSchema(AssignControlsInputSchema),\n handle: handleAssignControlsTool,\n },\n {\n name: \"acf.evaluate-agent-mandate\",\n description: TOOL_DESCRIPTIONS[\"acf.evaluate-agent-mandate\"],\n inputSchema: zodToJsonSchema(EvaluateMandateInputSchema),\n handle: handleEvaluateMandateTool,\n },\n];\n\nexport async function registerTools(\n server: Server,\n registry: AcfRegistry,\n): Promise<void> {\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: HANDLERS.map((h) => ({\n name: h.name,\n description: h.description,\n inputSchema: h.inputSchema,\n })),\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (req) => {\n const handler = HANDLERS.find((h) => h.name === req.params.name);\n if (!handler) {\n throw new Error(`Unknown tool: ${req.params.name}`);\n }\n const result = await handler.handle(registry, req.params.arguments ?? {});\n return {\n content: [\n { type: \"text\", text: JSON.stringify(result, null, 2) },\n ],\n };\n });\n}\n\nexport { HANDLERS };\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n GetPromptRequestSchema,\n ListPromptsRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { AcfRegistry } from \"./registry\";\n\ninterface AcfPrompt {\n name: string;\n description: string;\n arguments: { name: string; description: string; required: boolean }[];\n render: (args: Record<string, unknown>) => string;\n}\n\nfunction s(args: Record<string, unknown>, key: string): string {\n const v = args[key];\n return v === undefined || v === null ? \"\" : String(v);\n}\n\nexport const ACF_PROMPTS: AcfPrompt[] = [\n {\n name: \"acf.brief-dpia\",\n description:\n \"When you need to draft a defensible DPIA — one that will hold against a CNIL inspection or a board challenge — get a structured first draft organised by ACF® governance dimensions with the right legal references already in place.\",\n arguments: [\n { name: \"system_name\", description: \"Name of the AI system.\", required: true },\n { name: \"system_description\", description: \"What the system does.\", required: true },\n { name: \"deployment_context\", description: \"Geography, scale, audience.\", required: true },\n { name: \"high_risk_qualified\", description: \"Whether the system is already qualified as high-risk.\", required: false },\n ],\n render: (args) => [\n \"I need to draft a defensible DPIA for the following AI system:\",\n \"\",\n `- Name: ${s(args, \"system_name\")}`,\n `- Description: ${s(args, \"system_description\")}`,\n `- Deployment context: ${s(args, \"deployment_context\")}`,\n `- High-risk qualified: ${s(args, \"high_risk_qualified\") || \"to confirm\"}`,\n \"\",\n \"Load the canonical ACF® doctrine first:\",\n \"- acf://guide/gdpr (Article 35 + DPIA methodology)\",\n \"- acf://fiche/ACF-11 (risk assessment template)\",\n \"- acf://fiche/ACF-02 (criticality matrix)\",\n \"- acf://fiche/ACF-05 (decision register requirement)\",\n \"\",\n \"Then produce a DPIA structured by ACF® governance dimensions (D5 first), with explicit legal references (GDPR Art. 35, AI Act Art. 9/10/14 if applicable). Cite the doctrine_archive_url in the conclusion.\",\n \"\",\n \"Mark every assumption explicitly and signal what the human reviewer must confirm before submission.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-art49-register\",\n description:\n \"When you need to register a high-risk AI system in the EU AI Act Article 49 public register and you want the entry to be both compliant and consistent with your internal ACF® decisions register.\",\n arguments: [\n { name: \"system_name\", description: \"Name of the AI system.\", required: true },\n { name: \"provider_or_deployer\", description: \"Role of the entity ('provider' / 'deployer').\", required: true },\n { name: \"annex_iii_use_case\", description: \"Which Annex III item applies.\", required: true },\n ],\n render: (args) => [\n \"I need to prepare an entry for the EU AI Act Article 49 public register.\",\n \"\",\n `- System: ${s(args, \"system_name\")}`,\n `- Role: ${s(args, \"provider_or_deployer\")}`,\n `- Annex III use case: ${s(args, \"annex_iii_use_case\")}`,\n \"\",\n \"Load:\",\n \"- acf://guide/ai-act (Article 49 + annex III canonical mapping)\",\n \"- acf://fiche/ACF-05 (internal decision register format)\",\n \"- acf://fiche/ACF-11 (risk assessment)\",\n \"\",\n \"Then produce the Article 49 entry in JSON, ensuring it is consistent with the internal ACF® decision register (same identifiers, same scope). Flag any inconsistency that must be resolved before submission.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-board-report\",\n description:\n \"When the Board asks for a quarterly AI governance report and you want a presentable draft — executive style, hard numbers, risk heatmap, remediation status — that you can hand over without rewriting.\",\n arguments: [\n { name: \"quarter\", description: \"Reporting quarter (e.g. 'Q3 2026').\", required: true },\n { name: \"ai_systems_count\", description: \"Number of AI systems in production.\", required: true },\n { name: \"high_risk_count\", description: \"Number of high-risk systems.\", required: false },\n { name: \"open_remediations\", description: \"Number of open remediation items.\", required: false },\n { name: \"context_notes\", description: \"Free text — major events of the quarter.\", required: false },\n ],\n render: (args) => [\n \"I need a presentable AI governance report for the Board.\",\n \"\",\n `- Quarter: ${s(args, \"quarter\")}`,\n `- AI systems in production: ${s(args, \"ai_systems_count\")}`,\n `- High-risk systems: ${s(args, \"high_risk_count\") || \"TBD\"}`,\n `- Open remediations: ${s(args, \"open_remediations\") || \"TBD\"}`,\n `- Context: ${s(args, \"context_notes\") || \"\"}`,\n \"\",\n \"Load:\",\n \"- acf://framework/principle/P2 (traceability)\",\n \"- acf://framework/principle/P4 (proportional governance)\",\n \"- acf://framework/dimension/D5 (regulatory compliance)\",\n \"- acf://framework/dimension/D6 (audit & continuous improvement)\",\n \"\",\n \"Then produce a 1-page executive draft: portfolio health, criticality distribution (refer to acf://fiche/ACF-02), incidents + remediation status, regulatory delta (AI Act Annex III countdown), recommendations.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-ddao-mandate\",\n description:\n \"When you are about to deploy an autonomous AI agent and your CISO / DPO / Legal needs a signed mandate that documents the decision perimeter, the escalation thresholds, the kill switch and the audit trail — before go-live.\",\n arguments: [\n { name: \"agent_name\", description: \"Name of the agent.\", required: true },\n { name: \"agent_purpose\", description: \"What the agent does.\", required: true },\n { name: \"decision_perimeter\", description: \"Allowed and forbidden actions.\", required: true },\n { name: \"escalation_thresholds\", description: \"Escalation thresholds.\", required: true },\n ],\n render: (args) => [\n \"I need a signable DDAO mandate.\",\n \"\",\n `- Agent name: ${s(args, \"agent_name\")}`,\n `- Purpose: ${s(args, \"agent_purpose\")}`,\n `- Decision perimeter: ${s(args, \"decision_perimeter\")}`,\n `- Escalation thresholds: ${s(args, \"escalation_thresholds\")}`,\n \"\",\n \"Load:\",\n \"- acf://framework/ddao\",\n \"- acf://fiche/ACF-12 (mandate template)\",\n \"- acf://fiche/ACF-03 (constitution)\",\n \"- acf://fiche/ACF-07 (kill switch)\",\n \"- acf://fiche/ACF-09 (escalation thresholds)\",\n \"\",\n \"Then produce a mandate document in 7 sections (Identification, Decision perimeter, Forbidden actions, Escalation thresholds, Kill switch, Audit log, Doctrine version) ready for DDAO + DPO + CISO sign-off.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-classify-system\",\n description:\n \"When you receive an AI system to classify against the EU AI Act and you need a defensible qualification — Article 5 screening, Annex III check, Annex I check, GPAI test, conclusion with a justification that holds up to a regulator's challenge.\",\n arguments: [\n { name: \"system_description\", description: \"What the system does.\", required: true },\n { name: \"sector\", description: \"Sector of operation.\", required: true },\n { name: \"personal_data\", description: \"Does it process personal data?\", required: false },\n ],\n render: (args) => [\n \"I need a defensible AI Act qualification.\",\n \"\",\n `- System: ${s(args, \"system_description\")}`,\n `- Sector: ${s(args, \"sector\")}`,\n `- Personal data: ${s(args, \"personal_data\") || \"to confirm\"}`,\n \"\",\n \"Load:\",\n \"- acf://guide/ai-act\",\n \"- acf://fiche/ACF-02 (criticality)\",\n \"- acf://fiche/ACF-11 (risk assessment)\",\n \"\",\n \"Then run the canonical screening (Art. 5 prohibitions → Annex III → Annex I → GPAI test → transparency-only Art. 50) and conclude with a paragraph that lists the obligations and the operational consequences. If a tool would help, call acf.classify-agent with the structured input.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-teacher-case\",\n description:\n \"When you need to prepare a teaching case for a master's class, a bar school session or a CPD seminar — one calibrated to the ACF® V1.0 quality bar (named characters, precise legal refs, bold-answer bonus, 1-3 useful pages max) — get a ready-to-edit case generated from your angle.\",\n arguments: [\n { name: \"topic\", description: \"Pedagogical angle (e.g. 'mandate drafting').\", required: true },\n { name: \"audience\", description: \"Audience (e.g. 'L3 droit', 'EMBA').\", required: true },\n { name: \"duration_minutes\", description: \"Duration in minutes (15-180).\", required: false },\n ],\n render: (args) => [\n \"I need a calibrated ACF® V1.0 teaching case.\",\n \"\",\n `- Topic: ${s(args, \"topic\")}`,\n `- Audience: ${s(args, \"audience\")}`,\n `- Duration: ${s(args, \"duration_minutes\") || \"60\"} minutes`,\n \"\",\n \"Load:\",\n \"- acf://fiche/ACF-00 (introduction)\",\n \"- acf://framework/principle/P1\",\n \"- acf://framework/principle/P3\",\n \"\",\n \"Then produce a case study calibrated to the ACF® toolkit quality bar: named characters (avoid Marc/Marie), precise legal references (AI Act / GDPR / DORA articles), 1-3 page brief, 5 explicit deliverables, a teacher's correction guide. End with the ACF® doctrine citation.\",\n ].join(\"\\n\"),\n },\n];\n\nconst PROMPT_INDEX = new Map(ACF_PROMPTS.map((p) => [p.name, p]));\n\nexport function renderPrompt(name: string, args: Record<string, unknown>) {\n const prompt = PROMPT_INDEX.get(name);\n if (!prompt) throw new Error(`Unknown prompt: ${name}`);\n return {\n description: prompt.description,\n messages: [\n {\n role: \"user\" as const,\n content: { type: \"text\" as const, text: prompt.render(args) },\n },\n ],\n };\n}\n\nexport async function registerPrompts(\n server: Server,\n _registry: AcfRegistry,\n): Promise<void> {\n server.setRequestHandler(ListPromptsRequestSchema, async () => ({\n prompts: ACF_PROMPTS.map((p) => ({\n name: p.name,\n description: p.description,\n arguments: p.arguments,\n })),\n }));\n server.setRequestHandler(GetPromptRequestSchema, async (req) => {\n return renderPrompt(req.params.name, req.params.arguments ?? {});\n });\n}\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { ContentLoader } from \"./content\";\nimport { RulesLoader } from \"./rules-loader\";\nimport { SearchEngine } from \"./search\";\nimport { AcfRegistry } from \"./registry\";\nimport { registerResources } from \"./resources\";\nimport { registerTools } from \"./tools\";\nimport { registerPrompts } from \"./prompts\";\n\nexport interface CreateAcfServerOptions {\n contentRoot: string;\n rulesRoot: string;\n indexPath: string;\n}\n\nexport const ACF_MCP_NAME = \"acf-mcp\";\nexport const ACF_MCP_VERSION = \"1.0.0\";\n\nexport async function createAcfServer(\n opts: CreateAcfServerOptions,\n): Promise<{ server: Server; registry: AcfRegistry }> {\n const content = new ContentLoader({ contentRoot: opts.contentRoot });\n const rules = new RulesLoader({ rulesRoot: opts.rulesRoot });\n const search = await SearchEngine.fromFile(opts.indexPath);\n const meta = await content.loadMeta();\n\n const registry: AcfRegistry = { content, rules, search, meta };\n\n const server = new Server(\n { name: ACF_MCP_NAME, version: ACF_MCP_VERSION },\n {\n capabilities: {\n resources: { listChanged: false, subscribe: false },\n tools: { listChanged: false },\n prompts: { listChanged: false },\n },\n },\n );\n\n await registerResources(server, registry);\n await registerTools(server, registry);\n await registerPrompts(server, registry);\n\n return { server, registry };\n}\n","#!/usr/bin/env node\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { createAcfServer } from \"../core/server.js\";\n\nconst HERE = path.dirname(fileURLToPath(import.meta.url));\nconst PKG_ROOT = path.resolve(HERE, \"..\", \"..\");\n\nasync function main(): Promise<void> {\n const { server } = await createAcfServer({\n contentRoot: path.join(PKG_ROOT, \"content\"),\n rulesRoot: path.join(PKG_ROOT, \"content\", \"rules\"),\n indexPath: path.join(PKG_ROOT, \"dist\", \"search-index.json\"),\n });\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n process.stderr.write(`acf-mcp ready (stdio).\\n`);\n}\n\nmain().catch((err) => {\n process.stderr.write(`${(err as Error).stack ?? String(err)}\\n`);\n process.exit(1);\n});\n"]}
1
+ {"version":3,"sources":["../../src/core/types.ts","../../src/core/locale.ts","../../src/core/content.ts","../../src/core/rule-types.ts","../../src/core/rules-loader.ts","../../src/core/search.ts","../../src/core/uri.ts","../../src/core/resources.ts","../../src/constants/tool-descriptions.ts","../../src/core/tools-read.ts","../../src/lib/zod-to-json-schema.ts","../../src/core/classify-agent-input.ts","../../src/core/infer-autonomy.ts","../../src/core/infer-criticality.ts","../../src/core/negation-aware.ts","../../src/core/trigger-eval.ts","../../src/core/infer-obligations.ts","../../src/core/infer-roles.ts","../../src/core/infer-sign-off.ts","../../src/core/infer-controls.ts","../../src/core/confidence.ts","../../src/constants/disclaimer.ts","../../src/core/doctrine-footer.ts","../../src/core/tool-classify-agent.ts","../../src/core/tool-advisor.ts","../../src/core/tool-assess-autonomy.ts","../../src/core/tool-identify-gaps.ts","../../src/core/tool-map-obligations.ts","../../src/core/tool-assign-controls.ts","../../src/core/tool-evaluate-mandate.ts","../../src/core/tools.ts","../../src/core/prompts.ts","../../src/core/server.ts","../../src/transport/stdio.ts"],"names":["z","readFile","path","s","s2","ficheFor"],"mappings":"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","file":"stdio.js","sourcesContent":["import { z } from \"zod\";\n\n/**\n * Supported locales — V1.0 ships FR + EN translated; 11 others fall back to EN\n * (cf. spec §8.3). Infrastructure supports all 13 codes uniformly.\n */\nexport const SUPPORTED_LOCALES = [\n \"fr\", \"en\", \"es\", \"de\", \"pt\", \"it\", \"nl\", \"ru\", \"ar\", \"tr\", \"ja\", \"zh\", \"ko\",\n] as const;\n\nexport const AcfLocaleSchema = z.enum(SUPPORTED_LOCALES);\nexport type AcfLocale = z.infer<typeof AcfLocaleSchema>;\n\n/**\n * Localized string: at minimum FR + EN must be provided.\n */\nexport const LocalizedStringSchema = z\n .object({\n fr: z.string(),\n en: z.string(),\n })\n .catchall(z.string());\nexport type LocalizedString = z.infer<typeof LocalizedStringSchema>;\n\n/* -------------------- Framework -------------------- */\n\nexport const PrincipleSchema = z.object({\n id: z.string().regex(/^P[1-4]$/),\n code: z.string().regex(/^P[1-4]$/),\n title: LocalizedStringSchema,\n summary: LocalizedStringSchema,\n doctrine: LocalizedStringSchema,\n related_fiches: z.array(z.string().regex(/^ACF-(0[0-9]|1[0-6])$/)),\n related_dimensions: z.array(z.string().regex(/^D[1-6]$/)),\n});\nexport type Principle = z.infer<typeof PrincipleSchema>;\n\nexport const AutonomyLevelSchema = z.object({\n id: z.string().regex(/^N[0-3]$/),\n code: z.string().regex(/^N[0-3]$/),\n title: LocalizedStringSchema,\n description: LocalizedStringSchema,\n controls: LocalizedStringSchema,\n examples: LocalizedStringSchema,\n});\nexport type AutonomyLevel = z.infer<typeof AutonomyLevelSchema>;\n\nexport const DimensionSchema = z.object({\n id: z.string().regex(/^D[1-6]$/),\n code: z.string().regex(/^D[1-6]$/),\n title: LocalizedStringSchema,\n description: LocalizedStringSchema,\n practices: LocalizedStringSchema,\n});\nexport type Dimension = z.infer<typeof DimensionSchema>;\n\nexport const DdaoSchema = z.object({\n title: LocalizedStringSchema,\n expansion: z.literal(\"Delegated Decision Agent Officer\"),\n definition: LocalizedStringSchema,\n responsibilities: LocalizedStringSchema,\n not_to_be_confused_with: LocalizedStringSchema,\n});\nexport type Ddao = z.infer<typeof DdaoSchema>;\n\n/* -------------------- Fiches -------------------- */\n\nexport const RelatedArticleSchema = z.object({\n regulation: z.enum([\"ai-act\", \"gdpr\", \"dora\", \"nis2\", \"iso-42001\"]),\n article: z.string(),\n paragraph: z.string().optional(),\n});\n\nexport const FicheFrontmatterSchema = z.object({\n code: z.string().regex(/^ACF-(0[0-9]|1[0-6])$/),\n slug: z.string().min(1),\n title: z.string().min(1),\n title_en: z.string().optional(),\n order: z.number().int().min(0).max(16),\n maturity_dimension: z.string().regex(/^D[1-6]$/).optional(),\n related_principles: z.array(z.string().regex(/^P[1-4]$/)).optional(),\n related_articles: z.array(RelatedArticleSchema).optional(),\n related_fiches: z.array(z.string().regex(/^ACF-(0[0-9]|1[0-6])$/)).optional(),\n keywords: z.array(z.string()),\n version: z.string(),\n pdf_url: z.string().optional(),\n});\nexport type FicheFrontmatter = z.infer<typeof FicheFrontmatterSchema>;\n\nexport interface FicheDocument {\n frontmatter: FicheFrontmatter;\n body: string;\n served_locale: AcfLocale;\n is_fallback: boolean;\n}\n\n/* -------------------- Guides -------------------- */\n\nexport const ApplicableDateSchema = z.object({\n obligation: z.string(),\n date: z.string(),\n});\n\nexport const GuideFrontmatterSchema = z.object({\n regulation: z.enum([\"ai-act\", \"gdpr\", \"dora\", \"nis2\", \"iso-42001\"]),\n title: z.string().min(1),\n title_en: z.string().optional(),\n version: z.string(),\n last_update: z.string(),\n applicable_dates: z.array(ApplicableDateSchema).optional(),\n});\nexport type GuideFrontmatter = z.infer<typeof GuideFrontmatterSchema>;\n\nexport interface GuideDocument {\n frontmatter: GuideFrontmatter;\n body: string;\n served_locale: AcfLocale;\n is_fallback: boolean;\n}\n\n/* -------------------- Glossary -------------------- */\n\nexport const GlossaryEntrySchema = z.object({\n term: z.string().min(1),\n expansion: z.string().optional(),\n definition: z.string().min(1),\n related_principles: z.array(z.string().regex(/^P[1-4]$/)).optional(),\n related_fiches: z.array(z.string().regex(/^ACF-(0[0-9]|1[0-6])$/)).optional(),\n});\nexport type GlossaryEntry = z.infer<typeof GlossaryEntrySchema>;\n\n/* -------------------- Whitepaper / Manual -------------------- */\n\nexport const WhitepaperSectionSchema = z.object({\n slug: z.string().min(1),\n title: z.string().min(1),\n level: z.union([z.literal(1), z.literal(2), z.literal(3)]),\n body: z.string(),\n});\nexport type WhitepaperSection = z.infer<typeof WhitepaperSectionSchema>;\n\nexport interface WhitepaperDocument {\n toc: WhitepaperSection[];\n full_body: string;\n served_locale: AcfLocale;\n is_fallback: boolean;\n}\n\n/* -------------------- Meta -------------------- */\n\nexport const MetaSchema = z.object({\n framework_version: z.string(),\n content_build: z.string(),\n content_hash: z.string().startsWith(\"sha256:\"),\n doctrine_signature: z.string().optional(),\n permanent_archive_url: z.string().url(),\n rules_version: z.string(),\n locales: z.array(AcfLocaleSchema),\n fallback_locale: AcfLocaleSchema,\n});\nexport type Meta = z.infer<typeof MetaSchema>;\n\n/* -------------------- Resolved-content union (returned by ContentLoader) -------------------- */\n\nexport type ResolvedContent =\n | { kind: \"principle\"; data: Principle }\n | { kind: \"autonomy_level\"; data: AutonomyLevel }\n | { kind: \"dimension\"; data: Dimension }\n | { kind: \"ddao\"; data: Ddao }\n | { kind: \"fiche\"; data: FicheDocument }\n | { kind: \"guide\"; data: GuideDocument }\n | { kind: \"whitepaper\"; data: WhitepaperDocument }\n | { kind: \"glossary_entry\"; data: GlossaryEntry }\n | { kind: \"glossary_index\"; data: GlossaryEntry[] }\n | { kind: \"meta\"; data: Meta };\n","import { AcfLocale, AcfLocaleSchema, SUPPORTED_LOCALES } from \"./types\";\n\nexport interface LocaleNegotiationInput {\n explicit?: string | undefined;\n acceptLanguage?: string | undefined;\n envLocale?: string | undefined;\n}\n\nexport const DEFAULT_FALLBACK_LOCALE: AcfLocale = \"en\";\nexport const AUTHORITY_SOURCE_LOCALE: AcfLocale = \"fr\";\n\nfunction tryParseLocale(value: string | undefined): AcfLocale | null {\n if (!value) return null;\n const lower = value.trim().toLowerCase().slice(0, 2);\n const result = AcfLocaleSchema.safeParse(lower);\n return result.success ? result.data : null;\n}\n\nfunction parseAcceptLanguage(header: string): AcfLocale[] {\n return header\n .split(\",\")\n .map((part) => part.trim().split(\";\")[0]?.split(\"-\")[0] ?? \"\")\n .map((code) => tryParseLocale(code))\n .filter((code): code is AcfLocale => code !== null);\n}\n\n/**\n * Locale negotiation per spec §8.1:\n * 1. Explicit param (URI ?lang= or tool argument)\n * 2. HTTP Accept-Language\n * 3. ACF_MCP_LOCALE env var (stdio only)\n * 4. DEFAULT_FALLBACK_LOCALE ('en')\n */\nexport function negotiateLocale(input: LocaleNegotiationInput): AcfLocale {\n const fromExplicit = tryParseLocale(input.explicit);\n if (fromExplicit) return fromExplicit;\n\n if (input.acceptLanguage) {\n const candidates = parseAcceptLanguage(input.acceptLanguage);\n if (candidates[0]) return candidates[0];\n }\n\n const fromEnv = tryParseLocale(input.envLocale);\n if (fromEnv) return fromEnv;\n\n return DEFAULT_FALLBACK_LOCALE;\n}\n\n/**\n * Fallback chain used by ContentLoader:\n * requested → DEFAULT_FALLBACK_LOCALE ('en') → AUTHORITY_SOURCE_LOCALE ('fr')\n * Deduplicated.\n */\nexport function fallbackChain(requested: AcfLocale): AcfLocale[] {\n const chain: AcfLocale[] = [requested];\n if (!chain.includes(DEFAULT_FALLBACK_LOCALE)) chain.push(DEFAULT_FALLBACK_LOCALE);\n if (!chain.includes(AUTHORITY_SOURCE_LOCALE)) chain.push(AUTHORITY_SOURCE_LOCALE);\n return chain;\n}\n\nexport { SUPPORTED_LOCALES };\n","import { readFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport matter from \"gray-matter\";\nimport {\n AcfLocale,\n AutonomyLevel,\n AutonomyLevelSchema,\n Ddao,\n DdaoSchema,\n Dimension,\n DimensionSchema,\n FicheDocument,\n FicheFrontmatterSchema,\n GlossaryEntry,\n GlossaryEntrySchema,\n GuideDocument,\n GuideFrontmatterSchema,\n Meta,\n MetaSchema,\n Principle,\n PrincipleSchema,\n} from \"./types\";\nimport { fallbackChain } from \"./locale\";\n\nexport interface ContentLoaderOptions {\n contentRoot: string;\n}\n\nexport class ContentLoader {\n private readonly root: string;\n private metaCache: Meta | null = null;\n\n constructor(opts: ContentLoaderOptions) {\n this.root = opts.contentRoot;\n }\n\n /* -------------------- Meta -------------------- */\n\n async loadMeta(): Promise<Meta> {\n // No lock needed: concurrent callers all parse the same file and write\n // identical values to metaCache, so the last write is idempotent.\n if (this.metaCache) return this.metaCache;\n const file = path.join(this.root, \"meta.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n this.metaCache = MetaSchema.parse(raw);\n return this.metaCache;\n }\n\n /* -------------------- Framework -------------------- */\n\n async loadPrinciples(): Promise<Principle[]> {\n const file = path.join(this.root, \"framework\", \"principles.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n return (raw.principles ?? []).map((p: unknown) => PrincipleSchema.parse(p));\n }\n\n async loadAutonomyLevels(): Promise<AutonomyLevel[]> {\n const file = path.join(this.root, \"framework\", \"autonomy-levels.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n return (raw.levels ?? []).map((l: unknown) => AutonomyLevelSchema.parse(l));\n }\n\n async loadDimensions(): Promise<Dimension[]> {\n const file = path.join(this.root, \"framework\", \"dimensions.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n return (raw.dimensions ?? []).map((d: unknown) => DimensionSchema.parse(d));\n }\n\n async loadDdao(): Promise<Ddao> {\n const file = path.join(this.root, \"framework\", \"ddao.json\");\n const raw = JSON.parse(await readFile(file, \"utf8\"));\n return DdaoSchema.parse(raw);\n }\n\n /* -------------------- Fiches -------------------- */\n\n /**\n * Load a fiche by code with locale fallback chain.\n *\n * **Caller contract:** `code` MUST be pre-validated against `/^ACF-(0[0-9]|1[0-6])$/`\n * before calling this method. ContentLoader does NOT sanitise the code and relies\n * on Zod validation at the tool boundary (Phase 5+). Skipping pre-validation is a\n * path traversal risk.\n */\n async loadFiche(code: string, locale: AcfLocale): Promise<FicheDocument> {\n for (const candidate of fallbackChain(locale)) {\n const file = path.join(this.root, \"fiches\", `${code}.${candidate}.md`);\n if (!existsSync(file)) continue;\n const raw = await readFile(file, \"utf8\");\n const parsed = matter(raw);\n const frontmatter = FicheFrontmatterSchema.parse(parsed.data);\n return {\n frontmatter,\n body: parsed.content,\n served_locale: candidate,\n is_fallback: candidate !== locale,\n };\n }\n throw new Error(`Fiche ${code} not found in any locale chain for ${locale}`);\n }\n\n /* -------------------- Guides -------------------- */\n\n /**\n * Load a regulatory guide markdown with locale fallback chain.\n *\n * **Caller contract:** `regulation` MUST be pre-validated against the\n * `[\"ai-act\", \"gdpr\", \"dora\", \"nis2\", \"iso-42001\"]` enum before calling\n * this method. ContentLoader does NOT sanitise the regulation string.\n */\n async loadGuide(\n regulation: string,\n locale: AcfLocale,\n ): Promise<GuideDocument> {\n for (const candidate of fallbackChain(locale)) {\n const file = path.join(this.root, \"guides\", `${regulation}.${candidate}.md`);\n if (!existsSync(file)) continue;\n const raw = await readFile(file, \"utf8\");\n const parsed = matter(raw);\n const frontmatter = GuideFrontmatterSchema.parse(parsed.data);\n return {\n frontmatter,\n body: parsed.content,\n served_locale: candidate,\n is_fallback: candidate !== locale,\n };\n }\n throw new Error(\n `Guide ${regulation} not found in any locale chain for ${locale}`,\n );\n }\n\n /* -------------------- Glossary -------------------- */\n\n async loadGlossary(locale: AcfLocale): Promise<{\n entries: GlossaryEntry[];\n served_locale: AcfLocale;\n is_fallback: boolean;\n }> {\n for (const candidate of fallbackChain(locale)) {\n const file = path.join(this.root, \"glossary\", `${candidate}.json`);\n if (!existsSync(file)) continue;\n const raw = JSON.parse(await readFile(file, \"utf8\")) as unknown[];\n return {\n entries: raw.map((entry) => GlossaryEntrySchema.parse(entry)),\n served_locale: candidate,\n is_fallback: candidate !== locale,\n };\n }\n throw new Error(`Glossary not found in any locale chain for ${locale}`);\n }\n\n /**\n * Lookup a glossary entry by `term` or `expansion` (case-insensitive).\n *\n * **Caller contract:** `term` is matched against entry strings, not used as a\n * file path, so path traversal is not a concern here. But callers should\n * still validate length/format to avoid pathological inputs.\n *\n * Returns null if no entry matches.\n */\n async loadGlossaryEntry(\n term: string,\n locale: AcfLocale,\n ): Promise<{\n entry: GlossaryEntry;\n served_locale: AcfLocale;\n is_fallback: boolean;\n } | null> {\n const { entries, served_locale, is_fallback } = await this.loadGlossary(locale);\n const normalised = term.trim().toLowerCase();\n const entry =\n entries.find(\n (e) =>\n e.term.toLowerCase() === normalised ||\n e.expansion?.toLowerCase() === normalised,\n ) ?? null;\n if (!entry) return null;\n return { entry, served_locale, is_fallback };\n }\n\n /* -------------------- Whitepaper -------------------- */\n\n /**\n * Load the whitepaper raw markdown body with locale fallback chain.\n *\n * Returns the file contents AS-IS. If the file contains a YAML frontmatter\n * block, that block is included verbatim in `body` (this method does NOT\n * strip it). The Phase 5 whitepaper section parser is responsible for\n * walking H1/H2 and discarding any frontmatter prefix.\n */\n async loadWhitepaperRaw(locale: AcfLocale): Promise<{\n body: string;\n served_locale: AcfLocale;\n is_fallback: boolean;\n }> {\n for (const candidate of fallbackChain(locale)) {\n const file = path.join(this.root, \"whitepaper\", `${candidate}.md`);\n if (!existsSync(file)) continue;\n const body = await readFile(file, \"utf8\");\n return {\n body,\n served_locale: candidate,\n is_fallback: candidate !== locale,\n };\n }\n throw new Error(`Whitepaper not found in any locale chain for ${locale}`);\n }\n}\n","import { z } from \"zod\";\n\n/* -------------------- Generic primitives -------------------- */\n\nexport const ConfidenceSchema = z.enum([\"low\", \"medium\", \"high\"]);\nexport type Confidence = z.infer<typeof ConfidenceSchema>;\n\nexport const CriticalitySchema = z.enum([\"low\", \"medium\", \"high\", \"critical\"]);\nexport type Criticality = z.infer<typeof CriticalitySchema>;\n\nexport const AcfLevelSchema = z.enum([\"N0\", \"N1\", \"N2\", \"N3\"]);\nexport type AcfLevel = z.infer<typeof AcfLevelSchema>;\n\nexport const AiActRoleSchema = z.enum([\n \"provider\", \"deployer\", \"importer\", \"distributor\", \"not_applicable\",\n]);\nexport const GdprRoleSchema = z.enum([\n \"controller\", \"processor\", \"joint_controller\", \"not_applicable\",\n]);\n\nexport const TriggerSchema = z.object({\n structured_flags: z.array(z.string()).optional(),\n keyword_patterns: z.array(z.string()).optional(),\n negation_aware: z.boolean().default(true),\n enum_match: z.record(z.string(), z.array(z.string())).optional(),\n});\nexport type Trigger = z.infer<typeof TriggerSchema>;\n\n/* -------------------- Common metadata header -------------------- */\n\nconst versionedHeader = {\n version: z.string(),\n last_update: z.string(),\n};\n\nexport const RulesMetaSchema = z.object({\n rules_version: z.string(),\n last_update: z.string(),\n applicable_jurisdictions: z.array(z.string()),\n});\n\n/* -------------------- AI Act Annex III -------------------- */\n\nexport const RuleCategorySchema = z.object({\n id: z.string(),\n title: z.string(),\n triggers: TriggerSchema,\n obligations: z.array(z.string()),\n fiches: z.array(z.string()),\n confidence_base: ConfidenceSchema,\n requires_human_review: z.literal(true),\n});\n\nexport const AiActAnnexIIISchema = z.object({\n ...versionedHeader,\n applicable_dates: z.array(\n z.object({\n category: z.string(),\n applicable_from: z.string(),\n deferred: z.boolean(),\n }),\n ),\n categories: z.array(RuleCategorySchema),\n});\n\nexport const AiActAnnexISchema = z.object({\n ...versionedHeader,\n applicable_dates: z.array(\n z.object({\n category: z.string(),\n applicable_from: z.string(),\n deferred: z.boolean(),\n }),\n ),\n categories: z.array(RuleCategorySchema),\n});\n\n/* -------------------- GPAI -------------------- */\n\nexport const GpaiTriggersSchema = z.object({\n ...versionedHeader,\n triggers: TriggerSchema,\n obligations: z.array(\n z.object({\n article: z.string(),\n requirement: z.string(),\n applicable_date: z.string(),\n systemic_risk_only: z.boolean().optional(),\n }),\n ),\n});\n\n/* -------------------- Criticality matrix -------------------- */\n\nexport const CriticalityMatrixSchema = z.object({\n ...versionedHeader,\n cells: z.array(\n z.object({\n personal_data_level: z.enum([\"none\", \"standard\", \"sensitive_special\"]),\n financial_exposure: z.enum([\n \"none\", \"low_operation\", \"medium_contract\", \"high_corporate\",\n ]),\n sector_modifier: z.number(),\n score: CriticalitySchema,\n rationale_template: z.string(),\n }),\n ),\n});\n\n/* -------------------- Autonomy inference -------------------- */\n\nexport const AutonomyInferenceSchema = z.object({\n ...versionedHeader,\n thresholds: z.array(\n z.object({\n level: AcfLevelSchema,\n conditions: z.record(z.string(), z.array(z.string())),\n rationale_template: z.string(),\n }),\n ),\n});\n\n/* -------------------- DDAO controls mapping -------------------- */\n\nexport const DdaoControlsMappingSchema = z.object({\n ...versionedHeader,\n mappings: z.array(\n z.object({\n level: AcfLevelSchema,\n risk: CriticalitySchema,\n recommended_controls: z.array(\n z.object({\n title: z.string(),\n description: z.string(),\n owner_role: z.enum([\n \"ddao\", \"dpo\", \"ciso\", \"business_owner\", \"auditor\",\n ]),\n frequency: z.enum([\n \"one_time\", \"monthly\", \"quarterly\", \"annual\", \"on_event\",\n ]),\n evidence_artifact: z.string(),\n }),\n ),\n ddao_controls: z.array(\n z.object({\n control_id: z.string(),\n control_type: z.enum([\n \"preventive\", \"detective\", \"corrective\", \"governance\",\n ]),\n fiche_reference: z.string(),\n implementation_note: z.string(),\n }),\n ),\n }),\n ),\n});\n\n/* -------------------- Sign-off matrix -------------------- */\n\nexport const SignOffMatrixSchema = z.object({\n ...versionedHeader,\n rules: z.array(\n z.object({\n criticality: CriticalitySchema,\n personal_data_level: z.enum([\"none\", \"standard\", \"sensitive_special\"]),\n financial_exposure: z.enum([\n \"none\", \"low_operation\", \"medium_contract\", \"high_corporate\",\n ]),\n required: z.object({\n security: z.boolean(),\n privacy: z.boolean(),\n compliance: z.boolean(),\n legal: z.boolean(),\n business_sponsor: z.boolean(),\n board: z.boolean(),\n }),\n }),\n ),\n});\n\n/* -------------------- GDPR qualification -------------------- */\n\nexport const GdprQualificationSchema = z.object({\n ...versionedHeader,\n cases: z.array(\n z.object({\n id: z.string(),\n triggers: TriggerSchema,\n role: GdprRoleSchema,\n confidence_base: ConfidenceSchema,\n rationale_template: z.string(),\n }),\n ),\n});\n\n/* -------------------- AI Act roles -------------------- */\n\nexport const AiActRolesSchema = z.object({\n ...versionedHeader,\n rules: z.array(\n z.object({\n id: z.string(),\n triggers: TriggerSchema,\n role: AiActRoleSchema,\n confidence_base: ConfidenceSchema,\n rationale_template: z.string(),\n }),\n ),\n});\n","import { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport {\n AiActAnnexIIISchema,\n AiActAnnexISchema,\n AiActRolesSchema,\n AutonomyInferenceSchema,\n CriticalityMatrixSchema,\n DdaoControlsMappingSchema,\n GdprQualificationSchema,\n GpaiTriggersSchema,\n RulesMetaSchema,\n SignOffMatrixSchema,\n} from \"./rule-types\";\n\nexport interface RulesLoaderOptions {\n rulesRoot: string;\n}\n\nexport class RulesLoader {\n private readonly root: string;\n\n constructor(opts: RulesLoaderOptions) {\n this.root = opts.rulesRoot;\n }\n\n private async loadJson<T>(file: string): Promise<T> {\n const raw = await readFile(path.join(this.root, file), \"utf8\");\n return JSON.parse(raw) as T;\n }\n\n async loadRulesMeta() {\n return RulesMetaSchema.parse(await this.loadJson(\"rules-meta.json\"));\n }\n async loadAiActAnnexIII() {\n return AiActAnnexIIISchema.parse(await this.loadJson(\"ai-act-annex-iii.json\"));\n }\n async loadAiActAnnexI() {\n return AiActAnnexISchema.parse(await this.loadJson(\"ai-act-annex-i.json\"));\n }\n async loadGpaiTriggers() {\n return GpaiTriggersSchema.parse(await this.loadJson(\"gpai-triggers.json\"));\n }\n async loadAutonomyInference() {\n return AutonomyInferenceSchema.parse(await this.loadJson(\"autonomy-inference.json\"));\n }\n async loadCriticalityMatrix() {\n return CriticalityMatrixSchema.parse(await this.loadJson(\"criticality-matrix.json\"));\n }\n async loadDdaoControlsMapping() {\n return DdaoControlsMappingSchema.parse(await this.loadJson(\"ddao-controls-mapping.json\"));\n }\n async loadSignOffMatrix() {\n return SignOffMatrixSchema.parse(await this.loadJson(\"sign-off-matrix.json\"));\n }\n async loadGdprQualification() {\n return GdprQualificationSchema.parse(await this.loadJson(\"gdpr-qualification.json\"));\n }\n async loadAiActRoles() {\n return AiActRolesSchema.parse(await this.loadJson(\"ai-act-roles.json\"));\n }\n}\n","import { readFile } from \"node:fs/promises\";\nimport lunr from \"lunr\";\nimport { AcfLocale } from \"./types\";\nimport { SearchDoc } from \"./search-doc\";\n\nexport interface SearchInput {\n query: string;\n scope:\n | \"all\" | \"framework\" | \"fiche\" | \"guide\" | \"whitepaper\" | \"glossary\";\n locale: AcfLocale;\n limit: number;\n}\n\nexport interface SearchHit {\n uri: string;\n title: string;\n snippet: string;\n score: number;\n category: SearchDoc[\"category\"];\n locale: AcfLocale;\n}\n\ninterface SerialisedIndex {\n index: object;\n docs: Record<string, SearchDoc>;\n built_at: string;\n doc_count: number;\n}\n\nconst FRAMEWORK_CATEGORIES = new Set([\n \"principle\", \"autonomy_level\", \"dimension\", \"ddao\",\n]);\n\n/**\n * Category relevance multiplier applied after lunr scoring.\n * Principle/framework content is promoted slightly over glossary/fiche so that\n * canonical framework queries (e.g. \"souveraineté\") return the authoritative\n * principle record first, not a glossary synonym that happens to have a higher\n * raw TF-IDF score due to a shorter body.\n */\nconst CATEGORY_SCORE_MULTIPLIER: Record<SearchDoc[\"category\"], number> = {\n principle: 1.15,\n autonomy_level: 1.10,\n dimension: 1.10,\n ddao: 1.10,\n fiche: 1.05,\n guide: 1.02,\n whitepaper: 1.00,\n glossary: 0.90,\n meta: 0.80,\n};\n\nexport class SearchEngine {\n private constructor(\n private readonly idx: lunr.Index,\n private readonly docs: Map<string, SearchDoc>,\n ) {}\n\n static async fromFile(file: string): Promise<SearchEngine> {\n const raw = JSON.parse(await readFile(file, \"utf8\")) as SerialisedIndex;\n const idx = lunr.Index.load(raw.index);\n const docs = new Map(Object.entries(raw.docs));\n return new SearchEngine(idx, docs);\n }\n\n static fromMemory(serialised: SerialisedIndex): SearchEngine {\n const idx = lunr.Index.load(serialised.index);\n const docs = new Map(Object.entries(serialised.docs));\n return new SearchEngine(idx, docs);\n }\n\n /**\n * Normalise a query string the same way lunr normalises indexed tokens:\n * - strip combining diacritics (é → e, ü → u, ç → c, etc.)\n * - lower-case\n * This ensures \"souveraineté\" matches the stored token \"souverainete\".\n */\n private static normaliseQuery(q: string): string {\n return q\n .normalize(\"NFD\")\n .replace(/\\p{Mn}/gu, \"\") // strip combining diacritics\n .toLowerCase();\n }\n\n search(input: SearchInput): SearchHit[] {\n const normalisedQuery = SearchEngine.normaliseQuery(input.query);\n let lunrResults: lunr.Index.Result[];\n try {\n lunrResults = this.idx.search(normalisedQuery);\n } catch {\n // lunr throws on certain special characters — sanitise to a wildcard search\n const sanitised = normalisedQuery.replace(/[^\\p{L}\\p{N}\\s]/gu, \" \").trim();\n lunrResults = sanitised ? this.idx.search(sanitised) : [];\n }\n\n // Collect all filtered results, apply category multiplier, re-sort, then slice.\n // This promotes canonical framework docs (principles, levels, dimensions) above\n // glossary synonyms that may have higher raw TF-IDF due to shorter bodies.\n const candidates: SearchHit[] = [];\n for (const r of lunrResults) {\n const doc = this.docs.get(r.ref);\n if (!doc) continue;\n if (doc.locale !== input.locale) continue;\n if (!this.matchesScope(doc.category, input.scope)) continue;\n const multiplier = CATEGORY_SCORE_MULTIPLIER[doc.category] ?? 1.0;\n candidates.push({\n uri: doc.uri,\n title: doc.title,\n snippet: doc.snippet,\n score: r.score * multiplier,\n category: doc.category,\n locale: doc.locale,\n });\n }\n candidates.sort((a, b) => b.score - a.score);\n return candidates.slice(0, input.limit);\n }\n\n private matchesScope(\n category: SearchDoc[\"category\"],\n scope: SearchInput[\"scope\"],\n ): boolean {\n if (scope === \"all\") return true;\n if (scope === \"framework\") return FRAMEWORK_CATEGORIES.has(category);\n if (scope === \"fiche\") return category === \"fiche\";\n if (scope === \"guide\") return category === \"guide\";\n if (scope === \"whitepaper\") return category === \"whitepaper\";\n if (scope === \"glossary\") return category === \"glossary\";\n return false;\n }\n}\n","import { AcfLocale, AcfLocaleSchema } from \"./types\";\n\nexport type AcfUriCategory =\n | \"framework_principle\"\n | \"framework_autonomy_level\"\n | \"framework_dimension\"\n | \"framework_ddao\"\n | \"fiche\"\n | \"guide\"\n | \"whitepaper\"\n | \"whitepaper_toc\"\n | \"whitepaper_section\"\n | \"manual\"\n | \"manual_toc\"\n | \"manual_section\"\n | \"deck\"\n | \"glossary\"\n | \"glossary_entry\"\n | \"meta\";\n\nexport interface AcfUriParsed {\n category: AcfUriCategory;\n id?: string;\n locale?: AcfLocale;\n}\n\nconst PREFIX = \"acf://\";\n\nexport function parseAcfUri(uri: string): AcfUriParsed {\n if (!uri.startsWith(PREFIX)) {\n throw new Error(`Invalid scheme — expected acf://, got: ${uri}`);\n }\n const rest = uri.slice(PREFIX.length);\n const [pathPart, queryPart] = rest.split(\"?\", 2);\n if (pathPart === undefined) {\n throw new Error(`Empty URI: ${uri}`);\n }\n const segments = pathPart.split(\"/\").filter(Boolean);\n\n let locale: AcfLocale | undefined;\n if (queryPart) {\n const params = new URLSearchParams(queryPart);\n const lang = params.get(\"lang\");\n if (lang) {\n const parsed = AcfLocaleSchema.safeParse(lang);\n if (parsed.success) locale = parsed.data;\n }\n }\n\n // Routing table\n if (segments[0] === \"framework\") {\n if (segments[1] === \"principle\" && segments[2]) {\n return { category: \"framework_principle\", id: segments[2], locale };\n }\n if (segments[1] === \"autonomy-level\" && segments[2]) {\n return { category: \"framework_autonomy_level\", id: segments[2], locale };\n }\n if (segments[1] === \"dimension\" && segments[2]) {\n return { category: \"framework_dimension\", id: segments[2], locale };\n }\n if (segments[1] === \"ddao\") {\n return { category: \"framework_ddao\", id: undefined, locale };\n }\n }\n if (segments[0] === \"fiche\" && segments[1]) {\n return { category: \"fiche\", id: segments[1], locale };\n }\n if (segments[0] === \"guide\" && segments[1]) {\n return { category: \"guide\", id: segments[1], locale };\n }\n if (segments[0] === \"whitepaper\") {\n if (!segments[1]) return { category: \"whitepaper\", id: undefined, locale };\n if (segments[1] === \"toc\")\n return { category: \"whitepaper_toc\", id: undefined, locale };\n if (segments[1] === \"section\" && segments[2]) {\n return { category: \"whitepaper_section\", id: segments[2], locale };\n }\n }\n if (segments[0] === \"manual\") {\n if (!segments[1]) return { category: \"manual\", id: undefined, locale };\n if (segments[1] === \"toc\")\n return { category: \"manual_toc\", id: undefined, locale };\n if (segments[1] === \"section\" && segments[2]) {\n return { category: \"manual_section\", id: segments[2], locale };\n }\n }\n if (segments[0] === \"deck\") {\n return { category: \"deck\", id: undefined, locale };\n }\n if (segments[0] === \"glossary\") {\n if (!segments[1]) return { category: \"glossary\", id: undefined, locale };\n return {\n category: \"glossary_entry\",\n id: decodeURIComponent(segments[1]),\n locale,\n };\n }\n if (segments[0] === \"meta\") {\n return { category: \"meta\", id: undefined, locale };\n }\n throw new Error(`Unknown ACF URI: ${uri}`);\n}\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n ListResourcesRequestSchema,\n ReadResourceRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { AcfRegistry } from \"./registry\";\nimport { parseAcfUri } from \"./uri\";\nimport { negotiateLocale } from \"./locale\";\n\nexport interface ResourceListItem {\n uri: string;\n name: string;\n description?: string;\n mimeType?: string;\n}\n\nexport interface ResourceReadResult {\n contents: { uri: string; mimeType: string; text: string }[];\n}\n\nexport async function listResources(\n registry: AcfRegistry,\n): Promise<ResourceListItem[]> {\n const items: ResourceListItem[] = [];\n\n /* Principles */\n const principles = await registry.content.loadPrinciples();\n for (const p of principles) {\n items.push({\n uri: `acf://framework/principle/${p.code}`,\n name: `Principle ${p.code} — ${p.title.en}`,\n description: p.summary.en,\n mimeType: \"application/json\",\n });\n }\n\n /* Autonomy levels */\n const levels = await registry.content.loadAutonomyLevels();\n for (const l of levels) {\n items.push({\n uri: `acf://framework/autonomy-level/${l.code}`,\n name: `Autonomy level ${l.code} — ${l.title.en}`,\n description: l.description.en,\n mimeType: \"application/json\",\n });\n }\n\n /* Dimensions */\n const dimensions = await registry.content.loadDimensions();\n for (const d of dimensions) {\n items.push({\n uri: `acf://framework/dimension/${d.code}`,\n name: `Maturity dimension ${d.code} — ${d.title.en}`,\n description: d.description.en,\n mimeType: \"application/json\",\n });\n }\n\n /* DDAO */\n items.push({\n uri: \"acf://framework/ddao\",\n name: \"DDAO — Delegated Decision Agent Officer\",\n description: \"Canonical ACF® role definition for autonomous-agent guardianship.\",\n mimeType: \"application/json\",\n });\n\n /* Fiches */\n for (let i = 0; i <= 16; i++) {\n const code = `ACF-${String(i).padStart(2, \"0\")}`;\n items.push({\n uri: `acf://fiche/${code}`,\n name: `ACF® card ${code}`,\n description: `One of the 17 ACF® methodological cards (V1.0).`,\n mimeType: \"text/markdown\",\n });\n }\n\n /* Glossary */\n items.push({\n uri: \"acf://glossary\",\n name: \"ACF® Glossary index\",\n description: \"List of canonical ACF® terms with cross-refs.\",\n mimeType: \"application/json\",\n });\n\n /* Meta */\n items.push({\n uri: \"acf://meta\",\n name: \"ACF® doctrine metadata\",\n description: \"Framework version, content hash, archive URL, supported locales.\",\n mimeType: \"application/json\",\n });\n\n return items;\n}\n\nexport async function readResource(\n registry: AcfRegistry,\n uri: string,\n acceptLanguage?: string,\n): Promise<ResourceReadResult> {\n const parsed = parseAcfUri(uri);\n const locale = negotiateLocale({\n explicit: parsed.locale,\n acceptLanguage,\n envLocale: process.env[\"ACF_MCP_LOCALE\"],\n });\n\n switch (parsed.category) {\n case \"framework_principle\": {\n const list = await registry.content.loadPrinciples();\n const found = list.find((p) => p.code === parsed.id);\n if (!found) throw new Error(`Principle not found: ${parsed.id}`);\n return jsonResource(uri, found);\n }\n case \"framework_autonomy_level\": {\n const list = await registry.content.loadAutonomyLevels();\n const found = list.find((l) => l.code === parsed.id);\n if (!found) throw new Error(`Autonomy level not found: ${parsed.id}`);\n return jsonResource(uri, found);\n }\n case \"framework_dimension\": {\n const list = await registry.content.loadDimensions();\n const found = list.find((d) => d.code === parsed.id);\n if (!found) throw new Error(`Dimension not found: ${parsed.id}`);\n return jsonResource(uri, found);\n }\n case \"framework_ddao\": {\n return jsonResource(uri, await registry.content.loadDdao());\n }\n case \"fiche\": {\n const fiche = await registry.content.loadFiche(parsed.id ?? \"\", locale);\n return {\n contents: [\n {\n uri,\n mimeType: \"text/markdown\",\n text: renderFicheMarkdown(fiche),\n },\n ],\n };\n }\n case \"glossary\": {\n // loadGlossary returns { entries, served_locale, is_fallback } envelope\n const { entries } = await registry.content.loadGlossary(locale);\n return jsonResource(uri, entries);\n }\n case \"glossary_entry\": {\n // loadGlossaryEntry returns { entry, served_locale, is_fallback } | null\n const result = await registry.content.loadGlossaryEntry(parsed.id ?? \"\", locale);\n if (!result) throw new Error(`Glossary entry not found: ${parsed.id}`);\n return jsonResource(uri, result.entry);\n }\n case \"meta\": {\n return jsonResource(uri, await registry.content.loadMeta());\n }\n default:\n throw new Error(`Resource not implemented in V1.0: ${parsed.category}`);\n }\n}\n\nfunction jsonResource(uri: string, data: unknown): ResourceReadResult {\n return {\n contents: [\n { uri, mimeType: \"application/json\", text: JSON.stringify(data, null, 2) },\n ],\n };\n}\n\nfunction renderFicheMarkdown(fiche: {\n frontmatter: Record<string, unknown>;\n body: string;\n served_locale: string;\n is_fallback: boolean;\n}): string {\n const head = [\n \"---\",\n `served_locale: ${fiche.served_locale}`,\n `is_fallback: ${fiche.is_fallback}`,\n \"---\",\n \"\",\n ].join(\"\\n\");\n return head + fiche.body;\n}\n\n/* -------------------- SDK wiring -------------------- */\n\nexport async function registerResources(\n server: Server,\n registry: AcfRegistry,\n): Promise<void> {\n server.setRequestHandler(ListResourcesRequestSchema, async () => ({\n resources: await listResources(registry),\n }));\n\n server.setRequestHandler(ReadResourceRequestSchema, async (req) => {\n return readResource(registry, req.params.uri);\n });\n}\n","/**\n * Canonical problem-first descriptions for the 11 V1.0 tools.\n * Single source of truth — referenced by tools.ts and snapshot tests.\n */\n\nexport const TOOL_DESCRIPTIONS = {\n \"acf.search\":\n \"When you don't know which ACF® resource is most relevant to the situation at hand (a question, a regulator request, a board challenge…), search the full ACF® corpus and rank candidate resources by relevance.\",\n \"acf.fiche.lookup\":\n \"When facing a specific governance question (defining an agent's mandate, designing a kill switch, building a decision register…), retrieve the canonical ACF® methodological card that applies — with its example, its mapping to principles and its related cards.\",\n \"acf.regulation.article\":\n \"When a regulator, an auditor or a board references a specific article (AI Act Art. 9, GDPR Art. 35, DORA Art. 28, NIS2 Art. 21, ISO 42001 §6…), get the verified text and its operational translation into the ACF® framework — which principles it activates, which maturity dimensions it stresses, which fiches operationalise it.\",\n \"acf.glossary.define\":\n \"When governance vocabulary becomes ambiguous (what is a DDAO? what does Decision Sovereignty exactly mean? when does an agent transition from N1 to N2?), get the canonical ACF® definition and its connection to the rest of the doctrine.\",\n \"acf.cite\":\n \"When writing a thesis, a regulatory filing, a board memo or an academic paper that needs to reference ACF®, produce a properly formatted citation in the requested style (APA, MLA, Chicago, ISO 690, BibTeX).\",\n \"acf.advisor\":\n \"When a user describes a real AI use case and needs a structured ACF® governance assessment in return — which principles fire, which maturity dimensions are critical, which autonomy level fits, which regulatory obligations apply, which fiches to mobilise in what order, what are the first operational actions, what are the operational risks. This is the conversion tool: from documentation library to governance advisor.\",\n \"acf.classify-agent\":\n \"When a system owner needs a first-pass governance qualification of an AI agent before go-live — what autonomy level it likely operates at, what risk class it likely carries, what regulations apply, what controls to put in place, who should sign off — get one structured preliminary assessment covering all five questions in a single call. Input kept deliberately simple (10 qualified fields); output is structured for human review, not for autonomous regulatory decision-making.\",\n \"acf.assess-autonomy\":\n \"When deciding how much autonomy to grant an agent — should it propose, decide or execute? what triggers human review? what is the kill switch design? — get a first-pass assessment grounded in the 4 ACF® autonomy levels with explicit go/no-go criteria, gating thresholds, and uncertainty signalling for human review.\",\n \"acf.identify-governance-gaps\":\n \"When auditing your current AI governance setup — what does ACF® suggest you should have that you don't? — get a first-pass gap analysis across the 6 maturity dimensions, prioritised by criticality, with remediation actions, quick wins, and explicit uncertainty signalling on which gaps were inferred vs declared.\",\n \"acf.map-ai-act-obligations\":\n \"When a system has been preliminarily qualified as high-risk and you need the exhaustive list of AI Act obligations that apply — Art. 9 risk management, Art. 10 data, Art. 11 docs, Art. 12 logs, Art. 13 transparency, Art. 14 human oversight, Art. 15 robustness, GPAI Art. 51-55 — get the full obligation set structured by lifecycle phase (pre-go-live / continuous / on-incident) with deadlines (incl. Digital Omnibus deferrals) and ACF® operational translation.\",\n \"acf.assign-ddao-controls\":\n \"When a DDAO needs concrete controls assigned to an autonomous agent — what kill switches, what escalation thresholds, what audit trails, what documentation, who owns each control — get the ACF® control set scoped to the agent's autonomy level and risk class, with double vocabulary (plain-English recommended_controls + ACF-canonical ddao_controls) for external clarity.\",\n \"acf.evaluate-agent-mandate\":\n \"When an existing agent mandate already exists (drafted or proposed for DDAO sign-off) and you need a first-pass audit before go-live or regulatory inspection — does it cover the decision perimeter, the escalation thresholds, the kill switch, the audit trail, the documentation duty? — get a structured preliminary verdict with strengths, gaps, required additions, and explicit gaps_to_validate for the human reviewer.\",\n} as const;\n\nexport type AcfToolName = keyof typeof TOOL_DESCRIPTIONS;\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\n\n/* -------------------- acf.search -------------------- */\n\nexport const SearchInputSchema = z.object({\n query: z.string().min(2).max(200),\n scope: z\n .enum([\"all\", \"framework\", \"fiche\", \"guide\", \"whitepaper\", \"glossary\"])\n .default(\"all\"),\n locale: AcfLocaleSchema.optional(),\n limit: z.number().int().min(1).max(20).default(5),\n});\nexport type SearchInput = z.infer<typeof SearchInputSchema>;\n\nexport async function handleSearchTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<{ hits: ReturnType<AcfRegistry[\"search\"][\"search\"]> }> {\n const input = SearchInputSchema.parse(rawInput);\n const locale = input.locale ?? \"en\";\n const hits = registry.search.search({\n query: input.query,\n scope: input.scope,\n locale,\n limit: input.limit,\n });\n return { hits };\n}\n\n/* -------------------- acf.fiche.lookup -------------------- */\n\nexport const FicheLookupInputSchema = z.object({\n code: z.string().regex(/^ACF-(0[0-9]|1[0-6])$/),\n locale: AcfLocaleSchema.optional(),\n include_frontmatter: z.boolean().default(true),\n});\nexport type FicheLookupInput = z.infer<typeof FicheLookupInputSchema>;\n\nexport interface FicheLookupOutput {\n code: string;\n title: string;\n markdown: string;\n metadata: Record<string, unknown>;\n pdf_url: string;\n uri: string;\n served_locale: string;\n is_fallback: boolean;\n}\n\nexport async function handleFicheLookupTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<FicheLookupOutput> {\n const input = FicheLookupInputSchema.parse(rawInput);\n const locale = input.locale ?? \"en\";\n const fiche = await registry.content.loadFiche(input.code, locale);\n return {\n code: fiche.frontmatter.code,\n title: fiche.frontmatter.title,\n markdown: fiche.body,\n metadata: input.include_frontmatter\n ? (fiche.frontmatter as unknown as Record<string, unknown>)\n : {},\n pdf_url: fiche.frontmatter.pdf_url ?? \"\",\n uri: `acf://fiche/${fiche.frontmatter.code}`,\n served_locale: fiche.served_locale,\n is_fallback: fiche.is_fallback,\n };\n}\n\n/* -------------------- acf.regulation.article -------------------- */\n\nexport const RegulationArticleInputSchema = z.object({\n regulation: z.enum([\"ai-act\", \"gdpr\", \"dora\", \"nis2\", \"iso-42001\"]),\n article: z.string().min(1).max(20),\n locale: AcfLocaleSchema.optional(),\n});\nexport type RegulationArticleInput = z.infer<typeof RegulationArticleInputSchema>;\n\nexport interface RegulationArticleOutput {\n regulation: string;\n article: string;\n title: string;\n text: string;\n mapping: {\n principles: string[];\n dimensions: string[];\n fiches: string[];\n operational_note: string;\n };\n applicable_date?: string;\n}\n\n/**\n * V1.0 stub: the full text of each regulation article lives in\n * content/guides/<reg>.<locale>.md (Phase 11 fills these). For V1.0 baseline\n * we return a canonical mapping derived from the rules JSON, with\n * placeholder text. The 5 expert guides are content production deferred to\n * the guide-authoring sub-plan.\n */\nconst ARTICLE_MAPPINGS: Record<string, Record<string, RegulationArticleOutput>> = {\n \"ai-act\": {\n \"9\": {\n regulation: \"ai-act\",\n article: \"9\",\n title: \"Risk management system (high-risk AI systems)\",\n text: \"Providers of high-risk AI systems shall establish, implement, document and maintain a risk management system. See Regulation (EU) 2024/1689, Article 9.\",\n mapping: {\n principles: [\"P2\", \"P4\"],\n dimensions: [\"D5\", \"D6\"],\n fiches: [\"ACF-02\", \"ACF-11\"],\n operational_note:\n \"ACF® operationalises Art. 9 via ACF-02 (criticality matrix) + ACF-11 (risk assessment), bound by P4 (proportional governance).\",\n },\n applicable_date: \"2027-12-02\",\n },\n \"10\": {\n regulation: \"ai-act\",\n article: \"10\",\n title: \"Data and data governance (high-risk AI systems)\",\n text: \"Training, validation and testing data sets shall be subject to data governance and management practices appropriate for the intended purpose. See Regulation (EU) 2024/1689, Article 10.\",\n mapping: {\n principles: [\"P2\"],\n dimensions: [\"D5\"],\n fiches: [\"ACF-05\", \"ACF-13\"],\n operational_note:\n \"ACF® operationalises Art. 10 via ACF-05 (decision register) + ACF-13 (retention policy).\",\n },\n applicable_date: \"2027-12-02\",\n },\n \"14\": {\n regulation: \"ai-act\",\n article: \"14\",\n title: \"Human oversight (high-risk AI systems)\",\n text: \"High-risk AI systems shall be designed and developed so that they can be effectively overseen by natural persons. See Regulation (EU) 2024/1689, Article 14.\",\n mapping: {\n principles: [\"P3\"],\n dimensions: [\"D3\", \"D4\"],\n fiches: [\"ACF-07\", \"ACF-09\", \"ACF-14\"],\n operational_note:\n \"ACF® operationalises Art. 14 via P3 (ultimate human control), ACF-07 (kill switch), ACF-09 (escalation thresholds), ACF-14 (takeover drills).\",\n },\n applicable_date: \"2027-12-02\",\n },\n },\n \"gdpr\": {\n \"25\": {\n regulation: \"gdpr\",\n article: \"25\",\n title: \"Data protection by design and by default\",\n text: \"The controller shall implement appropriate technical and organisational measures to ensure data protection by design and by default. See Regulation (EU) 2016/679, Article 25.\",\n mapping: {\n principles: [\"P2\"],\n dimensions: [\"D3\", \"D5\"],\n fiches: [\"ACF-03\", \"ACF-13\"],\n operational_note:\n \"ACF® operationalises Art. 25 via ACF-03 (constitution forbidding non-purposeful PII access) + ACF-13 (retention policy).\",\n },\n },\n \"35\": {\n regulation: \"gdpr\",\n article: \"35\",\n title: \"Data protection impact assessment (DPIA)\",\n text: \"Where processing is likely to result in a high risk to the rights and freedoms of natural persons, the controller shall carry out a DPIA. See Regulation (EU) 2016/679, Article 35.\",\n mapping: {\n principles: [\"P2\"],\n dimensions: [\"D5\"],\n fiches: [\"ACF-11\"],\n operational_note:\n \"ACF® operationalises Art. 35 via ACF-11 (risk assessment) feeding the DPIA template.\",\n },\n },\n },\n};\n\nexport async function handleRegulationArticleTool(\n _registry: AcfRegistry,\n rawInput: unknown,\n): Promise<RegulationArticleOutput> {\n const input = RegulationArticleInputSchema.parse(rawInput);\n const reg = ARTICLE_MAPPINGS[input.regulation];\n if (!reg || !reg[input.article]) {\n throw new Error(\n `Article ${input.regulation} Art. ${input.article} not yet seeded in V1.0 — full expert guides arrive in content-authoring sub-plan.`,\n );\n }\n return reg[input.article]!;\n}\n\n/* -------------------- acf.glossary.define -------------------- */\n\nexport const GlossaryDefineInputSchema = z.object({\n term: z.string().min(1).max(80),\n locale: AcfLocaleSchema.optional(),\n});\nexport type GlossaryDefineInput = z.infer<typeof GlossaryDefineInputSchema>;\n\nexport interface GlossaryDefineOutput {\n term: string;\n expansion?: string;\n definition: string;\n related: { principles: string[]; fiches: string[] };\n served_locale: string;\n}\n\nexport async function handleGlossaryDefineTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<GlossaryDefineOutput> {\n const input = GlossaryDefineInputSchema.parse(rawInput);\n const locale = input.locale ?? \"en\";\n // loadGlossaryEntry returns { entry, served_locale, is_fallback } | null\n const result = await registry.content.loadGlossaryEntry(input.term, locale);\n if (!result) {\n throw new Error(`Glossary entry not found: ${input.term}`);\n }\n return {\n term: result.entry.term,\n expansion: result.entry.expansion,\n definition: result.entry.definition,\n related: {\n principles: result.entry.related_principles ?? [],\n fiches: result.entry.related_fiches ?? [],\n },\n // Use the ACTUAL served locale (which may be a fallback), not the requested one.\n served_locale: result.served_locale,\n };\n}\n\n/* -------------------- acf.cite -------------------- */\n\nexport const CiteInputSchema = z.object({\n uri: z.string().regex(/^acf:\\/\\//),\n style: z\n .enum([\"apa\", \"mla\", \"chicago\", \"iso-690\", \"bibtex\"])\n .default(\"apa\"),\n locale: AcfLocaleSchema.optional(),\n});\nexport type CiteInput = z.infer<typeof CiteInputSchema>;\n\nexport interface CiteOutput {\n citation: string;\n structured: { author: string; year: string; title: string; url: string };\n}\n\nconst CITATION_AUTHOR = \"Dorange, V.\";\nconst CITATION_YEAR = \"2026\";\nconst CITATION_BASE_URL = \"https://acfstandard.com\";\n\nfunction uriToUrlSlug(uri: string): string {\n // Strip the acf:// scheme, then turn the remaining path into a clean slug.\n // e.g. acf://framework/principle/P1 → framework-principle-P1\n return uri.replace(/^acf:\\/\\//, \"\").replace(/[^a-z0-9]+/gi, \"-\").replace(/^-|-$/g, \"\");\n}\n\nexport async function handleCiteTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<CiteOutput> {\n const input = CiteInputSchema.parse(rawInput);\n const meta = registry.meta;\n const slug = uriToUrlSlug(input.uri);\n const url = `${CITATION_BASE_URL}/doctrine/v${meta.framework_version}/${slug}`;\n const title = `Agentic Commerce Framework® (ACF®) — ${input.uri}`;\n const structured = {\n author: CITATION_AUTHOR,\n year: CITATION_YEAR,\n title,\n url,\n };\n let citation: string;\n switch (input.style) {\n case \"apa\":\n citation = `${CITATION_AUTHOR} (${CITATION_YEAR}). ${title}. ACF Standard. ${url}`;\n break;\n case \"mla\":\n citation = `${CITATION_AUTHOR} \"${title}.\" ACF Standard, ${CITATION_YEAR}, ${url}.`;\n break;\n case \"chicago\":\n citation = `${CITATION_AUTHOR} \"${title}.\" ACF Standard. ${CITATION_YEAR}. ${url}.`;\n break;\n case \"iso-690\":\n citation = `${CITATION_AUTHOR} ${title}. ACF Standard, ${CITATION_YEAR}. Available at: ${url}`;\n break;\n case \"bibtex\":\n citation = [\n `@misc{acf-${slug},`,\n ` author = {${CITATION_AUTHOR}},`,\n ` title = {${title}},`,\n ` year = {${CITATION_YEAR}},`,\n ` url = {${url}}`,\n \"}\",\n ].join(\"\\n\");\n break;\n }\n return { citation, structured };\n}\n","import { z } from \"zod\";\n\n/**\n * Minimal Zod → JSON Schema converter sufficient for MCP tool inputSchema.\n * Supports: ZodObject, ZodString, ZodNumber, ZodBoolean, ZodArray, ZodEnum,\n * ZodOptional, ZodDefault. Defers to z's openapi-style metadata via _def.\n *\n * We deliberately keep this small to avoid a heavyweight dep; if we need\n * more, add `zod-to-json-schema` package.\n */\nexport function zodToJsonSchema(schema: z.ZodTypeAny): object {\n return toSchema(schema);\n}\n\nfunction toSchema(s: z.ZodTypeAny): object {\n const def = s._def as { typeName: string };\n switch (def.typeName) {\n case \"ZodObject\": {\n const obj = s as z.ZodObject<z.ZodRawShape>;\n const properties: Record<string, object> = {};\n const required: string[] = [];\n const shape = obj.shape;\n for (const key of Object.keys(shape)) {\n const child = shape[key]!;\n properties[key] = toSchema(child);\n if (!isOptional(child)) required.push(key);\n }\n return {\n type: \"object\",\n properties,\n required,\n additionalProperties: false,\n };\n }\n case \"ZodString\": {\n const s2 = s as z.ZodString;\n const out: Record<string, unknown> = { type: \"string\" };\n const checks = (s2._def as { checks?: { kind: string; value?: number }[] }).checks ?? [];\n for (const c of checks) {\n if (c.kind === \"min\" && c.value !== undefined) out[\"minLength\"] = c.value;\n if (c.kind === \"max\" && c.value !== undefined) out[\"maxLength\"] = c.value;\n }\n return out;\n }\n case \"ZodNumber\": {\n const s2 = s as z.ZodNumber;\n const out: Record<string, unknown> = { type: \"number\" };\n const checks = (s2._def as { checks?: { kind: string; value?: number; inclusive?: boolean }[] }).checks ?? [];\n for (const c of checks) {\n if (c.kind === \"min\" && c.value !== undefined) out[\"minimum\"] = c.value;\n if (c.kind === \"max\" && c.value !== undefined) out[\"maximum\"] = c.value;\n if (c.kind === \"int\") out[\"type\"] = \"integer\";\n }\n return out;\n }\n case \"ZodBoolean\":\n return { type: \"boolean\" };\n case \"ZodEnum\": {\n const e = s as z.ZodEnum<[string, ...string[]]>;\n return { type: \"string\", enum: [...e.options] };\n }\n case \"ZodArray\": {\n const inner = (s._def as { type: z.ZodTypeAny }).type;\n return { type: \"array\", items: toSchema(inner) };\n }\n case \"ZodOptional\": {\n const inner = (s._def as { innerType: z.ZodTypeAny }).innerType;\n return toSchema(inner);\n }\n case \"ZodDefault\": {\n const inner = (s._def as { innerType: z.ZodTypeAny }).innerType;\n const out = toSchema(inner);\n const defaultValue = (s._def as { defaultValue: () => unknown }).defaultValue();\n return { ...out, default: defaultValue };\n }\n case \"ZodLiteral\": {\n const v = (s._def as { value: unknown }).value;\n return { const: v };\n }\n case \"ZodRecord\":\n return { type: \"object\", additionalProperties: true };\n default:\n return {};\n }\n}\n\nfunction isOptional(s: z.ZodTypeAny): boolean {\n const t = (s._def as { typeName: string }).typeName;\n return t === \"ZodOptional\" || t === \"ZodDefault\";\n}\n","import { z } from \"zod\";\nimport { AcfLocaleSchema } from \"./types\";\n\n/* -------------------- Enums -------------------- */\n\nexport const HumanApprovalEnum = z.enum([\"always\", \"sometimes\", \"never\"]);\nexport const PersonalDataEnum = z.enum([\n \"none\", \"standard\", \"sensitive_special\",\n]);\nexport const FinancialExposureEnum = z.enum([\n \"none\", \"low_operation\", \"medium_contract\", \"high_corporate\",\n]);\nexport const ExternalActionsEnum = z.enum([\n \"none\", \"read_only\", \"limited_write\", \"full_write\",\n]);\nexport const UsageAudienceEnum = z.enum([\n \"internal\", \"third_party_b2b\", \"public_consumer\",\n]);\nexport const JurisdictionEnum = z.enum([\n \"eu\", \"uk\", \"us\", \"ca\", \"ch\", \"br\", \"jp\", \"other\",\n]);\n\nexport const AiActTriggerEnum = z.enum([\n \"biometric_identity\",\n \"critical_infrastructure\",\n \"educational_assessment\",\n \"employment_recruitment\",\n \"credit_scoring\",\n \"law_enforcement\",\n \"migration_asylum\",\n \"justice_democracy\",\n \"none\",\n]);\n\nexport const ProcessingPurposeEnum = z.enum([\n \"hr\", \"marketing\", \"core_financial\", \"tech_support\", \"healthcare\",\n \"education\", \"public_service\", \"compliance_monitoring\", \"other\",\n]);\n\n/* -------------------- Input schema (10 qualified fields + hints) -------------------- */\n\nexport const ClassifyAgentInputSchema = z.object({\n name: z.string().min(2).max(200),\n description: z.string().min(20).max(1000),\n decisions_taken: z.array(z.string()).min(1).max(20),\n\n human_approval_required: HumanApprovalEnum,\n personal_data_level: PersonalDataEnum,\n financial_exposure: FinancialExposureEnum,\n external_actions: ExternalActionsEnum,\n\n gpai_used: z.boolean(),\n usage_audience: UsageAudienceEnum,\n sector: z.string().max(80).optional(),\n jurisdiction: z.array(JurisdictionEnum).optional(),\n\n ai_act_triggers: z.array(AiActTriggerEnum).optional(),\n processing_purposes: z.array(ProcessingPurposeEnum).optional(),\n\n locale: AcfLocaleSchema.optional(),\n});\nexport type ClassifyAgentInput = z.infer<typeof ClassifyAgentInputSchema>;\n\n/* -------------------- Extractors -------------------- */\n\nexport function extractFlags(input: ClassifyAgentInput): string[] {\n return [\n `human_approval_required:${input.human_approval_required}`,\n `personal_data_level:${input.personal_data_level}`,\n `financial_exposure:${input.financial_exposure}`,\n `external_actions:${input.external_actions}`,\n `usage_audience:${input.usage_audience}`,\n `gpai_used:${input.gpai_used}`,\n ];\n}\n\nexport function extractEnumHints(\n input: ClassifyAgentInput,\n): Record<string, string[]> {\n const hints: Record<string, string[]> = {};\n if (input.ai_act_triggers) hints[\"ai_act_triggers\"] = input.ai_act_triggers;\n if (input.processing_purposes)\n hints[\"processing_purposes\"] = input.processing_purposes;\n hints[\"usage_audience\"] = [input.usage_audience];\n hints[\"personal_data_level\"] = [input.personal_data_level];\n hints[\"gpai_used\"] = [String(input.gpai_used)];\n return hints;\n}\n","import { AcfLevel, AutonomyInferenceSchema } from \"./rule-types\";\nimport { z } from \"zod\";\n\ntype Rules = z.infer<typeof AutonomyInferenceSchema>;\n\nexport interface AutonomyInferInput {\n human_approval_required: string;\n external_actions: string;\n}\n\nexport function inferAutonomy(\n rules: Rules,\n input: AutonomyInferInput,\n): { level: AcfLevel; rationale: string; rule_id: string } {\n for (const t of rules.thresholds) {\n const happroved = t.conditions[\"human_approval_required\"] ?? [];\n const ext = t.conditions[\"external_actions\"] ?? [];\n if (\n happroved.includes(input.human_approval_required) &&\n ext.includes(input.external_actions)\n ) {\n return {\n level: t.level,\n rationale: t.rationale_template,\n rule_id: `autonomy-inference.${t.level}`,\n };\n }\n }\n return {\n level: \"N1\",\n rationale:\n \"No clear autonomy threshold matched the declared inputs; defaulting to N1 (supervised). Confirm with the team.\",\n rule_id: \"autonomy-inference.default-N1\",\n };\n}\n","import { Criticality, CriticalityMatrixSchema } from \"./rule-types\";\nimport { z } from \"zod\";\n\ntype Matrix = z.infer<typeof CriticalityMatrixSchema>;\n\nexport interface CriticalityInferInput {\n personal_data_level: \"none\" | \"standard\" | \"sensitive_special\";\n financial_exposure:\n | \"none\" | \"low_operation\" | \"medium_contract\" | \"high_corporate\";\n}\n\nexport function inferCriticality(\n matrix: Matrix,\n input: CriticalityInferInput,\n): {\n score: Criticality;\n rationale: string;\n matrix_ref: string;\n rule_id: string;\n} {\n for (const cell of matrix.cells) {\n if (\n cell.personal_data_level === input.personal_data_level &&\n cell.financial_exposure === input.financial_exposure\n ) {\n return {\n score: cell.score,\n rationale: cell.rationale_template,\n matrix_ref: `cell(${cell.personal_data_level}, ${cell.financial_exposure})`,\n rule_id: `criticality-matrix.${cell.personal_data_level}-${cell.financial_exposure}`,\n };\n }\n }\n return {\n score: \"medium\",\n rationale:\n \"Combination of personal_data_level + financial_exposure not yet calibrated; defaulting to medium for safety.\",\n matrix_ref: \"default-medium\",\n rule_id: \"criticality-matrix.default-medium\",\n };\n}\n","export interface NegationAwareHit {\n pattern: string;\n index: number;\n negated: boolean;\n}\n\nexport interface NegationAwareResult {\n matched: boolean;\n hits: NegationAwareHit[];\n}\n\n/**\n * Simple negation-aware matcher (V1.0). Per spec §5.7:\n * - Regex find each pattern in `text` (case-insensitive)\n * - For each hit, look backward 40 chars for a negation token in FR or EN\n * - Mark the hit as negated if a negation precedes within that window\n * - The overall `matched` flag is true iff at least one non-negated hit exists\n *\n * Trade-off: this is a \"good enough\" baseline. False positives are mitigated by\n * (a) presence of optional enums (ai_act_triggers / processing_purposes) which\n * take precedence when provided, (b) confidence flagged accordingly, and (c)\n * requires_human_review: true on every REASON output.\n */\nconst NEGATION_TOKENS = [\n // FR\n \"n'a pas\", \"n'est pas\", \"ne pas\", \"ne sont pas\", \"n'analyse pas\",\n \"pas de\", \"aucun\", \"aucune\", \"jamais\", \"n'... jamais\", \"ne... jamais\",\n // EN\n \"not \", \"no \", \"never\", \"without\", \"absent\",\n];\n\nconst NEGATION_WINDOW = 40;\n\nconst NEGATION_REGEX = new RegExp(\n `(${NEGATION_TOKENS\n .map((t) => t.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"))\n .join(\"|\")})`,\n \"i\",\n);\n\nexport function negationAwareMatch(\n text: string,\n patterns: string[],\n): NegationAwareResult {\n const lower = text.toLowerCase();\n const hits: NegationAwareHit[] = [];\n\n for (const pattern of patterns) {\n const p = pattern.toLowerCase();\n let from = 0;\n while (from <= lower.length) {\n const i = lower.indexOf(p, from);\n if (i === -1) break;\n const windowStart = Math.max(0, i - NEGATION_WINDOW);\n const before = lower.slice(windowStart, i);\n const negated = NEGATION_REGEX.test(before);\n hits.push({ pattern, index: i, negated });\n from = i + p.length;\n }\n }\n\n return {\n matched: hits.some((h) => !h.negated),\n hits,\n };\n}\n","import { Trigger } from \"./rule-types\";\nimport { negationAwareMatch } from \"./negation-aware\";\n\nexport interface TriggerInput {\n text: string;\n enums: Record<string, string[]>;\n flags: string[];\n}\n\nexport interface TriggerResult {\n fired: boolean;\n evidence: string[];\n}\n\nexport function evaluateTrigger(\n trigger: Trigger,\n input: TriggerInput,\n): TriggerResult {\n const evidence: string[] = [];\n let fired = false;\n\n /* Keyword patterns */\n if (trigger.keyword_patterns && trigger.keyword_patterns.length > 0) {\n const r = negationAwareMatch(input.text, trigger.keyword_patterns);\n if (r.matched) {\n fired = true;\n for (const h of r.hits) {\n if (!h.negated) evidence.push(`keyword:${h.pattern}`);\n }\n }\n }\n\n /* Enum match */\n if (trigger.enum_match) {\n for (const [enumKey, allowed] of Object.entries(trigger.enum_match)) {\n const provided = input.enums[enumKey] ?? [];\n for (const v of provided) {\n if (allowed.includes(v)) {\n fired = true;\n evidence.push(`enum:${enumKey}=${v}`);\n }\n }\n }\n }\n\n /* Structured flags */\n if (trigger.structured_flags) {\n for (const flag of trigger.structured_flags) {\n if (input.flags.includes(flag)) {\n fired = true;\n evidence.push(`flag:${flag}`);\n }\n }\n }\n\n return { fired, evidence };\n}\n","import { z } from \"zod\";\nimport {\n AiActAnnexIIISchema, AiActAnnexISchema, GpaiTriggersSchema,\n} from \"./rule-types\";\nimport { evaluateTrigger, TriggerInput } from \"./trigger-eval\";\n\ntype AnnexIII = z.infer<typeof AiActAnnexIIISchema>;\ntype AnnexI = z.infer<typeof AiActAnnexISchema>;\ntype Gpai = z.infer<typeof GpaiTriggersSchema>;\n\nexport interface ObligationItem {\n article: string;\n requirement: string;\n applicable_date: string;\n}\n\nexport interface ObligationsInferOut {\n firedCategories: {\n id: string;\n title: string;\n obligations: string[];\n fiches: string[];\n confidence_base: \"low\" | \"medium\" | \"high\";\n evidence: string[];\n source: \"annex-iii\" | \"annex-i\";\n }[];\n gpaiObligations: ObligationItem[];\n rationale_per_rule: {\n rule_id: string;\n rule_version: string;\n fired: boolean;\n evidence: string;\n }[];\n}\n\nexport interface InferRulesBundle {\n annexIII: AnnexIII;\n annexI: AnnexI;\n gpai: Gpai;\n}\n\nexport function inferAiActObligations(\n bundle: InferRulesBundle,\n input: TriggerInput,\n): ObligationsInferOut {\n const out: ObligationsInferOut = {\n firedCategories: [],\n gpaiObligations: [],\n rationale_per_rule: [],\n };\n\n /* Annex III */\n for (const cat of bundle.annexIII.categories) {\n const r = evaluateTrigger(cat.triggers, input);\n out.rationale_per_rule.push({\n rule_id: `ai-act-annex-iii.${cat.id}`,\n rule_version: bundle.annexIII.version,\n fired: r.fired,\n evidence: r.evidence.join(\"; \"),\n });\n if (r.fired) {\n out.firedCategories.push({\n id: cat.id,\n title: cat.title,\n obligations: cat.obligations,\n fiches: cat.fiches,\n confidence_base: cat.confidence_base,\n evidence: r.evidence,\n source: \"annex-iii\",\n });\n }\n }\n\n /* Annex I */\n for (const cat of bundle.annexI.categories) {\n const r = evaluateTrigger(cat.triggers, input);\n out.rationale_per_rule.push({\n rule_id: `ai-act-annex-i.${cat.id}`,\n rule_version: bundle.annexI.version,\n fired: r.fired,\n evidence: r.evidence.join(\"; \"),\n });\n if (r.fired) {\n out.firedCategories.push({\n id: cat.id,\n title: cat.title,\n obligations: cat.obligations,\n fiches: cat.fiches,\n confidence_base: cat.confidence_base,\n evidence: r.evidence,\n source: \"annex-i\",\n });\n }\n }\n\n /* GPAI */\n const gpaiR = evaluateTrigger(bundle.gpai.triggers, input);\n out.rationale_per_rule.push({\n rule_id: \"gpai-triggers\",\n rule_version: bundle.gpai.version,\n fired: gpaiR.fired,\n evidence: gpaiR.evidence.join(\"; \"),\n });\n if (gpaiR.fired) {\n out.gpaiObligations = bundle.gpai.obligations\n .filter((o) => !o.systemic_risk_only)\n .map((o) => ({\n article: o.article,\n requirement: o.requirement,\n applicable_date: o.applicable_date,\n }));\n }\n\n return out;\n}\n","import { z } from \"zod\";\nimport {\n AiActRolesSchema, GdprQualificationSchema,\n Confidence,\n} from \"./rule-types\";\nimport { evaluateTrigger, TriggerInput } from \"./trigger-eval\";\n\ntype AiActRoles = z.infer<typeof AiActRolesSchema>;\ntype GdprRules = z.infer<typeof GdprQualificationSchema>;\n\nexport interface RoleInferOut {\n role: string;\n confidence: Confidence;\n rationale: string;\n rule_id: string;\n evidence: string[];\n}\n\nexport function inferAiActRole(\n rules: AiActRoles,\n input: TriggerInput,\n): RoleInferOut {\n for (const r of rules.rules) {\n const fired = evaluateTrigger(r.triggers, input);\n if (fired.fired) {\n return {\n role: r.role,\n confidence: r.confidence_base,\n rationale: r.rationale_template,\n rule_id: `ai-act-roles.${r.id}`,\n evidence: fired.evidence,\n };\n }\n }\n return {\n role: \"not_applicable\",\n confidence: \"low\",\n rationale:\n \"No AI Act role rule fired with the declared inputs. Defaulting to not_applicable — confirm manually.\",\n rule_id: \"ai-act-roles.default-na\",\n evidence: [],\n };\n}\n\nexport function inferGdprRole(\n rules: GdprRules,\n input: TriggerInput,\n): RoleInferOut {\n for (const c of rules.cases) {\n const fired = evaluateTrigger(c.triggers, input);\n if (fired.fired) {\n return {\n role: c.role,\n confidence: c.confidence_base,\n rationale: c.rationale_template,\n rule_id: `gdpr-qualification.${c.id}`,\n evidence: fired.evidence,\n };\n }\n }\n return {\n role: \"not_applicable\",\n confidence: \"low\",\n rationale:\n \"No GDPR qualification rule fired; defaulting to not_applicable — confirm manually whether any PII transits the agent.\",\n rule_id: \"gdpr-qualification.default-na\",\n evidence: [],\n };\n}\n","import { z } from \"zod\";\nimport { SignOffMatrixSchema } from \"./rule-types\";\n\ntype Matrix = z.infer<typeof SignOffMatrixSchema>;\n\nexport interface SignOffInput {\n criticality: \"low\" | \"medium\" | \"high\" | \"critical\";\n personal_data_level: \"none\" | \"standard\" | \"sensitive_special\";\n financial_exposure:\n | \"none\" | \"low_operation\" | \"medium_contract\" | \"high_corporate\";\n}\n\nexport interface SignOffOut {\n required: {\n security: boolean;\n privacy: boolean;\n compliance: boolean;\n legal: boolean;\n business_sponsor: boolean;\n board: boolean;\n };\n rule_id: string;\n}\n\nconst DEFAULT: SignOffOut[\"required\"] = {\n security: false,\n privacy: false,\n compliance: false,\n legal: false,\n business_sponsor: true,\n board: false,\n};\n\nexport function inferSignOff(matrix: Matrix, input: SignOffInput): SignOffOut {\n // Pick the first rule that matches exactly (criticality + PII + financial)\n for (const rule of matrix.rules) {\n if (\n rule.criticality === input.criticality &&\n rule.personal_data_level === input.personal_data_level &&\n rule.financial_exposure === input.financial_exposure\n ) {\n return {\n required: rule.required,\n rule_id: `sign-off-matrix.${rule.criticality}-${rule.personal_data_level}-${rule.financial_exposure}`,\n };\n }\n }\n // Fallback: pick the closest by criticality (escalate on PII/financial unknown)\n for (const rule of matrix.rules) {\n if (rule.criticality === input.criticality) {\n return {\n required: rule.required,\n rule_id: `sign-off-matrix.${rule.criticality}-fallback`,\n };\n }\n }\n return { required: DEFAULT, rule_id: \"sign-off-matrix.default\" };\n}\n","import { z } from \"zod\";\nimport { DdaoControlsMappingSchema } from \"./rule-types\";\n\ntype Mapping = z.infer<typeof DdaoControlsMappingSchema>;\ntype LevelKey = \"N0\" | \"N1\" | \"N2\" | \"N3\";\ntype RiskKey = \"low\" | \"medium\" | \"high\" | \"critical\";\n\nconst LEVEL_ORDER: LevelKey[] = [\"N0\", \"N1\", \"N2\", \"N3\"];\nconst RISK_ORDER: RiskKey[] = [\"low\", \"medium\", \"high\", \"critical\"];\n\nfunction clampNext<T extends string>(\n order: T[], value: T, delta: -1 | 1,\n): T {\n const i = order.indexOf(value);\n const j = Math.min(order.length - 1, Math.max(0, i + delta));\n return order[j]!;\n}\n\nexport interface ControlsInput {\n level: LevelKey;\n risk: RiskKey;\n}\n\nexport function inferDdaoControls(mapping: Mapping, input: ControlsInput) {\n const candidates = [\n { level: input.level, risk: input.risk },\n { level: input.level, risk: clampNext(RISK_ORDER, input.risk, +1) },\n { level: clampNext(LEVEL_ORDER, input.level, +1), risk: input.risk },\n { level: input.level, risk: clampNext(RISK_ORDER, input.risk, -1) },\n { level: clampNext(LEVEL_ORDER, input.level, -1), risk: input.risk },\n ];\n\n for (const c of candidates) {\n const found = mapping.mappings.find(\n (m) => m.level === c.level && m.risk === c.risk,\n );\n if (found) {\n return {\n recommended_controls: found.recommended_controls,\n ddao_controls: found.ddao_controls,\n rule_id: `ddao-controls-mapping.${c.level}-${c.risk}`,\n };\n }\n }\n return {\n recommended_controls: [],\n ddao_controls: [],\n rule_id: \"ddao-controls-mapping.fallback-empty\",\n };\n}\n","import { Confidence } from \"./rule-types\";\n\nexport interface ConfidenceInputs {\n ruleBaseConfidence: Confidence;\n enumProvided: boolean;\n contextFieldsProvided: number; // sector, jurisdiction, gpai_used…\n contradictions: number;\n}\n\nconst ORDER: Confidence[] = [\"low\", \"medium\", \"high\"];\n\nfunction step(c: Confidence, delta: number): Confidence {\n const i = ORDER.indexOf(c);\n const j = Math.min(ORDER.length - 1, Math.max(0, i + delta));\n return ORDER[j]!;\n}\n\nexport function aggregateConfidence(input: ConfidenceInputs): Confidence {\n let current = input.ruleBaseConfidence;\n\n if (input.enumProvided) current = step(current, +0);\n else current = step(current, -1);\n\n if (input.contextFieldsProvided >= 3) current = step(current, +0);\n else if (input.contextFieldsProvided === 0) current = step(current, -1);\n\n if (input.contradictions === 1) current = step(current, -1);\n else if (input.contradictions >= 2) current = step(current, -2);\n\n return current;\n}\n","/**\n * Canonical disclaimer attached to every REASON tool output.\n *\n * MODIFYING THIS STRING REQUIRES:\n * 1. an explicit PR with rationale,\n * 2. updating the snapshot in tests/constants/disclaimer.test.ts,\n * 3. updating the 6 REASON-tool snapshot tests simultaneously,\n * 4. a changelog entry.\n *\n * The CI snapshot check blocks unilateral changes. Cf. spec §11.1.\n */\nexport const ACF_REASON_DISCLAIMER =\n \"Preliminary qualification produced by the ACF® deterministic engine. \" +\n \"Not legal advice. Human review required. \" +\n \"Do not use for autonomous regulatory decision-making. \" +\n \"See doctrine_archive_url for the version of the doctrine used.\";\n","import { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\n/**\n * Regulatory snapshot — names every corpus the engine reasoned against,\n * with the date of the snapshot. Bumped any time a regulation evolves.\n */\nexport const REGULATORY_SNAPSHOT =\n \"EU AI Act (Reg. 2024/1689, incl. Digital Omnibus deferral) + GDPR (Reg. 2016/679) \" +\n \"+ DORA (Reg. 2022/2554) + NIS2 (Dir. 2022/2555) + ISO 42001:2023 — as of 2026-06-07\";\n\nexport interface DoctrineFooterInput {\n frameworkVersion: string;\n rulesVersion: string;\n contentHash: string;\n archiveUrl: string;\n}\n\nexport interface DoctrineFooter {\n doctrine_version: string;\n doctrine_hash: string;\n doctrine_archive_url: string;\n regulatory_snapshot: string;\n generated_at: string;\n requires_human_review: true;\n disclaimer: string;\n}\n\nexport function buildDoctrineFooter(\n input: DoctrineFooterInput,\n): DoctrineFooter {\n return {\n doctrine_version: `ACF framework v${input.frameworkVersion} / rules ${input.rulesVersion}`,\n doctrine_hash: input.contentHash,\n doctrine_archive_url: input.archiveUrl,\n regulatory_snapshot: REGULATORY_SNAPSHOT,\n generated_at: new Date().toISOString(),\n requires_human_review: true,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport {\n ClassifyAgentInputSchema, extractFlags, extractEnumHints,\n} from \"./classify-agent-input\";\nimport { inferAutonomy } from \"./infer-autonomy\";\nimport { inferCriticality } from \"./infer-criticality\";\nimport { inferAiActObligations } from \"./infer-obligations\";\nimport { inferAiActRole, inferGdprRole } from \"./infer-roles\";\nimport { inferSignOff } from \"./infer-sign-off\";\nimport { inferDdaoControls } from \"./infer-controls\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const CLASSIFY_AGENT_CONVERSION_CTA =\n \"Generate the full auditable PDF report on https://acfstandard.com/compliance?ref=mcp\";\n\nexport interface ClassifyAgentOutput {\n acf_level: { level: \"N0\" | \"N1\" | \"N2\" | \"N3\"; rationale: string };\n criticality: {\n score: \"low\" | \"medium\" | \"high\" | \"critical\";\n rationale: string;\n matrix_ref: string;\n };\n regulatory_qualifications: {\n likely_ai_act_role: string;\n likely_gdpr_status: string;\n };\n regulatory_qualifications_confidence: {\n likely_ai_act_role: \"low\" | \"medium\" | \"high\";\n likely_gdpr_status: \"low\" | \"medium\" | \"high\";\n };\n ai_act_obligations: {\n pre_go_live: { article: string; requirement: string; applicable_date: string }[];\n continuous: { article: string; requirement: string; applicable_date: string }[];\n on_incident: { article: string; requirement: string; applicable_date: string }[];\n };\n applicable_fiches: { code: string; why: string }[];\n recommended_controls: string[];\n ddao_controls: string[];\n ddao_escalation: { required: boolean; trigger_thresholds: string[] };\n sign_off_required: {\n security: boolean; privacy: boolean; compliance: boolean;\n legal: boolean; business_sponsor: boolean; board: boolean;\n };\n\n /* footer + traceability */\n confidence: \"low\" | \"medium\" | \"high\";\n assumptions: string[];\n gaps_to_validate: string[];\n requires_human_review: true;\n rationale_per_rule: {\n rule_id: string; rule_version: string; fired: boolean; evidence: string;\n }[];\n doctrine_version: string;\n doctrine_hash: string;\n doctrine_archive_url: string;\n regulatory_snapshot: string;\n generated_at: string;\n conversion_cta: string;\n disclaimer: string;\n}\n\nconst PRE_GO_LIVE_ARTICLES = new Set([\n \"art-9\", \"art-10\", \"art-11\", \"art-13\", \"art-43\", \"art-50\",\n]);\nconst ON_INCIDENT_ARTICLES = new Set([\n \"art-15\", \"art-72\", \"art-79\",\n]);\n\nexport async function handleClassifyAgentTool(\n registry: AcfRegistry,\n rawInput: unknown,\n): Promise<ClassifyAgentOutput> {\n const input = ClassifyAgentInputSchema.parse(rawInput);\n\n /* Load rules */\n const [\n autonomyRules,\n criticalityRules,\n annexIII,\n annexI,\n gpai,\n aiActRoles,\n gdprRules,\n signOffMatrix,\n controlsMapping,\n rulesMeta,\n ] = await Promise.all([\n registry.rules.loadAutonomyInference(),\n registry.rules.loadCriticalityMatrix(),\n registry.rules.loadAiActAnnexIII(),\n registry.rules.loadAiActAnnexI(),\n registry.rules.loadGpaiTriggers(),\n registry.rules.loadAiActRoles(),\n registry.rules.loadGdprQualification(),\n registry.rules.loadSignOffMatrix(),\n registry.rules.loadDdaoControlsMapping(),\n registry.rules.loadRulesMeta(),\n ]);\n\n /* Extractors */\n const flags = extractFlags(input);\n const enums = extractEnumHints(input);\n const triggerInput = { text: input.description, enums, flags };\n\n /* Autonomy + criticality */\n const autonomy = inferAutonomy(autonomyRules, input);\n const criticality = inferCriticality(criticalityRules, input);\n\n /* AI Act obligations */\n const obligationsOut = inferAiActObligations(\n { annexIII, annexI, gpai },\n triggerInput,\n );\n\n /* AI Act role + GDPR */\n const aiActRole = inferAiActRole(aiActRoles, triggerInput);\n const gdprRole = inferGdprRole(gdprRules, triggerInput);\n\n /* Sign-off + controls */\n const signOff = inferSignOff(signOffMatrix, {\n criticality: criticality.score,\n personal_data_level: input.personal_data_level,\n financial_exposure: input.financial_exposure,\n });\n const controls = inferDdaoControls(controlsMapping, {\n level: autonomy.level,\n risk: criticality.score,\n });\n\n /* Confidence + assumptions */\n const enumProvided =\n (input.ai_act_triggers?.length ?? 0) > 0 ||\n (input.processing_purposes?.length ?? 0) > 0;\n const contextFieldsProvided =\n (input.sector ? 1 : 0) + (input.jurisdiction?.length ? 1 : 0) +\n (input.gpai_used !== undefined ? 1 : 0) + 1; /* usage_audience always there */\n\n const contradictions = computeContradictions(input, obligationsOut);\n const confidence = aggregateConfidence({\n ruleBaseConfidence: averageConfidence(obligationsOut.firedCategories.map((c) => c.confidence_base)),\n enumProvided,\n contextFieldsProvided,\n contradictions,\n });\n\n const assumptions: string[] = [];\n const gaps: string[] = [];\n if (!input.sector) {\n assumptions.push(\"sector not provided; the criticality calibration uses the neutral default.\");\n gaps.push(\"confirm sector — banking/health/critical-infra modifiers may shift criticality.\");\n }\n if (!input.jurisdiction || input.jurisdiction.length === 0) {\n assumptions.push(\"jurisdiction not provided; AI Act + GDPR reasoning assumes EU.\");\n gaps.push(\"confirm jurisdiction(s) — non-EU jurisdictions may require entirely different qualifications.\");\n }\n if (!enumProvided) {\n assumptions.push(\"ai_act_triggers and processing_purposes inferred from description (free-text matching).\");\n gaps.push(\"validate inferred AI Act triggers with a human reviewer before relying on the qualification.\");\n }\n\n /* Fiches */\n const fiches = collectFiches(autonomy.level, criticality.score, obligationsOut.firedCategories);\n\n /* Footer */\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n /* Rationale per rule — combine obligations + role + sign-off + controls */\n const rationale = [\n ...obligationsOut.rationale_per_rule,\n {\n rule_id: aiActRole.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: aiActRole.role !== \"not_applicable\",\n evidence: aiActRole.evidence.join(\"; \"),\n },\n {\n rule_id: gdprRole.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: gdprRole.role !== \"not_applicable\",\n evidence: gdprRole.evidence.join(\"; \"),\n },\n {\n rule_id: signOff.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `criticality=${criticality.score}, pii=${input.personal_data_level}, fin=${input.financial_exposure}`,\n },\n {\n rule_id: controls.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: controls.recommended_controls.length > 0,\n evidence: `level=${autonomy.level}, risk=${criticality.score}`,\n },\n {\n rule_id: autonomy.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `human_approval=${input.human_approval_required}, ext=${input.external_actions}`,\n },\n {\n rule_id: criticality.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `pii=${input.personal_data_level}, fin=${input.financial_exposure}`,\n },\n ];\n\n return {\n acf_level: { level: autonomy.level, rationale: autonomy.rationale },\n criticality: {\n score: criticality.score,\n rationale: criticality.rationale,\n matrix_ref: criticality.matrix_ref,\n },\n regulatory_qualifications: {\n likely_ai_act_role: aiActRole.role,\n likely_gdpr_status: gdprRole.role,\n },\n regulatory_qualifications_confidence: {\n likely_ai_act_role: aiActRole.confidence,\n likely_gdpr_status: gdprRole.confidence,\n },\n ai_act_obligations: groupObligationsByPhase(obligationsOut, gpai.obligations),\n applicable_fiches: fiches,\n recommended_controls: controls.recommended_controls.map((c) => c.title),\n ddao_controls: controls.ddao_controls.map((c) => `${c.control_id} (${c.control_type}, ${c.fiche_reference}): ${c.implementation_note}`),\n ddao_escalation: {\n required: criticality.score === \"high\" || criticality.score === \"critical\",\n trigger_thresholds: deriveEscalationThresholds(autonomy.level, criticality.score),\n },\n sign_off_required: signOff.required,\n confidence,\n assumptions,\n gaps_to_validate: gaps,\n requires_human_review: true,\n rationale_per_rule: rationale,\n ...footer,\n conversion_cta: CLASSIFY_AGENT_CONVERSION_CTA,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n\n/* -------------------- helpers -------------------- */\n\nfunction averageConfidence(\n confs: (\"low\" | \"medium\" | \"high\")[],\n): \"low\" | \"medium\" | \"high\" {\n if (confs.length === 0) return \"medium\";\n const score = confs.reduce((acc, c) => acc + (c === \"low\" ? 0 : c === \"medium\" ? 1 : 2), 0) / confs.length;\n return score < 0.66 ? \"low\" : score < 1.34 ? \"medium\" : \"high\";\n}\n\nfunction computeContradictions(\n input: z.infer<typeof ClassifyAgentInputSchema>,\n obligations: ReturnType<typeof inferAiActObligations>,\n): number {\n let n = 0;\n if (\n (input.ai_act_triggers?.includes(\"none\") ?? false) &&\n obligations.firedCategories.length > 0\n ) {\n n += 1;\n }\n return n;\n}\n\nfunction groupObligationsByPhase(\n obligationsOut: ReturnType<typeof inferAiActObligations>,\n gpaiAll: { article: string; requirement: string; applicable_date: string; systemic_risk_only?: boolean }[],\n): ClassifyAgentOutput[\"ai_act_obligations\"] {\n const pre: ClassifyAgentOutput[\"ai_act_obligations\"][\"pre_go_live\"] = [];\n const continuous: ClassifyAgentOutput[\"ai_act_obligations\"][\"continuous\"] = [];\n const incident: ClassifyAgentOutput[\"ai_act_obligations\"][\"on_incident\"] = [];\n\n const flatObligations = new Set<string>();\n for (const cat of obligationsOut.firedCategories) {\n for (const o of cat.obligations) flatObligations.add(o);\n }\n\n for (const article of flatObligations) {\n const item = {\n article,\n requirement: ARTICLE_REQUIREMENT_BY_ID[article] ?? `See AI Act ${article}`,\n applicable_date: \"2027-12-02\",\n };\n if (PRE_GO_LIVE_ARTICLES.has(article)) pre.push(item);\n else if (ON_INCIDENT_ARTICLES.has(article)) incident.push(item);\n else continuous.push(item);\n }\n\n for (const o of obligationsOut.gpaiObligations) {\n if (PRE_GO_LIVE_ARTICLES.has(o.article)) pre.push(o);\n else continuous.push(o);\n }\n\n return { pre_go_live: pre, continuous, on_incident: incident };\n}\n\nconst ARTICLE_REQUIREMENT_BY_ID: Record<string, string> = {\n \"art-5\": \"Prohibited practices screening.\",\n \"art-9\": \"Establish, implement and document a risk management system.\",\n \"art-10\": \"Data governance, training/validation/testing data sets quality.\",\n \"art-11\": \"Technical documentation.\",\n \"art-12\": \"Record-keeping / automated logging.\",\n \"art-13\": \"Transparency and provision of information to deployers / users.\",\n \"art-14\": \"Effective human oversight design and operation.\",\n \"art-15\": \"Accuracy, robustness, cybersecurity.\",\n \"art-26\": \"Deployer obligations: instructions, monitoring, fundamental rights impact assessment.\",\n \"art-27\": \"Fundamental rights impact assessment for high-risk AI deployers.\",\n \"art-43\": \"Conformity assessment for Annex I product-safety scope.\",\n \"art-50\": \"Transparency notice when interacting with AI / GPAI.\",\n \"art-72\": \"Post-market monitoring system.\",\n \"art-79\": \"Serious incident reporting to authorities.\",\n \"art-86\": \"Right to explanation of individual decision-making.\",\n};\n\nfunction deriveEscalationThresholds(\n level: \"N0\" | \"N1\" | \"N2\" | \"N3\",\n risk: \"low\" | \"medium\" | \"high\" | \"critical\",\n): string[] {\n const out: string[] = [];\n if (level === \"N0\" || level === \"N1\") {\n out.push(\"Any rejection of human-validated action escalates to DDAO.\");\n }\n if (level === \"N2\") {\n out.push(\"Action above bounded perimeter escalates to DDAO before execution.\");\n out.push(\"Drift > 10% on key metric vs baseline escalates within 24h.\");\n }\n if (level === \"N3\") {\n out.push(\"Any out-of-perimeter action escalates immediately (block + human review).\");\n out.push(\"Drift > 5% on any key metric triggers a kill-switch evaluation.\");\n out.push(\"3 consecutive incidents within 24h auto-suspends the agent.\");\n }\n if (risk === \"critical\") {\n out.push(\"Any incident with regulatory exposure escalates to board + legal within 4h.\");\n }\n return out;\n}\n\nfunction collectFiches(\n level: \"N0\" | \"N1\" | \"N2\" | \"N3\",\n risk: \"low\" | \"medium\" | \"high\" | \"critical\",\n firedCategories: { fiches: string[] }[],\n): { code: string; why: string }[] {\n const fiches = new Map<string, string>();\n // Level-derived\n if (level === \"N2\" || level === \"N3\") {\n fiches.set(\"ACF-12\", \"Formal mandate required for N2+ autonomy.\");\n fiches.set(\"ACF-07\", \"Kill switch required for N2+ autonomy.\");\n fiches.set(\"ACF-05\", \"Decision register required for N2+ autonomy.\");\n }\n if (level === \"N3\") {\n fiches.set(\"ACF-14\", \"Monthly human-takeover drill required for N3.\");\n fiches.set(\"ACF-08\", \"Real-time observability required for N3.\");\n }\n // Risk-derived\n if (risk === \"high\" || risk === \"critical\") {\n fiches.set(\"ACF-02\", \"Criticality matrix grounds the high-risk scoring.\");\n fiches.set(\"ACF-09\", \"Escalation thresholds required for high+criticality.\");\n fiches.set(\"ACF-11\", \"Risk assessment required for high+criticality.\");\n }\n // Regulation-derived\n for (const cat of firedCategories) {\n for (const f of cat.fiches) {\n if (!fiches.has(f)) fiches.set(f, \"Mobilised by an AI Act category that fired on the agent description.\");\n }\n }\n return [...fiches.entries()].map(([code, why]) => ({ code, why }));\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { inferAutonomy } from \"./infer-autonomy\";\nimport { inferCriticality } from \"./infer-criticality\";\nimport { inferAiActObligations } from \"./infer-obligations\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const AdvisorInputSchema = z.object({\n case_description: z.string().min(20).max(2000),\n sector: z.string().max(80).optional(),\n jurisdiction: z.enum([\"eu\",\"uk\",\"us\",\"ca\",\"ch\",\"br\",\"jp\",\"other\"]).optional(),\n deployment_scale: z.enum([\"pilot\",\"department\",\"enterprise\",\"public\"]).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type AdvisorInput = z.infer<typeof AdvisorInputSchema>;\n\nexport const ADVISOR_CONVERSION_CTA =\n \"Continue this assessment with the auditable ACF® Compliance workspace at https://acfstandard.com/compliance?ref=mcp\";\n\nexport async function handleAdvisorTool(registry: AcfRegistry, rawInput: unknown) {\n const input = AdvisorInputSchema.parse(rawInput);\n\n const [autonomyRules, criticalityRules, annexIII, annexI, gpai, rulesMeta] =\n await Promise.all([\n registry.rules.loadAutonomyInference(),\n registry.rules.loadCriticalityMatrix(),\n registry.rules.loadAiActAnnexIII(),\n registry.rules.loadAiActAnnexI(),\n registry.rules.loadGpaiTriggers(),\n registry.rules.loadRulesMeta(),\n ]);\n\n /* Free-text heuristics (lightweight v1) */\n const lower = input.case_description.toLowerCase();\n const inferredApproval = /(human validate|valide|sign-off)/i.test(lower) ? \"always\" :\n /(without approval|sans validation|never validate)/i.test(lower) ? \"never\" : \"sometimes\";\n const inferredExternal = /(automated send|exécute|execute|place order|envoyer)/i.test(lower) ? \"limited_write\" : \"read_only\";\n const inferredPII =\n /(health|sensitive|medical|biometric|santé|biométrique)/i.test(lower) ? \"sensitive_special\" :\n /(customer|client|email|user|utilisateur|name|nom)/i.test(lower) ? \"standard\" : \"none\";\n const inferredFinancial =\n /(eur 50k|10k|million|millions|board exposure)/i.test(lower) ? \"high_corporate\" :\n /(contract|contrat|deal)/i.test(lower) ? \"medium_contract\" :\n /(operating cost|opex|operational)/i.test(lower) ? \"low_operation\" : \"none\";\n\n const autonomy = inferAutonomy(autonomyRules, {\n human_approval_required: inferredApproval,\n external_actions: inferredExternal,\n });\n const criticality = inferCriticality(criticalityRules, {\n personal_data_level: inferredPII,\n financial_exposure: inferredFinancial,\n });\n const obligationsOut = inferAiActObligations(\n { annexIII, annexI, gpai },\n { text: input.case_description, enums: {}, flags: [] },\n );\n\n const principles = collectActivatedPrinciples(autonomy.level, criticality.score, obligationsOut.firedCategories.length > 0);\n const dimensions = collectCriticalDimensions(autonomy.level, criticality.score);\n const fiches = collectPriorityFiches(autonomy.level, criticality.score, obligationsOut.firedCategories);\n const articles = collectApplicableArticles(obligationsOut);\n\n const firstActions = deriveFirstActions(autonomy.level, criticality.score);\n const risks = deriveOperationalRisks(autonomy.level, criticality.score, obligationsOut);\n\n const confidence = aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: false,\n contextFieldsProvided: (input.sector ? 1 : 0) + (input.jurisdiction ? 1 : 0) + (input.deployment_scale ? 1 : 0),\n contradictions: 0,\n });\n\n const assumptions: string[] = [];\n const gaps: string[] = [];\n if (!input.sector) {\n assumptions.push(\"sector not provided; criticality uses neutral default.\");\n gaps.push(\"provide sector to refine the criticality calibration.\");\n }\n if (!input.jurisdiction) {\n assumptions.push(\"jurisdiction not provided; reasoning assumes EU.\");\n gaps.push(\"confirm jurisdiction to keep the regulatory snapshot valid.\");\n }\n assumptions.push(\"human_approval, external_actions and personal_data_level were inferred from the free-text description; pass classify-agent with qualified enums for higher confidence.\");\n gaps.push(\"re-run via acf.classify-agent with structured enums for a more defensible qualification.\");\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n const rationale = [\n ...obligationsOut.rationale_per_rule,\n {\n rule_id: autonomy.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `inferred human_approval=${inferredApproval}, external=${inferredExternal} from description`,\n },\n {\n rule_id: criticality.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `inferred pii=${inferredPII}, financial=${inferredFinancial} from description`,\n },\n ];\n\n return {\n autonomy_level: { level: autonomy.level, rationale: autonomy.rationale },\n risk_level: {\n level: criticality.score === \"critical\" ? \"unacceptable\" : criticality.score === \"high\" ? \"high\" : criticality.score === \"medium\" ? \"medium\" : \"low\",\n rationale: criticality.rationale,\n },\n activated_principles: principles,\n critical_dimensions: dimensions,\n priority_fiches: fiches,\n applicable_articles: articles,\n first_actions: firstActions,\n operational_risks: risks,\n confidence,\n assumptions,\n gaps_to_validate: gaps,\n requires_human_review: true as const,\n rationale_per_rule: rationale,\n ...footer,\n conversion_cta: ADVISOR_CONVERSION_CTA,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n\nfunction collectActivatedPrinciples(level: string, risk: string, regFired: boolean) {\n const out: { code: string; why: string }[] = [\n { code: \"P1\", why: \"Decision sovereignty applies to every agentic deployment, regardless of autonomy.\" },\n ];\n if (level === \"N2\" || level === \"N3\") {\n out.push({ code: \"P3\", why: \"Conditional or autonomous execution requires a documented kill switch.\" });\n }\n if (risk === \"high\" || risk === \"critical\") {\n out.push({ code: \"P2\", why: \"High-criticality decisions must be reconstructible after the fact.\" });\n out.push({ code: \"P4\", why: \"Reinforced governance must match the criticality.\" });\n }\n if (regFired) out.push({ code: \"P2\", why: \"Regulatory exposure makes traceability non-negotiable.\" });\n return dedup(out);\n}\n\nfunction collectCriticalDimensions(level: string, risk: string) {\n const out: { code: string; why: string }[] = [];\n if (level !== \"N0\") out.push({ code: \"D4\", why: \"Role allocation (DDAO + sign-off) is required for N1+ autonomy.\" });\n if (risk === \"high\" || risk === \"critical\") {\n out.push({ code: \"D5\", why: \"Regulatory compliance dimension is on the critical path.\" });\n out.push({ code: \"D3\", why: \"Technical control (kill switch, observability) is non-negotiable.\" });\n }\n out.push({ code: \"D2\", why: \"Doctrine adoption is the entry gate before any agentic deployment.\" });\n return dedup(out);\n}\n\nfunction collectPriorityFiches(level: string, risk: string, firedCategories: { fiches: string[] }[]) {\n const fiches = new Map<string, { order: number; why: string }>();\n let order = 1;\n fiches.set(\"ACF-00\", { order: order++, why: \"Read first: framework introduction.\" });\n if (level === \"N2\" || level === \"N3\") {\n fiches.set(\"ACF-12\", { order: order++, why: \"Mandate is required before go-live.\" });\n fiches.set(\"ACF-07\", { order: order++, why: \"Kill switch is required before go-live.\" });\n }\n if (risk === \"high\" || risk === \"critical\") {\n fiches.set(\"ACF-02\", { order: order++, why: \"Calibrate criticality with the matrix.\" });\n fiches.set(\"ACF-09\", { order: order++, why: \"Define escalation thresholds.\" });\n fiches.set(\"ACF-11\", { order: order++, why: \"Run a formal risk assessment.\" });\n }\n for (const cat of firedCategories) {\n for (const f of cat.fiches) {\n if (!fiches.has(f)) fiches.set(f, { order: order++, why: \"Mobilised by a fired regulatory category.\" });\n }\n }\n return [...fiches.entries()].map(([code, v]) => ({ code, order: v.order, why: v.why }));\n}\n\nfunction collectApplicableArticles(obligations: ReturnType<typeof inferAiActObligations>) {\n const out: { regulation: \"ai-act\"|\"gdpr\"|\"dora\"|\"nis2\"|\"iso-42001\"; article: string; why: string }[] = [];\n const seen = new Set<string>();\n for (const cat of obligations.firedCategories) {\n for (const article of cat.obligations) {\n const key = `ai-act:${article}`;\n if (!seen.has(key)) {\n seen.add(key);\n out.push({ regulation: \"ai-act\", article, why: `Mobilised by category ${cat.title}.` });\n }\n }\n }\n for (const g of obligations.gpaiObligations) {\n const key = `ai-act:${g.article}`;\n if (!seen.has(key)) {\n seen.add(key);\n out.push({ regulation: \"ai-act\", article: g.article, why: \"GPAI obligation.\" });\n }\n }\n return out;\n}\n\nfunction deriveFirstActions(level: string, risk: string): string[] {\n const out: string[] = [\n \"Identify or appoint the DDAO accountable for the agent (cf. ACF-12).\",\n \"Document the agent constitution (decision perimeter, allowed/forbidden actions — cf. ACF-03).\",\n \"Open the decision register and define the retention policy (cf. ACF-05 + ACF-13).\",\n ];\n if (level === \"N2\" || level === \"N3\") {\n out.push(\"Design, implement and test the kill switch (cf. ACF-07).\");\n }\n if (risk === \"high\" || risk === \"critical\") {\n out.push(\"Run the formal risk assessment + DPIA if PII (cf. ACF-11).\");\n }\n return out.slice(0, 5);\n}\n\nfunction deriveOperationalRisks(level: string, risk: string, obligations: ReturnType<typeof inferAiActObligations>): string[] {\n const out: string[] = [];\n if (level === \"N3\") out.push(\"Drift goes undetected if observability is not real-time.\");\n if (risk === \"high\" || risk === \"critical\") {\n out.push(\"Audit chain breaks if the decision register is not immutable.\");\n out.push(\"Sign-off bottleneck if DDAO is not available in escalation SLA.\");\n }\n if (obligations.firedCategories.length > 0) {\n out.push(\"Regulatory exposure escalates if Article 49 register is not maintained in sync with internal register.\");\n }\n return out;\n}\n\nfunction dedup<T extends { code: string }>(arr: T[]): T[] {\n const seen = new Set<string>();\n const out: T[] = [];\n for (const e of arr) {\n if (!seen.has(e.code)) {\n seen.add(e.code);\n out.push(e);\n }\n }\n return out;\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const AssessAutonomyInputSchema = z.object({\n agent_description: z.string().min(10).max(1500),\n intended_actions: z.array(z.string()).min(1).max(20),\n reversibility: z.enum([\"fully\", \"partially\", \"irreversible\"]),\n audit_requirements: z.enum([\"none\", \"internal\", \"regulatory\", \"forensic\"]),\n human_in_loop_cost: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type AssessAutonomyInput = z.infer<typeof AssessAutonomyInputSchema>;\n\nexport async function handleAssessAutonomyTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = AssessAutonomyInputSchema.parse(rawInput);\n const rulesMeta = await registry.rules.loadRulesMeta();\n\n /* Decision tree (simple deterministic baseline). */\n let level: \"N0\" | \"N1\" | \"N2\" | \"N3\" = \"N1\";\n let rationale = \"Default baseline for AI agents with bounded responsibility.\";\n\n if (input.audit_requirements === \"regulatory\" || input.audit_requirements === \"forensic\") {\n level = \"N1\";\n rationale =\n \"Regulatory-audit obligations push the recommended baseline to N1 (supervised) at a minimum. Consider N0 if traceability is uncertain.\";\n }\n\n if (input.reversibility === \"irreversible\" && (input.audit_requirements === \"regulatory\" || input.audit_requirements === \"forensic\")) {\n level = \"N2\";\n rationale =\n \"Irreversible actions combined with regulatory-audit obligations require at minimum N2 (bounded autonomy) with strong human oversight checkpoints.\";\n }\n\n if (input.audit_requirements === \"internal\" && input.reversibility === \"fully\") {\n if (input.intended_actions.every((a) => /search|summari|propose|suggest/i.test(a))) {\n level = \"N0\";\n rationale = \"All intended actions are reversible suggestions or read-only; N0 (assistance) is the right baseline.\";\n }\n }\n\n if (input.reversibility === \"partially\" && input.audit_requirements === \"internal\") {\n level = \"N2\";\n rationale = \"Partial reversibility with internal audit allows bounded N2 execution within a documented mandate.\";\n }\n\n if (input.reversibility !== \"irreversible\" && input.audit_requirements === \"none\" && input.human_in_loop_cost === \"high\") {\n level = \"N3\";\n rationale = \"High human-in-loop cost and reversible actions allow N3 autonomy with strong observability + kill switch.\";\n }\n\n const go_no_go = [\n { criterion: \"Mandate signed by the named DDAO\", status: level === \"N0\" ? \"pass\" : \"conditional\" as const },\n { criterion: \"Kill switch documented and tested\", status: level === \"N0\" ? \"pass\" : \"fail\" as const },\n { criterion: \"Decision register format defined\", status: level === \"N0\" ? \"pass\" : \"conditional\" as const },\n { criterion: \"Escalation thresholds named in numeric terms\", status: level === \"N0\" ? \"pass\" : \"fail\" as const },\n { criterion: \"Sign-off from DPO if PII transits the agent\", status: \"conditional\" as const },\n ];\n\n const gating_thresholds = [\n { condition: \"Any action above bounded perimeter\", escalation: \"Block + DDAO ack before execution\" },\n { condition: \"Drift > 10% on key metric vs baseline\", escalation: \"Auto-suspend within 24h + post-mortem\" },\n { condition: \"3 consecutive incidents in 24h\", escalation: \"Auto-suspend + immediate DDAO review\" },\n ];\n if (level === \"N3\") {\n gating_thresholds.push({\n condition: \"Any out-of-perimeter action\",\n escalation: \"Block + kill switch evaluation within 5 minutes\",\n });\n }\n\n const kill_switch_design = {\n levels: [\"freeze (instant)\", \"redirect (≤5 min)\", \"revoke (≤1 h)\"],\n response_time_s: [5, 300, 3600],\n };\n\n const referenced_fiches = level === \"N0\" ? [\"ACF-00\", \"ACF-05\"] :\n level === \"N1\" ? [\"ACF-05\", \"ACF-09\", \"ACF-12\"] :\n level === \"N2\" ? [\"ACF-07\", \"ACF-09\", \"ACF-12\", \"ACF-05\"] :\n [\"ACF-07\", \"ACF-08\", \"ACF-12\", \"ACF-14\"];\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n return {\n recommended_level: { level, rationale },\n go_no_go_criteria: go_no_go,\n gating_thresholds,\n kill_switch_design,\n referenced_fiches,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: true,\n contextFieldsProvided: input.human_in_loop_cost ? 1 : 0,\n contradictions: 0,\n }),\n assumptions: [\"Inference is deterministic over the 4 supplied dimensions; sector calibration not included.\"],\n gaps_to_validate: [\n \"Confirm whether any intended action handles PII (Article 35 GDPR DPIA may apply).\",\n \"Confirm whether the kill switch has been tested in the last quarter.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: [\n {\n rule_id: \"assess-autonomy.decision-tree\",\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `reversibility=${input.reversibility}, audit=${input.audit_requirements}, hil_cost=${input.human_in_loop_cost ?? \"n/a\"}`,\n },\n ],\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const IdentifyGapsInputSchema = z.object({\n current_inventory: z.object({\n ai_systems_count: z.number().int().min(0),\n high_risk_count: z.number().int().min(0).optional(),\n gpai_used: z.boolean().optional(),\n shadow_ai_known: z.boolean().optional(),\n }),\n current_processes: z.array(\n z.object({\n process: z.string(),\n exists: z.boolean(),\n documented: z.boolean().optional(),\n }),\n ),\n sector: z.string().max(80).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type IdentifyGapsInput = z.infer<typeof IdentifyGapsInputSchema>;\n\nconst REQUIRED_PROCESSES_BY_DIM: Record<string, string[]> = {\n D1: [\"ai_committee\", \"executive_sponsor\"],\n D2: [\"ai_inventory\", \"doctrine_published\"],\n D3: [\"kill_switch_drill\", \"observability\"],\n D4: [\"ddao_appointed\", \"raci\"],\n D5: [\"dpia\", \"article_49_register\", \"ai_act_qualification\"],\n D6: [\"annual_audit\", \"incident_review\"],\n};\n\nexport async function handleIdentifyGapsTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = IdentifyGapsInputSchema.parse(rawInput);\n const rulesMeta = await registry.rules.loadRulesMeta();\n const processMap = new Map<string, { exists: boolean; documented?: boolean }>();\n for (const p of input.current_processes) processMap.set(p.process, p);\n\n const dims: Record<string, number> = {};\n const gaps: {\n dimension: string; severity: \"low\" | \"medium\" | \"high\" | \"critical\";\n description: string; remediation: string; fiches: string[];\n estimated_effort_days?: number;\n }[] = [];\n\n for (const [dim, required] of Object.entries(REQUIRED_PROCESSES_BY_DIM)) {\n let score = 100;\n for (const proc of required) {\n const found = processMap.get(proc);\n if (found && !found.exists) {\n // Explicitly declared as not existing\n score -= Math.floor(100 / required.length);\n const severity =\n dim === \"D5\" ? \"critical\" :\n dim === \"D3\" || dim === \"D4\" ? \"high\" :\n \"medium\" as const;\n gaps.push({\n dimension: dim,\n severity,\n description: `Process '${proc}' is missing for ${dim}.`,\n remediation: remediateProcess(proc),\n fiches: ficheFor(proc),\n estimated_effort_days: effortFor(proc),\n });\n } else if (!found) {\n // Not declared at all — treat as unknown (partial penalty)\n score -= Math.floor(50 / required.length);\n } else if (found.documented === false) {\n score -= Math.floor(50 / required.length);\n gaps.push({\n dimension: dim,\n severity: \"medium\",\n description: `Process '${proc}' exists but is undocumented.`,\n remediation: `Document '${proc}' with the relevant ACF® card.`,\n fiches: ficheFor(proc),\n estimated_effort_days: 2,\n });\n }\n }\n dims[dim] = Math.max(0, score);\n }\n\n // Inventory-driven gaps\n if (input.current_inventory.shadow_ai_known) {\n gaps.push({\n dimension: \"D1\",\n severity: \"high\",\n description: \"Shadow AI exists in the organisation.\",\n remediation: \"Run a discovery campaign + classify each shadow agent via acf.classify-agent.\",\n fiches: [\"ACF-01\"],\n estimated_effort_days: 10,\n });\n }\n if (\n input.current_inventory.high_risk_count !== undefined &&\n input.current_inventory.high_risk_count > 0 &&\n !processMap.get(\"dpia\")?.exists\n ) {\n gaps.push({\n dimension: \"D5\",\n severity: \"critical\",\n description: \"High-risk systems present but no DPIA process.\",\n remediation: \"Stand up the DPIA workflow before any new high-risk go-live.\",\n fiches: [\"ACF-11\"],\n estimated_effort_days: 5,\n });\n }\n\n const overall = Math.round(\n Object.values(dims).reduce((acc, v) => acc + v, 0) / Object.keys(dims).length,\n );\n\n const order = [\"critical\", \"high\", \"medium\", \"low\"] as const;\n const priority = [...gaps]\n .sort((a, b) => order.indexOf(a.severity) - order.indexOf(b.severity))\n .map((g) => `${g.dimension}: ${g.description}`);\n\n const quickWins = gaps\n .filter((g) => (g.estimated_effort_days ?? 0) <= 3)\n .map((g) => g.description);\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n return {\n maturity_score: { overall, by_dimension: dims },\n gaps,\n priority_order: priority,\n quick_wins: quickWins,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: false,\n contextFieldsProvided: input.sector ? 1 : 0,\n contradictions: 0,\n }),\n assumptions: [\"Maturity baseline is unweighted across dimensions; sector-specific weights not yet calibrated.\"],\n gaps_to_validate: [\n \"Confirm which gaps were inferred vs explicitly declared by your inventory.\",\n \"Run acf.classify-agent on the high-risk subset to consolidate the qualification.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: [\n {\n rule_id: \"identify-gaps.dimension-checklist\",\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `${input.current_processes.length} processes evaluated`,\n },\n ],\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n\nfunction remediateProcess(p: string): string {\n const map: Record<string, string> = {\n ai_committee: \"Establish a recurring AI committee with executive sponsorship.\",\n executive_sponsor: \"Identify a sponsoring executive at COMEX level.\",\n ai_inventory: \"Stand up the AI inventory using the ACF-01 mapping template.\",\n doctrine_published: \"Publish a doctrine note grounded in ACF® v1.0 to the relevant teams.\",\n kill_switch_drill: \"Run a quarterly kill-switch drill per ACF-14.\",\n observability: \"Wire end-to-end observability on every N2+ agent.\",\n ddao_appointed: \"Appoint a DDAO per N2+ agent with documented mandate.\",\n raci: \"Publish a RACI for agentic decisions including DDAO + DPO + CISO + sponsor.\",\n dpia: \"Stand up the DPIA workflow with ACF-11 as the template.\",\n article_49_register: \"Prepare the Article 49 register for any high-risk system before go-live.\",\n ai_act_qualification: \"Run acf.classify-agent on each system to qualify under the AI Act.\",\n annual_audit: \"Schedule an annual internal audit of agents in production.\",\n incident_review: \"Open a quarterly incident review forum with the AI committee.\",\n };\n return map[p] ?? `Document and implement ${p}.`;\n}\n\nfunction ficheFor(p: string): string[] {\n const map: Record<string, string[]> = {\n ai_inventory: [\"ACF-01\"],\n decision_register: [\"ACF-05\"],\n kill_switch_drill: [\"ACF-07\", \"ACF-14\"],\n ddao_appointed: [\"ACF-12\"],\n dpia: [\"ACF-11\"],\n article_49_register: [\"ACF-05\", \"ACF-11\"],\n observability: [\"ACF-08\"],\n };\n return map[p] ?? [];\n}\n\nfunction effortFor(p: string): number {\n const map: Record<string, number> = {\n ai_committee: 5,\n decision_register: 8,\n kill_switch_drill: 3,\n dpia: 10,\n ai_inventory: 8,\n observability: 15,\n };\n return map[p] ?? 5;\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { inferAiActObligations } from \"./infer-obligations\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const MapObligationsInputSchema = z.object({\n annex: z.enum([\"iii\", \"i\", \"none\"]),\n use_case: z.string().min(10).max(500),\n provider_or_deployer: z.enum([\"provider\", \"deployer\", \"both\"]),\n gpai_used: z.boolean().optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type MapObligationsInput = z.infer<typeof MapObligationsInputSchema>;\n\nconst PRE_GO_LIVE = new Set([\"art-9\", \"art-10\", \"art-11\", \"art-13\", \"art-43\", \"art-50\"]);\nconst ON_INCIDENT = new Set([\"art-15\", \"art-72\", \"art-79\"]);\n\nconst ARTICLE_DETAIL: Record<string, { title: string; requirement: string; deadline: string; operational_actions: string[]; evidence_required: string[]; digital_omnibus_deferred: boolean }> = {\n \"art-9\": { title: \"Risk management system\", requirement: \"Establish, implement, document, maintain a risk management system across the lifecycle.\", deadline: \"2027-12-02\", operational_actions: [\"Stand up risk register\", \"Define risk methodology\", \"Review quarterly\"], evidence_required: [\"Risk register\", \"Methodology doc\"], digital_omnibus_deferred: true },\n \"art-10\": { title: \"Data and data governance\", requirement: \"Training/validation/testing data sets governance + quality requirements.\", deadline: \"2027-12-02\", operational_actions: [\"Document data sources\", \"Run bias evaluation\", \"Document data drift monitoring\"], evidence_required: [\"Data inventory\", \"Bias evaluation report\"], digital_omnibus_deferred: true },\n \"art-11\": { title: \"Technical documentation\", requirement: \"Maintain technical documentation per Annex IV.\", deadline: \"2027-12-02\", operational_actions: [\"Author Annex IV-aligned tech doc\"], evidence_required: [\"Technical documentation\"], digital_omnibus_deferred: true },\n \"art-12\": { title: \"Record-keeping\", requirement: \"Automated logs over the lifecycle of the system.\", deadline: \"2027-12-02\", operational_actions: [\"Wire structured logging\", \"Define retention policy\"], evidence_required: [\"Logs\"], digital_omnibus_deferred: true },\n \"art-13\": { title: \"Transparency to deployers\", requirement: \"Provide instructions for use that allow the deployer to interpret outputs.\", deadline: \"2027-12-02\", operational_actions: [\"Draft instructions for use\", \"Translate to operating languages\"], evidence_required: [\"Instructions for use\"], digital_omnibus_deferred: true },\n \"art-14\": { title: \"Human oversight\", requirement: \"Effective human oversight design + operation.\", deadline: \"2027-12-02\", operational_actions: [\"Design kill switch (ACF-07)\", \"Document escalation thresholds (ACF-09)\"], evidence_required: [\"Kill switch design\", \"Drill reports\"], digital_omnibus_deferred: true },\n \"art-15\": { title: \"Accuracy, robustness, cybersecurity\", requirement: \"Maintain accuracy, robustness, cybersecurity levels appropriate to the use.\", deadline: \"continuous\", operational_actions: [\"Define accuracy KPIs\", \"Run robustness tests\", \"Define cybersecurity controls\"], evidence_required: [\"KPI dashboards\", \"Pen test reports\"], digital_omnibus_deferred: false },\n \"art-26\": { title: \"Deployer obligations\", requirement: \"Instructions, monitoring, fundamental rights impact assessment.\", deadline: \"2027-12-02\", operational_actions: [\"Run fundamental rights IA\", \"Document monitoring plan\"], evidence_required: [\"FRIA report\", \"Monitoring plan\"], digital_omnibus_deferred: true },\n \"art-27\": { title: \"Fundamental rights impact assessment\", requirement: \"Mandatory FRIA for high-risk deployers in some sectors.\", deadline: \"2027-12-02\", operational_actions: [\"Author FRIA\"], evidence_required: [\"FRIA\"], digital_omnibus_deferred: true },\n \"art-43\": { title: \"Conformity assessment\", requirement: \"Conformity assessment procedure for Annex I scope.\", deadline: \"2028-08-02\", operational_actions: [\"Run conformity assessment via notified body\"], evidence_required: [\"CE marking\"], digital_omnibus_deferred: false },\n \"art-50\": { title: \"Transparency on AI/GPAI\", requirement: \"Disclose AI usage to natural persons interacting with the system.\", deadline: \"2026-08-02\", operational_actions: [\"Add disclosure on every user surface\"], evidence_required: [\"Disclosure copy\"], digital_omnibus_deferred: false },\n \"art-72\": { title: \"Post-market monitoring\", requirement: \"Establish a post-market monitoring system.\", deadline: \"continuous\", operational_actions: [\"Define post-market monitoring plan\"], evidence_required: [\"Monitoring reports\"], digital_omnibus_deferred: false },\n \"art-79\": { title: \"Serious incident reporting\", requirement: \"Report serious incidents to authorities within 15 days.\", deadline: \"on-incident\", operational_actions: [\"Define incident classification + reporting playbook\"], evidence_required: [\"Incident reports\"], digital_omnibus_deferred: false },\n \"art-86\": { title: \"Right to explanation\", requirement: \"Affected persons can request an explanation of an individual decision.\", deadline: \"2027-12-02\", operational_actions: [\"Build explanation generation flow\"], evidence_required: [\"Explanation templates\"], digital_omnibus_deferred: true },\n};\n\nexport async function handleMapObligationsTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = MapObligationsInputSchema.parse(rawInput);\n const [annexIII, annexI, gpai, rulesMeta] = await Promise.all([\n registry.rules.loadAiActAnnexIII(),\n registry.rules.loadAiActAnnexI(),\n registry.rules.loadGpaiTriggers(),\n registry.rules.loadRulesMeta(),\n ]);\n\n const obligationsOut = inferAiActObligations(\n { annexIII, annexI, gpai },\n {\n text: input.use_case,\n enums: input.gpai_used ? { gpai_used: [\"true\"] } : {},\n flags: [],\n },\n );\n\n const articles = new Set<string>();\n for (const cat of obligationsOut.firedCategories) for (const a of cat.obligations) articles.add(a);\n\n // Always add deployer/provider duties\n if (input.provider_or_deployer === \"deployer\" || input.provider_or_deployer === \"both\") {\n articles.add(\"art-26\");\n articles.add(\"art-27\");\n }\n\n // Always add transparency (art-50) — mandatory for all AI interacting with natural persons\n articles.add(\"art-50\");\n\n const pre: any[] = [];\n const continuous: any[] = [];\n const incident: any[] = [];\n\n const ficheFor = (a: string): string[] => {\n for (const cat of obligationsOut.firedCategories) {\n if (cat.obligations.includes(a)) return cat.fiches;\n }\n return [];\n };\n\n for (const a of articles) {\n const detail = ARTICLE_DETAIL[a];\n if (!detail) continue;\n const item = {\n article: a,\n title: detail.title,\n requirement: detail.requirement,\n deadline: detail.deadline,\n fiches: ficheFor(a),\n operational_actions: detail.operational_actions,\n evidence_required: detail.evidence_required,\n digital_omnibus_deferred: detail.digital_omnibus_deferred,\n };\n if (PRE_GO_LIVE.has(a)) pre.push(item);\n else if (ON_INCIDENT.has(a)) incident.push(item);\n else continuous.push(item);\n }\n\n for (const o of obligationsOut.gpaiObligations) {\n const item = {\n article: o.article,\n title: ARTICLE_DETAIL[o.article]?.title ?? \"GPAI obligation\",\n requirement: o.requirement,\n deadline: o.applicable_date,\n fiches: [],\n operational_actions: ARTICLE_DETAIL[o.article]?.operational_actions ?? [],\n evidence_required: ARTICLE_DETAIL[o.article]?.evidence_required ?? [],\n digital_omnibus_deferred: false,\n };\n if (PRE_GO_LIVE.has(o.article)) pre.push(item);\n else continuous.push(item);\n }\n\n const total_count = pre.length + continuous.length + incident.length;\n const critical_path = pre\n .filter((p) => p.digital_omnibus_deferred === false)\n .slice(0, 5)\n .map((p) => `${p.article}: ${p.title}`);\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n return {\n obligations: { pre_go_live: pre, continuous, on_incident: incident },\n total_count,\n critical_path,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: input.annex === \"iii\" || input.annex === \"i\",\n contextFieldsProvided: input.gpai_used !== undefined ? 1 : 0,\n contradictions: input.annex === \"none\" && obligationsOut.firedCategories.length > 0 ? 1 : 0,\n }),\n assumptions: input.annex === \"none\" ? [\"Caller declared no annex but at least one rule fired on the use case description; flagged below.\"] : [],\n gaps_to_validate: [\n \"Confirm provider_or_deployer qualification — it changes the obligation set.\",\n \"Confirm GPAI usage — Article 50 transparency obligation depends on it.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: obligationsOut.rationale_per_rule,\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { inferDdaoControls } from \"./infer-controls\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const AssignControlsInputSchema = z.object({\n agent_description: z.string().min(10).max(500),\n acf_level: z.enum([\"N0\", \"N1\", \"N2\", \"N3\"]),\n risk_level: z.enum([\"low\", \"medium\", \"high\", \"critical\"]),\n budget_constraint: z.enum([\"minimal\", \"standard\", \"comprehensive\"]).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type AssignControlsInput = z.infer<typeof AssignControlsInputSchema>;\n\nconst EFFORT_DAYS_BY_FREQUENCY: Record<string, number> = {\n one_time: 5, monthly: 1, quarterly: 2, annual: 4, on_event: 1,\n};\n\nexport async function handleAssignControlsTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = AssignControlsInputSchema.parse(rawInput);\n const [mapping, rulesMeta] = await Promise.all([\n registry.rules.loadDdaoControlsMapping(),\n registry.rules.loadRulesMeta(),\n ]);\n\n const controls = inferDdaoControls(mapping, {\n level: input.acf_level,\n risk: input.risk_level,\n });\n\n let recommended = controls.recommended_controls;\n if (input.budget_constraint === \"minimal\") recommended = recommended.slice(0, 2);\n if (input.budget_constraint === \"comprehensive\") recommended = [...controls.recommended_controls];\n\n const estimatedEffort = recommended.reduce(\n (acc, c) => acc + (EFFORT_DAYS_BY_FREQUENCY[c.frequency] ?? 1),\n 0,\n );\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n const summary = `Control set scoped to ACF® ${input.acf_level} / risk=${input.risk_level} (${recommended.length} recommended controls, ${controls.ddao_controls.length} ACF-canonical controls).`;\n\n return {\n recommended_controls: recommended,\n ddao_controls: controls.ddao_controls,\n total_count: recommended.length + controls.ddao_controls.length,\n estimated_total_effort_days: estimatedEffort,\n ddao_summary: summary,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: true,\n contextFieldsProvided: input.budget_constraint ? 1 : 0,\n contradictions: 0,\n }),\n assumptions: [\n \"Controls are derived from the canonical level × risk mapping; sector-specific overrides not applied in V1.0.\",\n ],\n gaps_to_validate: [\n \"Confirm DDAO availability for the proposed escalation cadence.\",\n \"Confirm evidence-storage location for each control before go-live.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: [\n {\n rule_id: controls.rule_id,\n rule_version: rulesMeta.rules_version,\n fired: true,\n evidence: `level=${input.acf_level}, risk=${input.risk_level}`,\n },\n ],\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { z } from \"zod\";\nimport { AcfRegistry } from \"./registry\";\nimport { AcfLocaleSchema } from \"./types\";\nimport { aggregateConfidence } from \"./confidence\";\nimport { buildDoctrineFooter } from \"./doctrine-footer\";\nimport { ACF_REASON_DISCLAIMER } from \"../constants/disclaimer\";\n\nexport const EvaluateMandateInputSchema = z.object({\n mandate_text: z.string().min(50).max(10000),\n agent_purpose: z.string().min(10).max(500),\n deployment_context: z.string().max(500).optional(),\n locale: AcfLocaleSchema.optional(),\n});\nexport type EvaluateMandateInput = z.infer<typeof EvaluateMandateInputSchema>;\n\ninterface MandateCheck {\n key: string;\n area: string;\n weight: number;\n matchers: RegExp[];\n remediation: string;\n fiche_reference: string;\n}\n\nconst CHECKS: MandateCheck[] = [\n {\n key: \"ddao_appointed\",\n area: \"Identification du DDAO\",\n weight: 15,\n matchers: [/\\bDDAO\\b[^.]*:\\s*\\S{3,}/i, /\\bDelegated Decision Agent Officer\\b[^.]*:\\s*\\S{3,}/i],\n remediation: \"Name an actual DDAO (person or role) — placeholders like 'TBD' are not acceptable.\",\n fiche_reference: \"ACF-12\",\n },\n {\n key: \"decision_perimeter\",\n area: \"Périmètre de décision\",\n weight: 15,\n matchers: [/\\b(decision perimeter|perimeter|périmètre)/i, /\\b(allowed|autorisées?)\\b/i],\n remediation: \"Document the positive (allowed) and negative (forbidden) action lists.\",\n fiche_reference: \"ACF-03\",\n },\n {\n key: \"forbidden_actions\",\n area: \"Actions interdites\",\n weight: 10,\n matchers: [/\\b(forbidden|interdites?|not allowed|never)\\b/i],\n remediation: \"Add an explicit forbidden-actions list — without it, the agent drifts at the first uncovered case.\",\n fiche_reference: \"ACF-03\",\n },\n {\n key: \"escalation_thresholds\",\n area: \"Seuils d'escalade\",\n weight: 15,\n matchers: [/\\b(escalation|escalade)\\b[^.]*\\d/i, /\\bthreshold|seuil/i],\n remediation: \"Specify numeric and qualitative escalation thresholds.\",\n fiche_reference: \"ACF-09\",\n },\n {\n key: \"kill_switch\",\n area: \"Kill switch\",\n weight: 15,\n matchers: [/\\b(kill switch|suspension|revoke|révoquer|drill)\\b/i],\n remediation: \"Document the kill switch (levels, response times, drill frequency).\",\n fiche_reference: \"ACF-07\",\n },\n {\n key: \"audit_log\",\n area: \"Audit log / decision register\",\n weight: 15,\n matchers: [/\\b(audit log|decision register|registre|retention)\\b/i],\n remediation: \"Document the decision register format and retention.\",\n fiche_reference: \"ACF-05\",\n },\n {\n key: \"doctrine_version\",\n area: \"Doctrine version\",\n weight: 10,\n matchers: [/\\bACF®?[^.]*v\\d/i, /\\bdoctrine version\\b/i],\n remediation: \"Cite the ACF® doctrine version applied (e.g. 'ACF® v1.0').\",\n fiche_reference: \"ACF-00\",\n },\n {\n key: \"sign_off\",\n area: \"Sign-off\",\n weight: 5,\n matchers: [/\\b(sign-off|sign off|signature|approuvé)\\b/i],\n remediation: \"List the sign-off roles (DDAO + DPO if PII + CISO if attack surface + Legal if exposure).\",\n fiche_reference: \"ACF-12\",\n },\n];\n\nexport async function handleEvaluateMandateTool(\n registry: AcfRegistry,\n rawInput: unknown,\n) {\n const input = EvaluateMandateInputSchema.parse(rawInput);\n const rulesMeta = await registry.rules.loadRulesMeta();\n\n const strengths: string[] = [];\n const gaps: { area: string; severity: \"low\" | \"medium\" | \"high\" | \"critical\"; description: string }[] = [];\n const additions: { section: string; suggested_text: string; fiche_reference: string }[] = [];\n let score = 0;\n\n for (const check of CHECKS) {\n const matched = check.matchers.every((m) => m.test(input.mandate_text));\n if (matched) {\n score += check.weight;\n strengths.push(`${check.area}: present.`);\n } else {\n gaps.push({\n area: check.area,\n severity: check.weight >= 15 ? \"high\" : check.weight >= 10 ? \"medium\" : \"low\",\n description: `${check.area} missing or insufficient.`,\n });\n additions.push({\n section: check.area,\n suggested_text: check.remediation,\n fiche_reference: check.fiche_reference,\n });\n }\n }\n\n const tbdHits = /\\bTBD\\b|\\bà compléter\\b|\\?\\?\\?/i.test(input.mandate_text);\n if (tbdHits) {\n gaps.push({\n area: \"Placeholders\",\n severity: \"critical\",\n description: \"Mandate contains 'TBD' / placeholders — it is not signable in this state.\",\n });\n score = Math.max(0, score - 20);\n }\n\n let verdict: \"approve\" | \"approve_with_changes\" | \"reject\";\n if (score >= 80) verdict = \"approve\";\n else if (score >= 50) verdict = \"approve_with_changes\";\n else verdict = \"reject\";\n\n const footer = buildDoctrineFooter({\n frameworkVersion: registry.meta.framework_version,\n rulesVersion: rulesMeta.rules_version,\n contentHash: registry.meta.content_hash,\n archiveUrl: registry.meta.permanent_archive_url,\n });\n\n return {\n verdict,\n rationale: verdict === \"approve\"\n ? \"All canonical mandate sections are present; no critical placeholders detected.\"\n : verdict === \"approve_with_changes\"\n ? \"The mandate covers the core but misses one or more sections. Address the additions below before DDAO sign-off.\"\n : \"The mandate misses too many canonical sections (or contains placeholders) to be signable.\",\n strengths,\n identified_gaps: gaps,\n required_additions: additions,\n reference_fiches: [\"ACF-03\", \"ACF-07\", \"ACF-09\", \"ACF-12\"],\n acf_compliance_score: score,\n confidence: aggregateConfidence({\n ruleBaseConfidence: \"medium\",\n enumProvided: false,\n contextFieldsProvided: input.deployment_context ? 1 : 0,\n contradictions: 0,\n }),\n assumptions: [\"Mandate evaluation uses an 8-check canonical baseline — sector-specific extras not yet implemented.\"],\n gaps_to_validate: [\n \"Confirm with the DDAO that the named escalation thresholds reflect real organisational SLAs.\",\n \"Confirm that the kill switch drill has been run in the last quarter.\",\n ],\n requires_human_review: true as const,\n rationale_per_rule: CHECKS.map((c) => ({\n rule_id: `evaluate-mandate.${c.key}`,\n rule_version: rulesMeta.rules_version,\n fired: c.matchers.every((m) => m.test(input.mandate_text)),\n evidence: `${c.area} check`,\n })),\n ...footer,\n disclaimer: ACF_REASON_DISCLAIMER,\n };\n}\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { AcfRegistry } from \"./registry\";\nimport { TOOL_DESCRIPTIONS } from \"../constants/tool-descriptions\";\nimport {\n handleSearchTool, SearchInputSchema,\n handleFicheLookupTool, FicheLookupInputSchema,\n handleRegulationArticleTool, RegulationArticleInputSchema,\n handleGlossaryDefineTool, GlossaryDefineInputSchema,\n handleCiteTool, CiteInputSchema,\n} from \"./tools-read\";\nimport { zodToJsonSchema } from \"../lib/zod-to-json-schema\";\nimport { handleClassifyAgentTool } from \"./tool-classify-agent\";\nimport { ClassifyAgentInputSchema } from \"./classify-agent-input\";\nimport { handleAdvisorTool, AdvisorInputSchema } from \"./tool-advisor\";\nimport { handleAssessAutonomyTool, AssessAutonomyInputSchema } from \"./tool-assess-autonomy\";\nimport { handleIdentifyGapsTool, IdentifyGapsInputSchema } from \"./tool-identify-gaps\";\nimport { handleMapObligationsTool, MapObligationsInputSchema } from \"./tool-map-obligations\";\nimport { handleAssignControlsTool, AssignControlsInputSchema } from \"./tool-assign-controls\";\nimport { handleEvaluateMandateTool, EvaluateMandateInputSchema } from \"./tool-evaluate-mandate\";\n\ninterface ToolHandler {\n name: string;\n description: string;\n inputSchema: object;\n handle: (registry: AcfRegistry, input: unknown) => Promise<unknown>;\n}\n\nconst HANDLERS: ToolHandler[] = [\n {\n name: \"acf.search\",\n description: TOOL_DESCRIPTIONS[\"acf.search\"],\n inputSchema: zodToJsonSchema(SearchInputSchema),\n handle: handleSearchTool,\n },\n {\n name: \"acf.fiche.lookup\",\n description: TOOL_DESCRIPTIONS[\"acf.fiche.lookup\"],\n inputSchema: zodToJsonSchema(FicheLookupInputSchema),\n handle: handleFicheLookupTool,\n },\n {\n name: \"acf.regulation.article\",\n description: TOOL_DESCRIPTIONS[\"acf.regulation.article\"],\n inputSchema: zodToJsonSchema(RegulationArticleInputSchema),\n handle: handleRegulationArticleTool,\n },\n {\n name: \"acf.glossary.define\",\n description: TOOL_DESCRIPTIONS[\"acf.glossary.define\"],\n inputSchema: zodToJsonSchema(GlossaryDefineInputSchema),\n handle: handleGlossaryDefineTool,\n },\n {\n name: \"acf.cite\",\n description: TOOL_DESCRIPTIONS[\"acf.cite\"],\n inputSchema: zodToJsonSchema(CiteInputSchema),\n handle: handleCiteTool,\n },\n {\n name: \"acf.classify-agent\",\n description: TOOL_DESCRIPTIONS[\"acf.classify-agent\"],\n inputSchema: zodToJsonSchema(ClassifyAgentInputSchema),\n handle: handleClassifyAgentTool,\n },\n {\n name: \"acf.advisor\",\n description: TOOL_DESCRIPTIONS[\"acf.advisor\"],\n inputSchema: zodToJsonSchema(AdvisorInputSchema),\n handle: handleAdvisorTool,\n },\n {\n name: \"acf.assess-autonomy\",\n description: TOOL_DESCRIPTIONS[\"acf.assess-autonomy\"],\n inputSchema: zodToJsonSchema(AssessAutonomyInputSchema),\n handle: handleAssessAutonomyTool,\n },\n {\n name: \"acf.identify-governance-gaps\",\n description: TOOL_DESCRIPTIONS[\"acf.identify-governance-gaps\"],\n inputSchema: zodToJsonSchema(IdentifyGapsInputSchema),\n handle: handleIdentifyGapsTool,\n },\n {\n name: \"acf.map-ai-act-obligations\",\n description: TOOL_DESCRIPTIONS[\"acf.map-ai-act-obligations\"],\n inputSchema: zodToJsonSchema(MapObligationsInputSchema),\n handle: handleMapObligationsTool,\n },\n {\n name: \"acf.assign-ddao-controls\",\n description: TOOL_DESCRIPTIONS[\"acf.assign-ddao-controls\"],\n inputSchema: zodToJsonSchema(AssignControlsInputSchema),\n handle: handleAssignControlsTool,\n },\n {\n name: \"acf.evaluate-agent-mandate\",\n description: TOOL_DESCRIPTIONS[\"acf.evaluate-agent-mandate\"],\n inputSchema: zodToJsonSchema(EvaluateMandateInputSchema),\n handle: handleEvaluateMandateTool,\n },\n];\n\nexport async function registerTools(\n server: Server,\n registry: AcfRegistry,\n): Promise<void> {\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: HANDLERS.map((h) => ({\n name: h.name,\n description: h.description,\n inputSchema: h.inputSchema,\n })),\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (req) => {\n const handler = HANDLERS.find((h) => h.name === req.params.name);\n if (!handler) {\n throw new Error(`Unknown tool: ${req.params.name}`);\n }\n const result = await handler.handle(registry, req.params.arguments ?? {});\n return {\n content: [\n { type: \"text\", text: JSON.stringify(result, null, 2) },\n ],\n };\n });\n}\n\nexport { HANDLERS };\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n GetPromptRequestSchema,\n ListPromptsRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { AcfRegistry } from \"./registry\";\n\ninterface AcfPrompt {\n name: string;\n description: string;\n arguments: { name: string; description: string; required: boolean }[];\n render: (args: Record<string, unknown>) => string;\n}\n\nfunction s(args: Record<string, unknown>, key: string): string {\n const v = args[key];\n return v === undefined || v === null ? \"\" : String(v);\n}\n\nexport const ACF_PROMPTS: AcfPrompt[] = [\n {\n name: \"acf.brief-dpia\",\n description:\n \"When you need to draft a defensible DPIA — one that will hold against a CNIL inspection or a board challenge — get a structured first draft organised by ACF® governance dimensions with the right legal references already in place.\",\n arguments: [\n { name: \"system_name\", description: \"Name of the AI system.\", required: true },\n { name: \"system_description\", description: \"What the system does.\", required: true },\n { name: \"deployment_context\", description: \"Geography, scale, audience.\", required: true },\n { name: \"high_risk_qualified\", description: \"Whether the system is already qualified as high-risk.\", required: false },\n ],\n render: (args) => [\n \"I need to draft a defensible DPIA for the following AI system:\",\n \"\",\n `- Name: ${s(args, \"system_name\")}`,\n `- Description: ${s(args, \"system_description\")}`,\n `- Deployment context: ${s(args, \"deployment_context\")}`,\n `- High-risk qualified: ${s(args, \"high_risk_qualified\") || \"to confirm\"}`,\n \"\",\n \"Load the canonical ACF® doctrine first:\",\n \"- acf://guide/gdpr (Article 35 + DPIA methodology)\",\n \"- acf://fiche/ACF-11 (risk assessment template)\",\n \"- acf://fiche/ACF-02 (criticality matrix)\",\n \"- acf://fiche/ACF-05 (decision register requirement)\",\n \"\",\n \"Then produce a DPIA structured by ACF® governance dimensions (D5 first), with explicit legal references (GDPR Art. 35, AI Act Art. 9/10/14 if applicable). Cite the doctrine_archive_url in the conclusion.\",\n \"\",\n \"Mark every assumption explicitly and signal what the human reviewer must confirm before submission.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-art49-register\",\n description:\n \"When you need to register a high-risk AI system in the EU AI Act Article 49 public register and you want the entry to be both compliant and consistent with your internal ACF® decisions register.\",\n arguments: [\n { name: \"system_name\", description: \"Name of the AI system.\", required: true },\n { name: \"provider_or_deployer\", description: \"Role of the entity ('provider' / 'deployer').\", required: true },\n { name: \"annex_iii_use_case\", description: \"Which Annex III item applies.\", required: true },\n ],\n render: (args) => [\n \"I need to prepare an entry for the EU AI Act Article 49 public register.\",\n \"\",\n `- System: ${s(args, \"system_name\")}`,\n `- Role: ${s(args, \"provider_or_deployer\")}`,\n `- Annex III use case: ${s(args, \"annex_iii_use_case\")}`,\n \"\",\n \"Load:\",\n \"- acf://guide/ai-act (Article 49 + annex III canonical mapping)\",\n \"- acf://fiche/ACF-05 (internal decision register format)\",\n \"- acf://fiche/ACF-11 (risk assessment)\",\n \"\",\n \"Then produce the Article 49 entry in JSON, ensuring it is consistent with the internal ACF® decision register (same identifiers, same scope). Flag any inconsistency that must be resolved before submission.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-board-report\",\n description:\n \"When the Board asks for a quarterly AI governance report and you want a presentable draft — executive style, hard numbers, risk heatmap, remediation status — that you can hand over without rewriting.\",\n arguments: [\n { name: \"quarter\", description: \"Reporting quarter (e.g. 'Q3 2026').\", required: true },\n { name: \"ai_systems_count\", description: \"Number of AI systems in production.\", required: true },\n { name: \"high_risk_count\", description: \"Number of high-risk systems.\", required: false },\n { name: \"open_remediations\", description: \"Number of open remediation items.\", required: false },\n { name: \"context_notes\", description: \"Free text — major events of the quarter.\", required: false },\n ],\n render: (args) => [\n \"I need a presentable AI governance report for the Board.\",\n \"\",\n `- Quarter: ${s(args, \"quarter\")}`,\n `- AI systems in production: ${s(args, \"ai_systems_count\")}`,\n `- High-risk systems: ${s(args, \"high_risk_count\") || \"TBD\"}`,\n `- Open remediations: ${s(args, \"open_remediations\") || \"TBD\"}`,\n `- Context: ${s(args, \"context_notes\") || \"\"}`,\n \"\",\n \"Load:\",\n \"- acf://framework/principle/P2 (traceability)\",\n \"- acf://framework/principle/P4 (proportional governance)\",\n \"- acf://framework/dimension/D5 (regulatory compliance)\",\n \"- acf://framework/dimension/D6 (audit & continuous improvement)\",\n \"\",\n \"Then produce a 1-page executive draft: portfolio health, criticality distribution (refer to acf://fiche/ACF-02), incidents + remediation status, regulatory delta (AI Act Annex III countdown), recommendations.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-ddao-mandate\",\n description:\n \"When you are about to deploy an autonomous AI agent and your CISO / DPO / Legal needs a signed mandate that documents the decision perimeter, the escalation thresholds, the kill switch and the audit trail — before go-live.\",\n arguments: [\n { name: \"agent_name\", description: \"Name of the agent.\", required: true },\n { name: \"agent_purpose\", description: \"What the agent does.\", required: true },\n { name: \"decision_perimeter\", description: \"Allowed and forbidden actions.\", required: true },\n { name: \"escalation_thresholds\", description: \"Escalation thresholds.\", required: true },\n ],\n render: (args) => [\n \"I need a signable DDAO mandate.\",\n \"\",\n `- Agent name: ${s(args, \"agent_name\")}`,\n `- Purpose: ${s(args, \"agent_purpose\")}`,\n `- Decision perimeter: ${s(args, \"decision_perimeter\")}`,\n `- Escalation thresholds: ${s(args, \"escalation_thresholds\")}`,\n \"\",\n \"Load:\",\n \"- acf://framework/ddao\",\n \"- acf://fiche/ACF-12 (mandate template)\",\n \"- acf://fiche/ACF-03 (constitution)\",\n \"- acf://fiche/ACF-07 (kill switch)\",\n \"- acf://fiche/ACF-09 (escalation thresholds)\",\n \"\",\n \"Then produce a mandate document in 7 sections (Identification, Decision perimeter, Forbidden actions, Escalation thresholds, Kill switch, Audit log, Doctrine version) ready for DDAO + DPO + CISO sign-off.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-classify-system\",\n description:\n \"When you receive an AI system to classify against the EU AI Act and you need a defensible qualification — Article 5 screening, Annex III check, Annex I check, GPAI test, conclusion with a justification that holds up to a regulator's challenge.\",\n arguments: [\n { name: \"system_description\", description: \"What the system does.\", required: true },\n { name: \"sector\", description: \"Sector of operation.\", required: true },\n { name: \"personal_data\", description: \"Does it process personal data?\", required: false },\n ],\n render: (args) => [\n \"I need a defensible AI Act qualification.\",\n \"\",\n `- System: ${s(args, \"system_description\")}`,\n `- Sector: ${s(args, \"sector\")}`,\n `- Personal data: ${s(args, \"personal_data\") || \"to confirm\"}`,\n \"\",\n \"Load:\",\n \"- acf://guide/ai-act\",\n \"- acf://fiche/ACF-02 (criticality)\",\n \"- acf://fiche/ACF-11 (risk assessment)\",\n \"\",\n \"Then run the canonical screening (Art. 5 prohibitions → Annex III → Annex I → GPAI test → transparency-only Art. 50) and conclude with a paragraph that lists the obligations and the operational consequences. If a tool would help, call acf.classify-agent with the structured input.\",\n ].join(\"\\n\"),\n },\n {\n name: \"acf.brief-teacher-case\",\n description:\n \"When you need to prepare a teaching case for a master's class, a bar school session or a CPD seminar — one calibrated to the ACF® V1.0 quality bar (named characters, precise legal refs, bold-answer bonus, 1-3 useful pages max) — get a ready-to-edit case generated from your angle.\",\n arguments: [\n { name: \"topic\", description: \"Pedagogical angle (e.g. 'mandate drafting').\", required: true },\n { name: \"audience\", description: \"Audience (e.g. 'L3 droit', 'EMBA').\", required: true },\n { name: \"duration_minutes\", description: \"Duration in minutes (15-180).\", required: false },\n ],\n render: (args) => [\n \"I need a calibrated ACF® V1.0 teaching case.\",\n \"\",\n `- Topic: ${s(args, \"topic\")}`,\n `- Audience: ${s(args, \"audience\")}`,\n `- Duration: ${s(args, \"duration_minutes\") || \"60\"} minutes`,\n \"\",\n \"Load:\",\n \"- acf://fiche/ACF-00 (introduction)\",\n \"- acf://framework/principle/P1\",\n \"- acf://framework/principle/P3\",\n \"\",\n \"Then produce a case study calibrated to the ACF® toolkit quality bar: named characters (avoid Marc/Marie), precise legal references (AI Act / GDPR / DORA articles), 1-3 page brief, 5 explicit deliverables, a teacher's correction guide. End with the ACF® doctrine citation.\",\n ].join(\"\\n\"),\n },\n];\n\nconst PROMPT_INDEX = new Map(ACF_PROMPTS.map((p) => [p.name, p]));\n\nexport function renderPrompt(name: string, args: Record<string, unknown>) {\n const prompt = PROMPT_INDEX.get(name);\n if (!prompt) throw new Error(`Unknown prompt: ${name}`);\n return {\n description: prompt.description,\n messages: [\n {\n role: \"user\" as const,\n content: { type: \"text\" as const, text: prompt.render(args) },\n },\n ],\n };\n}\n\nexport async function registerPrompts(\n server: Server,\n _registry: AcfRegistry,\n): Promise<void> {\n server.setRequestHandler(ListPromptsRequestSchema, async () => ({\n prompts: ACF_PROMPTS.map((p) => ({\n name: p.name,\n description: p.description,\n arguments: p.arguments,\n })),\n }));\n server.setRequestHandler(GetPromptRequestSchema, async (req) => {\n return renderPrompt(req.params.name, req.params.arguments ?? {});\n });\n}\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { ContentLoader } from \"./content\";\nimport { RulesLoader } from \"./rules-loader\";\nimport { SearchEngine } from \"./search\";\nimport { AcfRegistry } from \"./registry\";\nimport { registerResources } from \"./resources\";\nimport { registerTools } from \"./tools\";\nimport { registerPrompts } from \"./prompts\";\n\nexport interface CreateAcfServerOptions {\n contentRoot: string;\n rulesRoot: string;\n indexPath: string;\n}\n\nexport const ACF_MCP_NAME = \"acf-mcp\";\nexport const ACF_MCP_VERSION = \"1.0.2\";\n\nexport async function createAcfServer(\n opts: CreateAcfServerOptions,\n): Promise<{ server: Server; registry: AcfRegistry }> {\n const content = new ContentLoader({ contentRoot: opts.contentRoot });\n const rules = new RulesLoader({ rulesRoot: opts.rulesRoot });\n const search = await SearchEngine.fromFile(opts.indexPath);\n const meta = await content.loadMeta();\n\n const registry: AcfRegistry = { content, rules, search, meta };\n\n const server = new Server(\n { name: ACF_MCP_NAME, version: ACF_MCP_VERSION },\n {\n capabilities: {\n resources: { listChanged: false, subscribe: false },\n tools: { listChanged: false },\n prompts: { listChanged: false },\n },\n },\n );\n\n await registerResources(server, registry);\n await registerTools(server, registry);\n await registerPrompts(server, registry);\n\n return { server, registry };\n}\n","#!/usr/bin/env node\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { createAcfServer } from \"../core/server.js\";\n\nconst HERE = path.dirname(fileURLToPath(import.meta.url));\nconst PKG_ROOT = path.resolve(HERE, \"..\", \"..\");\n\nasync function main(): Promise<void> {\n const { server } = await createAcfServer({\n contentRoot: path.join(PKG_ROOT, \"content\"),\n rulesRoot: path.join(PKG_ROOT, \"content\", \"rules\"),\n indexPath: path.join(PKG_ROOT, \"dist\", \"search-index.json\"),\n });\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n process.stderr.write(`acf-mcp ready (stdio).\\n`);\n}\n\nmain().catch((err) => {\n process.stderr.write(`${(err as Error).stack ?? String(err)}\\n`);\n process.exit(1);\n});\n"]}