{"version":3,"sources":["./src/utils/ResultListUtils.ts","./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","./src/ui/DynamicFacet/DynamicFacet.ts","./src/utils/DependsOnManager.ts","./src/controllers/DynamicFacetRequestBuilder.ts","./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeader.ts","./src/rest/Facet/FacetRequest.ts","./src/ui/ResultList/ResultListRenderer.ts","./src/ui/ResponsiveComponents/ResponsiveFacetColumn.ts","./sass/DynamicFacet/_DynamicFacet.scss","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueMoreLessButton.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValue.ts","./src/ui/DynamicFacetManager/DynamicFacetManager.ts","./src/ui/Facet/FacetUtils.ts","./src/ui/Templates/TableTemplate.ts","./src/ui/FocusTrap/FocusTrap.ts","./src/ui/Templates/DefaultRecommendationTemplate.ts","./src/ui/Templates/TemplateToHtml.ts","./src/ui/Templates/CoreHelpers.ts","./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeaderButton.ts","./sass/DynamicFacet/_DynamicFacetBreadcrumbs.scss","./src/rest/Facet/FacetSortCriteria.ts","./src/ui/Combobox/Combobox.ts","./sass/DynamicFacetSearch/_DynamicFacetSearch.scss","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueCheckbox.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValues.ts","./src/controllers/DynamicFacetQueryController.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueRenderer.ts","./sass/_Result.scss","./sass/_ResultFrame.scss","./sass/_ResultList.scss","./src/ui/ResponsiveComponents/ResponsiveDefaultResultTemplate.ts","./src/ui/ResultList/ResultContainer.ts","./src/ui/ResultList/ResultListCardRenderer.ts","./src/ui/ResultList/ResultListTableRenderer.ts","./sass/_ResponsiveFacets.scss","./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownModalContent.ts","./src/events/FacetsMobileModeEvents.ts","./sass/DynamicFacet/_DynamicFacetHeader.scss","./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeaderCollapseToggle.ts","./src/ui/Combobox/ComboboxInput.ts","./src/ui/Combobox/ComboboxValues.ts","./sass/_Combobox.scss","./src/ui/ResponsiveComponents/ResponsiveDynamicFacets.ts","./src/ui/DynamicFacet/DynamicFacetBreadcrumbs.ts","./sass/DynamicFacet/_DynamicFacetValues.scss","./src/ui/DynamicFacetSearch/DynamicFacetSearch.ts","./src/controllers/FacetSearchController.ts","./src/ui/DynamicFacetSearch/DynamicFacetSearchValueRenderer.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueCreator.ts","./src/rest/Facet/FacetValueState.ts","./src/ui/ResponsiveComponents/ResponsiveFacetOptions.ts","./src/ui/FacetsMobileMode/FacetsMobileMode.ts","./src/ui/ResultList/ResultList.ts"],"names":[],"mappings":";;;;;;;;AAAA,yCAAiD;AACjD,2CAAyD;AACzD,mCAA2B;AAC3B,0CAAkC;AAClC,sCAAwC;AAExC;IAAA;IAuEA,CAAC;IAtEe,2CAA2B,GAAzC,UAA0C,GAAc;QACtD,IAAM,qBAAqB,GAAG,eAAe,CAAC,uBAAuB,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEnG,IAAI,qBAAqB,EAAE;YACzB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,QAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACvB,eAAe,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;SAC/C;aAAM;YACL,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,QAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;SAC1B;IACH,CAAC;IAEa,uCAAuB,GAArC,UAAsC,IAAiB;QACrD,IAAM,UAAU,GAAG,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC;IACxE,CAAC;IAEa,2BAAW,GAAzB,UAA0B,IAAiB;QACzC,IAAM,UAAU,GAAG,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9B;QAED,IAAM,uBAAuB,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAC/F,IAAI,uBAAuB,GAAG,CAAC,EAAE;YAC/B,OAAO;SACR;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,uBAAuB,CAAC,CAAC;IACnE,CAAC;IAEc,mCAAmB,GAAlC,UAAmC,IAAiB;QAClD,IAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,iBAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,QAAC,UAAU,CAAC,QAAQ,EAApB,CAAoB,CAAC,CAAC;IAC/D,CAAC;IAEc,8BAAc,GAA7B,UAA8B,IAAiB;QAC7C,OAAO,QAAE,CAAC,IAAI,CAAC;aACZ,OAAO,CAAC,MAAI,eAAe,CAAC,QAAQ,EAAI,CAAC;aACzC,GAAG,CAAC,YAAE,IAAI,OAAY,qBAAS,CAAC,GAAG,CAAC,EAAE,EAAE,uBAAU,CAAC,EAAzC,CAAyC,CAAC,CAAC;IAC1D,CAAC;IAEc,wBAAQ,GAAvB;QACE,OAAO,qBAAS,CAAC,mBAAmB,CAAC,uBAAU,CAAC,CAAC;IACnD,CAAC;IAEc,wCAAwB,GAAvC,UAAwC,GAAc;QACpD,IAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QACtC,IAAM,yBAAyB,GAAG,eAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;QAExF,yBAAyB,IAAI,eAAe,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;IAEc,+CAA+B,GAA9C,UAA+C,IAAiB;QAC9D,IAAM,+BAA+B,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CACjF,oBAAU,IAAI,QAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,EAAxC,CAAwC,CACvD,CAAC;QAEF,OAAO,+BAA+B,CAAC,MAAM,KAAK,CAAC,CAAC;IACtD,CAAC;IAEc,yCAAyB,GAAxC,UAAyC,GAAc;QACrD,IAAM,WAAW,GAAG,qBAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnE,IAAM,OAAO,GAAG,SAAO,WAAW,6CAAwC,eAAe,CAAC,QAAQ,EAAE,uGAC7D,WAAW,sCAAmC,CAAC;QAEtF,IAAI,eAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACH,sBAAC;AAAD,CAAC;AAvEY,0CAAe;;;;;;;;;;;ACL5B,0DAA2F;AAE3F;IAAA;IA4CA,CAAC;IAvCQ,+CAAqB,GAA5B,UAA6B,IAAS,EAAE,kBAAuB;QAC7D,OAAO,qDAAyB,CAAC,4BAA4B,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzH,CAAC;IAEM,8CAAoB,GAA3B,UAA4B,IAAS;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC;IAEM,+CAAqB,GAA5B,UAA6B,IAAS;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC;IAEM,wDAA8B,GAArC,UAAsC,IAAS;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC1D,CAAC;IAEM,2CAAiB,GAAxB,UAAyB,IAAS;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IAEM,6CAAmB,GAA1B,UAA2B,IAAS;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAEM,4CAAkB,GAAzB,UAA0B,IAAS;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1C,CAAC;IAEM,8CAAoB,GAA3B,UAA4B,IAAS;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC;IAEM,qDAA2B,GAAlC,UAAmC,IAAS;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACnD,CAAC;IAEM,uDAA6B,GAApC,UAAqC,IAAS;QAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtD,CAAC;IA1Cc,4CAAkB,GAAW,kBAAkB,CAAC;IAChD,6CAAmB,GAAW,oBAAoB,CAAC;IACnD,sDAA4B,GAAW,4BAA4B,CAAC;IAyCrF,gCAAC;CAAA;AA5CY,8DAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHtC,yBAA4C;AAE5C,0CAA0D;AAC1D,mCAAqC;AACrC,6CAAqD;AACrD,yCAA8C;AAE9C,gDAA4D;AAC5D,8CAAwD;AACxD,uDAAwF;AACxF,yDAA0F;AAC1F,yDAAoE;AACpE,oDAA6E;AAC7E,oDAA6E;AAC7E,4CAA4G;AAC5G,gDAA+D;AAC/D,6DAA4F;AAC5F,qCAA0C;AAC1C,sCAA8E;AAC9E,sCAA2C;AAG3C,mDAA4F;AAC5F,uCAA0C;AAC1C,4CAAsD;AACtD,iDAA+F;AAC/F,wDAA4H;AAK5H,oDAA8E;AAC9E,iDAA8D;AAE9D,8CAA0D;AAC1D,kDAA2G;AAC3G,0DAAyF;AACzF,sCAA2C;AAC3C,2CAAiD;AAEjD;;;;;;;;;;;;;;;GAeG;AACH;IAAkC,gCAAS;IAiRzC;;;;;;OAMG;IACH,sBACS,OAAoB,EAC3B,OAA8B,EAC9B,QAA6B,EAC7B,OAAiC;QAAjC,oCAAkB,YAAY,CAAC,EAAE;QAJnC,YAME,kBAAM,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,SAclC;QAnBQ,aAAO,GAAP,OAAO,CAAa;QAzBrB,8BAAwB,GAAG,IAAI,CAAC;QAWjC,yBAAmB,GAAG,KAAK,CAAC;QAE5B,oBAAc,GAAG,IAAI,CAAC;QACtB,4BAAsB,GAAG,IAAI,CAAC;QAC9B,8BAAwB,GAAG,KAAK,CAAC;QAyZhC,qCAA+B,GAAG,UAAC,mBAA6B;YACtE,IAAM,qBAAqB,GAAG,KAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YACzD,IAAM,wBAAwB,GAAG,mBAAmB,CAAC,MAAM,CAAC,eAAK,IAAI,YAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAtB,CAAsB,CAAC,CAAC;YAE7F,IAAM,cAAc,GAAG,uBAAU,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;YACnF,IAAM,gBAAgB,GAAG,uBAAU,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;YAErF,IAAI,aAAK,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE;gBACzC,KAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;aAC3C;YAED,IAAI,aAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE;gBAC3C,KAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;aAC/C;QACH,CAAC,CAAC;QAvZA,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAErF,KAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,KAAI,CAAC,eAAe,EAAE,CAAC;QACvB,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,KAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,KAAI,CAAC,UAAU,EAAE,CAAC;QAClB,KAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,OAAO,CAAC,cAAc,IAAI,KAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAElF,iDAAuB,CAAC,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE,KAAI,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC;;IAC9D,CAAC;IAED,sBAAW,mCAAS;aAApB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;;;OAAA;IAED,sBAAW,mCAAS;aAApB;YACE,OAAO,wBAAS,CAAC,QAAQ,CAAC;QAC5B,CAAC;;;OAAA;IAED;;;;;;;OAOG;IACI,kCAAW,GAAlB,UAAmB,KAAa;QAC9B,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACI,2CAAoB,GAA3B,UAA4B,MAAgB;QAA5C,iBAQC;QAPC,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,eAAK;YAClB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACI,oCAAa,GAApB,UAAqB,KAAa;QAChC,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,uCAAgB,GAAvB,UAAwB,KAAa;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACI,6CAAsB,GAA7B,UAA8B,MAAgB;QAA9C,iBAQC;QAPC,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,eAAK;YAClB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACI,wCAAiB,GAAxB,UAAyB,KAAa;QACpC,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,UAAU,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,8CAAuB,GAA9B,UAA+B,KAAa;QAC1C,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,+CAAwB,GAA/B,UAAgC,KAAa;QAC3C,OAAO,uBAAU,CAAC,+BAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACpH,CAAC;IAED;;;;;OAKG;IACI,qCAAc,GAArB,UAAsB,wBAAsD;QAA5E,iBAKC;QALqB,sEAA2B,IAAI,CAAC,OAAO,CAAC,cAAc;QAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,2BAA2B,CAAC,+BAA+B,CAAC,wBAAwB,CAAC,CAAC;QAC3F,IAAI,CAAC,uBAAuB,CAAC,cAAM,YAAI,CAAC,6BAA6B,CAAC,kDAAwB,CAAC,oBAAoB,CAAC,EAAjF,CAAiF,CAAC,CAAC;IACxH,CAAC;IAED;;;;OAIG;IACI,qCAAc,GAArB;QAAA,iBAKC;QAJC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,2BAA2B,CAAC,4BAA4B,EAAE,CAAC;QAChE,IAAI,CAAC,uBAAuB,CAAC,cAAM,YAAI,CAAC,6BAA6B,CAAC,kDAAwB,CAAC,oBAAoB,CAAC,EAAjF,CAAiF,CAAC,CAAC;IACxH,CAAC;IAED;;;;;;OAMG;IACI,4BAAK,GAAZ;QACE,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,qCAAc,GAArB;QACE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,6BAAM,GAAb;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uGAAmG,CAAC,CAAC;SAC9H;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,+BAAQ,GAAf;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yGAAqG,CAAC,CAAC;SAChI;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO;SACR;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACI,oDAA6B,GAApC;QACE,IAAI,CAAC,2BAA2B,CAAC,6BAA6B,EAAE,CAAC;IACnE,CAAC;IAED;;;;;;;;OAQG;IACI,iDAA0B,GAAjC;QACE,IAAI,CAAC,2BAA2B,CAAC,0BAA0B,EAAE,CAAC;IAChE,CAAC;IAEM,qDAA8B,GAArC;QACE,IAAI,CAAC,2BAA2B,CAAC,8BAA8B,EAAE,CAAC;IACpE,CAAC;IAEM,kCAAW,GAAlB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAClC,iCAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxC;IACH,CAAC;IAED,sBAAW,6CAAmB;aAA9B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAU,IAAI,iBAAU,CAAC,mBAAmB,EAA9B,CAA8B,CAAC,CAAC;QACpF,CAAC;;;OAAA;IAED,sBAAW,kDAAwB;aAAnC;YACE,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACpC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;gBACnB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,aAAa,EAAE,IAAI,CAAC,QAAQ;aAC7B,CAAC;QACJ,CAAC;;;OAAA;IAED,sBAAW,iDAAuB;aAAlC;YACE,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACzC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;gBACxB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC/B,CAAC;QACJ,CAAC;;;OAAA;IAEM,wCAAiB,GAAxB,UAAyB,WAAkC,EAAE,SAA8B;QACzF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAsB,WAAW,EAAE,SAAS,CAAC,CAAC;IAClF,CAAC;IAEM,+CAAwB,GAA/B,UAAgC,YAA0B;QACxD,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5B,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAC1E,CAAC;IAEM,4CAAqB,GAA5B;QACE,IAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACjE,YAAY,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvE,CAAC;IAEM,2CAAoB,GAA3B;QACE,OAAO,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC;IAED,sBAAW,yCAAe;aAA1B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QACrC,CAAC;;;OAAA;IAEO,sCAAe,GAAvB;QAAA,iBAKC;QAJC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,WAAW,EAAE,cAAM,YAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,iBAAiB,EAAE,UAAC,IAAiC,IAAK,YAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAClI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,oBAAoB,EAAE,UAAC,IAA4B,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAArC,CAAqC,CAAC,CAAC;QACnI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,UAAU,EAAE,cAAM,YAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;IAC3E,CAAC;IAEO,2CAAoB,GAA5B;QACE,IAAI,CAAC,mBAAmB,GAAG,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAY,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvF,CAAC;IAES,2CAAoB,GAA9B;QAAA,iBAOC;QANC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAgB,CAAC,kBAAkB,EAAE,UAAC,IAAkC;gBAC9F,YAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;YAAnC,CAAmC,CACpC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAgB,CAAC,eAAe,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;SAC/E;IACH,CAAC;IAES,iCAAU,GAApB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,uCAAkB,CAAC,IAAI,EAAE,mDAAwB,CAAC,CAAC;IACvE,CAAC;IAEO,+CAAwB,GAAhC;QACE,IAAM,gBAAgB,GAAG,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAES,sDAA+B,GAAzC;QACE,IAAI,CAAC,2BAA2B,GAAG,IAAI,yDAA2B,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEO,8CAAuB,GAA/B,UAAgC,IAAiC;QAC/D,mFAAmF;QACnF,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,OAAO;SACR;QAED,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,yCAAkB,GAA1B,UAA2B,OAAsB;QAC/C,+EAA+E;QAC/E,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,OAAO;SACR;QAED,IAAI,aAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;SACnC;QAED,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEM,yCAAkB,GAAzB,UAA0B,OAAsB;QAAhD,iBAgBC;QAfC,IAAM,KAAK,GAAG,sBAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,IAAM,aAAa,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAElE,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAM,OAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,kBAAK,CAAC,cAAM,YAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAK,CAAC,EAAxB,CAAwB,CAAC,CAAC;SACvC;IACH,CAAC;IAEO,kCAAW,GAAnB,UAAoB,aAA6B;QAC/C,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SACpD;IACH,CAAC;IAEO,iCAAU,GAAlB;QACE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,8CAAuB,GAA/B,UAAgC,IAAgC;QAC9D,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,OAAO;SACR;QAED,IAAM,mBAAmB,GAAa,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChF,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAO;SACR;QAED,IAAI,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAkBO,+CAAwB,GAAhC,UAAiC,IAAkC;QACjE,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAChC,OAAO;SACR;QAED,IAAM,WAAW,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEO,2CAAoB,GAA5B;QAAA,iBAOC;QANC,IAAM,SAAS,GAAoB;YACjC,KAAK,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY;YACzB,GAAG,EAAE,IAAI;SACV,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAEM,gCAAS,GAAhB;QACE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,6CAAsB,GAA9B;QACE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,4CAAqB,GAA7B;QAAA,iBAWC;QAVC,IAAI,CAAC,MAAM,GAAG,IAAI,uCAAkB,CAAC;YACnC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3C,KAAK,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY;YACzB,cAAc,EAAE,cAAM,YAAI,CAAC,cAAc,EAAE,EAArB,CAAqB;YAC3C,QAAQ,EAAE,cAAM,YAAI,CAAC,QAAQ,EAAE,EAAf,CAAe;YAC/B,MAAM,EAAE,cAAM,YAAI,CAAC,MAAM,EAAE,EAAb,CAAa;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,4CAAqB,GAA7B;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,KAAK,EAAE;YAC5C,OAAO;SACR;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,4CAAqB,GAA7B;QACE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAEO,4CAAqB,GAA7B;QACE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/E,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACvC,CAAC;IAEO,uCAAgB,GAAxB;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,+BAA+B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5E,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAChF,CAAC;IAEO,0CAAmB,GAA3B;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,KAAK,EAAE;YAC5C,OAAO;SACR;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;SAClE;QAED,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpH,CAAC;IAEM,sCAAe,GAAtB,UAAuB,kBAA+B;QACpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAM,OAAO,GAAkB,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,sBAAE,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;QAEhH,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEY,8CAAuB,GAApC,UAAqC,kBAA+B;;;;;;wBAClE,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBAC1B,kBAAkB,IAAI,kBAAkB,EAAE,CAAC;;;;wBAGzB,qBAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE;;wBAAlE,OAAO,GAAG,SAAwD;wBACxE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;;;;wBAEjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;;;;;;KAE7B;IAEO,yCAAkB,GAA1B;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,0CAAmB,GAA3B;QACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;QAChH,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,oDAA6B,GAArC;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;SACrG;IACH,CAAC;IAEO,oDAA6B,GAArC,UAAsC,KAA4B;QAChE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAsB,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7G,CAAC;IAEO,4BAAK,GAAb;QAAA,iBAKC;QAJC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,sBAAsB,EAAE,EAA7B,CAA6B,CAAC,CAAC;IAC5D,CAAC;IAEO,6CAAsB,GAA9B;QACE,IAAI,CAAC,iBAAiB,CAAC,kDAAwB,CAAC,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtG,CAAC;IA5zBM,eAAE,GAAG,cAAc,CAAC;IACpB,qBAAQ,GAAG,cAAM,qCAAc,CAAC,EAAE,YAAY,gBAAE,CAAC,EAAhC,CAAgC,CAAC;IAEzD;;;OAGG;IACI,oBAAO,gBACT,+CAAsB;QAEzB;;;;;;;;;;;;;;;;;WAiBG;QACH,EAAE,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;YACrC,cAAc,EAAE,UAAC,KAAU,EAAE,OAA6B;gBAAzC,kCAAU;gBACzB,IAAM,aAAa,GAAG,EAAE,CAAC;gBACzB,IAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;gBAC9D,IAAI,aAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE;oBAC1C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;iBACnD;gBAED,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,eAAe;SACzB,CAAC;QAEF;;;;;;WAMG;QACH,KAAK,EAAE,mCAAgB,CAAC,0BAA0B,CAAC;YACjD,eAAe,EAAE,cAAM,kBAAC,CAAC,SAAS,CAAC,EAAZ,CAAY;YACnC,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF;;;;;;;;;;WAUG;QACH,KAAK,EAAE,mCAAgB,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAEtF;;;;;;;;;;;;;;;;;;WAkBG;QACH,YAAY,EAAqB,mCAAgB,CAAC,iBAAiB,CAAC;YAClE,cAAc,EAAE,eAAK;gBACnB,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,SAAS,CAAC;iBAClB;gBAED,IAAI,uCAAmB,CAAC,KAAK,CAAC,EAAE;oBAC9B,OAAO,KAAK,CAAC;iBACd;gBAED,IAAI,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;gBAChH,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,SAAS;SACnB,CAAC;QAEF;;;;;;;;;;;;;;WAcG;QACH,UAAU,EAAE,mCAAgB,CAAC,eAAe,CAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAE5E;;;;;WAKG;QACH,cAAc,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAEzG;;WAEG;QACH,cAAc,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAErG;;WAEG;QACH,iBAAiB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAExG;;;;WAIG;QACH,cAAc,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAErG;;;;;;;;;WASG;QACH,iBAAiB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAEhF;;;;WAIG;QACH,+BAA+B,EAAE,mCAAgB,CAAC,kBAAkB,CAAC;YACnE,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QAEF;;WAEG;QACH,kBAAkB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAEpI;;;;WAIG;QACH,mBAAmB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAE1G;;WAEG;QACH,0BAA0B,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;YAC7D,eAAe,EAAE,cAAM,QAAC,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAtC,CAAsC;YAC7D,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,eAAe;SACzB,CAAC;QAEF;;;;;;;WAOG;QACH,YAAY,EAAE,mCAAgB,CAAC,eAAe,CAAqB,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAExF;;;;;;;;WAQG;QACH,SAAS,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAE3E;;;;;;;;;;;WAWG;QACH,kBAAkB,EAAE,mCAAgB,CAAC,iBAAiB,CACpD;YACE,OAAO,IAAI,CAAC;QACd,CAAC,EACD,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,CAClD;QAED;;;;;;;;WAQG;QACH,cAAc,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAErF;;;;;;;;;;WAUG;QACH,gBAAgB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,IAC/E;IAikBJ,mBAAC;CAAA,CA9zBiC,qBAAS,GA8zB1C;AA9zBY,oCAAY;AAg0BzB,+BAAc,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;AACzD,YAAY,CAAC,QAAQ,EAAE,CAAC;;;;;;;;;;;ACz3BxB,0CAAwC;AACxC,qCAAkE;AAClE,gDAAoD;AACpD,mCAA2B;AAC3B,qDAAsE;AAqBtE;IAGE,0BAAoB,KAAsB;QAA1C,iBAMC;QANmB,UAAK,GAAL,KAAK,CAAiB;QACxC,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,kBAAW,CAAC,aAAa,EAAE,cAAM,YAAI,CAAC,mBAAmB,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAE3G,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,2CAAoB,CAAC,6BAA6B,EAAE,cAAM,YAAI,CAAC,mBAAmB,EAAE,EAA1B,CAA0B,CAAC,CAAC;SACzH;IACH,CAAC;IAEO,8CAAmB,GAA3B;QAAA,iBAOC;QANC,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;QACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1D,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,cAAM,YAAI,CAAC,2BAA2B,EAAE,EAAlC,CAAkC,CAAC,CAAC;SACtF;IACH,CAAC;IAEO,sDAA2B,GAAnC;QACE,IAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;IACH,CAAC;IAEO,gCAAK,GAAb,UAAc,SAAoC;QAChD,IAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAG,EAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7B,CAAC;IAEO,uCAAY,GAApB,UAAqB,SAAoC;QACvD,IAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;QAC9C,OAAO,SAAS,CAAC,CAAC,CAAC,KAAG,SAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAEO,gDAAqB,GAA7B,UAA8B,SAAoC;QAAlE,iBAKC;QAJC,IAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC7D,OAAO,eAAe,IAAI,uBAAU,CAAC,eAAe,CAAC;YACnD,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,cAAM,YAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,KAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAA1E,CAA0E,CAAC;IACvF,CAAC;IAEO,kDAAuB,GAA/B,UAAgC,SAAoC;QAClE,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,OAAO,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,CAAC;IAEO,0CAAe,GAAvB,UAAwB,SAAoC;QAC1D,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IACpC,CAAC;IAEO,oDAAyB,GAAjC,UAAkC,OAAe;QAC/C,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,sBAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,sBAAY,kDAAoB;aAAhC;YACE,OAAO,iCAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAgC,CAAC;QACxH,CAAC;;;OAAA;IAEO,yCAAc,GAAtB,UAAuB,SAAoC;QAA3D,iBAWC;QAVC,IAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAC7C,8BAAoB,IAAI,YAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,KAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAjE,CAAiE,CAC1F,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/F,OAAO,IAAI,CAAC;SACb;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,sBAAY,6CAAe;aAA3B;YAAA,iBAIC;YAHC,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CACrC,iCAAuB,IAAI,YAAI,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAzE,CAAyE,CACrG,CAAC;QACJ,CAAC;;;OAAA;IAEO,8CAAmB,GAA3B;QAAA,iBAWC;QAVC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,wBAAc;YACzC,IAAM,SAAS,GAAG,KAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAC7D,IAAI,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC7B,QAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;gBACvE,OAAO,cAAc,CAAC,MAAM,EAAE,CAAC;aAChC;YAED,cAAc,CAAC,OAAO,EAAE,CAAC;YACzB,QAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAW,gDAAkB;aAA7B;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QACvC,CAAC;;;OAAA;IAED,sBAAW,+DAAiC;aAA5C;YAAA,iBAEC;YADC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAc,IAAI,YAAI,CAAC,yBAAyB,CAAC,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAA1D,CAA0D,CAAC,CAAC;QACjH,CAAC;;;OAAA;IACH,uBAAC;AAAD,CAAC;AAvGY,4CAAgB;;;;;;;;;;;;;;;;;;;ACvB7B,qCAAuC;AAYvC;IACE,oCAAoB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAEvC,6DAAwB,GAA/B;QACE,oBACK,IAAI,CAAC,OAAO,IACf,gBAAgB,EAAE,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,IACzD;IACJ,CAAC;IACH,iCAAC;AAAD,CAAC;AATY,gEAA0B;AAWvC,mCAA0C,OAAuC;IACvE,+CAAgB,CAAa;IACrC,OAAO,aAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACvE,CAAC;AAHD,8DAGC;;;;;;;;;;;AC5BD,yBAAkD;AAClD,mCAA6C;AAC7C,uCAA6C;AAC7C,yCAAmD;AACnD,uCAA+C;AAC/C,0DAAsE;AACtE,kEAAsF;AAYtF,iCAAwC,OAAe;IACrD,OAAU,OAAO,mBAAgB,CAAC;AACpC,CAAC;AAFD,0DAEC;AAED;IASE,4BAAmB,OAAmC;QAAnC,YAAO,GAAP,OAAO,CAA4B;QACpD,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACpD,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;IACvD,CAAC;IAEO,8CAAiB,GAAzB;QAAA,iBAUC;QATC,IAAI,CAAC,WAAW,GAAG,IAAI,mDAAwB,CAAC;YAC9C,KAAK,EAAE,WAAC,CAAC,OAAO,CAAC;YACjB,SAAS,EAAE,WAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACzC,SAAS,EAAE,kCAAkC;YAC7C,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,cAAM,YAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAApB,CAAoB;SACnC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IAClC,CAAC;IAEO,iDAAoB,GAA5B;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,mEAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IACrC,CAAC;IAEO,2CAAc,GAAtB;QAAA,iBAIC;QAHC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACrD,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC3C,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAA7B,CAA6B,CAAC,CAAC;IAClE,CAAC;IAEM,2CAAc,GAArB,UAAsB,WAAoB;QACxC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC/E,CAAC;IAEO,wCAAW,GAAnB;QACE,OAAO,QAAE,CACP,IAAI,EACJ;YACE,SAAS,EAAE,kCAAkC;YAC7C,SAAS,EAAE,KAAG,WAAC,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAG;YACnD,EAAE,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;SAC7C,EACD,QAAE,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAChF,CAAC;IACJ,CAAC;IAEO,gDAAmB,GAA3B;QACE,IAAI,CAAC,aAAa,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,2CAA2C,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnH,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,+CAA+C,CAAC,CAAC;QACxG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IAC/B,CAAC;IAEM,wCAAW,GAAlB,UAAmB,OAAgB;QACjC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEM,wCAAW,GAAlB;QAAA,iBAGC;QAFC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,cAAM,YAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAA/B,CAA+B,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAC1H,CAAC;IAEM,wCAAW,GAAlB;QACE,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IA5Ea,mCAAgB,GAAG,IAAI,CAAC;IA6ExC,yBAAC;CAAA;AA9EY,gDAAkB;;;;;;;;;;;ACjB/B;;GAEG;AACH,IAAY,SAiBX;AAjBD,WAAY,SAAS;IACnB;;OAEG;IACH,kCAAqB;IACrB;;OAEG;IACH,8CAAiC;IACjC;;OAEG;IACH,oCAAuB;IACvB;;OAEG;IACH,0CAA6B;AAC/B,CAAC,EAjBW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAiBpB;;;;;;;;;;;ACxBD,yCAA8C;AAE9C,+BAAiC;AAEjC;IACE,4BAAsB,iBAAqC,EAAY,sBAAgC;QAAjF,sBAAiB,GAAjB,iBAAiB,CAAoB;QAAY,2BAAsB,GAAtB,sBAAsB,CAAU;IAAG,CAAC;IAE3G,0CAAa,GAAb,UACE,cAA6B,EAC7B,MAAc,EACd,uBAA+E;QAHjF,iBAqBC;QAnBC,uCAAc;QAGd,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACnH,UAAC,EAAoB;gBAAnB,iBAAS,EAAE,eAAO;YAClB,IAAM,eAAe,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YAC1D,IAAI,SAAS,EAAE;gBACb,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aACxC;YACD,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,uBAAa;gBAClC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBAC3C,uBAAuB,CAAC,qBAAS,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,EAAE;gBACX,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aACtC;YACD,KAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACvE,CAAC,CACF,CAAC;IACJ,CAAC;IAES,6CAAgB,GAA1B,UAA2B,cAA6B,EAAE,MAAe;QACvE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAES,2CAAc,GAAxB,UAAyB,cAA6B,EAAE,MAAe;QACrE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC5D,CAAC;IACH,yBAAC;AAAD,CAAC;AAjCY,gDAAkB;;;;;;;;;;;ACL/B,yBAAmC;AACnC,4CAA+E;AAC/E,sCAA2C;AAC3C,uCAA0C;AAC1C,mCAA0C;AAC1C,qCAA0C;AAC1C,yCAA8C;AAC9C,gDAAqE;AACrE,qDAA8D;AAC9D,4DAA+H;AAC/H,2DAAwE;AACxE,oDAA6E;AAC7E,0DAAuH;AACvH,0DAAyF;AACzF,0CAA4C;AAC5C,gDAA8D;AAC9D,gEAAqG;AACrG,iDAAkG;AAClG,wDAA6E;AAE7E;IAiCE,+BAAmB,SAAc,EAAS,EAAU,EAAE,OAAoC,EAAE,kBAAuC;QAAhH,cAAS,GAAT,SAAS,CAAK;QAAS,OAAE,GAAF,EAAE,CAAQ;QAxB5C,4BAAuB,GAAU,EAAE,CAAC;QACpC,mCAA8B,GAAc,EAAE,CAAC;QAwBrD,IAAI,CAAC,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,iCAAe,EAAE,KAAK,CAAC,CAAC;QACjG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACvD,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IA3Ba,0BAAI,GAAlB,UAAmB,8BAA8B,EAAE,IAAiB,EAAE,SAAS,EAAE,OAAoC,EAAE,EAAU;QAC/H,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,yDAA2B,CAAC,QAAQ,CAAC,qBAAqB,EAAE,QAAE,CAAC,IAAI,CAAC,EAAE,uBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACnH,yDAA2B,CAAC,QAAQ,CAAC,8BAA8B,EAAE,QAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzG,CAAC;IAEc,gCAAU,GAAzB,UAA0B,IAAiB;QACzC,IAAM,MAAM,GAAG,QAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;SACnG;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAaD,sBAAY,4DAAyB;aAArC;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAmB,mCAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpH,CAAC;;;OAAA;IAED,sBAAY,0DAAuB;aAAnC;YACE,IAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;YACjE,IAAI,CAAC,yBAAyB,EAAE;gBAC9B,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;gBACnI,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,gBAAgB,EAAE,KAAK;oBACvB,uBAAuB,EAAE,IAAI;iBAC9B,CAAC;aACH;YAED,OAAO,yBAAyB,CAAC,OAAO,CAAC;QAC3C,CAAC;;;OAAA;IAEM,iDAAiB,GAAxB,UAAyB,MAAiB;QACxC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,mDAAmB,GAA1B;QACE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAEM,iDAAiB,GAAxB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,qDAAyB,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC5F,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;aAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,qDAAyB,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACnG,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;SAClD;IACH,CAAC;IAEM,oDAAoB,GAA3B;QACE,iBAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,mBAAS;YAC1C,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,yBAAyB,EAAE;gBAC5E,SAAS,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6CAAa,GAArB;QACE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;gBACtB,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,2CAAoB,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CACjH,CAAC;SACH;QACD,QAAQ,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE;YACrE,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;oBACtB,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAChI,CAAC;YACJ;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAEO,iDAAiB,GAAzB;QACE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAI,yDAA2B,CAAC,iCAAmC,CAAC,CAAC,CAAC,MAAM,CACjG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CACxC,CAAC;QACF,qDAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAEO,iDAAiB,GAAzB;QACE,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxB,qDAAyB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAEO,6CAAa,GAArB,UAAsB,kBAAuC;QAC3D,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClD,IAAI,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,IAAI,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,uCAAkB,CAAC,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,EAAE;YACzD,QAAQ,CAAC,sBAAsB,EAAE,CAAC;SACnC;QACD,IAAI,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE;YACjD,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;SAC5E;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,oDAAoB,GAA5B;QAAA,iBAiBC;QAhBC,IAAI,sBAAsB,GAAG,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC5E,IAAI,iBAAiB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,wCAAwC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACnH,IAAI,QAAQ,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,8BAA8B,EAAE,CAAC,CAAC;QACxE,QAAQ,CAAC,IAAI,CAAC,WAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAC/B,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,sBAAsB,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;YACxC,OAAO,IAAI,+DAA8B,CAAC,OAAO,EAAE,sBAAsB,EAAE,WAAC,CAAC,sBAAsB,CAAC,EAAE,cAAM,YAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAArB,CAAqB,CAAC,CAAC;SACpI;QACD,OAAO,IAAI,qDAAyB,CAClC,OAAO,EACP,sBAAsB,EACtB,IAAI,CAAC,SAAS,EACd,qBAAqB,CAAC,kBAAkB,EACxC,qBAAqB,CAAC,oBAAoB,CAC3C,CAAC;IACJ,CAAC;IAEO,mDAAmB,GAA3B;QACE,IAAI,qBAAqB,GAAG,QAAE,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,OAAO,GAAG,QAAE,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvC,qBAAqB,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,cAAc,GAAG,IAAI,mDAAwB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAClF,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,oDAAoB,GAA5B,UAA6B,iBAAyB;QACpD,IAAM,0BAA0B,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;QAC3E,IAAI,CAAC,UAAU,GAAG,aAAK,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,0BAA0B,CAAC;IACzH,CAAC;IAEO,sDAAsB,GAA9B;QACE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAEO,mDAAmB,GAA3B;QAAA,iBAIC;QAHC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,SAAS,EAAE,cAAM,YAAI,CAAC,eAAe,EAAE,EAAtB,CAAsB,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,YAAY,EAAE,UAAC,CAAQ,EAAE,IAA4B,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC,CAAC;QACvH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,UAAU,EAAE,cAAM,YAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,CAAC,CAAC;IAC3E,CAAC;IAEO,yDAAyB,GAAjC;QAAA,iBAcC;QAbC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CACtC,QAAQ,EACR,qBAAQ,CAAC;YACP,iBAAI,CAAC,KAAI,CAAC,uBAAuB,EAAE,mBAAS;gBAC1C,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;gBACxC,IAAI,WAAW,IAAI,WAAW,CAAC,yBAAyB,IAAI,CAAC,KAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;oBACnH,SAAS,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;iBACvF;qBAAM,IAAI,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,yBAAyB,EAAE;oBACzE,SAAS,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;iBAC/C;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,CAC/C,CAAC;IACJ,CAAC;IAEO,0DAA0B,GAAlC;QACE,IAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACjE,IAAI,yBAAyB,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CACjC,cAAM,eAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,+CAAsB,CAAC,WAAW,CAAC,EAAjF,CAAiF,EACvF,yBAAyB,CAC1B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAClC,cAAM,eAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,+CAAsB,CAAC,WAAW,CAAC,EAAjF,CAAiF,EACvF,yBAAyB,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,iEAAiC,GAAzC;QAAA,iBAMC;QALC,iBAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,UAAC,SAAS,EAAE,KAAK;YAClD,IAAI,SAAS,CAAC,OAAO,EAAE;gBACrB,SAAS,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;aACjF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4DAA4B,GAApC;QACE,iBAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,mBAAS;YAC1C,IAAI,SAAS,CAAC,OAAO,EAAE;gBACrB,SAAS,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC5C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6DAA6B,GAArC,UAAsC,kBAA+B;QACnE,IAAI,QAAQ,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAC9D,IAAI,WAAW,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QACpE,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QACvF,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAE7F,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjD,OAAO,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,cAAc,CAAC;IAClE,CAAC;IAEO,sDAAsB,GAA9B;QACE,IAAI,mBAA2B,CAAC;QAChC,iCAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,eAAK;YACvG,IAAM,OAAO,GAAG,KAAK,CAAC,OAAsC,CAAC;YAE7D,IAAI,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,EAAE;gBACvD,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;aACnD;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE;YACxB,mBAAmB,GAAG,WAAC,CAAC,qBAAqB,CAAC,mCAAmC,CAAC,CAAC;SACpF;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,+CAAe,GAAvB;QACE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEO,gDAAgB,GAAxB;QACE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEO,kDAAkB,GAA1B,UAA2B,IAA4B;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SACrC;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SACrC;IACH,CAAC;IA9Qa,0CAAoB,GAAG,GAAG,CAAC;IAE1B,4BAAM,GAAG,IAAI,eAAM,CAAC,kBAAkB,CAAC,CAAC;IACxC,wCAAkB,GAAW,GAAG,CAAC;IACjC,0CAAoB,GAAW,IAAI,CAAC,CAAC,oDAAoD;IACzF,yDAAmC,GAAG,SAAS,CAAC;IA0QjE,4BAAC;CAAA;AAhRY,sDAAqB;;;;;;;;ACpBlC,yC;;;;;;;;;;ACAA,mCAAwC;AASxC;IAGE,6CAAY,OAAgD;QAC1D,IAAM,GAAG,GAAG,QAAE,CACZ,QAAQ,EACR;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,QAAQ;SACf,EACD,OAAO,CAAC,KAAK,CACd,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,cAAO,CAAC,MAAM,EAAE,EAAhB,CAAgB,CAAC,CAAC;IAC1C,CAAC;IACH,0CAAC;AAAD,CAAC;AAjBY,kFAAmC;;;;;;;;;;;;;;;;;;;ACThD,wCAAuC;AAEvC,gDAAsE;AACtE,wDAAwG;AACxG,uCAA6C;AAE7C,8CAA6D;AAG7D;IAYE,2BAAY,UAAwC,EAAU,KAAoB,EAAE,aAAkC;QAAxD,UAAK,GAAL,KAAK,CAAe;QAF1E,YAAO,GAAgB,IAAI,CAAC;QAGlC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,sBAAW,yCAAU;aAArB;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,CAAC;QACjD,CAAC;;;OAAA;IAED,sBAAW,qCAAM;aAAjB;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,IAAI,CAAC;QAC7C,CAAC;;;OAAA;IAEM,wCAAY,GAAnB;QACE,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5E,CAAC;IAEM,kCAAM,GAAb;QACE,IAAI,CAAC,KAAK,GAAG,iCAAe,CAAC,QAAQ,CAAC;IACxC,CAAC;IAEM,oCAAQ,GAAf;QACE,IAAI,CAAC,KAAK,GAAG,iCAAe,CAAC,IAAI,CAAC;IACpC,CAAC;IAEM,kCAAM,GAAb,UAAc,GAAgC;QAC5C,IAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxD,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC;IAEM,iCAAK,GAAZ;QACE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO;SACR;QACD,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAc,wBAAwB,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,sBAAW,6CAAc;aAAzB;YACE,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;;;OAAA;IAED,sBAAW,8CAAe;aAA1B;YACE,IAAM,WAAW,GAAG,WAAC,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAEhF,OAAU,IAAI,CAAC,YAAY,SAAI,WAAa,CAAC;QAC/C,CAAC;;;OAAA;IAED,sBAAY,sCAAO;aAAnB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,wBAAS,CAAC,QAAQ,CAAC;QACrD,CAAC;;;OAAA;IAED,sBAAY,6CAAc;aAA1B;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAI,IAAI,CAAC,KAAK,UAAK,IAAI,CAAC,GAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAClE,CAAC;;;OAAA;IAED,sBAAY,8CAAe;aAA3B;YACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO,IAAI,CAAC;aACb;YAED,OAAO;gBACL,KAAK,EAAE,KAAG,IAAI,CAAC,KAAO;gBACtB,GAAG,EAAE,KAAG,IAAI,CAAC,GAAK;gBAClB,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAC;QACJ,CAAC;;;OAAA;IAED,sBAAW,kDAAmB;aAA9B;YACE,oBACK,IAAI,CAAC,KAAK,CAAC,wBAAwB,EACnC,IAAI,CAAC,eAAe,IACvB,KAAK,EAAE,IAAI,CAAC,cAAc,EAC1B,aAAa,EAAE,IAAI,CAAC,QAAQ,EAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,IACjB;QACJ,CAAC;;;OAAA;IAED,sBAAY,6CAAc;aAA1B;YACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO,IAAI,CAAC;aACb;YAED,OAAO;gBACL,eAAe,EAAE,KAAG,IAAI,CAAC,KAAO;gBAChC,aAAa,EAAE,KAAG,IAAI,CAAC,GAAK;gBAC5B,sBAAsB,EAAE,IAAI,CAAC,YAAY;aAC1C,CAAC;QACJ,CAAC;;;OAAA;IAED,sBAAW,iDAAkB;aAA7B;YACE,oBACK,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAClC,IAAI,CAAC,cAAc,IACtB,UAAU,EAAE,IAAI,CAAC,cAAc,IAC/B;QACJ,CAAC;;;OAAA;IAEM,sDAA0B,GAAjC;QACE,IAAM,MAAM,GACV,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,kDAAwB,CAAC,kBAAkB,CAAC,CAAC,CAAC,kDAAwB,CAAC,oBAAoB,CAAC;QAExI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChE,CAAC;IAEO,kCAAM,GAAd;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,sBAAW,8CAAe;aAA1B;YACE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;YAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;;;OAAA;IACH,wBAAC;AAAD,CAAC;AA5IY,8CAAiB;;;;;;;;;;;;;;;;;;;;;ACT9B,yCAA8C;AAC9C,qDAAyE;AACzE,4CAA4G;AAC5G,6CAAqD;AACrD,0CAAsD;AAEtD,mCAAqC;AACrC,qCAA0C;AAC1C,gDAA4D;AAC5D,sCAA2C;AAC3C,8CAAwD;AACxD,gDAA8D;AAgC9D;;;;;;GAMG;AACH;IAAyC,uCAAS;IAoEhD;;;;;;OAMG;IACH,6BAAY,OAAoB,EAAS,OAAqC;QAA9E,YACE,kBAAM,OAAO,EAAE,qBAAqB,CAAC,SAKtC;QANwC,aAAO,GAAP,OAAO,CAA8B;QAlBtE,oBAAc,GAAqC,EAAE,CAAC;QAoB5D,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC5F,KAAI,CAAC,cAAc,EAAE,CAAC;QACtB,KAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,KAAI,CAAC,UAAU,EAAE,CAAC;;IACpB,CAAC;IArBD,sBAAY,8CAAa;aAAzB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,eAAK,IAAI,QAAC,KAAK,CAAC,QAAQ,EAAf,CAAe,CAAC,CAAC;QAC9D,CAAC;;;OAAA;IAED,sBAAY,gDAAe;aAA3B;YACE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,eAAK,IAAI,YAAK,CAAC,oBAAoB,EAAE,EAA5B,CAA4B,CAAC,CAAC;QAC3E,CAAC;;;OAAA;IAiBO,4CAAc,GAAtB;QACE,IAAI,CAAC,gBAAgB,IAAI,QAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5D,IAAI,CAAC,gBAAgB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,uCAAuC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/F,CAAC;IAEO,8CAAgB,GAAxB;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAEO,wCAAU,GAAlB;QAAA,iBAIC;QAHC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,2CAAoB,CAAC,6BAA6B,EAAE,cAAM,YAAI,CAAC,mCAAmC,EAAE,EAA1C,CAA0C,CAAC,CAAC;QAC9H,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,iBAAiB,EAAE,UAAC,IAAiC,IAAK,YAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAClI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,oBAAoB,EAAE,UAAC,IAA4B,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC,CAAC;IAC7H,CAAC;IAEO,4CAAc,GAAtB,UAAuB,SAAoB;QACzC,OAAO,CAAC,CAAE,SAA4C,CAAC,cAAc,CAAC;IACxE,CAAC;IAED,sBAAY,iDAAgB;aAA5B;YACE,IAAM,oBAAoB,GAAG,iCAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3F,OAAyC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5F,CAAC;;;OAAA;IAEO,iEAAmC,GAA3C;QAAA,iBAeC;QAdC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAY;YACtC,YAAY,CAAC,mBAAmB,GAAG,KAAI,CAAC;YACxC,KAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uLACkE,CAAC,CAAC;SACtF;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAEO,qDAAuB,GAA/B,UAAgC,IAAiC;QAC/D,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,sBAAY;YACrC,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,YAAY,CAAC,qBAAqB,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gDAAkB,GAA1B,UAA2B,IAA4B;QACrD,IAAI,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;SACnC;QAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,sBAAY;YACrC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAChG,IAAI,mBAAmB,EAAE;YACvB,OAAO,IAAI,CAAC,4BAA4B,EAAE,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxH,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,qCAAqC,EAAE,CAAC;QAC7C,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAEO,0DAA4B,GAApC;QAAA,iBAMC;QALC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC1B,OAAO;SACR;QAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,YAAY,EAAE,KAAK,IAAK,YAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,EAA1C,CAA0C,CAAC,CAAC;IACnG,CAAC;IAEO,yDAA2B,GAAnC,UAAoC,cAAgC;QAApE,iBAKC;QAJC,IAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,UAAC,EAAW;gBAAT,oBAAO;YAAO,YAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;QAAjC,CAAiC,CAAC,CAAC,MAAM,CAAC,aAAK,CAAC,MAAM,CAAC,CAAC;QACrH,IAAM,mBAAmB,GAAG,oBAAO,gBAAC,IAAI,CAAC,cAAc,SAAK,gBAAgB,EAAC,CAAC;QAE9E,IAAI,CAAC,cAAc,GAAO,gBAAgB,QAAK,mBAAmB,CAAC,CAAC;IACtE,CAAC;IAEO,yDAA2B,GAAnC;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7E,CAAC;IAEO,gDAAkB,GAA1B;QACE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QAEnD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAY,IAAI,eAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,EAA1C,CAA0C,CAAC,CAAC;QAExF,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,mEAAqC,GAA7C;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,6BAA6B,KAAK,CAAC,CAAC,EAAE;YACrD,OAAO;SACR;QAEK,gHAAiH,EAAhH,yBAAiB,EAAE,2BAAmB,CAA2E;QACxH,IAAI,yBAAyB,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAExG,iBAAiB,CAAC,OAAO,CAAC,sBAAY;YACpC,IAAI,yBAAyB,GAAG,CAAC,EAAE;gBACjC,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC;aAChC;YAED,IAAI,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBAC3C,YAAY,CAAC,MAAM,CAAC,IAAI,CACtB,wHAAwH,EACxH,4HAA4H,EAC5H,4DAA4D,CAC7D,CAAC;gBACF,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC;aAChC;YAED,yBAAyB,EAAE,CAAC;YAC5B,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iDAAmB,GAA3B,UAA4B,EAAU;QACpC,OAAO,iBAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAK,IAAI,YAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAvB,CAAuB,CAAC,CAAC;IACrE,CAAC;IAEO,iDAAmB,GAA3B;QACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iGAAiG,CAAC,CAAC;QACrH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,kDAAoB,GAA3B;QACE,OAAO,CAAC,CAAC,iBAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAK,IAAI,YAAK,CAAC,oBAAoB,EAAE,EAA5B,CAA4B,CAAC,CAAC;IAC5E,CAAC;IA/NM,sBAAE,GAAG,qBAAqB,CAAC;IAC3B,4BAAQ,GAAG,cAAM,qCAAc,CAAC,EAAE,mBAAmB,uBAAE,CAAC,EAAvC,CAAuC,CAAC;IAEhE;;;OAGG;IACI,2BAAO,GAAgC;QAC5C;;;;WAIG;QACH,aAAa,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAChG;;;;;;;;;WASG;QACH,QAAQ,EAAE,mCAAgB,CAAC,iBAAiB,CAA+B;YACzE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF;;;;;;;;;;WAUG;QACH,aAAa,EAAE,mCAAgB,CAAC,iBAAiB,CAAmC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF;;;;;;;;;;;WAWG;QACH,6BAA6B,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KAChG,CAAC;IA0KJ,0BAAC;CAAA,CAjOwC,qBAAS,GAiOjD;AAjOY,kDAAmB;AAmOhC,+BAAc,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AAChE,mBAAmB,CAAC,QAAQ,EAAE,CAAC;;;;;;;;;;;ACtR/B,iCAAiC;AACjC,4CAAsD;AACtD,2CAAoD;AACpD,2CAA8C;AAC9C,0CAAkD;AAClD,qCAA0C;AAC1C,mCAAqC;AACrC,+BAAgC;AAEhC,uCAA0C;AAE1C;IAAA;IAqHA,CAAC;IApHQ,sCAA2B,GAAlC,UAAmC,KAAa,EAAE,YAAqB;QACrE,OAAO,IAAI,MAAM,CAAC,yBAAW,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;IAEM,0CAA+B,GAAtC,UAAuC,KAAa,EAAE,KAAa,EAAE,YAAoC;QACvG,IAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;IAC5C,CAAC;IAEM,yCAA8B,GAArC,UAAsC,QAAgB,EAAE,KAAkC;QACxF,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC/F,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE;YAC9B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;iBAChC,KAAK,EAAE;iBACP,MAAM,CAAC,cAAI;gBACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC,CAAC;iBACD,IAAI,CAAC,eAAK;gBACT,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YACL,IACE,uBAAU,CAAC,sBAAsB,CAAS,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;gBAC7E,uBAAU,CAAC,sBAAsB,CAAS,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,EAC3E;gBACA,CAAC,CAAC,IAAI,CAAC,qBAAS,CAAC,mBAAmB,EAAE,EAAE,UAAC,KAAa,EAAE,GAAW;oBACjE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;wBAC7D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACf;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;aAAM,IACL,uBAAU,CAAC,sBAAsB,CAAS,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;YAC7E,uBAAU,CAAC,sBAAsB,CAAS,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,EAC3E;YACA,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAS,CAAC,mBAAmB,EAAE,CAAC,EAAE,cAAI;gBACrD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC,CAAC,EACF,eAAK;gBACH,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,CACF,CAAC;SACH;aAAM,IAAI,uBAAU,CAAC,sBAAsB,CAAS,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;YACnF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,eAAK;gBAC1B,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAS,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;oBAClD,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC/C;YACH,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,kCAAuB,GAA9B,UAA+B,MAAgB;QAC7C,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,eAAK;YAC1B,OAAO,aAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEM,iCAAsB,GAA7B,UACE,mBAA2B,EAC3B,eAAuB,EACvB,eAAuB,EACvB,mBAA2B;QAE3B,oDAAoD;QACpD,sFAAsF;QACtF,uHAAuH;QACvH,OAAO,mBAAmB,GAAG,eAAe,IAAI,mBAAmB,GAAG,mBAAmB,IAAI,mBAAmB,GAAG,eAAe,CAAC;IACrI,CAAC;IAEM,0CAA+B,GAAtC,UAAuC,KAAkC,EAAE,SAAsB;QAC/F,iJAAiJ;QACjJ,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1C,IAAI,QAAQ,GAAG,QAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YAChE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAO;gBACtB,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEM,oCAAyB,GAAhC,UAAiC,KAAa,EAAE,KAAa,EAAE,sBAA6B;QAA7B,sEAA6B;QAC1F,IAAI,KAAa,CAAC;QAElB,IAAI,uBAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,EAAE;YACvE,KAAK,GAAG,qBAAS,CAAC,WAAW,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,OAAO,CAAC;SACtE;aAAM,IAAI,uBAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE;YAChF,KAAK,GAAG,qBAAS,CAAC,aAAa,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,OAAO,CAAC;SACxE;aAAM,IAAI,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACrD,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,GAAG,qBAAS,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;SAC5C;aAAM,IAAI,sBAAsB,EAAE;YACjC,KAAK,GAAG,WAAC,CAAC,KAAK,CAAC,CAAC;SAClB;QACD,OAAO,KAAK,IAAI,SAAS,IAAI,aAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7E,CAAC;IAEM,4BAAiB,GAAxB,UAAyB,KAAa,EAAE,KAAa;QACnD,IAAI,CAAC,uBAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,EAAE;YACrE,OAAO,KAAK,CAAC;SACd;QAED,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAElC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;YAC3B,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IACH,iBAAC;AAAD,CAAC;AArHY,gCAAU;;;;;;;;;;;;;;;;;;;;;ACXvB,yCAAoD;AACpD,6CAA8C;AAC9C,+BAAiC;AAEjC;IAAmC,iCAAY;IAA/C;QAAA,qEA2CC;QAvBS,qBAAe,GAAG,iPAEsF,CAAC;QAEzG,2BAAqB,GAAG;YAC9B,cAAc,EAAE,2VAKoD;YACpE,cAAc,EAAE,0FAEe;SAChC,CAAC;;IASJ,CAAC;IA1CC,+CAAuB,GAAvB,UAAwB,IAAkB;QACxC,IAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,IAAI,EAAf,CAAe,CAAC,CAAC;QACnE,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SACzD;aAAM;YACL,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;SACzC;IACH,CAAC;IACD,gDAAwB,GAAxB,UAAyB,IAAkB;QAA3C,iBASC;QARC,IAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,IAAI,EAAf,CAAe,CAAC,CAAC;QACnE,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,CAAC,oBAAoB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SAC1D;aAAM;YACL,IAAM,IAAI,GAAG,IAAI,mBAAQ,CAAC,cAAM,YAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAhC,CAAgC,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SAC7C;IACH,CAAC;IAkBS,2CAAmB,GAA7B;QAAA,iBAEC;QADC,OAAO,IAAI,mBAAQ,CAAC,cAAM,YAAI,CAAC,eAAe,EAApB,CAAoB,CAAC,CAAC;IAClD,CAAC;IAED,2CAAmB,GAAnB,UAAoB,IAAkB;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,IAAI,EAAf,CAAe,CAAC,CAAC;IACtD,CAAC;IACH,oBAAC;AAAD,CAAC,CA3CkC,2BAAY,GA2C9C;AA3CY,sCAAa;;;;;;;;;;;ACJ1B,sCAAyC;AACzC,0CAA4C;AAC5C,mCAA0C;AAM1C;IAaE,mBACU,SAAsB,EACtB,OAEP;QAFO;YACN,iBAAiB,EAAE,oBAAoB;SACxC;QAHO,cAAS,GAAT,SAAS,CAAa;QACtB,YAAO,GAAP,OAAO,CAEd;QAED,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAfD,sBAAY,wCAAiB;aAA7B;YACE,OAAO,kBAAK,CAAC,SAAG,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBAC/F,MAAM,CAAC,iBAAO,IAAI,eAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAvB,CAAuB,CAAC;iBAC1C,MAAM,CAAC,iBAAO,IAAI,cAAO,CAAC,QAAQ,EAAhB,CAAgB,CAAC;iBACnC,KAAK,EAAE,CAAC;QACb,CAAC;;;OAAA;IAYM,2BAAO,GAAd;QACE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAEO,0BAAM,GAAd;QAAA,iBAKC;QAJC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC,CAAC,CAAC;QACnF,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG,WAAC,IAAI,YAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAlB,CAAkB,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEO,sCAAkB,GAA1B;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SAC1D;IACH,CAAC;IAEO,+BAAW,GAAnB,UAAoB,OAAoB;QACtC,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;YACvC,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,KAAG,IAAM,CAAC,CAAC;IACjD,CAAC;IAEO,gCAAY,GAApB,UAAqB,cAA2B;QAAhD,iBAOC;QANC,IAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC;QAC5C,IAAI,MAAM,EAAE;YACV,oBAAO,CAAC,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,uBAAa;gBAClE,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,iCAAa,GAArB,UAAsB,cAA2B;QAC/C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAClC,IAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC;QAC5C,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAC5B;IACH,CAAC;IAEO,uCAAmB,GAA3B,UAA4B,OAAoB,EAAE,QAAgB;QAAhB,2CAAgB;QAChE,IAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxC,IAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,QAAQ,CAAC,CAAC,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5F,CAAC;IAEO,gCAAY,GAApB,UAAqB,OAAoB,EAAE,QAAgB;QAAhB,2CAAgB;QACzD,IAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE,CAAC;SACjB;IACH,CAAC;IAEO,qCAAiB,GAAzB;QACE,IAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SACrB;IACH,CAAC;IAEO,mCAAe,GAAvB,UAAwB,UAAuB,EAAE,UAAuB;QACtE,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QACD,OAAO,UAAU,CAAC,uBAAuB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,2BAA2B,CAAC;IAC7F,CAAC;IAEO,iCAAa,GAArB,UAAsB,UAAuB,EAAE,UAAuB;QAAtE,iBAaC;QAZC,aAAK,CAAC,KAAK,CAAC;YACV,IAAI,CAAC,KAAI,CAAC,OAAO,EAAE;gBACjB,OAAO;aACR;YACD,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,UAAU,IAAI,KAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBACjD,KAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;aAC7E;iBAAM;gBACL,KAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;YACD,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kCAAc,GAAtB,UAAuB,OAAoB;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,mCAAe,GAAvB,UAAwB,OAAoB;QAC1C,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;IAC5D,CAAC;IAEO,6BAAS,GAAjB,UAAkB,CAAa;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;QACD,IAAM,UAAU,GAAG,CAAC,CAAC,aAA4B,CAAC;QAClD,IAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,iBAAiB,EAAE;YACrB,OAAO;SACR;QACD,IAAM,UAAU,GAAG,CAAC,CAAC,MAAqB,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YACpC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACtC;IACH,CAAC;IAEO,8BAAU,GAAlB,UAAmB,CAAa;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;QACD,IAAM,UAAU,GAAG,CAAC,CAAC,aAA4B,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YACnD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAqB,EAAE,UAAU,CAAC,CAAC;SACzD;IACH,CAAC;IACH,gBAAC;AAAD,CAAC;AAvJY,8BAAS;;;;;;;;;;;;;;;;;;;;;ACRtB,yCAAsC;AAGtC;IAAmD,iDAAQ;IAA3D;;IA4BA,CAAC;IA3BC,2DAAmB,GAAnB,UAAoB,MAAqB;QACvC,IAAI,QAAQ,GAAG,iwBAeN,CAAC;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,4DAAoB,GAApB,UAAqB,MAAqB;QAA1C,iBAMC;QALC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,GAAG,CAAC,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IACH,oCAAC;AAAD,CAAC,CA5BkD,mBAAQ,GA4B1D;AA5BY,sEAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACD1C,qCAA4F;AAI5F,2CAAsD;AAEtD,0CAAgD;AAChD,mCAAqC;AACrC,sCAA2C;AAQ3C;IACE,wBAAmB,IAAqB;QAArB,SAAI,GAAJ,IAAI,CAAiB;IAAG,CAAC;IAE/B,qCAAY,GAAzB,UACE,OAAsB,EACtB,MAA2B,EAC3B,yBAAyC;;;;;gBAEnC,GAAG,GAAyC,EAAE,CAAC;gBAC/C,eAAe,GAAG,gBAAG,CAAC,OAAO,CAAC,OAAO,EAAE,UAAC,MAAoB,EAAE,KAAa;oBAC/E,OAAO,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,UAAC,aAA0B;wBACjG,IAAI,aAAa,IAAI,IAAI,EAAE;4BACzB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;yBAC/C;wBACD,uBAAU,CAAC,4BAA4B,GAAG,IAAI,CAAC;wBAC/C,OAAO,aAAa,CAAC;oBACvB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,+HAA+H;gBAC/H,2IAA2I;gBAC3I,sBAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;wBACvC,OAAO,kBAAK,CAAC,mBAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC3C,CAAC,CAAC,EAAC;;;KACJ;IAEY,oCAAW,GAAxB,UACE,MAAoB,EACpB,MAA2B,EAC3B,yBAAyC;;;;;;wBAEzC,aAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACtB,iBAAU,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;wBAChF,iBAAU,CAAC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;wBACpF,uBAAU,CAAC,4BAA4B,GAAG,MAAM,CAAC;wBAC3B,qBAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC;;wBAA5D,aAAa,GAAG,SAA4C;wBAElE,IAAI,aAAa,IAAI,IAAI,EAAE;4BACzB,gBAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;yBACtD;wBACD,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAEvC,qBAAM,IAAI,CAAC,gCAAgC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,UAAU;;wBAA7E,SAA6E,CAAC;wBAE9E,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;wBACnC,sBAAO,aAAa,EAAC;;;;KACtB;IAEM,yDAAgC,GAAvC,UAAwC,OAAoB,EAAE,MAAoB;QAChF,aAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,qBAAc,CAAC,yCAAyC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAEO,0CAAiB,GAAzB,UAA0B,MAAoB,EAAE,MAA2B;QACzE,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,MAAM,EAAE;YAC3D,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,MAAM;YACrB,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB;SACrE,CAAC,CAAC;IACL,CAAC;IAEO,uCAAc,GAAtB,UAAuB,OAAoB;QACzC,IAAM,kBAAkB,GAAG,CAAC,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClE,IAAI,kBAAkB,EAAE;YACtB,OAAO;SACR;QAED,IAAM,GAAG,GAAG,4FAA0F,CAAC;QACvG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IACH,qBAAC;AAAD,CAAC;AAvEY,wCAAc;;;;;;;;;;;;;;;;;;;AClB3B,iDAA6E;AAE7E,+CAA4E;AAE5E,0CAAwE;AACxE,+CAAoF;AACpF,2CAAyG;AAEzG,qCAA0C;AAC1C,4CAAsD;AACtD,8CAA4E;AAC5E,4CAAoD;AACpD,2CAAoD;AACpD,4CAAsD;AACtD,mCAAqC;AACrC,+CAA2D;AAC3D,sDAAwE;AACxE,2CAAiD;AACjD,wCAAuC;AAEvC,+BAAgC;AAChC,yCAA8C;AAC9C,8CAAgD;AAgYhD;IACE;IAAsB,CAAC;IAEvB;;;;OAIG;IACW,oCAAwB,GAAtC,UAAuC,KAAsB;QAC3D,CAAC,CAAC,IAAI,CAAC,iCAAe,CAAC,UAAU,EAAE,EAAE,UAAC,MAA+B,EAAE,IAAY;YACjF,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE;gBAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACH,kBAAC;AAAD,CAAC;AAfY,kCAAW;AAiBxB,iCAAe,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,UAAC,KAAa;IACpE,OAAO,aAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,IAAM,cAAc,GAAG,UAAC,OAAe,EAAE,OAAwB;IAC/D,IAAM,WAAW,GAAG,+BAAc,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjF,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACpC,OAAO,+BAAc,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;KAClI;SAAM;QACL,OAAO,WAAW,CAAC,KAAK,CAAC;KAC1B;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,SAAS,EAAE,UAAC,OAAe,EAAE,MAAc,EAAE,UAAyB,EAAE,QAAiB;IAC9H,OAAO,cAAc,CAAC,OAAO,EAAE;QAC7B,MAAM;QACN,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAC,OAAe,EAAE,OAAwB;IAC5F,OAAO,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAM,kBAAkB,GAAG,UAAC,OAAe,EAAE,OAAwB;IACnE,IAAM,WAAW,GAAG,+BAAc,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACpC,OAAO,+BAAc,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;KAClI;SAAM;QACL,OAAO,WAAW,CAAC,KAAK,CAAC;KAC1B;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAC,OAAe,EAAE,MAAc,EAAE,UAAyB,EAAE,QAAiB;IAClI,OAAO,kBAAkB,CAAC,OAAO,EAAE;QACjC,MAAM;QACN,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAC,OAAe,EAAE,OAAwB;IAC7F,OAAO,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAM,iBAAiB,GAAG,UAAC,OAAe,EAAE,OAAwB;IAClE,IAAM,WAAW,GAAG,+BAAc,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvE,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACpC,OAAO,+BAAc,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;KAClI;SAAM;QACL,OAAO,WAAW,CAAC,KAAK,CAAC;KAC1B;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAC,OAAe,EAAE,MAAc,EAAE,UAAyB,EAAE,QAAiB;IACjI,OAAO,iBAAiB,CAAC,OAAO,EAAE;QAChC,MAAM;QACN,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,UAAC,OAAe,EAAE,OAAwB;IAC/F,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAM,gBAAgB,GAAG,UAAC,OAAe,EAAE,OAA2B;IACpE,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACzB,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACpC,OAAO,+BAAc,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;SAC3G;aAAM;YACL,OAAO,OAAO,CAAC;SAChB;KACF;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAC,OAAe,EAAE,UAAwB,EAAE,QAAiB;IAC/G,OAAO,gBAAgB,CAAC,OAAO,EAAE;QAC/B,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAC,OAAe,EAAE,OAA2B;IACjG,OAAO,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAM,0BAA0B,GAAG,UAAC,OAAe,EAAE,OAAsC;IACzF,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;QAC/G,IAAI,0BAA0B,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACpF,OAAO,2CAAoB,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SAC9H;aAAM;YACL,OAAO,OAAO,CAAC;SAChB;KACF;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CACpC,qBAAqB,EACrB,UACE,OAAe,EACf,gBAA4C,EAC5C,kBAAgD,EAChD,IAA8B;IAF9B,sDAAmB,uBAAuB,EAAE;IAC5C,0DAAqB,yBAAyB,EAAE;IAGhD,OAAO,0BAA0B,CAAC,OAAO,EAAE;QACzC,gBAAgB;QAChB,kBAAkB;QAClB,IAAI;KACL,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,UAAC,OAAe,EAAE,OAAsC;IACtH,IAAM,aAAa,cACjB,gBAAgB,EAAE,uBAAuB,EAAE,EAC3C,kBAAkB,EAAE,yBAAyB,EAAE,IAC5C,OAAO,CACX,CAAC;IACF,OAAO,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,IAAM,0BAA0B,GAAG,UAAC,OAAe,EAAE,OAAsC;IACzF,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;QAC/G,IAAI,0BAA0B,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACpF,OAAO,2CAAoB,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SAC9H;aAAM;YACL,OAAO,OAAO,CAAC;SAChB;KACF;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CACpC,qBAAqB,EACrB,UACE,OAAe,EACf,gBAA4C,EAC5C,kBAAgD,EAChD,IAA8B;IAF9B,sDAAmB,uBAAuB,EAAE;IAC5C,0DAAqB,yBAAyB,EAAE;IAGhD,OAAO,0BAA0B,CAAC,OAAO,EAAE;QACzC,gBAAgB;QAChB,kBAAkB;QAClB,IAAI;KACL,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,UAAC,OAAe,EAAE,OAAsC;IACtH,IAAM,aAAa,cACjB,gBAAgB,EAAE,uBAAuB,EAAE,EAC3C,kBAAkB,EAAE,yBAAyB,EAAE,IAC5C,OAAO,CACX,CAAC;IACF,OAAO,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAC,KAAU,EAAE,OAAuC;IAChG,IAAI,CAAC,aAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,SAAS,CAAC;KAClB;IAED,IAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IACzE,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,yBAAW,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;KACvD;IAED,OAAO,yBAAW,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAU,MAAM,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAC,KAAU,EAAE,OAA8B;IACrF,OAAO,qBAAS,CAAC,YAAY,CAAC,qBAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAC,KAAU,EAAE,OAA8B;IACrF,OAAO,qBAAS,CAAC,YAAY,CAAC,qBAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAC,KAAU,EAAE,OAA8B;IACzF,OAAO,qBAAS,CAAC,gBAAgB,CAAC,qBAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3F,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAC,KAAU,EAAE,OAA8B;IAC9F,IAAI,cAAc,GAAyB,EAAE,CAAC;IAC9C,cAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAC5C,IAAI,YAAY,GAAyB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC,CAAC,CAAC,qBAAS,CAAC,gBAAgB,CAAC,qBAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpH,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAC,KAAU,EAAE,OAAkC;IAC7F,OAAO,6BAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAC,KAAU,EAAE,OAA0D;IAA1D,sCAAmC,cAAc,EAAE,KAAK,EAAE;IACrH,OAAO,IAAI,wBAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAC,KAAwB;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IACpF,+GAA+G;IAC/G,IAAI,aAAqB,CAAC;IAC1B,IAAI,EAAU,CAAC;IACf,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAqB,CAAC;IAC1B,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACvB,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACzC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnB,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACrC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;KACxC;SAAM;QACL,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KACxB;IACD,IAAI,WAAW,IAAI,SAAS,EAAE;QAC5B,WAAW,GAAG,CAAC,CAAC;KACjB;IACD,IAAI,YAAY,IAAI,SAAS,EAAE;QAC7B,YAAY,GAAG,KAAK,CAAC;KACtB;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACrB,IAAI,eAAe,GAAG,uBAAU,CAAC,2CAA2C,CAAS,KAAK,CAAC,CAAC;QAC5F,OAAO,uBAAU,CAAC,0BAA0B,CAAC,eAAe,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;KAC7G;SAAM,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC3B,OAAO,uBAAU,CAAC,0BAA0B,CAAW,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;KAC7G;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,UAAC,MAAmB;IAC9E,QAAE,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE;QACxD,CAAC,CAAC,IAAI,CAAC,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,iBAAO;YAClE,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;KACJ;SAAM,IAAI,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;QACrD,QAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,IAAI,CAAC,QAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAAE,iBAAO;YACjF,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAC,IAAY,EAAE,OAA6B;IACxF,OAAO,uBAAW,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAC,GAAW,EAAE,OAA4B,EAAE,MAA2C;IAA3C,kCAAuB,kBAAkB,EAAE;IAClI,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE;QAClC,OAAO,sBAAU,CAAC,UAAU,CAAC,yBAAW,CAAC,6BAA6B,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YACnG,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;KACJ;IACD,OAAO,sBAAU,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CACpC,WAAW,EACX,UAAC,MAA2C,EAAE,QAA4B,EAAE,OAA4B;IAAvG,kCAAuB,kBAAkB,EAAE;IAAE,+CAA4B;IACxE,IAAI,uBAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACnC,OAAO,sBAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,+BAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;KAC7F;AACH,CAAC,CACF,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,UAAC,MAA2C,EAAE,OAAY;IAAzD,kCAAuB,kBAAkB,EAAE;IAAE,sCAAY;IACrH,IAAI,IAAI,GAAG,qBAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,IAAI,EAAE;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC;KACnD;AACH,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAC,KAAa;IACjE,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,sCAAsC;SACvD,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,uCAAuC;SAC9D,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,gDAAgD;SACxE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAC,eAAsC,EAAE,IAAW;IAAX,kCAAW;IAC1G,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAChC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,MAAM,GAAG,eAAe,CAAC;IAC7B,IAAI,WAAW,CAAC;IAChB,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,UAAC,KAAK,EAAE,GAAI,EAAE,GAAI;QACxC,IAAI,KAAK,IAAI,SAAS,EAAE;YACtB,WAAW,GAAG,GAAG,CAAC;SACnB;IACH,CAAC,CAAC,CAAC;IACH,IAAI,WAAW,IAAI,SAAS,EAAE;QAC5B,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;KAC/C;IACD,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAC,SAAS,EAAE,EAAG,EAAE,GAAI;QAClC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE;YACjC,mBAAmB,GAAG,mBAAmB,IAAI,SAAS,CAAC;YACvD,GAAG,IAAI,iCAAe,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;SACvE;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,mBAAmB,IAAI,WAAW,IAAI,SAAS,EAAE;QACpD,GAAG,IAAI,iCAAe,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3E;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,IAAM,WAAW,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE9D,iCAAe,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAC,KAAU,EAAE,OAAsB;IAC7E,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,IAAI,SAAS,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,IAAI,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE;QACnD,IAAI,IAAI,IAAI,CAAC;QACb,IAAI,EAAE,CAAC;KACR;IACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5E,OAAO,IAAI,GAAG,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,UAAC,KAAa;IACrE,OAAO,uBAAU,CAAC,yBAAyB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,UAAC,EAAU,EAAE,SAAyB,EAAE,IAAU;IAArC,4CAAyB;IAC3F,IAAI,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;QACjC,IAAI,GAAG,kBAAkB,EAAE,CAAC;KAC7B;IACD,IAAI,SAAS,EAAE;QACb,OAAO,6BAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7D,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;KACJ;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,UAAC,IAAY;IAC1E,IAAI,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;QACjC,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,OAAO,yBAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KAC/C;AACH,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,gBAAgB,EAAE;IACvD,OAAO,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,yBAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH;IACE,IAAI,KAAK,CAAC;IACV,IAAI,UAAU,GAAG,qBAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,UAAU,EAAE;QACd,KAAK,GAAG,UAAU,CAAC,4BAA4B,CAAC;KACjD;IACD,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,SAAS,GAAG,qBAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,SAAS,EAAE;YACb,KAAK,GAAG,SAAS,CAAC,4BAA4B,CAAC;SAChD;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;IACE,IAAI,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;IAC9C,IAAI,kBAAkB,EAAE;QACtB,OAAO,kBAAkB,CAAC,gBAAgB,CAAC;KAC5C;AACH,CAAC;AAED;IACE,IAAI,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;IAC9C,IAAI,kBAAkB,EAAE;QACtB,OAAO,kBAAkB,CAAC,kBAAkB,CAAC;KAC9C;AACH,CAAC;AAED,oCAAoC,gBAAgB,EAAE,kBAAkB;IACtE,OAAO,aAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,aAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC9G,CAAC;;;;;;;;;;;AChzBD,mCAA6C;AAC7C,uCAA+C;AAY/C;IAIE,kCAAoB,WAA6C;QAA7C,gBAAW,GAAX,WAAW,CAAkC;QAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,yCAAM,GAAd;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAE3E,IAAI,CAAC,MAAM,GAAG,QAAE,CACd,QAAQ,EACR;YACE,SAAS,EAAE,sCAAkC,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE;YACtF,IAAI,EAAE,QAAQ;SACf,EACD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAC5D,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE5E,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1D,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SACjF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SACpE;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,KAAK,SAAS,EAAE;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,CAAC;IAEM,yCAAM,GAAb,UAAc,aAAsB;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IACH,+BAAC;AAAD,CAAC;AA1CY,4DAAwB;;;;;;;;ACbrC,yC;;;;;;;;;;ACAA;;;GAGG;AACH,IAAY,iBAmBX;AAnBD,WAAY,iBAAiB;IAC3B;;;;;;;;OAQG;IACH,oCAAe;IACf;;OAEG;IACH,kDAA6B;IAC7B;;OAEG;IACH,gDAA2B;AAC7B,CAAC,EAnBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAmB5B;AAED,6BAAoC,YAAoB;IACtD,OAAO,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC;AAFD,kDAEC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BD,mCAAqC;AACrC,+CAAgD;AAChD,0CAAgD;AAChD,yCAAgD;AAChD,uCAA4C;AAC5C,gDAAkD;AAClD,yBAA2B;AAC3B,qCAA0C;AAC1C,uCAA0C;AAG1C;IAaE,kBAAmB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QAPpC,mBAAc,GAA8B;YAClD,gBAAgB,EAAE,EAAE;YACpB,WAAW,EAAE,KAAK;SACnB,CAAC;QACM,oBAAe,GAAG,GAAG,CAAC;QACtB,uBAAkB,GAAG,KAAK,CAAC;QA8G3B,qBAAgB,GAAG,qBAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;YAC7E,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QA9GD,IAAI,CAAC,OAAO,gBACP,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CAChB,CAAC;QAEF,IAAI,CAAC,EAAE,GAAG,qBAAQ,CAAC,iBAAiB,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,yBAAM,GAAd;QACE,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,4BAA0B,IAAI,CAAC,OAAO,CAAC,gBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC;QACtG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,uCAAoB,GAA5B;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEO,+CAA4B,GAApC;QACE,IAAI,CAAC,oBAAoB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,+BAA+B,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACjH,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,EAAE,mCAAmC,CAAC,CAAC;QAChG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAEO,sCAAmB,GAA3B,UAA4B,IAAa;QACvC,QAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,wCAAqB,GAA7B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEM,2BAAQ,GAAf;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,8BAAW,GAAnB;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,gCAAa,GAArB;QACE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAEM,gCAAa,GAApB,UAAqB,KAAa;QAAlC,iBASC;QARC,IAAI,aAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,gBAAgB,CACnB,cAAM,YAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAjC,CAAiC,EACvC,cAAM,YAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAzB,CAAyB,CAChC,CAAC;IACJ,CAAC;IAEM,8BAAW,GAAlB;QACE,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YACpC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,gDAA6B,GAApC,UAAqC,UAA4C;QAC/E,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAEM,iCAAc,GAArB;QACE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YACrD,OAAO;SACR;QAED,IAAI,IAAI,GAAG,WAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClH,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE;YAC/E,IAAI,GAAM,IAAI,UAAK,WAAC,CAAC,qBAAqB,CAAC,MAAG,CAAC;SAChD;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,qCAAkB,GAAzB;QAAA,iBAOC;QANC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU;YACrB,IAAI,CAAC,gBAAgB,CACnB,cAAM,YAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAA3C,CAA2C,EACjD,cAAM,YAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAjC,CAAiC,CACxC,CAAC;IACN,CAAC;IAOa,iCAAc,GAA5B,UAA6B,OAA2B,EAAE,QAAmB;;;;;;wBAC3E,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;wBAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;wBAEd,qBAAM,OAAO,EAAE;;wBAA1B,QAAQ,GAAG,SAAe;wBAChC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;wBAEhC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;4BAC5B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;4BACzC,QAAQ,IAAI,QAAQ,EAAE,CAAC;yBACxB;;;;;KACF;IACH,eAAC;AAAD,CAAC;AA1IY,4BAAQ;;;;;;;;ACXrB,yC;;;;;;;;;;ACAA,yCAAsD;AAEtD,mCAAwC;AAExC;IAIE,mCAAoB,UAA6B,EAAE,YAAuB;QAAvB,4DAAsB,CAAC;QAAtD,eAAU,GAAV,UAAU,CAAmB;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,eAAe,EAC/B,MAAI,IAAI,CAAC,UAAU,CAAC,cAAc,MAAG,CACtC,CAAC;QAEF,IAAM,KAAK,GAAG,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAChF,IAAM,WAAW,GAAG,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAE7F,IAAI,KAAK,IAAI,WAAW,EAAE;YACxB,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC1D,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC1C,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC;IACH,gCAAC;AAAD,CAAC;AAxBY,8DAAyB;;;;;;;;;;;ACJtC,yBAAkD;AAClD,mCAAwC;AACxC,0CAAqD;AAGrD,gDAAsE;AACtE,uCAA6C;AAE7C,iEAAwF;AACxF,qCAA6C;AAC7C,oDAAmF;AAMnF;IAME,4BAAoB,KAAoB,EAAE,YAA4C;QAAlE,UAAK,GAAL,KAAK,CAAe;QAJhC,SAAI,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,4CAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;aACpI,EAAE,CAAC;QAIJ,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,+CAAkB,GAAzB,UAA0B,QAAwB;QAAlD,iBAEC;QADC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,UAAU,EAAE,KAAK,IAAK,YAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,EAAvD,CAAuD,CAAC,CAAC;IACzH,CAAC;IAEM,0CAAa,GAApB,UAAqB,KAAe;QAClC,IAAI,CAAC,WAAW,GAAG,aAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,eAAK,IAAI,YAAK,CAAC,KAAK,EAAX,CAAW,CAAC,CAAC;IAC9F,CAAC;IAEM,wCAAW,GAAlB;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC1D,CAAC;IAED,sBAAW,8CAAc;aAAzB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;;;OAAA;IAED,sBAAW,yCAAS;aAApB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAU,IAAI,iBAAU,CAAC,KAAK,EAAhB,CAAgB,CAAC,CAAC;QAC9D,CAAC;;;OAAA;IAED,sBAAW,8CAAc;aAAzB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAK,IAAI,YAAK,CAAC,UAAU,EAAhB,CAAgB,CAAC,CAAC,GAAG,CAAC,UAAC,EAAS;oBAAP,gBAAK;gBAAO,YAAK;YAAL,CAAK,CAAC,CAAC;QACtF,CAAC;;;OAAA;IAED,sBAAY,qDAAqB;aAAjC;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAK,IAAI,YAAK,CAAC,UAAU,EAAhB,CAAgB,CAAC,CAAC,GAAG,CAAC,UAAC,EAAgB;oBAAd,8BAAY;gBAAO,mBAAY;YAAZ,CAAY,CAAC,CAAC;QACpG,CAAC;;;OAAA;IAED,sBAAW,4CAAY;aAAvB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAK,IAAI,QAAC,KAAK,CAAC,MAAM,EAAb,CAAa,CAAC,CAAC;QACzD,CAAC;;;OAAA;IAED,sBAAY,+CAAe;aAA3B;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAK,IAAI,QAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAA1C,CAA0C,CAAC,CAAC;QACtF,CAAC;;;OAAA;IAED,sBAAW,iDAAiB;aAA5B;YACE,OAAO,CAAC,CAAC,sBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,iCAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;;;OAAA;IAED,sBAAW,+CAAe;aAA1B;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACpC,CAAC;;;OAAA;IAED,sBAAW,6CAAa;aAAxB;YACE,OAAO,CAAC,CAAC,sBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,iCAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;;;OAAA;IAEM,qCAAQ,GAAf;QACE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAK,IAAI,YAAK,CAAC,QAAQ,EAAE,EAAhB,CAAgB,CAAC,CAAC;IACtD,CAAC;IAED,sBAAW,yCAAS;aAApB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACtC,CAAC;;;OAAA;IAED,sBAAW,kDAAkB;aAA7B;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QACvC,CAAC;;;OAAA;IAEM,6CAAgB,GAAvB,UAAwB,GAA+B;QACrD,IAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxD,IAAM,UAAU,GAAG,iBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAxB,CAAwB,CAAC,CAAC;QAClF,OAAO,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC;IAC7C,CAAC;IAEM,gCAAG,GAAV,UAAW,GAA+B;QACxC,IAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxD,IAAM,UAAU,GAAG,iBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAxB,CAAwB,CAAC,CAAC;QAElF,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC;SACnB;QAED,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,OAAO,aAAa,CAAC;IACvB,CAAC;IAEM,kCAAK,GAAZ,UAAa,KAAa;QACxB,IAAM,UAAU,GAAG,iBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAxB,CAAwB,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEO,0CAAa,GAArB;QAAA,iBAYC;QAXC,IAAM,QAAQ,GAAG,IAAI,qEAAmC,CAAC;YACvD,SAAS,EAAE,+BAA+B;YAC1C,SAAS,EAAE,WAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9D,KAAK,EAAE,WAAC,CAAC,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;gBACxC,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAEO,0CAAa,GAArB;QAAA,iBAYC;QAXC,IAAM,QAAQ,GAAG,IAAI,qEAAmC,CAAC;YACvD,SAAS,EAAE,+BAA+B;YAC1C,SAAS,EAAE,WAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9D,KAAK,EAAE,WAAC,CAAC,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;gBACxC,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,sBAAY,oDAAoB;aAAhC;YACE,IAAM,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;YAE7F,OAAO,wBAAwB,IAAI,IAAI,CAAC,aAAa,CAAC;QACxD,CAAC;;;OAAA;IAEO,+CAAkB,GAA1B,UAA2B,QAA0B;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE;YACtC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAClC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC5C;IACH,CAAC;IAEO,0DAA6B,GAArC,UAAsC,QAA0B;QAC9D,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO;SACR;QAED,IAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,QAAQ,CAAC,WAAW,CAClB,QAAE,CACA,IAAI,EACJ;YACE,SAAS,EAAE,sCAAsC;YACjD,SAAS,EAAK,WAAC,CAAC,mBAAmB,CAAC,UAAK,cAAgB;SAC1D,EACD,mBAAM,CAAC,cAAc,CAAC,CACvB,CAAC,EAAE,CACL,CAAC;IACJ,CAAC;IAEM,mCAAM,GAAb;QACE,IAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACnD,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;YACrC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAElC,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACH,yBAAC;AAAD,CAAC;AAvLY,gDAAkB;;;;;;;;;;;;;;;;;;;ACf/B,sCAAwC;AAExC,4CAAoD;AACpD,0CAAuC;AAGvC,4DAA0E;AAE1E;IAOE,qCAAsB,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;QAJlC,wBAAmB,GAAG,KAAK,CAAC;QAC5B,qBAAgB,GAAG,KAAK,CAAC;QACzB,yBAAoB,GAAG,KAAK,CAAC;QAGnC,IAAI,CAAC,cAAc,GAAG,IAAI,uDAA0B,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;YAC7C,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc;YACjD,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,2DAAqB,GAA7B;QAAA,iBAMC;QALC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,WAAW,EAAE;YACrD,KAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,KAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,qEAA+B,GAAtC,UAAuC,wBAAgC;QACrE,IAAI,CAAC,uBAAuB,IAAI,wBAAwB,CAAC;IAC3D,CAAC;IAEM,kEAA4B,GAAnC;QACE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;IACnE,CAAC;IAEM,oEAA8B,GAArC;QACE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAEM,mEAA6B,GAApC;QACE,IAAI,IAAI,CAAC,uCAAuC,EAAE;YAChD,OAAO;SACR;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAEM,gEAA0B,GAAjC;QACE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,sBAAY,gFAAuC;aAAnD;YACE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;gBACnD,OAAO,KAAK,CAAC;aACd;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,iCAAiC,EAAE;gBACjE,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAClE,CAAC;;;OAAA;IAED;;;OAGG;IACI,8DAAwB,GAA/B,UAAgC,YAA0B;QACxD,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE5B,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,YAAY,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACnD;IACH,CAAC;IAEM,uDAAiB,GAAxB;QACE,oBACK,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,IACjD,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAC7C,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,EAC5C,eAAe,EAAE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,IACjF;IACJ,CAAC;IAEM,qDAAe,GAAtB;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACxD,8FAA8F;QAC9F,+CAA+C;QAC/C,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QAE1B,IAAM,yBAAyB,GAAG,sBAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9F,IAAI,yBAAyB,KAAK,CAAC,CAAC,EAAE;YACpC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACpE;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC7C;aAAM;YACL,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,sBAAc,sDAAa;aAA3B;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,EAAgB;oBAAd,gBAAK,EAAE,gBAAK;gBAAO,QAAC;oBACjE,KAAK;oBACL,KAAK;iBACN,CAAC;YAHgE,CAGhE,CAAC,CAAC;QACN,CAAC;;;OAAA;IAED,sBAAc,uDAAc;aAA5B;YACE,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;aAClC;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvF,CAAC;;;OAAA;IACH,kCAAC;AAAD,CAAC;AAxHY,kEAA2B;;;;;;;;;;;ACTxC,mCAA6C;AAE7C,2DAAwE;AAGxE;IAIE,mCAAoB,UAA6B,EAAU,KAAoB;QAA3D,eAAU,GAAV,UAAU,CAAmB;QAAU,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAE5E,0CAAM,GAAb;QACE,IAAI,CAAC,GAAG,GAAG,QAAE,CAAC,IAAI,EAAE;YAClB,SAAS,EAAE,2BAA2B;YACtC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAErC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;IAEO,uDAAmB,GAA3B;QACE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;IAEO,kDAAc,GAAtB;QACE,IAAI,CAAC,aAAa,GAAG,IAAI,qDAAyB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEO,iEAA6B,GAArC;QAAA,iBAIC;QAHC,IAAM,cAAc,GAAG,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,QAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,cAAM,YAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB,CAAC,CAAC;QACzD,QAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,cAAM,YAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;IAC7D,CAAC;IAEO,6CAAS,GAAjB;QACE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IAEO,8CAAU,GAAlB;QACE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAEO,gDAAY,GAApB;QAAA,iBASC;QARC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE,EAA5C,CAA4C,CAAC,CAAC;IACjF,CAAC;IACH,gCAAC;AAAD,CAAC;AApDY,8DAAyB;;;;;;;;ACLtC,yC;;;;;;;ACAA,yC;;;;;;;ACAA,yC;;;;;;;;;;ACAA,4DAA+H;AAC/H,gDAAqE;AACrE,2CAAsD;AACtD,mCAA0C;AAC1C,yCAA8C;AAC9C,sCAA2C;AAG3C;IAeE,yCAAmB,SAAc,EAAS,EAAU,EAAE,OAAoC,EAAE,kBAAuC;QAAhH,cAAS,GAAT,SAAS,CAAK;QAAS,OAAE,GAAF,EAAE,CAAQ;QAClD,IAAI,CAAC,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,iCAAe,EAAE,KAAK,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7B,CAAC;IAZa,oCAAI,GAAlB,UAAmB,IAAiB,EAAE,SAAqB,EAAE,OAAoC;QAC/F,IAAI,CAAC,QAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAI,qBAAS,CAAC,mBAAmB,CAAC,uBAAU,CAAG,CAAC,EAAE;YACnE,IAAI,MAAM,GAAG,IAAI,eAAM,CAAC,iCAAiC,CAAC,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;YAC5F,OAAO;SACR;QACD,yDAA2B,CAAC,QAAQ,CAAC,+BAA+B,EAAE,QAAE,CAAC,IAAI,CAAC,EAAE,uBAAU,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrH,CAAC;IAOM,2DAAiB,GAAxB,UAAyB,MAAkB;QACzC,IAAI,MAAM,YAAY,uBAAU,EAAE;YAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YACzB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,2DAAiB,GAAxB;QAAA,iBAyBC;QAxBC,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,QAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;YACrF,QAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;YACxF,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE;gBAC/B,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAC,QAAuB;wBACrE,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;aAC5B;SACF;aAAM;YACL,QAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;YACxF,QAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;YACrF,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE;gBAC/B,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAC,QAAuB;wBACrE,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;aAC5B;SACF;IACH,CAAC;IAEO,uDAAa,GAArB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;IACnG,CAAC;IACH,sCAAC;AAAD,CAAC;AA1DY,0EAA+B;;;;;;;;;;;ACP5C,mCAA0C;AAS1C;IAKE,yBAAY,eAA4B,EAAU,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAChF,IAAI,CAAC,sBAAsB,GAAG,QAAE,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IAEM,+BAAK,GAAZ;QACE,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC5E,QAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAEM,kCAAQ,GAAf,UAAgB,UAAkB;QAChC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAEM,iCAAO,GAAd;QACE,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;IAEM,sCAAY,GAAnB;QACE,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAK,IAAI,eAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAhB,CAAgB,CAAC,CAAC;IAC5E,CAAC;IAEM,2CAAiB,GAAxB;QACE,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC;IAED,sBAAW,+BAAE;aAAb;YACE,OAAO,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACxC,CAAC;;;OAAA;IA/Ba,4CAA4B,GAAiB,IAAI,CAAC;IAgClE,sBAAC;CAAA;AAjCY,0CAAe;;;;;;;;;;;;;;;;;;;;;ACV5B,oDAA0D;AAC1D,mCAAqC;AACrC,+BAAiC;AAEjC;IAA4C,0CAAkB;IAA9D;;IAkBA,CAAC;IAjBC,+CAAc,GAAd,UAAe,cAA6B;QAA5C,iBAgBC;QAfC,OAAO,IAAI,OAAO,CAAmB,iBAAO;YAC1C,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;gBAC9B,sGAAsG;gBACtG,2CAA2C;gBAC3C,IAAI,KAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;oBAC/C,IAAM,eAAe,GAAG,QAAE,CAAC,KAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;oBAC1G,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAQ,IAAI,eAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAArB,CAAqB,CAAC,CAAC;iBAC5D;gBACD,iEAAiE;gBACjE,IAAM,YAAU,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;gBACrD,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAM,mBAAU,CAAC,WAAW,CAAC,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,6CAA6C,EAAE,CAAC,CAAC,EAAE,CAAC,EAAlG,CAAkG,CAAC,CAAC;gBACrH,OAAO,CAAC,YAAU,CAAC,CAAC;aACrB;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IACH,6BAAC;AAAD,CAAC,CAlB2C,uCAAkB,GAkB7D;AAlBY,wDAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHnC,oDAA0D;AAE1D,+CAA2D;AAC3D,mCAAqC;AACrC,+BAAiC;AAEjC;IAA6C,2CAAkB;IAI7D,iCAAsB,iBAAqC,EAAY,sBAAgC;QAAvG,YACE,kBAAM,iBAAiB,EAAE,sBAAsB,CAAC,SAajD;QAdqB,uBAAiB,GAAjB,iBAAiB,CAAoB;QAAY,4BAAsB,GAAtB,sBAAsB,CAAU;QAH/F,yBAAmB,GAAY,IAAI,CAAC;QACpC,yBAAmB,GAAY,KAAK,CAAC;QAI3C,IAAI,KAAI,CAAC,iBAAiB,CAAC,cAAc,YAAY,6BAAa,EAAE;YAClE,IAAI,KAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE;gBAC7E,KAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;aACjC;YACD,6EAA6E;YAC7E,IACE,KAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAC5D,CAAC,KAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAC1E;gBACA,KAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;aAClC;SACF;;IACH,CAAC;IAED,kDAAgB,GAAhB,UAAiB,cAA6B,EAAE,MAAe;QAC7D,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACrE,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;SACjD;IACH,CAAC;IAED,gDAAc,GAAd,UAAe,cAA6B,EAAE,MAAe;QAC3D,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACrE,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;SACjD;IACH,CAAC;IAEa,qDAAmB,GAAjC,UAAkC,IAAkB;;;;;4BACrC,qBAAsB,IAAI,CAAC,iBAAiB,CAAC,cAAe,CAAC,wBAAwB,CAAC,IAAI,CAAC;;wBAAlG,IAAI,GAAG,SAA2F;wBACxG,QAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAqB,IAAM,CAAC,CAAC;wBAC/C,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;wBACvC,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;wBAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACvB,sBAAO,IAAI,EAAC;;;;KACb;IACH,8BAAC;AAAD,CAAC,CAxC4C,uCAAkB,GAwC9D;AAxCY,0DAAuB;;;;;;;;ACPpC,yC;;;;;;;;;;ACAA,0DAAoG;AACpG,qCAA2C;AAC3C,yCAAmD;AACnD,2CAAsD;AAEtD;IAKE,wCAAoB,aAAqB,EAAS,OAAY,EAAU,gBAAwB,EAAU,KAAiB;QAAvG,kBAAa,GAAb,aAAa,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAK;QAAU,qBAAgB,GAAhB,gBAAgB,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAY;QACzH,IAAI,CAAC,SAAS,GAAG,WAAS,IAAI,CAAC,aAAa,4BAAyB,CAAC;IACxE,CAAC;IAED,sBAAY,kDAAM;aAAlB,UAAmB,UAAmB;YACpC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACvD,CAAC;;;OAAA;IAEM,yDAAgB,GAAvB;QACE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,qDAAyB,CAAC,sBAAsB,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,QAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEM,qDAAY,GAAnB;QACE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,qDAAyB,CAAC,sBAAsB,CAAC,CAAC;QACnG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEM,gDAAO,GAAd;QACE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAEO,0DAAiB,GAAzB;QAAA,iBAcC;QAbC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,SAAE,CACnB,QAAQ,EACR;gBACE,SAAS,EAAE,gCAAgC;gBAC3C,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,IAAI,CAAC,gBAAgB;aACjC,EACD,mBAAQ,CAAC,KAAK,CAAC,SAAS,CACzB,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;SAC3C;IACH,CAAC;IAED,sBAAY,6DAAiB;aAA7B;YACE,IAAM,aAAa,GAAG,iDAAiD,CAAC;YACxE,IAAM,qBAAqB,GAAG,wCAAwC,CAAC;YACvE,IAAM,WAAW,GAAG,iCAAiC,CAAC;YACtD,OAAO,CAAC,aAAa,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC;;;OAAA;IAEO,wDAAe,GAAvB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAChG;IACH,CAAC;IAEO,0DAAiB,GAAzB;QACE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;IACH,CAAC;IAEO,wDAAe,GAAvB;QACE,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;IACH,CAAC;IACH,qCAAC;AAAD,CAAC;AA7EY,wEAA8B;;;;;;;;;;;ACL3C;;GAEG;AACH;IAAA;IASA,CAAC;IARC;;OAEG;IACW,kCAAW,GAAG,aAAa,CAAC;IAC1C;;OAEG;IACW,kCAAW,GAAG,aAAa,CAAC;IAC5C,6BAAC;CAAA;AATY,wDAAsB;;;;;;;;ACHnC,yC;;;;;;;;;;ACAA,uCAA6C;AAC7C,yCAAmD;AACnD,mCAAwC;AACxC,0DAAsE;AAEtE,uCAA+C;AAM/C;IAIE,0CAAoB,OAAmC;QAAnC,YAAO,GAAP,OAAO,CAA4B;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,iDAAM,GAAd;QAAA,iBAcC;QAbC,IAAM,MAAM,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,MAAM,GAAG,IAAI,mDAAwB,CAAC;YACzC,KAAK,EAAE,WAAC,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7C,OAAO,EAAE,mBAAQ,CAAC,KAAK,CAAC,OAAO;YAC/B,aAAa,EAAE,yCAAyC;YACxD,SAAS,EAAE,qCAAqC;YAChD,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,cAAM,YAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAA7B,CAA6B;SAC5C,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;IAC3B,CAAC;IAEM,uDAAY,GAAnB,UAAoB,WAAoB;QACtC,IAAM,IAAI,GAAG,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,IAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,WAAC,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAC,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1G,IAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QAE7E,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,CAAC,mCAAmC,EAAE,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,CAAC,qCAAqC,EAAE,CAAC,WAAW,CAAC,CAAC;QAEtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,yCAAyC,CAAC,CAAC;IACtF,CAAC;IACH,uCAAC;AAAD,CAAC;AAvCY,4EAAgC;;;;;;;;;;;ACX7C,0CAAwE;AACxE,mCAAqC;AACrC,8CAAqD;AACrD,qCAA0C;AAG1C;IAYE,uBAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;QAR/B,iBAAY,GAAsB;YACxC,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,sBAAsB;YACjC,wBAAwB,EAAE,IAAI;YAC9B,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,QAAQ;SACf,CAAC;QAGA,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAqB,CAAC;QACvE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAED,sBAAW,gCAAK;aAAhB;YACE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QACjC,CAAC;;;OAAA;IAEO,8BAAM,GAAd;QAAA,iBAMC;QALC,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAC5B,UAAC,aAAwB,IAAK,YAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAArD,CAAqD,EACnF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EACrC,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAEO,yCAAiB,GAAzB;QAAA,iBAOC;QANC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAtD,CAAsD,CAAC,CAAC;SAC3G;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAC,CAAa,IAAK,YAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAtB,CAAsB,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,CAAgB,IAAK,YAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAA/B,CAA+B,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAC,CAAgB,IAAK,YAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAjC,CAAiC,CAAC,CAAC;IAC3G,CAAC;IAEO,kDAA0B,GAAlC;QACE,IAAM,SAAS,GAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAU,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE1E,IAAI,CAAC,6BAA6B,CAAC;YACjC,gBAAgB,EAAE,EAAE;YACpB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAEM,qDAA6B,GAApC,UAAqC,UAA4C;QAC/E,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxF,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,uBAAuB,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,uBAAuB,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC3F,CAAC;IAEM,kCAAU,GAAjB;QACE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,sCAAc,GAAtB,UAAuB,KAAiB;QACtC,IAAM,SAAS,GAAG,KAAK,CAAC,aAA4B,CAAC;QACrD,IAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,mBAAmB,EAAE;YACvB,OAAO;SACR;QAED,IAAM,qBAAqB,GAAG,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC7F,IAAI,qBAAqB,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;IAEO,+CAAuB,GAA/B,UAAgC,KAAoB;QAClD,QAAQ,KAAK,CAAC,KAAK,EAAE;YACnB,KAAK,wBAAQ,CAAC,UAAU;gBACtB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBACtC,MAAM;YACR,KAAK,wBAAQ,CAAC,QAAQ;gBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC1C,MAAM;YACR,KAAK,wBAAQ,CAAC,IAAI;gBAChB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBACvC,MAAM;YACR,KAAK,wBAAQ,CAAC,GAAG;gBACf,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBACtC,MAAM;SACT;IACH,CAAC;IAEO,iDAAyB,GAAjC,UAAkC,KAAoB;QACpD,QAAQ,KAAK,CAAC,KAAK,EAAE;YACnB,KAAK,wBAAQ,CAAC,KAAK;gBACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACzC,MAAM;YACR,KAAK,wBAAQ,CAAC,MAAM;gBAClB,IAAI,aAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE;oBACrD,KAAK,CAAC,eAAe,EAAE,CAAC;iBACzB;gBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACzB,MAAM;SACT;IACH,CAAC;IACH,oBAAC;AAAD,CAAC;AArHY,sCAAa;;;;;;;;;;;ACL1B,mCAAqC;AACrC,0CAAkC;AAClC,uCAA0C;AAC1C,6CAAoD;AAEpD;IASE,wBAAoB,QAAmB;QAAvC,iBAWC;QAXmB,aAAQ,GAAR,QAAQ,CAAW;QAPhC,qBAAgB,GAAG,KAAK,CAAC;QACzB,yBAAoB,GAAG,KAAK,CAAC;QAC5B,WAAM,GAAqB,EAAE,CAAC;QAMpC,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,IAAI,EAAE;YACtB,EAAE,EAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAU;YACjC,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,uBAAuB;YAClC,cAAc,EAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAQ;SAC5C,CAAC,CAAC,EAAE,CAAC;QACN,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QACvD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAM,YAAI,CAAC,QAAQ,EAAE,EAAf,CAAe,CAAC,CAAC;IACtF,CAAC;IAEM,2CAAkB,GAAzB,UAA0B,QAAa;QACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC/B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IAEO,+BAAM,GAAd;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;SACnC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,6BAA6B,EAAE,CAAC;IACvC,CAAC;IAEO,qCAAY,GAApB;QAAA,iBAcC;QAbC,IAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK;YAC/B,IAAM,cAAc,GAAG,QAAE,CACvB,IAAI,EACJ,EAAE,EAAE,EAAK,KAAI,CAAC,QAAQ,CAAC,EAAE,eAAU,KAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC5G,KAAK,CAAC,OAAO,CACd,CAAC,EAAE,CAAC;YACL,KAAI,CAAC,oCAAoC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzD,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;YAC/B,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEO,6DAAoC,GAA5C,UAA6C,YAAyB;QACpE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE;YACjD,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;YACjE,IAAM,QAAM,GAAG,QAAE,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC;gBACrF,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,QAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAyB,CAAC,CAAC;YAC/E,IAAI,QAAM,EAAE;gBACV,IAAM,IAAI,GAAG,QAAE,CAAC,QAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/B,IAAM,KAAK,GAAG,6BAAc,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;gBAEvE,QAAE,CAAC,QAAM,CAAC,CAAC,KAAK,EAAE,CAAC;gBACnB,KAAK,CAAC,OAAO,CAAC,cAAI,IAAI,eAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAxB,CAAwB,CAAC,CAAC;aACjD;SACF;IACH,CAAC;IAEM,kCAAS,GAAhB;QACE,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,sBAAW,0CAAc;aAAzB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,CAAC;;;OAAA;IAEO,4CAAmB,GAA3B;QACE,IAAM,oBAAoB,GAAG,QAAE,CAC7B,IAAI,EACJ;YACE,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,gCAAgC;SAC5C,EACD,WAAC,CAAC,eAAe,CAAC,CACnB,CAAC,EAAE,CAAC;QAEL,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAEO,0CAAiB,GAAzB;QAAA,iBAOC;QANC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAK;YACvB,QAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,cAAM,QAAC,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAC;YACzE,QAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,cAAM,QAAC,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,EAA/B,CAA+B,CAAC,CAAC;YAC1E,QAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAa,IAAK,YAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAApB,CAAoB,CAAC,CAAC;YACvE,QAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qCAAY,GAApB,UAAqB,CAAa;QAChC,IAAM,MAAM,GAAgB,CAAC,CAAC,MAAM,CAAC;QACrC,IAAM,aAAa,GAAG,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAEvH,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;SACR;QAED,IAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClD,IAAM,KAAK,GAAG,iBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAC,EAAW;gBAAT,oBAAO;YAAO,cAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,QAAQ;QAAvC,CAAuC,CAAC,CAAC;QAC1F,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEO,sDAA6B,GAArC;QACE,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7G,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC1C,gBAAgB;YAChB,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IAEM,oCAAW,GAAlB;QACE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;QACzB,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,6BAA6B,EAAE,CAAC;IACvC,CAAC;IAEO,+CAAsB,GAA9B,UAA+B,KAAqB;QAClD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpD,IAAI,CAAC,6BAA6B,EAAE,CAAC;IACvC,CAAC;IAEO,iDAAwB,GAAhC;QACE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,OAAO;SACR;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAEO,6CAAoB,GAA5B,UAA6B,EAA2B;YAAzB,oBAAO;QACpC,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACtC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAEO,+CAAsB,GAA9B,UAA+B,EAA2B;YAAzB,oBAAO;QACtC,QAAE,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACzC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,0CAAiB,GAAxB;QACE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEO,iCAAQ,GAAhB;QACE,IAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACzG,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE;YACjF,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;SACpC;IACH,CAAC;IAEM,oCAAW,GAAlB;QACE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO;SACR;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,OAAI,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEM,wCAAe,GAAtB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO;SACR;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAEM,uCAAc,GAArB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO;SACR;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAEM,uCAAc,GAArB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO;SACR;QAED,IAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAEM,2CAAkB,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO;SACR;QAED,IAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACrD,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,sBAAY,4CAAgB;aAA5B;YACE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;YAED,IAAM,cAAc,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;YACjG,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;;;OAAA;IAED,sBAAY,sCAAU;aAAtB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;;;OAAA;IAED,sBAAY,+CAAmB;aAA/B;YACE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;YAED,IAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC7E,OAAO,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAC1G,CAAC;;;OAAA;IAED,sBAAY,qCAAS;aAArB;YACE,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;;;OAAA;IAEM,yCAAgB,GAAvB;QACE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,OAAO;SACR;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5D,CAAC;IAEM,4CAAmB,GAA1B;QACE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;SACR;QAED,IAAM,OAAO,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAI,IAAI,CAAC,cAAgB,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IACH,qBAAC;AAAD,CAAC;AA1QY,wCAAc;;;;;;;;ACN3B,yC;;;;;;;;;;;;;;;;;;;;ACAA,uDAAgE;AAEhE,8CAA4D;AAE5D;IAA6C,2CAAqB;IAAlE;;IAIA,CAAC;IAHe,4BAAI,GAAlB,UAAmB,IAAiB,EAAE,SAAS,EAAE,OAAoC;QACnF,6CAAqB,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,2BAAY,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IACH,8BAAC;AAAD,CAAC,CAJ4C,6CAAqB,GAIjE;AAJY,0DAAuB;;;;;;;;;;;ACJpC,yBAAuD;AACvD,mCAAqC;AACrC,uCAA0C;AAC1C,yCAAgD;AAChD,wDAAgF;AAEhF,0CAAoC;AAEpC;IAGE,iCAAoB,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,wCAAM,GAAd;QACE,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,sDAAsD,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QACvI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;QACzD,IAAM,qBAAqB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACxG,IAAM,oBAAoB,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAEpG,IAAI,CAAC,+BAA+B,CAAC,qBAAqB,CAAC,CAAC;QAE5D,IAAI,oBAAoB,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,mCAAmC,CAAC,oBAAoB,CAAC,CAAC;SAChE;IACH,CAAC;IAEO,sDAAoB,GAA5B;QACE,IAAM,YAAY,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,sCAAsC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,MAAG,CAAC;aACrI,EAAE,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAEO,iEAA+B,GAAvC,UAAwC,WAAiC;QAAzE,iBAEC;QADC,WAAW,CAAC,OAAO,CAAC,oBAAU,IAAI,YAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAA/C,CAA+C,CAAC,CAAC;IACrF,CAAC;IAEO,gEAA8B,GAAtC,UAAuC,UAA8B;QAArE,iBAiBC;QAhBC,IAAM,aAAa,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gDAAgD,EAAE,CAAC,CAAC,EAAE,CAAC;QACnG,IAAM,YAAY,GAAG,QAAE,CACrB,QAAQ,EACR;YACE,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,sCAAsC;YACjD,SAAS,EAAE,WAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC,YAAY,CAAC;SACxD,EACD,mBAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAChC,CAAC,EAAE,CAAC;QACL,IAAM,YAAY,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,4CAA4C,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1H,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAEvC,QAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAlC,CAAkC,CAAC,CAAC;QACvE,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAEO,mDAAiB,GAAzB,UAA0B,UAA8B;QAAxD,iBAIC;QAHC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,oBAAoB,EAAE,EAA3B,CAA2B,CAAC,CAAC;IAChE,CAAC;IAEO,sDAAoB,GAA5B;QACE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kDAAwB,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC7G,CAAC;IAEO,qEAAmC,GAA3C,UAA4C,WAAiC;QAA7E,iBAmBC;QAlBC,IAAM,KAAK,GAAG,WAAC,CAAC,OAAO,EAAE,KAAG,WAAW,CAAC,MAAQ,CAAC,CAAC;QAClD,IAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,EAAS;gBAAP,gBAAK;YAAO,YAAK;QAAL,CAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAM,gBAAgB,GAAG,QAAE,CACzB,QAAQ,EACR;YACE,SAAS,EAAE,yCAAyC;YACpD,IAAI,EAAE,QAAQ;YACd,KAAK;SACN,EACD,KAAK,CACN,CAAC,EAAE,CAAC;QAEL,QAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC/B,QAAE,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9B,KAAI,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC;IACH,8BAAC;AAAD,CAAC;AAjFY,0DAAuB;;;;;;;;ACRpC,yC;;;;;;;;;;ACAA,0CAAgD;AAChD,uCAA0C;AAC1C,uDAAgF;AAEhF,mDAAyF;AACzF,gDAAmE;AACnE,iEAAoF;AAEpF,yBAAwD;AAExD,2CAAiD;AAEjD;IAKE,4BAAoB,KAAoB;QAAxC,iBAqBC;QArBmB,UAAK,GAAL,KAAK,CAAe;QACtC,IAAI,CAAC,qBAAqB,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC;YAC3B,KAAK,EAAE,WAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACxD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ;YAC7C,aAAa,EAAE,eAAK,IAAI,YAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAxC,CAAwC;YAChE,wBAAwB,EAAE,UAAC,QAA8B,IAAK,YAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAvC,CAAuC;YACrG,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,eAAe,EAAE,WAAC,CAAC,QAAQ,CAAC;YAC5B,gBAAgB,EAAE,4BAA4B;YAC9C,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE;gBACV,iBAAiB,EAAE,cAAM,YAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,EAA7C,CAA6C;gBACtE,sBAAsB,EAAE,cAAM,YAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAA9C,CAA8C;gBAC5E,iBAAiB,EAAE,GAAG;aACvB;YACD,uBAAuB,EAAE,2BAA2B;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACvC,CAAC;IAEO,4CAAe,GAAvB,UAAwB,KAAa;QACnC,OAAO,uBAAU,CAAC,+BAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAe,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAChI,CAAC;IAEO,qDAAwB,GAAhC,UAAiC,QAA8B;QAA/D,iBAmBC;QAlBC,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,KAAK;YACtC,IAAM,UAAU,GAAG,IAAI,qCAAiB,CACtC;gBACE,KAAK,EAAE,KAAK,CAAC,QAAQ;gBACrB,iFAAiF;gBACjF,YAAY,EAAE,KAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC;gBACtD,eAAe,EAAE,KAAK,CAAC,KAAK;gBAC5B,KAAK,EAAE,iCAAe,CAAC,IAAI;gBAC3B,QAAQ,EAAE,KAAK,GAAG,CAAC;aACpB,EACD,KAAI,CAAC,KAAK,EACV,iEAA+B,CAChC,CAAC;YACF,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,UAAU,CAAC,eAAe;aACpC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,0CAAa,GAArB,UAAsB,EAAyB;YAAvB,gBAAK;QACO,KAAK,CAAC,QAAS,CAAC,YAAY,EAAE,CAAC;IACnE,CAAC;IACH,yBAAC;AAAD,CAAC;AAxDY,gDAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACX/B,2CAAiD;AACjD,2CAAiD;AACjD,0CAA+C;AAG/C,4DAAyE;AAEzE;IAOE,+BAAoB,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;QANhC,UAAK,GAAG,EAAE,CAAC;QACX,cAAS,GAAG,CAAC,CAAC;QACd,6BAAwB,GAAG,CAAC,CAAC;QAE9B,wBAAmB,GAAG,IAAI,CAAC;IAES,CAAC;IAEpC,sDAAsB,GAA9B;QACE,IAAM,mBAAmB,GAA2B,EAAE,CAAC;QACvD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE;YACxC,IAAM,GAAG,GAAG,OAAI,KAAO,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,mBAAmB,CAAC,GAAG,CAAC,GAAG,qBAAS,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;SAC/D;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,2DAA2B,GAAnC;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACrD,IAAM,UAAU,GAAG,uBAAU,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACzE,IAAM,YAAY,GAAG,uBAAU,CAAC,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7E,IAAM,OAAO,GAAG,uBAAU,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEnE,IAAI,UAAU,IAAI,YAAY,EAAE;YAC9B,OAAO,qBAAS,CAAC,mBAAmB,EAAE,CAAC;SACxC;QAED,IAAI,OAAO,EAAE;YACX,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACtC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,sBAAY,2CAAQ;aAApB;YACE,oBACK,IAAI,CAAC,2BAA2B,EAAE,EAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAClC;QACJ,CAAC;;;OAAA;IAED,sBAAY,iDAAc;aAA1B;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5F,CAAC;;;OAAA;IAED,sBAAY,0CAAO;aAAnB;YACE,IAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAE9F,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC3B,gBAAgB,EAAE,sDAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC/D,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,eAAK,IAAI,YAAK,CAAC,KAAK,EAAX,CAAW,CAAC;gBACtE,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE;gBACxD,KAAK,EAAE,KAAG,uBAAuB,GAAG,IAAI,CAAC,KAAK,MAAG;aAClD,CAAC;QACJ,CAAC;;;OAAA;IAEa,8CAAc,GAA5B;;;;;4BACmB,qBAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;wBAAnF,QAAQ,GAAG,SAAwE;wBACzF,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;wBACxD,sBAAO,QAAQ,EAAC;;;;KACjB;IAEM,sCAAM,GAAb,UAAc,KAAa;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAEM,gDAAgB,GAAvB;QACE,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IACH,4BAAC;AAAD,CAAC;AA7EY,sDAAqB;;;;;;;;;;;ACRlC,mCAA0C;AAE1C,2DAAyG;AAGzG;IAIE,yCAAoB,UAA6B,EAAU,KAAoB;QAA3D,eAAU,GAAV,UAAU,CAAmB;QAAU,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAE5E,gDAAM,GAAb;QACE,IAAI,CAAC,GAAG,GAAG,QAAE,CAAC,KAAK,EAAE;YACnB,SAAS,EAAE,2BAA2B;YACtC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;IAEO,wDAAc,GAAtB;QACE,IAAI,CAAC,aAAa,GAAG,IAAI,qDAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpE,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE7E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,sDAAY,GAAnB;QAAA,iBAMC;QALC,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE,EAA5C,CAA4C,CAAC,CAAC;IACjF,CAAC;IACH,sCAAC;AAAD,CAAC;AA9BY,0EAA+B;;;;;;;;;;;ACL5C,2CAAoD;AAEpD,mDAAwD;AAExD,gDAAsE;AACtE,2DAAwE;AAExE;IACE,kCAAoB,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAEpC,kDAAe,GAAvB,UAAwB,KAAa;QACnC,OAAO,uBAAU,CAAC,+BAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAe,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAChI,CAAC;IAEM,mDAAgB,GAAvB;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,qDAAkB,GAAzB,UAA0B,UAA+B,EAAE,KAAa;QACtE,OAAO,IAAI,qCAAiB,CAC1B;YACE,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC;YACpD,eAAe,EAAE,UAAU,CAAC,eAAe;YAC3C,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,QAAQ,EAAE,KAAK,GAAG,CAAC;SACpB,EACD,IAAI,CAAC,KAAK,EACV,qDAAyB,CAC1B,CAAC;IACJ,CAAC;IAEM,kDAAe,GAAtB,UAAuB,KAAa;QAClC,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7D,IAAM,KAAK,GAAG,iCAAe,CAAC,IAAI,CAAC;QACnC,IAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,IAAI,qCAAiB,CAAC,EAAE,KAAK,SAAE,YAAY,gBAAE,KAAK,SAAE,eAAe,EAAE,CAAC,EAAE,QAAQ,YAAE,EAAE,IAAI,CAAC,KAAK,EAAE,qDAAyB,CAAC,CAAC;IACpI,CAAC;IACH,+BAAC;AAAD,CAAC;AA/BY,4DAAwB;;;;;;;;;;;ACPrC;;;;GAIG;AACH,IAAY,eAUX;AAVD,WAAY,eAAe;IACzB;;;OAGG;IACH,gCAAa;IACb;;OAEG;IACH,wCAAqB;AACvB,CAAC,EAVW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAU1B;;;;;;;;;;;ACfD,gDAA4D;AAE5D;;GAEG;AACU,8BAAsB,GAAG;IACpC;;;;;;;;;;;;OAYG;IACH,oBAAoB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/G,oBAAoB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;QACvD,UAAU,EACR,kMAAkM;KACrM,CAAC;IACF;;;;;;;;;OASG;IACH,mBAAmB,EAAE,mCAAgB,CAAC,0BAA0B,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;CACnG,CAAC;;;;;;;;;;;;;;;;;;;;;ACnCF,yCAA8C;AAC9C,gDAA4D;AAE5D,6CAAqD;AACrD,qCAAmC;AACnC,8CAAwD;AAcxD;;;;;;GAMG;AACH;IAAsC,oCAAS;IA0D7C,0BAAmB,OAAoB,EAAE,OAAkC,EAAE,QAA6B;QAA1G,YACE,kBAAM,OAAO,EAAE,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAO9C;QARkB,aAAO,GAAP,OAAO,CAAa;QAGrC,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACzF,IAAI,KAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YACjC,IAAM,eAAe,GAAG,KAAI,CAAC,OAAO,CAAC,eAAe,IAAI,KAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YACrF,KAAI,CAAC,OAAO,CAAC,eAAe,GAAG,mCAAgB,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;SAC3F;;IACH,CAAC;IAjEM,mBAAE,GAAG,kBAAkB,CAAC;IAE/B;;OAEG;IACI,wBAAO,GAA6B;QACzC;;;;WAIG;QACH,UAAU,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAChD;;;WAGG;QACH,OAAO,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACpE;;;;;;WAMG;QACH,uBAAuB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC;YAC3D,cAAc,EAAE,UAAC,KAAK,EAAE,OAAiC,IAAK,QAAC,YAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAA3D,CAA2D;SAC1H,CAAC;QACF;;;;;;WAMG;QACH,gBAAgB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC;YACpD,cAAc,EAAE,UAAC,KAAK,EAAE,OAAiC,IAAK,QAAC,YAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAA1D,CAA0D;SACzH,CAAC;QACF;;;;;;;;WAQG;QACH,eAAe,EAAE,mCAAgB,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;KAC9F,CAAC;IAEK,yBAAQ,GAAG;QAChB,8BAAc,CAAC;YACb,gBAAgB,EAAE,gBAAgB;SACnC,CAAC,CAAC;IACL,CAAC,CAAC;IAaJ,uBAAC;CAAA,CAnEqC,qBAAS,GAmE9C;AAnEY,4CAAgB;AAqE7B,+BAAc,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/F7D,yBAAyB;AACzB,yBAA8B;AAC9B,yBAA6B;AAC7B,0CAA2G;AAC3G,4CAOkC;AAClC,oDAAgG;AAChG,iDAKuC;AACvC,6CAAqD;AACrD,sCAA2C;AAC3C,sCAAyC;AACzC,sCAAkD;AAClD,gDAAsE;AAGtE,4CAAsD;AACtD,mCAA+C;AAC/C,yCAAgD;AAChD,qCAA0C;AAC1C,wDAAkG;AAClG,yCAA8C;AAE9C,gDAA4D;AAC5D,8CAAgG;AAChG,2DAA8E;AAC9E,yDAA4E;AAC5E,iEAA0G;AAE1G,6CAAuD;AACvD,+DAA2F;AAC3F,uDAA2E;AAC3E,+CAA2D;AAE3D,8CAA2D;AAC3D,6CAAyD;AACzD,iDAAoD;AACpD,wDAAkE;AAClE,oDAA0D;AAC1D,yDAAoE;AAGpE,iDAA8D;AAC9D,gDAA8E;AAE9E,yBAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAItD;;;;;;;;;;GAUG;AACH;IAAgC,8BAAS;IA8NvC;;;;;;;;;;OAUG;IACH,oBACS,OAAoB,EACpB,OAA4B,EAC5B,QAA6B,EACpC,cAAsC;QAAtC,kDAAyB,UAAU,CAAC,EAAE;QAJxC,YAME,kBAAM,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,SAyBzC;QA9BQ,aAAO,GAAP,OAAO,CAAa;QACpB,aAAO,GAAP,OAAO,CAAqB;QAC5B,cAAQ,GAAR,QAAQ,CAAqB;QA9B/B,+BAAyB,GAAmB,EAAE,CAAC;QAE9C,4BAAsB,GAAG,KAAK,CAAC;QAC/B,yBAAmB,GAAG,KAAK,CAAC;QAIpC,2HAA2H;QAC3H,gMAAgM;QAChM,4HAA4H;QAC5H,mHAAmH;QACnH,mGAAmG;QACnG,0EAA0E;QAClE,2BAAqB,GAAG,CAAC,CAAC;QAqBhC,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnF,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,eAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,eAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3C,eAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAEpD,KAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEtD,KAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,KAAI,CAAC,eAAe,GAAG,KAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,eAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAE7C,KAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,eAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAEnD,KAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,QAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,uCAAkB,CAAC,oBAAoB,EAAE,UAAC,CAAC,EAAE,IAA+B;YAC3F,WAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAAtC,CAAsC,CACvC,CAAC;QACF,KAAI,CAAC,aAAa,EAAE,CAAC;QACrB,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,KAAI,CAAC,WAAW,EAAE,CAAC;;IACrB,CAAC;IAvQc,6BAAkB,GAAjC,UAAkC,CAAc;QAC9C,IAAM,QAAQ,GAAG,UAAU,CAAC,sBAAsB,EAAE,CAAC;QACrD,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,OAAO,QAAQ,CAAC;SACjB;QAED,IAAM,SAAS,GAAe,qBAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC,eAAe,YAAY,KAAK,CAAC,gBAAgB,CAAC,EAAE;YAC3F,OAAO,IAAI,6DAA6B,EAAE,CAAC;SAC5C;QACD,OAAO,IAAI,6CAAqB,EAAE,CAAC;IACrC,CAAC;IAEc,iCAAsB,GAArC;QACE,IAAI,iBAAiB,GAAG,6BAAa,CAAC,0BAA0B,EAAE,CAAC;QACnE,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,OAAO,IAAI,2BAAY,CAAC,oBAAO,CAAC,gBAAG,CAAC,iBAAiB,EAAE,sBAAY,IAAI,oCAAa,CAAC,WAAW,CAAC,YAAY,CAAC,EAAvC,CAAuC,CAAC,CAAC,CAAC,CAAC;SACnH;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAqPO,iCAAY,GAApB;QAAA,iBAiBC;QAhBC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAqB,yBAAW,CAAC,QAAQ,EAAE,UAAC,IAAwB,IAAK,YAAI,CAAC,cAAc,EAAE,EAArB,CAAqB,CAAC,CAAC;QACvH,IAAI,CAAC,IAAI,CAAC,aAAa,CAA0B,yBAAW,CAAC,aAAa,EAAE,UAAC,IAA6B;YACxG,YAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAA9B,CAA8B,CAC/B,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAyB,yBAAW,CAAC,YAAY,EAAE,UAAC,IAA4B;YACrG,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAA7B,CAA6B,CAC9B,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAwB,yBAAW,CAAC,WAAW,EAAE,UAAC,IAA2B,IAAK,YAAI,CAAC,iBAAiB,EAAE,EAAxB,CAAwB,CAAC,CAAC;QACnI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAuB,yBAAW,CAAC,UAAU,EAAE,UAAC,IAA0B,IAAK,YAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,CAAC,CAAC;QAC/H,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,mCAAgB,CAAC,YAAY,EAAE,UAAC,CAAQ,EAAE,IAA4B,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC,CAAC;QAE3H,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACrC,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;IACH,CAAC;IAEO,+CAA0B,GAAlC;QAAA,iBAUC;QATC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAc,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,EAAE;YACxE,KAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;YAC/B,KAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,oBAAoB,EAAE;YACxD,UAAU,CAAC;gBACT,KAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sCAAiB,GAAzB;QAAA,iBAQC;QAPC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAY,CAAC,UAAU,EAAE,wCAAsB,CAAC,KAAK,EAAE;YAC5E,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,yBAAW,CAAC,oBAAoB,EAAE;gBACzD,UAAU,CAAC;oBACT,KAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,CAAC,EAAE,CAAC,CAAC,CAAC;YACR,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,mDAA8B,GAArC;QACE,OAAO,kBAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IAC5H,CAAC;IAEO,gDAA2B,GAAnC;QAAA,iBAsBC;QArBC,IAAM,gBAAgB,GAAG,WAAS,IAAI,CAAC,OAAO,CAAC,MAAM,sBAAmB,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,6BAAa,CAAgB,IAAI,CAAC,OAAO,CAAC,cAAe,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;SAC9G;QAED,uGAAuG;QACvG,8FAA8F;QAC9F,qHAAqH;QACrH,8DAA8D;QAC9D,0EAA0E;QAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,YAAY,2BAAY,EAAE;YACvD,iBAAI,CAAgB,IAAI,CAAC,OAAO,CAAC,cAAe,CAAC,SAAS,EAAE,UAAC,IAAc;gBACzE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAChB,IAAI,CAAC,MAAM,GAAgB,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC;iBAChD;YACH,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,YAAY,6CAAqB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE;YACxG,iEAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;SAC3D;IACH,CAAC;IAED;;;;;;;;OAQG;IACI,kCAAa,GAApB,UAAqB,cAA6B,EAAE,MAAc;QAAlE,iBAQC;QARmD,uCAAc;QAChE,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC,QAAQ;aACjB,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChF,IAAI,CAAC,cAAM,YAAI,CAAC,0BAA0B,EAAE,EAAjC,CAAiC,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACI,iCAAY,GAAnB,UAAoB,OAAsB;QACxC,IAAM,MAAM,GAAwB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACxD,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3F,CAAC;IAED;;;;OAIG;IACI,gCAAW,GAAlB,UAAmB,MAAoB;QACrC,IAAM,MAAM,GAAwB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACxD,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzF,CAAC;IAED;;;;;;;;OAQG;IACI,uCAAkB,GAAzB,UAA0B,KAAa;QACrC,eAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,8BAA8B,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YAC1F,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;YACxG,OAAO;SACR;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE;YACrD,IAAI,CAAC,wCAAwC,EAAE,CAAC;SACjD;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,sBAAW,sCAAc;aAAzB;YACE,IAAM,kBAAkB,GAAoB;gBAC1C,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;gBAC3C,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,eAAe,EAAE,IAAI,CAAC,eAAe;aACtC,CAAC;YACF,OAAO,IAAI,+BAAc,CAAC,kBAAkB,CAAC,CAAC;QAChD,CAAC;;;OAAA;IAED;;;OAGG;IACI,wCAAmB,GAA1B;QACE,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;IAED;;;OAGG;IACI,gDAA2B,GAAlC;QACE,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;IAClD,CAAC;IAEM,2BAAM,GAAb;QACE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACnC;aAAM;YACL,iBAAM,MAAM,WAAE,CAAC;YACf,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,4BAAO,GAAd;QAAA,iBAUC;QATC,iBAAM,OAAO,WAAE,CAAC;QAChB,IAAM,uBAAuB,GAAG,gBAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,yBAAe,IAAI,sBAAe,CAAC,OAAO,CAAC,MAAM,EAA9B,CAA8B,CAAC,CAAC;QAC9G,IAAI,CAAC,qBAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACxF,iBAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,8BAAoB;gBACnD,oBAAoB,CAAC,cAAc,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,MAAM,CAAkB,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAES,qDAAgC,GAA1C,UAA2C,OAAoB,EAAE,MAAoB;QACnF,OAAO,IAAI,CAAC,cAAc,CAAC,gCAAgC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAES,8CAAyB,GAAnC,UAAoC,MAAoB,EAAE,aAA0B;QAClF,IAAM,IAAI,GAAiC;YACzC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa;SACpB,CAAC;QACF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,mCAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAES,+CAA0B,GAApC;QACE,IAAM,IAAI,GAAkC;YAC1C,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB;SAC3D,CAAC;QACF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,mCAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAEa,8CAAyB,GAAvC,UAAwC,KAAa;;;;;;wBACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;;;wBAGlD,qBAAM,IAAI,CAAC,mBAAmB;;wBAArC,IAAI,GAAG,SAA8B;wBAC3C,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBACpB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,kDAAwB,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;wBAEhH,IAAI,CAAC,sBAAsB,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;wBAC1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;wBAE5B,IAAI,CAAC,kCAAkC,EAAE,CAAC;wBAE1C,sBAAO,IAAI,EAAC;;;wBAEZ,IAAI,CAAC,kCAAkC,EAAE,CAAC;wBAC1C,sBAAO,OAAO,CAAC,MAAM,CAAC,GAAC,CAAC,EAAC;;;;;KAE5B;IAEa,qCAAgB,GAA9B,UAA+B,IAAmB;;;;;4BAC/B,qBAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;wBAAxC,QAAQ,GAAG,SAA6B;wBAC9C,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;wBACnC,UAAI,CAAC,yBAAyB,EAAC,IAAI,WAAI,IAAI,CAAC,OAAO,EAAE;wBACrD,IAAI,CAAC,0BAA0B,EAAE,CAAC;;;;;KACnC;IAEO,uDAAkC,GAA1C;QAAA,iBAcC;QAbC,IAAI,CAAC,wCAAwC,EAAE,CAAC;QAChD,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,aAAK,CAAC,KAAK,CAAC;YACV,KAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,KAAI,CAAC,qBAAqB,IAAI,UAAU,CAAC,gCAAgC,EAAE;gBAC7E,KAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC;iBAAM;gBACL,KAAI,CAAC,MAAM,CAAC,IAAI,CACd,2UACkM,CACnM,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sCAAiB,GAAzB;QACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAEO,qCAAgB,GAAxB;QACE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEO,uCAAkB,GAA1B,UAA2B,IAA4B;QAAvD,iBA0BC;QAzBC,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,UAAU,CAAC,4BAA4B,GAAG,SAAS,CAAC;QACpD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAEvF,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAO,QAAuB;;;4BACjE,qBAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;;wBAAlC,SAAkC,CAAC;wBAEnC,IAAI,CAAC,kCAAkC,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;wBAE1F,IAAI,yBAAW,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,SAAS,EAAE;4BACnF,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,SAAS,GAAG,CAAC,CAAC;yBAClD;wBAED,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;4BACpG,2GAA2G;4BAC3G,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BAC5B,IAAI,CAAC,wBAAwB,EAAE,CAAC;yBACjC;;;;aACF,CAAC,CAAC;IACL,CAAC;IAEO,6CAAwB,GAAhC;QACE,IAAI,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YAC/E,OAAO;SACR;QACD,IAAI,IAAI,CAAC,wCAAwC,EAAE,IAAI,IAAI,CAAC,kCAAkC,EAAE,EAAE;YAChG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;SAC9D;IACH,CAAC;IAEO,yCAAoB,GAA5B;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACnC,OAAO;SACR;QAED,iCAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEO,mCAAc,GAAtB;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7C,UAAU,CAAC,4BAA4B,GAAG,SAAS,CAAC;IACtD,CAAC;IAED,sBAAY,wCAAgB;aAA5B;YACE,IAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAiB,CAAC;YACzF,OAAO,oBAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;;;OAAA;IAED,sBAAY,6CAAqB;aAAjC;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,sBAAsB,CAAsD,CAAC;QACzH,CAAC;;;OAAA;IAES,wCAAmB,GAA7B,UAA8B,IAA6B;QACzD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,EAAE;YACxC,eAAe;YACf,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,gBAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,eAAK,IAAI,YAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAf,CAAe,CAAC,CAAC,CAAC;SACnG;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YAC1C,IAAM,WAAW,GAAG,oBAAO,CACzB,gBAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,yBAAe;gBACxC,OAAO,eAAe,CAAC,8BAA8B,EAAE,CAAC;YAC1D,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,mBAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;YACvG,IAAI,CAAC,YAAY,CAAC,qBAAqB,GAAG,IAAI,CAAC;SAChD;IACH,CAAC;IAES,uCAAkB,GAA5B,UAA6B,IAA4B;QAAzD,iBAsBC;QArBC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,GAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACtE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,kEAAkE;gBAClE,uEAAuE;gBACvE,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;oBAClC,IAAI,qDAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC,4BAA4B,EAAE,CAAC;iBAClG;gBACD,aAAK,CAAC,KAAK,CAAC;;;;oCACO,qBAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;;gCAAhD,QAAQ,GAAG,SAAqC;gCACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gCAC7B,IAAI,CAAC,kCAAkC,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;;;;qBAC5F,CAAC,CAAC;aACJ;SACF;aAAM;YACL,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;SAC9B;IACH,CAAC;IAEO,mDAA8B,GAAtC;QACE,OAAO,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC;IAEO,8CAAyB,GAAjC;QACE,oDAAoD;QACpD,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC5G,CAAC;IAEO,6DAAwC,GAAhD;QACE,oHAAoH;QACpH,IAAI,QAAQ,CAAC;QACb,IAAI;YACF,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,YAAY,MAAM,CAAC;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,QAAQ,GAAG,KAAK,CAAC;SAClB;QACD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IACpG,CAAC;IAEO,qDAAgC,GAAxC;QACE,IAAM,GAAG,GAAG,IAAI,SAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAClC,IAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,IAAM,UAAU,GAAG,IAAI,SAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO,UAAU,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;IACpE,CAAC;IAEO,mDAA8B,GAAtC;QACE,IAAM,EAAE,GAAgB,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;QAC7D,IAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC;QACtC,IAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;QACrC,IAAM,cAAc,GAAG,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC;QACpD,OAAO,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,CAAC,CAAC;IAC3D,CAAC;IAEM,uDAAkC,GAAzC;QACE,OAAO,IAAI,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACnF,CAAC;IAEO,sDAAiC,GAAzC;QACE,IAAI,IAAI,CAAC,8BAA8B,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACzC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;SACtC;IACH,CAAC;IAEO,uDAAkC,GAA1C,UAA2C,QAAiB,EAAE,UAAmB;QAC/E,IAAM,WAAW,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACrE,IAAM,aAAa,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC1E,IAAM,aAAa,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACzE,IAAM,eAAe,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAE9E,iBAAI,CAAC,WAAW,EAAE,UAAC,CAAc;YAC/B,QAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,iBAAI,CAAC,aAAa,EAAE,UAAC,CAAc;YACjC,QAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,iBAAI,CAAC,aAAa,EAAE,UAAC,CAAc;YACjC,QAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,iBAAI,CAAC,eAAe,EAAE,UAAC,CAAc;YACnC,QAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAY,qCAAa;aAAzB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAmB,CAAC;QACnE,CAAC;;;OAAA;IAEO,yCAAoB,GAA5B;QACE,QAAQ,IAAI,CAAC,aAAa,EAAE;YAC1B,KAAK,MAAM;gBACT,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACnE,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;gBACpC,IAAI,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,SAAS,EAAE;oBACtF,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,CAAC,mBAAQ,CAAC,wBAAwB,EAAE,CAAC,CAAC;iBACtF;gBACD,MAAM;SACT;IACH,CAAC;IAEO,yCAAoB,GAA5B;QACE,QAAQ,IAAI,CAAC,aAAa,EAAE;YAC1B,KAAK,MAAM;gBACT,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACtE,MAAM;YACR,KAAK,SAAS;gBACZ,IAAM,OAAO,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACvF,IAAI,OAAO,EAAE;oBACX,QAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;iBACtB;gBACD,MAAM;SACT;IACH,CAAC;IAEO,6DAAwC,GAAhD;QACE,IAAM,OAAO,GAAG,mBAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACtE,IAAM,wBAAwB,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;YACrH,iBAAI,CAAC,wBAAwB,EAAE,yBAAe,IAAI,eAAE,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,EAA5B,CAA4B,CAAC,CAAC;YAChF,IAAM,gBAAgB,GAAG,QAAE,CAAC,KAAK,EAAE;gBACjC,SAAS,EAAE,iCAAiC;aAC7C,CAAC,CAAC;YACH,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;SACtE;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,CAAC,mBAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC/E;IACH,CAAC;IAEO,6DAAwC,GAAhD;QACE,IAAM,QAAQ,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC3F,IAAM,UAAU,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACvG,iBAAI,CAAC,QAAQ,EAAE,iBAAO,IAAI,eAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAApB,CAAoB,CAAC,CAAC;QAChD,iBAAI,CAAC,UAAU,EAAE,mBAAS,IAAI,eAAE,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAtB,CAAsB,CAAC,CAAC;IACxD,CAAC;IAEO,wCAAmB,GAA3B;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAClC,IAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YACnE,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,QAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,6BAA6B,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9F,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACpC;QACD,OAAO,IAAI,iCAAe,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClF,CAAC;IAES,gDAA2B,GAArC;QACE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAEO,+CAA0B,GAAlC;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;YACxC,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SAC/D;IACH,CAAC;IAEO,kCAAa,GAArB;QACE,IAAM,cAAc,GAA8B;YAChD,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,qBAAqB;YAC3D,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QAEF,IAAM,sBAAsB,GAAG,UAAC,IAAiB,IAAK,sCAAc,CAAC,mCAAmC,CAAC,IAAI,EAAE,cAAc,CAAC,EAAxE,CAAwE,CAAC;QAE/H,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC3B,KAAK,MAAM;gBACT,IAAI,CAAC,QAAQ,GAAG,IAAI,+CAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;gBACjF,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,QAAQ,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;gBAClF,MAAM;YACR,KAAK,MAAM,CAAC;YACZ;gBACE,IAAI,CAAC,QAAQ,GAAG,IAAI,uCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;gBAC7E,MAAM;SACT;IACH,CAAC;IAEO,yCAAoB,GAA5B;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAEO,gCAAW,GAAnB;QACE,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,IAAI,SAAS,KAAK,EAAE,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,qBAAQ,CAAC,mBAAmB,CAAC,CAAC;SACjD;IACH,CAAC;IAEO,+CAA0B,GAAlC;QAAA,iBAUC;QATC,sIAAsI;QACtI,iBAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,8BAAoB;YACnD,IAAM,KAAK,GAAG,iBAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,UAAC,YAAY,EAAE,eAAe,IAAK,sBAAe,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,EAAtC,CAAsC,CAAC,CAAC;YAClI,IAAI,KAAK,EAAE;gBACT,iBAAM,MAAM,YAAE,CAAC;gBACf,oBAAoB,CAAC,aAAa,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,MAAM,CAAkB,CAAC,CAAC;gBAC3E,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IArxBM,aAAE,GAAG,YAAY,CAAC;IAElB,mBAAQ,GAAG;QAChB,8BAAc,CAAC;YACb,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF;;;OAGG;IACI,kBAAO,GAAuB;QACnC;;;;;;;;;;WAUG;QACH,gBAAgB,EAAE,mCAAgB,CAAC,2BAA2B,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QACpG,cAAc,EAAE,mDAAwB,CAAC,mBAAmB,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,kBAAkB,EAAE,CAAC;QAEhH;;;;;;;;;;;WAWG;QACH,aAAa,EAAE,mCAAgB,CAAC,iBAAiB,CAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QAE1F;;;;;;;WAOG;QACH,sBAAsB,EAAE,mCAAgB,CAAC,2BAA2B,CAAC;YACnE,cAAc,EAAE,UAAC,KAAK,EAAE,OAA2B,IAAK,YAAK,IAAI,OAAO,CAAC,gBAAgB,EAAjC,CAAiC;SAC1F,CAAC;QAEF;;;;;;;;;;;WAWG;QACH,oBAAoB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAElF;;;;;WAKG;QACH,sBAAsB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;YACzD,YAAY,EAAE,EAAE;YAChB,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,sBAAsB;SAC/B,CAAC;QAEF;;;;;;;;;;;;;;;;;;WAkBG;QACH,uBAAuB,EAAE,mCAAgB,CAAC,2BAA2B,CAAC;YACpE,MAAM,EAAE,sBAAsB;YAC9B,eAAe,EAAE,iBAAO,IAAI,0CAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAA7C,CAA6C;SAC1E,CAAC;QAEF;;;WAGG;QACH,oCAAoC,EAAE,mCAAgB,CAAC,kBAAkB,CAAC;YACxE,MAAM,EAAE,sBAAsB;YAC9B,YAAY,EAAE,IAAI;SACnB,CAAC;QACF,qBAAqB,EAAE,mCAAgB,CAAC,mBAAmB,CAAC;YAC1D,eAAe,EAAE,cAAM,OAAa,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,EAA5D,CAA4D;SACpF,CAAC;QAEF;;;;;;;;;;;;;;WAcG;QACH,yBAAyB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEvF;;;;;;;;;;;;;;;WAeG;QACH,eAAe,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;QAE/E;;;;;;;;;;;;WAYG;QACH,MAAM,EAAE,mCAAgB,CAAC,iBAAiB,CAAc;YACtD,YAAY,EAAE,MAAM;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF;;;;;;;;WAQG;QACH,iBAAiB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC;YACrD,YAAY,EAAE,IAAI;SACnB,CAAC;KACH,CAAC;IAEY,uCAA4B,GAAiB,IAAI,CAAC;IAejD,2CAAgC,GAAG,CAAC,CAAC;IAilBtD,iBAAC;CAAA,CA7yB+B,qBAAS,GA6yBxC;AA7yBY,gCAAU;AA+yBvB,+BAAc,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC","file":"DynamicFacet__d2b01b0f173a0c131e66.js","sourcesContent":["import { Component } from '../ui/Base/Component';\nimport { ResultList } from '../ui/ResultList/ResultList';\nimport { $$ } from './Dom';\nimport { find } from 'underscore';\nimport { Logger } from '../misc/Logger';\n\nexport class ResultListUtils {\n  public static hideIfInfiniteScrollEnabled(cmp: Component) {\n    const infiniteScrollEnabled = ResultListUtils.isInfiniteScrollEnabled(cmp.searchInterface.element);\n\n    if (infiniteScrollEnabled) {\n      cmp.disable();\n      $$(cmp.element).hide();\n      ResultListUtils.warnIfComponentNotNeeded(cmp);\n    } else {\n      cmp.enable();\n      $$(cmp.element).unhide();\n    }\n  }\n\n  public static isInfiniteScrollEnabled(root: HTMLElement) {\n    const resultList = ResultListUtils.getActiveResultList(root);\n    return resultList ? !!resultList.options.enableInfiniteScroll : false;\n  }\n\n  public static scrollToTop(root: HTMLElement) {\n    const resultList = ResultListUtils.getActiveResultList(root);\n    if (!resultList) {\n      new Logger(this).warn('No active ResultList, scrolling to the top of the Window');\n      return window.scrollTo(0, 0);\n    }\n\n    const searchInterfacePosition = resultList.searchInterface.element.getBoundingClientRect().top;\n    if (searchInterfacePosition > 0) {\n      return;\n    }\n\n    window.scrollTo(0, window.pageYOffset + searchInterfacePosition);\n  }\n\n  private static getActiveResultList(root: HTMLElement) {\n    const resultLists = ResultListUtils.getResultLists(root);\n    return find(resultLists, resultList => !resultList.disabled);\n  }\n\n  private static getResultLists(root: HTMLElement) {\n    return $$(root)\n      .findAll(`.${ResultListUtils.cssClass()}`)\n      .map(el => <ResultList>Component.get(el, ResultList));\n  }\n\n  private static cssClass() {\n    return Component.computeCssClassName(ResultList);\n  }\n\n  private static warnIfComponentNotNeeded(cmp: Component) {\n    const root = cmp.searchInterface.root;\n    const allListsUseInfiniteScroll = ResultListUtils.allResultListsUseInfiniteScroll(root);\n\n    allListsUseInfiniteScroll && ResultListUtils.notNeededComponentWarning(cmp);\n  }\n\n  private static allResultListsUseInfiniteScroll(root: HTMLElement) {\n    const listsWithInfiniteScrollDisabled = ResultListUtils.getResultLists(root).filter(\n      resultList => !resultList.options.enableInfiniteScroll\n    );\n\n    return listsWithInfiniteScrollDisabled.length === 0;\n  }\n\n  private static notNeededComponentWarning(cmp: Component) {\n    const cmpCssClass = Component.computeCssClassNameForType(cmp.type);\n    const message = `The ${cmpCssClass} component is not needed because all ${ResultListUtils.cssClass()} components have enableInfiniteScroll set to 'true'.\n    For the best performance, remove the ${cmpCssClass} component from your search page.`;\n\n    new Logger(cmp).warn(message);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/ResultListUtils.ts","import { Dom } from '../../utils/Dom';\nimport { ResponsiveDropdownContent } from './ResponsiveDropdown/ResponsiveDropdownContent';\n\nexport class ResponsiveComponentsUtils {\n  private static smallTabsClassName: string = 'coveo-small-tabs';\n  private static smallFacetClassName: string = 'coveo-small-facets';\n  private static smallRecommendationClassName: string = 'coveo-small-recommendation';\n\n  static shouldDrawFacetSlider(root: Dom, facetSliderElement: Dom): boolean {\n    return ResponsiveDropdownContent.isTargetInsideOpenedDropdown(facetSliderElement) || !this.isSmallFacetActivated(root);\n  }\n\n  static isSmallTabsActivated(root: Dom): boolean {\n    return root.hasClass(this.smallTabsClassName);\n  }\n\n  static isSmallFacetActivated(root: Dom): boolean {\n    return root.hasClass(this.smallFacetClassName);\n  }\n\n  static isSmallRecommendationActivated(root: Dom): boolean {\n    return root.hasClass(this.smallRecommendationClassName);\n  }\n\n  static activateSmallTabs(root: Dom): void {\n    root.addClass(this.smallTabsClassName);\n  }\n\n  static deactivateSmallTabs(root: Dom): void {\n    root.removeClass(this.smallTabsClassName);\n  }\n\n  static activateSmallFacet(root: Dom): void {\n    root.addClass(this.smallFacetClassName);\n  }\n\n  static deactivateSmallFacet(root: Dom): void {\n    root.removeClass(this.smallFacetClassName);\n  }\n\n  static activateSmallRecommendation(root: Dom): void {\n    root.addClass(this.smallRecommendationClassName);\n  }\n\n  static deactivateSmallRecommendation(root: Dom): void {\n    root.removeClass(this.smallRecommendationClassName);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","import 'styling/DynamicFacet/_DynamicFacet';\nimport { IDynamicFacet, IDynamicFacetOptions } from './IDynamicFacet';\nimport { defer, difference, findIndex } from 'underscore';\nimport { $$ } from '../../utils/Dom';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { ResponsiveDynamicFacets } from '../ResponsiveComponents/ResponsiveDynamicFacets';\nimport { DynamicFacetBreadcrumbs } from './DynamicFacetBreadcrumbs';\nimport { DynamicFacetHeader } from './DynamicFacetHeader/DynamicFacetHeader';\nimport { DynamicFacetValues } from './DynamicFacetValues/DynamicFacetValues';\nimport { QueryEvents, IQuerySuccessEventArgs, IDoneBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { DynamicFacetQueryController } from '../../controllers/DynamicFacetQueryController';\nimport { Utils } from '../../utils/Utils';\nimport { MODEL_EVENTS, IAttributesChangedEventArg } from '../../models/Model';\nimport { Assert } from '../../misc/Assert';\nimport { IFacetResponse } from '../../rest/Facet/FacetResponse';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { isFacetSortCriteria, FacetSortCriteria } from '../../rest/Facet/FacetSortCriteria';\nimport { l } from '../../strings/Strings';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { IAnalyticsActionCause, analyticsActionCauseList, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { IAnalyticsFacetState } from '../Analytics/IAnalyticsFacetState';\nimport { IQueryOptions } from '../../controllers/QueryController';\nimport { DynamicFacetManager } from '../DynamicFacetManager/DynamicFacetManager';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { DynamicFacetSearch } from '../DynamicFacetSearch/DynamicFacetSearch';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { FacetType } from '../../rest/Facet/FacetRequest';\nimport { DependsOnManager, IDependentFacet, IDependentFacetCondition } from '../../utils/DependsOnManager';\nimport { DynamicFacetValueCreator } from './DynamicFacetValues/DynamicFacetValueCreator';\nimport { Logger } from '../../misc/Logger';\nimport { FacetUtils } from '../Facet/FacetUtils';\n\n/**\n * The `DynamicFacet` component displays a *facet* of the results for the current query. A facet is a list of values for a\n * certain field occurring in the results, ordered using a configurable criteria (e.g., number of occurrences).\n *\n * The list of values is obtained using an array of [`FacetRequest`]{@link IFacetRequest} operations performed at the same time\n * as the main query.\n *\n * The `DynamicFacet` component allows the end-user to drill down inside a result set by restricting the result to certain\n * field values.\n *\n * This facet is more easy to use than the original [`Facet`]{@link Facet} component. It implements additional Coveo Machine Learning (Coveo ML) features\n * such as dynamic navigation experience (DNE).\n *\n * @notSupportedIn salesforcefree\n * @availablesince [May 2019 Release (v2.6063)](https://docs.coveo.com/en/2909/)\n */\nexport class DynamicFacet extends Component implements IDynamicFacet {\n  static ID = 'DynamicFacet';\n  static doExport = () => exportGlobally({ DynamicFacet });\n\n  /**\n   * The options for the DynamicFacet\n   * @componentOptions\n   */\n  static options: IDynamicFacetOptions = {\n    ...ResponsiveFacetOptions,\n\n    /**\n     * The unique identifier for this facet.\n     *\n     * Among other things, this is used to record and read the facet\n     * state in the URL fragment identifier (see the\n     * [`enableHistory`]{@link SearchInterface.options.enableHistory} `SearchInterface`\n     * option).\n     *\n     * **Tip:** When several facets in a given search interface are based on\n     * the same field, ensure that each of those facets has a distinct `id`.\n     *\n     * If specified, must contain between 1 and 60 characters.\n     * Only alphanumeric (A-Za-z0-9), underscore (_), and hyphen (-) characters are kept; other characters are automatically removed.\n     *\n     * Defaults to the [`field`]{@link DynamicFacet.options.field} option value.\n     *\n     * @examples author-facet\n     */\n    id: ComponentOptions.buildStringOption({\n      postProcessing: (value = '', options: IDynamicFacetOptions) => {\n        const maxCharLength = 60;\n        const sanitizedValue = value.replace(/[^A-Za-z0-9-_@]+/g, '');\n        if (Utils.isNonEmptyString(sanitizedValue)) {\n          return sanitizedValue.slice(0, maxCharLength - 1);\n        }\n\n        return options.field.slice(0, maxCharLength - 1);\n      },\n      section: 'CommonOptions'\n    }),\n\n    /**\n     * The title to display for this facet.\n     *\n     * Defaults to the localized string for `NoTitle`.\n     *\n     * @examples Author\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('NoTitle'),\n      section: 'CommonOptions',\n      priority: 10\n    }),\n\n    /**\n     * The name of the field on which to base this facet.\n     *\n     * The field must of the `string` type.\n     *\n     * Must be prefixed by `@`, and must reference an existing field whose\n     * **Facet** option is enabled.\n     *\n     * @externaldocs [Add or Edit Fields](https://docs.coveo.com/en/1982/)\n     * @examples @author\n     */\n    field: ComponentOptions.buildFieldOption({ required: true, section: 'CommonOptions' }),\n\n    /**\n     * The sort criterion to use for this facet.\n     *\n     * See [`FacetSortCriteria`]{@link FacetSortCriteria} for the list and\n     * description of allowed values.\n     *\n     * By default, the following behavior applies:\n     *\n     * - If the requested [`numberOfValues`]{@link DynamicFacet.options.numberOfValues}\n     * is greater than or equal to the currently displayed number of values,\n     * the [`alphanumeric`]{@link FacetSortCriteria.alphanumeric} criterion is\n     * used.\n     * - If the requested `numberOfValues` is less than the currently displayed\n     * number of values and the facet is not currently expanded, the [`score`]{@link FacetSortCriteria.score}\n     * criterion is used.\n     * - Otherwise, the `alphanumeric` criterion is used.\n     *\n     * @examples score\n     */\n    sortCriteria: <FacetSortCriteria>ComponentOptions.buildStringOption({\n      postProcessing: value => {\n        if (!value) {\n          return undefined;\n        }\n\n        if (isFacetSortCriteria(value)) {\n          return value;\n        }\n\n        new Logger(value).warn('sortCriteria is not of the the allowed values: \"score\", \"alphanumeric\", \"occurrences\"');\n        return undefined;\n      },\n      section: 'Sorting'\n    }),\n\n    /**\n     * Specifies a custom order by which to sort the dynamic facet values.\n     *\n     * Custom-ordered values won't necessarily retrieve values from the index.\n     *\n     * **Example:**\n     *\n     * You could use this option to specify a logical order for support tickets, such as:\n     * ```html\n     * <div class=\"CoveoDynamicFacet\" data-field=\"@ticketstatus\" data-title=\"Ticket Status\" data-tab=\"All\" data-custom-sort=\"New,Opened,Feedback,Resolved\"></div>\n     * ```\n     *\n     * **Note:**\n     * > The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     */\n    customSort: ComponentOptions.buildListOption<string>({ section: 'Sorting' }),\n\n    /**\n     * The number of values to request for this facet.\n     *\n     * Also determines the default maximum number of additional values to request each time this facet is expanded,\n     * and the maximum number of values to display when this facet is collapsed (see the [`enableCollapse`]{@link DynamicFacet.options.enableCollapse} option).\n     */\n    numberOfValues: ComponentOptions.buildNumberOption({ min: 0, defaultValue: 8, section: 'CommonOptions' }),\n\n    /**\n     * Whether to allow the end-user to expand and collapse this facet.\n     */\n    enableCollapse: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether to scroll back to the top of the page whenever the end-user interacts with the facet.\n     */\n    enableScrollToTop: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether to enable the **Show more** and **Show less** buttons in the facet.\n     *\n     * **Note:** The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     */\n    enableMoreLess: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether to allow the end-user to search the facet values.\n     *\n     * **Note:** The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     *\n     * By default, the following behavior applies:\n     *\n     * - Enabled when more facet values are available.\n     * - Disabled when all available facet values are already displayed.\n     */\n    enableFacetSearch: ComponentOptions.buildBooleanOption({ section: 'Filtering' }),\n\n    /**\n     * Whether to prepend facet search queries with a wildcard.\n     *\n     * **Note:** The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     */\n    useLeadingWildcardInFacetSearch: ComponentOptions.buildBooleanOption({\n      defaultValue: true,\n      section: 'Filtering',\n      depend: 'enableFacetSearch'\n    }),\n\n    /**\n     * Whether this facet should be collapsed by default.\n     */\n    collapsedByDefault: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'CommonOptions', depend: 'enableCollapse' }),\n\n    /**\n     * Whether to notify the [`Breadcrumb`]{@link Breadcrumb} component when toggling values in the facet.\n     *\n     * See also the [`numberOfValuesInBreadcrumb`]{@link DynamicFacet.options.numberOfValuesInBreadcrumb} option.\n     */\n    includeInBreadcrumb: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * The maximum number of selected values the [`Breadcrumb`]{@link Breadcrumb} component can display before outputting a **N more...** link for the facet.\n     */\n    numberOfValuesInBreadcrumb: ComponentOptions.buildNumberOption({\n      defaultFunction: () => (DeviceUtils.isMobileDevice() ? 3 : 5),\n      min: 0,\n      depend: 'includeInBreadcrumb',\n      section: 'CommonOptions'\n    }),\n\n    /**\n     * A mapping of facet values to their desired captions.\n     *\n     * **Note:** The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     *\n     * @externaldocs [Normalizing Facet Value Captions](https://docs.coveo.com/368/).\n     * @examples { \"smith_alice\": \"Alice Smith\"\\, \"jones_bob_r\": \"Bob R. Jones\" }\n     */\n    valueCaption: ComponentOptions.buildJsonOption<IStringMap<string>>({ defaultValue: {} }),\n\n    /**\n     * The [`id`]{@link DynamicFacet.options.id} of another facet in which at least one value must be selected in order for the dependent facet to be visible.\n     *\n     * By default, the facet does not depend on any other facet to be displayed.\n     *\n     * @examples document-type-facet\n     *\n     * @availablesince [December 2019 Release (v2.7610)](https://docs.coveo.com/en/3142/)\n     */\n    dependsOn: ComponentOptions.buildStringOption({ section: 'CommonOptions' }),\n\n    /**\n     * A function that verifies whether the current state of the `dependsOn` facet allows the dependent facet to be displayed.\n     *\n     * If specified, the function receives a reference to the resolved `dependsOn` facet component instance as an argument, and must return a boolean.\n     * The function's argument should typically be treated as read-only.\n     *\n     * By default, the dependent facet is displayed whenever one or more values are selected in its `dependsOn` facet.\n     *\n     * @externaldocs [Defining Dependent Facets](https://docs.coveo.com/3210/)\n     *\n     * @availablesince [April 2020 Release (v2.8864)](https://docs.coveo.com/en/3231/)\n     */\n    dependsOnCondition: ComponentOptions.buildCustomOption<IDependentFacetCondition>(\n      () => {\n        return null;\n      },\n      { depend: 'dependsOn', section: 'CommonOptions' }\n    ),\n\n    /**\n     * The number of items to scan for facet values.\n     *\n     * Setting this option to a higher value may enhance the accuracy of facet value counts at the cost of slower query performance.\n     *\n     * @availablesince [January 2020 Release (v2.7968)](https://docs.coveo.com/en/3163/)\n     *\n     * @examples 1500\n     */\n    injectionDepth: ComponentOptions.buildNumberOption({ defaultValue: 1000, min: 1000 }),\n\n    /**\n     * Whether to exclude folded result parents when estimating result counts for facet values.\n     *\n     * **Note:** The target folding field must be a facet field with the **Use cache for nested queries** options enabled (see [Add or Edit a Field](https://docs.coveo.com/en/1982)).\n     *\n     * See also the [`Folding`]{@link Folding} and [`FoldingForThread`]{@link FoldingForThread} components.\n     *\n     * **Default:** `true`.\n     *\n     * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/)\n     */\n    filterFacetCount: ComponentOptions.buildBooleanOption({ section: 'Filtering' })\n  };\n\n  private includedAttributeId: string;\n  private listenToQueryStateChange = true;\n  private search: DynamicFacetSearch;\n  private valueToFocusOnRender: string | null;\n  public header: DynamicFacetHeader;\n\n  public options: IDynamicFacetOptions;\n  public dynamicFacetManager: DynamicFacetManager;\n  public dependsOnManager: DependsOnManager;\n  public dynamicFacetQueryController: DynamicFacetQueryController;\n  public values: DynamicFacetValues;\n  public position: number;\n  public moreValuesAvailable = false;\n  public isCollapsed: boolean;\n  public isDynamicFacet = true;\n  public isFieldValueCompatible = true;\n  public isFieldValueHierarchical = false;\n\n  /**\n   * Creates a new `DynamicFacet` instance.\n   *\n   * @param element The element from which to instantiate the component.\n   * @param options The component options.\n   * @param bindings The component bindings. Automatically resolved by default.\n   */\n  constructor(\n    public element: HTMLElement,\n    options?: IDynamicFacetOptions,\n    bindings?: IComponentBindings,\n    classId: string = DynamicFacet.ID\n  ) {\n    super(element, classId, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, DynamicFacet, options);\n\n    this.initDynamicFacetQueryController();\n    this.initDependsOnManager();\n    this.initQueryEvents();\n    this.initQueryStateEvents();\n    this.initBreadCrumbEvents();\n    this.initComponentStateEvents();\n    this.initValues();\n    this.verifyCollapsingConfiguration();\n    this.isCollapsed = this.options.enableCollapse && this.options.collapsedByDefault;\n\n    ResponsiveDynamicFacets.init(this.root, this, this.options);\n  }\n\n  public get fieldName() {\n    return this.options.field.slice(1);\n  }\n\n  public get facetType() {\n    return FacetType.specific;\n  }\n\n  /**\n   * Selects a single value in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param value The name of the facet value to select.\n   */\n  public selectValue(value: string) {\n    Assert.exists(value);\n    this.selectMultipleValues([value]);\n  }\n\n  /**\n   * Selects multiple values in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param values The names of the facet values to select.\n   */\n  public selectMultipleValues(values: string[]) {\n    Assert.exists(values);\n    this.ensureDom();\n    this.logger.info('Selecting facet value(s)', values);\n    values.forEach(value => {\n      this.values.get(value).select();\n    });\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Deselects a single value in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param values The name of the facet value to deselect.\n   */\n  public deselectValue(value: string) {\n    Assert.exists(value);\n    this.deselectMultipleValues([value]);\n  }\n\n  /**\n   * Determines whether the specified value is selected in the facet.\n   * @param value The name of the facet value to verify.\n   */\n  public hasSelectedValue(value: string) {\n    return this.values.hasSelectedValue(value);\n  }\n\n  /**\n   * Deselects multiple values in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param values The names of the facet values to deselect.\n   */\n  public deselectMultipleValues(values: string[]) {\n    Assert.exists(values);\n    this.ensureDom();\n    this.logger.info('Deselecting facet value(s)', values);\n    values.forEach(value => {\n      this.values.get(value).deselect();\n    });\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Toggles the selection state of a single value in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   *\n   * @param values The name of the facet value to toggle.\n   */\n  public toggleSelectValue(value: string) {\n    Assert.exists(value);\n    this.ensureDom();\n    const facetValue = this.values.get(value);\n    facetValue.toggleSelect();\n    this.logger.info('Toggle select facet value', facetValue);\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Keyboard focuses a value once it has been re-rendered.\n   *\n   * @param value The name of the facet value to focus\n   */\n  public focusValueAfterRerender(value: string) {\n    Assert.exists(value);\n    this.valueToFocusOnRender = value;\n  }\n\n  /**\n   * Returns the configured caption for a desired facet value.\n   *\n   * @param value The string facet value whose caption the method should return.\n   */\n  public getCaptionForStringValue(value: string) {\n    return FacetUtils.getDisplayValueFromValueCaption(value, this.options.field as string, this.options.valueCaption);\n  }\n\n  /**\n   * Requests additional values.\n   *\n   * Automatically triggers an isolated query.\n   * @param additionalNumberOfValues The number of additional values to request. Minimum value is 1. Defaults to the [numberOfValues]{@link DynamicFacet.options.numberOfValues} option value.\n   */\n  public showMoreValues(additionalNumberOfValues = this.options.numberOfValues) {\n    this.ensureDom();\n    this.logger.info('Show more values');\n    this.dynamicFacetQueryController.increaseNumberOfValuesToRequest(additionalNumberOfValues);\n    this.triggerNewIsolatedQuery(() => this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.dynamicFacetShowMore));\n  }\n\n  /**\n   * Reduces the number of displayed facet values down to [numberOfValues]{@link DynamicFacet.options.numberOfValues}.\n   *\n   * Automatically triggers an isolated query.\n   */\n  public showLessValues() {\n    this.ensureDom();\n    this.logger.info('Show less values');\n    this.dynamicFacetQueryController.resetNumberOfValuesToRequest();\n    this.triggerNewIsolatedQuery(() => this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.dynamicFacetShowLess));\n  }\n\n  /**\n   * Deselects all values in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Updates the visual of the facet.\n   *\n   */\n  public reset() {\n    this.ensureDom();\n    if (this.values.hasActiveValues) {\n      this.logger.info('Deselect all values');\n      this.values.clearAll();\n      this.values.render();\n    }\n    this.enablePreventAutoSelectionFlag();\n    this.updateAppearance();\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Collapses or expands the facet depending on it's current state.\n   */\n  public toggleCollapse() {\n    this.isCollapsed ? this.expand() : this.collapse();\n  }\n\n  /**\n   * Expands the facet, displaying all of its currently fetched values.\n   */\n  public expand() {\n    if (!this.options.enableCollapse) {\n      return this.logger.warn(`Calling expand() won't do anything on a facet that has the option \"enableCollapse\" set to \"false\"`);\n    }\n    if (!this.isCollapsed) {\n      return;\n    }\n    this.ensureDom();\n    this.logger.info('Expand facet values');\n    this.isCollapsed = false;\n    this.updateAppearance();\n  }\n\n  /**\n   * Collapses the facet, displaying only its currently selected values.\n   */\n  public collapse() {\n    if (!this.options.enableCollapse) {\n      return this.logger.warn(`Calling collapse() won't do anything on a facet that has the option \"enableCollapse\" set to \"false\"`);\n    }\n    if (this.isCollapsed) {\n      return;\n    }\n    this.ensureDom();\n    this.logger.info('Collapse facet values');\n    this.isCollapsed = true;\n    this.updateAppearance();\n  }\n\n  /**\n   * Sets a flag indicating whether the facet values should be returned in their current order.\n   *\n   * Setting the flag to `true` helps ensuring that the values do not move around while the end-user is interacting with them.\n   *\n   * The flag is automatically set back to `false` after a query is built.\n   */\n  public enableFreezeCurrentValuesFlag() {\n    this.dynamicFacetQueryController.enableFreezeCurrentValuesFlag();\n  }\n\n  /**\n   * For this method to work, the component has to be the child of a [DynamicFacetManager]{@link DynamicFacetManager} component.\n   *\n   * Sets a flag indicating whether the facets should be returned in their current order.\n   *\n   * Setting the flag to `true` helps ensuring that the facets do not move around while the end-user is interacting with them.\n   *\n   * The flag is automatically set back to `false` after a query is built.\n   */\n  public enableFreezeFacetOrderFlag() {\n    this.dynamicFacetQueryController.enableFreezeFacetOrderFlag();\n  }\n\n  public enablePreventAutoSelectionFlag() {\n    this.dynamicFacetQueryController.enablePreventAutoSelectionFlag();\n  }\n\n  public scrollToTop() {\n    if (this.options.enableScrollToTop) {\n      ResultListUtils.scrollToTop(this.root);\n    }\n  }\n\n  public get analyticsFacetState(): IAnalyticsFacetState[] {\n    return this.values.activeValues.map(facetValue => facetValue.analyticsFacetState);\n  }\n\n  public get basicAnalyticsFacetState(): IAnalyticsFacetState {\n    return {\n      field: this.options.field.toString(),\n      id: this.options.id,\n      title: this.options.title,\n      facetType: this.facetType,\n      facetPosition: this.position\n    };\n  }\n\n  public get basicAnalyticsFacetMeta(): IAnalyticsFacetMeta {\n    return {\n      facetField: this.options.field.toString(),\n      facetId: this.options.id,\n      facetTitle: this.options.title\n    };\n  }\n\n  public logAnalyticsEvent(actionCause: IAnalyticsActionCause, facetMeta: IAnalyticsFacetMeta) {\n    this.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(actionCause, facetMeta);\n  }\n\n  public putStateIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    Assert.exists(queryBuilder);\n    this.dynamicFacetQueryController.putFacetIntoQueryBuilder(queryBuilder);\n  }\n\n  public putStateIntoAnalytics() {\n    const pendingEvent = this.usageAnalytics.getPendingSearchEvent();\n    pendingEvent && pendingEvent.addFacetState(this.analyticsFacetState);\n  }\n\n  public isCurrentlyDisplayed() {\n    return $$(this.element).isVisible();\n  }\n\n  public get hasActiveValues() {\n    return this.values.hasActiveValues;\n  }\n\n  private initQueryEvents() {\n    this.bind.onRootElement(QueryEvents.duringQuery, () => this.ensureDom());\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (data: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(data));\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data.results));\n    this.bind.onRootElement(QueryEvents.queryError, () => this.onNoValues());\n  }\n\n  private initQueryStateEvents() {\n    this.includedAttributeId = QueryStateModel.getFacetId(this.options.id);\n    this.queryStateModel.registerNewAttribute(this.includedAttributeId, []);\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE, undefined, this.handleQueryStateChanged);\n  }\n\n  protected initBreadCrumbEvents() {\n    if (this.options.includeInBreadcrumb) {\n      this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n        this.handlePopulateBreadcrumb(args)\n      );\n      this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.reset());\n    }\n  }\n\n  protected initValues() {\n    this.values = new DynamicFacetValues(this, DynamicFacetValueCreator);\n  }\n\n  private initComponentStateEvents() {\n    const componentStateId = QueryStateModel.getFacetId(this.options.id);\n    this.componentStateModel.registerComponent(componentStateId, this);\n  }\n\n  protected initDynamicFacetQueryController() {\n    this.dynamicFacetQueryController = new DynamicFacetQueryController(this);\n  }\n\n  private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    // If there is a DynamicFacetManager, it will take care of adding the facet's state\n    if (this.dynamicFacetManager) {\n      return;\n    }\n\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n    this.putStateIntoQueryBuilder(data.queryBuilder);\n    this.putStateIntoAnalytics();\n  }\n\n  private handleQuerySuccess(results: IQueryResults) {\n    // If there is a DynamicFacetManager, it will take care of handling the results\n    if (this.dynamicFacetManager) {\n      return;\n    }\n\n    if (Utils.isNullOrUndefined(results.facets)) {\n      return this.notImplementedError();\n    }\n\n    this.handleQueryResults(results);\n  }\n\n  public handleQueryResults(results: IQueryResults) {\n    const index = findIndex(results.facets, { facetId: this.options.id });\n    const facetResponse = index !== -1 ? results.facets[index] : null;\n\n    this.position = facetResponse ? index + 1 : undefined;\n    facetResponse ? this.onNewValues(facetResponse) : this.onNoValues();\n\n    this.header.hideLoading();\n    this.updateQueryStateModel();\n    this.values.render();\n    this.updateAppearance();\n    if (this.valueToFocusOnRender) {\n      const value = this.valueToFocusOnRender;\n      this.valueToFocusOnRender = null;\n      defer(() => this.values.focus(value));\n    }\n  }\n\n  private onNewValues(facetResponse: IFacetResponse) {\n    this.moreValuesAvailable = facetResponse.moreValuesAvailable;\n    this.values.createFromResponse(facetResponse);\n    if (this.options.customSort) {\n      this.values.reorderValues(this.options.customSort);\n    }\n  }\n\n  private onNoValues() {\n    this.moreValuesAvailable = false;\n    this.values.resetValues();\n  }\n\n  private handleQueryStateChanged(data: IAttributesChangedEventArg) {\n    if (!this.listenToQueryStateChange) {\n      return;\n    }\n\n    const querySelectedValues: string[] = data.attributes[this.includedAttributeId];\n    if (!querySelectedValues) {\n      return;\n    }\n\n    this.handleQueryStateChangedIncluded(querySelectedValues);\n  }\n\n  private handleQueryStateChangedIncluded = (querySelectedValues: string[]) => {\n    const currentSelectedValues = this.values.selectedValues;\n    const validQuerySelectedValues = querySelectedValues.filter(value => this.values.get(value));\n\n    const valuesToSelect = difference(validQuerySelectedValues, currentSelectedValues);\n    const valuesToDeselect = difference(currentSelectedValues, validQuerySelectedValues);\n\n    if (Utils.isNonEmptyArray(valuesToSelect)) {\n      this.selectMultipleValues(valuesToSelect);\n    }\n\n    if (Utils.isNonEmptyArray(valuesToDeselect)) {\n      this.deselectMultipleValues(valuesToDeselect);\n    }\n  };\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    Assert.exists(args);\n\n    if (!this.values.hasActiveValues) {\n      return;\n    }\n\n    const breadcrumbs = new DynamicFacetBreadcrumbs(this);\n    args.breadcrumbs.push({ element: breadcrumbs.element });\n  }\n\n  private initDependsOnManager() {\n    const facetInfo: IDependentFacet = {\n      reset: () => this.reset(),\n      ref: this\n    };\n\n    this.dependsOnManager = new DependsOnManager(facetInfo);\n  }\n\n  public createDom() {\n    this.createAndAppendContent();\n    this.updateAppearance();\n  }\n\n  private createAndAppendContent() {\n    this.createAndAppendHeader();\n    this.createAndAppendSearch();\n    this.createAndAppendValues();\n  }\n\n  private createAndAppendHeader() {\n    this.header = new DynamicFacetHeader({\n      id: this.options.id,\n      title: this.options.title,\n      enableCollapse: this.options.enableCollapse,\n      clear: () => this.clear(),\n      toggleCollapse: () => this.toggleCollapse(),\n      collapse: () => this.collapse(),\n      expand: () => this.expand()\n    });\n    this.element.appendChild(this.header.element);\n  }\n\n  private createAndAppendSearch() {\n    if (this.options.enableFacetSearch === false) {\n      return;\n    }\n\n    this.search = new DynamicFacetSearch(this);\n    this.element.appendChild(this.search.element);\n  }\n\n  private createAndAppendValues() {\n    this.element.appendChild(this.values.render());\n  }\n\n  private updateQueryStateModel() {\n    this.listenToQueryStateChange = false;\n    this.queryStateModel.set(this.includedAttributeId, this.values.selectedValues);\n    this.listenToQueryStateChange = true;\n  }\n\n  private updateAppearance() {\n    this.header.toggleClear(this.values.hasSelectedValues);\n    this.header.toggleCollapse(this.isCollapsed);\n    this.toggleSearchDisplay();\n    $$(this.element).toggleClass('coveo-dynamic-facet-collapsed', this.isCollapsed);\n    $$(this.element).toggleClass('coveo-active', this.values.hasSelectedValues);\n    $$(this.element).toggleClass('coveo-hidden', !this.values.hasDisplayedValues);\n  }\n\n  private toggleSearchDisplay() {\n    if (this.options.enableFacetSearch === false) {\n      return;\n    }\n\n    if (this.isCollapsed) {\n      return $$(this.search.element).toggleClass('coveo-hidden', true);\n    }\n\n    $$(this.search.element).toggleClass('coveo-hidden', !this.options.enableFacetSearch && !this.moreValuesAvailable);\n  }\n\n  public triggerNewQuery(beforeExecuteQuery?: () => void) {\n    this.beforeSendingQuery();\n\n    const options: IQueryOptions = beforeExecuteQuery ? { beforeExecuteQuery } : { ignoreWarningSearchEvent: true };\n\n    this.queryController.executeQuery(options);\n  }\n\n  public async triggerNewIsolatedQuery(beforeExecuteQuery?: () => void) {\n    this.beforeSendingQuery();\n    beforeExecuteQuery && beforeExecuteQuery();\n\n    try {\n      const results = await this.dynamicFacetQueryController.getQueryResults();\n      this.handleQueryResults(results);\n    } catch (e) {\n      this.header.hideLoading();\n    }\n  }\n\n  private beforeSendingQuery() {\n    this.header.showLoading();\n  }\n\n  private notImplementedError() {\n    this.logger.error('DynamicFacets are not supported by your current search endpoint. Disabling this component.');\n    this.disable();\n    this.updateAppearance();\n  }\n\n  private verifyCollapsingConfiguration() {\n    if (this.options.collapsedByDefault && !this.options.enableCollapse) {\n      this.logger.warn('The \"collapsedByDefault\" option is \"true\" while the \"enableCollapse\" is \"false\"');\n    }\n  }\n\n  private logAnalyticsFacetShowMoreLess(cause: IAnalyticsActionCause) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsFacetMeta>(cause, this.basicAnalyticsFacetMeta, this.element);\n  }\n\n  private clear() {\n    this.reset();\n    this.enableFreezeFacetOrderFlag();\n    this.scrollToTop();\n    this.triggerNewQuery(() => this.logClearAllToAnalytics());\n  }\n\n  private logClearAllToAnalytics() {\n    this.logAnalyticsEvent(analyticsActionCauseList.dynamicFacetClearAll, this.basicAnalyticsFacetMeta);\n  }\n}\n\nInitialization.registerAutoCreateComponent(DynamicFacet);\nDynamicFacet.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacet.ts","import { isFunction } from 'underscore';\nimport { QueryStateModel, QueryEvents, Component } from '../Core';\nimport { ComponentsTypes } from './ComponentsTypes';\nimport { $$ } from './Dom';\nimport { InitializationEvents } from '../events/InitializationEvents';\n\nexport interface IDependsOnCompatibleFacetOptions {\n  id?: string;\n  dependsOn?: string;\n  dependsOnCondition?: IDependentFacetCondition;\n}\n\nexport interface IDependsOnCompatibleFacet extends Component {\n  options: IDependsOnCompatibleFacetOptions;\n}\n\nexport interface IDependentFacet {\n  reset: () => void;\n  ref: IDependsOnCompatibleFacet;\n}\n\nexport interface IDependentFacetCondition {\n  (facet: IDependsOnCompatibleFacet): boolean;\n}\n\nexport class DependsOnManager {\n  private parentFacetRef: IDependsOnCompatibleFacet;\n\n  constructor(private facet: IDependentFacet) {\n    $$(this.facet.ref.searchInterface.element).on(QueryEvents.buildingQuery, () => this.handleBuildingQuery());\n\n    if (this.getDependsOn(this.facet.ref)) {\n      this.facet.ref.bind.onRootElement(InitializationEvents.afterComponentsInitialization, () => this.setupDependentFacet());\n    }\n  }\n\n  private setupDependentFacet() {\n    $$(this.facet.ref.element).addClass('coveo-hidden-dependant-facet');\n    this.parentFacetRef = this.getParentFacet(this.facet.ref);\n\n    if (this.parentFacetRef) {\n      $$(this.facet.ref.root).on('state:change', () => this.resetIfConditionUnfullfiled());\n    }\n  }\n\n  private resetIfConditionUnfullfiled() {\n    const condition = this.getDependsOnCondition(this.facet.ref);\n\n    if (!condition(this.parentFacetRef)) {\n      this.facet.reset();\n    }\n  }\n\n  private getId(component: IDependsOnCompatibleFacet) {\n    const id = component.options.id;\n    return id ? `${id}` : null;\n  }\n\n  private getDependsOn(component: IDependsOnCompatibleFacet) {\n    const dependsOn = component.options.dependsOn;\n    return dependsOn ? `${dependsOn}` : null;\n  }\n\n  private getDependsOnCondition(component: IDependsOnCompatibleFacet): IDependentFacetCondition {\n    const conditionOption = component.options.dependsOnCondition;\n    return conditionOption && isFunction(conditionOption)\n      ? conditionOption\n      : () => this.parentHasSelectedValues(component) && this.parentIsEnabled(component);\n  }\n\n  private parentHasSelectedValues(component: IDependsOnCompatibleFacet) {\n    const parent = this.getParentFacet(component);\n    return parent && this.valuesExistForFacetWithId(this.getId(parent));\n  }\n\n  private parentIsEnabled(component: IDependsOnCompatibleFacet) {\n    const parent = this.getParentFacet(component);\n    return parent && !parent.disabled;\n  }\n\n  private valuesExistForFacetWithId(facetId: string) {\n    const values = this.facet.ref.queryStateModel.get(QueryStateModel.getFacetId(facetId));\n    return !!values && !!values.length;\n  }\n\n  private get allFacetsInInterface() {\n    return ComponentsTypes.getAllFacetsFromSearchInterface(this.facet.ref.searchInterface) as IDependsOnCompatibleFacet[];\n  }\n\n  private getParentFacet(component: IDependsOnCompatibleFacet) {\n    const parent = this.allFacetsInInterface.filter(\n      potentialParentFacet => this.getId(potentialParentFacet) === this.getDependsOn(component)\n    );\n\n    if (!parent.length) {\n      component.logger.warn('DependsOn reference does not exist', this.getDependsOn(this.facet.ref));\n      return null;\n    }\n\n    return parent[0];\n  }\n\n  private get dependentFacets() {\n    return this.allFacetsInInterface.filter(\n      potentialDependentFacet => this.getId(this.facet.ref) === this.getDependsOn(potentialDependentFacet)\n    );\n  }\n\n  private handleBuildingQuery() {\n    this.dependentFacets.forEach(dependentFacet => {\n      const condition = this.getDependsOnCondition(dependentFacet);\n      if (condition(this.facet.ref)) {\n        $$(dependentFacet.element).removeClass('coveo-hidden-dependant-facet');\n        return dependentFacet.enable();\n      }\n\n      dependentFacet.disable();\n      $$(dependentFacet.element).addClass('coveo-hidden-dependant-facet');\n    });\n  }\n\n  public get hasDependentFacets() {\n    return !!this.dependentFacets.length;\n  }\n\n  public get dependentFacetsHaveSelectedValues() {\n    return this.dependentFacets.some(dependentFacet => this.valuesExistForFacetWithId(this.getId(dependentFacet)));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DependsOnManager.ts","import { FacetType, IFacetRequest } from '../rest/Facet/FacetRequest';\nimport { FacetSortCriteria } from '../rest/Facet/FacetSortCriteria';\nimport { Utils } from '../utils/Utils';\n\nexport interface IBasicFacetRequestParameters {\n  facetId: string;\n  field: string;\n  type: FacetType;\n  injectionDepth: number;\n  sortCriteria?: FacetSortCriteria;\n  delimitingCharacter?: string;\n  filterFacetCount?: boolean;\n}\n\nexport class DynamicFacetRequestBuilder {\n  constructor(private request: IFacetRequest) {}\n\n  public buildBaseRequestForQuery(): IFacetRequest {\n    return {\n      ...this.request,\n      filterFacetCount: determineFilterFacetCount(this.request)\n    };\n  }\n}\n\nexport function determineFilterFacetCount(options: { filterFacetCount?: boolean }) {\n  const { filterFacetCount } = options;\n  return Utils.isUndefined(filterFacetCount) ? true : filterFacetCount;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/DynamicFacetRequestBuilder.ts","import 'styling/DynamicFacet/_DynamicFacetHeader';\nimport { $$, Dom } from '../../../utils/Dom';\nimport { l } from '../../../strings/Strings';\nimport { SVGIcons } from '../../../utils/SVGIcons';\nimport { SVGDom } from '../../../utils/SVGDom';\nimport { DynamicFacetHeaderButton } from './DynamicFacetHeaderButton';\nimport { DynamicFacetHeaderCollapseToggle } from './DynamicFacetHeaderCollapseToggle';\n\nexport interface IDynamicFacetHeaderOptions {\n  id: string;\n  title: string;\n  enableCollapse: boolean;\n  toggleCollapse: () => void;\n  collapse: () => void;\n  expand: () => void;\n  clear: () => void;\n}\n\nexport function getDynamicFacetHeaderId(facetId: string) {\n  return `${facetId}-facet-heading`;\n}\n\nexport class DynamicFacetHeader {\n  public static showLoadingDelay = 2000;\n  public element: HTMLElement;\n  private title: Dom;\n  private waitAnimation: Dom;\n  private clearButton: DynamicFacetHeaderButton;\n  private collapseToggle: DynamicFacetHeaderCollapseToggle;\n  private showLoadingTimeout: number;\n\n  constructor(public options: IDynamicFacetHeaderOptions) {\n    this.element = $$('div', { className: 'coveo-dynamic-facet-header' }).el;\n    this.title = this.createTitle();\n    $$(this.element).append(this.title.el);\n    $$(this.element).append(this.createWaitAnimation());\n    $$(this.element).append(this.createClearButton());\n    this.options.enableCollapse && this.enableCollapse();\n  }\n\n  private createClearButton() {\n    this.clearButton = new DynamicFacetHeaderButton({\n      label: l('Clear'),\n      ariaLabel: l('Clear', this.options.title),\n      className: 'coveo-dynamic-facet-header-clear',\n      shouldDisplay: false,\n      action: () => this.options.clear()\n    });\n\n    return this.clearButton.element;\n  }\n\n  private createCollapseToggle() {\n    this.collapseToggle = new DynamicFacetHeaderCollapseToggle(this.options);\n    return this.collapseToggle.element;\n  }\n\n  private enableCollapse() {\n    $$(this.element).append(this.createCollapseToggle());\n    $$(this.title).addClass('coveo-clickable');\n    $$(this.title).on('click', () => this.options.toggleCollapse());\n  }\n\n  public toggleCollapse(isCollapsed: boolean) {\n    this.options.enableCollapse && this.collapseToggle.toggleButton(isCollapsed);\n  }\n\n  private createTitle() {\n    return $$(\n      'h2',\n      {\n        className: 'coveo-dynamic-facet-header-title',\n        ariaLabel: `${l('FacetTitle', this.options.title)}`,\n        id: getDynamicFacetHeaderId(this.options.id)\n      },\n      $$('span', { ariaHidden: true, title: this.options.title }, this.options.title)\n    );\n  }\n\n  private createWaitAnimation() {\n    this.waitAnimation = $$('div', { className: 'coveo-dynamic-facet-header-wait-animation' }, SVGIcons.icons.loading);\n    SVGDom.addClassToSVGInContainer(this.waitAnimation.el, 'coveo-dynamic-facet-header-wait-animation-svg');\n    this.waitAnimation.toggle(false);\n\n    return this.waitAnimation.el;\n  }\n\n  public toggleClear(visible: boolean) {\n    this.clearButton.toggle(visible);\n  }\n\n  public showLoading() {\n    clearTimeout(this.showLoadingTimeout);\n    this.showLoadingTimeout = window.setTimeout(() => this.waitAnimation.toggle(true), DynamicFacetHeader.showLoadingDelay);\n  }\n\n  public hideLoading() {\n    clearTimeout(this.showLoadingTimeout);\n    this.waitAnimation.toggle(false);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeader.ts","import { FacetValueState } from './FacetValueState';\nimport { FacetSortCriteria } from './FacetSortCriteria';\nimport { IRangeValue } from '../RangeValue';\nimport { FacetRangeSortOrder } from './FacetRangeSortOrder';\n\n/**\n * The allowed values for the [`facetType`]{@link IFacetRequest.facetType} property of a [facet request]{@link IFacetRequest}.\n */\nexport enum FacetType {\n  /**\n   * Request facet values representing specific values.\n   */\n  specific = 'specific',\n  /**\n   * Request facet values representing ranges of numbers.\n   */\n  numericalRange = 'numericalRange',\n  /**\n   * Request facet values representing ranges of dates.\n   */\n  dateRange = 'dateRange',\n  /**\n   * Request facet values representing a hierarchy.\n   */\n  hierarchical = 'hierarchical'\n}\n\n/**\n * A [`currentValues`]{@link IFacetRequest.currentValues} item in a Search API\n * [facet request]{@link IFacetRequest}.\n */\nexport interface IFacetRequestValue extends IRangeValue {\n  /**\n   * The current facet value state in the search interface.\n   *\n   * **Default (Search API):** `idle`\n   */\n  state: FacetValueState;\n  /**\n   * **Required (Search API).** The facet value name.\n   */\n  value?: string;\n  /**\n   * Whether to prevent Coveo ML from automatically selecting the facet value.\n   *\n   * **Default:** `false`\n   */\n  preventAutoSelect?: boolean;\n  /**\n   * Whether to retrieve the children of this category facet value. Can only be used on leaf values in the request (i.e., values with no current children).\n   *\n   * **Default:** `false`\n   */\n  retrieveChildren?: boolean;\n  /**\n   * If [retrieveChildren]{@link IFacetRequestValue.retrieveChildren} is true, the maximum number of children to retrieve for this leaf value.\n   *\n   * **Default (Search API):** `0`\n   */\n  retrieveCount?: number;\n  /**\n   * The children of this category facet value.\n   * Each child is a full-fledged category facet value that may in turn have its own children and so forth,\n   * up to a maximum depth of 50 levels\n   */\n  children?: IFacetRequestValue[];\n}\n\n/**\n * A Search API facet request.\n */\nexport interface IFacetRequest {\n  /**\n   * The unique identifier of the facet in the search interface.\n   *\n   * **Note:** Must match `^[A-Za-z0-9-_]{1,60}$`.\n   *\n   * **Example:** `author-1`\n   */\n  facetId: string;\n\n  /**\n   * **Required (Search API).** The name of the field on which to base the\n   * facet request.\n   *\n   * **Note:** Must reference an index field whose **Facet** option is enabled.\n   *\n   * **Example:** `author`\n   */\n  field: string;\n\n  /**\n   * The kind of values to request for the facet.\n   *\n   * **Default (Search API):** [`Specific`]{@link FacetType.Specific}\n   */\n  type?: FacetType;\n\n  /**\n   * The sort criterion to apply to the returned facet values.\n   *\n   * **Default behaviour when [`type`]{@link IFacetRequest.type} is set to [`specific`]{@link FaceType.Specific}\n   * or [`hierarchical`]{@link FaceType.Hierarchical} (Search API):**\n   * - When [`isFieldExpanded`]{@link IFacetRequest.isFieldExpanded} is `false`\n   * in the facet request, and\n   * [`moreValuesAvailable`]{@link IFacetResponse.moreValuesAvailable} is\n   * `true` in the corresponding [facet response]{@link IFacetResponse}, use\n   * `score`.\n   * - Otherwise, use `alphanumeric`.\n   *\n   * **Default (Search API) when [`type`]{@link IFacetRequest.type} is set to [`dateRange`]{@link FaceType.dateRange}\n   * or [`numericalRange`]{@link FacetType.numericalRange} (Search API)::** `ascending`\n   * Other possible value: `descending`\n   */\n  sortCriteria?: FacetSortCriteria | FacetRangeSortOrder;\n\n  /**\n   * The maximum number of facet values to fetch.\n   *\n   * **Note:** If\n   * [`freezeCurrentValues`]{@link IFacetRequest.freezeCurrentValues} is\n   * `true`, `numberOfValues` must be equal to the\n   * [`currentValues`]{@link IFacetRequest.currentValues} array length.\n   *\n   * **Default (Search API):** `8`\n   */\n  numberOfValues?: number;\n\n  /**\n   * The maximum number of items to scan for facet values.\n   *\n   * **Note:** A high `injectionDepth` may negatively impact the facet request\n   * performance.\n   *\n   * **Default (Search API):** `1000`\n   */\n  injectionDepth?: number;\n\n  /**\n   * Whether to include the facet request's\n   * [`currentValues`]{@link IFacetRequest.currentValues} in the corresponding\n   * [facet response]{@link IFacetResponse}'s\n   * [`values`]{@link IFacetResponse.values} array.\n   *\n   * **Note:** Setting this to `true` is useful to ensure that the facet does\n   * not move around while the end-user is interacting with it in the search\n   * interface.\n   *\n   * **Default (Search API):** `false`\n   */\n  freezeCurrentValues?: boolean;\n\n  /**\n   * The values displayed by the facet in the search interface at the moment of\n   * the request.\n   *\n   * See [IFacetRequestValue]{@link IFacetRequestValue}.\n   *\n   * **Default (Search API):** `[]`\n   */\n  currentValues?: IFacetRequestValue[];\n\n  /**\n   * Whether the facet is expanded in the search interface at the moment of the\n   * request.\n   *\n   * **Default (Search API):** `false`\n   */\n  isFieldExpanded?: boolean;\n\n  /**\n   * Whether to automatically generate range values for the facet.\n   *\n   * **Notes:**\n   * - Setting this to `true` is only effective when [`type`]{@link IFacetRequest.type} is set to [`dateRange`]{@link FaceType.dateRange}\n   * or [`numericalRange`]{@link FacetType.numericalRange}, and the referenced [`field`]{@link IFacetRequest.field} is of a corresponding type (i.e., date or numeric).\n   * - Automatic range generation will fail if the referenced `field` is dynamically generated by a query function.\n   * - Enabling the **Use cache for numeric queries** option on the referenced `field` will speed up automatic range generation (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)).\n   *\n   * **Default (Search API):** `false`\n   */\n  generateAutomaticRanges?: boolean;\n\n  /**\n   * The character to use to split field values into a hierarchical sequence.\n   *\n   * **Example:**\n   * For a multi-value field containing the following values: `c; c&gt;folder2; c&gt;folder2&gt;folder3;`\n   * The delimiting character is `&gt;`.\n   *\n   * **Default (Search API):** `;`\n   */\n  delimitingCharacter?: string;\n\n  /**\n   * Whether to exclude folded result parents when estimating result counts for facet values.\n   *\n   * **Default (Search API):** `true`\n   */\n  filterFacetCount?: boolean;\n\n  /**\n   * The base path shared by all values for a given hierarchical facet.\n   *\n   * **Default (Search API):** `[]`\n   */\n  basePath?: string[];\n\n  /**\n   * Whether to use the [`basePath`]{@link FacetRequest.basePath} as a filter for the results.\n   *\n   * **Note:** This parameter is ignored unless the facet [`type`]{@link FacetRequest.type} is `hierarchical`.\n   *\n   * **Default (Search API):** `true`\n   */\n  filterByBasePath?: boolean;\n\n  /**\n   * Whether to prevent Coveo ML from automatically selecting values from that facet.\n   *\n   * **Default:** `false`\n   */\n  preventAutoSelect?: boolean;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Facet/FacetRequest.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { Component } from '../Base/Component';\nimport { IResultListOptions } from './ResultListOptions';\nimport _ = require('underscore');\n\nexport class ResultListRenderer {\n  constructor(protected resultListOptions: IResultListOptions, protected autoCreateComponentsFn: Function) {}\n\n  renderResults(\n    resultElements: HTMLElement[],\n    append = false,\n    resultDisplayedCallback: (result: IQueryResult, resultElem: HTMLElement) => any\n  ) {\n    return Promise.all([this.getStartFragment(resultElements, append), this.getEndFragment(resultElements, append)]).then(\n      ([startFrag, endFrag]) => {\n        const resultsFragment = document.createDocumentFragment();\n        if (startFrag) {\n          resultsFragment.appendChild(startFrag);\n        }\n        _.each(resultElements, resultElement => {\n          resultsFragment.appendChild(resultElement);\n          resultDisplayedCallback(Component.getResult(resultElement), resultElement);\n        });\n        if (endFrag) {\n          resultsFragment.appendChild(endFrag);\n        }\n        this.resultListOptions.resultsContainer.appendChild(resultsFragment);\n      }\n    );\n  }\n\n  protected getStartFragment(resultElements: HTMLElement[], append: boolean): Promise<DocumentFragment> {\n    return Promise.resolve(document.createDocumentFragment());\n  }\n\n  protected getEndFragment(resultElements: HTMLElement[], append: boolean): Promise<DocumentFragment> {\n    return Promise.resolve(document.createDocumentFragment());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListRenderer.ts","import 'styling/_ResponsiveFacets';\nimport { IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { Logger } from '../../misc/Logger';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ResponsiveComponents } from './ResponsiveComponents';\nimport { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { ResponsiveComponentsUtils } from './ResponsiveComponentsUtils';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\nimport { ResponsiveDropdownContent, IResponsiveDropdownContent } from './ResponsiveDropdown/ResponsiveDropdownContent';\nimport { ResponsiveDropdownHeader } from './ResponsiveDropdown/ResponsiveDropdownHeader';\nimport { each, debounce } from 'underscore';\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\nimport { ResponsiveDropdownModalContent } from './ResponsiveDropdown/ResponsiveDropdownModalContent';\nimport { FacetsMobileMode, IFacetsMobileModeOptions } from '../FacetsMobileMode/FacetsMobileMode';\nimport { FacetsMobileModeEvents } from '../../events/FacetsMobileModeEvents';\n\nexport class ResponsiveFacetColumn implements IResponsiveComponent {\n  public static DEBOUNCE_SCROLL_WAIT = 250;\n\n  private static logger = new Logger('ResponsiveFacets');\n  private static DROPDOWN_MIN_WIDTH: number = 280;\n  private static DROPDOWN_WIDTH_RATIO: number = 0.35; // Used to set the width relative to the coveo root.\n  private static DROPDOWN_HEADER_LABEL_DEFAULT_VALUE = 'Filters';\n\n  private searchInterface: SearchInterface;\n  private componentsInFacetColumn: any[] = [];\n  private preservePositionOriginalValues: boolean[] = [];\n  private breakpoint: number;\n  protected dropdown: ResponsiveDropdown;\n  private dropdownHeaderLabel: string;\n\n  public static init(responsiveComponentConstructor, root: HTMLElement, component, options: IResponsiveComponentOptions, ID: string) {\n    const column = this.findColumn(root);\n    if (!column) {\n      return;\n    }\n\n    ResponsiveComponentsManager.register(ResponsiveFacetColumn, $$(root), 'ResponsiveFacetColumn', component, options);\n    ResponsiveComponentsManager.register(responsiveComponentConstructor, $$(root), ID, component, options);\n  }\n\n  private static findColumn(root: HTMLElement) {\n    const column = $$(root).find('.coveo-facet-column');\n    if (!column) {\n      this.logger.info('No element with class coveo-facet-column. Responsive facets cannot be enabled');\n    }\n    return column;\n  }\n\n  constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.dropdownHeaderLabel = this.getDropdownHeaderLabel();\n    this.dropdown = this.buildDropdown(responsiveDropdown);\n    this.bindDropdownContentEvents();\n    this.bindFacetsMobileModeEvents();\n    this.registerOnCloseHandler();\n    this.registerQueryEvents();\n    this.initializeBreakpoint(options.responsiveBreakpoint);\n  }\n\n  private get facetsMobileModeComponent() {\n    return this.searchInterface ? this.searchInterface.getComponents<FacetsMobileMode>(FacetsMobileMode.ID)[0] : null;\n  }\n\n  private get facetsMobileModeOptions(): IFacetsMobileModeOptions {\n    const facetsMobileModeComponent = this.facetsMobileModeComponent;\n    if (!facetsMobileModeComponent) {\n      ResponsiveFacetColumn.logger.warn('The \"FacetsMobileMode\" component did not load properly, disabling the ResponsiveFacets modal.');\n      return {\n        isModal: false,\n        preventScrolling: false,\n        displayOverlayWhileOpen: true\n      };\n    }\n\n    return facetsMobileModeComponent.options;\n  }\n\n  public registerComponent(accept: Component) {\n    this.componentsInFacetColumn.push(accept);\n    this.preservePositionOriginalValues.push(accept.options.preservePosition);\n    return true;\n  }\n\n  public needDropdownWrapper() {\n    return this.needSmallMode();\n  }\n\n  public handleResizeEvent() {\n    if (this.needSmallMode() && !ResponsiveComponentsUtils.isSmallFacetActivated(this.coveoRoot)) {\n      this.changeToSmallMode();\n    } else if (!this.needSmallMode() && ResponsiveComponentsUtils.isSmallFacetActivated(this.coveoRoot)) {\n      this.changeToLargeMode();\n    }\n    if (this.dropdown.isOpened) {\n      this.dropdown.dropdownContent.positionDropdown();\n    }\n  }\n\n  public dismissFacetSearches() {\n    each(this.componentsInFacetColumn, component => {\n      if (component.facetSearch && component.facetSearch.currentlyDisplayedResults) {\n        component.facetSearch.dismissSearchResults();\n      }\n    });\n  }\n\n  private needSmallMode(): boolean {\n    if (!this.searchInterface) {\n      return (\n        this.coveoRoot.width() <=\n        (Utils.isNullOrUndefined(this.breakpoint) ? new ResponsiveComponents().getMediumScreenWidth() : this.breakpoint)\n      );\n    }\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'small':\n      case 'medium':\n        return true;\n      case 'auto':\n        return (\n          this.coveoRoot.width() <=\n          (Utils.isNullOrUndefined(this.breakpoint) ? this.searchInterface.responsiveComponents.getMediumScreenWidth() : this.breakpoint)\n        );\n      default:\n        return false;\n    }\n  }\n\n  private changeToSmallMode() {\n    this.dropdown.close();\n    this.disableFacetPreservePosition();\n    $$(this.coveoRoot.find(`.${ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS}`)).append(\n      this.dropdown.dropdownHeader.element.el\n    );\n    ResponsiveComponentsUtils.activateSmallFacet(this.coveoRoot);\n  }\n\n  private changeToLargeMode() {\n    this.restoreFacetPreservePositionValue();\n    this.dropdown.cleanUp();\n    ResponsiveComponentsUtils.deactivateSmallFacet(this.coveoRoot);\n  }\n\n  private buildDropdown(responsiveDropdown?: ResponsiveDropdown) {\n    let dropdownContent = this.buildDropdownContent();\n    let dropdownHeader = this.buildDropdownHeader();\n    let dropdown = responsiveDropdown ? responsiveDropdown : new ResponsiveDropdown(dropdownContent, dropdownHeader, this.coveoRoot);\n    if (!this.facetsMobileModeOptions.displayOverlayWhileOpen) {\n      dropdown.disablePopupBackground();\n    }\n    if (this.facetsMobileModeOptions.preventScrolling) {\n      dropdown.enableScrollLocking(this.facetsMobileModeOptions.scrollContainer);\n    }\n    return dropdown;\n  }\n\n  private buildDropdownContent(): IResponsiveDropdownContent {\n    let dropdownContentElement = $$(this.coveoRoot.find('.coveo-facet-column'));\n    let filterByContainer = $$('div', { className: 'coveo-facet-header-filter-by-container', style: 'display: none' });\n    let filterBy = $$('div', { className: 'coveo-facet-header-filter-by' });\n    filterBy.text(l('Filter by:'));\n    filterByContainer.append(filterBy.el);\n    dropdownContentElement.prepend(filterByContainer.el);\n    if (this.facetsMobileModeOptions.isModal) {\n      return new ResponsiveDropdownModalContent('facet', dropdownContentElement, l('CloseFiltersDropdown'), () => this.dropdown.close());\n    }\n    return new ResponsiveDropdownContent(\n      'facet',\n      dropdownContentElement,\n      this.coveoRoot,\n      ResponsiveFacetColumn.DROPDOWN_MIN_WIDTH,\n      ResponsiveFacetColumn.DROPDOWN_WIDTH_RATIO\n    );\n  }\n\n  private buildDropdownHeader() {\n    let dropdownHeaderElement = $$('a');\n    let content = $$('p');\n    content.text(this.dropdownHeaderLabel);\n    dropdownHeaderElement.el.appendChild(content.el);\n    let dropdownHeader = new ResponsiveDropdownHeader('facet', dropdownHeaderElement);\n    return dropdownHeader;\n  }\n\n  private initializeBreakpoint(defaultBreakpoint: number) {\n    const facetsMobileModeBreakpoint = this.facetsMobileModeOptions.breakpoint;\n    this.breakpoint = Utils.isNullOrUndefined(facetsMobileModeBreakpoint) ? defaultBreakpoint : facetsMobileModeBreakpoint;\n  }\n\n  private registerOnCloseHandler() {\n    this.dropdown.registerOnCloseHandler(this.dismissFacetSearches, this);\n  }\n\n  private registerQueryEvents() {\n    this.coveoRoot.on(QueryEvents.noResults, () => this.handleNoResults());\n    this.coveoRoot.on(QueryEvents.querySuccess, (e: Event, data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n    this.coveoRoot.on(QueryEvents.queryError, () => this.handleQueryError());\n  }\n\n  private bindDropdownContentEvents() {\n    this.dropdown.dropdownContent.element.on(\n      'scroll',\n      debounce(() => {\n        each(this.componentsInFacetColumn, component => {\n          let facetSearch = component.facetSearch;\n          if (facetSearch && facetSearch.currentlyDisplayedResults && !this.isFacetSearchScrolledIntoView(facetSearch.search)) {\n            component.facetSearch.positionSearchResults(this.dropdown.dropdownContent.element.el);\n          } else if (facetSearch && component.facetSearch.currentlyDisplayedResults) {\n            component.facetSearch.positionSearchResults();\n          }\n        });\n      }, ResponsiveFacetColumn.DEBOUNCE_SCROLL_WAIT)\n    );\n  }\n\n  private bindFacetsMobileModeEvents() {\n    const facetsMobileModeComponent = this.facetsMobileModeComponent;\n    if (facetsMobileModeComponent) {\n      this.dropdown.registerOnOpenHandler(\n        () => $$(facetsMobileModeComponent.element).trigger(FacetsMobileModeEvents.popupOpened),\n        facetsMobileModeComponent\n      );\n      this.dropdown.registerOnCloseHandler(\n        () => $$(facetsMobileModeComponent.element).trigger(FacetsMobileModeEvents.popupClosed),\n        facetsMobileModeComponent\n      );\n    }\n  }\n\n  private restoreFacetPreservePositionValue() {\n    each(this.componentsInFacetColumn, (component, index) => {\n      if (component.options) {\n        component.options.preservePosition = this.preservePositionOriginalValues[index];\n      }\n    });\n  }\n\n  private disableFacetPreservePosition() {\n    each(this.componentsInFacetColumn, component => {\n      if (component.options) {\n        component.options.preservePosition = false;\n      }\n    });\n  }\n\n  private isFacetSearchScrolledIntoView(facetSearchElement: HTMLElement) {\n    let facetTop = facetSearchElement.getBoundingClientRect().top;\n    let facetBottom = facetSearchElement.getBoundingClientRect().bottom;\n    let dropdownTop = this.dropdown.dropdownContent.element.el.getBoundingClientRect().top;\n    let dropdownBottom = this.dropdown.dropdownContent.element.el.getBoundingClientRect().bottom;\n\n    dropdownTop = dropdownTop >= 0 ? dropdownTop : 0;\n\n    return facetTop >= dropdownTop && facetBottom <= dropdownBottom;\n  }\n\n  private getDropdownHeaderLabel() {\n    let dropdownHeaderLabel: string;\n    ComponentsTypes.getAllFacetInstancesFromElement(this.coveoRoot.find('.coveo-facet-column')).forEach(facet => {\n      const options = facet.options as IResponsiveComponentOptions;\n\n      if (!dropdownHeaderLabel && options.dropdownHeaderLabel) {\n        dropdownHeaderLabel = options.dropdownHeaderLabel;\n      }\n    });\n\n    if (!dropdownHeaderLabel) {\n      dropdownHeaderLabel = l(ResponsiveFacetColumn.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE);\n    }\n\n    return dropdownHeaderLabel;\n  }\n\n  private handleNoResults() {\n    this.dropdown.dropdownHeader.hide();\n  }\n\n  private handleQueryError() {\n    this.dropdown.dropdownHeader.hide();\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (data.results.totalCount === 0) {\n      this.dropdown.dropdownHeader.hide();\n    } else {\n      this.dropdown.dropdownHeader.show();\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacetColumn.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacet/_DynamicFacet.scss\n// module id = 221\n// module chunks = 2 4 8 88","import { $$ } from '../../../utils/Dom';\n\nexport interface IDynamicFacetValueMoreLessButtonOptions {\n  label: string;\n  ariaLabel: string;\n  className: string;\n  action: () => void;\n}\n\nexport class DynamicFacetValueShowMoreLessButton {\n  public element: HTMLElement;\n\n  constructor(options: IDynamicFacetValueMoreLessButtonOptions) {\n    const btn = $$(\n      'button',\n      {\n        className: options.className,\n        ariaLabel: options.ariaLabel,\n        type: 'button'\n      },\n      options.label\n    );\n\n    this.element = $$('li', null, btn).el;\n    btn.on('click', () => options.action());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueMoreLessButton.ts","import * as Globalize from 'globalize';\nimport { IDynamicFacet, IDynamicFacetValueProperties, IValueRenderer, IValueRendererKlass, IDynamicFacetValue } from '../IDynamicFacet';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { analyticsActionCauseList, IAnalyticsFacetMeta } from '../../Analytics/AnalyticsActionListMeta';\nimport { l } from '../../../strings/Strings';\nimport { RangeType } from '../../../rest/RangeValue';\nimport { FacetType } from '../../../rest/Facet/FacetRequest';\nimport { IAnalyticsFacetState } from '../../Analytics/IAnalyticsFacetState';\n\nexport class DynamicFacetValue implements IDynamicFacetValue {\n  public value: string;\n  public start: RangeType;\n  public end: RangeType;\n  public endInclusive: boolean;\n  public state: FacetValueState;\n  public numberOfResults: number;\n  public position: number;\n  public displayValue: string;\n  public renderer: IValueRenderer;\n  private element: HTMLElement = null;\n\n  constructor(facetValue: IDynamicFacetValueProperties, private facet: IDynamicFacet, rendererKlass: IValueRendererKlass) {\n    this.value = facetValue.value;\n    this.start = facetValue.start;\n    this.end = facetValue.end;\n    this.endInclusive = facetValue.endInclusive;\n    this.state = facetValue.state;\n    this.numberOfResults = facetValue.numberOfResults;\n    this.position = facetValue.position;\n    this.displayValue = facetValue.displayValue;\n    this.renderer = new rendererKlass(this, facet);\n  }\n\n  public get isSelected() {\n    return this.state === FacetValueState.selected;\n  }\n\n  public get isIdle() {\n    return this.state === FacetValueState.idle;\n  }\n\n  public toggleSelect() {\n    this.state === FacetValueState.selected ? this.deselect() : this.select();\n  }\n\n  public select() {\n    this.state = FacetValueState.selected;\n  }\n\n  public deselect() {\n    this.state = FacetValueState.idle;\n  }\n\n  public equals(arg: string | IDynamicFacetValue) {\n    const value = typeof arg === 'string' ? arg : arg.value;\n    return value.toLowerCase() === this.value.toLowerCase();\n  }\n\n  public focus() {\n    if (!this.renderedElement) {\n      return;\n    }\n    const checkbox = this.renderedElement.querySelector<HTMLElement>('.coveo-checkbox-button');\n    if (!checkbox) {\n      return;\n    }\n    checkbox.focus();\n  }\n\n  public get formattedCount(): string {\n    return Globalize.format(this.numberOfResults, 'n0');\n  }\n\n  public get selectAriaLabel() {\n    const resultCount = l('ResultCount', this.formattedCount, this.numberOfResults);\n\n    return `${this.displayValue} ${resultCount}`;\n  }\n\n  private get isRange() {\n    return this.facet.facetType !== FacetType.specific;\n  }\n\n  private get analyticsValue() {\n    return this.isRange ? `${this.start}..${this.end}` : this.value;\n  }\n\n  private get rangeFacetState() {\n    if (!this.isRange) {\n      return null;\n    }\n\n    return {\n      start: `${this.start}`,\n      end: `${this.end}`,\n      endInclusive: this.endInclusive\n    };\n  }\n\n  public get analyticsFacetState(): IAnalyticsFacetState {\n    return {\n      ...this.facet.basicAnalyticsFacetState,\n      ...this.rangeFacetState,\n      value: this.analyticsValue,\n      valuePosition: this.position,\n      displayValue: this.displayValue,\n      state: this.state\n    };\n  }\n\n  private get rangeFacetMeta() {\n    if (!this.isRange) {\n      return null;\n    }\n\n    return {\n      facetRangeStart: `${this.start}`,\n      facetRangeEnd: `${this.end}`,\n      facetRangeEndInclusive: this.endInclusive\n    };\n  }\n\n  public get analyticsFacetMeta(): IAnalyticsFacetMeta {\n    return {\n      ...this.facet.basicAnalyticsFacetMeta,\n      ...this.rangeFacetMeta,\n      facetValue: this.analyticsValue\n    };\n  }\n\n  public logSelectActionToAnalytics() {\n    const action =\n      this.state === FacetValueState.selected ? analyticsActionCauseList.dynamicFacetSelect : analyticsActionCauseList.dynamicFacetDeselect;\n\n    this.facet.logAnalyticsEvent(action, this.analyticsFacetMeta);\n  }\n\n  private render() {\n    this.element = this.renderer.render();\n    return this.element;\n  }\n\n  public get renderedElement() {\n    if (this.element) {\n      return this.element;\n    }\n\n    return this.render();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValue.ts","import { Component } from '../Base/Component';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { QueryEvents, IQuerySuccessEventArgs, IDoneBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { find, without, partition } from 'underscore';\nimport { IFacetResponse } from '../../rest/Facet/FacetResponse';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Assert } from '../../misc/Assert';\nimport { Initialization } from '../Base/Initialization';\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { IAutoLayoutAdjustableInsideFacetColumn } from '../SearchInterface/FacetColumnAutoLayoutAdjustment';\nimport { IQueryResults } from '../../rest/QueryResults';\n\nexport interface IDynamicFacetManagerOptions {\n  enableReorder?: boolean;\n  onUpdate?: IDynamicFacetManagerOnUpdate;\n  compareFacets?: IDynamicFacetManagerCompareFacet;\n  maximumNumberOfExpandedFacets?: number;\n}\n\nexport interface IDynamicFacetManagerOnUpdate {\n  (facet: IDynamicManagerCompatibleFacet, index: number): void;\n}\n\nexport interface IDynamicFacetManagerCompareFacet {\n  (facetA: IDynamicManagerCompatibleFacet, facetB: IDynamicManagerCompatibleFacet): number;\n}\n\nexport interface IDynamicManagerCompatibleFacet extends Component, IAutoLayoutAdjustableInsideFacetColumn {\n  dynamicFacetManager: DynamicFacetManager;\n  hasActiveValues: boolean;\n  isDynamicFacet: boolean;\n\n  handleQueryResults(results: IQueryResults): void;\n  putStateIntoQueryBuilder(queryBuilder: QueryBuilder): void;\n  putStateIntoAnalytics(): void;\n  expand(): void;\n  collapse(): void;\n}\n\n/**\n * The `DynamicFacetManager` component is meant to be a parent for multiple [DynamicFacet]{@link DynamicFacet} & [DynamicFacetRange]{@link DynamicFacetRange} components.\n * This component allows controlling a set of [`DynamicFacet`]{@link DynamicFacet} and [`DynamicFacetRange`]{@link DynamicFacetRange} as a group.\n *\n * @externaldocs [Using Dynamic Facets](https://docs.coveo.com/en/2917/).\n * @availablesince [May 2019 Release (v2.6063)](https://docs.coveo.com/en/2909/)\n */\nexport class DynamicFacetManager extends Component {\n  static ID = 'DynamicFacetManager';\n  static doExport = () => exportGlobally({ DynamicFacetManager });\n\n  /**\n   * The options for the DynamicFacetManager\n   * @componentOptions\n   */\n  static options: IDynamicFacetManagerOptions = {\n    /**\n     * Whether to allow the reordering of facets based on Coveo ML and index ranking scores.\n     *\n     * **Default:** `true`\n     */\n    enableReorder: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'Filtering' }),\n    /**\n     * A function to execute whenever facets are updated in the query response @externaldocs [Defining Custom Dynamic Facet Behaviors](https://docs.coveo.com/en/2917/javascript-search-framework/using-dynamic-facets#defining-custom-dynamic-facet-behaviors).\n     *\n     * **Note:**\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://developers.coveo.com/x/PoGfAQ#Components-PassingComponentOptionsintheinitCall)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://developers.coveo.com/x/PoGfAQ#Components-PassingComponentOptionsBeforetheinitCall)).\n     */\n    onUpdate: ComponentOptions.buildCustomOption<IDynamicFacetManagerOnUpdate>(() => {\n      return null;\n    }),\n    /**\n     * A custom sort function to execute on facets on every successful query response @externaldocs [Using Custom Dynamic Facet Sort Functions](https://docs.coveo.com/en/2917/javascript-search-framework/using-dynamic-facets#using-custom-dynamic-facet-sort-functions).\n     *\n     * **Note:**\n     * > If specified, the function must implement the JavaScript compareFunction (see [Array.prototype.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort).\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://developers.coveo.com/x/PoGfAQ#Components-PassingComponentOptionsintheinitCall)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://developers.coveo.com/x/PoGfAQ#Components-PassingComponentOptionsBeforetheinitCall)).\n     */\n    compareFacets: ComponentOptions.buildCustomOption<IDynamicFacetManagerCompareFacet>(() => {\n      return null;\n    }),\n    /**\n     * The maximum number of expanded facets inside the manager.\n     * Remaining facets are collapsed.\n     *\n     * **Note:**\n     * Prioritizes facets with active values, and then prioritizes first facets.\n     * If the number of facets with active values exceeds the value of the `maximumNumberOfExpandedFacets` option, it overrides the option.\n     *\n     * Using the value `-1` disables the feature and keeps all facets expanded.\n     *\n     * @availablesince [September 2019 Release (v2.7023)](https://docs.coveo.com/en/2990/)\n     */\n    maximumNumberOfExpandedFacets: ComponentOptions.buildNumberOption({ defaultValue: 4, min: -1 })\n  };\n\n  private childrenFacets: IDynamicManagerCompatibleFacet[] = [];\n  private containerElement: HTMLElement;\n\n  private get enabledFacets() {\n    return this.childrenFacets.filter(facet => !facet.disabled);\n  }\n\n  private get displayedFacets() {\n    return this.childrenFacets.filter(facet => facet.isCurrentlyDisplayed());\n  }\n\n  /**\n   * Creates a new `DynamicFacetManager` instance.\n   *\n   * @param element The element from which to instantiate the component.\n   * @param options The component options.\n   * @param bindings The component bindings. Automatically resolved by default.\n   */\n  constructor(element: HTMLElement, public options?: IDynamicFacetManagerOptions) {\n    super(element, 'DynamicFacetManager');\n    this.options = ComponentOptions.initComponentOptions(element, DynamicFacetManager, options);\n    this.resetContainer();\n    this.prependContainer();\n    this.initEvents();\n  }\n\n  private resetContainer() {\n    this.containerElement && $$(this.containerElement).remove();\n    this.containerElement = $$('div', { className: 'coveo-dynamic-facet-manager-container' }).el;\n  }\n\n  private prependContainer() {\n    $$(this.element).prepend(this.containerElement);\n  }\n\n  private initEvents() {\n    this.bind.onRootElement(InitializationEvents.afterComponentsInitialization, () => this.handleAfterComponentsInitialization());\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (data: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(data));\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n  }\n\n  private isDynamicFacet(component: Component) {\n    return !!(component as IDynamicManagerCompatibleFacet).isDynamicFacet;\n  }\n\n  private get allDynamicFacets(): IDynamicManagerCompatibleFacet[] {\n    const allFacetsInComponent = ComponentsTypes.getAllFacetInstancesFromElement(this.element);\n    return <IDynamicManagerCompatibleFacet[]>allFacetsInComponent.filter(this.isDynamicFacet);\n  }\n\n  private handleAfterComponentsInitialization() {\n    this.childrenFacets = this.allDynamicFacets;\n    this.childrenFacets.forEach(dynamicFacet => {\n      dynamicFacet.dynamicFacetManager = this;\n      this.containerElement.appendChild(dynamicFacet.element);\n    });\n\n    if (this.element.children.length > 1) {\n      this.logger.warn(`DynamicFacetManager contains incompatible elements. Those elements may be moved in the DOM.\n        To prevent this warning, move those elements outside of the DynamicFacetManager.`);\n    }\n\n    if (!this.childrenFacets.length) {\n      this.disable();\n    }\n  }\n\n  private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n\n    this.enabledFacets.forEach(dynamicFacet => {\n      dynamicFacet.putStateIntoQueryBuilder(data.queryBuilder);\n      dynamicFacet.putStateIntoAnalytics();\n    });\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (Utils.isNullOrUndefined(data.results.facets)) {\n      return this.notImplementedError();\n    }\n\n    this.enabledFacets.forEach(dynamicFacet => {\n      dynamicFacet.handleQueryResults(data.results);\n    });\n\n    const wasFacetOrderFrozen = data.query.facetOptions && data.query.facetOptions.freezeFacetOrder;\n    if (wasFacetOrderFrozen) {\n      return this.callOnUpdateOnChildrenFacets();\n    }\n\n    if (this.options.enableReorder) {\n      this.options.compareFacets ? this.sortFacetsWithCompareOption() : this.sortFacetsWithResponseOrder(data.results.facets);\n      this.reorderFacetsInDom();\n    }\n\n    this.respectMaximumExpandedFacetsThreshold();\n    this.callOnUpdateOnChildrenFacets();\n  }\n\n  private callOnUpdateOnChildrenFacets() {\n    if (!this.options.onUpdate) {\n      return;\n    }\n\n    this.childrenFacets.forEach((dynamicFacet, index) => this.options.onUpdate(dynamicFacet, index));\n  }\n\n  private sortFacetsWithResponseOrder(facetsResponse: IFacetResponse[]) {\n    const facetsInResponse = facetsResponse.map(({ facetId }) => this.getChildFacetWithId(facetId)).filter(Utils.exists);\n    const facetsNotInResponse = without(this.childrenFacets, ...facetsInResponse);\n\n    this.childrenFacets = [...facetsInResponse, ...facetsNotInResponse];\n  }\n\n  private sortFacetsWithCompareOption() {\n    this.childrenFacets = this.childrenFacets.sort(this.options.compareFacets);\n  }\n\n  private reorderFacetsInDom() {\n    this.resetContainer();\n    const fragment = document.createDocumentFragment();\n\n    this.childrenFacets.forEach(dynamicFacet => fragment.appendChild(dynamicFacet.element));\n\n    this.containerElement.appendChild(fragment);\n    this.prependContainer();\n  }\n\n  private respectMaximumExpandedFacetsThreshold() {\n    if (this.options.maximumNumberOfExpandedFacets === -1) {\n      return;\n    }\n\n    const [collapsableFacets, uncollapsableFacets] = partition(this.displayedFacets, facet => facet.options.enableCollapse);\n    let facetsLeftToExpandCounter = this.options.maximumNumberOfExpandedFacets - uncollapsableFacets.length;\n\n    collapsableFacets.forEach(dynamicFacet => {\n      if (facetsLeftToExpandCounter < 1) {\n        return dynamicFacet.collapse();\n      }\n\n      if (dynamicFacet.options.collapsedByDefault) {\n        dynamicFacet.logger.info(\n          'The facet has its \"collapsedByDefault\" option set to \"true\", which prevents the DynamicFacetManager from expanding it.',\n          'While this configuration may be legitimate, it partially defeats the purpose of the dynamic navigation experience feature.',\n          'For more information, see https://docs.coveo.com/en/2917/.'\n        );\n        return dynamicFacet.collapse();\n      }\n\n      facetsLeftToExpandCounter--;\n      dynamicFacet.expand();\n    });\n  }\n\n  private getChildFacetWithId(id: string) {\n    return find(this.childrenFacets, facet => facet.options.id === id);\n  }\n\n  private notImplementedError() {\n    this.logger.error('DynamicFacetManager is not supported by your current search endpoint. Disabling this component.');\n    this.disable();\n  }\n\n  public isCurrentlyDisplayed() {\n    return !!find(this.childrenFacets, facet => facet.isCurrentlyDisplayed());\n  }\n}\n\nInitialization.registerAutoCreateComponent(DynamicFacetManager);\nDynamicFacetManager.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacetManager/DynamicFacetManager.ts","/// <reference path='Facet.ts' />\nimport { StringUtils } from '../../utils/StringUtils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { FileTypes } from '../Misc/FileTypes';\nimport { DateUtils } from '../../utils/DateUtils';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport FacetModuleDefinition = require('./Facet');\nimport { l } from '../../strings/Strings';\n\nexport class FacetUtils {\n  static getRegexToUseForFacetSearch(value: string, ignoreAccent: boolean) {\n    return new RegExp(StringUtils.stringToRegex(value, ignoreAccent), 'i');\n  }\n\n  static getDisplayValueFromValueCaption(value: string, field: string, valueCaption: Record<string, string>) {\n    const returnValue = this.tryToGetTranslatedCaption(field, value, false);\n    return valueCaption[value] || returnValue;\n  }\n\n  static getValuesToUseForSearchInFacet(original: string, facet: FacetModuleDefinition.Facet): string[] {\n    let ret = [original];\n    let regex = this.getRegexToUseForFacetSearch(original, facet.options.facetSearchIgnoreAccents);\n    if (facet.options.valueCaption) {\n      _.chain(facet.options.valueCaption)\n        .pairs()\n        .filter(pair => {\n          return regex.test(pair[1]);\n        })\n        .each(match => {\n          ret.push(match[0]);\n        });\n      if (\n        QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@objecttype') ||\n        QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@filetype')\n      ) {\n        _.each(FileTypes.getFileTypeCaptions(), (value: string, key: string) => {\n          if (!(key in facet.options.valueCaption) && regex.test(value)) {\n            ret.push(key);\n          }\n        });\n      }\n    } else if (\n      QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@objecttype') ||\n      QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@filetype')\n    ) {\n      _.each(\n        _.filter(_.pairs(FileTypes.getFileTypeCaptions()), pair => {\n          return regex.test(pair[1]);\n        }),\n        match => {\n          ret.push(match[0]);\n        }\n      );\n    } else if (QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@month')) {\n      _.each(_.range(1, 13), month => {\n        if (regex.test(DateUtils.monthToString(month - 1))) {\n          ret.push(('0' + month.toString()).substr(-2));\n        }\n      });\n    }\n    return ret;\n  }\n\n  static buildFacetSearchPattern(values: string[]) {\n    values = _.map(values, value => {\n      return Utils.escapeRegexCharacter(value);\n    });\n    values[0] = '.*' + values[0] + '.*';\n    return values.join('|');\n  }\n\n  static needAnotherFacetSearch(\n    currentSearchLength: number,\n    newSearchLength: number,\n    oldSearchLength: number,\n    desiredSearchLength: number\n  ) {\n    // Something was removed (currentSearch < newSearch)\n    // && we might want to display more facet search result(currentSearch < desiredSearch)\n    // && the new query returned more stuff than the old one so there's still more results(currentSearchLength > oldLength)\n    return currentSearchLength < newSearchLength && currentSearchLength < desiredSearchLength && currentSearchLength > oldSearchLength;\n  }\n\n  static addNoStateCssClassToFacetValues(facet: FacetModuleDefinition.Facet, container: HTMLElement) {\n    // This takes care of adding the correct css class on each facet value checkbox (empty white box) if at least one value is selected in that facet\n    if (facet.values.getSelected().length != 0) {\n      let noStates = $$(container).findAll('li:not(.coveo-selected)');\n      _.each(noStates, noState => {\n        $$(noState).addClass('coveo-no-state');\n      });\n    }\n  }\n\n  static tryToGetTranslatedCaption(field: string, value: string, fallbackOnLocalization = true) {\n    let found: string;\n\n    if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@filetype')) {\n      found = FileTypes.getFileType(value, fallbackOnLocalization).caption;\n    } else if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@objecttype')) {\n      found = FileTypes.getObjectType(value, fallbackOnLocalization).caption;\n    } else if (FacetUtils.isMonthFieldValue(field, value)) {\n      const month = parseInt(value, 10);\n      found = DateUtils.monthToString(month - 1);\n    } else if (fallbackOnLocalization) {\n      found = l(value);\n    }\n    return found != undefined && Utils.isNonEmptyString(found) ? found : value;\n  }\n\n  static isMonthFieldValue(field: string, value: string) {\n    if (!QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@month')) {\n      return false;\n    }\n\n    const asInt = parseInt(value, 10);\n\n    if (isNaN(asInt)) {\n      return false;\n    }\n\n    if (asInt < 1 || asInt > 12) {\n      return false;\n    }\n\n    return true;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetUtils.ts","import { Template, TemplateRole } from './Template';\nimport { TemplateList } from './TemplateList';\nimport _ = require('underscore');\n\nexport class TableTemplate extends TemplateList {\n  instantiateRoleToString(role: TemplateRole) {\n    const roledTemplate = _.find(this.templates, t => t.role === role);\n    if (roledTemplate) {\n      return roledTemplate.instantiateToString(undefined, {});\n    } else {\n      return this.defaultRoledTemplates[role];\n    }\n  }\n  instantiateRoleToElement(role: TemplateRole) {\n    const roledTemplate = _.find(this.templates, t => t.role === role);\n    if (roledTemplate) {\n      return roledTemplate.instantiateToElement(undefined, {});\n    } else {\n      const tmpl = new Template(() => this.defaultRoledTemplates[role]);\n      tmpl.layout = 'table';\n      return tmpl.instantiateToElement(undefined);\n    }\n  }\n\n  private defaultTemplate = `<td><a class=\"CoveoResultLink\"></a></td>\n                             <td><span class=\"CoveoExcerpt\"></span></td>\n                             <td><span class=\"CoveoFieldValue\" data-field=\"@date\" data-helper=\"date\"></span></td>`;\n\n  private defaultRoledTemplates = {\n    'table-header': `<th style=\"width: 40%\">Link</th>\n                     <th>Excerpt</th>\n                     <th style=\"width: 20%\"\n                         class=\"CoveoSort coveo-table-header-sort\"\n                         data-sort-criteria=\"date ascending,date descending\"\n                         data-display-unselected-icon=\"false\">Date</th>`,\n    'table-footer': `<th>Link</th>\n                     <th>Excerpt</th>\n                     <th>Date</th>`\n  };\n\n  protected getFallbackTemplate(): Template {\n    return new Template(() => this.defaultTemplate);\n  }\n\n  hasTemplateWithRole(role: TemplateRole) {\n    return _.find(this.templates, t => t.role === role);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TableTemplate.ts","import { Defer } from '../../misc/Defer';\nimport { without, chain } from 'underscore';\nimport { $$, Dom } from '../../utils/Dom';\n\nexport interface FocusTrapOptions {\n  focusableSelector: string;\n}\n\nexport class FocusTrap {\n  private focusInEvent: (e: FocusEvent) => void;\n  private focusOutEvent: (e: FocusEvent) => void;\n  private hiddenElements: HTMLElement[];\n  private enabled: boolean;\n\n  private get focusableElements(): HTMLElement[] {\n    return chain(Dom.nodeListToArray(this.container.querySelectorAll(this.options.focusableSelector)))\n      .filter(element => $$(element).isVisible())\n      .sortBy(element => element.tabIndex)\n      .value();\n  }\n\n  constructor(\n    private container: HTMLElement,\n    private options: FocusTrapOptions = {\n      focusableSelector: '[tabindex], button'\n    }\n  ) {\n    this.hiddenElements = [];\n    this.enable();\n  }\n\n  public disable() {\n    document.removeEventListener('focusin', this.focusInEvent);\n    document.removeEventListener('focusout', this.focusOutEvent);\n    this.showHiddenElements();\n    this.enabled = false;\n  }\n\n  private enable() {\n    document.addEventListener('focusin', (this.focusInEvent = e => this.onFocusIn(e)));\n    document.addEventListener('focusout', (this.focusOutEvent = e => this.onFocusOut(e)));\n    this.hideAllExcept(this.container);\n    this.enabled = true;\n  }\n\n  private showHiddenElements() {\n    while (this.hiddenElements.length) {\n      this.hiddenElements.pop().removeAttribute('aria-hidden');\n    }\n  }\n\n  private hideElement(element: HTMLElement) {\n    if (element.getAttribute('aria-hidden')) {\n      return;\n    }\n    this.hiddenElements.push(element);\n    element.setAttribute('aria-hidden', `${true}`);\n  }\n\n  private hideSiblings(allowedElement: HTMLElement) {\n    const parent = allowedElement.parentElement;\n    if (parent) {\n      without($$(parent).children(), allowedElement).forEach(elementToHide => {\n        this.hideElement(elementToHide);\n      });\n    }\n  }\n\n  private hideAllExcept(allowedElement: HTMLElement) {\n    this.hideSiblings(allowedElement);\n    const parent = allowedElement.parentElement;\n    if (parent && parent !== document.body) {\n      this.hideAllExcept(parent);\n    }\n  }\n\n  private getFocusableSibling(element: HTMLElement, previous = false) {\n    const elements = this.focusableElements;\n    const currentIndex = elements.indexOf(element);\n    if (currentIndex === -1) {\n      return null;\n    }\n    return elements[(currentIndex + (previous ? -1 : 1) + elements.length) % elements.length];\n  }\n\n  private focusSibling(element: HTMLElement, previous = false) {\n    const sibling = this.getFocusableSibling(element, previous);\n    if (sibling) {\n      sibling.focus();\n    }\n  }\n\n  private focusFirstElement() {\n    const elements = this.focusableElements;\n    if (elements.length) {\n      elements[0].focus();\n    }\n  }\n\n  private elementIsBefore(oldElement: HTMLElement, newElement: HTMLElement) {\n    if (!newElement) {\n      return false;\n    }\n    return oldElement.compareDocumentPosition(newElement) === Node.DOCUMENT_POSITION_PRECEDING;\n  }\n\n  private onLosingFocus(oldElement: HTMLElement, newElement: HTMLElement) {\n    Defer.defer(() => {\n      if (!this.enabled) {\n        return;\n      }\n      this.enabled = false;\n      if (oldElement && this.focusIsAllowed(oldElement)) {\n        this.focusSibling(oldElement, this.elementIsBefore(oldElement, newElement));\n      } else {\n        this.focusFirstElement();\n      }\n      this.enabled = true;\n    });\n  }\n\n  private focusIsAllowed(element: HTMLElement) {\n    return this.container.contains(element);\n  }\n\n  private elementIsInPage(element: HTMLElement) {\n    return element && element !== document.body.parentElement;\n  }\n\n  private onFocusIn(e: FocusEvent) {\n    if (!this.enabled) {\n      return;\n    }\n    const oldElement = e.relatedTarget as HTMLElement;\n    const handledByFocusOut = this.elementIsInPage(oldElement);\n    if (handledByFocusOut) {\n      return;\n    }\n    const newElement = e.target as HTMLElement;\n    if (!this.elementIsInPage(newElement)) {\n      return;\n    }\n    if (!this.focusIsAllowed(newElement)) {\n      this.onLosingFocus(null, newElement);\n    }\n  }\n\n  private onFocusOut(e: FocusEvent) {\n    if (!this.enabled) {\n      return;\n    }\n    const newElement = e.relatedTarget as HTMLElement;\n    if (!this.elementIsInPage(newElement)) {\n      return;\n    }\n    if (!newElement || !this.focusIsAllowed(newElement)) {\n      this.onLosingFocus(e.target as HTMLElement, newElement);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FocusTrap/FocusTrap.ts","import { Template } from './Template';\nimport { IQueryResult } from '../../rest/QueryResult';\n\nexport class DefaultRecommendationTemplate extends Template {\n  instantiateToString(object?: IQueryResult): string {\n    var template = `<div class=\"coveo-result-frame\">\n        <div class=\"coveo-result-row\">\n          <div class=\"coveo-result-cell\" style=\"width:40px;text-align:center;vertical-align:middle;\">\n            <span class=\"CoveoIcon\" data-small=\"true\" data-with-label=\"false\">\n            </span>\n          </div>\n          <div class=\"coveo-result-cell\" style=\"padding:0 0 3px 5px;vertical-align:middle\">\n            <div class=\"coveo-result-row\">\n              <div class=\"coveo-result-cell\" style=\"font-size:10pt;\">\n                <a class=\"CoveoResultLink\" style=\"display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis\">\n                </a>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>`;\n    return template;\n  }\n\n  instantiateToElement(object?: IQueryResult): Promise<HTMLElement> {\n    return new Promise((resolve, reject) => {\n      var div = document.createElement('div');\n      div.innerHTML = this.instantiateToString(object);\n      resolve(div);\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/DefaultRecommendationTemplate.ts","import { IQueryResults } from '../../rest/QueryResults';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Assert, QueryUtils, Component, Initialization, QueryStateModel } from '../../Core';\nimport { IInitResult } from '../Base/Initialization';\nimport { Template } from './Template';\nimport { SearchInterface } from '../../ui/SearchInterface/SearchInterface';\nimport { ResultList } from '../ResultList/ResultList';\nimport { RendererValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { pluck, sortBy, map } from 'underscore';\nimport { $$ } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\n\nexport interface ITemplateToHtml {\n  resultTemplate: Template;\n  queryStateModel: QueryStateModel;\n  searchInterface: SearchInterface;\n}\n\nexport class TemplateToHtml {\n  constructor(public args: ITemplateToHtml) {}\n\n  public async buildResults(\n    results: IQueryResults,\n    layout: RendererValidLayout,\n    currentlyDisplayedResults: IQueryResult[]\n  ): Promise<HTMLElement[]> {\n    const res: { elem: HTMLElement; idx: number }[] = [];\n    const resultsPromises = map(results.results, (result: IQueryResult, index: number) => {\n      return this.buildResult(result, layout, currentlyDisplayedResults).then((resultElement: HTMLElement) => {\n        if (resultElement != null) {\n          res.push({ elem: resultElement, idx: index });\n        }\n        ResultList.resultCurrentlyBeingRendered = null;\n        return resultElement;\n      });\n    });\n\n    // We need to sort by the original index order, because in lazy loading mode, it's possible that results does not gets rendered\n    // in the correct order returned by the index, depending on the time it takes to load all the results component for a given result template\n    return Promise.all(resultsPromises).then(() => {\n      return pluck(sortBy(res, 'idx'), 'elem');\n    });\n  }\n\n  public async buildResult(\n    result: IQueryResult,\n    layout: RendererValidLayout,\n    currentlyDisplayedResults: IQueryResult[]\n  ): Promise<HTMLElement> {\n    Assert.exists(result);\n    QueryUtils.setStateObjectOnQueryResult(this.args.queryStateModel.get(), result);\n    QueryUtils.setSearchInterfaceObjectOnQueryResult(this.args.searchInterface, result);\n    ResultList.resultCurrentlyBeingRendered = result;\n    const resultElement = await this.createHtmlElement(result, layout);\n\n    if (resultElement != null) {\n      Component.bindResultToElement(resultElement, result);\n    }\n    currentlyDisplayedResults.push(result);\n\n    await this.autoCreateComponentsInsideResult(resultElement, result).initResult;\n\n    this.verifyChildren(resultElement);\n    return resultElement;\n  }\n\n  public autoCreateComponentsInsideResult(element: HTMLElement, result: IQueryResult): IInitResult {\n    Assert.exists(element);\n    return Initialization.automaticallyCreateComponentsInsideResult(element, result);\n  }\n\n  private createHtmlElement(result: IQueryResult, layout: RendererValidLayout) {\n    return this.args.resultTemplate.instantiateToElement(result, {\n      wrapInDiv: true,\n      checkCondition: true,\n      currentLayout: layout,\n      responsiveComponents: this.args.searchInterface.responsiveComponents\n    });\n  }\n\n  private verifyChildren(element: HTMLElement) {\n    const containsResultLink = !!$$(element).find('.CoveoResultLink');\n    if (containsResultLink) {\n      return;\n    }\n\n    const msg = `Result does not contain a \"CoveoResultLink\" component, please verify the result template`;\n    new Logger(element).warn(msg, this.args.resultTemplate);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateToHtml.ts","import { TemplateHelpers, ITemplateHelperFunction } from './TemplateHelpers';\nimport { IHighlight, IHighlightPhrase, IHighlightTerm } from '../../rest/Highlight';\nimport { HighlightUtils, StringAndHoles } from '../../utils/HighlightUtils';\nimport { IStreamHighlightOptions } from '../../utils/StreamHighlightUtils';\nimport { IDateToStringOptions, DateUtils } from '../../utils/DateUtils';\nimport { ICurrencyToStringOptions, CurrencyUtils } from '../../utils/CurrencyUtils';\nimport { IAnchorUtilsOptions, IImageUtilsOptions, AnchorUtils, ImageUtils } from '../../utils/HtmlUtils';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { TimeSpan, ITimeSpanUtilsOptions } from '../../utils/TimeSpanUtils';\nimport { EmailUtils } from '../../utils/EmailUtils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$ } from '../../utils/Dom';\nimport { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { StreamHighlightUtils } from '../../utils/StreamHighlightUtils';\nimport { FacetUtils } from '../Facet/FacetUtils';\nimport * as Globalize from 'globalize';\nimport { IStringMap } from '../../rest/GenericParam';\nimport * as _ from 'underscore';\nimport { Component } from '../Base/Component';\nimport { TemplateCache } from './TemplateCache';\nimport { INumberFormatOptions } from '../../utils/NumberUtils';\n\n/**\n * The core template helpers provided by default.\n *\n * **Examples:**\n *\n * **HTML**\n *\n * ```html\n * <div class=\"CoveoFieldValue\" data-field=\"@videoduration\" data-helper=\"timeSpan\" data-helper-options-is-milliseconds=\"false\"></div>\n * ```\n *\n * **Underscore**\n *\n * ```erb\n * <%= timeSpan(raw.videoduration, { isMilliseconds: false }) %>\n * ```\n */\nexport interface ICoreHelpers {\n  /**\n   * Shortens a string so that its length does not exceed a specific number of\n   * characters. An ellipsis is appended to the string if it exceeds the\n   * maximum length.\n   *\n   * - `content`: The string to shorten.\n   * - `length`: The maximum length of the resulting string.\n   * - `highlights`: Optional. If provided, the string will be highlighted\n   *   using this highlight information.\n   * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n   */\n  shorten: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n  /**\n   * Shortens a string using an algorithm suitable for file paths. The helper\n   * will insert an ellipsis in the string where text has been removed when\n   * the path exceeds the maximum length.\n   *\n   * - `content`: The path to shorten.\n   * - `length`: The maximum length of the resulting string.\n   * - `highlights`: Optional. If provided, the string will be highlighted using\n   *   this highlight information.\n   * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n   */\n  shortenPath: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n  /**\n   * Shortens a string using an algorithm suitable for URIs. The helper will\n   * insert an ellipsis in the string where text has been removed when the URI\n   * exceeds the maximum length.\n   *\n   * - `content`: The URI to shorten.\n   * - `length`: The maximum length of the resulting string.\n   * - `highlights`: Optional. If provided, the string will be highlighted\n   *   using this highlight information.\n   * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n   */\n  shortenUri: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n  /**\n   * Highlights a string using the provided highlight information.\n   *\n   * - `content`: The URI to shorten.\n   * - `highlights`: Optional. The highlight information to use.\n   * - `cssClass`: Optional. The name of the CSS class to use for highlighting.\n   */\n  highlight: (content: string, highlights?: IHighlight[], cssClass?: string) => string;\n  /**\n   * Highlights the provided terms in a given string.<br/>\n   * By default, the terms to highlight are the current query and the\n   * associated stemming words from the index.\n   * The only required parameter is the content, which specify the string that needs to be highlighted.\n   * The other parameters will normally be automatically resolved for you from the current result object.\n   *\n   * - `content`: The string content to highlight\n   * - `termsToHighlight`: The terms to highlight (see {@link IHighlightTerm})\n   * - `phraseToHighlight`: The phrases to highlight (see {@link IHighlightPhrase})\n   * - `options`: Optional. The options defined below as {@link IStreamHighlightOptions}\n   *\n   * **Note:**\n   * > `highlightStreamText` should only be used for very particular/specific use cases (e.g., augmenting the result template with additional information rather than the typical excerpt/title), and is not a proper replacement for actually having the correct title and excerpt on your results.\n   * >\n   * > Using incorrect result titles or excerpts on your search interface also causes relevancy to suffer greatly, as the index uses the title and excerpt to find relevant results. Consequently, end users are more likely to see results whose titles do not match their query.\n   * >\n   * > Moreover, the recommended method to implement simple title and/or excerpt highlighting is to simply use the {@link Excerpt} and {@link ResultLink} components.\n   */\n  highlightStreamText: (\n    content: string,\n    termsToHighlight: IHighlightTerm,\n    phrasesToHighlight: IHighlightPhrase,\n    options?: IStreamHighlightOptions\n  ) => string;\n  /**\n   * This helper operates exactly like the {@link highlightStreamText} helper, except\n   * that it should be used to highlight HTML content. The helper takes care\n   * of not highlighting the HTML markup.\n   *\n   * - `content`: The string content to highlight\n   * - `termsToHighlight`: The terms to highlight (see {@link IHighlightTerm})\n   * - `phraseToHighlight`: The phrases to highlight (see {@link IHighlightPhrase})\n   * - `options`: Optional. The options defined below as {@link IStreamHighlightOptions}\n   *\n   * **Note:**\n   * > `highlightStreamHTML` should only be used for very particular/specific use cases (e.g., augmenting the result template with additional information rather than the typical excerpt/title), and is not a proper replacement for actually having the correct title and excerpt on your results.\n   * >\n   * > Using incorrect result titles or excerpts on your search interface also causes relevancy to suffer greatly, as the index uses the title and excerpt to find relevant results. Consequently, end users are more likely to see results whose titles do not match their query.\n   * >\n   * > Moreover, the recommended method to implement simple title and/or excerpt highlighting is to simply use the {@link Excerpt} and {@link ResultLink} components.\n   */\n  highlightStreamHTML: (\n    content: string,\n    termsToHighlight: IHighlightTerm,\n    phrasesToHighlight: IHighlightPhrase,\n    options?: IStreamHighlightOptions\n  ) => string;\n  /**\n   * Formats a numeric value using the format string.\n   *\n   * - `content`: The numeric value to format.\n   * - `format` Optional. The string format to use. See the <a href=\"https://github.com/klaaspieter/jquery-global#numbers\" target=\"_blank\">Globalize</a> library for the list of available formats.\n   *\n   * When the helper is used in a [`FieldValue`]{@link FieldValue} component, this value is automatically retrieved from the specified [`field`]{@link FieldValue.options.field}.\n   *\n   * **Example:**\n   *\n   *  ```html\n   *  <div class=\"CoveoFieldValue\" data-field=\"@viewcount\" data-text-caption=\"Views\" data-helper=\"number\" data-helper-options-format=\"n0\"></div>\n   *  ```\n   */\n  number: (content: string, format: string | INumberFormatOptions) => string;\n  /**\n   * Formats a date value to a date-only string using the specified options.\n   *\n   * - `content`: The Date value to format.\n   * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n   */\n  date: (content: any, options?: IDateToStringOptions) => string;\n  /**\n   * Formats a date value to a time-only string using the specified options.\n   *\n   * - `content`: The Date value to format.\n   * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n   */\n  time: (content: any, options?: IDateToStringOptions) => string;\n  /**\n   * Formats a date value to a date and time string using the specified\n   * options.\n   *\n   * - `content`: The Date value to format.\n   * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n   */\n  dateTime: (content: any, options?: IDateToStringOptions) => string;\n  /**\n   * Formats a currency value to a string using the specified options.\n   *\n   * - `content`: The number value to format.\n   * - `options`: Optional. The options to use (see {@link ICurrencyToStringOptions}).\n   */\n  currency: (content: any, options?: ICurrencyToStringOptions) => string;\n  /**\n   * Formats a date value to a date and time string using options suitable for\n   * email dates\n   *\n   * - `content`: The Date value to format.\n   * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n   */\n  emailDateTime: (content: any, options?: IDateToStringOptions) => string;\n  /**\n   * Renders one or several email values in `mailto:` hyperlinks.\n   *\n   * - `value`: The string or array of strings that contains a list of semicolon-separated email\n   *   values. When multiple values are passed, each value is displayed in a\n   *   separate hyperlink.\n   * - `companyDomain`: Optional. The string that contains your own domain (e.g.:\n   *   coveo.com). When specified, this parameter allows email addresses\n   *   coming from your own domain to be displayed in a shortened format\n   *   (e.g.: Full Name), whereas email addresses coming from an external\n   *   domain will be displayed in an extended format (e.g.: Full Name\n   *   (domain.com)). If this parameter is not specified, then the shortened\n   *   format will automatically be used.\n   * - `me`: Optional. The string that contains the current username. If it is\n   *   specified, then the email address containing the current username will\n   *   be replaced by the localized string 'Me'.\n   * - `lengthLimit`: Optional. The number of email addresses that you want to display\n   *   before an ellipse is added (e.g.: 'From Joe, John and 5 others').<br/>\n   *   The default value is 2.\n   * - `truncateName`: Optional. When the username is available from the email address,\n   *   then you can specify if you want to truncate the full name. (e.g.:\n   *   'John S.' instead of 'John Smith').<br/>\n   *   The default value is `false`.\n   */\n  email: (value: string | string[], companyDomain?: string, me?: string, lengthLimit?: number, truncateName?: boolean) => string;\n  /**\n   * Formats a clickable HTML link (`<a>`).\n   *\n   * - `href`: The link URI\n   * - `options`: Optional. The options to use (see {@link IAnchorUtilsOptions})\n   */\n  anchor: (href: string, options?: IAnchorUtilsOptions) => string;\n  /**\n   * Formats an HTML image tag (`<img>`).\n   *\n   * - `src`: The image source URI\n   * - `options`: Optional. The options to use (see {@link IImageUtilsOptions})\n   */\n  image: (src: string, options?: IImageUtilsOptions) => string;\n  /**\n   * Formats an HTML image tag (`<img>`), and automatically uses the result\n   * object to query the REST API to get the thumbnail for this result. For\n   * example, this can be used to great effect when designing a template\n   * showing users or previews of files.\n   * - `result`: Optional. The current result object inside your template. In\n   *   underscore, it is referenced as `obj`. By default, the result\n   *   will be resolved automatically from your current template function (\n   *   Meaning the nearest result in the current call stack execution inside\n   *   your template)\n   * - `endpoint`: Optional. The name of the endpoint to use for your\n   *   thumbnail. Default is default.\n   * - `options`: Optional. The options to use (see {@link IImageUtilsOptions}).\n   */\n  thumbnail: (result?: IQueryResult, endpoint?: string, options?: IImageUtilsOptions) => string;\n  /**\n   * Generates an icon based on the file type of the current result. The icon\n   * will be contained inside a `<span>` element with the appropriate CSS\n   * class.\n   *\n   * - `result`: Optional. The current result object inside your template. In\n   *   underscore, it is referenced as `obj`. By default, the result\n   *   will be resolved automatically from your current template function (\n   *   Meaning the nearest result in the current call stack execution inside\n   *   your template)\n   * - `options`: Optional. The options to use (see {@link IIconOptions}).\n   */\n  fromFileTypeToIcon: (result?: IQueryResult, options?: any) => string;\n  /**\n   * Loads a partial template in the current template, by passing the ID of\n   * the template to load, the condition for which this template should be\n   * loaded, and the context object (the object that the loaded template will\n   * use as its data). By default, the context object will be the same as the\n   * template that called this helper function. So, for example, in a\n   * ResultList Component, the contextObject would, by default, be the Query\n   * Results.\n   *\n   * - `templateId`: The ID of the template to load.\n   * - `condition`: Optional. The boolean condition to determine if this template should\n   *   load for this result set. Most of the time this would be a condition of\n   *   the type if raw.somefield == 'something'.\n   * - `contextObject`: Optional. The object that should be used by the loaded template\n   *   as its contextObject.\n   */\n  loadTemplate: (templateId: string, condition?: boolean, contextObject?: any) => string;\n  /**\n   * Given a number, either in millisecond or second, convert to a HH:MM:SS format.\n   *\n   * **Examples**\n   *\n   * >`timeSpan(1, {isMilliseconds: false}) => '00:01'`\n   * >\n   * >`timeSpan(1000, {isMilliseconds: true}) => '00:01'`\n   *\n   * - `value`: The number to convert to a timespan\n   * - `options` : The options to use (see {@link ITimeSpanUtilsOptions})\n   */\n  timeSpan: (value: number, options: ITimeSpanUtilsOptions) => string;\n  /**\n   * Formats a number, which represents a file size in bytes, into a logical unit size.\n   *\n   * **Examples:**\n   *\n   * >`size(1024) => 1024 B`\n   * >\n   * >`size(1025) => 1 KB`\n   * >\n   * >`size(10240) => 10 KB`\n   *\n   * **Examples:**\n   *\n   * >**HTML**\n   * >\n   * > ```html\n   * > <div class=\"CoveoFieldValue\" data-field='@size' data-helper=\"size\" data-helper-options-base=\"1\"></div>\n   * > ```\n   *\n   * >**Underscore**\n   * >\n   * > ```erb\n   * > <%= size(raw.size, {base: 0, precision: 2}) %>\n   * > ```\n   *\n   * - `value`: The number to format\n   * - `options` : The options to use (see {@link ISizeOptions})\n   */\n  size: (value: number, options?: ISizeOptions) => string;\n  /**\n   * Given a filetype value, try to return a translated and human readable version.\n   *\n   * If the filetype is known and recognized by the framework, a translated value will be returned.\n   *\n   * **Examples**\n   *\n   * >`translatedCaption('doc') => Document`\n   * >\n   * >`translatedCaption('xls') => Spreadsheet Document`\n   *\n   * - `value`: The string value to translate\n   */\n  translatedCaption: (value: string) => string;\n  /**\n   * Replace all carriage return in a string by a &lt;br /&gt; tag\n   *\n   * - `value`: The string value to replace the carriage returns in.\n   */\n  encodeCarriageReturn: (value: string) => string;\n  /**\n   * Detect if the results is being rendered in a mobile device.\n   *\n   * If it's not a mobile device, the helper return null ;\n   *\n   * If it's a mobile device, return the type of device (Android, iPhone, iPad) etc.\n   */\n  isMobileDevice: () => string;\n}\n\n/**\n * Available options for the size templateHelpers.\n *\n * Example:\n * <div class=\"CoveoFieldValue\" data-helper=\"helperName\" data-helper-options-optionName=\"option-value\"></div>\n */\nexport interface ISizeOptions {\n  /**\n   * The base into which to format the value.\n   *\n   * Formula: value * 10^(3 * base)\n   *\n   * **Examples:**\n   * > **Base 0:**\n   * >\n   * > 1 => 1B\n   * >\n   * > 1000 => 1KB\n   *\n   * > **Base 1:**\n   * >\n   * > 1 => 1KB\n   * >\n   * > 1000 => 1MB\n   */\n  base?: number;\n  /**\n   * The precision to use to format the size (i.e., the number of digits to display after the decimal)\n   *\n   * **Examples:**\n   * > **Precision 0:**\n   * >\n   * > 1.0 => 1\n   * >\n   * > 1.85 => 1\n   *\n   * > **Precision 1:**\n   * >\n   * > 1.0 => 1.0\n   * >\n   * > 1.85 => 1.8\n   */\n\n  precision?: number;\n}\n\nexport interface IShortenOptions {\n  length: number;\n  highlights?: IHighlight[];\n  cssClass?: string;\n}\n\nexport interface IHighlightsOptions {\n  highlights: IHighlight[];\n  cssClass?: string;\n}\n\nexport interface IHelperStreamHighlightOptions {\n  termsToHighlight: IHighlightTerm;\n  phrasesToHighlight: IHighlightPhrase;\n  opts?: IStreamHighlightOptions;\n}\n\nexport class CoreHelpers {\n  public constructor() {}\n\n  /**\n   * For backward compatibility reason, the \"global\" template helper should be available under the\n   * coveo namespace.\n   * @param scope\n   */\n  public static exportAllHelpersGlobally(scope: IStringMap<any>) {\n    _.each(TemplateHelpers.getHelpers(), (helper: ITemplateHelperFunction, name: string) => {\n      if (scope[name] == undefined) {\n        scope[name] = helper;\n      }\n    });\n  }\n}\n\nTemplateHelpers.registerFieldHelper('javascriptEncode', (value: string) => {\n  return Utils.exists(value) ? StringUtils.javascriptEncode(value) : undefined;\n});\n\nconst executeShorten = (content: string, options: IShortenOptions) => {\n  const strAndHoles = StringAndHoles.shortenString(content, options.length, '...');\n  if (Utils.exists(options.highlights)) {\n    return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n  } else {\n    return strAndHoles.value;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper('shorten', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n  return executeShorten(content, {\n    length,\n    highlights,\n    cssClass\n  });\n});\n\nTemplateHelpers.registerTemplateHelper('shortenv2', (content: string, options: IShortenOptions) => {\n  return executeShorten(content, options);\n});\n\nconst executeShortenPath = (content: string, options: IShortenOptions) => {\n  const strAndHoles = StringAndHoles.shortenPath(content, options.length);\n  if (Utils.exists(options.highlights)) {\n    return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n  } else {\n    return strAndHoles.value;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper('shortenPath', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n  return executeShortenPath(content, {\n    length,\n    highlights,\n    cssClass\n  });\n});\n\nTemplateHelpers.registerFieldHelper('shortenPathv2', (content: string, options: IShortenOptions) => {\n  return executeShortenPath(content, options);\n});\n\nconst executeShortenUri = (content: string, options: IShortenOptions) => {\n  const strAndHoles = StringAndHoles.shortenUri(content, options.length);\n\n  if (Utils.exists(options.highlights)) {\n    return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n  } else {\n    return strAndHoles.value;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper('shortenUri', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n  return executeShortenUri(content, {\n    length,\n    highlights,\n    cssClass\n  });\n});\n\nTemplateHelpers.registerTemplateHelper('shortenUriv2', (content: string, options: IShortenOptions) => {\n  return executeShortenUri(content, options);\n});\n\nconst executeHighlight = (content: string, options: IHighlightsOptions) => {\n  if (Utils.exists(content)) {\n    if (Utils.exists(options.highlights)) {\n      return HighlightUtils.highlightString(content, options.highlights, null, options.cssClass || 'highlight');\n    } else {\n      return content;\n    }\n  } else {\n    return undefined;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper('highlight', (content: string, highlights: IHighlight[], cssClass?: string) => {\n  return executeHighlight(content, {\n    highlights,\n    cssClass\n  });\n});\n\nTemplateHelpers.registerTemplateHelper('highlightv2', (content: string, options: IHighlightsOptions) => {\n  return executeHighlight(content, options);\n});\n\nconst executeHighlightStreamText = (content: string, options: IHelperStreamHighlightOptions) => {\n  if (Utils.exists(content) && Utils.exists(options.termsToHighlight) && Utils.exists(options.phrasesToHighlight)) {\n    if (termsToHighlightAreDefined(options.termsToHighlight, options.phrasesToHighlight)) {\n      return StreamHighlightUtils.highlightStreamText(content, options.termsToHighlight, options.phrasesToHighlight, options.opts);\n    } else {\n      return content;\n    }\n  } else {\n    return undefined;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper(\n  'highlightStreamText',\n  (\n    content: string,\n    termsToHighlight = resolveTermsToHighlight(),\n    phrasesToHighlight = resolvePhrasesToHighlight(),\n    opts?: IStreamHighlightOptions\n  ) => {\n    return executeHighlightStreamText(content, {\n      termsToHighlight,\n      phrasesToHighlight,\n      opts\n    });\n  }\n);\n\nTemplateHelpers.registerTemplateHelper('highlightStreamTextv2', (content: string, options: IHelperStreamHighlightOptions) => {\n  const mergedOptions = {\n    termsToHighlight: resolveTermsToHighlight(),\n    phrasesToHighlight: resolvePhrasesToHighlight(),\n    ...options\n  };\n  return executeHighlightStreamText(content, mergedOptions);\n});\n\nconst executeHighlightStreamHTML = (content: string, options: IHelperStreamHighlightOptions) => {\n  if (Utils.exists(content) && Utils.exists(options.termsToHighlight) && Utils.exists(options.phrasesToHighlight)) {\n    if (termsToHighlightAreDefined(options.termsToHighlight, options.phrasesToHighlight)) {\n      return StreamHighlightUtils.highlightStreamHTML(content, options.termsToHighlight, options.phrasesToHighlight, options.opts);\n    } else {\n      return content;\n    }\n  } else {\n    return undefined;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper(\n  'highlightStreamHTML',\n  (\n    content: string,\n    termsToHighlight = resolveTermsToHighlight(),\n    phrasesToHighlight = resolvePhrasesToHighlight(),\n    opts?: IStreamHighlightOptions\n  ) => {\n    return executeHighlightStreamHTML(content, {\n      termsToHighlight,\n      phrasesToHighlight,\n      opts\n    });\n  }\n);\n\nTemplateHelpers.registerTemplateHelper('highlightStreamHTMLv2', (content: string, options: IHelperStreamHighlightOptions) => {\n  const mergedOptions = {\n    termsToHighlight: resolveTermsToHighlight(),\n    phrasesToHighlight: resolvePhrasesToHighlight(),\n    ...options\n  };\n  return executeHighlightStreamHTML(content, mergedOptions);\n});\n\nTemplateHelpers.registerFieldHelper('number', (value: any, options?: INumberFormatOptions | string) => {\n  if (!Utils.exists(value)) {\n    return undefined;\n  }\n\n  const numberValue = Number(value);\n  const format = _.isString(options) ? options : options && options.format;\n  if (!format) {\n    return StringUtils.htmlEncode(numberValue.toString());\n  }\n\n  return StringUtils.htmlEncode(Globalize.format(numberValue, <string>format));\n});\n\nTemplateHelpers.registerFieldHelper('date', (value: any, options?: IDateToStringOptions) => {\n  return DateUtils.dateToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('time', (value: any, options?: IDateToStringOptions) => {\n  return DateUtils.timeToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('dateTime', (value: any, options?: IDateToStringOptions) => {\n  return DateUtils.dateTimeToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('emailDateTime', (value: any, options?: IDateToStringOptions) => {\n  var defaultOptions = <IDateToStringOptions>{};\n  defaultOptions.includeTimeIfThisWeek = true;\n  var optionsToUse = <IDateToStringOptions>_.extend(options, defaultOptions);\n  return value ? DateUtils.dateTimeToString(DateUtils.convertFromJsonDateIfNeeded(value), optionsToUse) : undefined;\n});\n\nTemplateHelpers.registerFieldHelper('currency', (value: any, options?: ICurrencyToStringOptions) => {\n  return CurrencyUtils.currencyToString(value, options);\n});\n\nTemplateHelpers.registerFieldHelper('timeSpan', (value: any, options: ITimeSpanUtilsOptions = { isMilliseconds: false }) => {\n  return new TimeSpan(value, options.isMilliseconds).getHHMMSS();\n});\n\nTemplateHelpers.registerFieldHelper('email', (value: string | string[], ...args: any[]) => {\n  // support old arguments (value: any, companyDomain: string, me: string, lengthLimit = 2, truncateName = false)\n  var companyDomain: string;\n  var me: string;\n  var lengthLimit: number;\n  var truncateName: boolean;\n  if (_.isObject(args[0])) {\n    companyDomain = args[0]['companyDomain'];\n    me = args[0]['me'];\n    lengthLimit = args[0]['lengthLimit'];\n    truncateName = args[0]['truncateName'];\n  } else {\n    companyDomain = args[0];\n    me = args[1];\n    lengthLimit = args[2];\n    truncateName = args[3];\n  }\n  if (lengthLimit == undefined) {\n    lengthLimit = 2;\n  }\n  if (truncateName == undefined) {\n    truncateName = false;\n  }\n  if (_.isString(value)) {\n    var listOfAddresses = EmailUtils.splitSemicolonSeparatedListOfEmailAddresses(<string>value);\n    return EmailUtils.emailAddressesToHyperlinks(listOfAddresses, companyDomain, me, lengthLimit, truncateName);\n  } else if (_.isArray(value)) {\n    return EmailUtils.emailAddressesToHyperlinks(<string[]>value, companyDomain, me, lengthLimit, truncateName);\n  } else {\n    return undefined;\n  }\n});\n\nTemplateHelpers.registerTemplateHelper('excessEmailToggle', (target: HTMLElement) => {\n  $$(target).removeClass('coveo-active');\n  if ($$(target).hasClass('coveo-emails-excess-collapsed')) {\n    _.each($$(target).siblings('.coveo-emails-excess-expanded'), sibling => {\n      $$(sibling).addClass('coveo-active');\n    });\n  } else if ($$(target).hasClass('coveo-hide-expanded')) {\n    $$(target.parentElement).addClass('coveo-inactive');\n    _.each($$(target.parentElement).siblings('.coveo-emails-excess-collapsed'), sibling => {\n      $$(sibling).addClass('coveo-active');\n    });\n  }\n  return undefined;\n});\n\nTemplateHelpers.registerFieldHelper('anchor', (href: string, options?: IAnchorUtilsOptions) => {\n  return AnchorUtils.buildAnchor(href, options);\n});\n\nTemplateHelpers.registerFieldHelper('image', (src: string, options?: IImageUtilsOptions, result: IQueryResult = resolveQueryResult()) => {\n  if (options && options.srcTemplate) {\n    return ImageUtils.buildImage(StringUtils.buildStringTemplateFromResult(options.srcTemplate, result), {\n      alt: options.alt,\n      height: options.height,\n      width: options.width\n    });\n  }\n  return ImageUtils.buildImage(src, options);\n});\n\nTemplateHelpers.registerTemplateHelper(\n  'thumbnail',\n  (result: IQueryResult = resolveQueryResult(), endpoint: string = 'default', options?: IImageUtilsOptions) => {\n    if (QueryUtils.hasThumbnail(result)) {\n      return ImageUtils.buildImageFromResult(result, SearchEndpoint.endpoints[endpoint], options);\n    }\n  }\n);\n\nTemplateHelpers.registerTemplateHelper('fromFileTypeToIcon', (result: IQueryResult = resolveQueryResult(), options = {}) => {\n  let icon = Component.getComponentRef('Icon');\n  if (icon) {\n    return icon.createIcon(result, options).outerHTML;\n  }\n});\n\nTemplateHelpers.registerTemplateHelper('attrEncode', (value: string) => {\n  return ('' + value) /* Forces the conversion to string. */\n    .replace(/&/g, '&amp;') /* This MUST be the 1st replacement. */\n    .replace(/'/g, '&apos;') /* The 4 other predefined entities, required. */\n    .replace(/'/g, '&quot;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;');\n});\n\nTemplateHelpers.registerTemplateHelper('loadTemplates', (templatesToLoad: { [id: string]: any }, once = true) => {\n  var ret = '';\n  var data = resolveQueryResult();\n  var atLeastOneWasLoaded = false;\n  var toLoad = templatesToLoad;\n  var defaultTmpl;\n  _.each(templatesToLoad, (value, key?, obj?) => {\n    if (value == 'default') {\n      defaultTmpl = key;\n    }\n  });\n  if (defaultTmpl != undefined) {\n    toLoad = _.omit(templatesToLoad, defaultTmpl);\n  }\n  _.each(toLoad, (condition, id?, obj?) => {\n    if (!atLeastOneWasLoaded || !once) {\n      atLeastOneWasLoaded = atLeastOneWasLoaded || condition;\n      ret += TemplateHelpers.getHelper('loadTemplate')(id, condition, data);\n    }\n  });\n  if (!atLeastOneWasLoaded && defaultTmpl != undefined) {\n    ret += TemplateHelpers.getHelper('loadTemplate')(defaultTmpl, true, data);\n  }\n  return ret;\n});\n\nconst byteMeasure = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'];\n\nTemplateHelpers.registerFieldHelper('size', (value: any, options?: ISizeOptions) => {\n  var size = parseInt(value, 10);\n  var precision = options != null && options.precision != null ? options.precision : 2;\n  var base = options != null && options.base != null ? options.base : 0;\n  while (size > 1024 && base + 1 < byteMeasure.length) {\n    size /= 1024;\n    base++;\n  }\n  size = Math.floor(size * Math.pow(10, precision)) / Math.pow(10, precision);\n  return size + ' ' + byteMeasure[base];\n});\n\nTemplateHelpers.registerFieldHelper('translatedCaption', (value: string) => {\n  return FacetUtils.tryToGetTranslatedCaption('@filetype', value);\n});\n\nTemplateHelpers.registerTemplateHelper('loadTemplate', (id: string, condition: boolean = true, data?: any) => {\n  if (Utils.isNullOrUndefined(data)) {\n    data = resolveQueryResult();\n  }\n  if (condition) {\n    return TemplateCache.getTemplate(id).instantiateToString(data, {\n      checkCondition: false\n    });\n  }\n  return '';\n});\n\nTemplateHelpers.registerTemplateHelper('encodeCarriageReturn', (data: string) => {\n  if (Utils.isNullOrUndefined(data)) {\n    return undefined;\n  } else {\n    return StringUtils.encodeCarriageReturn(data);\n  }\n});\n\nTemplateHelpers.registerTemplateHelper('isMobileDevice', () => {\n  return DeviceUtils.isMobileDevice() ? DeviceUtils.getDeviceName() : null;\n});\n\nfunction resolveQueryResult(): IQueryResult {\n  let found;\n  let resultList = Component.getComponentRef('ResultList');\n  if (resultList) {\n    found = resultList.resultCurrentlyBeingRendered;\n  }\n  if (!found) {\n    let quickview = Component.getComponentRef('Quickview');\n    if (quickview) {\n      found = quickview.resultCurrentlyBeingRendered;\n    }\n  }\n  return found;\n}\n\nfunction resolveTermsToHighlight(): IHighlightTerm {\n  let currentQueryResult = resolveQueryResult();\n  if (currentQueryResult) {\n    return currentQueryResult.termsToHighlight;\n  }\n}\n\nfunction resolvePhrasesToHighlight(): IHighlightPhrase {\n  let currentQueryResult = resolveQueryResult();\n  if (currentQueryResult) {\n    return currentQueryResult.phrasesToHighlight;\n  }\n}\n\nfunction termsToHighlightAreDefined(termsToHighlight, phrasesToHighlight) {\n  return Utils.isNonEmptyArray(_.keys(termsToHighlight)) || Utils.isNonEmptyArray(_.keys(phrasesToHighlight));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/CoreHelpers.ts","import { $$, Dom } from '../../../utils/Dom';\nimport { SVGDom } from '../../../utils/SVGDom';\n\nexport interface IDynamicFacetHeaderButtonOptions {\n  label: string;\n  ariaLabel?: string;\n  shouldDisplay?: boolean;\n  className?: string;\n  iconSVG?: string;\n  iconClassName?: string;\n  action?: () => void;\n}\n\nexport class DynamicFacetHeaderButton {\n  private button: Dom;\n  public element: HTMLElement;\n\n  constructor(private rootOptions: IDynamicFacetHeaderButtonOptions) {\n    this.create();\n  }\n\n  private create() {\n    const hasIcon = this.rootOptions.iconSVG && this.rootOptions.iconClassName;\n\n    this.button = $$(\n      'button',\n      {\n        className: `coveo-dynamic-facet-header-btn ${this.rootOptions.className || ''}`.trim(),\n        type: 'button'\n      },\n      hasIcon ? this.rootOptions.iconSVG : this.rootOptions.label\n    );\n\n    this.rootOptions.action && this.button.on('click', this.rootOptions.action);\n\n    if (hasIcon) {\n      this.button.setAttribute('aria-label', this.rootOptions.label);\n      this.button.setAttribute('title', this.rootOptions.label);\n      SVGDom.addClassToSVGInContainer(this.button.el, this.rootOptions.iconClassName);\n    }\n\n    if (this.rootOptions.ariaLabel) {\n      this.button.setAttribute('aria-label', this.rootOptions.ariaLabel);\n    }\n\n    if (this.rootOptions.shouldDisplay !== undefined) {\n      this.toggle(this.rootOptions.shouldDisplay);\n    }\n\n    this.element = this.button.el;\n  }\n\n  public toggle(shouldDisplay: boolean) {\n    this.button.toggle(shouldDisplay);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeaderButton.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacet/_DynamicFacetBreadcrumbs.scss\n// module id = 508\n// module chunks = 2 4 8 88","/**\n * The allowed sort criteria for a Search API\n * [facet request]{@link IFacetRequest}.\n */\nexport enum FacetSortCriteria {\n  /**\n   * Sort facet values in descending score order.\n   *\n   * Facet value scores are based on number of occurrences and position in the\n   * ranked query result set.\n   *\n   * The Coveo Machine Learning dynamic navigation experience feature only\n   * works with this sort criterion.\n   */\n  score = 'score',\n  /**\n   * Sort facet values in ascending alphanumeric order.\n   */\n  alphanumeric = 'alphanumeric',\n  /**\n   * Sort facet values in descending number of occurrences.\n   */\n  occurrences = 'occurrences'\n}\n\nexport function isFacetSortCriteria(sortCriteria: string) {\n  return !!FacetSortCriteria[sortCriteria];\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Facet/FacetSortCriteria.ts","import { $$ } from '../../utils/Dom';\nimport { ComboboxInput } from './ComboboxInput';\nimport { uniqueId, throttle } from 'underscore';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { ComboboxValues } from './ComboboxValues';\nimport 'styling/_Combobox';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\nimport { IComboboxOptions, ICombobox, IComboboxAccessibilityAttributes } from './ICombobox';\n\nexport class Combobox implements ICombobox {\n  public element: HTMLElement;\n  public id: string;\n  public values: ComboboxValues;\n  private input: ComboboxInput;\n  private waitAnimationElement: HTMLElement;\n  private defaultOptions: Partial<IComboboxOptions> = {\n    wrapperClassName: '',\n    clearOnBlur: false\n  };\n  private throttlingDelay = 600;\n  private isRequestCancelled = false;\n\n  constructor(public options: IComboboxOptions) {\n    this.options = {\n      ...this.defaultOptions,\n      ...this.options\n    };\n\n    this.id = uniqueId('coveo-combobox-');\n    this.create();\n  }\n\n  private create() {\n    this.element = $$('div', { className: `coveo-combobox-wrapper ${this.options.wrapperClassName}` }).el;\n    this.createAndAppendInput();\n    this.createAndAppendWaitAnimation();\n    this.createAndAppendValues();\n  }\n\n  private createAndAppendInput() {\n    this.input = new ComboboxInput(this);\n    this.element.appendChild(this.input.element);\n  }\n\n  private createAndAppendWaitAnimation() {\n    this.waitAnimationElement = $$('div', { className: 'coveo-combobox-wait-animation' }, SVGIcons.icons.loading).el;\n    SVGDom.addClassToSVGInContainer(this.waitAnimationElement, 'coveo-combobox-wait-animation-svg');\n    this.toggleWaitAnimation(false);\n    this.input.element.appendChild(this.waitAnimationElement);\n  }\n\n  private toggleWaitAnimation(show: boolean) {\n    $$(this.waitAnimationElement).toggle(show);\n  }\n\n  private createAndAppendValues() {\n    this.values = new ComboboxValues(this);\n    this.element.appendChild(this.values.element);\n  }\n\n  public clearAll() {\n    this.clearValues();\n    this.input.clearInput();\n  }\n\n  private clearValues() {\n    this.values.clearValues();\n    this.cancelRequest();\n  }\n\n  private cancelRequest() {\n    this.toggleWaitAnimation(false);\n    this.throttledRequest.cancel();\n    this.isRequestCancelled = true;\n  }\n\n  public onInputChange(value: string) {\n    if (Utils.isEmptyString(value)) {\n      return this.clearValues();\n    }\n\n    this.throttledRequest(\n      () => this.options.requestValues(value),\n      () => this.values.resetScroll()\n    );\n  }\n\n  public onInputBlur() {\n    if (this.values.mouseIsOverValue) {\n      return;\n    }\n\n    if (this.values.isRenderingNewValues) {\n      return;\n    }\n\n    if (this.options.clearOnBlur) {\n      return this.clearAll();\n    }\n\n    this.clearValues();\n  }\n\n  public updateAccessibilityAttributes(attributes: IComboboxAccessibilityAttributes) {\n    this.input.updateAccessibilityAttributes(attributes);\n  }\n\n  public updateAriaLive() {\n    if (!this.values.hasValues()) {\n      this.options.ariaLive.updateText(l('NoValuesFound'));\n      return;\n    }\n\n    let text = l('ShowingResultsWithQuery', this.values.numberOfValues, this.input.value, this.values.numberOfValues);\n    if (this.options.scrollable && this.options.scrollable.areMoreValuesAvailable()) {\n      text = `${text} (${l('MoreValuesAvailable')})`;\n    }\n\n    this.options.ariaLive.updateText(text);\n  }\n\n  public onScrollEndReached() {\n    this.values.saveFocusedValue();\n    this.options.scrollable &&\n      this.throttledRequest(\n        () => this.options.scrollable.requestMoreValues(),\n        () => this.values.restoreFocusedValue()\n      );\n  }\n\n  private throttledRequest = throttle(this.triggerRequest, this.throttlingDelay, {\n    leading: true,\n    trailing: true\n  });\n\n  private async triggerRequest(request: () => Promise<any>, callback?: Function) {\n    this.isRequestCancelled = false;\n    this.toggleWaitAnimation(true);\n\n    const response = await request();\n    this.toggleWaitAnimation(false);\n\n    if (!this.isRequestCancelled) {\n      this.values.renderFromResponse(response);\n      callback && callback();\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Combobox/Combobox.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacetSearch/_DynamicFacetSearch.scss\n// module id = 511\n// module chunks = 2 4 8 88","import { Checkbox } from '../../FormWidgets/Checkbox';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { $$ } from '../../../utils/Dom';\n\nexport class DynamicFacetValueCheckbox {\n  private checkbox: Checkbox;\n  public element: HTMLElement;\n\n  constructor(private facetValue: DynamicFacetValue, selectAction = () => {}) {\n    this.checkbox = new Checkbox(\n      selectAction.bind(this),\n      this.facetValue.displayValue,\n      this.facetValue.selectAriaLabel,\n      `(${this.facetValue.formattedCount})`\n    );\n\n    const label = $$(this.checkbox.getElement()).find('.coveo-checkbox-span-label');\n    const labelSuffix = $$(this.checkbox.getElement()).find('.coveo-checkbox-span-label-suffix');\n\n    if (label && labelSuffix) {\n      label.setAttribute('title', this.facetValue.displayValue);\n      label.setAttribute('aria-hidden', 'true');\n      labelSuffix.setAttribute('aria-hidden', 'true');\n    }\n\n    this.facetValue.isSelected && this.checkbox.select(false);\n    this.element = this.checkbox.getElement();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueCheckbox.ts","import 'styling/DynamicFacet/_DynamicFacetValues';\nimport { $$ } from '../../../utils/Dom';\nimport { findWhere, find, escape } from 'underscore';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { IFacetResponse } from '../../../rest/Facet/FacetResponse';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { l } from '../../../strings/Strings';\nimport { IDynamicFacet, IValueCreator, IDynamicFacetValue, IDynamicFacetValues } from '../IDynamicFacet';\nimport { DynamicFacetValueShowMoreLessButton } from './DynamicFacetValueMoreLessButton';\nimport { Utils } from '../../../utils/Utils';\nimport { getDynamicFacetHeaderId } from '../DynamicFacetHeader/DynamicFacetHeader';\n\nexport interface IDynamicFacetValueCreatorKlass {\n  new (facet: IDynamicFacet): IValueCreator;\n}\n\nexport class DynamicFacetValues implements IDynamicFacetValues {\n  private facetValues: IDynamicFacetValue[];\n  private list = $$('ul', { className: 'coveo-dynamic-facet-values', 'aria-labelledby': getDynamicFacetHeaderId(this.facet.options.id) })\n    .el;\n  private valueCreator: IValueCreator;\n\n  constructor(private facet: IDynamicFacet, creatorKlass: IDynamicFacetValueCreatorKlass) {\n    this.valueCreator = new creatorKlass(this.facet);\n    this.resetValues();\n  }\n\n  public createFromResponse(response: IFacetResponse) {\n    this.facetValues = response.values.map((facetValue, index) => this.valueCreator.createFromResponse(facetValue, index));\n  }\n\n  public reorderValues(order: string[]) {\n    this.facetValues = Utils.reorderValuesByKeys(this.facetValues, order, value => value.value);\n  }\n\n  public resetValues() {\n    this.facetValues = this.valueCreator.getDefaultValues();\n  }\n\n  public get allFacetValues() {\n    return this.facetValues;\n  }\n\n  public get allValues() {\n    return this.facetValues.map(facetValue => facetValue.value);\n  }\n\n  public get selectedValues() {\n    return this.facetValues.filter(value => value.isSelected).map(({ value }) => value);\n  }\n\n  private get selectedDisplayValues() {\n    return this.facetValues.filter(value => value.isSelected).map(({ displayValue }) => displayValue);\n  }\n\n  public get activeValues() {\n    return this.facetValues.filter(value => !value.isIdle);\n  }\n\n  private get displayedValues() {\n    return this.facetValues.filter(value => !value.isIdle || value.numberOfResults > 0);\n  }\n\n  public get hasSelectedValues() {\n    return !!findWhere(this.facetValues, { state: FacetValueState.selected });\n  }\n\n  public get hasActiveValues() {\n    return !!this.activeValues.length;\n  }\n\n  public get hasIdleValues() {\n    return !!findWhere(this.facetValues, { state: FacetValueState.idle });\n  }\n\n  public clearAll() {\n    this.facetValues.forEach(value => value.deselect());\n  }\n\n  public get hasValues() {\n    return !!this.allFacetValues.length;\n  }\n\n  public get hasDisplayedValues() {\n    return !!this.displayedValues.length;\n  }\n\n  public hasSelectedValue(arg: string | DynamicFacetValue) {\n    const value = typeof arg === 'string' ? arg : arg.value;\n    const foundValue = find(this.facetValues, facetValue => facetValue.equals(value));\n    return foundValue && foundValue.isSelected;\n  }\n\n  public get(arg: string | DynamicFacetValue) {\n    const value = typeof arg === 'string' ? arg : arg.value;\n    const facetValue = find(this.facetValues, facetValue => facetValue.equals(value));\n\n    if (facetValue) {\n      return facetValue;\n    }\n\n    const newFacetValue = this.valueCreator.createFromValue(value);\n    if (!newFacetValue) {\n      return null;\n    }\n\n    this.facetValues.push(newFacetValue);\n    return newFacetValue;\n  }\n\n  public focus(value: string) {\n    const facetValue = find(this.facetValues, facetValue => facetValue.equals(value));\n    if (!facetValue) {\n      return;\n    }\n    facetValue.focus();\n  }\n\n  private buildShowLess() {\n    const showLess = new DynamicFacetValueShowMoreLessButton({\n      className: 'coveo-dynamic-facet-show-less',\n      ariaLabel: l('ShowLessFacetResults', this.facet.options.title),\n      label: l('ShowLess'),\n      action: () => {\n        this.facet.enableFreezeFacetOrderFlag();\n        this.facet.showLessValues();\n      }\n    });\n\n    return showLess.element;\n  }\n\n  private buildShowMore() {\n    const showMore = new DynamicFacetValueShowMoreLessButton({\n      className: 'coveo-dynamic-facet-show-more',\n      ariaLabel: l('ShowMoreFacetResults', this.facet.options.title),\n      label: l('ShowMore'),\n      action: () => {\n        this.facet.enableFreezeFacetOrderFlag();\n        this.facet.showMoreValues();\n      }\n    });\n\n    return showMore.element;\n  }\n\n  private get shouldEnableShowLess() {\n    const hasMoreValuesThenDefault = this.facetValues.length > this.facet.options.numberOfValues;\n\n    return hasMoreValuesThenDefault && this.hasIdleValues;\n  }\n\n  private appendShowMoreLess(fragment: DocumentFragment) {\n    if (!this.facet.options.enableMoreLess) {\n      return;\n    }\n\n    if (this.shouldEnableShowLess) {\n      fragment.appendChild(this.buildShowLess());\n    }\n\n    if (this.facet.moreValuesAvailable) {\n      fragment.appendChild(this.buildShowMore());\n    }\n  }\n\n  private appendSelectedCollapsedValues(fragment: DocumentFragment) {\n    if (!this.hasSelectedValues) {\n      return;\n    }\n\n    const selectedValues = this.selectedDisplayValues.join(', ');\n    fragment.appendChild(\n      $$(\n        'li',\n        {\n          className: 'coveo-dynamic-facet-collapsed-values',\n          ariaLabel: `${l('CurrentSelections')}: ${selectedValues}`\n        },\n        escape(selectedValues)\n      ).el\n    );\n  }\n\n  public render() {\n    const fragment = document.createDocumentFragment();\n    $$(this.list).empty();\n\n    this.displayedValues.forEach(facetValue => {\n      fragment.appendChild(facetValue.renderedElement);\n    });\n\n    this.appendShowMoreLess(fragment);\n\n    this.appendSelectedCollapsedValues(fragment);\n\n    this.list.appendChild(fragment);\n    return this.list;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValues.ts","import { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { Assert } from '../misc/Assert';\nimport { IFacetRequest, IFacetRequestValue } from '../rest/Facet/FacetRequest';\nimport { QueryEvents } from '../events/QueryEvents';\nimport { findIndex } from 'underscore';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IDynamicFacet } from '../ui/DynamicFacet/IDynamicFacet';\nimport { DynamicFacetRequestBuilder } from './DynamicFacetRequestBuilder';\n\nexport class DynamicFacetQueryController {\n  protected requestBuilder: DynamicFacetRequestBuilder;\n  private numberOfValuesToRequest: number;\n  private freezeCurrentValues = false;\n  private freezeFacetOrder = false;\n  private preventAutoSelection = false;\n\n  constructor(protected facet: IDynamicFacet) {\n    this.requestBuilder = new DynamicFacetRequestBuilder({\n      facetId: this.facet.options.id,\n      field: this.facet.fieldName,\n      type: this.facet.facetType,\n      sortCriteria: this.facet.options.sortCriteria,\n      injectionDepth: this.facet.options.injectionDepth,\n      filterFacetCount: this.facet.options.filterFacetCount\n    });\n    this.resetNumberOfValuesToRequest();\n    this.resetFlagsDuringQuery();\n  }\n\n  private resetFlagsDuringQuery() {\n    this.facet.bind.onRootElement(QueryEvents.duringQuery, () => {\n      this.freezeCurrentValues = false;\n      this.freezeFacetOrder = false;\n      this.preventAutoSelection = false;\n    });\n  }\n\n  public increaseNumberOfValuesToRequest(additionalNumberOfValues: number) {\n    this.numberOfValuesToRequest += additionalNumberOfValues;\n  }\n\n  public resetNumberOfValuesToRequest() {\n    this.numberOfValuesToRequest = this.facet.options.numberOfValues;\n  }\n\n  public enablePreventAutoSelectionFlag() {\n    this.preventAutoSelection = true;\n  }\n\n  public enableFreezeCurrentValuesFlag() {\n    if (this.areValuesIncorrectlyAffectedByDependsOn) {\n      return;\n    }\n\n    this.freezeCurrentValues = true;\n  }\n\n  public enableFreezeFacetOrderFlag() {\n    this.freezeFacetOrder = true;\n  }\n\n  private get areValuesIncorrectlyAffectedByDependsOn() {\n    if (!this.facet.dependsOnManager.hasDependentFacets) {\n      return false;\n    }\n\n    if (this.facet.dependsOnManager.dependentFacetsHaveSelectedValues) {\n      return false;\n    }\n\n    return this.currentValues.length < this.numberOfValuesToRequest;\n  }\n\n  /**\n   * Build the facets request for the DynamicFacet, and insert it in the query builder\n   * @param queryBuilder\n   */\n  public putFacetIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    Assert.exists(queryBuilder);\n\n    queryBuilder.facetRequests.push(this.buildFacetRequest());\n    if (this.freezeFacetOrder) {\n      queryBuilder.facetOptions.freezeFacetOrder = true;\n    }\n  }\n\n  public buildFacetRequest(): IFacetRequest {\n    return {\n      ...this.requestBuilder.buildBaseRequestForQuery(),\n      currentValues: this.currentValues,\n      numberOfValues: this.numberOfValues,\n      freezeCurrentValues: this.freezeCurrentValues,\n      preventAutoSelect: this.preventAutoSelection,\n      isFieldExpanded: this.numberOfValuesToRequest > this.facet.options.numberOfValues\n    };\n  }\n\n  public getQueryResults(): Promise<IQueryResults> {\n    const query = this.facet.queryController.getLastQuery();\n    // Specifying a numberOfResults of 0 will not log the query as a full fledged query in the API\n    // it will also alleviate the load on the index\n    query.numberOfResults = 0;\n\n    const previousFacetRequestIndex = findIndex(query.facets, { facetId: this.facet.options.id });\n    if (previousFacetRequestIndex !== -1) {\n      query.facets[previousFacetRequestIndex] = this.buildFacetRequest();\n    } else if (query.facets) {\n      query.facets.push(this.buildFacetRequest());\n    } else {\n      query.facets = [this.buildFacetRequest()];\n    }\n\n    return this.facet.queryController.getEndpoint().search(query);\n  }\n\n  protected get currentValues(): IFacetRequestValue[] {\n    return this.facet.values.allFacetValues.map(({ value, state }) => ({\n      value,\n      state\n    }));\n  }\n\n  protected get numberOfValues() {\n    if (this.freezeCurrentValues) {\n      return this.currentValues.length;\n    }\n\n    return Math.max(this.numberOfValuesToRequest, this.facet.values.activeValues.length);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/DynamicFacetQueryController.ts","import { $$, Dom } from '../../../utils/Dom';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { DynamicFacetValueCheckbox } from './DynamicFacetValueCheckbox';\nimport { IDynamicFacet, IValueRenderer } from '../IDynamicFacet';\n\nexport class DynamicFacetValueRenderer implements IValueRenderer {\n  private dom: Dom;\n  private valueCheckbox: DynamicFacetValueCheckbox;\n\n  constructor(private facetValue: DynamicFacetValue, private facet: IDynamicFacet) {}\n\n  public render() {\n    this.dom = $$('li', {\n      className: 'coveo-dynamic-facet-value',\n      dataValue: this.facetValue.value\n    });\n\n    this.toggleSelectedClass();\n    this.renderCheckbox();\n    this.addFocusAndBlurEventListeners();\n\n    return this.dom.el;\n  }\n\n  private toggleSelectedClass() {\n    this.dom.toggleClass('coveo-selected', this.facetValue.isSelected);\n  }\n\n  private renderCheckbox() {\n    this.valueCheckbox = new DynamicFacetValueCheckbox(this.facetValue, this.selectAction.bind(this));\n    this.dom.append(this.valueCheckbox.element);\n  }\n\n  private addFocusAndBlurEventListeners() {\n    const checkboxButton = $$(this.valueCheckbox.element).find('button');\n    $$(checkboxButton).on('focusin', () => this.onFocusIn());\n    $$(checkboxButton).on('focusout', () => this.onFocusOut());\n  }\n\n  private onFocusIn() {\n    this.dom.addClass('coveo-focused');\n  }\n\n  private onFocusOut() {\n    this.dom.removeClass('coveo-focused');\n  }\n\n  private selectAction() {\n    this.facet.toggleSelectValue(this.facetValue.value);\n    this.toggleSelectedClass();\n    this.facet.enableFreezeCurrentValuesFlag();\n    this.facet.enableFreezeFacetOrderFlag();\n    this.facet.enablePreventAutoSelectionFlag();\n    this.facet.scrollToTop();\n    this.facet.focusValueAfterRerender(this.facetValue.value);\n    this.facet.triggerNewQuery(() => this.facetValue.logSelectActionToAnalytics());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueRenderer.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Result.scss\n// module id = 525\n// module chunks = 1 2 4 5 6 7 8 13 15 16 17 18 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultFrame.scss\n// module id = 526\n// module chunks = 1 2 4 5 6 7 8 13 15 16 17 18 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultList.scss\n// module id = 527\n// module chunks = 1 2 4 5 6 7 8 13 15 16 17 18 88","import { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ResultList } from '../ResultList/ResultList';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { Logger } from '../../misc/Logger';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\n\nexport class ResponsiveDefaultResultTemplate implements IResponsiveComponent {\n  private searchInterface: SearchInterface;\n  private resultList: ResultList;\n\n  private currentMode: string;\n\n  public static init(root: HTMLElement, component: ResultList, options: IResponsiveComponentOptions) {\n    if (!$$(root).find(`.${Component.computeCssClassName(ResultList)}`)) {\n      let logger = new Logger('ResponsiveDefaultResultTemplate');\n      logger.trace('No ResultLayout component found : Cannot instantiate ResponsiveResultLayout');\n      return;\n    }\n    ResponsiveComponentsManager.register(ResponsiveDefaultResultTemplate, $$(root), ResultList.ID, component, options);\n  }\n\n  constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.currentMode = 'large';\n  }\n\n  public registerComponent(accept: ResultList) {\n    if (accept instanceof ResultList) {\n      this.resultList = accept;\n      return true;\n    }\n    return false;\n  }\n\n  public handleResizeEvent() {\n    let lastResults = this.resultList.queryController.getLastResults();\n    if (this.needSmallMode()) {\n      $$(this.resultList.options.resultsContainer).addClass('coveo-card-layout-container');\n      $$(this.resultList.options.resultsContainer).removeClass(`coveo-list-layout-container`);\n      if (this.currentMode != 'small') {\n        if (lastResults) {\n          this.resultList.buildResults(lastResults).then((elements: HTMLElement[]) => {\n            this.resultList.renderResults(elements);\n          });\n        }\n        this.currentMode = 'small';\n      }\n    } else {\n      $$(this.resultList.options.resultsContainer).removeClass('coveo-card-layout-container');\n      $$(this.resultList.options.resultsContainer).addClass(`coveo-list-layout-container`);\n      if (this.currentMode != 'large') {\n        if (lastResults) {\n          this.resultList.buildResults(lastResults).then((elements: HTMLElement[]) => {\n            this.resultList.renderResults(elements);\n          });\n        }\n        this.currentMode = 'large';\n      }\n    }\n  }\n\n  private needSmallMode(): boolean {\n    return this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getSmallScreenWidth();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDefaultResultTemplate.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\n\nexport interface ResultToRender {\n  resultElement: HTMLElement;\n  componentsInside: Component[];\n}\n\nexport class ResultContainer {\n  public static resultCurrentlyBeingRendered: IQueryResult = null;\n\n  public resultContainerElement: Dom;\n\n  constructor(resultContainer: HTMLElement, private searchInterface: SearchInterface) {\n    this.resultContainerElement = $$(resultContainer);\n  }\n\n  public empty() {\n    this.searchInterface.detachComponentsInside(this.resultContainerElement.el);\n    $$(this.resultContainerElement).empty();\n  }\n\n  public addClass(classToAdd: string) {\n    this.resultContainerElement.addClass(classToAdd);\n  }\n\n  public isEmpty() {\n    return this.resultContainerElement.isEmpty();\n  }\n\n  public hideChildren() {\n    this.resultContainerElement.children().forEach(child => $$(child).hide());\n  }\n\n  public getResultElements() {\n    return this.resultContainerElement.findAll('.CoveoResult');\n  }\n\n  public get el() {\n    return this.resultContainerElement.el;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultContainer.ts","import { ResultListRenderer } from './ResultListRenderer';\nimport { $$ } from '../../utils/Dom';\nimport _ = require('underscore');\n\nexport class ResultListCardRenderer extends ResultListRenderer {\n  getEndFragment(resultElements: HTMLElement[]) {\n    return new Promise<DocumentFragment>(resolve => {\n      if (!_.isEmpty(resultElements)) {\n        // with infinite scrolling, we want the additional results to append at the end of the previous query.\n        // For this, we need to remove the padding.\n        if (this.resultListOptions.enableInfiniteScroll) {\n          const needToBeRemoved = $$(this.resultListOptions.resultsContainer).findAll('.coveo-card-layout-padding');\n          _.each(needToBeRemoved, toRemove => $$(toRemove).remove());\n        }\n        // Used to prevent last card from spanning the grid's whole width\n        const emptyCards = document.createDocumentFragment();\n        _.times(3, () => emptyCards.appendChild($$('div', { className: 'coveo-card-layout coveo-card-layout-padding' }).el));\n        resolve(emptyCards);\n      }\n      resolve(null);\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListCardRenderer.ts","import { IResultListOptions } from './ResultListOptions';\nimport { ResultListRenderer } from './ResultListRenderer';\nimport { TemplateRole } from '../Templates/Template';\nimport { TableTemplate } from '../Templates/TableTemplate';\nimport { $$ } from '../../utils/Dom';\nimport _ = require('underscore');\n\nexport class ResultListTableRenderer extends ResultListRenderer {\n  private shouldDisplayHeader: boolean = true;\n  private shouldDisplayFooter: boolean = false;\n\n  constructor(protected resultListOptions: IResultListOptions, protected autoCreateComponentsFn: Function) {\n    super(resultListOptions, autoCreateComponentsFn);\n    if (this.resultListOptions.resultTemplate instanceof TableTemplate) {\n      if (this.resultListOptions.resultTemplate.hasTemplateWithRole('table-footer')) {\n        this.shouldDisplayFooter = true;\n      }\n      // If custom templates are defined but no header template, do not display it.\n      if (\n        this.resultListOptions.resultTemplate.templates.length !== 0 &&\n        !this.resultListOptions.resultTemplate.hasTemplateWithRole('table-header')\n      ) {\n        this.shouldDisplayHeader = false;\n      }\n    }\n  }\n\n  getStartFragment(resultElements: HTMLElement[], append: boolean): Promise<DocumentFragment> {\n    if (!append && !_.isEmpty(resultElements) && this.shouldDisplayHeader) {\n      return this.renderRoledTemplate('table-header');\n    }\n  }\n\n  getEndFragment(resultElements: HTMLElement[], append: boolean): Promise<DocumentFragment> {\n    if (!append && !_.isEmpty(resultElements) && this.shouldDisplayFooter) {\n      return this.renderRoledTemplate('table-footer');\n    }\n  }\n\n  private async renderRoledTemplate(role: TemplateRole) {\n    const elem = await (<TableTemplate>this.resultListOptions.resultTemplate).instantiateRoleToElement(role);\n    $$(elem).addClass(`coveo-result-list-${role}`);\n    this.autoCreateComponentsFn(elem, undefined);\n    const frag = document.createDocumentFragment();\n    frag.appendChild(elem);\n    return frag;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListTableRenderer.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResponsiveFacets.scss\n// module id = 533\n// module chunks = 1 2 4 5 6 7 8 12 88","import { IResponsiveDropdownContent, ResponsiveDropdownContent } from './ResponsiveDropdownContent';\nimport { Dom, $$, l } from '../../../Core';\nimport { SVGIcons } from '../../../utils/SVGIcons';\nimport { FocusTrap } from '../../FocusTrap/FocusTrap';\n\nexport class ResponsiveDropdownModalContent implements IResponsiveDropdownContent {\n  private closeButton: Dom;\n  private className: string;\n  private focusTrap: FocusTrap;\n\n  constructor(private componentName: string, public element: Dom, private closeButtonLabel: string, private close: () => void) {\n    this.className = `coveo-${this.componentName}-dropdown-modal-content`;\n  }\n\n  private set hidden(shouldHide: boolean) {\n    this.element.toggleClass('coveo-hidden', shouldHide);\n  }\n\n  public positionDropdown() {\n    this.element.el.classList.add(this.className, ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    this.element.setAttribute('role', 'group');\n    this.element.setAttribute('aria-label', l('FiltersDropdown'));\n    this.hidden = false;\n    this.ensureCloseButton();\n    this.ensureFocusTrap();\n  }\n\n  public hideDropdown() {\n    this.element.el.classList.remove(this.className, ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    this.element.setAttribute('role', null);\n    this.element.setAttribute('aria-label', null);\n    this.hidden = true;\n    this.removeCloseButton();\n    this.removeFocusTrap();\n  }\n\n  public cleanUp() {\n    this.hidden = false;\n  }\n\n  private ensureCloseButton() {\n    if (!this.closeButton) {\n      this.closeButton = $$(\n        'button',\n        {\n          className: 'coveo-facet-modal-close-button',\n          type: 'button',\n          ariaLabel: this.closeButtonLabel\n        },\n        SVGIcons.icons.mainClear\n      );\n      this.closeButton.on('click', () => this.close());\n      this.element.prepend(this.closeButton.el);\n    }\n  }\n\n  private get focusableSelector() {\n    const facetElements = '[data-field]:not(.coveo-facet-empty) [tabindex]';\n    const dynamicFacetsElements = '[data-field]:not(.coveo-hidden) button';\n    const modalButton = '.coveo-facet-modal-close-button';\n    return [facetElements, dynamicFacetsElements, modalButton].join(' , ');\n  }\n\n  private ensureFocusTrap() {\n    if (!this.focusTrap) {\n      this.focusTrap = new FocusTrap(this.element.el, { focusableSelector: this.focusableSelector });\n    }\n  }\n\n  private removeCloseButton() {\n    if (this.closeButton) {\n      this.closeButton.remove();\n      this.closeButton = null;\n    }\n  }\n\n  private removeFocusTrap() {\n    if (this.focusTrap) {\n      this.focusTrap.disable();\n      this.focusTrap = null;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownModalContent.ts","/**\n * The names of the events that can be triggered by the [FacetsMobileMode]{@link FacetsMobileMode} component.\n */\nexport class FacetsMobileModeEvents {\n  /**\n   * The name of the event that gets triggered when the facets pop-up (or modal) is opened in mobile mode.\n   */\n  public static popupOpened = 'popupOpened';\n  /**\n   * The name of the event that gets triggered when the facets pop-up (or modal) is closed in mobile mode.\n   */\n  public static popupClosed = 'popupClosed';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/FacetsMobileModeEvents.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacet/_DynamicFacetHeader.scss\n// module id = 565\n// module chunks = 2 4 8 88","import { l } from '../../../strings/Strings';\nimport { SVGIcons } from '../../../utils/SVGIcons';\nimport { $$ } from '../../../utils/Dom';\nimport { DynamicFacetHeaderButton } from './DynamicFacetHeaderButton';\nimport { IDynamicFacetHeaderOptions } from './DynamicFacetHeader';\nimport { SVGDom } from '../../../utils/SVGDom';\n\nexport interface IDynamicFacetCollapseToggleOptions {\n  collapsed: boolean;\n}\n\nexport class DynamicFacetHeaderCollapseToggle {\n  public element: HTMLElement;\n  private button: DynamicFacetHeaderButton;\n\n  constructor(private options: IDynamicFacetHeaderOptions) {\n    this.create();\n  }\n\n  private create() {\n    const parent = $$('div');\n\n    this.button = new DynamicFacetHeaderButton({\n      label: l('CollapseFacet', this.options.title),\n      iconSVG: SVGIcons.icons.arrowUp,\n      iconClassName: 'coveo-dynamic-facet-collapse-toggle-svg',\n      className: 'coveo-dynamic-facet-header-collapse',\n      shouldDisplay: true,\n      action: () => this.options.toggleCollapse()\n    });\n\n    parent.append(this.button.element);\n    this.element = parent.el;\n  }\n\n  public toggleButton(isCollapsed: boolean) {\n    const node = $$(this.button.element);\n    const label = isCollapsed ? l('ExpandFacet', this.options.title) : l('CollapseFacet', this.options.title);\n    const icon = isCollapsed ? SVGIcons.icons.arrowDown : SVGIcons.icons.arrowUp;\n\n    node.setAttribute('aria-label', label);\n    node.setAttribute('title', label);\n    node.setAttribute('aria-expanded', (!isCollapsed).toString());\n\n    node.toggleClass('coveo-dynamic-facet-header-expand', isCollapsed);\n    node.toggleClass('coveo-dynamic-facet-header-collapse', !isCollapsed);\n\n    node.setHtml(icon);\n    SVGDom.addClassToSVGInContainer(node.el, 'coveo-dynamic-facet-collapse-toggle-svg');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeaderCollapseToggle.ts","import { TextInput, ITextInputOptions } from '../FormWidgets/TextInput';\nimport { $$ } from '../../utils/Dom';\nimport { KEYBOARD } from '../../utils/KeyboardUtils';\nimport { Utils } from '../../utils/Utils';\nimport { IComboboxAccessibilityAttributes, ICombobox } from './ICombobox';\n\nexport class ComboboxInput {\n  public element: HTMLElement;\n  private textInput: TextInput;\n  private inputElement: HTMLInputElement;\n  private inputOptions: ITextInputOptions = {\n    usePlaceholder: true,\n    className: 'coveo-combobox-input',\n    triggerOnChangeAsYouType: true,\n    isRequired: false,\n    icon: 'search'\n  };\n\n  constructor(private combobox: ICombobox) {\n    this.create();\n    this.element = this.textInput.getElement();\n    this.inputElement = $$(this.element).find('input') as HTMLInputElement;\n    this.addEventListeners();\n    this.addAccessibilityAttributes();\n  }\n\n  public get value() {\n    return this.inputElement.value;\n  }\n\n  private create() {\n    this.textInput = new TextInput(\n      (inputInstance: TextInput) => this.combobox.onInputChange(inputInstance.getValue()),\n      this.combobox.options.placeholderText,\n      this.inputOptions\n    );\n  }\n\n  private addEventListeners() {\n    if (!this.combobox.options.clearOnBlur) {\n      this.inputElement.addEventListener('focus', () => this.combobox.onInputChange(this.textInput.getValue()));\n    }\n    this.combobox.element.addEventListener('focusout', (e: FocusEvent) => this.handleFocusOut(e));\n    this.combobox.element.addEventListener('keydown', (e: KeyboardEvent) => this.handleKeyboardDirection(e));\n    this.combobox.element.addEventListener('keyup', (e: KeyboardEvent) => this.handleKeyboardEnterEscape(e));\n  }\n\n  private addAccessibilityAttributes() {\n    const listboxId = `${this.combobox.id}-listbox`;\n    this.inputElement.setAttribute('role', 'combobox');\n    this.inputElement.setAttribute('aria-owns', listboxId);\n    this.inputElement.setAttribute('aria-haspopup', 'listbox');\n    this.inputElement.setAttribute('aria-autocomplete', 'list');\n    this.inputElement.setAttribute('id', `${this.combobox.id}-input`);\n    this.inputElement.setAttribute('aria-label', this.combobox.options.label);\n\n    this.updateAccessibilityAttributes({\n      activeDescendant: '',\n      expanded: false\n    });\n  }\n\n  public updateAccessibilityAttributes(attributes: IComboboxAccessibilityAttributes) {\n    this.inputElement.setAttribute('aria-expanded', attributes.expanded ? 'true' : 'false');\n    Utils.isEmptyString(attributes.activeDescendant)\n      ? this.inputElement.removeAttribute('aria-activedescendant')\n      : this.inputElement.setAttribute('aria-activedescendant', attributes.activeDescendant);\n  }\n\n  public clearInput() {\n    this.textInput.reset();\n  }\n\n  private handleFocusOut(event: FocusEvent) {\n    const newTarget = event.relatedTarget as HTMLElement;\n    const focusInsideCombobox = this.combobox.element.contains(newTarget);\n    if (focusInsideCombobox) {\n      return;\n    }\n\n    const comboboxValuesHovered = $$(this.combobox.element).find('.coveo-combobox-values:hover');\n    if (comboboxValuesHovered) {\n      this.inputElement.focus();\n      return;\n    }\n\n    this.combobox.onInputBlur();\n  }\n\n  private handleKeyboardDirection(event: KeyboardEvent) {\n    switch (event.which) {\n      case KEYBOARD.DOWN_ARROW:\n        event.preventDefault();\n        this.combobox.values.focusNextValue();\n        break;\n      case KEYBOARD.UP_ARROW:\n        event.preventDefault();\n        this.combobox.values.focusPreviousValue();\n        break;\n      case KEYBOARD.HOME:\n        event.preventDefault();\n        this.combobox.values.focusFirstValue();\n        break;\n      case KEYBOARD.END:\n        event.preventDefault();\n        this.combobox.values.focusLastValue();\n        break;\n    }\n  }\n\n  private handleKeyboardEnterEscape(event: KeyboardEvent) {\n    switch (event.which) {\n      case KEYBOARD.ENTER:\n        this.combobox.values.selectActiveValue();\n        break;\n      case KEYBOARD.ESCAPE:\n        if (Utils.isNonEmptyString(this.textInput.getValue())) {\n          event.stopPropagation();\n        }\n        this.combobox.clearAll();\n        break;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Combobox/ComboboxInput.ts","import { ICombobox, IComboboxValues, IComboboxValue } from './ICombobox';\nimport { $$ } from '../../utils/Dom';\nimport { find } from 'underscore';\nimport { l } from '../../strings/Strings';\nimport { HighlightUtils } from '../../UtilsModules';\n\nexport class ComboboxValues implements IComboboxValues {\n  public element: HTMLElement;\n  public mouseIsOverValue = false;\n  public isRenderingNewValues = false;\n  private values: IComboboxValue[] = [];\n  private keyboardActiveValue?: IComboboxValue;\n  private isScrollable: boolean;\n  private focusedValueId: string;\n\n  constructor(private combobox: ICombobox) {\n    this.element = $$('ul', {\n      id: `${this.combobox.id}-listbox`,\n      role: 'listbox',\n      className: 'coveo-combobox-values',\n      ariaLabelledby: `${this.combobox.id}-input`\n    }).el;\n    $$(this.element).hide();\n\n    this.isScrollable = !!this.combobox.options.scrollable;\n    this.isScrollable && this.element.addEventListener('scroll', () => this.onScroll());\n  }\n\n  public renderFromResponse(response: any) {\n    this.isRenderingNewValues = true;\n    this.clearValues();\n    this.values = this.combobox.options.createValuesFromResponse(response);\n    this.render();\n    this.combobox.updateAriaLive();\n    this.isRenderingNewValues = false;\n  }\n\n  private render() {\n    $$(this.element).show();\n\n    if (!this.hasValues()) {\n      return this.renderNoValuesFound();\n    }\n\n    this.renderValues();\n    this.addEventListeners();\n    this.updateAccessibilityAttributes();\n  }\n\n  private renderValues() {\n    const fragment = document.createDocumentFragment();\n    this.values.forEach((value, index) => {\n      const elementWrapper = $$(\n        'li',\n        { id: `${this.combobox.id}-value-${index}`, className: 'coveo-combobox-value', role: 'option', tabindex: 0 },\n        value.element\n      ).el;\n      this.highlightCurrentQueryInSearchResults(value.element);\n      value.element = elementWrapper;\n      fragment.appendChild(value.element);\n    });\n\n    this.element.appendChild(fragment);\n  }\n\n  private highlightCurrentQueryInSearchResults(searchResult: HTMLElement) {\n    if (this.combobox.options.highlightValueClassName) {\n      const query = this.combobox.element.querySelector('input').value;\n      const result = $$(searchResult).hasClass(this.combobox.options.highlightValueClassName)\n        ? searchResult\n        : $$(searchResult).find(`.${this.combobox.options.highlightValueClassName}`);\n      if (result) {\n        const text = $$(result).text();\n        const nodes = HighlightUtils.highlight(text, query, 'coveo-highlight');\n\n        $$(result).empty();\n        nodes.forEach(node => result.appendChild(node));\n      }\n    }\n  }\n\n  public hasValues() {\n    return !!this.numberOfValues;\n  }\n\n  public get numberOfValues() {\n    return this.values.length;\n  }\n\n  private renderNoValuesFound() {\n    const noValuesFoundElement = $$(\n      'li',\n      {\n        role: 'option',\n        className: 'coveo-combobox-value-not-found'\n      },\n      l('NoValuesFound')\n    ).el;\n\n    this.element.appendChild(noValuesFoundElement);\n  }\n\n  private addEventListeners() {\n    this.values.forEach(value => {\n      $$(value.element).on('mouseenter', () => (this.mouseIsOverValue = true));\n      $$(value.element).on('mouseleave', () => (this.mouseIsOverValue = false));\n      $$(value.element).on('click', (e: MouseEvent) => this.onValueClick(e));\n      $$(value.element).on('focus', () => this.setKeyboardActiveValue(value));\n    });\n  }\n\n  private onValueClick(e: MouseEvent) {\n    const target = <HTMLElement>e.target;\n    const targetElement = $$(target).hasClass('coveo-combobox-value') ? target : $$(target).parent('coveo-combobox-value');\n\n    if (!targetElement) {\n      return;\n    }\n\n    const targetId = targetElement.getAttribute('id');\n    const value = find(this.values, ({ element }) => element.getAttribute('id') === targetId);\n    value && this.combobox.options.onSelectValue(value);\n    this.combobox.clearAll();\n  }\n\n  private updateAccessibilityAttributes() {\n    const activeDescendant = this.keyboardActiveValue ? this.keyboardActiveValue.element.getAttribute('id') : '';\n\n    this.combobox.updateAccessibilityAttributes({\n      activeDescendant,\n      expanded: this.hasValues()\n    });\n  }\n\n  public clearValues() {\n    this.mouseIsOverValue = false;\n    this.resetKeyboardActiveValue();\n    $$(this.element).empty();\n    $$(this.element).hide();\n    this.values = [];\n    this.updateAccessibilityAttributes();\n  }\n\n  private setKeyboardActiveValue(value: IComboboxValue) {\n    this.resetKeyboardActiveValue();\n    this.keyboardActiveValue = value;\n    this.activateFocusOnValue(this.keyboardActiveValue);\n    this.updateAccessibilityAttributes();\n  }\n\n  private resetKeyboardActiveValue() {\n    if (!this.keyboardActiveValue) {\n      return;\n    }\n\n    this.deactivateFocusOnValue(this.keyboardActiveValue);\n    this.keyboardActiveValue = null;\n  }\n\n  private activateFocusOnValue({ element }: IComboboxValue) {\n    $$(element).addClass('coveo-focused');\n    element.setAttribute('aria-selected', 'true');\n  }\n\n  private deactivateFocusOnValue({ element }: IComboboxValue) {\n    $$(element).removeClass('coveo-focused');\n    element.setAttribute('aria-selected', 'false');\n  }\n\n  public selectActiveValue() {\n    if (!this.keyboardActiveValue) {\n      return;\n    }\n\n    this.combobox.options.onSelectValue(this.keyboardActiveValue);\n    this.combobox.clearAll();\n  }\n\n  private onScroll() {\n    const scrollEndReached = this.element.scrollTop + this.element.clientHeight >= this.element.scrollHeight;\n    if (scrollEndReached && this.combobox.options.scrollable.areMoreValuesAvailable()) {\n      this.combobox.onScrollEndReached();\n    }\n  }\n\n  public resetScroll() {\n    if (!this.isScrollable) {\n      return;\n    }\n    this.element.style.maxHeight = `${this.combobox.options.scrollable.maxDropdownHeight}px`;\n    this.element.scrollTop = 0;\n  }\n\n  public focusFirstValue() {\n    if (!this.hasValues()) {\n      return;\n    }\n\n    this.firstValue.element.focus();\n  }\n\n  public focusLastValue() {\n    if (!this.hasValues()) {\n      return;\n    }\n\n    this.lastValue.element.focus();\n  }\n\n  public focusNextValue() {\n    if (!this.hasValues()) {\n      return;\n    }\n\n    const nextActiveValue = this.nextOrFirstValue;\n    nextActiveValue.element.focus();\n  }\n\n  public focusPreviousValue() {\n    if (!this.hasValues()) {\n      return;\n    }\n\n    const previousActiveValue = this.previousOrLastValue;\n    previousActiveValue.element.focus();\n  }\n\n  private get nextOrFirstValue() {\n    if (!this.keyboardActiveValue) {\n      return this.firstValue;\n    }\n\n    const nextValueIndex = (this.values.indexOf(this.keyboardActiveValue) + 1) % this.numberOfValues;\n    return this.values[nextValueIndex];\n  }\n\n  private get firstValue() {\n    return this.values[0];\n  }\n\n  private get previousOrLastValue() {\n    if (!this.keyboardActiveValue) {\n      return this.lastValue;\n    }\n\n    const previousValueIndex = this.values.indexOf(this.keyboardActiveValue) - 1;\n    return previousValueIndex >= 0 ? this.values[previousValueIndex] : this.values[this.numberOfValues - 1];\n  }\n\n  private get lastValue() {\n    const lastValueIndex = this.numberOfValues - 1;\n    return this.values[lastValueIndex];\n  }\n\n  public saveFocusedValue() {\n    if (!this.keyboardActiveValue) {\n      this.focusedValueId = null;\n      return;\n    }\n\n    this.focusedValueId = this.keyboardActiveValue.element.id;\n  }\n\n  public restoreFocusedValue() {\n    if (!this.focusedValueId) {\n      return;\n    }\n\n    const element = $$(this.element).find(`#${this.focusedValueId}`);\n    element.focus();\n    this.focusedValueId = null;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Combobox/ComboboxValues.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Combobox.scss\n// module id = 569\n// module chunks = 2 4 8 88","import { ResponsiveFacetColumn } from './ResponsiveFacetColumn';\nimport { IResponsiveComponentOptions } from './ResponsiveComponentsManager';\nimport { DynamicFacet } from '../DynamicFacet/DynamicFacet';\n\nexport class ResponsiveDynamicFacets extends ResponsiveFacetColumn {\n  public static init(root: HTMLElement, component, options: IResponsiveComponentOptions) {\n    ResponsiveFacetColumn.init(ResponsiveDynamicFacets, root, component, options, DynamicFacet.ID);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDynamicFacets.ts","import 'styling/DynamicFacet/_DynamicFacetBreadcrumbs';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { IDynamicFacet, IDynamicFacetValue } from './IDynamicFacet';\nimport { escape } from 'underscore';\n\nexport class DynamicFacetBreadcrumbs {\n  public element: HTMLElement;\n\n  constructor(private facet: IDynamicFacet) {\n    this.create();\n  }\n\n  private create() {\n    this.element = $$('ul', { className: 'coveo-dynamic-facet-breadcrumb coveo-breadcrumb-item', ariaLabel: this.facet.options.title }).el;\n    this.createAndAppendTitle();\n\n    const activeFacetValues = this.facet.values.activeValues;\n    const breadcrumbFacetValues = activeFacetValues.slice(0, this.facet.options.numberOfValuesInBreadcrumb);\n    const collapsedFacetValues = activeFacetValues.slice(this.facet.options.numberOfValuesInBreadcrumb);\n\n    this.createAndAppendBreadcrumbValues(breadcrumbFacetValues);\n\n    if (collapsedFacetValues.length) {\n      this.createAndAppendCollapsedBreadcrumbs(collapsedFacetValues);\n    }\n  }\n\n  private createAndAppendTitle() {\n    const titleElement = $$('h3', { className: 'coveo-dynamic-facet-breadcrumb-title', ariaHidden: 'true' }, `${this.facet.options.title}:`)\n      .el;\n    this.element.appendChild(titleElement);\n  }\n\n  private createAndAppendBreadcrumbValues(facetValues: IDynamicFacetValue[]) {\n    facetValues.forEach(facetValue => this.createAndAppendBreadcrumbValue(facetValue));\n  }\n\n  private createAndAppendBreadcrumbValue(facetValue: IDynamicFacetValue) {\n    const listContainer = $$('li', { className: 'coveo-dynamic-facet-breadcrumb-value-list-item' }).el;\n    const valueElement = $$(\n      'button',\n      {\n        type: 'button',\n        className: 'coveo-dynamic-facet-breadcrumb-value',\n        ariaLabel: l('RemoveFilterOn', facetValue.displayValue)\n      },\n      escape(facetValue.displayValue)\n    ).el;\n    const clearElement = $$('span', { className: 'coveo-dynamic-facet-breadcrumb-value-clear' }, SVGIcons.icons.mainClear).el;\n    valueElement.appendChild(clearElement);\n\n    $$(valueElement).on('click', () => this.valueSelectAction(facetValue));\n    listContainer.appendChild(valueElement);\n    this.element.appendChild(listContainer);\n  }\n\n  private valueSelectAction(facetValue: IDynamicFacetValue) {\n    this.facet.deselectValue(facetValue.value);\n    this.facet.enablePreventAutoSelectionFlag();\n    this.facet.triggerNewQuery(() => this.logActionToAnalytics());\n  }\n\n  private logActionToAnalytics() {\n    this.facet.logAnalyticsEvent(analyticsActionCauseList.breadcrumbFacet, this.facet.basicAnalyticsFacetMeta);\n  }\n\n  private createAndAppendCollapsedBreadcrumbs(facetValues: IDynamicFacetValue[]) {\n    const label = l('NMore', `${facetValues.length}`);\n    const title = facetValues.map(({ value }) => value).join('\\n');\n    const collapsedElement = $$(\n      'button',\n      {\n        className: 'coveo-dynamic-facet-breadcrumb-collapse',\n        type: 'button',\n        title\n      },\n      label\n    ).el;\n\n    $$(collapsedElement).on('click', () => {\n      $$(collapsedElement).remove();\n      this.createAndAppendBreadcrumbValues(facetValues);\n    });\n\n    this.element.appendChild(collapsedElement);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetBreadcrumbs.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacet/_DynamicFacetValues.scss\n// module id = 580\n// module chunks = 2 8 88","import { Combobox } from '../Combobox/Combobox';\nimport { l } from '../../strings/Strings';\nimport { FacetSearchController } from '../../controllers/FacetSearchController';\nimport { IFacetSearchResponse } from '../../rest/Facet/FacetSearchResponse';\nimport { DynamicFacetValue } from '../DynamicFacet/DynamicFacetValues/DynamicFacetValue';\nimport { FacetValueState } from '../../rest/Facet/FacetValueState';\nimport { DynamicFacetSearchValueRenderer } from './DynamicFacetSearchValueRenderer';\nimport { IComboboxValue } from '../Combobox/ICombobox';\nimport 'styling/DynamicFacetSearch/_DynamicFacetSearch';\nimport { IDynamicFacet } from '../DynamicFacet/IDynamicFacet';\nimport { FacetUtils } from '../Facet/FacetUtils';\n\nexport class DynamicFacetSearch {\n  public element: HTMLElement;\n  private facetSearchController: FacetSearchController;\n  private combobox: Combobox;\n\n  constructor(private facet: IDynamicFacet) {\n    this.facetSearchController = new FacetSearchController(this.facet);\n\n    this.combobox = new Combobox({\n      label: l('SearchFacetResults', this.facet.options.title),\n      ariaLive: this.facet.searchInterface.ariaLive,\n      requestValues: terms => this.facetSearchController.search(terms),\n      createValuesFromResponse: (response: IFacetSearchResponse) => this.createValuesFromResponse(response),\n      onSelectValue: this.onSelectValue,\n      placeholderText: l('Search'),\n      wrapperClassName: 'coveo-dynamic-facet-search',\n      clearOnBlur: true,\n      scrollable: {\n        requestMoreValues: () => this.facetSearchController.fetchMoreResults(),\n        areMoreValuesAvailable: () => this.facetSearchController.moreValuesAvailable,\n        maxDropdownHeight: 250\n      },\n      highlightValueClassName: 'coveo-checkbox-span-label'\n    });\n\n    this.element = this.combobox.element;\n  }\n\n  private getDisplayValue(value: string) {\n    return FacetUtils.getDisplayValueFromValueCaption(value, this.facet.options.field as string, this.facet.options.valueCaption);\n  }\n\n  private createValuesFromResponse(response: IFacetSearchResponse): IComboboxValue[] {\n    return response.values.map((value, index) => {\n      const facetValue = new DynamicFacetValue(\n        {\n          value: value.rawValue,\n          // TODO: remove when https://coveord.atlassian.net/browse/SEARCHAPI-4958 is fixed\n          displayValue: this.getDisplayValue(value.displayValue),\n          numberOfResults: value.count,\n          state: FacetValueState.idle,\n          position: index + 1\n        },\n        this.facet,\n        DynamicFacetSearchValueRenderer\n      );\n      return {\n        value: facetValue,\n        element: facetValue.renderedElement\n      };\n    });\n  }\n\n  private onSelectValue({ value }: IComboboxValue) {\n    (<DynamicFacetSearchValueRenderer>value.renderer).selectAction();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacetSearch/DynamicFacetSearch.ts","import { IFacetSearchResponse } from '../rest/Facet/FacetSearchResponse';\nimport { FileTypes } from '../ui/Misc/FileTypes';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport { DateUtils } from '../utils/DateUtils';\nimport { IDynamicFacet } from '../ui/DynamicFacet/IDynamicFacet';\nimport { IFacetSearchRequest } from '../rest/Facet/FacetSearchRequest';\nimport { determineFilterFacetCount } from './DynamicFacetRequestBuilder';\n\nexport class FacetSearchController {\n  private terms = '';\n  private pageCount = 1;\n  private numberOfValuesMultiplier = 3;\n\n  public moreValuesAvailable = true;\n\n  constructor(private facet: IDynamicFacet) {}\n\n  private getMonthsValueCaptions() {\n    const monthsValueCaptions: Record<string, string> = {};\n    for (let month = 1; month <= 12; month++) {\n      const key = `0${month}`.substr(-2);\n      monthsValueCaptions[key] = DateUtils.monthToString(month - 1);\n    }\n\n    return monthsValueCaptions;\n  }\n\n  private addTypesCaptionsIfNecessary(): Record<string, string> {\n    const field = this.facet.options.field.toLowerCase();\n    const isFileType = QueryUtils.isStratusAgnosticField(field, '@filetype');\n    const isObjectType = QueryUtils.isStratusAgnosticField(field, '@objecttype');\n    const isMonth = QueryUtils.isStratusAgnosticField(field, '@month');\n\n    if (isFileType || isObjectType) {\n      return FileTypes.getFileTypeCaptions();\n    }\n\n    if (isMonth) {\n      return this.getMonthsValueCaptions();\n    }\n\n    return {};\n  }\n\n  private get captions(): Record<string, string> {\n    return {\n      ...this.addTypesCaptionsIfNecessary(),\n      ...this.facet.options.valueCaption\n    };\n  }\n\n  private get numberOfValues() {\n    return this.facet.options.numberOfValues * this.numberOfValuesMultiplier * this.pageCount;\n  }\n\n  private get request(): IFacetSearchRequest {\n    const optionalLeadingWildcard = this.facet.options.useLeadingWildcardInFacetSearch ? '*' : '';\n\n    return {\n      field: this.facet.fieldName,\n      filterFacetCount: determineFilterFacetCount(this.facet.options),\n      numberOfValues: this.numberOfValues,\n      ignoreValues: this.facet.values.activeValues.map(value => value.value),\n      captions: this.captions,\n      searchContext: this.facet.queryController.getLastQuery(),\n      query: `${optionalLeadingWildcard}${this.terms}*`\n    };\n  }\n\n  private async triggerRequest() {\n    const response = await this.facet.queryController.getEndpoint().facetSearch(this.request);\n    this.moreValuesAvailable = response.moreValuesAvailable;\n    return response;\n  }\n\n  public search(terms: string): Promise<IFacetSearchResponse> {\n    this.terms = terms;\n    this.pageCount = 1;\n    return this.triggerRequest();\n  }\n\n  public fetchMoreResults(): Promise<IFacetSearchResponse> {\n    this.pageCount++;\n    return this.triggerRequest();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/FacetSearchController.ts","import { $$, Dom } from '../../utils/Dom';\nimport { DynamicFacetValue } from '../DynamicFacet/DynamicFacetValues/DynamicFacetValue';\nimport { DynamicFacetValueCheckbox } from '../DynamicFacet/DynamicFacetValues/DynamicFacetValueCheckbox';\nimport { IDynamicFacet, IValueRenderer } from '../DynamicFacet/IDynamicFacet';\n\nexport class DynamicFacetSearchValueRenderer implements IValueRenderer {\n  private dom: Dom;\n  private valueCheckbox: DynamicFacetValueCheckbox;\n\n  constructor(private facetValue: DynamicFacetValue, private facet: IDynamicFacet) {}\n\n  public render() {\n    this.dom = $$('div', {\n      className: 'coveo-dynamic-facet-value',\n      dataValue: this.facetValue.value\n    });\n\n    this.renderCheckbox();\n    return this.dom.el;\n  }\n\n  private renderCheckbox() {\n    this.valueCheckbox = new DynamicFacetValueCheckbox(this.facetValue);\n    $$(this.valueCheckbox.element).find('button').setAttribute('tabindex', '-1');\n\n    this.dom.append(this.valueCheckbox.element);\n  }\n\n  public selectAction() {\n    this.facet.enableFreezeFacetOrderFlag();\n    this.facet.toggleSelectValue(this.facetValue.value);\n    this.facetValue.select();\n    this.facet.scrollToTop();\n    this.facet.triggerNewQuery(() => this.facetValue.logSelectActionToAnalytics());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacetSearch/DynamicFacetSearchValueRenderer.ts","import { FacetUtils } from '../../Facet/FacetUtils';\nimport { IDynamicFacet, IValueCreator } from '../IDynamicFacet';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { IFacetResponseValue } from '../../../rest/Facet/FacetResponse';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { DynamicFacetValueRenderer } from './DynamicFacetValueRenderer';\n\nexport class DynamicFacetValueCreator implements IValueCreator {\n  constructor(private facet: IDynamicFacet) {}\n\n  private getDisplayValue(value: string) {\n    return FacetUtils.getDisplayValueFromValueCaption(value, this.facet.options.field as string, this.facet.options.valueCaption);\n  }\n\n  public getDefaultValues() {\n    return [];\n  }\n\n  public createFromResponse(facetValue: IFacetResponseValue, index: number) {\n    return new DynamicFacetValue(\n      {\n        value: facetValue.value,\n        displayValue: this.getDisplayValue(facetValue.value),\n        numberOfResults: facetValue.numberOfResults,\n        state: facetValue.state,\n        position: index + 1\n      },\n      this.facet,\n      DynamicFacetValueRenderer\n    );\n  }\n\n  public createFromValue(value: string) {\n    const position = this.facet.values.allFacetValues.length + 1;\n    const state = FacetValueState.idle;\n    const displayValue = this.getDisplayValue(value);\n    return new DynamicFacetValue({ value, displayValue, state, numberOfResults: 0, position }, this.facet, DynamicFacetValueRenderer);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueCreator.ts","/**\n * The allowed states of a facet value in a Search API facet\n * [request]{@link IFacetRequestValue.state} or\n * [response]{@link IFacetResponseValue.state}.\n */\nexport enum FacetValueState {\n  /**\n   * The facet value is not currently selected or excluded in the search\n   * interface.\n   */\n  idle = 'idle',\n  /**\n   * The facet value is currently selected in the search interface.\n   */\n  selected = 'selected'\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Facet/FacetValueState.ts","import { ComponentOptions } from '../Base/ComponentOptions';\n\n/**\n * ResponsiveFacets options\n */\nexport const ResponsiveFacetOptions = {\n  /**\n   * Specifies whether to enable *responsive mode* for facets. Setting this options to `false` on any `Facet`, or\n   * [`FacetSlider`]{@link FacetSlider} component in a search interface disables responsive mode for all other facets\n   * in the search interface.\n   *\n   * Responsive mode displays all facets under a single dropdown button whenever the width of the HTML element which\n   * the search interface is bound to reaches or falls behind a certain threshold (see\n   * {@link SearchInterface.responsiveComponents}).\n   *\n   * See also the [`dropdownHeaderLabel`]{@link Facet.options.dropdownHeaderLabel} option.\n   *\n   * Default value is `true`.\n   */\n  enableResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'ResponsiveOptions' }),\n  responsiveBreakpoint: ComponentOptions.buildNumberOption({\n    deprecated:\n      'This option is exposed for legacy reasons. It is not recommended to use this option. Instead, use `SearchInterface.options.responsiveMediumBreakpoint` options exposed on the `SearchInterface`.'\n  }),\n  /**\n   * If the [`enableResponsiveMode`]{@link Facet.options.enableResponsiveMode} option is `true` for all facets and\n   * {@link FacetSlider.options.enableResponsiveMode} is also `true` for all sliders, specifies the label of the\n   * dropdown button that allows to display the facets when in responsive mode.\n   *\n   * If more than one `Facet` or {@link FacetSlider} component in the search interface specifies a value for this\n   * option, the framework uses the first occurrence of the option.\n   *\n   * Default value is `Filters`.\n   */\n  dropdownHeaderLabel: ComponentOptions.buildLocalizedStringOption({ section: 'ResponsiveOptions' })\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacetOptions.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Utils } from '../../Core';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IFacetsMobileModeConstructor {\n  new (element: HTMLElement, options: IFacetsMobileModeOptions, bindings: IComponentBindings): FacetsMobileMode;\n}\n\nexport interface IFacetsMobileModeOptions {\n  breakpoint?: number;\n  isModal?: boolean;\n  displayOverlayWhileOpen?: boolean;\n  preventScrolling?: boolean;\n  scrollContainer?: HTMLElement;\n}\n\n/**\n * This component lets you customize the mobile responsive behavior of facets in your search interface.\n *\n * **Notes:**\n * - You can include this component anywhere under the root element of your search interface.\n * - You should only include this component once in your search interface.\n */\nexport class FacetsMobileMode extends Component {\n  static ID = 'FacetsMobileMode';\n\n  /**\n   * @componentOptions\n   */\n  static options: IFacetsMobileModeOptions = {\n    /**\n     * The screen width (in number of pixels) at which facets should enter mobile responsive mode and be collapsed under a single button.\n     *\n     * **Default:** `800`\n     */\n    breakpoint: ComponentOptions.buildNumberOption(),\n    /**\n     * Whether to display the facets in a modal instead of a pop-up when the end user expands them in mobile responsive mode.\n     * Set this option to `false` in order to keep the old behaviour.\n     */\n    isModal: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * Whether to display an overlay behind the facets when the end user expands them in mobile responsive mode.\n     *\n     * By default, the following behavior applies:\n     * - `true` when [isModal]{@link FacetsMobileMode.options.isModal} is `false`\n     * - `false` when [isModal]{@link FacetsMobileMode.options.isModal} is `true`\n     */\n    displayOverlayWhileOpen: ComponentOptions.buildBooleanOption({\n      postProcessing: (value, options: IFacetsMobileModeOptions) => (Utils.isNullOrUndefined(value) ? !options.isModal : value)\n    }),\n    /**\n     * Whether to disable vertical scrolling on the specified or resolved [`scrollContainer`]{@link FacetsMobileMode.options.scrollContainer} while facets are expanded in mobile responsive mode.\n     *\n     * By default, the following behavior applies:\n     * - `true` when [isModal]{@link FacetsMobileMode.options.isModal} is `true`\n     * - `false` when [isModal]{@link FacetsMobileMode.options.isModal} is `false`\n     */\n    preventScrolling: ComponentOptions.buildBooleanOption({\n      postProcessing: (value, options: IFacetsMobileModeOptions) => (Utils.isNullOrUndefined(value) ? options.isModal : value)\n    }),\n    /**\n     * The HTML element whose vertical scrolling should be locked while facets are expanded in mobile responsive mode.\n     *\n     * By default, the component tries to detect and use the first ancestor element whose CSS `overflow-y` attribute is set to `scroll`, starting from the `FacetsMobileMode`'s element itself. If no such element is found, the `document.body` element is used.\n     *\n     * Since this heuristic is not perfect, we strongly recommend that you manually set this option by explicitly specifying the desired CSS selector.\n     *\n     * **Example:** `data-scroll-container-selector='#someCssSelector'`\n     */\n    scrollContainer: ComponentOptions.buildChildHtmlElementOption({ depend: 'preventScrolling' })\n  };\n\n  static doExport = () => {\n    exportGlobally({\n      FacetsMobileMode: FacetsMobileMode\n    });\n  };\n\n  public options: IFacetsMobileModeOptions;\n\n  constructor(public element: HTMLElement, options?: IFacetsMobileModeOptions, bindings?: IComponentBindings) {\n    super(element, FacetsMobileMode.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, FacetsMobileMode, options);\n    if (this.options.preventScrolling) {\n      const scrollContainer = this.options.scrollContainer || this.searchInterface.element;\n      this.options.scrollContainer = ComponentOptions.findParentScrollLockable(scrollContainer);\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(FacetsMobileMode);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FacetsMobileMode/FacetsMobileMode.ts","import 'styling/_Result';\nimport 'styling/_ResultFrame';\nimport 'styling/_ResultList';\nimport { chain, compact, contains, each, flatten, map, unique, without, uniqueId, find } from 'underscore';\nimport {\n  IBuildingQueryEventArgs,\n  IDuringQueryEventArgs,\n  INewQueryEventArgs,\n  IQueryErrorEventArgs,\n  IQuerySuccessEventArgs,\n  QueryEvents\n} from '../../events/QueryEvents';\nimport { IResultLayoutPopulateArgs, ResultLayoutEvents } from '../../events/ResultLayoutEvents';\nimport {\n  IChangeLayoutEventArgs,\n  IDisplayedNewResultEventArgs,\n  IDisplayedNewResultsEventArgs,\n  ResultListEvents\n} from '../../events/ResultListEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Defer } from '../../misc/Defer';\nimport { MODEL_EVENTS } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$, Doc, Win } from '../../utils/Dom';\nimport { DomUtils } from '../../utils/DomUtils';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IInitializationParameters, IInitResult, Initialization } from '../Base/Initialization';\nimport { InitializationPlaceholder } from '../Base/InitializationPlaceholder';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { ResponsiveDefaultResultTemplate } from '../ResponsiveComponents/ResponsiveDefaultResultTemplate';\nimport { ValidLayout, RendererValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { CoreHelpers } from '../Templates/CoreHelpers';\nimport { DefaultRecommendationTemplate } from '../Templates/DefaultRecommendationTemplate';\nimport { DefaultResultTemplate } from '../Templates/DefaultResultTemplate';\nimport { TableTemplate } from '../Templates/TableTemplate';\nimport { Template } from '../Templates/Template';\nimport { TemplateCache } from '../Templates/TemplateCache';\nimport { TemplateList } from '../Templates/TemplateList';\nimport { ResultContainer } from './ResultContainer';\nimport { ResultListCardRenderer } from './ResultListCardRenderer';\nimport { ResultListRenderer } from './ResultListRenderer';\nimport { ResultListTableRenderer } from './ResultListTableRenderer';\nimport ResultLayoutSelectorModule = require('../ResultLayoutSelector/ResultLayoutSelector');\nimport { IResultListOptions } from './ResultListOptions';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { TemplateToHtml, ITemplateToHtml } from '../Templates/TemplateToHtml';\n\nCoreHelpers.exportAllHelpersGlobally(window['Coveo']);\n\ntype WaitAnimation = 'fade' | 'spinner' | 'none';\n\n/**\n * The `ResultList` component is responsible for displaying query results by applying one or several result templates\n * (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * It is possible to include multiple `ResultList` components along with a single `ResultLayout`\n * component in a search page to provide different result layouts (see\n * [Result Layouts](https://docs.coveo.com/en/360/)).\n *\n * This component supports infinite scrolling (see the\n * [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll} option).\n */\nexport class ResultList extends Component {\n  private static getDefaultTemplate(e: HTMLElement): Template {\n    const template = ResultList.loadTemplatesFromCache();\n    if (template != null) {\n      return template;\n    }\n\n    const component = <ResultList>Component.get(e);\n    if (Coveo['Recommendation'] && component.searchInterface instanceof Coveo['Recommendation']) {\n      return new DefaultRecommendationTemplate();\n    }\n    return new DefaultResultTemplate();\n  }\n\n  private static loadTemplatesFromCache(): Template {\n    var pageTemplateNames = TemplateCache.getResultListTemplateNames();\n    if (pageTemplateNames.length > 0) {\n      return new TemplateList(compact(map(pageTemplateNames, templateName => TemplateCache.getTemplate(templateName))));\n    }\n\n    return null;\n  }\n\n  static ID = 'ResultList';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultList: ResultList\n    });\n  };\n\n  /**\n   * The options for the ResultList\n   * @componentOptions\n   */\n  static options: IResultListOptions = {\n    /**\n     * The element inside which to insert the rendered result templates.\n     *\n     * Performing a new query clears the content of this element.\n     *\n     * You can change the container by specifying its selector (e.g.,\n     * `data-result-container-selector='#someCssSelector'`).\n     *\n     * If you specify no value for this option, a `div` element will be dynamically created and appended to the result\n     * list. This element will then be used as a result container.\n     */\n    resultsContainer: ComponentOptions.buildChildHtmlElementOption({ alias: 'resultContainerSelector' }),\n    resultTemplate: TemplateComponentOptions.buildTemplateOption({ defaultFunction: ResultList.getDefaultTemplate }),\n\n    /**\n     * The type of animation to display while waiting for a query to return.\n     *\n     * The possible values are:\n     * - `fade`: Fades out the current list of results while the query is executing.\n     * - `spinner`: Shows a spinning animation while the query is executing.\n     * - `none`: Use no animation during queries.\n     *\n     * See also the [`waitAnimationContainer`]{@link ResultList.options.waitAnimationContainer} option.\n     *\n     * @examples spinner\n     */\n    waitAnimation: ComponentOptions.buildStringOption<WaitAnimation>({ defaultValue: 'none' }),\n\n    /**\n     * The element inside which to display the [`waitAnimation`]{@link ResultList.options.waitAnimation}.\n     *\n     * You can change this by specifying a CSS selector (e.g.,\n     * `data-wait-animation-container-selector='#someCssSelector'`).\n     *\n     * Defaults to the value of the [`resultsContainer`]{@link ResultList.options.resultsContainer} option.\n     */\n    waitAnimationContainer: ComponentOptions.buildChildHtmlElementOption({\n      postProcessing: (value, options: IResultListOptions) => value || options.resultsContainer\n    }),\n\n    /**\n     * Whether to automatically retrieve an additional page of results and append it to the\n     * results that the `ResultList` is currently displaying when the user scrolls down to the bottom of the\n     * [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer}.\n     *\n     * See also the [`infiniteScrollPageSize`]{@link ResultList.options.infiniteScrollPageSize} and\n     * [`enableInfiniteScrollWaitingAnimation`]{@link ResultList.options.enableInfiniteScrollWaitingAnimation} options.\n     *\n     * It is important to specify the `infiniteScrollContainer` option manually if you want the scrolling element to be\n     * something else than the default `window` element. Otherwise, you might find yourself in a strange state where the\n     * framework rapidly triggers multiple successive query.\n     */\n    enableInfiniteScroll: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The number of additional results to fetch when the user scrolls down to the bottom of the\n     * [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer}.\n     *\n     * @examples 5\n     */\n    infiniteScrollPageSize: ComponentOptions.buildNumberOption({\n      defaultValue: 10,\n      min: 1,\n      depend: 'enableInfiniteScroll'\n    }),\n\n    /**\n     * The element that triggers fetching additional results when the end user scrolls down to its bottom.\n     *\n     * You can change the container by specifying its selector (e.g.,\n     * `data-infinite-scroll-container-selector='#someCssSelector'`).\n     *\n     * By default, the framework uses the first vertically scrollable parent element it finds, starting from the\n     * `ResultList` element itself. A vertically scrollable element is an element whose CSS `overflow-y` attribute is\n     * `scroll`.\n     *\n     * This implies that if the framework can find no scrollable parent, it uses the `window` itself as a scrollable\n     * container.\n     *\n     * This heuristic is not perfect, for technical reasons. There are always some corner case CSS combination which the\n     * framework will not be able to correctly detect as 'scrollable'.\n     *\n     * It is highly recommended that you manually set this option if you wish something else than the `window` to be the\n     * scrollable element.\n     */\n    infiniteScrollContainer: ComponentOptions.buildChildHtmlElementOption({\n      depend: 'enableInfiniteScroll',\n      defaultFunction: element => ComponentOptions.findParentScrolling(element)\n    }),\n\n    /**\n     * Whether to display the [`waitingAnimation`]{@link ResultList.options.waitAnimation} while fetching additional\n     * results.\n     */\n    enableInfiniteScrollWaitingAnimation: ComponentOptions.buildBooleanOption({\n      depend: 'enableInfiniteScroll',\n      defaultValue: true\n    }),\n    mobileScrollContainer: ComponentOptions.buildSelectorOption({\n      defaultFunction: () => <HTMLElement>document.querySelector('.coveo-results-column')\n    }),\n\n    /**\n     * Whether the `ResultList` should scan its result templates to discover which fields it must request to\n     * be able to render all results.\n     *\n     * Setting this option to `true` ensures that the Coveo Search API does not return fields that are unnecessary for\n     * the UI to function.\n     * \n     * If you set this option to `true`, the fields referenced in your result folding templates won't be automatically resolved.\n     * In such a case, you must manually specify those fields using the [`fieldsToInclude`]{@link ResultList.options.fieldsToInclude} option.\n     *\n     * **Notes:**\n     *\n     * - Many interfaces created with the JavaScript Search Interface Editor explicitly set this option to `true`.   \n     * - You cannot set this option to `true` in the Coveo for Sitecore integration.\n     */\n    autoSelectFieldsToInclude: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * A list of fields to include in the query results.\n     *\n     * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n     * `true`, the Coveo Search API returns the fields you specify for this option (if those fields are available) in\n     * addition to the fields which the `ResultList` automatically requests. Note that the `autoSelectFieldsToInclude`\n     * option doesn't automatically request fields for folding templates; in such a case, you must manually specify \n     * fields using this option to avoid empty results.\n     *\n     * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n     * `false`, the Coveo Search API only returns the fields you specify for this option (if those fields are\n     * available).\n     * \n     * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n     * `false` and leave this option undefined, the Coveo Search API returns all available fields.\n     */\n    fieldsToInclude: ComponentOptions.buildFieldsOption({ includeInResults: true }),\n\n    /**\n     * Specifies the layout to use when displaying results in this `ResultList` (see\n     * [Result Layouts](https://docs.coveo.com/en/360/)). Specifying a value for this option automatically\n     * populates a [`ResultLayout`]{@link ResultLayout} component with a switcher for the layout.\n     *\n     * For example, if there are two `ResultList` components in the page, one with its `layout` set to `list` and the\n     * other with the same option set to `card`, then the `ResultLayout` component will render two buttons respectively\n     * entitled **List** and **Card**.\n     *\n     * See the [`ValidLayout`]{@link ValidLayout} type for the list of possible values.\n     *\n     * @examples card\n     */\n    layout: ComponentOptions.buildStringOption<ValidLayout>({\n      defaultValue: 'list',\n      required: true\n    }),\n\n    /**\n     * Whether to scroll back to the top of the page when the end-user:\n     *  - interacts with a facet when [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer} is set to `true`\n     *  - interacts with the [`Pager`]{@link Pager} component when [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer} is set to `false`\n     *\n     * **Note:** Setting this option to `false` has no effect on dynamic facets. To disable this behavior on a `DynamicFacet` component, you must set its own [`enableScrollToTop`]{@link DynamicFacet.options.enableScrollToTop} option to `false`.\n     *\n     * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/)\n     */\n    enableScrollToTop: ComponentOptions.buildBooleanOption({\n      defaultValue: true\n    })\n  };\n\n  public static resultCurrentlyBeingRendered: IQueryResult = null;\n  public currentlyDisplayedResults: IQueryResult[] = [];\n  private fetchingMoreResults: Promise<IQueryResults>;\n  private reachedTheEndOfResults = false;\n  private disableLayoutChange = false;\n  private renderer: ResultListRenderer;\n  private resultContainer: ResultContainer;\n\n  // This variable serves to block some setup where the framework fails to correctly identify the \"real\" scrolling container.\n  // Since it's not technically feasible to correctly identify the scrolling container in every possible scenario without some very complex logic, we instead try to add some kind of mechanism to\n  // block runaway requests where UI will keep asking more results in the index, eventually bringing the browser to it's knee.\n  // Those successive request are needed in \"displayMoreResults\" to ensure we fill the scrolling container correctly.\n  // Since the container is not identified correctly, it is never \"full\", so we keep asking for more.\n  // It is reset every time the user actually scroll the container manually.\n  private successiveScrollCount = 0;\n  private static MAX_AMOUNT_OF_SUCESSIVE_REQUESTS = 5;\n\n  /**\n   * Creates a new `ResultList` component. Binds various event related to queries (e.g., on querySuccess ->\n   * renderResults). Binds scroll event if the [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll}\n   * option is `true`.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `ResultList` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param elementClassId The class that this component should instantiate. Components that extend the base ResultList\n   * use this. Default value is `CoveoResultList`.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IResultListOptions,\n    public bindings?: IComponentBindings,\n    elementClassId: string = ResultList.ID\n  ) {\n    super(element, elementClassId, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ResultList, options);\n\n    Assert.exists(element);\n    Assert.exists(this.options);\n    Assert.exists(this.options.resultTemplate);\n    Assert.exists(this.options.infiniteScrollContainer);\n\n    this.showOrHideElementsDependingOnState(false, false);\n\n    this.addListeners();\n\n    this.resultContainer = this.initResultContainer();\n    Assert.exists(this.options.resultsContainer);\n\n    this.initWaitAnimationContainer();\n    Assert.exists(this.options.waitAnimationContainer);\n\n    this.setupTemplatesVersusLayouts();\n    $$(this.root).on(ResultLayoutEvents.populateResultLayout, (e, args: IResultLayoutPopulateArgs) =>\n      args.layouts.push(this.options.layout)\n    );\n    this.setupRenderer();\n    this.makeElementFocusable();\n    this.ensureHasId();\n  }\n\n  private addListeners() {\n    this.bind.onRootElement<INewQueryEventArgs>(QueryEvents.newQuery, (args: INewQueryEventArgs) => this.handleNewQuery());\n    this.bind.onRootElement<IBuildingQueryEventArgs>(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) =>\n      this.handleBuildingQuery(args)\n    );\n    this.bind.onRootElement<IQuerySuccessEventArgs>(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) =>\n      this.handleQuerySuccess(args)\n    );\n    this.bind.onRootElement<IDuringQueryEventArgs>(QueryEvents.duringQuery, (args: IDuringQueryEventArgs) => this.handleDuringQuery());\n    this.bind.onRootElement<IQueryErrorEventArgs>(QueryEvents.queryError, (args: IQueryErrorEventArgs) => this.handleQueryError());\n    $$(this.root).on(ResultListEvents.changeLayout, (e: Event, args: IChangeLayoutEventArgs) => this.handleChangeLayout(args));\n\n    if (this.options.enableInfiniteScroll) {\n      this.addInfiniteScrollListeners();\n    } else {\n      this.addPagerListeners();\n    }\n  }\n\n  private addInfiniteScrollListeners() {\n    this.bind.on(<HTMLElement>this.options.infiniteScrollContainer, 'scroll', () => {\n      this.successiveScrollCount = 0;\n      this.handleScrollOfResultList();\n    });\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => {\n      setTimeout(() => {\n        this.scrollToTopIfEnabled();\n      }, 0);\n    });\n  }\n\n  private addPagerListeners() {\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.FIRST, () => {\n      this.bind.oneRootElement(QueryEvents.deferredQuerySuccess, () => {\n        setTimeout(() => {\n          this.scrollToTopIfEnabled();\n        }, 0);\n      });\n    });\n  }\n\n  /**\n   * Get the fields needed to be automatically included in the query for this result list.\n   * @returns {string[]}\n   */\n  public getAutoSelectedFieldsToInclude(): string[] {\n    return chain(this.options.resultTemplate.getFields()).concat(this.getMinimalFieldsToInclude()).compact().unique().value();\n  }\n\n  private setupTemplatesVersusLayouts() {\n    const layoutClassToAdd = `coveo-${this.options.layout}-layout-container`;\n    this.resultContainer.addClass(layoutClassToAdd);\n\n    if (this.options.layout === 'table') {\n      this.options.resultTemplate = new TableTemplate((<TemplateList>this.options.resultTemplate).templates || []);\n    }\n\n    // A TemplateList is the scenario where the result template are directly embedded inside the ResultList\n    // This is the typical scenario when a page gets created by the interface editor, for example.\n    // In that case, we try to stick closely that what is actually configured inside the page, and do no \"special magic\".\n    // Stick to the \"hardcoded\" configuration present in the page.\n    // We only add the correct layout options if it has not been set manually.\n    if (this.options.resultTemplate instanceof TemplateList) {\n      each((<TemplateList>this.options.resultTemplate).templates, (tmpl: Template) => {\n        if (!tmpl.layout) {\n          tmpl.layout = <ValidLayout>this.options.layout;\n        }\n      });\n    } else if (this.options.resultTemplate instanceof DefaultResultTemplate && this.options.layout == 'list') {\n      ResponsiveDefaultResultTemplate.init(this.root, this, {});\n    }\n  }\n\n  /**\n   * Empties the current result list content and appends the given array of HTMLElement.\n   *\n   * Can append to existing elements in the result list, or replace them.\n   *\n   * Triggers the `newResultsDisplayed` and `newResultDisplayed` events.\n   * @param resultsElement\n   * @param append\n   */\n  public renderResults(resultElements: HTMLElement[], append = false): Promise<void> {\n    if (!append) {\n      this.resultContainer.empty();\n    }\n\n    return this.renderer\n      .renderResults(resultElements, append, this.triggerNewResultDisplayed.bind(this))\n      .then(() => this.triggerNewResultsDisplayed());\n  }\n\n  /**\n   * Builds and returns an array of HTMLElement with the given result set.\n   * @param results the result set to build an array of HTMLElement from.\n   */\n  public buildResults(results: IQueryResults): Promise<HTMLElement[]> {\n    const layout = <RendererValidLayout>this.options.layout;\n    return this.templateToHtml.buildResults(results, layout, this.currentlyDisplayedResults);\n  }\n\n  /**\n   * Builds and returns an HTMLElement for the given result.\n   * @param result the result to build an HTMLElement from.\n   * @returns {HTMLElement}\n   */\n  public buildResult(result: IQueryResult): Promise<HTMLElement> {\n    const layout = <RendererValidLayout>this.options.layout;\n    return this.templateToHtml.buildResult(result, layout, this.currentlyDisplayedResults);\n  }\n\n  /**\n   * Executes a query to fetch new results. After the query returns, renders the new results.\n   *\n   * Asserts that there are more results to display by verifying whether the last query has returned as many results as\n   * requested.\n   *\n   * Asserts that the `ResultList` is not currently fetching results.\n   * @param count The number of results to fetch and display.\n   */\n  public displayMoreResults(count: number) {\n    Assert.isLargerOrEqualsThan(1, count);\n\n    if (this.isCurrentlyFetchingMoreResults()) {\n      this.logger.warn(\"Ignoring request to display more results since we're already doing so\");\n      return;\n    }\n    if (!this.hasPotentiallyMoreResultsToDisplay()) {\n      this.logger.warn(\"Ignoring request to display more results since we know there aren't more to display\");\n      return;\n    }\n\n    if (this.options.enableInfiniteScrollWaitingAnimation) {\n      this.showWaitingAnimationForInfiniteScrolling();\n    }\n\n    return this.fetchAndRenderMoreResults(count);\n  }\n\n  public get templateToHtml() {\n    const templateToHtmlArgs: ITemplateToHtml = {\n      resultTemplate: this.options.resultTemplate,\n      searchInterface: this.searchInterface,\n      queryStateModel: this.queryStateModel\n    };\n    return new TemplateToHtml(templateToHtmlArgs);\n  }\n\n  /**\n   * Gets the list of currently displayed result.\n   * @returns {IQueryResult[]}\n   */\n  public getDisplayedResults(): IQueryResult[] {\n    return this.currentlyDisplayedResults;\n  }\n\n  /**\n   * Gets the list of currently displayed result HTMLElement.\n   * @returns {HTMLElement[]}\n   */\n  public getDisplayedResultsElements(): HTMLElement[] {\n    return this.resultContainer.getResultElements();\n  }\n\n  public enable(): void {\n    this.disableLayoutChange = false;\n    if (this.resultLayoutSelectors.length > 0) {\n      this.enableBasedOnActiveLayouts();\n    } else {\n      super.enable();\n      $$(this.element).removeClass('coveo-hidden');\n    }\n  }\n\n  public disable(): void {\n    super.disable();\n    const otherLayoutsStillActive = map(this.otherResultLists, otherResultList => otherResultList.options.layout);\n    if (!contains(otherLayoutsStillActive, this.options.layout) && !this.disableLayoutChange) {\n      each(this.resultLayoutSelectors, resultLayoutSelector => {\n        resultLayoutSelector.disableLayouts([this.options.layout] as ValidLayout[]);\n      });\n    }\n    this.disableLayoutChange = false;\n    $$(this.element).addClass('coveo-hidden');\n  }\n\n  protected autoCreateComponentsInsideResult(element: HTMLElement, result: IQueryResult): IInitResult {\n    return this.templateToHtml.autoCreateComponentsInsideResult(element, result);\n  }\n\n  protected triggerNewResultDisplayed(result: IQueryResult, resultElement: HTMLElement) {\n    const args: IDisplayedNewResultEventArgs = {\n      result: result,\n      item: resultElement\n    };\n    $$(this.element).trigger(ResultListEvents.newResultDisplayed, args);\n  }\n\n  protected triggerNewResultsDisplayed() {\n    const args: IDisplayedNewResultsEventArgs = {\n      isInfiniteScrollEnabled: this.options.enableInfiniteScroll\n    };\n    $$(this.element).trigger(ResultListEvents.newResultsDisplayed, args);\n  }\n\n  private async fetchAndRenderMoreResults(count: number): Promise<IQueryResults> {\n    this.fetchingMoreResults = this.queryController.fetchMore(count);\n\n    try {\n      const data = await this.fetchingMoreResults;\n      Assert.exists(data);\n      this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(analyticsActionCauseList.pagerScrolling, {}, this.element);\n\n      this.reachedTheEndOfResults = count > data.results.length;\n      this.renderNewResults(data);\n\n      this.resetStateAfterFetchingMoreResults();\n\n      return data;\n    } catch (e) {\n      this.resetStateAfterFetchingMoreResults();\n      return Promise.reject(e);\n    }\n  }\n\n  private async renderNewResults(data: IQueryResults) {\n    const elements = await this.buildResults(data);\n    this.renderResults(elements, true);\n    this.currentlyDisplayedResults.push(...data.results);\n    this.triggerNewResultsDisplayed();\n  }\n\n  private resetStateAfterFetchingMoreResults() {\n    this.hideWaitingAnimationForInfiniteScrolling();\n    this.fetchingMoreResults = undefined;\n    Defer.defer(() => {\n      this.successiveScrollCount++;\n      if (this.successiveScrollCount <= ResultList.MAX_AMOUNT_OF_SUCESSIVE_REQUESTS) {\n        this.handleScrollOfResultList();\n      } else {\n        this.logger.info(\n          `Result list has triggered 5 consecutive queries to try and fill up the scrolling container, but it is still unable to do so.\n          Try explicitly setting the 'data-infinite-scroll-container-selector' option on the result list. See: https://coveo.github.io/search-ui/components/resultlist.html#options.infinitescrollcontainer`\n        );\n      }\n    });\n  }\n\n  private handleDuringQuery() {\n    this.logger.trace('Emptying the result container');\n    this.cancelFetchingMoreResultsIfNeeded();\n    this.showWaitingAnimation();\n    this.showOrHideElementsDependingOnState(false, false);\n  }\n\n  private handleQueryError() {\n    this.hideWaitingAnimation();\n    this.resultContainer.empty();\n    this.currentlyDisplayedResults = [];\n    this.reachedTheEndOfResults = true;\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.results);\n    const results = data.results;\n    this.logger.trace('Received query results from new query', results);\n    this.hideWaitingAnimation();\n\n    ResultList.resultCurrentlyBeingRendered = undefined;\n    this.reachedTheEndOfResults = data.query.numberOfResults > data.results.results.length;\n\n    this.currentlyDisplayedResults = [];\n    this.buildResults(data.results).then(async (elements: HTMLElement[]) => {\n      await this.renderResults(elements);\n\n      this.showOrHideElementsDependingOnState(true, this.currentlyDisplayedResults.length != 0);\n\n      if (DeviceUtils.isMobileDevice() && this.options.mobileScrollContainer != undefined) {\n        this.options.mobileScrollContainer.scrollTop = 0;\n      }\n\n      if (this.options.enableInfiniteScroll && results.results.length == data.queryBuilder.numberOfResults) {\n        // This will check right away if we need to add more results to make the scroll container full & scrolling.\n        this.scrollToTopIfEnabled();\n        this.handleScrollOfResultList();\n      }\n    });\n  }\n\n  private handleScrollOfResultList() {\n    if (this.isCurrentlyFetchingMoreResults() || !this.options.enableInfiniteScroll) {\n      return;\n    }\n    if (this.isScrollingOfResultListAlmostAtTheBottom() && this.hasPotentiallyMoreResultsToDisplay()) {\n      this.displayMoreResults(this.options.infiniteScrollPageSize);\n    }\n  }\n\n  private scrollToTopIfEnabled() {\n    if (!this.options.enableScrollToTop) {\n      return;\n    }\n\n    ResultListUtils.scrollToTop(this.root);\n  }\n\n  private handleNewQuery() {\n    $$(this.element).removeClass('coveo-hidden');\n    ResultList.resultCurrentlyBeingRendered = undefined;\n  }\n\n  private get otherResultLists() {\n    const allResultLists = this.searchInterface.getComponents(ResultList.ID) as ResultList[];\n    return without(allResultLists, this);\n  }\n\n  private get resultLayoutSelectors() {\n    return this.searchInterface.getComponents('ResultLayoutSelector') as ResultLayoutSelectorModule.ResultLayoutSelector[];\n  }\n\n  protected handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    if (this.options.fieldsToInclude != null) {\n      // remove the @\n      args.queryBuilder.addFieldsToInclude(map(this.options.fieldsToInclude, field => field.substr(1)));\n    }\n    if (this.options.autoSelectFieldsToInclude) {\n      const otherFields = flatten(\n        map(this.otherResultLists, otherResultList => {\n          return otherResultList.getAutoSelectedFieldsToInclude();\n        })\n      );\n\n      args.queryBuilder.addRequiredFields(unique(otherFields.concat(this.getAutoSelectedFieldsToInclude())));\n      args.queryBuilder.includeRequiredFields = true;\n    }\n  }\n\n  protected handleChangeLayout(args: IChangeLayoutEventArgs) {\n    if (args.layout === this.options.layout) {\n      this.disableLayoutChange = false;\n      this.enable();\n      this.options.resultTemplate.layout = <ValidLayout>this.options.layout;\n      if (args.results) {\n        // Prevent flickering when switching to a new layout that is empty\n        // add a temporary placeholder, the same that is used on initialization\n        if (this.resultContainer.isEmpty()) {\n          new InitializationPlaceholder(this.root).withVisibleRootElement().withPlaceholderForResultList();\n        }\n        Defer.defer(async () => {\n          const elements = await this.buildResults(args.results);\n          this.renderResults(elements);\n          this.showOrHideElementsDependingOnState(true, this.currentlyDisplayedResults.length !== 0);\n        });\n      }\n    } else {\n      this.disableLayoutChange = true;\n      this.disable();\n      this.resultContainer.empty();\n    }\n  }\n\n  private isCurrentlyFetchingMoreResults(): boolean {\n    return Utils.exists(this.fetchingMoreResults);\n  }\n\n  private getMinimalFieldsToInclude() {\n    // these fields are needed for analytics click event\n    return ['author', 'language', 'urihash', 'objecttype', 'collection', 'source', 'language', 'permanentid'];\n  }\n\n  private isScrollingOfResultListAlmostAtTheBottom(): boolean {\n    // this is in a try catch because the unit test fail otherwise (Window does not exist for phantom js in the console)\n    let isWindow;\n    try {\n      isWindow = this.options.infiniteScrollContainer instanceof Window;\n    } catch (e) {\n      isWindow = false;\n    }\n    return isWindow ? this.isScrollAtBottomForWindowElement() : this.isScrollAtBottomForHtmlElement();\n  }\n\n  private isScrollAtBottomForWindowElement() {\n    const win = new Win(window);\n    const windowHeight = win.height();\n    const scrollTop = win.scrollY();\n    const bodyHeight = new Doc(document).height();\n    return bodyHeight - (windowHeight + scrollTop) < windowHeight / 2;\n  }\n\n  private isScrollAtBottomForHtmlElement() {\n    const el = <HTMLElement>this.options.infiniteScrollContainer;\n    const elementHeight = el.clientHeight;\n    const scrollHeight = el.scrollHeight;\n    const bottomPosition = el.scrollTop + elementHeight;\n    return scrollHeight - bottomPosition < elementHeight / 2;\n  }\n\n  public hasPotentiallyMoreResultsToDisplay(): boolean {\n    return this.currentlyDisplayedResults.length > 0 && !this.reachedTheEndOfResults;\n  }\n\n  private cancelFetchingMoreResultsIfNeeded() {\n    if (this.isCurrentlyFetchingMoreResults()) {\n      this.logger.trace('Cancelling fetching more results');\n      Promise.reject(this.fetchingMoreResults);\n      this.fetchingMoreResults = undefined;\n    }\n  }\n\n  private showOrHideElementsDependingOnState(hasQuery: boolean, hasResults: boolean) {\n    const showIfQuery = $$(this.element).findAll('.coveo-show-if-query');\n    const showIfNoQuery = $$(this.element).findAll('.coveo-show-if-no-query');\n    const showIfResults = $$(this.element).findAll('.coveo-show-if-results');\n    const showIfNoResults = $$(this.element).findAll('.coveo-show-if-no-results');\n\n    each(showIfQuery, (s: HTMLElement) => {\n      $$(s).toggle(hasQuery);\n    });\n    each(showIfNoQuery, (s: HTMLElement) => {\n      $$(s).toggle(!hasQuery);\n    });\n    each(showIfResults, (s: HTMLElement) => {\n      $$(s).toggle(hasQuery && hasResults);\n    });\n    each(showIfNoResults, (s: HTMLElement) => {\n      $$(s).toggle(hasQuery && !hasResults);\n    });\n  }\n\n  private get waitAnimation() {\n    return this.options.waitAnimation.toLowerCase() as WaitAnimation;\n  }\n\n  private showWaitingAnimation() {\n    switch (this.waitAnimation) {\n      case 'fade':\n        $$(this.options.waitAnimationContainer).addClass('coveo-fade-out');\n        break;\n      case 'spinner':\n        this.resultContainer.hideChildren();\n        if ($$(this.options.waitAnimationContainer).find('.coveo-wait-animation') == undefined) {\n          this.options.waitAnimationContainer.appendChild(DomUtils.getBasicLoadingAnimation());\n        }\n        break;\n    }\n  }\n\n  private hideWaitingAnimation() {\n    switch (this.waitAnimation) {\n      case 'fade':\n        $$(this.options.waitAnimationContainer).removeClass('coveo-fade-out');\n        break;\n      case 'spinner':\n        const spinner = $$(this.options.waitAnimationContainer).find('.coveo-loading-spinner');\n        if (spinner) {\n          $$(spinner).detach();\n        }\n        break;\n    }\n  }\n\n  private showWaitingAnimationForInfiniteScrolling() {\n    const spinner = DomUtils.getLoadingSpinner();\n    if (this.options.layout == 'card' && this.options.enableInfiniteScroll) {\n      const previousSpinnerContainer = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner-container');\n      each(previousSpinnerContainer, previousSpinner => $$(previousSpinner).remove());\n      const spinnerContainer = $$('div', {\n        className: 'coveo-loading-spinner-container'\n      });\n      spinnerContainer.append(spinner);\n      this.options.waitAnimationContainer.appendChild(spinnerContainer.el);\n    } else {\n      this.options.waitAnimationContainer.appendChild(DomUtils.getLoadingSpinner());\n    }\n  }\n\n  private hideWaitingAnimationForInfiniteScrolling() {\n    const spinners = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner');\n    const containers = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner-container');\n    each(spinners, spinner => $$(spinner).remove());\n    each(containers, container => $$(container).remove());\n  }\n\n  private initResultContainer(): ResultContainer {\n    if (!this.options.resultsContainer) {\n      const elemType = this.options.layout === 'table' ? 'table' : 'div';\n      this.options.resultsContainer = $$(elemType, { className: 'coveo-result-list-container' }).el;\n      this.initResultContainerAddToDom();\n    }\n    return new ResultContainer(this.options.resultsContainer, this.searchInterface);\n  }\n\n  protected initResultContainerAddToDom() {\n    this.element.appendChild(this.options.resultsContainer);\n  }\n\n  private initWaitAnimationContainer() {\n    if (!this.options.waitAnimationContainer) {\n      this.options.waitAnimationContainer = this.resultContainer.el;\n    }\n  }\n\n  private setupRenderer() {\n    const initParameters: IInitializationParameters = {\n      options: this.searchInterface.options.originalOptionsObject,\n      bindings: this.bindings\n    };\n\n    const autoCreateComponentsFn = (elem: HTMLElement) => Initialization.automaticallyCreateComponentsInside(elem, initParameters);\n\n    switch (this.options.layout) {\n      case 'card':\n        this.renderer = new ResultListCardRenderer(this.options, autoCreateComponentsFn);\n        break;\n      case 'table':\n        this.renderer = new ResultListTableRenderer(this.options, autoCreateComponentsFn);\n        break;\n      case 'list':\n      default:\n        this.renderer = new ResultListRenderer(this.options, autoCreateComponentsFn);\n        break;\n    }\n  }\n\n  private makeElementFocusable() {\n    $$(this.element).setAttribute('tabindex', '-1');\n  }\n\n  private ensureHasId() {\n    const currentId = this.element.id;\n    if (currentId === '') {\n      this.element.id = uniqueId('coveo-result-list');\n    }\n  }\n\n  private enableBasedOnActiveLayouts() {\n    // We should try to enable a result list only when the result layout selector currently allow that result list layout to be displayed.\n    each(this.resultLayoutSelectors, resultLayoutSelector => {\n      const found = find(resultLayoutSelector.activeLayouts, (activeLayout, activeLayoutKey) => activeLayoutKey == this.options.layout);\n      if (found) {\n        super.enable();\n        resultLayoutSelector.enableLayouts([this.options.layout] as ValidLayout[]);\n        $$(this.element).removeClass('coveo-hidden');\n      }\n    });\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultList);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultList.ts"],"sourceRoot":""}