@stevenvo780/st-lang 2.7.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/ast/nodes.d.ts +35 -2
  2. package/dist/ast/nodes.d.ts.map +1 -1
  3. package/dist/index.d.ts +5 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +14 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/lexer/lexer.d.ts.map +1 -1
  8. package/dist/lexer/lexer.js +4 -0
  9. package/dist/lexer/lexer.js.map +1 -1
  10. package/dist/lexer/tokens.d.ts +8 -0
  11. package/dist/lexer/tokens.d.ts.map +1 -1
  12. package/dist/lexer/tokens.js +23 -0
  13. package/dist/lexer/tokens.js.map +1 -1
  14. package/dist/parser/parser.d.ts +6 -0
  15. package/dist/parser/parser.d.ts.map +1 -1
  16. package/dist/parser/parser.js +171 -6
  17. package/dist/parser/parser.js.map +1 -1
  18. package/dist/profiles/classical/cdcl.d.ts +34 -0
  19. package/dist/profiles/classical/cdcl.d.ts.map +1 -0
  20. package/dist/profiles/classical/cdcl.js +843 -0
  21. package/dist/profiles/classical/cdcl.js.map +1 -0
  22. package/dist/profiles/classical/dpll.d.ts +11 -1
  23. package/dist/profiles/classical/dpll.d.ts.map +1 -1
  24. package/dist/profiles/classical/dpll.js +54 -17
  25. package/dist/profiles/classical/dpll.js.map +1 -1
  26. package/dist/profiles/classical/first-order.d.ts.map +1 -1
  27. package/dist/profiles/classical/first-order.js +20 -10
  28. package/dist/profiles/classical/first-order.js.map +1 -1
  29. package/dist/profiles/classical/parallel-sat.d.ts +62 -0
  30. package/dist/profiles/classical/parallel-sat.d.ts.map +1 -0
  31. package/dist/profiles/classical/parallel-sat.js +630 -0
  32. package/dist/profiles/classical/parallel-sat.js.map +1 -0
  33. package/dist/profiles/classical/propositional.d.ts.map +1 -1
  34. package/dist/profiles/classical/propositional.js +35 -19
  35. package/dist/profiles/classical/propositional.js.map +1 -1
  36. package/dist/profiles/classical/sat-preprocess.d.ts +17 -0
  37. package/dist/profiles/classical/sat-preprocess.d.ts.map +1 -0
  38. package/dist/profiles/classical/sat-preprocess.js +372 -0
  39. package/dist/profiles/classical/sat-preprocess.js.map +1 -0
  40. package/dist/profiles/classical/undecidability-detector.d.ts +13 -0
  41. package/dist/profiles/classical/undecidability-detector.d.ts.map +1 -0
  42. package/dist/profiles/classical/undecidability-detector.js +277 -0
  43. package/dist/profiles/classical/undecidability-detector.js.map +1 -0
  44. package/dist/profiles/paraconsistent/belnap.d.ts.map +1 -1
  45. package/dist/profiles/paraconsistent/belnap.js +4 -2
  46. package/dist/profiles/paraconsistent/belnap.js.map +1 -1
  47. package/dist/profiles/shared/tableau-engine.d.ts.map +1 -1
  48. package/dist/profiles/shared/tableau-engine.js +3 -1
  49. package/dist/profiles/shared/tableau-engine.js.map +1 -1
  50. package/dist/protocol/handler.d.ts.map +1 -1
  51. package/dist/protocol/handler.js +327 -88
  52. package/dist/protocol/handler.js.map +1 -1
  53. package/dist/runtime/formula-factory.d.ts.map +1 -1
  54. package/dist/runtime/formula-factory.js +3 -2
  55. package/dist/runtime/formula-factory.js.map +1 -1
  56. package/dist/runtime/interpreter.d.ts +33 -0
  57. package/dist/runtime/interpreter.d.ts.map +1 -1
  58. package/dist/runtime/interpreter.js +516 -5
  59. package/dist/runtime/interpreter.js.map +1 -1
  60. package/dist/tests/benchmark-cdcl.test.d.ts +2 -0
  61. package/dist/tests/benchmark-cdcl.test.d.ts.map +1 -0
  62. package/dist/tests/benchmark-cdcl.test.js +172 -0
  63. package/dist/tests/benchmark-cdcl.test.js.map +1 -0
  64. package/dist/tests/limits.test.js +11 -4
  65. package/dist/tests/limits.test.js.map +1 -1
  66. package/dist/tests/parallel-sat.test.d.ts +2 -0
  67. package/dist/tests/parallel-sat.test.d.ts.map +1 -0
  68. package/dist/tests/parallel-sat.test.js +351 -0
  69. package/dist/tests/parallel-sat.test.js.map +1 -0
  70. package/dist/tests/stress-cdcl.test.d.ts +2 -0
  71. package/dist/tests/stress-cdcl.test.d.ts.map +1 -0
  72. package/dist/tests/stress-cdcl.test.js +792 -0
  73. package/dist/tests/stress-cdcl.test.js.map +1 -0
  74. package/dist/tests/stress-extreme.test.d.ts +2 -0
  75. package/dist/tests/stress-extreme.test.d.ts.map +1 -0
  76. package/dist/tests/stress-extreme.test.js +1005 -0
  77. package/dist/tests/stress-extreme.test.js.map +1 -0
  78. package/dist/tests/v3-features.test.d.ts +2 -0
  79. package/dist/tests/v3-features.test.d.ts.map +1 -0
  80. package/dist/tests/v3-features.test.js +529 -0
  81. package/dist/tests/v3-features.test.js.map +1 -0
  82. package/dist/tests/v3-stress.test.d.ts +2 -0
  83. package/dist/tests/v3-stress.test.d.ts.map +1 -0
  84. package/dist/tests/v3-stress.test.js +755 -0
  85. package/dist/tests/v3-stress.test.js.map +1 -0
  86. package/dist/text-layer/compiler.d.ts +4 -1
  87. package/dist/text-layer/compiler.d.ts.map +1 -1
  88. package/dist/text-layer/compiler.js +35 -0
  89. package/dist/text-layer/compiler.js.map +1 -1
  90. package/dist/types/index.d.ts +27 -1
  91. package/dist/types/index.d.ts.map +1 -1
  92. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stress-extreme.test.js","sourceRoot":"","sources":["../../src/tests/stress-extreme.test.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,mCAAyD;AACzD,wDAAqD;AACrD,gEAA4D;AAC5D,qDAAkD;AAGlD,IAAA,kBAAS,EAAC,GAAG,EAAE;IACb,gCAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,SAAS,GAAG,CAAC,MAAc;IACzB,MAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAC;IACjC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,+DAA+D;AAC/D,6CAA6C;AAC7C,+DAA+D;AAC/D,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO;QACL,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC;QAC7B,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,SAAS,kBAAkB,CAAC,OAAe,EAAE,UAAkB,EAAE,IAAY;QAC3E,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChB,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAA,WAAE,EAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5D,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5D,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5D,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,+CAA+C;IAC/C,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpB,MAAM,IAAI,GAAG,oDAAoD,EAAE,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,oDAAoD,EAAE,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,IAAA,eAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,2CAA2C;AAC3C,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,SAAS,WAAW,CAAC,OAAe,EAAE,KAAa;QACjD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,6CAA6C;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,mCAAmC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;gBACrC,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,mDAAmD;IACnD,mCAAmC;IACnC,SAAS,eAAe,CACtB,QAAgB,EAChB,KAAyB,EACzB,QAAkB;QAElB,0BAA0B;QAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAE9F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAErC,6DAA6D;YAC7D,mCAAmC;YACnC,qDAAqD;YACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEnD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtB,+BAA+B;oBAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAChD,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,+BAA+B;oBAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjD,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,2BAA2B;gBAC3B,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtB,mDAAmD;oBACnD,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,CAAC;IAED,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,gGAAgG;QAChG,MAAM,KAAK,GAAuB;YAChC,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;SACP,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB;QACnD,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,KAAK,GAAuB;YAChC,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;SACP,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB;QAClD,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,qCAAqC;AACrC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,SAAS,qBAAqB,CAC5B,QAAgB,EAChB,KAAyB,EACzB,SAAiB;QAEjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,yCAAyC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,wCAAwC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;gBACtC,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QACD,oDAAoD;QACpD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAuB;YAClC,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;SACP,CAAC;QACF,MAAM,OAAO,GAAG,qBAAqB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,OAAO,GAAuB;YAClC,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;SACP,CAAC;QACF,MAAM,OAAO,GAAG,qBAAqB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,4DAA4D;QAC5D,MAAM,aAAa,GAAuB;YACxC,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB;YACzB,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB;YAC1B,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc;SACvB,CAAC;QACF,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,aAAa,GAAuB;YACxC,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;SACP,CAAC;QACF,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,qCAAqC;AACrC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,SAAS,IAAI,CAAC,IAAY;QACxB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;IACD,SAAS,GAAG,CAAC,CAAU;QACrB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC;IACD,SAAS,GAAG,CAAC,GAAG,IAAe;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,SAAS,EAAE,CAAC,GAAG,IAAe;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,SAAS,OAAO,CAAC,CAAU,EAAE,CAAU;QACrC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,IAAA,WAAE,EAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,KAAK;aAClB,KAAK,CAAC,CAAC,CAAC;aACR,MAAM,CAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,kDAAkD;QAClD,MAAM,OAAO,GAAG,GAAG,CACjB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAC7B,IAAI,CAAC,GAAG,CAAC,EACT,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACf,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,8BAA8B;QAC9B,IAAA,eAAM,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,oCAAoC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,KAAK;aAClB,KAAK,CAAC,CAAC,CAAC;aACR,MAAM,CAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc;QAC/C,4CAA4C;QAC5C,IAAA,eAAM,EAAC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,4CAA4C;AAC5C,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAEzD,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;gBAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;oBACtC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;oBAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;wBAAE,SAAS;oBAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAG,oDAAoD,OAAO,EAAE,CAAC;YAC7E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAExB,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACvB,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,qCAAqC;AACrC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG;;;;;;;;;;;;KAYd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG;;;;;;;;;;;;;KAad,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG;;;;;;;;;;;KAWd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG;;;;;;KAMd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,8CAA8C;QAC9C,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,2CAA2C;YAC3C,MAAM,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC/B,CAAC;YACF,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG;;;;;;;;;KASd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC/B,CAAC;YACF,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM,GAAG;;;;;;;;;KASd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,+BAA+B;QAC/B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAC1F,QAAQ,CACT,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG;;QAEX,MAAM;;yBAEW,KAAK;KACzB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,iDAAiD;QACjD,MAAM,MAAM,GAAG;;;;;;;;;;KAUd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,MAAM,GAAG;;QAEX,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;;yBAEN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;KACpC,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,0CAA0C;AAC1C,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;oBAEC,OAAO;KACtB,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,MAAM,GAAG;;;KAGd,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,sCAAsC;AACtC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;gBACrD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5D,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAChD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;gBACrD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5D,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,0CAA0C;AAC1C,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,uDAAuD;QACvD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG;;0BAEO,QAAQ;KAC7B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,6CAA6C;AAC7C,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAA,WAAE,EAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,oDAAoD,CAAC;QACpE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,qDAAqD,CAAC;QACrE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,MAAM,GAAG,2DAA2D,CAAC;QAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,2DAA2D,CAAC;QAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,MAAM,GAAG,oDAAoD,OAAO,EAAE,CAAC;QAC7E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,yCAAyC;QACzC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,MAAM,GAAG,oDAAoD,OAAO,EAAE,CAAC;QAC7E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,qDAAqD,QAAQ,OAAO,QAAQ,GAAG,CAAC;QAC/F,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,qCAAqC;AACrC,+DAA+D;AAC/D,IAAA,iBAAQ,EAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACnC,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG;;0BAEO,OAAO;KAC5B,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACnC,IAAA,eAAM,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v3-features.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-features.test.d.ts","sourceRoot":"","sources":["../../src/tests/v3-features.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,529 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Tests v3.0 — define, unfold, fold, source, interpret,
