@memberjunction/search-engine 5.32.0 → 5.34.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 (87) hide show
  1. package/dist/generic/BaseReRanker.d.ts +164 -0
  2. package/dist/generic/BaseReRanker.d.ts.map +1 -0
  3. package/dist/generic/BaseReRanker.js +209 -0
  4. package/dist/generic/BaseReRanker.js.map +1 -0
  5. package/dist/generic/EntitySearchProvider.d.ts +51 -3
  6. package/dist/generic/EntitySearchProvider.d.ts.map +1 -1
  7. package/dist/generic/EntitySearchProvider.js +130 -17
  8. package/dist/generic/EntitySearchProvider.js.map +1 -1
  9. package/dist/generic/FullTextSearchProvider.d.ts +7 -2
  10. package/dist/generic/FullTextSearchProvider.d.ts.map +1 -1
  11. package/dist/generic/FullTextSearchProvider.js +25 -4
  12. package/dist/generic/FullTextSearchProvider.js.map +1 -1
  13. package/dist/generic/ISearchProvider.d.ts +44 -2
  14. package/dist/generic/ISearchProvider.d.ts.map +1 -1
  15. package/dist/generic/ISearchProvider.js +35 -1
  16. package/dist/generic/ISearchProvider.js.map +1 -1
  17. package/dist/generic/NoopReRanker.d.ts +28 -0
  18. package/dist/generic/NoopReRanker.d.ts.map +1 -0
  19. package/dist/generic/NoopReRanker.js +49 -0
  20. package/dist/generic/NoopReRanker.js.map +1 -0
  21. package/dist/generic/ScopeTemplateRenderer.d.ts +36 -0
  22. package/dist/generic/ScopeTemplateRenderer.d.ts.map +1 -0
  23. package/dist/generic/ScopeTemplateRenderer.js +110 -0
  24. package/dist/generic/ScopeTemplateRenderer.js.map +1 -0
  25. package/dist/generic/SearchEngine.d.ts +180 -12
  26. package/dist/generic/SearchEngine.d.ts.map +1 -1
  27. package/dist/generic/SearchEngine.js +737 -35
  28. package/dist/generic/SearchEngine.js.map +1 -1
  29. package/dist/generic/SearchFusion.d.ts +40 -6
  30. package/dist/generic/SearchFusion.d.ts.map +1 -1
  31. package/dist/generic/SearchFusion.js +139 -18
  32. package/dist/generic/SearchFusion.js.map +1 -1
  33. package/dist/generic/StorageSearchProvider.d.ts +9 -2
  34. package/dist/generic/StorageSearchProvider.d.ts.map +1 -1
  35. package/dist/generic/StorageSearchProvider.js +44 -12
  36. package/dist/generic/StorageSearchProvider.js.map +1 -1
  37. package/dist/generic/VectorSearchProvider.d.ts +9 -2
  38. package/dist/generic/VectorSearchProvider.d.ts.map +1 -1
  39. package/dist/generic/VectorSearchProvider.js +83 -13
  40. package/dist/generic/VectorSearchProvider.js.map +1 -1
  41. package/dist/generic/search.types.d.ts +206 -0
  42. package/dist/generic/search.types.d.ts.map +1 -1
  43. package/dist/index.d.ts +13 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +18 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/permissions/SearchScopePermissionResolver.d.ts +109 -0
  48. package/dist/permissions/SearchScopePermissionResolver.d.ts.map +1 -0
  49. package/dist/permissions/SearchScopePermissionResolver.js +159 -0
  50. package/dist/permissions/SearchScopePermissionResolver.js.map +1 -0
  51. package/dist/providers/AzureAISearchProvider.d.ts +37 -0
  52. package/dist/providers/AzureAISearchProvider.d.ts.map +1 -0
  53. package/dist/providers/AzureAISearchProvider.js +180 -0
  54. package/dist/providers/AzureAISearchProvider.js.map +1 -0
  55. package/dist/providers/ElasticsearchSearchProvider.d.ts +43 -0
  56. package/dist/providers/ElasticsearchSearchProvider.d.ts.map +1 -0
  57. package/dist/providers/ElasticsearchSearchProvider.js +200 -0
  58. package/dist/providers/ElasticsearchSearchProvider.js.map +1 -0
  59. package/dist/providers/OpenSearchSearchProvider.d.ts +36 -0
  60. package/dist/providers/OpenSearchSearchProvider.d.ts.map +1 -0
  61. package/dist/providers/OpenSearchSearchProvider.js +167 -0
  62. package/dist/providers/OpenSearchSearchProvider.js.map +1 -0
  63. package/dist/providers/TypesenseSearchProvider.d.ts +36 -0
  64. package/dist/providers/TypesenseSearchProvider.d.ts.map +1 -0
  65. package/dist/providers/TypesenseSearchProvider.js +161 -0
  66. package/dist/providers/TypesenseSearchProvider.js.map +1 -0
  67. package/dist/rerankers/BGEReRanker.d.ts +57 -0
  68. package/dist/rerankers/BGEReRanker.d.ts.map +1 -0
  69. package/dist/rerankers/BGEReRanker.js +193 -0
  70. package/dist/rerankers/BGEReRanker.js.map +1 -0
  71. package/dist/rerankers/CohereReRanker.d.ts +65 -0
  72. package/dist/rerankers/CohereReRanker.d.ts.map +1 -0
  73. package/dist/rerankers/CohereReRanker.js +155 -0
  74. package/dist/rerankers/CohereReRanker.js.map +1 -0
  75. package/dist/rerankers/OpenAIReRanker.d.ts +62 -0
  76. package/dist/rerankers/OpenAIReRanker.d.ts.map +1 -0
  77. package/dist/rerankers/OpenAIReRanker.js +197 -0
  78. package/dist/rerankers/OpenAIReRanker.js.map +1 -0
  79. package/dist/rerankers/RerankerBudgetGuard.d.ts +54 -0
  80. package/dist/rerankers/RerankerBudgetGuard.d.ts.map +1 -0
  81. package/dist/rerankers/RerankerBudgetGuard.js +67 -0
  82. package/dist/rerankers/RerankerBudgetGuard.js.map +1 -0
  83. package/dist/rerankers/VoyageReRanker.d.ts +59 -0
  84. package/dist/rerankers/VoyageReRanker.d.ts.map +1 -0
  85. package/dist/rerankers/VoyageReRanker.js +184 -0
  86. package/dist/rerankers/VoyageReRanker.js.map +1 -0
  87. package/package.json +13 -8
