@heyhuynhgiabuu/pi-diff 0.2.2 → 0.4.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 (59) hide show
  1. package/README.md +117 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +55 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core/diff.d.ts +14 -0
  7. package/dist/core/diff.d.ts.map +1 -0
  8. package/dist/core/diff.js +72 -0
  9. package/dist/core/diff.js.map +1 -0
  10. package/dist/index.d.ts +42 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +1738 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/review/command.d.ts +2 -0
  15. package/dist/review/command.d.ts.map +1 -0
  16. package/dist/review/command.js +365 -0
  17. package/dist/review/command.js.map +1 -0
  18. package/dist/review/export.d.ts +7 -0
  19. package/dist/review/export.d.ts.map +1 -0
  20. package/dist/review/export.js +77 -0
  21. package/dist/review/export.js.map +1 -0
  22. package/dist/review/file-preview.d.ts +9 -0
  23. package/dist/review/file-preview.d.ts.map +1 -0
  24. package/dist/review/file-preview.js +228 -0
  25. package/dist/review/file-preview.js.map +1 -0
  26. package/dist/review/git.d.ts +49 -0
  27. package/dist/review/git.d.ts.map +1 -0
  28. package/dist/review/git.js +200 -0
  29. package/dist/review/git.js.map +1 -0
  30. package/dist/review/hunk-preview.d.ts +25 -0
  31. package/dist/review/hunk-preview.d.ts.map +1 -0
  32. package/dist/review/hunk-preview.js +973 -0
  33. package/dist/review/hunk-preview.js.map +1 -0
  34. package/dist/review/interactive.d.ts +27 -0
  35. package/dist/review/interactive.d.ts.map +1 -0
  36. package/dist/review/interactive.js +146 -0
  37. package/dist/review/interactive.js.map +1 -0
  38. package/dist/review/model.d.ts +33 -0
  39. package/dist/review/model.d.ts.map +1 -0
  40. package/dist/review/model.js +208 -0
  41. package/dist/review/model.js.map +1 -0
  42. package/dist/review/prompt.d.ts +4 -0
  43. package/dist/review/prompt.d.ts.map +1 -0
  44. package/dist/review/prompt.js +43 -0
  45. package/dist/review/prompt.js.map +1 -0
  46. package/dist/review/session.d.ts +69 -0
  47. package/dist/review/session.d.ts.map +1 -0
  48. package/dist/review/session.js +190 -0
  49. package/dist/review/session.js.map +1 -0
  50. package/dist/review/tui.d.ts +57 -0
  51. package/dist/review/tui.d.ts.map +1 -0
  52. package/dist/review/tui.js +486 -0
  53. package/dist/review/tui.js.map +1 -0
  54. package/media/review-diff.png +0 -0
  55. package/package.json +73 -5
  56. package/prompts/review-diff-agent.md +19 -0
  57. package/biome.json +0 -29
  58. package/src/index.ts +0 -1635
  59. package/tsconfig.json +0 -19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hunk-preview.js","sourceRoot":"","sources":["../../src/review/hunk-preview.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8MA,0DAOC;AA2ID,4CAiFC;AAED,sCA6BC;AAED,8CAgCC;AA8KD,oBAEC;AA4GD,sCAsHC;AAED,kCAmIC;AAzgCD,qCAAmD;AACnD,yCAAoC;AAEpC,sCAA0C;AAC1C,2CAA6B;AA+C7B,MAAM,YAAY,GAA+B;IAChD,OAAO,EAAE;QACR,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iEAAiE;QAC9E,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,SAAS;KACtB;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,4DAA4D;QACzE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,SAAS;KACtB;IACD,MAAM,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2DAA2D;QACxE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,SAAS;KACtB;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,mDAAmD;QAChE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,SAAS;KACtB;CACD,CAAC;AAEF,MAAM,eAAe,GAAG,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;AAC5D,MAAM,oBAAoB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;AACrE,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,IAAI,GAAG,GAAG,SAAS,CAAC;AACpB,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAM,GAAG,GAAG,SAAS,CAAC;AACtB,IAAI,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;AACzD,IAAI,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;AACzD,IAAI,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;AAC9D,IAAI,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;AAC9D,IAAI,aAAa,GAAG,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AACvE,IAAI,aAAa,GAAG,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AACvE,IAAI,QAAQ,GAAG,qBAAqB,CAAC;AACrC,IAAI,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;AAC5D,IAAI,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;AAC5D,IAAI,MAAM,GAAG,qBAAqB,CAAC;AACnC,IAAI,OAAO,GAAG,wBAAwB,CAAC;AACvC,IAAI,OAAO,GAAG,qBAAqB,CAAC;AACpC,IAAI,aAAa,GAAG,wBAAwB,CAAC;AAC7C,IAAI,SAAS,GAAG,qBAAqB,CAAC;AACtC,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,IAAI,OAAO,GAAG,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;AAClC,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,GAAG,CAAC,CAAC;AACxD,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,GAAG,CAAC,CAAC;AAChE,MAAM,qBAAqB,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,eAAe,EAAE,GAAG,CAAC,CAAC;AACxE,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,IAAI,OAAO,GAAG,UAAU,CAAC;AACzB,IAAI,mBAAmB,GAAe,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACtF,IAAI,qBAAqB,GAAG,EAAE,CAAC;AAC/B,IAAI,kBAAkB,GAAG,IAAI,CAAC;AAC9B,IAAI,oBAAoB,GAAG,KAAK,CAAC;AACjC,IAAI,KAAK,GAAkB,OAAO,CAAC,GAAG,CAAC,UAAuC,IAAI,aAAa,CAAC;AAChG,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAM,QAAQ,GAAoC;IACjD,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,CAAC,EAAE,GAAG;IACN,GAAG,EAAE,KAAK;IACV,CAAC,EAAE,GAAG;IACN,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,OAAO;IACd,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,UAAU;IACd,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;CACV,CAAC;AAEF,IAAA,gBAAU,EAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACpD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAC;AAE5C,KAAK,UAAU,uBAAuB,CAAC,KAA6B;IAC1E,aAAa,EAAE,CAAC;IAChB,MAAM,IAAI,GAAG,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,aAAa;IACrB,IAAI,cAAc;QAAE,OAAO;IAC3B,gBAAgB,EAAE,CAAC;IACnB,cAAc,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAgB;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,KAAK,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,OAAO;QACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC,CAAC;QACH,KAAK;QACL,OAAO;QACP,KAAK;KACL,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,QAAgB;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC;AAED,SAAS,KAAK,CAAC,IAAY,EAAE,QAAgB;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,KAAK,CAAC,IAAY,EAAE,QAAgB;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,sCAAsC,CAAC,CAAC,CAAC;IACtF,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzF,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,KAAK,CACb,IAAyC,EACzC,MAA2C,EAC3C,SAAiB;IAEjB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC/D,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAU;IACxC,IAAI,CAAC,KAAK,EAAE,SAAS;QAAE,OAAO;IAC9B,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;YAAE,OAAO;QAE/B,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACnC,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC;gBACJ,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;gBACvD,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;gBAClD,IAAI,aAAa,EAAE,CAAC;oBACnB,OAAO,GAAG,aAAa,CAAC;oBACxB,OAAO,GAAG,aAAa,CAAC;oBACxB,OAAO,GAAG,aAAa,CAAC;gBACzB,CAAC;YACF,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,IAAI,CAAC;gBACJ,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBACjE,IAAI,WAAW;oBAAE,OAAO,GAAG,WAAW,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACX,CAAC;QAED,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACrC,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACvC,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,aAAa,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,aAAa,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,QAAQ,GAAG,OAAO,CAAC;QACnB,GAAG,GAAG,UAAU,OAAO,EAAE,CAAC;QAC1B,OAAO,GAAG,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACX,CAAC;AAED,SAAS,cAAc;IACtB,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACpG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,IAAI,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBACpD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBACrC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;gBACjE,CAAC;YACF,CAAC;QACF,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED,SAAgB,gBAAgB;IAC/B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,IAAI,MAAM;QAAE,oBAAoB,GAAG,IAAI,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,oBAAoB,GAAG,IAAI,CAAC;IAEnE,MAAM,OAAO,GAAG,CACf,OAAsB,EACtB,GAAW,EACX,WAA+B,EAC/B,GAA4B,EAC3B,EAAE;QACH,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACF,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CACf,OAAsB,EACtB,GAAW,EACX,WAA+B,EAC/B,GAA4B,EAC3B,EAAE;QACH,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACF,CAAC,CAAC;IAEF,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACxD,MAAM,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACxD,MAAM,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7E,QAAQ,GAAG,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7E,QAAQ,GAAG,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3E,aAAa,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3E,aAAa,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACnD,QAAQ,GAAG,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACxD,MAAM,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACxD,MAAM,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/C,MAAM,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACjD,OAAO,GAAG,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACjD,OAAO,GAAG,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACrD,SAAS,GAAG,KAAK,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3D,aAAa,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,MAAM,EAAE,UAAU,CAAC;IAC9D,IAAI,UAAU;QAAE,KAAK,GAAG,UAA0B,CAAC;IACnD,OAAO,GAAG,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;IAC9B,mBAAmB,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACtE,kBAAkB,GAAG,CAAC,oBAAoB,CAAC;AAC5C,CAAC;AAED,SAAgB,aAAa,CAAC,KAAW;IACxC,IAAI,CAAC,KAAK,EAAE,EAAE;QAAE,OAAO,UAAU,CAAC;IAClC,MAAM,MAAM,GAAG;QACd,WAAW;QACX,QAAQ;QACR,OAAO;QACP,SAAS;QACT,OAAO;QACP,eAAe;QACf,iBAAiB;QACjB,iBAAiB;KACjB,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACR,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACR,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAW;IAC5C,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,oBAAoB,IAAI,qBAAqB,IAAI,qBAAqB,KAAK,eAAe,EAAE,CAAC;QACjG,OAAO,GAAG,UAAU,CAAC;QACrB,GAAG,GAAG,SAAS,CAAC;QAChB,kBAAkB,GAAG,IAAI,CAAC;IAC3B,CAAC;IACD,qBAAqB,GAAG,eAAe,CAAC;IACxC,IAAI,KAAK,EAAE,SAAS,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAChD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,GAAG,MAAM,CAAC;gBACjB,GAAG,GAAG,UAAU,OAAO,EAAE,CAAC;YAC3B,CAAC;QACF,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACX,CAAC;IACD,IAAI,kBAAkB,IAAI,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5C,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,kBAAkB,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,SAAS;QAAE,OAAO,mBAAmB,CAAC;IAClD,IAAI,CAAC;QACJ,OAAO;YACN,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,MAAM;YACjD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,MAAM;YACnD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,MAAM;SACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,mBAAmB,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,IAAI,CAAC,OAAe;IAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACtC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,kBAAkB,CAAC;IAC5C,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,iBAAiB,CAAC;IAC3C,OAAO,oBAAoB,CAAC;AAC7B,CAAC;AAED,SAAS,GAAG,CAAC,OAAe,EAAE,KAAa;IAC1C,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;QACtD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChB,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;gBAChB,SAAS;YACV,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AAC5G,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IACjC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACpB,EAAE,GAAG,EAAE,CAAC;YACR,EAAE,GAAG,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5B,EAAE,GAAG,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,EAAE,GAAG,QAAQ,CAAC;QACf,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,EAAE,GAAG,QAAQ,CAAC;QACf,CAAC;IACF,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC3C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,MAAM,CAAC,EAAE,AAAD,EAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IACvD,OAAO,SAAS,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAc,EAAE,EAAE,CACvE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CACvD,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,KAAa,EAAE,OAAe,EAAE,MAAM,GAAG,EAAE;IAC7E,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACrC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAC9C,SAAS,GAAG,IAAI,CAAC;YACjB,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChB,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;gBACrC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;gBAChB,SAAS;YACV,CAAC;QACF,CAAC;QACD,IAAI,OAAO,IAAI,cAAc,EAAE,CAAC;YAC/B,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;oBAC5D,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;wBAChC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wBAC/C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;4BACtB,MAAM,GAAG,SAAS,CAAC;4BACnB,SAAS;wBACV,CAAC;oBACF,CAAC;oBACD,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM;gBACP,CAAC;gBACD,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC;oBAAE,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;;oBACrD,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC;gBACpE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,OAAO,IAAI,CAAC;YACb,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YACrB,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC;YACrB,OAAO,GAAG,CAAC,CAAC;YACZ,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChC,SAAS,GAAG,IAAI,CAAC;gBACjB,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAChD,CAAC;QACF,CAAC;QACD,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,IAAI,CAAC,KAAoB,EAAE,KAAa,EAAE,EAAE,GAAG,OAAO;IAC9D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,IAAI,CAAC,KAAa;IAC1B,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,cAAc,CAAC,IAAgB,EAAE,KAAa,EAAE,OAAe;IACvE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,KAAK,GAAG,eAAe;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC3B,CAAC,EACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CACxF,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;IACnD,IAAI,SAAS,GAAG,oBAAoB;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS;QAClC,YAAY,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS;YAAE,cAAc,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;IAChD,IAAI,cAAc,IAAI,oBAAoB;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,SAAS,IAAI,oBAAoB;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAgB,IAAI,CAAC,QAAgB;IACpC,OAAO,QAAQ,CAAC,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,KAAe;IAC/C,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,cAAc,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM;QAC/B,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,QAAqC;IACzE,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,GAAG,KAAK,KAAK,QAAQ,KAAK,IAAI,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM;QAAE,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,IAAA,gBAAU,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5E,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CACxB,OAAe,EACf,OAAe;IAMf,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACjF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACjC,IAAI,IAAI,MAAM,CAAC;YACf,WAAW,IAAI,MAAM,CAAC;YACtB,WAAW,IAAI,MAAM,CAAC;QACvB,CAAC;IACF,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,MAA+B,EAAE,MAAc,EAAE,WAAmB;IACvG,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC;IACnD,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;gBAChD,MAAM,IAAI,QAAQ,CAAC;gBACnB,IAAI,QAAQ,KAAK,SAAS;oBAAE,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzE,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;gBAChB,SAAS;YACV,CAAC;QACF,CAAC;QACD,OAAO,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAAE,UAAU,IAAI,CAAC,CAAC;QACvF,MAAM,cAAc,GACnB,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;YACpC,WAAW,GAAG,cAAc,CAAC;YAC7B,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,GAAG,GAAG,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,OAAe;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,OAAO;YAAE,SAAS,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC;aACpE,IAAI,IAAI,CAAC,KAAK;YAAE,SAAS,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC;aACvE,CAAC;YACL,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC;YACxB,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC;QACzB,CAAC;IACF,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC3C,CAAC;AAEM,KAAK,UAAU,aAAa,CAClC,IAAgB,EAChB,QAAqC,EACrC,QAAgB,EAChB,MAAkB,EAClB,KAAa;IAEb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC3B,CAAC,EACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CACrF,CAAC;IACF,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;IAE9E,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,YAAY;QAClD,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE1B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,MAAM,GAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAE7C,SAAS,OAAO,CACf,MAAqB,EACrB,IAAY,EACZ,QAAgB,EAChB,MAAc,EACd,IAAY,EACZ,MAAM,GAAG,EAAE;QAEX,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;QAC3E,MAAM,KAAK,GAAG,QAAQ,IAAI,OAAO,CAAC;QAClC,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC;QAC3G,MAAM,kBAAkB,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC;QAClG,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QACpF,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACzC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;IAED,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,MAAM,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC;YACnE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;YACxF,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACV,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,GAAG,GAAG,GAAG,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;YAC1F,QAAQ,IAAI,CAAC,CAAC;YACd,QAAQ,IAAI,CAAC,CAAC;YACd,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACV,CAAC;QAED,MAAM,SAAS,GAA6D,EAAE,CAAC;QAC/E,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAChE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAChG,QAAQ,IAAI,CAAC,CAAC;YACd,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,MAAM,SAAS,GAA6D,EAAE,CAAC;QAC/E,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAChE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAChG,QAAQ,IAAI,CAAC,CAAC;YACd,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1G,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,IAAI,iBAAiB,IAAI,YAAY,EAAE,CAAC;YACtF,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrF,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrF,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACtG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACtG,SAAS;QACV,CAAC;QACD,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,IAAI,iBAAiB,IAAI,CAAC,YAAY,EAAE,CAAC;YACvF,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClF,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;YACjH,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;YACjH,SAAS;QACV,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5F,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3F,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5F,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3F,CAAC;IACF,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAEM,KAAK,UAAU,WAAW,CAChC,IAAgB,EAChB,QAAqC,EACrC,QAAgB,EAChB,MAAkB,EAClB,KAAa;IAEb,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;QAAE,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1G,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAGlC,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACV,CAAC;QACD,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,QAAQ;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,QAAQ;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3D,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE;YAClD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC3B,CAAC,EACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CACxF,CAAC;IACF,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEtF,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;YAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG,YAAY;QACrD,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE7B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAG3D,MAAM,SAAS,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC;IAE9D,SAAS,SAAS,CACjB,IAAwC,EACxC,SAAiB,EACjB,MAAsC,EACtC,IAAsB;QAEtB,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,OAAO,IAAI,GAAG,GAAG,CAAC;YAC7E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;YACtF,MAAM,MAAM,GAAG,GAAG,OAAO,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,GAAG,CAAC;YACzF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;QAC1G,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;QACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;QACnF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACpF,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACvD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACjH,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;QAC3E,MAAM,KAAK,GAAG,QAAQ,IAAI,OAAO,CAAC;QAClC,IAAI,IAAI,GAAG,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,GAAG,SAAS,EAAE,CAAC;QAC/F,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9G,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,OAAO,IAAI,GAAG,GAAG,CAAC;QACzH,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO,IAAI,GAAG,GAAG,CAAC;QACnG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACnH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC;QAC7E,MAAM,QAAQ,GACb,cAAc,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxG,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,MAAM,cAAc,GACnB,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,QAAQ,GAAG,SAAS,CACzB,GAAG,CAAC,IAAI,EACR,aAAa,EACb,cAAc,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,IAAI,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAClG,MAAM,CACN,CAAC;QACF,MAAM,SAAS,GAAG,SAAS,CAC1B,GAAG,CAAC,KAAK,EACT,cAAc,EACd,cAAc,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,IAAI,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAClG,OAAO,CACP,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9E,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;YAC1D,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;YAC5D,MAAM,CAAC,IAAI,CACV,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,EAAE,CAC3J,CAAC;QACH,CAAC;IACF,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;QAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,MAAM,OAAO,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ReviewDiff } from "./git.js";
