"use strict";jse.libs.hooks=jse.libs.hooks||{},function(e){var t={shop:{cart:{add:"GX_SHOP_CART_ADD",change:"GX_SHOP_CART_CHANGE",checkout:"GX_SHOP_CART_CHECKOUT"},product:{listing:{hover:"GX_SHOP_PRODUCT_LISTING"}}}},r=new Map;function n(e,t){return new Promise((function(r){var n=!1;Promise.all(e).then((function(e){n=!0,r(e)})),setTimeout((function(){n||r()}),t)}))}e.keys=t,e.add=function(e,t){r.has(e)||r.set(e,new Set),r.get(e).add(t)},e.execute=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=[];if(!r.has(e)||!r.get(e).size)return Promise.resolve();var s=!0,a=!1,u=void 0;try{for(var l,c=r.get(e).values()[Symbol.iterator]();!(s=(l=c.next()).done);s=!0){var h=l.value;i.push(h(t))}}catch(e){a=!0,u=e}finally{try{!s&&c.return&&c.return()}finally{if(a)throw u}}return r.get(e).clear(),Number.isInteger(o)&&o>0?n(i,o):Promise.all(i)}}(jse.libs.hooks);