@@ -1 +1 @@
1
- {"version":3,"file":"SearchEngine.js","sourceRoot":"","sources":["../../src/generic/SearchEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchEngine.js","sourceRoot":"","sources":["../../src/generic/SearchEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAc,oBAAoB,EAAqB,QAAQ,EAAE,SAAS,EAAY,OAAO,EAAY,MAAM,sBAAsB,CAAC;AAC7I,OAAO,EACH,gBAAgB,EAKnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAe5F,OAAO,EAAE,kBAAkB,EAAwB,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,mEAAmE;AACnE,gBAAgB,EAAE,CAAC;AA6DnB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,YAAa,SAAQ,aAA2B;IACzD,+EAA+E;IAC/E;QACI,KAAK,EAAE,CAAC;QAQJ,gBAAW,GAAG,KAAK,CAAC;QACpB,qBAAgB,GAAoB,EAAE,CAAC;QACvC,YAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7B,cAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,uBAAkB,GAAG,EAAE,CAAC;QACxB,4BAAuB,GAAG,CAAC,CAAC;QAoB5B,WAAM,GAA2D,IAAI,GAAG,EAAE,CAAC;IAhCnF,CAAC;IAED,wDAAwD;IACjD,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAAgB,CAAC;IAC7C,CAAC;IASD;;;;;OAKG;aACqB,oBAAe,GAAG,CAAC,AAAJ,CAAK;IAE5C;;;;OAIG;aACqB,iBAAY,GAAG,MAAM,AAAT,CAAU;IAE9C,wEAAwE;aAChD,sBAAiB,GAAG,GAAG,AAAN,CAAO;IAIhD,gEAAgE;IAChE,IAAc,IAAI;QACd,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED,8GAA8G;IAC9G,IAAc,aAAa;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IACnC,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,MAAM,CACf,SAA6B,EAAE,EAC/B,WAAqB,EACrB,eAAwB,KAAK;QAE7B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY;YAAE,OAAO;QAE9C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,gCAAgC,IAAI,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,+DAA+D;QAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAElD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAElD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,4DAA4D,CAAC,CAAC;YACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,OAAO;QACX,CAAC;QAED,4DAA4D;QAC5D,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;QAED,qEAAqE;QACrE,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAE7C,6CAA6C;QAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpE,SAAS,CAAC,iCAAiC,IAAI,CAAC,gBAAgB,CAAC,MAAM,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;IACxJ,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,MAAM,CAAC,MAAoB,EAAE,WAAqB;QAC3D,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,cAAc,CACxB,MAAoB,EACpB,WAAqB,EACrB,kBAAuC;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,6EAA6E;QAC7E,IAAI,qBAAqB,GAA+B,IAAI,CAAC;QAC7D,IAAI,sBAAsB,GAAkB,IAAI,CAAC;QAEjD,IAAI,CAAC;YACD,wEAAwE;YACxE,oEAAoE;YACpE,iEAAiE;YACjE,iEAAiE;YACjE,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnF,IAAI,CAAC,kBAAkB,CAAC;oBACpB,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,uBAAuB;oBACtC,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBAC3D,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,SAAS,EAAE,SAAS;oBACpB,WAAW,EAAE,CAAC;oBACd,YAAY,EAAE,IAAI;oBAClB,iBAAiB,EAAE,IAAI;oBACvB,YAAY,EAAE,SAAS;oBACvB,WAAW,EAAE,WAAW;oBACxB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;iBACtC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;gBAChD,kEAAkE;gBAClE,+DAA+D;gBAC/D,gDAAgD;gBAChD,OAAO;oBACH,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,CAAC;oBACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBACjC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;oBAC/D,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE;iBAClE,CAAC;YACN,CAAC;YAED,oBAAoB;YACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,CAAC;YAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC;YACrC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,yBAAyB,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACtG,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC;YAEvE,6DAA6D;YAC7D,iCAAiC;YACjC,6DAA6D;YAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAElG,6DAA6D;YAC7D,wEAAwE;YACxE,oEAAoE;YACpE,sEAAsE;YACtE,kBAAkB;YAClB,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACrF,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;oBAClC,8BAA8B;oBAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBAC/B,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;gBAChE,CAAC;gBACD,IAAI,GAAG;oBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;YACrD,CAAC;YAED,6DAA6D;YAC7D,mEAAmE;YACnE,6DAA6D;YAC7D,IAAI,YAAmF,CAAC;YACxF,IAAI,YAAgC,CAAC;YAErC,IAAI,eAAe,EAAE,CAAC;gBAClB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC5C,MAAM,CAAC,KAAK,EACZ,YAAY,EACZ,MAAM,CAAC,OAAO,EACd,WAAW,EACX,SAAS,EACT,SAAS,EACT,kBAAkB,CACrB,CAAC;gBACF,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAC/C,MAAM,oBAAoB,GAAG,MAAM,CAAC,qBAAqB,CAAC;gBAC1D,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACJ,qDAAqD;gBACrD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACrE,IAAI,CAAC,kBAAkB,CACnB,MAAM,CAAC,KAAK,EACZ,YAAY,EACZ,MAAM,CAAC,OAAO,EACd,WAAW,EACX,SAAS,EACT,MAAM,EACN,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,qBAAqB,EAC5B,kBAAkB,CACrB,CACJ,CAAC,CAAC;gBAEH,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC7D,MAAM,aAAa,GAAG,IAAI,GAAG,EAA8B,CAAC;gBAC5D,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;oBACjC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;oBACnC,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;oBACvC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;oBACnC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;oBACrC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1C,CAAC;gBACD,YAAY,GAAG,EAAE,CAAC;gBAElB,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACzB,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;gBAC9E,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;oBACjD,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC9B,CAAC;YACL,CAAC;YAED,6DAA6D;YAC7D,0FAA0F;YAC1F,6DAA6D;YAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAC/D,IAAI,cAAc,EAAE,WAAW,EAAE,CAAC;gBAC9B,sEAAsE;gBACtE,oEAAoE;gBACpE,yEAAyE;gBACzE,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;gBACjE,qBAAqB,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBAC7D,sBAAsB,GAAG,cAAc,CAAC,WAAW,CAAC;gBACpD,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CACjC,MAAM,CAAC,KAAK,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,qBAAqB,CACxB,CAAC;YACN,CAAC;YAED,6DAA6D;YAC7D,oFAAoF;YACpF,6DAA6D;YAC7D,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACrD,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAEtF,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;YACvC,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,iBAAiB,GAAG,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3D,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;gBACxB,2EAA2E;gBAC3E,qEAAqE;gBACrE,SAAS,CAAC,oDAAoD,iBAAiB,sDAAsD,CAAC,CAAC;YAC3I,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;YAC5C,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,CAAC;YAC7D,CAAC;YAED,2DAA2D;YAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;gBAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAE5D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACtD,CAAC;YAED,SAAS,CAAC,oCAAoC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,QAAQ,OAAO,CAAC,MAAM,aAAa,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,cAAc,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEnL,IAAI,CAAC,kBAAkB,CAAC;gBACpB,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,OAAO,CAAC,MAAM;gBAC3B,YAAY,EAAE,sBAAsB;gBACpC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAC7E,YAAY,EAAE,YAAY;gBAC1B,WAAW,EAAE,WAAW;gBACxB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;aACtC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAiB;gBAC9B,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,OAAO;gBAChB,UAAU,EAAE,OAAO,CAAC,MAAM;gBAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACjC,YAAY,EAAE,YAAY;gBAC1B,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE;aAC1C,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,WAAW,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,kBAAkB,CAAC;gBACpB,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,GAAG;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,sBAAsB;gBACpC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAC7E,YAAY,EAAE,SAAS;gBACvB,WAAW,EAAE,WAAW;gBACxB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;aACtC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACI,KAAK,CAAC,CAAC,YAAY,CACtB,MAAoB,EACpB,WAAqB;QAErB,oEAAoE;QACpE,iEAAiE;QACjE,iEAAiE;QACjE,oEAAoE;QACpE,qEAAqE;QACrE,iEAAiE;QACjE,mCAAmC;QACnC,EAAE;QACF,+DAA+D;QAC/D,mEAAmE;QACnE,sEAAsE;QACtE,mDAAmD;QAEnD,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,IAAI,WAAW,GAAwB,IAAI,CAAC;QAC5C,IAAI,IAAI,GAAG,KAAK,CAAC;QAEjB,MAAM,IAAI,GAAG,CAAC,EAAqB,EAAQ,EAAE;YACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,WAAW,CAAC;gBACtB,WAAW,GAAG,IAAI,CAAC;gBACnB,CAAC,EAAE,CAAC;YACR,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,GAAS,EAAE;YACtB,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,WAAW,CAAC;gBACtB,WAAW,GAAG,IAAI,CAAC;gBACnB,CAAC,EAAE,CAAC;YACR,CAAC;QACL,CAAC,CAAC;QAEF,uEAAuE;QACvE,sDAAsD;QACtD,MAAM,iBAAiB,GAA2B;YAC9C,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;SACrB,CAAC;QAEF,MAAM,kBAAkB,GAAuB,CAAC,EAAE,EAAE,EAAE;YAClD,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;YAC9E,IAAI,CAAC;gBACD,KAAK,EAAE,UAAU;gBACjB,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,UAAU,EAAE,EAAE,CAAC,UAAU;aAC5B,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,oEAAoE;QACpE,wDAAwD;QACxD,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;gBAClF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClB,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,eAAe,EAAE,CAAC,CAAC;oBACxE,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClD,gEAAgE;gBAChE,+DAA+D;gBAC/D,8DAA8D;gBAC9D,8DAA8D;gBAC9D,gEAAgE;gBAChE,8CAA8C;gBAC9C,IAAI,CAAC;oBACD,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC9B,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;oBAAS,CAAC;gBACP,MAAM,EAAE,CAAC;YACb,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;QAEL,mEAAmE;QACnE,0DAA0D;QAC1D,IAAI,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnB,MAAM,KAAK,CAAC,KAAK,EAAG,CAAC;oBACrB,SAAS;gBACb,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACP,MAAM;gBACV,CAAC;gBACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAChC,WAAW,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,+DAA+D;YAC/D,2DAA2D;YAC3D,8DAA8D;YAC9D,WAAW;YACX,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAuC,CAAC,CAAC,CAAC;YACvE,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,OAAe,EAAE,MAAoB,EAAE,WAAqB;QAC9E,MAAM,OAAO,GAAI,WAA0C,EAAE,EAAE,IAAI,WAAW,CAAC;QAC/E,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YAClE,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YAClE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;SAChD,CAAC,CAAC;QACH,OAAO,GAAG,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;IACxH,CAAC;IAED,6EAA6E;IACrE,QAAQ,CAAC,GAAW,EAAE,MAAoB;QAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACrD,sEAAsE;YACtE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC/C,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,iDAAiD;IAC1C,gBAAgB;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,aAAa,CACtB,KAAa,EACb,aAAqB,CAAC,EACtB,WAAqB;QAErB,OAAO,IAAI,CAAC,MAAM,CAAC;YACf,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,SAAS;SAClB,EAAE,WAAW,CAAC,CAAC;IACpB,CAAC;IAED,mEAAmE;IACnE,mBAAmB;IACnB,mEAAmE;IAEnE;;;OAGG;IACK,aAAa,CAAC,QAAmB;QACrC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,SAAS,CAAC,kCAAkC,EAAE,+CAA+C,CAAC,CAAC;gBAC/F,SAAS;YACb,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC5B,KAAa,EACb,IAAY,EACZ,OAAkC,EAClC,WAAqB,EACrB,SAAkB,EAClB,MAAmB,EACnB,aAAwC,EACxC,kBAAuD,EACvD,kBAAuC;QAMvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACtE,MAAM,0BAA0B,GAAG,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;QAErE,kFAAkF;QAClF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC/F,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,6CAA6C;QAEpG,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAAE,OAAO,KAAK,CAAC;YAChD,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,eAAe;gBAAE,OAAO,KAAK,CAAC;YACtD,IAAI,iBAAiB;gBAAE,OAAO,IAAI,CAAC;YACnC,OAAO,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,SAAS,CAAC,wBAAwB,KAAK,CAAC,IAAI,2CAA2C,CAAC,CAAC;YACzF,OAAO;gBACH,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;aAClE,CAAC;QACN,CAAC;QAED,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAA8B,EAAE;YACjF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnF,MAAM,aAAa,GAAG,KAAK,EAAE,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC;gBAEpF,wEAAwE;gBACxE,+EAA+E;gBAC/E,MAAM,sBAAsB,GAAqB;oBAC7C,GAAG,WAAW;oBACd,eAAe,EAAE,EAAE,GAAG,0BAA0B,EAAE;iBACrD,CAAC;gBACF,4EAA4E;gBAC5E,+EAA+E;gBAC/E,gFAAgF;gBAEhF,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAC/C,KAAK,EACL,aAAa,EACb,OAAO,EACP,WAAW,EACX,sBAAsB,CACzB,CAAC;gBACF,2CAA2C;gBAC3C,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;oBAC9B,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;oBACxB,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC;oBACpC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;gBAChC,CAAC;gBACD,IAAI,kBAAkB,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACD,kBAAkB,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;4BACrC,OAAO,EAAE,eAAe;4BACxB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;4BACtC,OAAO,EAAE,KAAK,CAAC,EAAE;yBACpB,CAAC,CAAC;oBACP,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACrE,QAAQ,CAAC,wDAAwD,KAAK,CAAC,QAAQ,CAAC,UAAU,eAAe,KAAK,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC;oBACtI,CAAC;gBACL,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;YAC3E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnE,QAAQ,CAAC,2BAA2B,KAAK,CAAC,QAAQ,CAAC,UAAU,sBAAsB,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC1G,IAAI,kBAAkB,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACD,kBAAkB,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;4BACrC,OAAO,EAAE,EAAE;4BACX,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;4BACtC,OAAO,EAAE,KAAK,CAAC,EAAE;yBACpB,CAAC,CAAC;oBACP,CAAC;oBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;gBAC7B,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC9D,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEhD,2CAA2C;QAC3C,6EAA6E;QAC7E,MAAM,YAAY,GAAG,WAAW,IAAI,OAAO,WAAW,CAAC,aAAa,KAAK,QAAQ;YAC7E,CAAC,CAAC,WAAW,CAAC,aAAwC;YACtD,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,aAAa,GAAG,kBAAkB,IAAI,YAAY,CAAC;QAEzD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9D,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACtD,CAAC;IAED;;;OAGG;IACK,qBAAqB,CACzB,MAAmB,EACnB,aAAwC;QAExC,MAAM,eAAe,GAAmC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvF,0BAA0B,EAAE,GAAG,CAAC,EAAE;YAClC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;YAC7C,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;YACrD,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC5D,cAAc,EAAE,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC;SAC7E,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAA4B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClE,mBAAmB,EAAE,GAAG,CAAC,EAAE;YAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/C,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9F,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;SAChH,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAA6B,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzE,2BAA2B,EAAE,GAAG,CAAC,EAAE;YACnC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;YAC9C,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9F,CAAC,CAAC,CAAC;QAEJ,4FAA4F;QAC5F,kFAAkF;QAClF,mFAAmF;QACnF,gFAAgF;QAChF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,WAAW,EAAE,0BAA0B,CAAC;QAC9D,MAAM,eAAe,GAAG,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ;YACtE,CAAC,CAAC,EAAE,GAAG,aAAuC,EAAE;YAChD,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACH,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;YACrE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAChD,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACrD,OAAO,EAAE,aAAa;YACtB,eAAe,EAAE,eAAe;YAChC,WAAW,EAAE,WAAW,IAAI,SAAS;SACxC,CAAC;IACN,CAAC;IAED,qGAAqG;IAC7F,gBAAgB,CAAC,QAAgB;QACrC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjF,OAAO,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,YAAY;IACZ,mEAAmE;IAEnE;;;;;OAKG;IACK,kBAAkB,CAAC,cAA6B;QACpD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,EAAE,GAAG,WAAW,EAAE,QAAsC,CAAC;YAC/D,IAAI,EAAE,EAAE,WAAW;gBAAE,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACK,uBAAuB,CAAC,cAA6B;QACzD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC;YAC/C,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,KAAK,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,WAAW,CACrB,KAAa,EACb,UAA8B,EAC9B,GAAmB,EACnB,WAAqB,EACrB,WAAiC;QAEjC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;QAEnE,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAC1D,YAAY,EACZ,GAAG,CAAC,WAAW,CAClB,IAAI,IAAI,YAAY,EAAE,CAAC;YAExB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAE/C,uEAAuE;YACvE,mEAAmE;YACnE,uEAAuE;YACvE,uCAAuC;YACvC,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClC,SAAS,CAAC,4BAA4B,GAAG,CAAC,WAAW,8BAA8B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,WAAW,CAAC,MAAM,IAAI,UAAU,KAAK,CAAC,CAAC;oBAC1Q,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACxC,CAAC;gBACD,gEAAgE;gBAChE,uDAAuD;gBACvD,QAAQ,CAAC,YAAY,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;YACzD,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1F,SAAS,CAAC,4BAA4B,GAAG,CAAC,WAAW,cAAc,MAAM,CAAC,MAAM,qBAAqB,OAAO,CAAC,MAAM,gBAAgB,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClN,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,4BAA4B,GAAG,CAAC,WAAW,uCAAuC,GAAG,EAAE,CAAC,CAAC;YAClG,OAAO,UAAU,CAAC;QACtB,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,sCAAsC;IACtC,mEAAmE;IAEnE;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAC5B,MAA8B,EAC9B,WAAqB;QAErB,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEvC,IAAI,CAAC;YACD,kEAAkE;YAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAC1D,kBAAkB,EAClB,WAAW,CACd,CAAC;YAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,QAAQ,CAAC,4DAA4D,WAAW,gBAAgB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;gBAChH,OAAO;YACX,CAAC;YAED,uCAAuC;YACvC,IAAI,cAAc,GAAmC,IAAI,CAAC;YAC1D,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAA4B,CAAC;gBAClF,CAAC;gBAAC,MAAM,CAAC;oBACL,QAAQ,CAAC,qDAAqD,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;gBAClF,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,MAAM,MAAM,GAAyB;gBACjC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,cAAc,EAAE,cAAc;gBAC9B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;gBACzC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,IAAI;gBACrD,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC5B,CAAC;YAEF,qFAAqF;YACrF,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;YAEvC,0BAA0B;YAC1B,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE/C,qEAAqE;YACrE,IAAI,QAAQ,YAAY,sBAAsB,EAAE,CAAC;gBAC7C,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;YAED,qBAAqB;YACrB,MAAM,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAE9C,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBACvB,QAAQ,EAAE,QAAQ;oBAClB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI;oBAC9C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,oBAAoB;oBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,IAAI;oBACrD,MAAM,EAAE,MAAM;iBACjB,CAAC,CAAC;gBACH,SAAS,CAAC,2BAA2B,MAAM,CAAC,IAAI,MAAM,WAAW,WAAW,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACJ,SAAS,CAAC,2BAA2B,MAAM,CAAC,IAAI,MAAM,WAAW,iBAAiB,CAAC,CAAC;YACxF,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,gDAAgD,MAAM,CAAC,IAAI,MAAM,WAAW,MAAM,GAAG,EAAE,CAAC,CAAC;QACtG,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,2CAA2C;IAC3C,mEAAmE;IAEnE;;;OAGG;IACK,KAAK,CAAC,gBAAgB,CAC1B,KAAa,EACb,IAAY,EACZ,OAAkC,EAClC,WAAqB,EACrB,SAAkB,EAClB,gBAA8C,EAC9C,kBAAuC;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC7C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5C,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,eAAe;gBAAE,OAAO,KAAK,CAAC;YAClD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,sCAAsC,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAA8B,EAAE;YACrE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,MAAM,YAAY,GAAG,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC;gBACtD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;gBACzG,2CAA2C;gBAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACtB,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;oBACxB,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC;oBACpC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;gBAChC,CAAC;gBACD,IAAI,kBAAkB,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACD,kBAAkB,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;4BACrC,OAAO;4BACP,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;yBACzC,CAAC,CAAC;oBACP,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,qEAAqE;wBACrE,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACrE,QAAQ,CAAC,wDAAwD,KAAK,CAAC,QAAQ,CAAC,UAAU,MAAM,KAAK,EAAE,CAAC,CAAC;oBAC7G,CAAC;gBACL,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACnE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnE,QAAQ,CAAC,2BAA2B,KAAK,CAAC,QAAQ,CAAC,UAAU,aAAa,GAAG,EAAE,CAAC,CAAC;gBACjF,IAAI,kBAAkB,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACD,kBAAkB,CAAC;4BACf,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;4BACrC,OAAO,EAAE,EAAE;4BACX,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;yBACzC,CAAC,CAAC;oBACP,CAAC;oBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;gBAC7B,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC9D,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAA0B;QAC3C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClB,KAAK,QAAQ;oBACT,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBACrC,MAAM;gBACV,KAAK,UAAU;oBACX,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBACvC,MAAM;gBACV,KAAK,QAAQ;oBACT,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBACrC,MAAM;gBACV,KAAK,SAAS;oBACV,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBACtC,MAAM;YACd,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mEAAmE;IACnE,kDAAkD;IAClD,mEAAmE;IAEnE;;;;;;;;;;;;;OAaG;IACO,KAAK,CAAC,mBAAmB,CAC/B,OAA2B,EAC3B,WAAqB;QAErB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAEzC,sFAAsF;QACtF,6EAA6E;QAC7E,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,cAAc,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,cAAc,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAuB,CAAC,GAAG,cAAc,CAAC,CAAC;QAE1D,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,QAAQ,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAC7E,CAAC;QACN,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,kFAAkF;QAClF,+EAA+E;QAC/E,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;QACvD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE9E,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,OAA2B;QACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;QACvD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAC7B,UAAkB,EAClB,aAAiC,EACjC,WAAqB,EACrB,SAA6B;QAE7B,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YAC9B,IAAI,MAAM,GAAsB,IAAI,CAAC;YACrC,IAAI,CAAC;gBACD,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACL,mEAAmE;gBACnE,OAAO;YACX,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,qCAAqC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,OAAO;YAErC,YAAY;YACZ,IAAI,MAAM,CAAC,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChF,mEAAmE;gBACnE,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;gBACjC,OAAO;YACX,CAAC;YAED,sEAAsE;YACtE,MAAM,SAAS,GAAG,MAAM,CAAC,kCAAkC,CACvD,WAAW,EACX,oBAAoB,CAAC,IAAI,EACzB,EAAE,CACL,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,gDAAgD;gBAChD,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;gBACjC,OAAO;YACX,CAAC;YAED,gDAAgD;YAChD,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,4DAA4D;YAC5D,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,yDAAyD,UAAU,MAAM,GAAG,EAAE,CAAC,CAAC;QAC7F,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,wBAAwB,CAClC,MAAkB,EAClB,aAAiC,EACjC,SAAiB,EACjB,WAAqB,EACrB,SAA6B;QAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,wDAAwD;YACxD,QAAQ,CAAC,yBAAyB,MAAM,CAAC,IAAI,+CAA+C,CAAC,CAAC;YAC9F,OAAO;QACX,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;QACjC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,GAAG,WAAW,QAAQ,SAAS,UAAU,SAAS,GAAG,CAAC;QAErE,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAyB;YACpD,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,CAAC,WAAW,CAAC;YACrB,UAAU,EAAE,QAAQ;SACvB,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,oDAAoD;YACpD,QAAQ,CAAC,gDAAgD,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,YAAY,IAAI,eAAe,EAAE,CAAC,CAAC;YACpH,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CACpB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CACjE,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAED,kCAAkC;IAClC;;;;;;OAMG;IACI,KAAK,CAAC,kBAAkB,CAAC,KAO/B;QACG,MAAM,IAAI,CAAC,kBAAkB,CAAC;YAC1B,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,IAAI;YACvB,YAAY,EAAE,SAAS;YACvB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;SACrC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,kBAAkB,CAAC,KAYhC;QACG,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAChD,2BAA2B,EAC3B,KAAK,CAAC,WAAW,CACpB,CAAC;YACF,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3F,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,CAAC;YAC1C,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;YACxC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;YACnD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YACpC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACtC,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;YAChD,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1B,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;YACxC,qEAAqE;YACrE,wEAAwE;YACxE,mEAAmE;YACnE,qDAAqD;YACrD,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY;gBAClC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;oBACb,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE;oBAClD,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE;oBACtD,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE;oBAClD,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE;iBACvD,CAAC;gBACF,CAAC,CAAC,IAAI,CAAC;YAEX,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,QAAQ,CAAC,0DAA0D,GAAG,CAAC,YAAY,EAAE,eAAe,IAAI,eAAe,EAAE,CAAC,CAAC;YAC/H,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,mGAAmG;YACnG,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,QAAQ,CAAC,iDAAiD,GAAG,EAAE,CAAC,CAAC;QACrE,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,OAAe,EAAE,SAAiB;QACvD,OAAO;YACH,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACjC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;YAC/D,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,OAAO;SACxB,CAAC;IACN,CAAC;IAED,kEAAkE;IAC1D,qBAAqB;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,WAAW;YACnB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU;YACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACvB,CAAC,CAAC,CAAC;IACR,CAAC;IAED,6EAA6E;IACrE,SAAS,CAAC,KAAgC;QAC9C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,MAAiC,CAAC;YACnF,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC"}
@@ -1,13 +1,20 @@
1
1
  /**
2
2
  * @fileoverview Search result fusion using Reciprocal Rank Fusion (RRF).
3
3
  *
4
- * Takes ranked lists from vector, full-text, and entity search providers,
5
- * applies RRF to produce a unified ranking, deduplicates by EntityName+RecordID,
6
- * and normalizes scores when only a single source has results.
4
+ * Two fusion layers:
5
+ * 1. **Per-scope / per-source fusion** — `Fuse()` takes labeled lists from a single scope's
6
+ * providers (vector, full-text, entity, storage) and produces a single ranked list for
7
+ * that scope. Per-provider fusion weights are honored when supplied.
8
+ * 2. **Cross-scope fusion** — `CrossScopeFusion()` takes an already-per-scope-fused map
9
+ * (`scopeID → results`) and combines them into a single ranked list across all scopes.
10
+ *
11
+ * Both layers use the shared `ComputeRRF()` from `@memberjunction/core`. Deduplication is
12
+ * handled separately via `Deduplicate()` so callers can control ordering of dedup vs.
13
+ * re-ranking vs. permission safety net.
7
14
  *
8
15
  * @module @memberjunction/search-engine
9
16
  */
10
- import { SearchResultItem, SearchSource } from './search.types.js';
17
+ import { SearchResultItem, SearchSource, FusionWeightsByProvider } from './search.types.js';
11
18
  /**
12
19
  * A labeled list of search results from a single source.
13
20
  */
@@ -32,9 +39,27 @@ export declare class SearchFusion {
32
39
  *
33
40
  * @param lists - Labeled result lists from each search source
34
41
  * @param maxResults - Maximum number of results to return
42
+ * @param fusionWeights - Optional per-provider weights applied during RRF.
43
+ * Keys match `SearchSource` values (plus any custom source types).
44
+ * Missing keys default to 1.0. Only applied when there are 2+ sources.
35
45
  * @returns Fused, deduplicated, and ranked results
36
46
  */
37
- Fuse(lists: LabeledResultList[], maxResults: number): SearchResultItem[];
47
+ Fuse(lists: LabeledResultList[], maxResults: number, fusionWeights?: FusionWeightsByProvider): SearchResultItem[];
48
+ /**
49
+ * Fuse already-per-scope-fused result lists into a single cross-scope ranking.
50
+ *
51
+ * Each entry in `scopeResults` is a per-scope ranked list (already internally fused
52
+ * across its providers via `Fuse()`). Cross-scope RRF treats each scope's ranking as
53
+ * one input list to a new RRF computation, so records that appear in multiple scopes
54
+ * get boosted.
55
+ *
56
+ * @param scopeResults - Map of `scopeID → per-scope results`.
57
+ * @param maxResults - Maximum number of results to return.
58
+ * @param fusionWeights - Optional per-scope weights keyed by scope ID. Missing keys
59
+ * default to 1.0.
60
+ * @returns Fused, cross-scope-ranked results (not yet deduplicated).
61
+ */
62
+ CrossScopeFusion(scopeResults: Map<string, SearchResultItem[]>, maxResults: number, fusionWeights?: Record<string, number>): SearchResultItem[];
38
63
  /**
39
64
  * Deduplicate results by EntityName+RecordID.
40
65
  * When the same record appears from multiple sources (e.g., vector + entity),
@@ -44,9 +69,18 @@ export declare class SearchFusion {
44
69
  Deduplicate(results: SearchResultItem[]): SearchResultItem[];
45
70
  /**
46
71
  * Apply RRF across multiple result lists.
47
- * Maps results to ScoredCandidate[], runs ComputeRRF, then maps back.
72
+ * Maps results to ScoredCandidate[], runs ComputeRRF (optionally weighted), then maps back.
48
73
  */
49
74
  private applyRRF;
75
+ /**
76
+ * RRF with optional per-list weights.
77
+ *
78
+ * When all weights are 1, falls back to the canonical `ComputeRRF()` from
79
+ * `@memberjunction/core` for identical behavior. When weights are non-uniform,
80
+ * computes `Σᵢ wᵢ / (k + rankᵢ(d))` per the standard weighted-RRF formulation and
81
+ * re-sorts candidates by the weighted fused score.
82
+ */
83
+ private computeWeightedRRF;
50
84
  /**
51
85
  * Normalize scores when only one search source returned results.
52
86
  * Scales scores relative to the top result so the best match shows
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFusion.d.ts","sourceRoot":"","sources":["../../src/generic/SearchFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,iDAAiD;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,qBAAa,YAAY;IACrB;;;;;;;;;;;OAWG;IACI,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAc/E;;;;;OAKG;IACI,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE;IAkCnE;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAkChB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAavB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAe7B"}
1
+ {"version":3,"file":"SearchFusion.d.ts","sourceRoot":"","sources":["../../src/generic/SearchFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAwB,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE/G;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,iDAAiD;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,qBAAa,YAAY;IACrB;;;;;;;;;;;;;;OAcG;IACI,IAAI,CACP,KAAK,EAAE,iBAAiB,EAAE,EAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,uBAAuB,GACxC,gBAAgB,EAAE;IA8BrB;;;;;;;;;;;;;OAaG;IACI,gBAAgB,CACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAC7C,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,gBAAgB,EAAE;IAwCrB;;;;;OAKG;IACI,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE;IAkCnE;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAkDhB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAavB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAwB7B"}
@@ -1,9 +1,16 @@
1
1
  /**
2
2
  * @fileoverview Search result fusion using Reciprocal Rank Fusion (RRF).
3
3
  *
4
- * Takes ranked lists from vector, full-text, and entity search providers,
5
- * applies RRF to produce a unified ranking, deduplicates by EntityName+RecordID,
6
- * and normalizes scores when only a single source has results.
4
+ * Two fusion layers:
5
+ * 1. **Per-scope / per-source fusion** — `Fuse()` takes labeled lists from a single scope's
6
+ * providers (vector, full-text, entity, storage) and produces a single ranked list for
7
+ * that scope. Per-provider fusion weights are honored when supplied.
8
+ * 2. **Cross-scope fusion** — `CrossScopeFusion()` takes an already-per-scope-fused map
9
+ * (`scopeID → results`) and combines them into a single ranked list across all scopes.
10
+ *
11
+ * Both layers use the shared `ComputeRRF()` from `@memberjunction/core`. Deduplication is
12
+ * handled separately via `Deduplicate()` so callers can control ordering of dedup vs.
13
+ * re-ranking vs. permission safety net.
7
14
  *
8
15
  * @module @memberjunction/search-engine
9
16
  */
@@ -23,19 +30,85 @@ export class SearchFusion {
23
30
  *
24
31
  * @param lists - Labeled result lists from each search source
25
32
  * @param maxResults - Maximum number of results to return
33
+ * @param fusionWeights - Optional per-provider weights applied during RRF.
34
+ * Keys match `SearchSource` values (plus any custom source types).
35
+ * Missing keys default to 1.0. Only applied when there are 2+ sources.
26
36
  * @returns Fused, deduplicated, and ranked results
27
37
  */
28
- Fuse(lists, maxResults) {
29
- // Collect only lists that have results
30
- const nonEmpty = lists.filter(l => l.Results.length > 0);
38
+ Fuse(lists, maxResults, fusionWeights) {
39
+ // Defensive sanitation: reject items with non-finite Score or empty
40
+ // RecordID before fusion. A custom 3rd-party provider that returns
41
+ // `Score: NaN`, `Score: undefined`, or `RecordID: ''` would otherwise
42
+ // poison the RRF sort (NaN comparisons are always false → unstable
43
+ // ordering) or short-circuit dedup (empty key collisions). Filter
44
+ // here once rather than in three downstream places.
45
+ const sanitized = lists.map(l => ({
46
+ Source: l.Source,
47
+ Results: l.Results.filter(r => r != null
48
+ && typeof r.RecordID === 'string'
49
+ && r.RecordID.length > 0
50
+ && Number.isFinite(r.Score)),
51
+ }));
52
+ // Collect only lists that have (sanitized) results
53
+ const nonEmpty = sanitized.filter(l => l.Results.length > 0);
31
54
  if (nonEmpty.length === 0)
32
55
  return [];
33
56
  // Single source: return as-is (no normalization needed, scores are native to that source)
34
57
  if (nonEmpty.length === 1) {
35
58
  return nonEmpty[0].Results.slice(0, maxResults);
36
59
  }
37
- // Multiple sources: apply RRF
38
- return this.applyRRF(nonEmpty, maxResults);
60
+ // Multiple sources: apply RRF with optional weights
61
+ return this.applyRRF(nonEmpty, maxResults, fusionWeights);
62
+ }
63
+ /**
64
+ * Fuse already-per-scope-fused result lists into a single cross-scope ranking.
65
+ *
66
+ * Each entry in `scopeResults` is a per-scope ranked list (already internally fused
67
+ * across its providers via `Fuse()`). Cross-scope RRF treats each scope's ranking as
68
+ * one input list to a new RRF computation, so records that appear in multiple scopes
69
+ * get boosted.
70
+ *
71
+ * @param scopeResults - Map of `scopeID → per-scope results`.
72
+ * @param maxResults - Maximum number of results to return.
73
+ * @param fusionWeights - Optional per-scope weights keyed by scope ID. Missing keys
74
+ * default to 1.0.
75
+ * @returns Fused, cross-scope-ranked results (not yet deduplicated).
76
+ */
77
+ CrossScopeFusion(scopeResults, maxResults, fusionWeights) {
78
+ // Filter empty scopes
79
+ const entries = Array.from(scopeResults.entries()).filter(([, list]) => list.length > 0);
80
+ if (entries.length === 0)
81
+ return [];
82
+ if (entries.length === 1)
83
+ return entries[0][1].slice(0, maxResults);
84
+ // Build per-scope ScoredCandidate lists (by-record-identity keyed on EntityName::RecordID
85
+ // so the same logical record across scopes merges properly). `Rank` is included as
86
+ // an excess property so test doubles that key off of it work while real ComputeRRF
87
+ // (which keys off array position) continues to behave correctly.
88
+ const rankedLists = entries.map(([, list]) => list.map((r, i) => ({
89
+ ID: `${r.EntityName}::${r.RecordID}`,
90
+ Score: r.Score,
91
+ Rank: i + 1
92
+ })));
93
+ const weights = entries.map(([scopeID]) => fusionWeights?.[scopeID] ?? 1);
94
+ const fused = this.computeWeightedRRF(rankedLists, weights);
95
+ // Build a lookup from compound key to full result item (prefer best score)
96
+ const resultMap = new Map();
97
+ for (const [, list] of entries) {
98
+ for (const r of list) {
99
+ const key = `${r.EntityName}::${r.RecordID}`;
100
+ const existing = resultMap.get(key);
101
+ if (!existing || r.Score > existing.Score) {
102
+ resultMap.set(key, r);
103
+ }
104
+ }
105
+ }
106
+ return fused.slice(0, maxResults).map(candidate => {
107
+ const item = resultMap.get(candidate.ID);
108
+ if (item)
109
+ return { ...item, Score: candidate.Score };
110
+ return this.createFallbackItem(candidate);
111
+ });
39
112
  }
40
113
  /**
41
114
  * Deduplicate results by EntityName+RecordID.
@@ -77,24 +150,37 @@ export class SearchFusion {
77
150
  }
78
151
  /**
79
152
  * Apply RRF across multiple result lists.
80
- * Maps results to ScoredCandidate[], runs ComputeRRF, then maps back.
153
+ * Maps results to ScoredCandidate[], runs ComputeRRF (optionally weighted), then maps back.
81
154
  */
82
- applyRRF(lists, maxResults) {
83
- // Build ScoredCandidate arrays for each source
155
+ applyRRF(lists, maxResults, fusionWeights) {
156
+ // Build ScoredCandidate arrays for each source. `Rank` is carried as an excess
157
+ // property for test doubles that key off it; production ComputeRRF ignores it.
84
158
  const rankedLists = lists.map(list => list.Results.map((r, i) => ({
85
159
  ID: r.RecordID,
86
160
  Score: r.Score,
87
161
  Rank: i + 1
88
162
  })));
89
- // Run RRF fusion
90
- const fused = ComputeRRF(rankedLists);
91
- // Build a lookup from RecordID to full result item (prefer first occurrence)
163
+ const weights = lists.map(l => fusionWeights?.[l.Source] ?? 1);
164
+ const fused = this.computeWeightedRRF(rankedLists, weights);
165
+ // Build a lookup from RecordID to full result item. When the same record
166
+ // appears in multiple provider lists, merge their `ScoreBreakdown`s so the
167
+ // multi-provider evidence isn't lost. Keeping only the first occurrence
168
+ // would silently drop the second provider's contribution — which then
169
+ // causes the downstream `Deduplicate.breakdownMax` post-processing to
170
+ // under-rank multi-provider hits (they'd look single-provider).
92
171
  const resultMap = new Map();
93
172
  for (const list of lists) {
94
173
  for (const r of list.Results) {
95
- if (!resultMap.has(r.RecordID)) {
174
+ const existing = resultMap.get(r.RecordID);
175
+ if (!existing) {
96
176
  resultMap.set(r.RecordID, r);
97
177
  }
178
+ else {
179
+ resultMap.set(r.RecordID, {
180
+ ...existing,
181
+ ScoreBreakdown: { ...existing.ScoreBreakdown, ...r.ScoreBreakdown },
182
+ });
183
+ }
98
184
  }
99
185
  }
100
186
  // Map fused candidates back to full result items
@@ -107,6 +193,32 @@ export class SearchFusion {
107
193
  return this.createFallbackItem(candidate);
108
194
  });
109
195
  }
196
+ /**
197
+ * RRF with optional per-list weights.
198
+ *
199
+ * When all weights are 1, falls back to the canonical `ComputeRRF()` from
200
+ * `@memberjunction/core` for identical behavior. When weights are non-uniform,
201
+ * computes `Σᵢ wᵢ / (k + rankᵢ(d))` per the standard weighted-RRF formulation and
202
+ * re-sorts candidates by the weighted fused score.
203
+ */
204
+ computeWeightedRRF(rankedLists, weights, k = 60) {
205
+ const uniform = weights.every(w => w === 1);
206
+ if (uniform) {
207
+ return ComputeRRF(rankedLists, k);
208
+ }
209
+ const scores = new Map();
210
+ rankedLists.forEach((list, listIdx) => {
211
+ const w = weights[listIdx] ?? 1;
212
+ list.forEach((candidate, position) => {
213
+ const rank = position + 1;
214
+ const contribution = w / (k + rank);
215
+ scores.set(candidate.ID, (scores.get(candidate.ID) ?? 0) + contribution);
216
+ });
217
+ });
218
+ return Array.from(scores.entries())
219
+ .map(([ID, Score]) => ({ ID, Score }))
220
+ .sort((a, b) => b.Score - a.Score);
221
+ }
110
222
  /**
111
223
  * Normalize scores when only one search source returned results.
112
224
  * Scales scores relative to the top result so the best match shows
@@ -129,10 +241,19 @@ export class SearchFusion {
129
241
  * no matching full result item (defensive).
130
242
  */
131
243
  createFallbackItem(candidate) {
244
+ // If the ID is a compound key (EntityName::RecordID) used by CrossScopeFusion,
245
+ // split it back out for readability.
246
+ let entityName = 'Unknown';
247
+ let recordID = candidate.ID;
248
+ const sep = candidate.ID.indexOf('::');
249
+ if (sep > 0) {
250
+ entityName = candidate.ID.substring(0, sep);
251
+ recordID = candidate.ID.substring(sep + 2);
252
+ }
132
253
  return {
133
- ID: candidate.ID,
134
- EntityName: 'Unknown',
135
- RecordID: candidate.ID,
254
+ ID: recordID,
255
+ EntityName: entityName,
256
+ RecordID: recordID,
136
257
  SourceType: 'fused',
137
258
  ResultType: 'entity-record',
138
259
  Title: 'Unknown',
@@ -1 +1 @@
1
- {"version":3,"file":"SearchFusion.js","sourceRoot":"","sources":["../../src/generic/SearchFusion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchFusion.js","sourceRoot":"","sources":["../../src/generic/SearchFusion.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import { UserInfo } from '@memberjunction/core';
12
12
  import { BaseSearchProvider } from './ISearchProvider.js';
13
- import { SearchSource, SearchFilters, SearchResultItem } from './search.types.js';
13
+ import { SearchSource, SearchFilters, SearchResultItem, ScopeConstraints } from './search.types.js';
14
14
  /**
15
15
  * Provides file-level search across MJ File Storage accounts using each
16
16
  * provider's native SearchFiles() API. Only accounts with
@@ -46,7 +46,12 @@ export declare class StorageSearchProvider extends BaseSearchProvider {
46
46
  * @param contextUser - The user performing the search
47
47
  * @returns Scored result items from storage search
48
48
  */
49
- Search(query: string, topK: number, _filters: SearchFilters | undefined, contextUser: UserInfo): Promise<SearchResultItem[]>;
49
+ Search(query: string, topK: number, _filters: SearchFilters | undefined, contextUser: UserInfo, scopeConstraints?: ScopeConstraints): Promise<SearchResultItem[]>;
50
+ /**
51
+ * Restrict the searchable account list to the scope's allowed set. When the scope
52
+ * does not restrict (or the list is empty), returns the accounts unchanged.
53
+ */
54
+ private applyScopeAccountFilter;
50
55
  /**
51
56
  * Filter storage accounts by checking FileStorageAccountPermission records
52
57
  * for the given user. If an account has no permission records, it is
@@ -55,6 +60,8 @@ export declare class StorageSearchProvider extends BaseSearchProvider {
55
60
  private filterAccountsByPermissions;
56
61
  /**
57
62
  * Search a single storage account using the provider's native SearchFiles API.
63
+ * If `folderPath` is supplied (from a scope), results are filtered to that prefix
64
+ * after the driver returns — most drivers do not natively support a path filter.
58
65
  */
59
66
  private searchOneAccount;
60
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"StorageSearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/StorageSearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAgC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAY9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAoB,MAAM,gBAAgB,CAAC;AAWjG;;;;;;;;;GASG;AACH,qBACa,qBAAsB,SAAQ,kBAAkB;IACzD,SAAgB,UAAU,EAAE,YAAY,CAAa;IAErD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,YAAY,CAA8C;IAElE;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;;;;OAKG;IACU,iBAAiB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDpE;;;;;;;;OAQG;IACU,MAAM,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAyC9B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAuCnC;;OAEG;YACW,gBAAgB;IAiC9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmCtB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkCnB;;OAEG;IACH,OAAO,CAAC,cAAc;CAMzB"}
1
+ {"version":3,"file":"StorageSearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/StorageSearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAgC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAY9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAoB,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AAW3I;;;;;;;;;GASG;AACH,qBACa,qBAAsB,SAAQ,kBAAkB;IACzD,SAAgB,UAAU,EAAE,YAAY,CAAa;IAErD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,YAAY,CAA8C;IAElE;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;;;;OAKG;IACU,iBAAiB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDpE;;;;;;;;OAQG;IACU,MAAM,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,WAAW,EAAE,QAAQ,EACrB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAyD9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAyCnC;;;;OAIG;YACW,gBAAgB;IAuC9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmCtB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkCnB;;OAEG;IACH,OAAO,CAAC,cAAc;CAMzB"}
@@ -15,7 +15,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
15
15
  return c > 3 && r && Object.defineProperty(target, key, r), r;
16
16
  };
17
17
  import { LogError, LogStatus, RunView } from '@memberjunction/core';
18
- import { NormalizeUUID, RegisterClass } from '@memberjunction/global';
18
+ import { NormalizeUUID, RegisterClass, UUIDsEqual } from '@memberjunction/global';
19
19
  import { FileStorageEngine } from '@memberjunction/storage';
20
20
  import { BaseSearchProvider } from './ISearchProvider.js';
21
21
  /**
@@ -72,7 +72,7 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
72
72
  this._searchableAccounts = [];
73
73
  for (const account of accounts) {
74
74
  if (searchProviderIDs.has(NormalizeUUID(account.ProviderID))) {
75
- const provider = providers.find(p => NormalizeUUID(p.ID) === NormalizeUUID(account.ProviderID));
75
+ const provider = providers.find(p => UUIDsEqual(p.ID, account.ProviderID));
76
76
  if (provider) {
77
77
  this._searchableAccounts.push({ Account: account, Provider: provider });
78
78
  }
@@ -96,21 +96,34 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
96
96
  * @param contextUser - The user performing the search
97
97
  * @returns Scored result items from storage search
98
98
  */
99
- async Search(query, topK, _filters, contextUser) {
99
+ async Search(query, topK, _filters, contextUser, scopeConstraints) {
100
100
  if (!this._available || this._searchableAccounts.length === 0) {
101
101
  return [];
102
102
  }
103
103
  const startTime = Date.now();
104
- // Filter accounts by user permissions
105
- const accessibleAccounts = this.filterAccountsByPermissions(this._searchableAccounts, contextUser);
104
+ // Honor per-provider query transform
105
+ const effectiveQuery = scopeConstraints?.QueryTransforms?.[this.SourceType] ?? query;
106
+ // Narrow the account list per scope if provided. Scope folder paths are already
107
+ // rendered (Nunjucks + SearchContext applied by SearchEngine) — we pass them
108
+ // through to the driver per-account.
109
+ const scopedAccounts = this.applyScopeAccountFilter(this._searchableAccounts, scopeConstraints?.StorageAccounts);
110
+ if (scopedAccounts.length === 0) {
111
+ // Scope explicitly says "none of these storage accounts" — return empty.
112
+ return [];
113
+ }
114
+ // Filter accounts by user permissions (existing push-down)
115
+ const accessibleAccounts = this.filterAccountsByPermissions(scopedAccounts, contextUser);
106
116
  if (accessibleAccounts.length === 0) {
107
117
  LogStatus('StorageSearchProvider: User has no access to any searchable storage accounts');
108
118
  return [];
109
119
  }
110
120
  // Distribute topK across accounts
111
121
  const perAccountLimit = Math.max(3, Math.ceil(topK / accessibleAccounts.length));
112
- // Search all accounts in parallel
113
- const searchPromises = accessibleAccounts.map(entry => this.searchOneAccount(entry, query, perAccountLimit, contextUser));
122
+ // Search all accounts in parallel, threading per-account FolderPath (if any)
123
+ const searchPromises = accessibleAccounts.map(entry => {
124
+ const scopeRow = scopeConstraints?.StorageAccounts?.find(r => UUIDsEqual(r.FileStorageAccountID, entry.Account.ID));
125
+ return this.searchOneAccount(entry, effectiveQuery, perAccountLimit, contextUser, scopeRow?.FolderPath);
126
+ });
114
127
  const results = await Promise.all(searchPromises);
115
128
  const allResults = results.flat();
116
129
  // Sort by score descending and limit to topK
@@ -120,16 +133,28 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
120
133
  `${trimmed.length} results from ${accessibleAccounts.length} account(s)`);
121
134
  return trimmed;
122
135
  }
136
+ /**
137
+ * Restrict the searchable account list to the scope's allowed set. When the scope
138
+ * does not restrict (or the list is empty), returns the accounts unchanged.
139
+ */
140
+ applyScopeAccountFilter(accounts, scopeRows) {
141
+ if (!scopeRows || scopeRows.length === 0)
142
+ return accounts;
143
+ const allowedIDs = new Set(scopeRows.map(r => NormalizeUUID(r.FileStorageAccountID)));
144
+ return accounts.filter(a => allowedIDs.has(NormalizeUUID(a.Account.ID)));
145
+ }
123
146
  /**
124
147
  * Filter storage accounts by checking FileStorageAccountPermission records
125
148
  * for the given user. If an account has no permission records, it is
126
149
  * accessible to everyone (backwards compatible).
127
150
  */
128
151
  filterAccountsByPermissions(accounts, contextUser) {
129
- const normalizedUserID = NormalizeUUID(contextUser.ID);
152
+ // userRoleIDs is normalized for Set-key lookups (the canonical idiom);
153
+ // user ID equality goes through UUIDsEqual since there's only one user
154
+ // per call, so we don't need a hoisted-normalize hot-loop optimization.
130
155
  const userRoleIDs = new Set((contextUser.UserRoles ?? []).map(r => NormalizeUUID(r.RoleID)));
131
156
  return accounts.filter(entry => {
132
- const accountPerms = this._permissions.filter(p => NormalizeUUID(p.FileStorageAccountID) === NormalizeUUID(entry.Account.ID));
157
+ const accountPerms = this._permissions.filter(p => UUIDsEqual(p.FileStorageAccountID, entry.Account.ID));
133
158
  // No permission records means open access (backwards compatible)
134
159
  if (accountPerms.length === 0) {
135
160
  return true;
@@ -143,7 +168,7 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
143
168
  return true;
144
169
  case 'User':
145
170
  return perm.UserID != null &&
146
- NormalizeUUID(perm.UserID) === normalizedUserID;
171
+ UUIDsEqual(perm.UserID, contextUser.ID);
147
172
  case 'Role':
148
173
  return perm.RoleID != null &&
149
174
  userRoleIDs.has(NormalizeUUID(perm.RoleID));
@@ -155,8 +180,10 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
155
180
  }
156
181
  /**
157
182
  * Search a single storage account using the provider's native SearchFiles API.
183
+ * If `folderPath` is supplied (from a scope), results are filtered to that prefix
184
+ * after the driver returns — most drivers do not natively support a path filter.
158
185
  */
159
- async searchOneAccount(entry, query, maxResults, contextUser) {
186
+ async searchOneAccount(entry, query, maxResults, contextUser, folderPath) {
160
187
  try {
161
188
  const driver = await FileStorageEngine.Instance.GetDriver(entry.Account.ID, contextUser);
162
189
  if (!driver.IsConfigured) {
@@ -169,7 +196,12 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
169
196
  searchContent: true
170
197
  };
171
198
  const resultSet = await driver.SearchFiles(query, searchOptions);
172
- return this.convertResults(resultSet.results, entry.Account, query);
199
+ let files = resultSet.results;
200
+ if (folderPath && folderPath.trim()) {
201
+ const prefix = folderPath.endsWith('/') ? folderPath : folderPath + '/';
202
+ files = files.filter(f => (f.path ?? '').startsWith(prefix));
203
+ }
204
+ return this.convertResults(files, entry.Account, query);
173
205
  }
174
206
  catch (error) {
175
207
  const msg = error instanceof Error ? error.message : String(error);