@datamoc/mw_games 0.37.0 → 0.39.1

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 (113) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +26 -0
  3. package/api-surface.json +650 -2
  4. package/dist/assets/SvgParts.d.ts +31 -0
  5. package/dist/assets/SvgParts.d.ts.map +1 -0
  6. package/dist/assets/SvgParts.js +54 -0
  7. package/dist/assets/SvgParts.js.map +1 -0
  8. package/dist/assets/SvgSource.d.ts +3 -0
  9. package/dist/assets/SvgSource.d.ts.map +1 -0
  10. package/dist/assets/SvgSource.js +22 -0
  11. package/dist/assets/SvgSource.js.map +1 -0
  12. package/dist/assets/index.d.ts +2 -0
  13. package/dist/assets/index.d.ts.map +1 -1
  14. package/dist/assets/index.js +1 -0
  15. package/dist/assets/index.js.map +1 -1
  16. package/dist/assets/svg.d.ts.map +1 -1
  17. package/dist/assets/svg.js +9 -5
  18. package/dist/assets/svg.js.map +1 -1
  19. package/dist/mw_games.global.js +110 -110
  20. package/dist/mwl/presentation.d.ts +70 -0
  21. package/dist/mwl/presentation.d.ts.map +1 -0
  22. package/dist/mwl/presentation.js +419 -0
  23. package/dist/mwl/presentation.js.map +1 -0
  24. package/dist/physics/PhysicsWorld.d.ts +49 -17
  25. package/dist/physics/PhysicsWorld.d.ts.map +1 -1
  26. package/dist/physics/PhysicsWorld.js +297 -59
  27. package/dist/physics/PhysicsWorld.js.map +1 -1
  28. package/dist/physics/XpbdWorld.d.ts +1 -1
  29. package/dist/physics/XpbdWorld.js +1 -1
  30. package/dist/physics/cloth/index.d.ts +98 -0
  31. package/dist/physics/cloth/index.d.ts.map +1 -0
  32. package/dist/physics/cloth/index.js +207 -0
  33. package/dist/physics/cloth/index.js.map +1 -0
  34. package/dist/physics/index.d.ts +4 -0
  35. package/dist/physics/index.d.ts.map +1 -1
  36. package/dist/physics/index.js +2 -0
  37. package/dist/physics/index.js.map +1 -1
  38. package/dist/physics/spring/index.d.ts +90 -0
  39. package/dist/physics/spring/index.d.ts.map +1 -0
  40. package/dist/physics/spring/index.js +97 -0
  41. package/dist/physics/spring/index.js.map +1 -0
  42. package/dist/skeleton/index.d.ts +94 -13
  43. package/dist/skeleton/index.d.ts.map +1 -1
  44. package/dist/skeleton/index.js +192 -73
  45. package/dist/skeleton/index.js.map +1 -1
  46. package/dist/two-d/presentation/MwlPresentation.d.ts +110 -0
  47. package/dist/two-d/presentation/MwlPresentation.d.ts.map +1 -0
  48. package/dist/two-d/presentation/MwlPresentation.js +755 -0
  49. package/dist/two-d/presentation/MwlPresentation.js.map +1 -0
  50. package/dist/two-d/presentation/index.d.ts +3 -0
  51. package/dist/two-d/presentation/index.d.ts.map +1 -0
  52. package/dist/two-d/presentation/index.js +2 -0
  53. package/dist/two-d/presentation/index.js.map +1 -0
  54. package/dist/two-d/render/ClothSprite.d.ts +83 -0
  55. package/dist/two-d/render/ClothSprite.d.ts.map +1 -0
  56. package/dist/two-d/render/ClothSprite.js +105 -0
  57. package/dist/two-d/render/ClothSprite.js.map +1 -0
  58. package/dist/two-d/render/HazeLayer.d.ts +112 -0
  59. package/dist/two-d/render/HazeLayer.d.ts.map +1 -0
  60. package/dist/two-d/render/HazeLayer.js +185 -0
  61. package/dist/two-d/render/HazeLayer.js.map +1 -0
  62. package/dist/two-d/render/NeonGlow.d.ts +100 -0
  63. package/dist/two-d/render/NeonGlow.d.ts.map +1 -0
  64. package/dist/two-d/render/NeonGlow.js +183 -0
  65. package/dist/two-d/render/NeonGlow.js.map +1 -0
  66. package/dist/two-d/render/SkeletalSprite.d.ts +5 -2
  67. package/dist/two-d/render/SkeletalSprite.d.ts.map +1 -1
  68. package/dist/two-d/render/SkeletalSprite.js +27 -3
  69. package/dist/two-d/render/SkeletalSprite.js.map +1 -1
  70. package/dist/two-d/render/SpringSprite.d.ts +40 -0
  71. package/dist/two-d/render/SpringSprite.d.ts.map +1 -0
  72. package/dist/two-d/render/SpringSprite.js +39 -0
  73. package/dist/two-d/render/SpringSprite.js.map +1 -0
  74. package/dist/two-d/render/SpriteDeform.d.ts +156 -0
  75. package/dist/two-d/render/SpriteDeform.d.ts.map +1 -0
  76. package/dist/two-d/render/SpriteDeform.js +278 -0
  77. package/dist/two-d/render/SpriteDeform.js.map +1 -0
  78. package/dist/two-d/render/SvgSkeleton.d.ts +54 -0
  79. package/dist/two-d/render/SvgSkeleton.d.ts.map +1 -0
  80. package/dist/two-d/render/SvgSkeleton.js +112 -0
  81. package/dist/two-d/render/SvgSkeleton.js.map +1 -0
  82. package/dist/two-d/render/index.d.ts +12 -0
  83. package/dist/two-d/render/index.d.ts.map +1 -1
  84. package/dist/two-d/render/index.js +6 -0
  85. package/dist/two-d/render/index.js.map +1 -1
  86. package/dist/two-d/ui/Bar.d.ts +3 -1
  87. package/dist/two-d/ui/Bar.d.ts.map +1 -1
  88. package/dist/two-d/ui/Bar.js +5 -0
  89. package/dist/two-d/ui/Bar.js.map +1 -1
  90. package/dist/two-d/ui/Button.d.ts +12 -0
  91. package/dist/two-d/ui/Button.d.ts.map +1 -1
  92. package/dist/two-d/ui/Button.js +16 -4
  93. package/dist/two-d/ui/Button.js.map +1 -1
  94. package/dist/two-d/ui/Window.d.ts +10 -0
  95. package/dist/two-d/ui/Window.d.ts.map +1 -1
  96. package/dist/two-d/ui/Window.js +17 -6
  97. package/dist/two-d/ui/Window.js.map +1 -1
  98. package/dist/two-d/ui/index.d.ts +2 -0
  99. package/dist/two-d/ui/index.d.ts.map +1 -1
  100. package/dist/two-d/ui/index.js.map +1 -1
  101. package/dist/version.d.ts +1 -1
  102. package/dist/version.js +1 -1
  103. package/package.json +24 -7
  104. package/sbom.cdx.json +6 -58
  105. package/tools/asset-report.d.mts +37 -0
  106. package/tools/asset-report.mjs +157 -0
  107. package/tools/compile-resources.d.mts +2 -0
  108. package/tools/compile-resources.mjs +23 -2
  109. package/tools/emit-page.d.mts +2 -0
  110. package/tools/emit-page.mjs +11 -1
  111. package/tools/verify-scenarios.d.mts +15 -0
  112. package/tools/verify-scenarios.mjs +129 -0
  113. package/tools/vite.mjs +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MwlPresentation.js","sourceRoot":"","sources":["../../../src/two-d/presentation/MwlPresentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAmB,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAc,MAAM,gBAAgB,CAAC;AAS7D,wFAAwF;AACxF,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AA2ClC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,eAAe;IAsB3B,YAAY,IAA0B,EAAE,OAAe,EAAE,OAAmC;QAnBnF,SAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAGf,UAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;QACvC,UAAK,GAAkB,EAAE,CAAC;QAKnC,iBAAY,GAAiB,IAAI,CAAC;QAClC,YAAO,GAAG,EAAE,CAAC;QACb,WAAM,GAAqC,EAAE,CAAC;QAC9C,aAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnC,YAAO,GAAuB,IAAI,CAAC;QACnC,cAAS,GAAG,KAAK,CAAC;QAElB,UAAK,GAAsB,EAAE,CAAC;QACrB,kBAAa,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAG9E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,GAAG,CAAC,CAAC;QACrG,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,GAAG,CAAC,CAAC;QACzG,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE;YACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,KAAK,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,GAAG,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC;YACJ,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;oBAAE,SAAS;gBAC3C,MAAM,MAAM,GACX,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED,2FAA2F;IAC3F,GAAG,CAAC,EAAM;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACxE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;IACzC,CAAC;IACD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IACnC,CAAC;IACD,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,UAAU,CAAC,OAAO,GAAG,EAAE;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,GAAG,CAAC,CAAC;QAC9D,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAEO,UAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC;QACpC,QAAQ,CAAC;YACR,GAAG,IAAI,CAAC,aAAa;YACrB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC5D,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC5D,IAAI,EAAE;gBACL,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI;gBAC1B,MAAM,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM;gBAC3D,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;aAC7D;YACD,KAAK,EAAE;gBACN,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;gBAC3B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBACjC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC;SACD,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,EAAE,GAAG,CAAC;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;QACvE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO;YACrE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,OAAO;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;YAC9B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACzE,CAAC,CAAC,SAAS,CAAC;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAEO,YAAY,CACnB,UAA4B,EAC5B,IAAY,EACZ,MAAiB,EACjB,IAAuB;QAEvB,MAAM,IAAI,GAAgB;YACzB,UAAU;YACV,IAAI;YACJ,MAAM;YACN,IAAI;YACJ,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,EAAE;SACZ,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,GAAG,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,IAAI,CAAC,IAAiB,EAAE,IAAY,EAAE,QAA2B;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO;YACX,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,SAAS;gBACpD,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChG,IAAI,OAAO,KAAK,KAAK,OAAO,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7F,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,sBAAsB,OAAO,GAAG,CAAC,CAAC;QAC/D,OAAO,KAA0B,CAAC;IACnC,CAAC;IACO,MAAM,CAAC,KAAa,EAAE,IAAY;QACzC,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,KAAK,MAAM,CAAC;QAChD,OAAO,KAAK,CAAC;IACd,CAAC;IACO,iBAAiB,CAAC,IAAiB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QACxC,OAAO;YACN,GAAG,IAAI;YACP,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACtE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACnC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACrC,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,IAAiB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAY,CAAC;QAC5D,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,OAAO,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,YAAY,MAAM;YAAE,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;QACpF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;YACrC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,IAAiB,EAAE,IAAY;QACpD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAY,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAY,CAAC;QAC/D,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;aACjC,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;aACtC,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;aAClD,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACvF,OAAO,OAAO,CAAC;IAChB,CAAC;IAEO,UAAU,CACjB,IAAiB,EACjB,UAAkC,EAClC,OAAgB;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAsC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACpG,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,YAAY,KAAK;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/F,IAAI,IAAI,YAAY,MAAM;YAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,IAAiB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,IAAiB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,oBAAoB,CAAC,EACxD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,qBAAqB,CAAC,CAAC;QACxD,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC9B,KAAK,UAAU;gBACd,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAClF,MAAM;YACP,KAAK,WAAW;gBACf,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpD,MAAM;YACP,KAAK,QAAQ;gBACZ,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACnF,MAAM;YACP,KAAK,WAAW;gBACf,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;oBACtB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,oBAAoB,CAAC;oBAClD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,qBAAqB,CAAC;oBACrD,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,OAAO;oBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,OAAO;oBACpC,WAAW,EAAE,IAAI;oBACjB,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAgC;iBACjE,CAAC,CAAC;gBACH,MAAM;YACP,SAAS,CAAC;gBACT,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACvC,MAAM,MAAM,GACX,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC1F,IAAI,CAAC,MAAM;wBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,mCAAmC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;oBAC9F,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/B,CAAC;;oBAAM,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YACpC,CAAC;QACF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChF,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW;YACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ;gBAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnG,IAAI,IAAI,CAAC,IAAI,YAAY,MAAM;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,IAAI,YAAY,MAAM;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAEO,UAAU,CAAC,IAAiB,EAAE,MAAc;QACnD,MAAM,KAAK,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;YAC5B,CAAC,aAAa,EAAE,OAAO,CAAC;YACxB,CAAC,YAAY,EAAE,MAAM,CAAC;YACtB,CAAC,aAAa,EAAE,SAAS,CAAC;YAC1B,CAAC,WAAW,EAAE,OAAO,CAAC;SACb,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,GAAG,EAAE;gBACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,CAAC,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAEO,UAAU,CAAC,IAAiB,EAAE,MAAc;QACnD,MAAM,CAAC,QAAQ,GAAG,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEO,SAAS,CAAC,IAAiB;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC,aAAa,oBAAoB,CAAC,CAAC;QAC7G,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxB,IACC,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;gBACpD,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAElD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,2BAA2B,GAAG,GAAG,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CACvF,CAAC;QACF,MAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,KAAK,GACV,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,MAAM,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;YAC1C,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,IAAI,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,OAAO,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,IAAwB,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;IACtC,CAAC;IACO,eAAe,CAAC,IAAiB;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAC7B,KAAK,GAAG,IAAI,CAAC,UAAU,EACvB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAe,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7D,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAChC,CAAC;;oBAAM,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACxB,CAAC;QACF,CAAC;QACD,IACC,CAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EACzG,CAAC;YACF,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,GAAG,IAAI,QAAQ,EAAE,CAAC;gBACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC7B,CAAC;QACF,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAc,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAc,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC;gBACd,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;gBAC3C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;gBACnD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC;gBACvD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC;gBAChD,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB;oBAC9D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,WAAW,CAAC;oBACjD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;aACxB,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAe,EAAE,MAAM,CAAC,GAAa,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;YACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC;gBACd,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC;gBACvD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC;gBAChD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC;aAC9C,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;IAEO,SAAS,CAAC,IAAiB;QAClC,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAEO,MAAM;QACb,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAC5B,IAAI,CAAC,UAAU,CACd,IAAI,EACJ,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK;gBAChC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC/E,CAAC,CAAC,MAAM,CACT,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IACO,UAAU,CAAC,IAAiB,EAAE,MAAkB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QACnC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,EACzC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG;YACb,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;YACvC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC;SAC3C,CAAC;QACF,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YAChC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,KAAK,MAAM,KAAK,IAAI,OAAO;YAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,IAAI,QAAQ,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAEO,WAAW,CAAC,IAAiB,EAAE,IAAe,EAAE,MAAkB;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,YAAY,MAAM,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACzG,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;YAC5B,KAAK,GAAG,IAAI,CAAC,GAAG,CACf,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,oBAAoB,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAChG,CAAC;YACF,MAAM,GAAG,IAAI,CAAC,GAAG,CAChB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,qBAAqB,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CACnG,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,YAAY,GAAG;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAChF,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAEO,aAAa,CAAC,IAAe,EAAE,MAAkB;QACxD,IAAI,IAAI,YAAY,MAAM;YAAE,OAAO,qBAAqB,CAAC;QACzD,IAAI,IAAI,YAAY,GAAG;YAAE,OAAO,kBAAkB,CAAC;QACnD,IAAI,IAAI,YAAY,KAAK;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,yFAAyF;IACjF,aAAa,CACpB,IAAiB,EACjB,OAAiD,EACjD,KAAiB,EACjB,OAAe,EACf,GAAW;QAEX,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3G,MAAM,MAAM,GAAG,UAAU,CACxB,OAAO,EACP,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EACxF,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAA+C,EAAE,CACrE,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC5B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3F,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,OAAO,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACpC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YACzB,CAAC;YACD,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EACpC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;gBACrB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7D,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;oBACzC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC1D,CAAC,CAAC;gBACH,GAAG;aACH,CAAC,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;gBACpE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAC7B,OAAO,CACN,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;oBAChE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;oBAC3B,OAAO,GAAG,CAAC,CACX,CAAC;YACH,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;QAC1F,OAAO,SAAS,CAAC;IAClB,CAAC;IAEO,SAAS,CAAC,IAAiB,EAAE,KAAa,EAAE,MAAc;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;YACpG,IAAI,KAAK,CAAC,YAAY;gBACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;IACF,CAAC;IAEO,UAAU,CAAC,IAAiB,EAAE,IAAe,EAAE,MAAkB,EAAE,KAAa,EAAE,MAAc;QACvG,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChG,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,aAAa,CAC3B;gBACC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAkD;gBACrF,KAAK;gBACL,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;aAC7B,EACD,MAAM,CACN,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IAEO,MAAM,CAAC,MAA0B,EAAE,IAAuB;QACjE,IAAI,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACO,WAAW,CAAC,IAAiB;QACpC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACvE,KAAK,IAAI,IAAI,GAAqB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;QACvG,OAAO,IAAI,CAAC;IACb,CAAC;IACO,SAAS,CAAC,MAAoB;QACrC,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,IAAiB,EAAQ,EAAE;YACzC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC;IACf,CAAC;IACO,QAAQ,CAAC,IAAwB;QACxC,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO;QAClC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;QACnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAC3D,CAAC;IACO,QAAQ,CAAC,MAAc,EAAE,MAAoB;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACtE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,IAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,uEAAuE;IACvE,YAAY,CAAC,MAAc;QAC1B,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACjC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC3F,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IACO,OAAO,CAAC,IAAiB,EAAE,WAAW,GAAG,IAAI;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,UAAU,CAAC;YACV,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrD,GAAG,QAAQ;YACX,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YAC1B,GAAG,EAAE;gBACJ,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS;oBAAE,OAAO;gBACpD,IAAI,IAAI,YAAY,MAAM;oBAAE,IAAI,CAAC,KAAK,EAAE,CAAC;qBACpC,CAAC;oBACL,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClC,CAAC;YACF,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;IACO,OAAO,CAAC,IAAiB;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACO,WAAW;QAClB,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAClE,CAAC;IACD,OAAO;QACN,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1C,UAAU,CAAC;YACV,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE;YACrB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrD,GAAG,EAAE;gBACJ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,GAAG,EAAE;gBACJ,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,YAAY;oBAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjE,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;CACD;AAED,SAAS,UAAU,CAAC,KAA8B;IACjD,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,IAAI,EAAE,CAAC;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,eAAe,CACvB,CAAuD,EACvD,CAAuD;IAEvD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5G,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { MwlPresentation } from './MwlPresentation.ts';