4
+ // glossary, render glossary/analysis
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const vitest_1 = require("vitest");
8
+ const interpreter_1 = require("../runtime/interpreter");
9
+ const parser_1 = require("../parser/parser");
10
+ // ── Helpers ──────────────────────────────────────────────────
11
+ function run(source) {
12
+ const interp = new interpreter_1.Interpreter();
13
+ return interp.execute(source);
14
+ }
15
+ function parseOk(source) {
16
+ const parser = new parser_1.Parser('<test>');
17
+ const program = parser.parse(source);
18
+ (0, vitest_1.expect)(parser.diagnostics.filter((d) => d.severity === 'error')).toHaveLength(0);
19
+ return program;
20
+ }
21
+ // ── 1. define ────────────────────────────────────────────────
22
+ (0, vitest_1.describe)('define — formal definitions', () => {
23
+ (0, vitest_1.it)('parses simple define without params', () => {
24
+ const prog = parseOk('logic classical.propositional\ndefine Tautology := P -> P');
25
+ const stmt = prog.statements[1];
26
+ (0, vitest_1.expect)(stmt.kind).toBe('define_decl');
27
+ if (stmt.kind === 'define_decl') {
28
+ (0, vitest_1.expect)(stmt.name).toBe('Tautology');
29
+ (0, vitest_1.expect)(stmt.params).toBeUndefined();
30
+ }
31
+ });
32
+ (0, vitest_1.it)('parses define with params', () => {
33
+ const prog = parseOk('logic classical.propositional\ndefine Implies(x, y) := x -> y');
34
+ const stmt = prog.statements[1];
35
+ (0, vitest_1.expect)(stmt.kind).toBe('define_decl');
36
+ if (stmt.kind === 'define_decl') {
37
+ (0, vitest_1.expect)(stmt.name).toBe('Implies');
38
+ (0, vitest_1.expect)(stmt.params).toEqual(['x', 'y']);
39
+ }
40
+ });
41
+ (0, vitest_1.it)('parses define with description', () => {
42
+ const prog = parseOk('logic classical.propositional\n' +
43
+ 'define Tautology := P -> P\n' +
44
+ 'description "Una tautología básica"');
45
+ const stmt = prog.statements[1];
46
+ if (stmt.kind === 'define_decl') {
47
+ (0, vitest_1.expect)(stmt.description).toBe('Una tautología básica');
48
+ }
49
+ });
50
+ (0, vitest_1.it)('executes define and emits output', () => {
51
+ const out = run('logic classical.propositional\ndefine Tautology := P -> P');
52
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
53
+ (0, vitest_1.expect)(out.stdout).toContain('Define');
54
+ (0, vitest_1.expect)(out.stdout).toContain('Tautology');
55
+ });
56
+ (0, vitest_1.it)('define with params emits param list', () => {
57
+ const out = run('logic classical.propositional\ndefine Implies(x, y) := x -> y');
58
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
59
+ (0, vitest_1.expect)(out.stdout).toContain('Implies(x, y)');
60
+ });
61
+ (0, vitest_1.it)('define with description emits description', () => {
62
+ const out = run('logic classical.propositional\n' +
63
+ 'define Tautology := P -> P\n' +
64
+ 'description "Una tautología"');
65
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
66
+ (0, vitest_1.expect)(out.stdout).toContain('Una tautología');
67
+ });
68
+ (0, vitest_1.it)('detects circular definition (self-reference)', () => {
69
+ const out = run('logic classical.propositional\ndefine Loop := Loop');
70
+ (0, vitest_1.expect)(out.exitCode).not.toBe(0);
71
+ });
72
+ (0, vitest_1.it)('detects indirect circular definition', () => {
73
+ const out = run('logic classical.propositional\n' + 'define A := B\n' + 'define B := A');
74
+ (0, vitest_1.expect)(out.exitCode).not.toBe(0);
75
+ });
76
+ (0, vitest_1.it)('allows non-circular chain definitions', () => {
77
+ const out = run('logic classical.propositional\n' + 'define A := P -> Q\n' + 'define B := A -> R');
78
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
79
+ });
80
+ (0, vitest_1.it)('definition used in check valid', () => {
81
+ const out = run('logic classical.propositional\n' + 'define Tautology := P -> P\n' + 'check valid Tautology');
82
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
83
+ (0, vitest_1.expect)(out.results[0].status).toBe('valid');
84
+ });
85
+ (0, vitest_1.it)('parametric definition used in check valid', () => {
86
+ const out = run('logic classical.propositional\n' +
87
+ 'define Implies(x, y) := x -> y\n' +
88
+ 'check valid Implies(P, P)');
89
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
90
+ (0, vitest_1.expect)(out.results[0].status).toBe('valid');
91
+ });
92
+ (0, vitest_1.it)('definition used in derive', () => {
93
+ const out = run('logic classical.propositional\n' +
94
+ 'define MyRule := P -> Q\n' +
95
+ 'axiom A1 : MyRule\n' +
96
+ 'axiom A2 : P\n' +
97
+ 'derive Q from {A1, A2}');
98
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
99
+ (0, vitest_1.expect)(out.results[0].status).toBe('provable');
100
+ });
101
+ (0, vitest_1.it)('define with = instead of :=', () => {
102
+ const out = run('logic classical.propositional\ndefine Taut = P -> P');
103
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
104
+ (0, vitest_1.expect)(out.stdout).toContain('Taut');
105
+ });
106
+ (0, vitest_1.it)('overwriting a definition replaces it', () => {
107
+ const out = run('logic classical.propositional\n' + 'define D := P\n' + 'define D := Q\n' + 'glossary');
108
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
109
+ // The glossary should show Q, not P
110
+ (0, vitest_1.expect)(out.stdout).toContain('Q');
111
+ });
112
+ });
113
+ // ── 2. Spanish aliases for define/unfold/fold ────────────────
114
+ (0, vitest_1.describe)('Spanish aliases — definir, desplegar, plegar', () => {
115
+ (0, vitest_1.it)('definir = define', () => {
116
+ const out = run('logic classical.propositional\ndefinir Taut := P -> P');
117
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
118
+ (0, vitest_1.expect)(out.stdout).toContain('Define');
119
+ (0, vitest_1.expect)(out.stdout).toContain('Taut');
120
+ });
121
+ (0, vitest_1.it)('desplegar = unfold', () => {
122
+ const out = run('logic classical.propositional\n' + 'definir Taut := P -> P\n' + 'desplegar Taut');
123
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
124
+ (0, vitest_1.expect)(out.stdout).toContain('Unfold');
125
+ });
126
+ (0, vitest_1.it)('plegar = fold', () => {
127
+ const out = run('logic classical.propositional\n' + 'definir Taut := P -> P\n' + 'plegar (P -> P)');
128
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
129
+ (0, vitest_1.expect)(out.stdout).toContain('Fold');
130
+ });
131
+ });
132
+ // ── 3. unfold ────────────────────────────────────────────────
133
+ (0, vitest_1.describe)('unfold — definition expansion', () => {
134
+ (0, vitest_1.it)('unfolds a simple definition', () => {
135
+ const out = run('logic classical.propositional\n' + 'define Tautology := P -> P\n' + 'unfold Tautology');
136
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
137
+ (0, vitest_1.expect)(out.stdout).toContain('Unfold');
138
+ (0, vitest_1.expect)(out.stdout).toContain('→');
139
+ });
140
+ (0, vitest_1.it)('unfold produces a result', () => {
141
+ const out = run('logic classical.propositional\n' + 'define D := P & Q\n' + 'unfold D');
142
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
143
+ (0, vitest_1.expect)(out.results).toHaveLength(1);
144
+ (0, vitest_1.expect)(out.results[0].status).toBe('valid');
145
+ });
146
+ (0, vitest_1.it)('unfold unknown name still works (no expansion)', () => {
147
+ const out = run('logic classical.propositional\nunfold Unknown');
148
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
149
+ // It should still emit the formula as-is
150
+ (0, vitest_1.expect)(out.stdout).toContain('Unfold');
151
+ });
152
+ (0, vitest_1.it)('unfold chain: A := B, B := P; unfold A shows P', () => {
153
+ const out = run('logic classical.propositional\n' + 'define B := P -> Q\n' + 'define A := B\n' + 'unfold A');
154
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
155
+ // A expands to B, but B is also expanded during resolve
156
+ (0, vitest_1.expect)(out.results).toHaveLength(1);
157
+ });
158
+ });
159
+ // ── 4. fold ──────────────────────────────────────────────────
160
+ (0, vitest_1.describe)('fold — reverse definition', () => {
161
+ (0, vitest_1.it)('folds a formula back to its definition name', () => {
162
+ const out = run('logic classical.propositional\n' + 'define D := P -> Q\n' + 'fold (P -> Q)');
163
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
164
+ (0, vitest_1.expect)(out.stdout).toContain('Fold');
165
+ (0, vitest_1.expect)(out.stdout).toContain('D');
166
+ });
167
+ (0, vitest_1.it)('fold with no matching definition returns formula as-is', () => {
168
+ const out = run('logic classical.propositional\nfold (P -> Q)');
169
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
170
+ (0, vitest_1.expect)(out.results).toHaveLength(1);
171
+ });
172
+ (0, vitest_1.it)('fold produces a result entry', () => {
173
+ const out = run('logic classical.propositional\n' + 'define D := P & Q\n' + 'fold (P & Q)');
174
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
175
+ (0, vitest_1.expect)(out.results[0].status).toBe('valid');
176
+ });
177
+ });
178
+ // ── 5. source ────────────────────────────────────────────────
179
+ (0, vitest_1.describe)('source — bibliographic declarations', () => {
180
+ (0, vitest_1.it)('parses source with fields', () => {
181
+ const prog = parseOk('logic classical.propositional\n' +
182
+ 'source Aristotle {\n' +
183
+ ' author "Aristóteles"\n' +
184
+ ' work "Organon"\n' +
185
+ ' year 350\n' +
186
+ '}');
187
+ const stmt = prog.statements[1];
188
+ (0, vitest_1.expect)(stmt.kind).toBe('source_decl');
189
+ });
190
+ (0, vitest_1.it)('executes source and emits info', () => {
191
+ const out = run('logic classical.propositional\n' +
192
+ 'source Aristotle {\n' +
193
+ ' author "Aristóteles"\n' +
194
+ ' work "Organon"\n' +
195
+ ' year 350\n' +
196
+ '}');
197
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
198
+ (0, vitest_1.expect)(out.stdout).toContain('Aristóteles');
199
+ (0, vitest_1.expect)(out.stdout).toContain('350');
200
+ (0, vitest_1.expect)(out.stdout).toContain('Organon');
201
+ });
202
+ (0, vitest_1.it)('source with fuente alias (Spanish)', () => {
203
+ const out = run('logic classical.propositional\n' +
204
+ 'fuente Frege {\n' +
205
+ ' author "Gottlob Frege"\n' +
206
+ ' work "Begriffsschrift"\n' +
207
+ ' year 1879\n' +
208
+ '}');
209
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
210
+ (0, vitest_1.expect)(out.stdout).toContain('Frege');
211
+ (0, vitest_1.expect)(out.stdout).toContain('1879');
212
+ });
213
+ (0, vitest_1.it)('source appears in glossary', () => {
214
+ const out = run('logic classical.propositional\n' +
215
+ 'source Aristotle {\n' +
216
+ ' author "Aristóteles"\n' +
217
+ ' work "Organon"\n' +
218
+ ' year 350\n' +
219
+ '}\n' +
220
+ 'glossary');
221
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
222
+ (0, vitest_1.expect)(out.stdout).toContain('Fuentes');
223
+ (0, vitest_1.expect)(out.stdout).toContain('Aristóteles');
224
+ });
225
+ (0, vitest_1.it)('source with url and section', () => {
226
+ const out = run('logic classical.propositional\n' +
227
+ 'source Wiki {\n' +
228
+ ' author "Wikipedia"\n' +
229
+ ' work "Lógica proposicional"\n' +
230
+ ' url "https://en.wikipedia.org/wiki/Propositional_logic"\n' +
231
+ ' section "Introduction"\n' +
232
+ '}');
233
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
234
+ (0, vitest_1.expect)(out.stdout).toContain('Wikipedia');
235
+ });
236
+ });
237
+ // ── 6. interpret ─────────────────────────────────────────────
238
+ (0, vitest_1.describe)('interpret — text-to-formula binding', () => {
239
+ (0, vitest_1.it)('parses interpret with string', () => {
240
+ const prog = parseOk('logic classical.propositional\n' + 'interpret "todo hombre es mortal" as P -> Q');
241
+ const stmt = prog.statements[1];
242
+ (0, vitest_1.expect)(stmt.kind).toBe('interpret_cmd');
243
+ });
244
+ (0, vitest_1.it)('executes interpret and emits', () => {
245
+ const out = run('logic classical.propositional\n' + 'interpret "todo hombre es mortal" as P -> Q');
246
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
247
+ (0, vitest_1.expect)(out.stdout).toContain('Interpret');
248
+ (0, vitest_1.expect)(out.stdout).toContain('todo hombre es mortal');
249
+ });
250
+ (0, vitest_1.it)('interpret with identifier (passageRef)', () => {
251
+ const out = run('logic classical.propositional\n' + 'interpret Premise1 as P -> Q');
252
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
253
+ (0, vitest_1.expect)(out.stdout).toContain('Interpret');
254
+ (0, vitest_1.expect)(out.stdout).toContain('Premise1');
255
+ });
256
+ (0, vitest_1.it)('interpret creates a let binding usable later', () => {
257
+ const out = run('logic classical.propositional\n' +
258
+ 'interpret "mortalidad" as P -> Q\n' +
259
+ 'check valid (mortalidad -> mortalidad)');
260
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
261
+ // The binding "mortalidad" should be available
262
+ });
263
+ (0, vitest_1.it)('interpret appears in glossary', () => {
264
+ const out = run('logic classical.propositional\n' +
265
+ 'interpret "todo hombre es mortal" as P -> Q\n' +
266
+ 'glossary');
267
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
268
+ (0, vitest_1.expect)(out.stdout).toContain('Interpretaciones');
269
+ (0, vitest_1.expect)(out.stdout).toContain('todo hombre es mortal');
270
+ });
271
+ (0, vitest_1.it)('interpretar alias (Spanish)', () => {
272
+ const out = run('logic classical.propositional\n' + 'interpretar "llueve" as P');
273
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
274
+ (0, vitest_1.expect)(out.stdout).toContain('Interpret');
275
+ });
276
+ });
277
+ // ── 7. glossary ──────────────────────────────────────────────
278
+ (0, vitest_1.describe)('glossary — combined output', () => {
279
+ (0, vitest_1.it)('empty glossary shows "(sin definiciones registradas)"', () => {
280
+ const out = run('logic classical.propositional\nglossary');
281
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
282
+ (0, vitest_1.expect)(out.stdout).toContain('sin definiciones registradas');
283
+ });
284
+ (0, vitest_1.it)('glossary shows definitions', () => {
285
+ const out = run('logic classical.propositional\n' + 'define A := P -> Q\n' + 'glossary');
286
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
287
+ (0, vitest_1.expect)(out.stdout).toContain('GLOSARIO');
288
+ (0, vitest_1.expect)(out.stdout).toContain('A');
289
+ });
290
+ (0, vitest_1.it)('glossary shows definitions + sources + interpretations', () => {
291
+ const out = run('logic classical.propositional\n' +
292
+ 'define Implicacion := P -> Q\n' +
293
+ 'source Frege {\n' +
294
+ ' author "Frege"\n' +
295
+ ' work "Begriffsschrift"\n' +
296
+ ' year 1879\n' +
297
+ '}\n' +
298
+ 'interpret "si P entonces Q" as P -> Q\n' +
299
+ 'glossary');
300
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
301
+ (0, vitest_1.expect)(out.stdout).toContain('GLOSARIO');
302
+ (0, vitest_1.expect)(out.stdout).toContain('Implicacion');
303
+ (0, vitest_1.expect)(out.stdout).toContain('Fuentes');
304
+ (0, vitest_1.expect)(out.stdout).toContain('Frege');
305
+ (0, vitest_1.expect)(out.stdout).toContain('Interpretaciones');
306
+ (0, vitest_1.expect)(out.stdout).toContain('si P entonces Q');
307
+ });
308
+ (0, vitest_1.it)('glosario alias (Spanish)', () => {
309
+ const out = run('logic classical.propositional\nglosario');
310
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
311
+ (0, vitest_1.expect)(out.stdout).toContain('GLOSARIO');
312
+ });
313
+ });
314
+ // ── 8. render glossary ───────────────────────────────────────
315
+ (0, vitest_1.describe)('render glossary — formatted output', () => {
316
+ (0, vitest_1.it)('render glossary as markdown', () => {
317
+ const out = run('logic classical.propositional\n' + 'define Impl := P -> Q\n' + 'render glossary as markdown');
318
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
319
+ (0, vitest_1.expect)(out.stdout).toContain('**Impl**');
320
+ (0, vitest_1.expect)(out.stdout).toContain(':=');
321
+ });
322
+ (0, vitest_1.it)('render glossary as json', () => {
323
+ const out = run('logic classical.propositional\n' + 'define Impl := P -> Q\n' + 'render glossary as json');
324
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
325
+ // JSON must be parseable
326
+ const lines = out.stdout.split('\n');
327
+ const jsonStr = lines.filter((l) => l.trim().length > 0).join('\n');
328
+ (0, vitest_1.expect)(jsonStr).toContain('"Impl"');
329
+ (0, vitest_1.expect)(jsonStr).toContain('"body"');
330
+ });
331
+ (0, vitest_1.it)('render glossary as latex', () => {
332
+ const out = run('logic classical.propositional\n' + 'define Impl := P -> Q\n' + 'render glossary as latex');
333
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
334
+ (0, vitest_1.expect)(out.stdout).toContain('\\newcommand');
335
+ (0, vitest_1.expect)(out.stdout).toContain('Impl');
336
+ });
337
+ (0, vitest_1.it)('render glossary with no definitions', () => {
338
+ const out = run('logic classical.propositional\nrender glossary as markdown');
339
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
340
+ (0, vitest_1.expect)(out.stdout).toContain('sin definiciones');
341
+ });
342
+ (0, vitest_1.it)('render glossary with params and description', () => {
343
+ const out = run('logic classical.propositional\n' +
344
+ 'define Impl(x, y) := x -> y\n' +
345
+ 'description "Implicación material"\n' +
346
+ 'render glossary as markdown');
347
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
348
+ (0, vitest_1.expect)(out.stdout).toContain('Impl(x, y)');
349
+ (0, vitest_1.expect)(out.stdout).toContain('Implicación material');
350
+ });
351
+ });
352
+ // ── 9. render analysis ───────────────────────────────────────
353
+ (0, vitest_1.describe)('render analysis — full document', () => {
354
+ (0, vitest_1.it)('render analysis produces headings', () => {
355
+ const out = run('logic classical.propositional\n' +
356
+ 'define D := P -> Q\n' +
357
+ 'axiom A1 : P -> Q\n' +
358
+ 'render analysis as markdown');
359
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
360
+ (0, vitest_1.expect)(out.stdout).toContain('Análisis');
361
+ (0, vitest_1.expect)(out.stdout).toContain('Definiciones');
362
+ (0, vitest_1.expect)(out.stdout).toContain('Axiomas');
363
+ });
364
+ (0, vitest_1.it)('render analysis includes sources', () => {
365
+ const out = run('logic classical.propositional\n' +
366
+ 'source Aristotle {\n' +
367
+ ' author "Aristóteles"\n' +
368
+ ' work "Organon"\n' +
369
+ ' year 350\n' +
370
+ '}\n' +
371
+ 'render analysis as markdown');
372
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
373
+ (0, vitest_1.expect)(out.stdout).toContain('Fuentes');
374
+ (0, vitest_1.expect)(out.stdout).toContain('Aristóteles');
375
+ });
376
+ (0, vitest_1.it)('render analysis with theorems and claims', () => {
377
+ const out = run('logic classical.propositional\n' +
378
+ 'axiom A1 : P -> Q\n' +
379
+ 'axiom A2 : P\n' +
380
+ 'theorem T1 = Q\n' +
381
+ 'render analysis as markdown');
382
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
383
+ (0, vitest_1.expect)(out.stdout).toContain('Teoremas');
384
+ });
385
+ (0, vitest_1.it)('render analysis empty is minimal', () => {
386
+ const out = run('logic classical.propositional\nrender analysis as markdown');
387
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
388
+ (0, vitest_1.expect)(out.stdout).toContain('Análisis');
389
+ });
390
+ });
391
+ // ── 10. definition expansion in proofs ───────────────────────
392
+ (0, vitest_1.describe)('definition expansion in resolve pipeline', () => {
393
+ (0, vitest_1.it)('definition expanded in check satisfiable', () => {
394
+ const out = run('logic classical.propositional\n' + 'define D := P & !P\n' + 'check satisfiable D');
395
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
396
+ (0, vitest_1.expect)(out.results[0].status).toBe('unsatisfiable');
397
+ });
398
+ (0, vitest_1.it)('parametric definition in check valid', () => {
399
+ const out = run('logic classical.propositional\n' + 'define Id(x) := x -> x\n' + 'check valid Id(P)');
400
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
401
+ (0, vitest_1.expect)(out.results[0].status).toBe('valid');
402
+ });
403
+ (0, vitest_1.it)('parametric definition with two params', () => {
404
+ const out = run('logic classical.propositional\n' +
405
+ 'define Impl(x, y) := x -> y\n' +
406
+ 'check valid (Impl(P, P))');
407
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
408
+ (0, vitest_1.expect)(out.results[0].status).toBe('valid');
409
+ });
410
+ (0, vitest_1.it)('definition expanded in derive', () => {
411
+ const out = run('logic classical.propositional\n' +
412
+ 'define IMP := P -> Q\n' +
413
+ 'axiom A1 : IMP\n' +
414
+ 'axiom A2 : P\n' +
415
+ 'derive Q from {A1, A2}');
416
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
417
+ (0, vitest_1.expect)(out.results[0].status).toBe('provable');
418
+ });
419
+ (0, vitest_1.it)('definition in truth table', () => {
420
+ const out = run('logic classical.propositional\n' + 'define D := P | !P\n' + 'truth_table D');
421
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
422
+ (0, vitest_1.expect)(out.stdout).toContain('T');
423
+ });
424
+ });
425
+ // ── 11. export of definitions ────────────────────────────────
426
+ (0, vitest_1.describe)('export define', () => {
427
+ (0, vitest_1.it)('parses export define', () => {
428
+ const prog = parseOk('logic classical.propositional\n' + 'export define MyDef := P -> Q');
429
+ const stmt = prog.statements[1];
430
+ (0, vitest_1.expect)(stmt.kind).toBe('export_decl');
431
+ });
432
+ });
433
+ // ── 12. edge cases and integration ───────────────────────────
434
+ (0, vitest_1.describe)('edge cases', () => {
435
+ (0, vitest_1.it)('multiple defines before glossary', () => {
436
+ const out = run('logic classical.propositional\n' +
437
+ 'define A := P\n' +
438
+ 'define B := Q\n' +
439
+ 'define C := R\n' +
440
+ 'glossary');
441
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
442
+ (0, vitest_1.expect)(out.stdout).toContain('A');
443
+ (0, vitest_1.expect)(out.stdout).toContain('B');
444
+ (0, vitest_1.expect)(out.stdout).toContain('C');
445
+ });
446
+ (0, vitest_1.it)('define + source + interpret + unfold + fold + glossary all in one', () => {
447
+ const out = run('logic classical.propositional\n' +
448
+ 'define D := P -> Q\n' +
449
+ 'source Aristotle {\n' +
450
+ ' author "Aristóteles"\n' +
451
+ ' work "Organon"\n' +
452
+ '}\n' +
453
+ 'interpret "si P entonces Q" as P -> Q\n' +
454
+ 'unfold D\n' +
455
+ 'fold (P -> Q)\n' +
456
+ 'glossary');
457
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
458
+ (0, vitest_1.expect)(out.stdout).toContain('Define');
459
+ (0, vitest_1.expect)(out.stdout).toContain('Source');
460
+ (0, vitest_1.expect)(out.stdout).toContain('Interpret');
461
+ (0, vitest_1.expect)(out.stdout).toContain('Unfold');
462
+ (0, vitest_1.expect)(out.stdout).toContain('Fold');
463
+ (0, vitest_1.expect)(out.stdout).toContain('GLOSARIO');
464
+ });
465
+ (0, vitest_1.it)('define inside theory block', () => {
466
+ const out = run('logic classical.propositional\n' +
467
+ 'theory T {\n' +
468
+ ' define D := P -> Q\n' +
469
+ ' axiom A1 : D\n' +
470
+ '}');
471
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
472
+ });
473
+ (0, vitest_1.it)('define with complex formula', () => {
474
+ const out = run('logic classical.propositional\n' + 'define Complex := (P -> Q) & (Q -> R) -> (P -> R)');
475
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
476
+ (0, vitest_1.expect)(out.stdout).toContain('Complex');
477
+ });
478
+ (0, vitest_1.it)('define with negation', () => {
479
+ const out = run('logic classical.propositional\n' +
480
+ 'define Contradiction := P & !P\n' +
481
+ 'check satisfiable Contradiction');
482
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
483
+ (0, vitest_1.expect)(out.results[0].status).toBe('unsatisfiable');
484
+ });
485
+ (0, vitest_1.it)('unfold then check valid on result', () => {
486
+ const out = run('logic classical.propositional\n' +
487
+ 'define Taut := P -> P\n' +
488
+ 'unfold Taut\n' +
489
+ 'check valid (P -> P)');
490
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
491
+ (0, vitest_1.expect)(out.results[1].status).toBe('valid');
492
+ });
493
+ (0, vitest_1.it)('source with negative year', () => {
494
+ const out = run('logic classical.propositional\n' +
495
+ 'source Ancient {\n' +
496
+ ' author "Parmenides"\n' +
497
+ ' year -500\n' +
498
+ '}');
499
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
500
+ (0, vitest_1.expect)(out.stdout).toContain('Parmenides');
501
+ });
502
+ (0, vitest_1.it)('full workflow: source + define + axiom + derive + render analysis', () => {
503
+ const out = run('logic classical.propositional\n' +
504
+ 'source Aristotle {\n' +
505
+ ' author "Aristóteles"\n' +
506
+ ' work "Organon"\n' +
507
+ ' year 350\n' +
508
+ '}\n' +
509
+ 'define Mortal := P -> Q\n' +
510
+ 'description "Todo hombre es mortal"\n' +
511
+ 'axiom A1 : Mortal\n' +
512
+ 'axiom A2 : P\n' +
513
+ 'derive Q from {A1, A2}\n' +
514
+ 'render analysis as markdown');
515
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
516
+ (0, vitest_1.expect)(out.results[0].status).toBe('provable');
517
+ (0, vitest_1.expect)(out.stdout).toContain('Análisis');
518
+ (0, vitest_1.expect)(out.stdout).toContain('Definiciones');
519
+ (0, vitest_1.expect)(out.stdout).toContain('Axiomas');
520
+ (0, vitest_1.expect)(out.stdout).toContain('Fuentes');
521
+ });
522
+ (0, vitest_1.it)('render glossary default format (no as clause)', () => {
523
+ const out = run('logic classical.propositional\n' + 'define D := P -> Q\n' + 'render glossary');
524
+ (0, vitest_1.expect)(out.exitCode).toBe(0);
525
+ // Default should be markdown
526
+ (0, vitest_1.expect)(out.stdout).toContain('**D**');
527
+ });
528
+ });
529
+ //# sourceMappingURL=v3-features.test.js.map