2
+ export interface ReviewPanelOptions {
3
+ file?: string;
4
+ hunkId?: string;
5
+ maxFiles?: number;
6
+ maxHunks?: number;
7
+ maxLinesPerHunk?: number;
8
+ }
9
+ export interface ReviewComment {
10
+ id: string;
11
+ file: string;
12
+ line?: number;
13
+ hunkId?: string;
14
+ body: string;
15
+ createdAt: string;
16
+ }
17
+ export declare function formatInteractiveReviewPanel(diff: ReviewDiff, comments?: ReviewComment[], options?: ReviewPanelOptions): string;
18
+ export declare function formatReviewComments(comments: ReviewComment[]): string;
19
+ export declare function createReviewComment(input: {
20
+ comments: ReviewComment[];
21
+ file: string;
22
+ body: string;
23
+ line?: number;
24
+ hunkId?: string;
25
+ now?: Date;
26
+ }): ReviewComment;
27
+ //# sourceMappingURL=interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/review/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA0C,MAAM,UAAU,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,4BAA4B,CAC3C,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,aAAa,EAAO,EAC9B,OAAO,GAAE,kBAAuB,GAC9B,MAAM,CAsDR;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CActE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAC1C,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,IAAI,CAAC;CACX,GAAG,aAAa,CAUhB"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatInteractiveReviewPanel = formatInteractiveReviewPanel;
4
+ exports.formatReviewComments = formatReviewComments;
5
+ exports.createReviewComment = createReviewComment;
6
+ function formatInteractiveReviewPanel(diff, comments = [], options = {}) {
7
+ const maxFiles = options.maxFiles ?? 40;
8
+ const maxHunks = options.maxHunks ?? 20;
9
+ const maxLinesPerHunk = options.maxLinesPerHunk ?? 80;
10
+ const selectedFile = options.file ? findFile(diff, options.file) : null;
11
+ const selectedHunk = selectedFile && options.hunkId ? findHunk(selectedFile, options.hunkId) : null;
12
+ const lines = [];
13
+ lines.push("# Interactive Code Review");
14
+ lines.push("");
15
+ lines.push(`Mode: ${diff.mode.type === "branch" ? `${diff.mode.base}...HEAD` : "working tree"}`);
16
+ lines.push(`Files changed: ${diff.files.length}`);
17
+ lines.push(`Comments drafted: ${comments.length}`);
18
+ lines.push("");
19
+ lines.push("## Available actions");
20
+ lines.push("");
21
+ lines.push('- Focus a file: `review_git_diff({ file: "path/to/file.ts" })`');
22
+ lines.push('- Focus a hunk: `review_git_diff({ file: "path/to/file.ts", hunkId: "path:old:new" })`');
23
+ lines.push('- Draft an inline comment: `review_git_comment({ file: "path", line: 42, body: "..." })`');
24
+ lines.push("- List drafted comments: `review_git_comments({})`");
25
+ lines.push("- Clear drafted comments: `review_git_comments({ clear: true })`");
26
+ lines.push("");
27
+ lines.push("Destructive actions such as revert/discard are intentionally not implemented yet.");
28
+ lines.push("");
29
+ lines.push("## Changed files");
30
+ lines.push("");
31
+ for (const file of diff.files.slice(0, maxFiles)) {
32
+ const selected = selectedFile?.path === file.path ? "▶ " : " ";
33
+ lines.push(`${selected}${formatFileSummary(file)}`);
34
+ for (const hunk of file.hunks.slice(0, 3)) {
35
+ lines.push(` - ${hunk.id} ${hunk.header}`);
36
+ }
37
+ if (file.hunks.length > 3)
38
+ lines.push(` - … ${file.hunks.length - 3} more hunks`);
39
+ }
40
+ if (diff.files.length > maxFiles)
41
+ lines.push(` … ${diff.files.length - maxFiles} more files`);
42
+ lines.push("");
43
+ if (selectedFile) {
44
+ lines.push(formatFilePanel(selectedFile, comments, { ...options, maxHunks, maxLinesPerHunk }, selectedHunk));
45
+ }
46
+ else if (diff.files.length > 0) {
47
+ lines.push("## Next step");
48
+ lines.push("");
49
+ lines.push('Pick a file from the changed-file list and call `review_git_diff({ file: "..." })` to inspect it.');
50
+ }
51
+ else {
52
+ lines.push("No changes found.");
53
+ }
54
+ if (comments.length > 0) {
55
+ lines.push("");
56
+ lines.push(formatReviewComments(comments));
57
+ }
58
+ return `${lines.join("\n").trimEnd()}\n`;
59
+ }
60
+ function formatReviewComments(comments) {
61
+ const lines = [];
62
+ lines.push("## Drafted review comments");
63
+ lines.push("");
64
+ if (comments.length === 0) {
65
+ lines.push("No drafted comments.");
66
+ return lines.join("\n");
67
+ }
68
+ for (const comment of comments) {
69
+ const loc = `${comment.file}${comment.line ? `:${comment.line}` : ""}${comment.hunkId ? ` (${comment.hunkId})` : ""}`;
70
+ lines.push(`- ${comment.id} — ${loc}`);
71
+ lines.push(` ${comment.body}`);
72
+ }
73
+ return lines.join("\n");
74
+ }
75
+ function createReviewComment(input) {
76
+ const next = input.comments.length + 1;
77
+ return {
78
+ id: `C${String(next).padStart(3, "0")}`,
79
+ file: input.file,
80
+ line: input.line,
81
+ hunkId: input.hunkId,
82
+ body: input.body,
83
+ createdAt: (input.now ?? new Date()).toISOString(),
84
+ };
85
+ }
86
+ function formatFilePanel(file, comments, options, selectedHunk) {
87
+ const lines = [];
88
+ const hunks = selectedHunk ? [selectedHunk] : file.hunks.slice(0, options.maxHunks);
89
+ lines.push(`## File: ${file.path}`);
90
+ lines.push("");
91
+ lines.push(`Status: ${file.status}`);
92
+ if (file.oldPath && file.oldPath !== file.path)
93
+ lines.push(`Old path: ${file.oldPath}`);
94
+ lines.push(`Changes: +${countLines(file, "add")}/-${countLines(file, "del")}, ${file.hunks.length} hunks`);
95
+ const fileComments = comments.filter((comment) => comment.file === file.path);
96
+ if (fileComments.length > 0)
97
+ lines.push(`Drafted comments on this file: ${fileComments.length}`);
98
+ lines.push("");
99
+ for (const hunk of hunks) {
100
+ lines.push(formatHunk(file, hunk, options.maxLinesPerHunk));
101
+ lines.push("");
102
+ }
103
+ if (!selectedHunk && file.hunks.length > hunks.length) {
104
+ lines.push(`… ${file.hunks.length - hunks.length} more hunks. Focus by hunkId to inspect one hunk.`);
105
+ }
106
+ if (options.hunkId && !selectedHunk) {
107
+ lines.push(`Hunk not found: ${options.hunkId}`);
108
+ }
109
+ return lines.join("\n").trimEnd();
110
+ }
111
+ function formatHunk(file, hunk, maxLines) {
112
+ const lines = [];
113
+ lines.push(`### Hunk ${hunk.id}`);
114
+ lines.push("");
115
+ lines.push("```diff");
116
+ lines.push(hunk.header);
117
+ for (const line of hunk.lines.slice(0, maxLines)) {
118
+ const marker = line.type === "add" ? "+" : line.type === "del" ? "-" : " ";
119
+ const number = line.type === "del" ? line.oldNum : line.newNum;
120
+ const gutter = number === null ? "" : String(number).padStart(4, " ");
121
+ lines.push(`${marker}${gutter} ${line.content}`);
122
+ }
123
+ if (hunk.lines.length > maxLines)
124
+ lines.push(` … ${hunk.lines.length - maxLines} more lines omitted`);
125
+ lines.push("```");
126
+ lines.push("");
127
+ lines.push(`Comment here: review_git_comment({ file: "${file.path}", hunkId: "${hunk.id}", line: ${firstChangedLine(hunk) ?? hunk.newStart}, body: "..." })`);
128
+ return lines.join("\n");
129
+ }
130
+ function formatFileSummary(file) {
131
+ return `${file.path} (${file.status}, +${countLines(file, "add")}/-${countLines(file, "del")}, ${file.hunks.length} hunks)`;
132
+ }
133
+ function countLines(file, type) {
134
+ return file.hunks.reduce((sum, hunk) => sum + hunk.lines.filter((line) => line.type === type).length, 0);
135
+ }
136
+ function firstChangedLine(hunk) {
137
+ const changed = hunk.lines.find((line) => line.type === "add" || line.type === "del");
138
+ return changed?.newNum ?? changed?.oldNum ?? null;
139
+ }
140
+ function findFile(diff, path) {
141
+ return diff.files.find((file) => file.path === path || file.oldPath === path || file.newPath === path) ?? null;
142
+ }
143
+ function findHunk(file, hunkId) {
144
+ return (file.hunks.find((hunk) => hunk.id === hunkId || `${file.path}:${hunk.oldStart}:${hunk.newStart}` === hunkId) ?? null);
145
+ }
146
+ //# sourceMappingURL=interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/review/interactive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ReviewDiff, ReviewFileDiff, ReviewHunk, ReviewLine } from "./git.js";
2
+ import type { ReviewDiffSession, ReviewDraftComment } from "./session.js";
3
+ export interface ReviewViewportLine {
4
+ id: string;
5
+ filePath: string;
6
+ hunkId: string;
7
+ kind: "hunk-header" | ReviewLine["type"];
8
+ oldNum: number | null;
9
+ newNum: number | null;
10
+ content: string;
11
+ commentCount: number;
12
+ isSelectable: boolean;
13
+ }
14
+ export interface ReviewViewportState {
15
+ file: ReviewFileDiff | null;
16
+ hunk: ReviewHunk | null;
17
+ lines: ReviewViewportLine[];
18
+ selectedLine: ReviewViewportLine | null;
19
+ visibleLines: ReviewViewportLine[];
20
+ selectedLineIndex: number;
21
+ windowStart: number;
22
+ windowEnd: number;
23
+ }
24
+ export declare function createPreviewLineId(filePath: string, hunkId: string, line: ReviewLine, lineIndex: number): string;
25
+ export declare function createHeaderLineId(filePath: string, hunkId: string): string;
26
+ export declare function buildViewportLines(file: ReviewFileDiff | null, comments: ReviewDraftComment[], hunkId?: string): ReviewViewportLine[];
27
+ export declare function getSelectedPreviewLine(diff: ReviewDiff, session: ReviewDiffSession): ReviewViewportLine | null;
28
+ export declare function syncPreviewSelection(session: ReviewDiffSession, diff: ReviewDiff): void;
29
+ export declare function moveSelectedPreviewLine(session: ReviewDiffSession, diff: ReviewDiff, delta: number, windowSize?: number): void;
30
+ export declare function selectPreviewLineForHunk(session: ReviewDiffSession, diff: ReviewDiff, hunkId?: string): void;
31
+ export declare function selectPreviewLineForComment(session: ReviewDiffSession, diff: ReviewDiff): void;
32
+ export declare function getViewportState(diff: ReviewDiff, session: ReviewDiffSession, windowSize?: number): ReviewViewportState;
33
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/review/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjH;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,cAAc,GAAG,IAAI,EAC3B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,MAAM,CAAC,EAAE,MAAM,GACb,kBAAkB,EAAE,CAgCtB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAc9G;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAqBvF;AAED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,UAAU,SAA0B,GAClC,IAAI,CA0BN;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAY5G;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAmB9F;AAED,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,iBAAiB,EAC1B,UAAU,SAA0B,GAClC,mBAAmB,CAqBrB"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPreviewLineId = createPreviewLineId;
4
+ exports.createHeaderLineId = createHeaderLineId;
5
+ exports.buildViewportLines = buildViewportLines;
6
+ exports.getSelectedPreviewLine = getSelectedPreviewLine;
7
+ exports.syncPreviewSelection = syncPreviewSelection;
8
+ exports.moveSelectedPreviewLine = moveSelectedPreviewLine;
9
+ exports.selectPreviewLineForHunk = selectPreviewLineForHunk;
10
+ exports.selectPreviewLineForComment = selectPreviewLineForComment;
11
+ exports.getViewportState = getViewportState;
12
+ const DEFAULT_VIEWPORT_WINDOW = 18;
13
+ function createPreviewLineId(filePath, hunkId, line, lineIndex) {
14
+ return `${filePath}:${hunkId}:${line.type}:${line.oldNum ?? "_"}:${line.newNum ?? "_"}:${lineIndex}`;
15
+ }
16
+ function createHeaderLineId(filePath, hunkId) {
17
+ return `${filePath}:${hunkId}:header`;
18
+ }
19
+ function buildViewportLines(file, comments, hunkId) {
20
+ if (!file)
21
+ return [];
22
+ const hunks = hunkId ? file.hunks.filter((hunk) => hunk.id === hunkId) : file.hunks;
23
+ const lines = [];
24
+ for (const hunk of hunks) {
25
+ lines.push({
26
+ id: createHeaderLineId(file.path, hunk.id),
27
+ filePath: file.path,
28
+ hunkId: hunk.id,
29
+ kind: "hunk-header",
30
+ oldNum: hunk.oldStart,
31
+ newNum: hunk.newStart,
32
+ content: hunk.header,
33
+ commentCount: comments.filter((comment) => comment.hunkId === hunk.id && !comment.previewLineId).length,
34
+ isSelectable: false,
35
+ });
36
+ hunk.lines.forEach((line, index) => {
37
+ const id = createPreviewLineId(file.path, hunk.id, line, index);
38
+ lines.push({
39
+ id,
40
+ filePath: file.path,
41
+ hunkId: hunk.id,
42
+ kind: line.type,
43
+ oldNum: line.oldNum,
44
+ newNum: line.newNum,
45
+ content: line.content,
46
+ commentCount: comments.filter((comment) => comment.previewLineId === id).length,
47
+ isSelectable: true,
48
+ });
49
+ });
50
+ }
51
+ return lines;
52
+ }
53
+ function getSelectedPreviewLine(diff, session) {
54
+ const file = getSelectedFile(diff, session);
55
+ const hunk = getSelectedHunk(diff, session);
56
+ if (!file || !hunk)
57
+ return null;
58
+ const lines = buildViewportLines(file, session.comments, hunk.id);
59
+ if (lines.length === 0)
60
+ return null;
61
+ if (session.selectedPreviewLineId) {
62
+ const selected = lines.find((line) => line.id === session.selectedPreviewLineId);
63
+ if (selected)
64
+ return selected;
65
+ }
66
+ const scrollIndex = clampIndex(session.previewScrollTop ?? 0, lines.length);
67
+ const scrolledLine = lines[scrollIndex];
68
+ if (scrolledLine?.isSelectable)
69
+ return scrolledLine;
70
+ return firstSelectableLine(lines) ?? scrolledLine ?? null;
71
+ }
72
+ function syncPreviewSelection(session, diff) {
73
+ const file = getSelectedFile(diff, session);
74
+ const hunk = getSelectedHunk(diff, session);
75
+ if (!file || !hunk) {
76
+ session.selectedPreviewLineId = undefined;
77
+ session.previewScrollTop = 0;
78
+ return;
79
+ }
80
+ const lines = buildViewportLines(file, session.comments, hunk.id);
81
+ if (lines.length === 0) {
82
+ session.selectedPreviewLineId = undefined;
83
+ session.previewScrollTop = 0;
84
+ return;
85
+ }
86
+ const selected = session.selectedPreviewLineId
87
+ ? lines.find((line) => line.id === session.selectedPreviewLineId && line.isSelectable)
88
+ : null;
89
+ if (!selected) {
90
+ session.selectedPreviewLineId = firstSelectableLine(lines)?.id;
91
+ }
92
+ clampPreviewScroll(session, lines.length, DEFAULT_VIEWPORT_WINDOW);
93
+ }
94
+ function moveSelectedPreviewLine(session, diff, delta, windowSize = DEFAULT_VIEWPORT_WINDOW) {
95
+ const file = getSelectedFile(diff, session);
96
+ const hunk = getSelectedHunk(diff, session);
97
+ if (!file || !hunk) {
98
+ session.previewScrollTop = 0;
99
+ return;
100
+ }
101
+ const lines = buildViewportLines(file, session.comments, hunk.id);
102
+ if (lines.length === 0) {
103
+ session.previewScrollTop = 0;
104
+ return;
105
+ }
106
+ const selectableLines = lines.filter((l) => l.isSelectable);
107
+ if (selectableLines.length === 0)
108
+ return;
109
+ const currentPos = session.selectedPreviewLineId
110
+ ? Math.max(0, selectableLines.findIndex((l) => l.id === session.selectedPreviewLineId))
111
+ : 0;
112
+ const newPos = clampIndex(currentPos + delta, selectableLines.length);
113
+ const newLine = selectableLines[newPos];
114
+ session.selectedPreviewLineId = newLine?.id;
115
+ const cursorIndex = lines.findIndex((l) => l.id === newLine?.id);
116
+ session.previewScrollTop =
117
+ cursorIndex >= 0 ? clampScrollTop(Math.max(0, cursorIndex - 1), lines.length, windowSize) : 0;
118
+ }
119
+ function selectPreviewLineForHunk(session, diff, hunkId) {
120
+ const file = getSelectedFile(diff, session);
121
+ if (!file) {
122
+ session.selectedPreviewLineId = undefined;
123
+ session.previewScrollTop = 0;
124
+ return;
125
+ }
126
+ const lines = buildViewportLines(file, session.comments, hunkId);
127
+ const selected = firstSelectableLine(lines, hunkId);
128
+ session.selectedPreviewLineId = selected?.id;
129
+ session.previewScrollTop = 0;
130
+ if (selected?.hunkId)
131
+ session.selectedHunk = selected.hunkId;
132
+ }
133
+ function selectPreviewLineForComment(session, diff) {
134
+ const comment = getSelectedComment(session);
135
+ if (!comment)
136
+ return;
137
+ const file = getSelectedFile(diff, session);
138
+ if (!file || file.path !== comment.file) {
139
+ session.selectedFile = comment.file;
140
+ }
141
+ if (comment.hunkId)
142
+ session.selectedHunk = comment.hunkId;
143
+ const nextFile = getSelectedFile(diff, session);
144
+ const nextHunk = getSelectedHunk(diff, session);
145
+ if (!nextFile || !nextHunk)
146
+ return;
147
+ const lines = buildViewportLines(nextFile, session.comments, nextHunk.id);
148
+ if (comment.previewLineId) {
149
+ session.selectedPreviewLineId = comment.previewLineId;
150
+ const selectedIndex = lines.findIndex((line) => line.id === comment.previewLineId);
151
+ session.previewScrollTop = clampScrollTop(Math.max(0, selectedIndex - 1), lines.length, DEFAULT_VIEWPORT_WINDOW);
152
+ return;
153
+ }
154
+ syncPreviewSelection(session, diff);
155
+ }
156
+ function getViewportState(diff, session, windowSize = DEFAULT_VIEWPORT_WINDOW) {
157
+ const file = getSelectedFile(diff, session);
158
+ const hunk = getSelectedHunk(diff, session);
159
+ const lines = buildViewportLines(file, session.comments, hunk?.id);
160
+ const selectedLine = getSelectedPreviewLine(diff, session);
161
+ const selectedLineIndex = Math.max(0, lines.findIndex((line) => line.id === selectedLine?.id));
162
+ const windowStart = clampScrollTop(session.previewScrollTop ?? 0, lines.length, windowSize);
163
+ const windowEnd = Math.min(lines.length, windowStart + windowSize);
164
+ return {
165
+ file,
166
+ hunk,
167
+ lines,
168
+ selectedLine,
169
+ visibleLines: lines.slice(windowStart, windowEnd),
170
+ selectedLineIndex,
171
+ windowStart,
172
+ windowEnd,
173
+ };
174
+ }
175
+ function clampPreviewScroll(session, lineCount, windowSize) {
176
+ session.previewScrollTop = clampScrollTop(session.previewScrollTop ?? 0, lineCount, windowSize);
177
+ }
178
+ function clampScrollTop(scrollTop, lineCount, windowSize) {
179
+ if (lineCount <= 0)
180
+ return 0;
181
+ const maxScrollTop = Math.max(0, lineCount - Math.max(1, windowSize));
182
+ return Math.max(0, Math.min(scrollTop, maxScrollTop));
183
+ }
184
+ function firstSelectableLine(lines, hunkId) {
185
+ return lines.find((line) => line.isSelectable && (!hunkId || line.hunkId === hunkId)) ?? null;
186
+ }
187
+ function clampIndex(index, length) {
188
+ return Math.max(0, Math.min(index, Math.max(0, length - 1)));
189
+ }
190
+ function getSelectedFile(diff, session) {
191
+ if (!session.selectedFile)
192
+ return diff.files[0] ?? null;
193
+ return diff.files.find((file) => file.path === session.selectedFile || file.oldPath === session.selectedFile) ?? null;
194
+ }
195
+ function getSelectedHunk(diff, session) {
196
+ const file = getSelectedFile(diff, session);
197
+ if (!file)
198
+ return null;
199
+ if (!session.selectedHunk)
200
+ return file.hunks[0] ?? null;
201
+ return file.hunks.find((hunk) => hunk.id === session.selectedHunk) ?? file.hunks[0] ?? null;
202
+ }
203
+ function getSelectedComment(session) {
204
+ if (!session.selectedCommentId)
205
+ return null;
206
+ return session.comments.find((comment) => comment.id === session.selectedCommentId) ?? null;
207
+ }
208
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/review/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ReviewDiff } from "./git.js";
2
+ import { type ReviewDiffSession } from "./session.js";
3
+ export declare function buildReviewDiffPrompt(diff: ReviewDiff, session: ReviewDiffSession): string;
4
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/review/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAyC1F"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildReviewDiffPrompt = buildReviewDiffPrompt;
4
+ const session_js_1 = require("./session.js");
5
+ function buildReviewDiffPrompt(diff, session) {
6
+ const comments = (0, session_js_1.getSubmittableComments)(session);
7
+ const mode = diff.mode.type === "branch" ? `${diff.mode.base}...HEAD` : "working tree";
8
+ const lines = [];
9
+ lines.push("Apply the following code review feedback to the current repository changes.");
10
+ lines.push("Treat these comments as explicit requested fixes from the reviewer.");
11
+ lines.push("");
12
+ lines.push(`Review mode: ${mode}`);
13
+ lines.push(`Changed files: ${diff.files.length}`);
14
+ lines.push(`Comments to address: ${comments.length}`);
15
+ lines.push("");
16
+ lines.push("Requirements:");
17
+ lines.push("- Make the smallest changes needed to address each approved comment.");
18
+ lines.push("- Preserve unrelated work already present in the diff.");
19
+ lines.push("- If any comment is invalid or blocked, explain why instead of forcing a change.");
20
+ lines.push("- After editing, summarize which comments were addressed and which were blocked.");
21
+ lines.push("");
22
+ lines.push("Comments:");
23
+ lines.push("");
24
+ for (const [index, comment] of comments.entries()) {
25
+ const exactLine = comment.newNum ?? comment.oldNum ?? comment.line;
26
+ const anchor = comment.previewLineId ? ` [anchor ${comment.previewLineId}]` : "";
27
+ const location = `${comment.file}${exactLine ? `:${exactLine}` : ""}${comment.hunkId ? ` (${comment.hunkId})` : ""}${anchor}`;
28
+ lines.push(`${index + 1}. ${location}`);
29
+ lines.push(` ${comment.body}`);
30
+ if (comment.status === "edited" && comment.originalBody && comment.originalBody !== comment.body) {
31
+ lines.push(` Original draft: ${comment.originalBody}`);
32
+ }
33
+ lines.push("");
34
+ }
35
+ if (diff.files.length > 0) {
36
+ lines.push("Current changed files:");
37
+ for (const file of diff.files) {
38
+ lines.push(`- ${file.path} (${file.status}, ${file.hunks.length} hunks)`);
39
+ }
40
+ }
41
+ return `${lines.join("\n").trimEnd()}\n`;
42
+ }
43
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/review/prompt.ts"],"names":[],"mappings":"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"}