2
+ export type { PresentationAdapter, PresentationAdapterContext, PresentationRuntimeOptions, PresentationState, } from './MwlPresentation.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/presentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACX,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,GACjB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { MwlPresentation } from './MwlPresentation.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/presentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { MeshPlane } from 'pixi.js';
2
+ import { type MotionIntent } from '../../core/Motion.ts';
3
+ import type { Texture2D } from './Types2D.ts';
4
+ /** Mesh density and simulation tuning for {@link ClothSprite}; the cloth spans the texture. */
5
+ export interface ClothSpriteOptions {
6
+ /** quads across; an integer of at least 1, default 8 */
7
+ segmentsX?: number;
8
+ /** quads down; an integer of at least 1, default 8 */
9
+ segmentsY?: number;
10
+ /** how much of each constraint error one relaxation pass removes, 0 to 1; default 0.9 */
11
+ stiffness?: number;
12
+ /** share of velocity lost per update, 0 to 1; default 0.02 */
13
+ damping?: number;
14
+ /** acceleration in world units per second squared; default no gravity (a banner in still air) */
15
+ gravity?: {
16
+ x: number;
17
+ y: number;
18
+ };
19
+ /** acceleration in world units per second squared; default still air */
20
+ wind?: {
21
+ x: number;
22
+ y: number;
23
+ };
24
+ /** what the sway is for under reduced motion; default `decorative`, which holds the garment still */
25
+ intent?: MotionIntent;
26
+ }
27
+ /**
28
+ * A garment that follows with a slight lag: a `Cloth` simulation driving a textured mesh
29
+ * on the GPU path 414 ships (roadmap 423). The cloth spans the texture, the top edge
30
+ * starts pinned (a waistband, a held scarf end), and `update(dt)` steps the simulation
31
+ * and re-uploads the vertex buffer; UVs are never rewritten and the sprite itself is
32
+ * never rotated, so a skirt bends while its print stays printed. Pin more points to hang
33
+ * it, unpin to let it fall, and drive `setWind` from the weather or the run cycle.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import { ClothSprite } from '@datamoc/mw_games/two-d/render';
38
+ * import type { Texture2D } from '@datamoc/mw_games/two-d/render';
39
+ *
40
+ * declare const tunicTexture: Texture2D;
41
+ *
42
+ * const tunic = new ClothSprite(tunicTexture, { segmentsX: 6, segmentsY: 8, gravity: { x: 0, y: 900 } });
43
+ * tunic.update(1 / 60); // the hem answers gravity, the waistband stays pinned
44
+ * console.log(tunic.movedCount()); // > 0 - everything below the pinned edge travelled
45
+ * ```
46
+ */
47
+ export declare class ClothSprite extends MeshPlane {
48
+ private readonly cloth;
49
+ private readonly intent;
50
+ constructor(texture: Texture2D, options?: ClothSpriteOptions);
51
+ /** quads across */
52
+ get segmentsX(): number;
53
+ /** quads down */
54
+ get segmentsY(): number;
55
+ /** how many simulated points the mesh holds */
56
+ get pointCount(): number;
57
+ /** the flat index of the point at `(column, row)` */
58
+ indexOf(column: number, row: number): number;
59
+ /** the current position of one mesh point */
60
+ pointPosition(index: number): {
61
+ x: number;
62
+ y: number;
63
+ };
64
+ /** whether a point is pinned */
65
+ isPinned(index: number): boolean;
66
+ /** how many points currently sit away from their rest positions */
67
+ movedCount(): number;
68
+ /** pin a point where it currently stands */
69
+ pinPoint(index: number): void;
70
+ /** release a pinned point; it keeps its current position and moves from there */
71
+ unpinPoint(index: number): void;
72
+ /** replace the wind acceleration */
73
+ setWind(x: number, y: number): void;
74
+ /** replace the gravity acceleration */
75
+ setGravity(x: number, y: number): void;
76
+ /**
77
+ * Step the cloth and re-upload the vertex buffer. Under reduced motion a decorative
78
+ * garment holds its shape instead of swaying.
79
+ */
80
+ update(dt: number): void;
81
+ private sync;
82
+ }
83
+ //# sourceMappingURL=ClothSprite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClothSprite.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/ClothSprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IAClC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,OAAO,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,wEAAwE;IACxE,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,qGAAqG;IACrG,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,YAAY,OAAO,EAAE,SAAS,EAAE,OAAO,GAAE,kBAAuB,EAmB/D;IAED,mBAAmB;IACnB,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,iBAAiB;IACjB,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,+CAA+C;IAC/C,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,qDAAqD;IACrD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;IAED,6CAA6C;IAC7C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAErD;IAED,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE/B;IAED,mEAAmE;IACnE,UAAU,IAAI,MAAM,CAEnB;IAED,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,iFAAiF;IACjF,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED,oCAAoC;IACpC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAElC;IAED,uCAAuC;IACvC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAErC;IAED;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIvB;IAED,OAAO,CAAC,IAAI;CAKZ"}
@@ -0,0 +1,105 @@
1
+ import { MeshPlane } from 'pixi.js';
2
+ import { Cloth } from '../../physics/cloth/index.js';
3
+ import { reducedMotion } from '../../core/Motion.js';
4
+ /**
5
+ * A garment that follows with a slight lag: a `Cloth` simulation driving a textured mesh
6
+ * on the GPU path 414 ships (roadmap 423). The cloth spans the texture, the top edge
7
+ * starts pinned (a waistband, a held scarf end), and `update(dt)` steps the simulation
8
+ * and re-uploads the vertex buffer; UVs are never rewritten and the sprite itself is
9
+ * never rotated, so a skirt bends while its print stays printed. Pin more points to hang
10
+ * it, unpin to let it fall, and drive `setWind` from the weather or the run cycle.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { ClothSprite } from '@datamoc/mw_games/two-d/render';
15
+ * import type { Texture2D } from '@datamoc/mw_games/two-d/render';
16
+ *
17
+ * declare const tunicTexture: Texture2D;
18
+ *
19
+ * const tunic = new ClothSprite(tunicTexture, { segmentsX: 6, segmentsY: 8, gravity: { x: 0, y: 900 } });
20
+ * tunic.update(1 / 60); // the hem answers gravity, the waistband stays pinned
21
+ * console.log(tunic.movedCount()); // > 0 - everything below the pinned edge travelled
22
+ * ```
23
+ */
24
+ export class ClothSprite extends MeshPlane {
25
+ constructor(texture, options = {}) {
26
+ const segmentsX = options.segmentsX ?? 8;
27
+ const segmentsY = options.segmentsY ?? 8;
28
+ const cloth = new Cloth({
29
+ width: texture.width,
30
+ height: texture.height,
31
+ segmentsX,
32
+ segmentsY,
33
+ stiffness: options.stiffness,
34
+ damping: options.damping,
35
+ gravity: options.gravity,
36
+ wind: options.wind,
37
+ });
38
+ super({ texture, verticesX: segmentsX + 1, verticesY: segmentsY + 1 });
39
+ this.cloth = cloth;
40
+ this.intent = options.intent ?? 'decorative';
41
+ //a later texture resize must not rebuild the plane under the simulation
42
+ this.autoResize = false;
43
+ this.sync();
44
+ }
45
+ /** quads across */
46
+ get segmentsX() {
47
+ return this.cloth.segmentsX;
48
+ }
49
+ /** quads down */
50
+ get segmentsY() {
51
+ return this.cloth.segmentsY;
52
+ }
53
+ /** how many simulated points the mesh holds */
54
+ get pointCount() {
55
+ return this.cloth.pointCount;
56
+ }
57
+ /** the flat index of the point at `(column, row)` */
58
+ indexOf(column, row) {
59
+ return this.cloth.indexOf(column, row);
60
+ }
61
+ /** the current position of one mesh point */
62
+ pointPosition(index) {
63
+ return this.cloth.pointPosition(index);
64
+ }
65
+ /** whether a point is pinned */
66
+ isPinned(index) {
67
+ return this.cloth.isPinned(index);
68
+ }
69
+ /** how many points currently sit away from their rest positions */
70
+ movedCount() {
71
+ return this.cloth.movedCount();
72
+ }
73
+ /** pin a point where it currently stands */
74
+ pinPoint(index) {
75
+ this.cloth.pinPoint(index);
76
+ }
77
+ /** release a pinned point; it keeps its current position and moves from there */
78
+ unpinPoint(index) {
79
+ this.cloth.unpinPoint(index);
80
+ }
81
+ /** replace the wind acceleration */
82
+ setWind(x, y) {
83
+ this.cloth.setWind(x, y);
84
+ }
85
+ /** replace the gravity acceleration */
86
+ setGravity(x, y) {
87
+ this.cloth.setGravity(x, y);
88
+ }
89
+ /**
90
+ * Step the cloth and re-upload the vertex buffer. Under reduced motion a decorative
91
+ * garment holds its shape instead of swaying.
92
+ */
93
+ update(dt) {
94
+ if (reducedMotion() && this.intent === 'decorative')
95
+ return;
96
+ this.cloth.update(dt);
97
+ this.sync();
98
+ }
99
+ sync() {
100
+ const attribute = this.geometry.getAttribute('aPosition');
101
+ this.cloth.writePositions(attribute.buffer.data);
102
+ attribute.buffer.update();
103
+ }
104
+ }
105
+ //# sourceMappingURL=ClothSprite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClothSprite.js","sourceRoot":"","sources":["../../../src/two-d/render/ClothSprite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { Sprite } from 'pixi.js';
2
+ import { type MotionIntent } from '../../core/Motion.ts';
3
+ /**
4
+ * A deterministic wisp field in 0..1: two octaves of value noise over an integer lattice,
5
+ * smoothstep-interpolated so neighbouring samples always blend rather than step. Pure and
6
+ * seed-stable within a run: the same `(x, y, time, seed)` paints the same wisp, which is
7
+ * what makes haze testable as arithmetic instead of eyeballed as weather. Time wanders
8
+ * the lookup along a slow breeze, so a still coordinate still breathes.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { hazeField } from '@datamoc/mw_games/two-d/render';
13
+ *
14
+ * console.log(hazeField(3, 5, 1.5, 7) === hazeField(3, 5, 1.5, 7)); // true - same sky twice
15
+ * console.log(hazeField(3, 5, 1.5, 7) >= 0 && hazeField(3, 5, 1.5, 7) <= 1); // true - always a density
16
+ * ```
17
+ */
18
+ export declare function hazeField(x: number, y: number, time: number, seed: number): number;
19
+ export interface HazePaint {
20
+ /** seconds of drift; validated finite */
21
+ time: number;
22
+ /** how much sky the haze covers, 0 (clear) to 1 (pea soup) */
23
+ density: number;
24
+ /** which sky; validated finite */
25
+ seed: number;
26
+ /** the layer's own wind in cells per second, added to the breeze; default `{ x: 0, y: 0 }` */
27
+ drift?: {
28
+ x: number;
29
+ y: number;
30
+ };
31
+ }
32
+ /**
33
+ * Paint a white haze sheet with per-pixel alpha into `pixels` (`width * height` RGBA).
34
+ * The layer tints the sprite itself, so one buffer serves any colour. Pure, like
35
+ * `paintFogPixels`: density 0 paints fully transparent, and raising the density never
36
+ * thins a pixel that was already covered.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * import { paintHazePixels } from '@datamoc/mw_games/two-d/render';
41
+ *
42
+ * const pixels = new Uint8ClampedArray(4 * 2 * 4);
43
+ * paintHazePixels(pixels, 4, 2, { time: 0, density: 1, seed: 3 });
44
+ * console.log(pixels.some((v, i) => i % 4 === 3 && v > 0)); // true - full density always shows some haze
45
+ * ```
46
+ */
47
+ export declare function paintHazePixels(pixels: Uint8ClampedArray | Uint8Array, width: number, height: number, paint: HazePaint): void;
48
+ export interface HazeLayerOptions {
49
+ /** sheet size in world units */
50
+ width: number;
51
+ /** sheet size in world units */
52
+ height: number;
53
+ /** canvas pixels across; default 64 (a small canvas scaled up keeps edges soft and cheap) */
54
+ cellsX?: number;
55
+ /** canvas pixels down; default 36 */
56
+ cellsY?: number;
57
+ /** how much sky the haze covers, 0 to 1; default 0.5 */
58
+ density?: number;
59
+ /** haze colour as a hex number; default white */
60
+ tint?: number;
61
+ /** sheet opacity; default 1 */
62
+ opacity?: number;
63
+ /** the sheet's own wind in cells per second, added to the breeze; default a slow sideways breathe */
64
+ drift?: {
65
+ x: number;
66
+ y: number;
67
+ };
68
+ /** which sky; default 1 */
69
+ seed?: number;
70
+ /** what the drift is for under reduced motion; default `decorative`, which holds the sky still */
71
+ intent?: MotionIntent;
72
+ }
73
+ /**
74
+ * An atmospheric haze sheet: translucent weather and mood with soft edges, drift and
75
+ * density, on the GPU path (roadmap 425). Distinct from `FogLayer`, which is fog of war:
76
+ * this never hides gameplay, it only colours the air. The canvas stays small and scales
77
+ * up with linear filtering, so one refresh costs O(cells) and edges stay soft at any
78
+ * size. Stack several planes with different densities, drifts, tints and scales for depth.
79
+ * Needs a DOM canvas; `paintHazePixels` is the same shading without one.
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * import { HazeLayer } from '@datamoc/mw_games/two-d/render';
84
+ *
85
+ * const far = new HazeLayer({ width: 400, height: 225, density: 0.3, tint: 0x9db8d6, drift: { x: 0.1, y: 0 } });
86
+ * const near = new HazeLayer({ width: 400, height: 225, density: 0.5, tint: 0xcfd8e6, drift: { x: 0.4, y: 0.05 } });
87
+ * far.update(1 / 60); // each plane drifts at its own pace, which reads as depth
88
+ * near.update(1 / 60);
89
+ * ```
90
+ */
91
+ export declare class HazeLayer extends Sprite {
92
+ private readonly context;
93
+ private readonly image;
94
+ private readonly cellsX;
95
+ private readonly cellsY;
96
+ private readonly drift;
97
+ private readonly seed;
98
+ private readonly intent;
99
+ private density;
100
+ private time;
101
+ constructor(options: HazeLayerOptions);
102
+ /** seconds of drift accumulated so far */
103
+ get elapsed(): number;
104
+ /** swap the coverage; takes effect on the next `update` */
105
+ setDensity(density: number): void;
106
+ /** advance the drift and repaint; under reduced motion a decorative sheet holds still */
107
+ update(dt: number): void;
108
+ private refresh;
109
+ /** the texture is generated for this sheet alone, so it goes with it */
110
+ destroy(): void;
111
+ }
112
+ //# sourceMappingURL=HazeLayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HazeLayer.d.ts","sourceRoot":"","sources":["../../../src/two-d/render/HazeLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAW,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAuBxE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASlF;AAED,MAAM,WAAW,SAAS;IACzB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,8FAA8F;IAC9F,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,iBAAiB,GAAG,UAAU,EACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,GACd,IAAI,CA2BN;AAED,MAAM,WAAW,gBAAgB;IAChC,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qGAAqG;IACrG,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAU,SAAQ,MAAM;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAK;IAEjB,YAAY,OAAO,EAAE,gBAAgB,EA6CpC;IAED,0CAA0C;IAC1C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,2DAA2D;IAC3D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKhC;IAED,yFAAyF;IACzF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAMvB;IAED,OAAO,CAAC,OAAO;IAWf,wEAAwE;IAC/D,OAAO,IAAI,IAAI,CAEvB;CACD"}
@@ -0,0 +1,185 @@
1
+ import { Sprite, Texture } from 'pixi.js';
2
+ import { reducedMotion } from '../../core/Motion.js';
3
+ /** the default breeze, in field cells per second, behind a bare `time` with no layer drift */
4
+ const BREEZE_X = 0.35;
5
+ const BREEZE_Y = 0.12;
6
+ function lattice(ix, iy, seed) {
7
+ const hash = Math.sin(ix * 127.1 + iy * 311.7 + seed * 74.7) * 43758.5453;
8
+ return hash - Math.floor(hash);
9
+ }
10
+ function octave(x, y, seed) {
11
+ const x0 = Math.floor(x);
12
+ const y0 = Math.floor(y);
13
+ const fx = x - x0;
14
+ const fy = y - y0;
15
+ const sx = fx * fx * (3 - 2 * fx);
16
+ const sy = fy * fy * (3 - 2 * fy);
17
+ const top = lattice(x0, y0, seed) + (lattice(x0 + 1, y0, seed) - lattice(x0, y0, seed)) * sx;
18
+ const bottom = lattice(x0, y0 + 1, seed) + (lattice(x0 + 1, y0 + 1, seed) - lattice(x0, y0 + 1, seed)) * sx;
19
+ return Math.min(1, Math.max(0, top + (bottom - top) * sy));
20
+ }
21
+ /**
22
+ * A deterministic wisp field in 0..1: two octaves of value noise over an integer lattice,
23
+ * smoothstep-interpolated so neighbouring samples always blend rather than step. Pure and
24
+ * seed-stable within a run: the same `(x, y, time, seed)` paints the same wisp, which is
25
+ * what makes haze testable as arithmetic instead of eyeballed as weather. Time wanders
26
+ * the lookup along a slow breeze, so a still coordinate still breathes.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import { hazeField } from '@datamoc/mw_games/two-d/render';
31
+ *
32
+ * console.log(hazeField(3, 5, 1.5, 7) === hazeField(3, 5, 1.5, 7)); // true - same sky twice
33
+ * console.log(hazeField(3, 5, 1.5, 7) >= 0 && hazeField(3, 5, 1.5, 7) <= 1); // true - always a density
34
+ * ```
35
+ */
36
+ export function hazeField(x, y, time, seed) {
37
+ if (![x, y, time, seed].every(Number.isFinite)) {
38
+ throw new RangeError(`a haze sample needs finite x, y, time and seed, saw (${x}, ${y}, ${time}, ${seed})`);
39
+ }
40
+ const driftedX = x + time * BREEZE_X;
41
+ const driftedY = y + time * BREEZE_Y;
42
+ return (octave(driftedX / 8, driftedY / 8, seed) * 0.65 + octave(driftedX / 3 + 11, driftedY / 3 + 7, seed + 1) * 0.35);
43
+ }
44
+ /**
45
+ * Paint a white haze sheet with per-pixel alpha into `pixels` (`width * height` RGBA).
46
+ * The layer tints the sprite itself, so one buffer serves any colour. Pure, like
47
+ * `paintFogPixels`: density 0 paints fully transparent, and raising the density never
48
+ * thins a pixel that was already covered.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { paintHazePixels } from '@datamoc/mw_games/two-d/render';
53
+ *
54
+ * const pixels = new Uint8ClampedArray(4 * 2 * 4);
55
+ * paintHazePixels(pixels, 4, 2, { time: 0, density: 1, seed: 3 });
56
+ * console.log(pixels.some((v, i) => i % 4 === 3 && v > 0)); // true - full density always shows some haze
57
+ * ```
58
+ */
59
+ export function paintHazePixels(pixels, width, height, paint) {
60
+ if (!(pixels instanceof Uint8Array || pixels instanceof Uint8ClampedArray) ||
61
+ pixels.length !== width * height * 4) {
62
+ throw new RangeError(`haze needs a pixel buffer of ${width * height * 4} bytes`);
63
+ }
64
+ if (!Number.isFinite(paint.time) || !Number.isFinite(paint.seed)) {
65
+ throw new RangeError(`haze needs a finite time and seed, saw (${paint.time}, ${paint.seed})`);
66
+ }
67
+ if (!Number.isFinite(paint.density) || paint.density < 0 || paint.density > 1) {
68
+ throw new RangeError(`haze needs density between 0 and 1, saw ${paint.density}`);
69
+ }
70
+ const drift = paint.drift ?? { x: 0, y: 0 };
71
+ if (!Number.isFinite(drift.x) || !Number.isFinite(drift.y)) {
72
+ throw new RangeError(`haze needs a finite drift, saw (${drift.x}, ${drift.y})`);
73
+ }
74
+ for (let y = 0; y < height; y++) {
75
+ for (let x = 0; x < width; x++) {
76
+ const alpha = Math.round(255 *
77
+ paint.density *
78
+ hazeField(x + drift.x * paint.time, y + drift.y * paint.time, paint.time, paint.seed));
79
+ pixels.set([255, 255, 255, alpha], (y * width + x) * 4);
80
+ }
81
+ }
82
+ }
83
+ /**
84
+ * An atmospheric haze sheet: translucent weather and mood with soft edges, drift and
85
+ * density, on the GPU path (roadmap 425). Distinct from `FogLayer`, which is fog of war:
86
+ * this never hides gameplay, it only colours the air. The canvas stays small and scales
87
+ * up with linear filtering, so one refresh costs O(cells) and edges stay soft at any
88
+ * size. Stack several planes with different densities, drifts, tints and scales for depth.
89
+ * Needs a DOM canvas; `paintHazePixels` is the same shading without one.
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * import { HazeLayer } from '@datamoc/mw_games/two-d/render';
94
+ *
95
+ * const far = new HazeLayer({ width: 400, height: 225, density: 0.3, tint: 0x9db8d6, drift: { x: 0.1, y: 0 } });
96
+ * const near = new HazeLayer({ width: 400, height: 225, density: 0.5, tint: 0xcfd8e6, drift: { x: 0.4, y: 0.05 } });
97
+ * far.update(1 / 60); // each plane drifts at its own pace, which reads as depth
98
+ * near.update(1 / 60);
99
+ * ```
100
+ */
101
+ export class HazeLayer extends Sprite {
102
+ constructor(options) {
103
+ if (!Number.isFinite(options.width) || options.width <= 0) {
104
+ throw new RangeError(`a haze sheet needs width above 0, saw ${options.width}`);
105
+ }
106
+ if (!Number.isFinite(options.height) || options.height <= 0) {
107
+ throw new RangeError(`a haze sheet needs height above 0, saw ${options.height}`);
108
+ }
109
+ const cellsX = options.cellsX ?? 64;
110
+ const cellsY = options.cellsY ?? 36;
111
+ if (!Number.isInteger(cellsX) || cellsX < 1) {
112
+ throw new RangeError(`a haze sheet needs integer cellsX of at least 1, saw ${cellsX}`);
113
+ }
114
+ if (!Number.isInteger(cellsY) || cellsY < 1) {
115
+ throw new RangeError(`a haze sheet needs integer cellsY of at least 1, saw ${cellsY}`);
116
+ }
117
+ const density = options.density ?? 0.5;
118
+ if (!Number.isFinite(density) || density < 0 || density > 1) {
119
+ throw new RangeError(`a haze sheet needs density between 0 and 1, saw ${density}`);
120
+ }
121
+ const drift = options.drift ?? { x: 0.25, y: 0 };
122
+ if (!Number.isFinite(drift.x) || !Number.isFinite(drift.y)) {
123
+ throw new RangeError(`a haze sheet needs a finite drift, saw (${drift.x}, ${drift.y})`);
124
+ }
125
+ if (options.seed !== undefined && !Number.isFinite(options.seed)) {
126
+ throw new RangeError(`a haze sheet needs a finite seed, saw ${options.seed}`);
127
+ }
128
+ const canvas = document.createElement('canvas');
129
+ canvas.width = cellsX;
130
+ canvas.height = cellsY;
131
+ const context = canvas.getContext('2d');
132
+ if (!context)
133
+ throw new Error('HazeLayer needs a 2D canvas context');
134
+ super(Texture.from(canvas));
135
+ this.time = 0;
136
+ this.context = context;
137
+ this.image = context.createImageData(cellsX, cellsY);
138
+ this.cellsX = cellsX;
139
+ this.cellsY = cellsY;
140
+ this.density = density;
141
+ this.drift = { ...drift };
142
+ this.seed = options.seed ?? 1;
143
+ this.intent = options.intent ?? 'decorative';
144
+ this.tint = options.tint ?? 0xffffff;
145
+ this.alpha = options.opacity ?? 1;
146
+ this.scale.set(options.width / cellsX, options.height / cellsY);
147
+ this.eventMode = 'none';
148
+ this.refresh();
149
+ }
150
+ /** seconds of drift accumulated so far */
151
+ get elapsed() {
152
+ return this.time;
153
+ }
154
+ /** swap the coverage; takes effect on the next `update` */
155
+ setDensity(density) {
156
+ if (!Number.isFinite(density) || density < 0 || density > 1) {
157
+ throw new RangeError(`a haze sheet needs density between 0 and 1, saw ${density}`);
158
+ }
159
+ this.density = density;
160
+ }
161
+ /** advance the drift and repaint; under reduced motion a decorative sheet holds still */
162
+ update(dt) {
163
+ if (!Number.isFinite(dt) || dt < 0) {
164
+ throw new RangeError(`a haze update needs dt of at least 0, saw ${dt}`);
165
+ }
166
+ if (!reducedMotion() || this.intent !== 'decorative')
167
+ this.time += dt;
168
+ this.refresh();
169
+ }
170
+ refresh() {
171
+ paintHazePixels(this.image.data, this.cellsX, this.cellsY, {
172
+ time: this.time,
173
+ density: this.density,
174
+ seed: this.seed,
175
+ drift: this.drift,
176
+ });
177
+ this.context.putImageData(this.image, 0, 0);
178
+ this.texture.source.update();
179
+ }
180
+ /** the texture is generated for this sheet alone, so it goes with it */
181
+ destroy() {
182
+ super.destroy({ texture: true, textureSource: true });
183
+ }
184
+ }
185
+ //# sourceMappingURL=HazeLayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HazeLayer.js","sourceRoot":"","sources":["../../../src/two-d/render/HazeLayer.ts"],"names":[],"mappings":"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"}